diff options
author | Ian Lance Taylor <ian@airs.com> | 1995-07-17 17:33:37 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1995-07-17 17:33:37 +0000 |
commit | f779e99f2ab25060486dc11ab2fcddba0cacf918 (patch) | |
tree | 2785b2ab5eeb5b438b8baeb8b8342e93a325b707 | |
parent | 5d672f28973ceaed88fb58ddf75f0a8e8149e09b (diff) | |
download | gdb-f779e99f2ab25060486dc11ab2fcddba0cacf918.zip gdb-f779e99f2ab25060486dc11ab2fcddba0cacf918.tar.gz gdb-f779e99f2ab25060486dc11ab2fcddba0cacf918.tar.bz2 |
* stabsread.h (struct stab_section_list): Define.
(coffstab_build_psymtabs): Remove staboff and stabsize parameters.
Add textaddr, textsize, and stabs parameters.
* gdb-stabs.h (struct dbx_symfile_info): Remove text_sect field.
Add text_addr and text_size fields.
(DBX_TEXT_SECT): Don't define.
(DBX_TEXT_ADDR, DBX_TEXT_SIZE): Define.
* coffread.c: Include <ctype.h>.
(struct coff_symfile_info): Remove stabsect and stabindexsect
fields. Add textaddr, textsize, and stabsects fields.
(coff_locate_sections): Record the address of the .text section,
and total the sizes of all sections with names beginning with
".text". Don't bother to record a .stab.index section (COFF
doesn't use them). Make a linked list of all sections with names
beginning with ".stab".
(coff_symfile_read): Adjust call to coffstab_build_psymtabs for
new parameters.
* dbxread.c (dbx_symfile_read): Use DBX_TEXT_ADDR and
DBX_TEXT_SIZE, rather than getting both from DBX_TEXT_SECT.
(dbx_symfile_init): Set DBX_TEXT_ADDR and DBX_TEXT_SIZE, not
DBX_TEXT_SECT.
(elfstab_build_psymtabs): Likewise.
(stabsect_build_psymtabs): Likewise.
(symbuf_sections, symbuf_left, symbuf_read): New static variables.
(fill_symbuf): If symbuf_sections is not NULL, read symbols from
multiple sections.
(coffstab_build_psymtabs): Remove staboffset and stabsize
parameters. Add textaddr, textsize, and stabsects parameters.
Set DBX_TEXT_ADDR and DBX_TEXT_SIZE, not DBX_TEXT_SECT. Handle
multiple stabs sections.
* os9kread.c (os9k_symfile_read): Use DBX_TEXT_ADDR and
DBX_TEXT_SIZE, rather than getting both from DBX_TEXT_SECT.
(os9k_symfile_init): Set DBX_TEXT_ADDR and DBX_TEXT_SIZE, not
DBX_TEXT_SECT.
PR 7241.
-rw-r--r-- | gdb/ChangeLog | 35 | ||||
-rw-r--r-- | gdb/gdb-stabs.h | 6 | ||||
-rw-r--r-- | gdb/os9kread.c | 12 | ||||
-rw-r--r-- | gdb/stabsread.h | 17 |
4 files changed, 61 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 58998fa..281d44e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,40 @@ Mon Jul 17 13:08:00 1995 Ian Lance Taylor <ian@cygnus.com> + * stabsread.h (struct stab_section_list): Define. + (coffstab_build_psymtabs): Remove staboff and stabsize parameters. + Add textaddr, textsize, and stabs parameters. + * gdb-stabs.h (struct dbx_symfile_info): Remove text_sect field. + Add text_addr and text_size fields. + (DBX_TEXT_SECT): Don't define. + (DBX_TEXT_ADDR, DBX_TEXT_SIZE): Define. + * coffread.c: Include <ctype.h>. + (struct coff_symfile_info): Remove stabsect and stabindexsect + fields. Add textaddr, textsize, and stabsects fields. + (coff_locate_sections): Record the address of the .text section, + and total the sizes of all sections with names beginning with + ".text". Don't bother to record a .stab.index section (COFF + doesn't use them). Make a linked list of all sections with names + beginning with ".stab". + (coff_symfile_read): Adjust call to coffstab_build_psymtabs for + new parameters. + * dbxread.c (dbx_symfile_read): Use DBX_TEXT_ADDR and + DBX_TEXT_SIZE, rather than getting both from DBX_TEXT_SECT. + (dbx_symfile_init): Set DBX_TEXT_ADDR and DBX_TEXT_SIZE, not + DBX_TEXT_SECT. + (elfstab_build_psymtabs): Likewise. + (stabsect_build_psymtabs): Likewise. + (symbuf_sections, symbuf_left, symbuf_read): New static variables. + (fill_symbuf): If symbuf_sections is not NULL, read symbols from + multiple sections. + (coffstab_build_psymtabs): Remove staboffset and stabsize + parameters. Add textaddr, textsize, and stabsects parameters. + Set DBX_TEXT_ADDR and DBX_TEXT_SIZE, not DBX_TEXT_SECT. Handle + multiple stabs sections. + * os9kread.c (os9k_symfile_read): Use DBX_TEXT_ADDR and + DBX_TEXT_SIZE, rather than getting both from DBX_TEXT_SECT. + (os9k_symfile_init): Set DBX_TEXT_ADDR and DBX_TEXT_SIZE, not + DBX_TEXT_SECT. + * remote-vx.c (vx_ops, vx_run_ops): Initialize new to_thread_alive field. diff --git a/gdb/gdb-stabs.h b/gdb/gdb-stabs.h index c1e0253..21611cb 100644 --- a/gdb/gdb-stabs.h +++ b/gdb/gdb-stabs.h @@ -55,7 +55,8 @@ struct stab_section_info { field of the objfile struct. */ struct dbx_symfile_info { - asection *text_sect; /* Text section accessor */ + CORE_ADDR text_addr; /* Start of text section */ + int text_size; /* Size of text section */ int symcount; /* How many symbols are there in the file */ char *stringtab; /* The actual string table */ int stringtab_size; /* Its size */ @@ -66,7 +67,8 @@ struct dbx_symfile_info { }; #define DBX_SYMFILE_INFO(o) ((struct dbx_symfile_info *)((o)->sym_stab_info)) -#define DBX_TEXT_SECT(o) (DBX_SYMFILE_INFO(o)->text_sect) +#define DBX_TEXT_ADDR(o) (DBX_SYMFILE_INFO(o)->text_addr) +#define DBX_TEXT_SIZE(o) (DBX_SYMFILE_INFO(o)->text_size) #define DBX_SYMCOUNT(o) (DBX_SYMFILE_INFO(o)->symcount) #define DBX_STRINGTAB(o) (DBX_SYMFILE_INFO(o)->stringtab) #define DBX_STRINGTAB_SIZE(o) (DBX_SYMFILE_INFO(o)->stringtab_size) diff --git a/gdb/os9kread.c b/gdb/os9kread.c index 155ea93..6a91cd6 100644 --- a/gdb/os9kread.c +++ b/gdb/os9kread.c @@ -348,8 +348,8 @@ os9k_symfile_read (objfile, section_offsets, mainline) /* Now that the symbol table data of the executable file are all in core, process them and define symbols accordingly. */ read_os9k_psymtab (section_offsets, objfile, - bfd_section_vma (sym_bfd, DBX_TEXT_SECT (objfile)), - bfd_section_size (sym_bfd, DBX_TEXT_SECT (objfile))); + DBX_TEXT_ADDR (objfile), + DBX_TEXT_SIZE (objfile)); do_cleanups (back_to); } @@ -389,7 +389,7 @@ os9k_symfile_init (objfile) char dbgname[512], stbname[512]; FILE *symfile = 0; FILE *minfile = 0; - + asection *text_sect; strcpy(dbgname, name); strcat(dbgname, ".dbg"); @@ -411,9 +411,11 @@ os9k_symfile_init (objfile) xmmalloc (objfile -> md, sizeof (struct dbx_symfile_info)); DBX_SYMFILE_INFO (objfile)->stab_section_info = NULL; - DBX_TEXT_SECT (objfile) = bfd_get_section_by_name (sym_bfd, ".text"); - if (!DBX_TEXT_SECT (objfile)) + text_sect = bfd_get_section_by_name (sym_bfd, ".text"); + if (!text_sect) error ("Can't find .text section in file"); + DBX_TEXT_ADDR (objfile) = bfd_section_vma (sym_bfd, text_sect); + DBX_TEXT_SIZE (objfile) = bfd_section_size (sym_bfd, text_sect); DBX_SYMBOL_SIZE (objfile) = 0; /* variable size symbol */ DBX_SYMCOUNT (objfile) = 0; /* used to be bfd_get_symcount(sym_bfd) */ diff --git a/gdb/stabsread.h b/gdb/stabsread.h index a5a0de7..147950b 100644 --- a/gdb/stabsread.h +++ b/gdb/stabsread.h @@ -166,7 +166,19 @@ finish_global_stabs PARAMS ((struct objfile *objfile)); EXTERN int os9k_stabs; -/* Functions exported by dbxread.c. These are not in stabsread.h because +/* COFF files can have multiple .stab sections, if they are linked + using --split-by-reloc. This linked list is used to pass the + information into the functions in dbxread.c. */ +struct stab_section_list +{ + /* Next in list. */ + struct stab_section_list *next; + + /* Stab section. */ + asection *section; +}; + +/* Functions exported by dbxread.c. These are not in stabsread.c because they are only used by some stabs readers. */ extern struct partial_symtab * @@ -194,7 +206,8 @@ extern void coffstab_build_psymtabs PARAMS ((struct objfile *objfile, struct section_offsets *section_offsets, int mainline, - file_ptr staboff, unsigned int stabsize, + CORE_ADDR textaddr, unsigned int textsize, + struct stab_section_list *stabs, file_ptr stabstroffset, unsigned int stabstrsize)); |