diff options
author | Andrew Cagney <cagney@redhat.com> | 2004-09-01 14:13:33 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2004-09-01 14:13:33 +0000 |
commit | c8cd9f6c4cdd895e65e4feb4b2402a2dfdbc3822 (patch) | |
tree | 5e76c9e65865d68734971b40825f26f140c255b3 /gdb/blockframe.c | |
parent | 0df3d27f988df8bdb52cd320fd20ae30f55255bd (diff) | |
download | gdb-c8cd9f6c4cdd895e65e4feb4b2402a2dfdbc3822.zip gdb-c8cd9f6c4cdd895e65e4feb4b2402a2dfdbc3822.tar.gz gdb-c8cd9f6c4cdd895e65e4feb4b2402a2dfdbc3822.tar.bz2 |
2004-08-31 Andrew Cagney <cagney@gnu.org>
* frame.c: Include "objfiles.h".
(inside_main_func): New function.
(get_prev_frame): Use new inside_main_func.
* Makefile.in (frame.o): Update dependencies.
* defs.h (inside_main_func): Delete declaration.
* blockframe.c (inside_main_func): Delete function.
Diffstat (limited to 'gdb/blockframe.c')
-rw-r--r-- | gdb/blockframe.c | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/gdb/blockframe.c b/gdb/blockframe.c index 7d9618f..d752c8d 100644 --- a/gdb/blockframe.c +++ b/gdb/blockframe.c @@ -43,90 +43,6 @@ void _initialize_blockframe (void); -/* Test whether PC is in the range of addresses that corresponds to - the "main" function. */ - -int -inside_main_func (CORE_ADDR pc) -{ - struct minimal_symbol *msymbol; - - if (symfile_objfile == 0) - return 0; - - msymbol = lookup_minimal_symbol (main_name (), NULL, symfile_objfile); - - /* If the address range hasn't been set up at symbol reading time, - set it up now. */ - - if (msymbol != NULL - && symfile_objfile->ei.main_func_lowpc == INVALID_ENTRY_LOWPC - && symfile_objfile->ei.main_func_highpc == INVALID_ENTRY_HIGHPC) - { - /* brobecker/2003-10-10: We used to rely on lookup_symbol() to - search the symbol associated to the "main" function. - Unfortunately, lookup_symbol() uses the current-language - la_lookup_symbol_nonlocal function to do the global symbol - search. Depending on the language, this can introduce - certain side-effects, because certain languages, for instance - Ada, may find more than one match. Therefore we prefer to - search the "main" function symbol using its address rather - than its name. */ - struct symbol *mainsym = - find_pc_function (SYMBOL_VALUE_ADDRESS (msymbol)); - - if (mainsym && SYMBOL_CLASS (mainsym) == LOC_BLOCK) - { - symfile_objfile->ei.main_func_lowpc = - BLOCK_START (SYMBOL_BLOCK_VALUE (mainsym)); - symfile_objfile->ei.main_func_highpc = - BLOCK_END (SYMBOL_BLOCK_VALUE (mainsym)); - } - } - - /* Not in the normal symbol tables, see if "main" is in the partial - symbol table. If it's not, then give up. */ - if (msymbol != NULL && MSYMBOL_TYPE (msymbol) == mst_text) - { - CORE_ADDR maddr = SYMBOL_VALUE_ADDRESS (msymbol); - asection *msect = SYMBOL_BFD_SECTION (msymbol); - struct obj_section *osect = find_pc_sect_section (maddr, msect); - - if (osect != NULL) - { - int i; - - /* Step over other symbols at this same address, and symbols - in other sections, to find the next symbol in this - section with a different address. */ - for (i = 1; SYMBOL_LINKAGE_NAME (msymbol + i) != NULL; i++) - { - if (SYMBOL_VALUE_ADDRESS (msymbol + i) != maddr - && SYMBOL_BFD_SECTION (msymbol + i) == msect) - break; - } - - symfile_objfile->ei.main_func_lowpc = maddr; - - /* Use the lesser of the next minimal symbol in the same - section, or the end of the section, as the end of the - function. */ - if (SYMBOL_LINKAGE_NAME (msymbol + i) != NULL - && SYMBOL_VALUE_ADDRESS (msymbol + i) < osect->endaddr) - symfile_objfile->ei.main_func_highpc = - SYMBOL_VALUE_ADDRESS (msymbol + i); - else - /* We got the start address from the last msymbol in the - objfile. So the end address is the end of the - section. */ - symfile_objfile->ei.main_func_highpc = osect->endaddr; - } - } - - return (symfile_objfile->ei.main_func_lowpc <= pc - && symfile_objfile->ei.main_func_highpc > pc); -} - /* Test whether THIS_FRAME is inside the process entry point function. */ int |