annotate dynodump/_dynodump.h @ 938:0391335b65dc

[xemacs-hg @ 2002-07-31 07:14:49 by michaels] 2002-07-17 Marcus Crestani <crestani@informatik.uni-tuebingen.de> Markus Kaltenbach <makalten@informatik.uni-tuebingen.de> Mike Sperber <mike@xemacs.org> configure flag to turn these changes on: --use-kkcc First we added a dumpable flag to lrecord_implementation. It shows, if the object is dumpable and should be processed by the dumper. * lrecord.h (struct lrecord_implementation): added dumpable flag (MAKE_LRECORD_IMPLEMENTATION): fitted the different makro definitions to the new lrecord_implementation and their calls. Then we changed mark_object, that it no longer needs a mark method for those types that have pdump descritions. * alloc.c: (mark_object): If the object has a description, the new mark algorithm is called, and the object is marked according to its description. Otherwise it uses the mark method like before. These procedures mark objects according to their descriptions. They are modeled on the corresponding pdumper procedures. (mark_with_description): (get_indirect_count): (structure_size): (mark_struct_contents): These procedures still call mark_object, this is needed while there are Lisp_Objects without descriptions left. We added pdump descriptions for many Lisp_Objects: * extents.c: extent_auxiliary_description * database.c: database_description * gui.c: gui_item_description * scrollbar.c: scrollbar_instance_description * toolbar.c: toolbar_button_description * event-stream.c: command_builder_description * mule-charset.c: charset_description * device-msw.c: devmode_description * dialog-msw.c: mswindows_dialog_id_description * eldap.c: ldap_description * postgresql.c: pgconn_description pgresult_description * tooltalk.c: tooltalk_message_description tooltalk_pattern_description * ui-gtk.c: emacs_ffi_description emacs_gtk_object_description * events.c: * events.h: * event-stream.c: * event-Xt.c: * event-gtk.c: * event-tty.c: To write a pdump description for Lisp_Event, we converted every struct in the union event to a Lisp_Object. So we created nine new Lisp_Objects: Lisp_Key_Data, Lisp_Button_Data, Lisp_Motion_Data, Lisp_Process_Data, Lisp_Timeout_Data, Lisp_Eval_Data, Lisp_Misc_User_Data, Lisp_Magic_Data, Lisp_Magic_Eval_Data. We also wrote makro selectors and mutators for the fields of the new designed Lisp_Event and added everywhere these new abstractions. We implemented XD_UNION support in (mark_with_description), so we can describe exspecially console/device specific data with XD_UNION. To describe with XD_UNION, we added a field to these objects, which holds the variant type of the object. This field is initialized in the appendant constructor. The variant is an integer, it has also to be described in an description, if XD_UNION is used. XD_UNION is used in following descriptions: * console.c: console_description (get_console_variant): returns the variant (create_console): added variant initialization * console.h (console_variant): the different console types * console-impl.h (struct console): added enum console_variant contype * device.c: device_description (Fmake_device): added variant initialization * device-impl.h (struct device): added enum console_variant devtype * objects.c: image_instance_description font_instance_description (Fmake_color_instance): added variant initialization (Fmake_font_instance): added variant initialization * objects-impl.h (struct Lisp_Color_Instance): added color_instance_type * objects-impl.h (struct Lisp_Font_Instance): added font_instance_type * process.c: process_description (make_process_internal): added variant initialization * process.h (process_variant): the different process types
author michaels
date Wed, 31 Jul 2002 07:14:49 +0000
parents 25f70ba0133c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
153
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
1 /*
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
2 * Copyright (c) 1995 by Sun Microsystems, Inc.
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
3 * All rights reserved.
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
4 *
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
5 * This source code is a product of Sun Microsystems, Inc. and is provided
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
6 * for unrestricted use provided that this legend is included on all tape
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
7 * media and as a part of the software program in whole or part. Users
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
8 * may copy or modify this source code without charge, but are not authorized
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
9 * to license or distribute it to anyone else except as part of a product or
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
10 * program developed by the user.
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
11 *
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
12 * THIS PROGRAM CONTAINS SOURCE CODE COPYRIGHTED BY SUN MICROSYSTEMS, INC.
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
13 * SUN MICROSYSTEMS, INC., MAKES NO REPRESENTATIONS ABOUT THE SUITABLITY
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
14 * OF SUCH SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
15 * EXPRESS OR IMPLIED WARRANTY OF ANY KIND. SUN MICROSYSTEMS, INC. DISCLAIMS
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
16 * ALL WARRANTIES WITH REGARD TO SUCH SOURCE CODE, INCLUDING ALL IMPLIED
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
18 * NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT,
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
19 * INCIDENTAL, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
20 * FROM USE OF SUCH SOURCE CODE, REGARDLESS OF THE THEORY OF LIABILITY.
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
21 *
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
22 * This source code is provided with no support and without any obligation on
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
23 * the part of Sun Microsystems, Inc. to assist in its use, correction,
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
24 * modification or enhancement.
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
25 *
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
26 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
27 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
28 * SOURCE CODE OR ANY PART THEREOF.
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
29 *
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
30 * Sun Microsystems, Inc.
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
31 * 2550 Garcia Avenue
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
32 * Mountain View, California 94043
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
33 */
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
34
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
35 #pragma ident "@(#) $Id: _dynodump.h,v 1.3 1997/05/29 04:22:29 steve Exp $ - SMI"
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
36
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
37 #ifndef _DYNODUMP_DOT_H
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
38 #define _DYNODUMP_DOT_H
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
39
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
40 #include <libelf.h>
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
41 #include "machdep.h"
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
42
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
43 /* General rounding macro */
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
44 #define S_ROUND(x, a) (((int)(x) + (((int)(a) ? (int)(a) : 1) - 1)) & \
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
45 ~(((int)(a) ? (int)(a) : 1) - 1))
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
46
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
47 /*
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
48 * Define a cache structure that is used to retain all elf section information.
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
49 */
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
50 typedef struct cache {
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
51 Elf_Scn *c_scn;
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
52 Shdr *c_shdr;
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
53 Elf_Data *c_data;
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
54 char *c_name;
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
55 } Cache;
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
56
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
57 /*
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
58 * Define any local prototypes.
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
59 */
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
60 extern void update_dynamic(Cache *);
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
61 extern void update_reloc(Cache *, Cache *, Cache *, Cache *, Half shnum);
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
62 extern void update_sym(Cache *, Cache *, Addr);
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
63 extern void dynodump_uninit(void);
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
64
25f70ba0133c Import from CVS: tag r20-3b3
cvs
parents:
diff changeset
65 #endif