diff options
author | Simon Marchi <simon.marchi@polymtl.ca> | 2021-10-02 17:38:05 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2021-10-02 17:38:05 +0200 |
commit | b625c7701d700d2a11cc1704a23bb79847251f01 (patch) | |
tree | 3aa26137da9f475b90144d309a21c816c2e7ac9a | |
parent | 1e9983e73052d78e6c9fb709ddb897d26fef664c (diff) | |
download | gdb-b625c7701d700d2a11cc1704a23bb79847251f01.zip gdb-b625c7701d700d2a11cc1704a23bb79847251f01.tar.gz gdb-b625c7701d700d2a11cc1704a23bb79847251f01.tar.bz2 |
[gdb/symtab] Remove COMPUNIT_CALL_SITE_HTAB
Remove macro COMPUNIT_CALL_SITE_HTAB, and provide access to the htab using
member functions:
- compunit_symtab::find_call_site
- compunit_symtab::set_call_site_htab
Tested on x86_64-linux.
Co-Authored-By: Tom de Vries <tdevries@suse.de>
-rw-r--r-- | gdb/block.c | 10 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 2 | ||||
-rw-r--r-- | gdb/symtab.c | 24 | ||||
-rw-r--r-- | gdb/symtab.h | 9 |
4 files changed, 37 insertions, 8 deletions
diff --git a/gdb/block.c b/gdb/block.c index 4cb9573..90c0c5b 100644 --- a/gdb/block.c +++ b/gdb/block.c @@ -225,15 +225,15 @@ struct call_site * call_site_for_pc (struct gdbarch *gdbarch, CORE_ADDR pc) { struct compunit_symtab *cust; - void **slot = NULL; + call_site *cs = nullptr; /* -1 as tail call PC can be already after the compilation unit range. */ cust = find_pc_compunit_symtab (pc - 1); - if (cust != NULL && COMPUNIT_CALL_SITE_HTAB (cust) != NULL) - slot = htab_find_slot (COMPUNIT_CALL_SITE_HTAB (cust), &pc, NO_INSERT); + if (cust != nullptr) + cs = cust->find_call_site (pc); - if (slot == NULL) + if (cs == nullptr) { struct bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (pc); @@ -247,7 +247,7 @@ call_site_for_pc (struct gdbarch *gdbarch, CORE_ADDR pc) : msym.minsym->print_name ())); } - return (struct call_site *) *slot; + return cs; } /* Return the blockvector immediately containing the innermost lexical block diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index b9b62b4..2d4ca08 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -9510,7 +9510,7 @@ process_full_comp_unit (dwarf2_cu *cu, enum language pretend_language) if (gcc_4_minor >= 5) cust->epilogue_unwind_valid = 1; - cust->call_site_htab = cu->call_site_htab; + cust->set_call_site_htab (cu->call_site_htab); } per_objfile->set_symtab (cu->per_cu, cust); diff --git a/gdb/symtab.c b/gdb/symtab.c index 62451fe..6ec5d95 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -331,6 +331,30 @@ search_domain_name (enum search_domain e) /* See symtab.h. */ +call_site * +compunit_symtab::find_call_site (CORE_ADDR pc) const +{ + if (m_call_site_htab == nullptr) + return nullptr; + + void **slot = htab_find_slot (m_call_site_htab, &pc, NO_INSERT); + if (slot == nullptr) + return nullptr; + + return (call_site *) *slot; +} + +/* See symtab.h. */ + +void +compunit_symtab::set_call_site_htab (htab_t call_site_htab) +{ + gdb_assert (m_call_site_htab == nullptr); + m_call_site_htab = call_site_htab; +} + +/* See symtab.h. */ + struct symtab * compunit_primary_filetab (const struct compunit_symtab *cust) { diff --git a/gdb/symtab.h b/gdb/symtab.h index 5182f51..6a6cf82 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -1449,6 +1449,12 @@ struct symtab struct compunit_symtab { + /* Set m_call_site_htab. */ + void set_call_site_htab (htab_t call_site_htab); + + /* Find call_site info for PC. */ + call_site *find_call_site (CORE_ADDR pc) const; + /* Unordered chain of all compunit symtabs of this objfile. */ struct compunit_symtab *next; @@ -1503,7 +1509,7 @@ struct compunit_symtab unsigned int epilogue_unwind_valid : 1; /* struct call_site entries for this compilation unit or NULL. */ - htab_t call_site_htab; + htab_t m_call_site_htab; /* The macro table for this symtab. Like the blockvector, this is shared between different symtabs in a given compilation unit. @@ -1538,7 +1544,6 @@ using compunit_symtab_range = next_range<compunit_symtab>; #define COMPUNIT_BLOCK_LINE_SECTION(cust) ((cust)->block_line_section) #define COMPUNIT_LOCATIONS_VALID(cust) ((cust)->locations_valid) #define COMPUNIT_EPILOGUE_UNWIND_VALID(cust) ((cust)->epilogue_unwind_valid) -#define COMPUNIT_CALL_SITE_HTAB(cust) ((cust)->call_site_htab) #define COMPUNIT_MACRO_TABLE(cust) ((cust)->macro_table) /* A range adapter to allowing iterating over all the file tables |