diff options
author | Stu Grossman <grossman@cygnus> | 1994-06-09 06:30:38 +0000 |
---|---|---|
committer | Stu Grossman <grossman@cygnus> | 1994-06-09 06:30:38 +0000 |
commit | a4b4f5205874ff2b856aad63a4298f7eb205262f (patch) | |
tree | 184658dd550b80260f6a69d8da435e96c77eb966 /gdb/nlmread.c | |
parent | 5005cbca02225dc77057fc86d08c73e5675c02fe (diff) | |
download | gdb-a4b4f5205874ff2b856aad63a4298f7eb205262f.zip gdb-a4b4f5205874ff2b856aad63a4298f7eb205262f.tar.gz gdb-a4b4f5205874ff2b856aad63a4298f7eb205262f.tar.bz2 |
* nlmread.c (nlm_symtab_read): Clean up a bit.
* (nlm_symfile_read): Record bounds of main() so that backtrace
command will know where to stop.
* objfiles.c (objfile_relocate): Relocate entry point/func info
for backtrace as well.
* objfiles.h: Define values for invalid PCs for entry point info.
* symfile.c (init_entry_point_info): Initialize invalid values
with aforementioned macros.
* config/alpha/tm-alphanw.h: Turn on FRAME_CHAIN_VALID_ALTERNATE
to cause backtrace to stop when it gets back to main().
* config/i386/tm-i386nw.h: Ditto.
Diffstat (limited to 'gdb/nlmread.c')
-rw-r--r-- | gdb/nlmread.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/gdb/nlmread.c b/gdb/nlmread.c index 3895053..a5d6186 100644 --- a/gdb/nlmread.c +++ b/gdb/nlmread.c @@ -150,25 +150,18 @@ nlm_symtab_read (abfd, addr, objfile) symaddr = sym -> value + sym -> section -> vma; /* Relocate all non-absolute symbols by base address. */ if (sym -> section != &bfd_abs_section) - { - symaddr += addr; - } + symaddr += addr; /* For non-absolute symbols, use the type of the section - they are relative to, to intuit text/data. Bfd provides + they are relative to, to intuit text/data. BFD provides no way of figuring this out for absolute symbols. */ if (sym -> section -> flags & SEC_CODE) - { - ms_type = mst_text; - } + ms_type = mst_text; else if (sym -> section -> flags & SEC_DATA) - { - ms_type = mst_data; - } + ms_type = mst_data; else - { - ms_type = mst_unknown; - } + ms_type = mst_unknown; + record_minimal_symbol ((char *) sym -> name, symaddr, ms_type, objfile); } @@ -214,6 +207,7 @@ nlm_symfile_read (objfile, section_offsets, mainline) bfd *abfd = objfile -> obfd; struct cleanup *back_to; CORE_ADDR offset; + struct symbol *mainsym; init_minimal_symbol_collection (); back_to = make_cleanup (discard_minimal_symbols, 0); @@ -230,6 +224,15 @@ nlm_symfile_read (objfile, section_offsets, mainline) stabsect_build_psymtabs (objfile, section_offsets, mainline, ".stab", ".stabstr"); + mainsym = lookup_symbol ("main", NULL, VAR_NAMESPACE, NULL, NULL); + + if (mainsym + && mainsym->class == LOC_BLOCK) + { + objfile->ei.main_func_lowpc = BLOCK_START (SYMBOL_BLOCK_VALUE (mainsym)); + objfile->ei.main_func_highpc = BLOCK_END (SYMBOL_BLOCK_VALUE (mainsym)); + } + /* FIXME: We could locate and read the optional native debugging format here and add the symbols to the minimal symbol table. */ |