diff options
author | Andrew Cagney <cagney@redhat.com> | 2004-03-16 20:25:24 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2004-03-16 20:25:24 +0000 |
commit | 73912b9b231e5040ff1d3ec3dc6bfc791b575cf3 (patch) | |
tree | 63353ec9be790c6cec9995947926e7528b1f9d21 /gdb/blockframe.c | |
parent | 283accbcf23d51d3150932666c2b6738bdaf77cc (diff) | |
download | gdb-73912b9b231e5040ff1d3ec3dc6bfc791b575cf3.zip gdb-73912b9b231e5040ff1d3ec3dc6bfc791b575cf3.tar.gz gdb-73912b9b231e5040ff1d3ec3dc6bfc791b575cf3.tar.bz2 |
2004-03-16 Andrew Cagney <cagney@redhat.com>
* symtab.h (find_pc_sect_partial_function): Delete declaration.
* blockframe.c (find_pc_partial_function)
(find_pc_sect_partial_function): Merge into a single
find_pc_partial_function.
Diffstat (limited to 'gdb/blockframe.c')
-rw-r--r-- | gdb/blockframe.c | 48 |
1 files changed, 20 insertions, 28 deletions
diff --git a/gdb/blockframe.c b/gdb/blockframe.c index 265bd2e..1e96555 100644 --- a/gdb/blockframe.c +++ b/gdb/blockframe.c @@ -343,10 +343,13 @@ clear_pc_function_cache (void) If it fails, it sets *NAME, *ADDRESS, and *ENDADDR to zero and returns 0. */ +/* Backward compatibility, no section argument. */ + int -find_pc_sect_partial_function (CORE_ADDR pc, asection *section, char **name, - CORE_ADDR *address, CORE_ADDR *endaddr) +find_pc_partial_function (CORE_ADDR pc, char **name, CORE_ADDR *address, + CORE_ADDR *endaddr) { + struct bfd_section *section; struct partial_symtab *pst; struct symbol *f; struct minimal_symbol *msymbol; @@ -355,6 +358,21 @@ find_pc_sect_partial_function (CORE_ADDR pc, asection *section, char **name, int i; CORE_ADDR mapped_pc; + /* To ensure that the symbol returned belongs to the correct setion + (and that the last [random] symbol from the previous section + isn't returned) try to find the section containing PC. First try + the overlay code (which by default returns NULL); and second try + the normal section code (which almost always succeeds). */ + section = find_pc_overlay (pc); + if (section == NULL) + { + struct obj_section *obj_section = find_pc_section (pc); + if (obj_section == NULL) + section = NULL; + else + section = obj_section->the_bfd_section; + } + mapped_pc = overlay_mapped_address (pc, section); if (mapped_pc >= cache_pc_function_low @@ -507,32 +525,6 @@ find_pc_sect_partial_function (CORE_ADDR pc, asection *section, char **name, return 1; } -/* Backward compatibility, no section argument. */ - -int -find_pc_partial_function (CORE_ADDR pc, char **name, CORE_ADDR *address, - CORE_ADDR *endaddr) -{ - struct bfd_section *bfd_section; - - /* To ensure that the symbol returned belongs to the correct setion - (and that the last [random] symbol from the previous section - isn't returned) try to find the section containing PC. First try - the overlay code (which by default returns NULL); and second try - the normal section code (which almost always succeeds). */ - bfd_section = find_pc_overlay (pc); - if (bfd_section == NULL) - { - struct obj_section *obj_section = find_pc_section (pc); - if (obj_section == NULL) - bfd_section = NULL; - else - bfd_section = obj_section->the_bfd_section; - } - return find_pc_sect_partial_function (pc, bfd_section, name, address, - endaddr); -} - /* Return the innermost stack frame executing inside of BLOCK, or NULL if there is no such frame. If BLOCK is NULL, just return NULL. */ |