diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2007-06-05 22:46:30 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2007-06-05 22:46:30 +0000 |
commit | 5e787d22c9685b84fd1d7b22256d54a1d9d03aeb (patch) | |
tree | c0da9d34a47f536d58287407e7c4dab992b88764 /gdb/somread.c | |
parent | 79d4951621eec323a92ad518f474f7ccee143aa3 (diff) | |
download | gdb-5e787d22c9685b84fd1d7b22256d54a1d9d03aeb.zip gdb-5e787d22c9685b84fd1d7b22256d54a1d9d03aeb.tar.gz gdb-5e787d22c9685b84fd1d7b22256d54a1d9d03aeb.tar.bz2 |
* objfiles.h (ImportEntry, ExportEntry): Remove types.
(struct objfile): Remove import_list, import_list_size,
export_list, export_list_size members.
(is_in_import_list): Remove prototype.
* objfiles.c (is_in_import_list): Remove.
* somread.c (init_import_symbols, init_export_symbols): Remove.
(som_symfile_read): Do not call init_import_symbols. Do not
set objfile->export_list and objfile->export_list_size.
Diffstat (limited to 'gdb/somread.c')
-rw-r--r-- | gdb/somread.c | 266 |
1 files changed, 0 insertions, 266 deletions
diff --git a/gdb/somread.c b/gdb/somread.c index 42cc7a6..7f31303 100644 --- a/gdb/somread.c +++ b/gdb/somread.c @@ -37,9 +37,6 @@ #include "solib-som.h" -/* Prototypes for local functions. */ -static int init_import_symbols (struct objfile *objfile); - /* LOCAL FUNCTION @@ -320,18 +317,6 @@ som_symfile_read (struct objfile *objfile, int mainline) init_minimal_symbol_collection (); back_to = make_cleanup_discard_minimal_symbols (); - /* Read in the import list and the export list. Currently - the export list isn't used; the import list is used in - hp-symtab-read.c to handle static vars declared in other - shared libraries. */ - init_import_symbols (objfile); -#if 0 /* Export symbols not used today 1997-08-05 */ - init_export_symbols (objfile); -#else - objfile->export_list = NULL; - objfile->export_list_size = 0; -#endif - /* Process the normal SOM symbol table first. This reads in the DNTT and string table, but doesn't actually scan the DNTT. It does scan the linker symbol @@ -433,257 +418,6 @@ som_symfile_offsets (struct objfile *objfile, struct section_addr_info *addrs) (objfile->section_offsets)->offsets[i] = text_addr; } } - -/* Read in and initialize the SOM import list which is present - for all executables and shared libraries. The import list - consists of the symbols that are referenced in OBJFILE but - not defined there. (Variables that are imported are dealt - with as "loc_indirect" vars.) - Return value = number of import symbols read in. */ -static int -init_import_symbols (struct objfile *objfile) -{ - unsigned int import_list; - unsigned int import_list_size; - unsigned int string_table; - unsigned int string_table_size; - char *string_buffer; - int i; - int j; - int k; - asection *text_section; /* section handle */ - unsigned int dl_header[12]; /* SOM executable header */ - - /* A struct for an entry in the SOM import list */ - typedef struct - { - int name; /* index into the string table */ - short dont_care1; /* we don't use this */ - unsigned char type; /* 0 = NULL, 2 = Data, 3 = Code, 7 = Storage, 13 = Plabel */ - unsigned int reserved2:8; /* not used */ - } - SomImportEntry; - - /* We read 100 entries in at a time from the disk file. */ -#define SOM_READ_IMPORTS_NUM 100 -#define SOM_READ_IMPORTS_CHUNK_SIZE (sizeof (SomImportEntry) * SOM_READ_IMPORTS_NUM) - SomImportEntry buffer[SOM_READ_IMPORTS_NUM]; - - /* Initialize in case we error out */ - objfile->import_list = NULL; - objfile->import_list_size = 0; - - /* It doesn't work, for some reason, to read in space $TEXT$; - the subspace $SHLIB_INFO$ has to be used. Some BFD quirk? pai/1997-08-05 */ - text_section = bfd_get_section_by_name (objfile->obfd, "$SHLIB_INFO$"); - if (!text_section) - return 0; - /* Get the SOM executable header */ - bfd_get_section_contents (objfile->obfd, text_section, dl_header, 0, 12 * sizeof (int)); - - /* Check header version number for 10.x HP-UX */ - /* Currently we deal only with 10.x systems; on 9.x the version # is 89060912. - FIXME: Change for future HP-UX releases and mods to the SOM executable format */ - if (dl_header[0] != 93092112) - return 0; - - import_list = dl_header[4]; - import_list_size = dl_header[5]; - if (!import_list_size) - return 0; - string_table = dl_header[10]; - string_table_size = dl_header[11]; - if (!string_table_size) - return 0; - - /* Suck in SOM string table */ - string_buffer = (char *) xmalloc (string_table_size); - bfd_get_section_contents (objfile->obfd, text_section, string_buffer, - string_table, string_table_size); - - /* Allocate import list in the psymbol obstack; this has nothing - to do with psymbols, just a matter of convenience. We want the - import list to be freed when the objfile is deallocated */ - objfile->import_list - = (ImportEntry *) obstack_alloc (&objfile->objfile_obstack, - import_list_size * sizeof (ImportEntry)); - - /* Read in the import entries, a bunch at a time */ - for (j = 0, k = 0; - j < (import_list_size / SOM_READ_IMPORTS_NUM); - j++) - { - bfd_get_section_contents (objfile->obfd, text_section, buffer, - import_list + j * SOM_READ_IMPORTS_CHUNK_SIZE, - SOM_READ_IMPORTS_CHUNK_SIZE); - for (i = 0; i < SOM_READ_IMPORTS_NUM; i++, k++) - { - if (buffer[i].type != (unsigned char) 0) - { - objfile->import_list[k] - = (char *) obstack_alloc (&objfile->objfile_obstack, strlen (string_buffer + buffer[i].name) + 1); - strcpy (objfile->import_list[k], string_buffer + buffer[i].name); - /* Some day we might want to record the type and other information too */ - } - else /* null type */ - objfile->import_list[k] = NULL; - - } - } - - /* Get the leftovers */ - if (k < import_list_size) - bfd_get_section_contents (objfile->obfd, text_section, buffer, - import_list + k * sizeof (SomImportEntry), - (import_list_size - k) * sizeof (SomImportEntry)); - for (i = 0; k < import_list_size; i++, k++) - { - if (buffer[i].type != (unsigned char) 0) - { - objfile->import_list[k] - = (char *) obstack_alloc (&objfile->objfile_obstack, strlen (string_buffer + buffer[i].name) + 1); - strcpy (objfile->import_list[k], string_buffer + buffer[i].name); - /* Some day we might want to record the type and other information too */ - } - else - objfile->import_list[k] = NULL; - } - - objfile->import_list_size = import_list_size; - xfree (string_buffer); - return import_list_size; -} - -/* Read in and initialize the SOM export list which is present - for all executables and shared libraries. The import list - consists of the symbols that are referenced in OBJFILE but - not defined there. (Variables that are imported are dealt - with as "loc_indirect" vars.) - Return value = number of import symbols read in. */ -int -init_export_symbols (struct objfile *objfile) -{ - unsigned int export_list; - unsigned int export_list_size; - unsigned int string_table; - unsigned int string_table_size; - char *string_buffer; - int i; - int j; - int k; - asection *text_section; /* section handle */ - unsigned int dl_header[12]; /* SOM executable header */ - - /* A struct for an entry in the SOM export list */ - typedef struct - { - int next; /* for hash table use -- we don't use this */ - int name; /* index into string table */ - int value; /* offset or plabel */ - int dont_care1; /* not used */ - unsigned char type; /* 0 = NULL, 2 = Data, 3 = Code, 7 = Storage, 13 = Plabel */ - char dont_care2; /* not used */ - short dont_care3; /* not used */ - } - SomExportEntry; - - /* We read 100 entries in at a time from the disk file. */ -#define SOM_READ_EXPORTS_NUM 100 -#define SOM_READ_EXPORTS_CHUNK_SIZE (sizeof (SomExportEntry) * SOM_READ_EXPORTS_NUM) - SomExportEntry buffer[SOM_READ_EXPORTS_NUM]; - - /* Initialize in case we error out */ - objfile->export_list = NULL; - objfile->export_list_size = 0; - - /* It doesn't work, for some reason, to read in space $TEXT$; - the subspace $SHLIB_INFO$ has to be used. Some BFD quirk? pai/1997-08-05 */ - text_section = bfd_get_section_by_name (objfile->obfd, "$SHLIB_INFO$"); - if (!text_section) - return 0; - /* Get the SOM executable header */ - bfd_get_section_contents (objfile->obfd, text_section, dl_header, 0, 12 * sizeof (int)); - - /* Check header version number for 10.x HP-UX */ - /* Currently we deal only with 10.x systems; on 9.x the version # is 89060912. - FIXME: Change for future HP-UX releases and mods to the SOM executable format */ - if (dl_header[0] != 93092112) - return 0; - - export_list = dl_header[8]; - export_list_size = dl_header[9]; - if (!export_list_size) - return 0; - string_table = dl_header[10]; - string_table_size = dl_header[11]; - if (!string_table_size) - return 0; - - /* Suck in SOM string table */ - string_buffer = (char *) xmalloc (string_table_size); - bfd_get_section_contents (objfile->obfd, text_section, string_buffer, - string_table, string_table_size); - - /* Allocate export list in the psymbol obstack; this has nothing - to do with psymbols, just a matter of convenience. We want the - export list to be freed when the objfile is deallocated */ - objfile->export_list - = (ExportEntry *) obstack_alloc (&objfile->objfile_obstack, - export_list_size * sizeof (ExportEntry)); - - /* Read in the export entries, a bunch at a time */ - for (j = 0, k = 0; - j < (export_list_size / SOM_READ_EXPORTS_NUM); - j++) - { - bfd_get_section_contents (objfile->obfd, text_section, buffer, - export_list + j * SOM_READ_EXPORTS_CHUNK_SIZE, - SOM_READ_EXPORTS_CHUNK_SIZE); - for (i = 0; i < SOM_READ_EXPORTS_NUM; i++, k++) - { - if (buffer[i].type != (unsigned char) 0) - { - objfile->export_list[k].name - = (char *) obstack_alloc (&objfile->objfile_obstack, strlen (string_buffer + buffer[i].name) + 1); - strcpy (objfile->export_list[k].name, string_buffer + buffer[i].name); - objfile->export_list[k].address = buffer[i].value; - /* Some day we might want to record the type and other information too */ - } - else - /* null type */ - { - objfile->export_list[k].name = NULL; - objfile->export_list[k].address = 0; - } - } - } - - /* Get the leftovers */ - if (k < export_list_size) - bfd_get_section_contents (objfile->obfd, text_section, buffer, - export_list + k * sizeof (SomExportEntry), - (export_list_size - k) * sizeof (SomExportEntry)); - for (i = 0; k < export_list_size; i++, k++) - { - if (buffer[i].type != (unsigned char) 0) - { - objfile->export_list[k].name - = (char *) obstack_alloc (&objfile->objfile_obstack, strlen (string_buffer + buffer[i].name) + 1); - strcpy (objfile->export_list[k].name, string_buffer + buffer[i].name); - /* Some day we might want to record the type and other information too */ - objfile->export_list[k].address = buffer[i].value; - } - else - { - objfile->export_list[k].name = NULL; - objfile->export_list[k].address = 0; - } - } - - objfile->export_list_size = export_list_size; - xfree (string_buffer); - return export_list_size; -} |