@@ -132,21 +132,21 @@ get_frame_function (frame_info_ptr frame)
/* Return the function containing pc value PC in section SECTION.
Returns 0 if function is not known. */
-struct symbol *
+block_symbol
find_pc_sect_function (CORE_ADDR pc, struct obj_section *section)
{
const struct block *b = block_for_pc_sect (pc, section);
if (b == 0)
- return 0;
- return b->linkage_function ();
+ return {};
+ return { b->linkage_function (), b };
}
/* Return the function containing pc value PC.
Returns 0 if function is not known.
Backward compatibility, no section */
-struct symbol *
+block_symbol
find_pc_function (CORE_ADDR pc)
{
return find_pc_sect_function (pc, find_pc_mapped_section (pc));
@@ -251,7 +251,7 @@ find_pc_partial_function_sym (CORE_ADDR pc,
address of the function. This will happen when the function
has more than one range and the entry pc is not within the
lowest range of addresses. */
- f = find_pc_sect_function (mapped_pc, section);
+ f = find_pc_sect_function (mapped_pc, section).symbol;
if (f != NULL
&& (msymbol.minsym == NULL
|| (f->value_block ()->entry_pc ()
@@ -421,7 +421,7 @@ find_function_entry_range_from_pc (CORE_ADDR pc, const char **name,
struct type *
find_function_type (CORE_ADDR pc)
{
- struct symbol *sym = find_pc_function (pc);
+ struct symbol *sym = find_pc_function (pc).symbol;
if (sym != NULL && sym->value_block ()->entry_pc () == pc)
return sym->type ();
@@ -12865,7 +12865,7 @@ update_static_tracepoint (tracepoint *tp, struct symtab_and_line sal)
tp->number, tp->static_trace_marker_id.c_str ());
symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
- sym = find_pc_sect_function (tpmarker->address, NULL);
+ sym = find_pc_sect_function (tpmarker->address, NULL).symbol;
uiout->text ("Now in ");
if (sym)
{
@@ -556,7 +556,7 @@ ftrace_update_function (struct btrace_thread_info *btinfo, CORE_ADDR pc)
/* Try to determine the function we're in. We use both types of symbols
to avoid surprises when we sometimes get a full symbol and sometimes
only a minimal symbol. */
- fun = find_pc_function (pc);
+ fun = find_pc_function (pc).symbol;
bmfun = lookup_minimal_symbol_by_pc (pc);
mfun = bmfun.minsym;
@@ -1040,7 +1040,7 @@ edit_command (const char *arg, int from_tty)
paddress (get_current_arch (), sal.pc));
gdbarch = sal.symtab->compunit ()->objfile ()->arch ();
- sym = find_pc_function (sal.pc);
+ sym = find_pc_function (sal.pc).symbol;
if (sym)
gdb_printf ("%s is in %s (%s:%d).\n",
paddress (gdbarch, sal.pc),
@@ -1424,7 +1424,7 @@ list_command (const char *arg, int from_tty)
paddress (get_current_arch (), sal.pc));
gdbarch = sal.symtab->compunit ()->objfile ()->arch ();
- sym = find_pc_function (sal.pc);
+ sym = find_pc_function (sal.pc).symbol;
if (sym)
gdb_printf ("%s is in %s (%s:%d).\n",
paddress (gdbarch, sal.pc),
@@ -762,7 +762,7 @@ call_site_target::iterate_over_addresses
static struct symbol *
func_addr_to_tail_call_list (struct gdbarch *gdbarch, CORE_ADDR addr)
{
- struct symbol *sym = find_pc_function (addr);
+ struct symbol *sym = find_pc_function (addr).symbol;
struct type *type;
if (sym == NULL || sym->value_block ()->entry_pc () != addr)
@@ -2037,7 +2037,7 @@ eval_op_objc_msgcall (struct type *expect_type, struct expression *exp,
(exp->gdbarch, addr, current_inferior ()->top_target ());
/* Is it a high_level symbol? */
- sym = find_pc_function (addr);
+ sym = find_pc_function (addr).symbol;
if (sym != NULL)
method = value_of_variable (sym, 0);
}
@@ -666,7 +666,7 @@ gdbscm_frame_function (SCM self)
if (frame != NULL)
{
found = true;
- sym = find_pc_function (get_frame_address_in_block (frame));
+ sym = find_pc_function (get_frame_address_in_block (frame)).symbol;
}
}
catch (const gdb_exception &except)
@@ -413,7 +413,7 @@ static const char *
get_function_name (CORE_ADDR funaddr, char *buf, int buf_size)
{
{
- struct symbol *symbol = find_pc_function (funaddr);
+ struct symbol *symbol = find_pc_function (funaddr).symbol;
if (symbol)
return symbol->print_name ();
@@ -750,7 +750,7 @@ set_step_frame (thread_info *tp)
set_step_info (tp, frame, sal);
CORE_ADDR pc = get_frame_pc (frame);
- tp->control.step_start_function = find_pc_function (pc);
+ tp->control.step_start_function = find_pc_function (pc).symbol;
}
/* Step until outside of current statement. */
@@ -1343,7 +1343,7 @@ until_next_command (int from_tty)
not). */
pc = get_frame_pc (frame);
- func = find_pc_function (pc);
+ func = find_pc_function (pc).symbol;
if (!func)
{
@@ -1883,7 +1883,7 @@ finish_command (const char *arg, int from_tty)
/* Find the function we will return from. */
frame_info_ptr callee_frame = get_selected_frame (nullptr);
- sm->function = find_pc_function (get_frame_pc (callee_frame));
+ sm->function = find_pc_function (get_frame_pc (callee_frame)).symbol;
sm->return_buf = 0; /* Initialize buffer address is not available. */
/* Determine the return convention. If it is RETURN_VALUE_STRUCT_CONVENTION,
@@ -7343,7 +7343,7 @@ process_event_stop_test (struct execution_control_state *ecs)
&& ((ecs->event_thread->control.step_stack_frame_id
!= outer_frame_id)
|| (ecs->event_thread->control.step_start_function
- != find_pc_function (ecs->event_thread->stop_pc ())))))
+ != find_pc_function (ecs->event_thread->stop_pc ()).symbol))))
{
CORE_ADDR stop_pc = ecs->event_thread->stop_pc ();
CORE_ADDR real_stop_pc;
@@ -8752,7 +8752,7 @@ print_stop_location (const target_waitstatus &ws)
&& (tp->control.step_frame_id
== get_frame_id (get_current_frame ()))
&& (tp->control.step_start_function
- == find_pc_function (tp->stop_pc ())))
+ == find_pc_function (tp->stop_pc ()).symbol))
{
/* Finished step, just print source line. */
source_flag = SRC_LINE;
@@ -637,7 +637,7 @@ build_address_symbolic (struct gdbarch *gdbarch,
anything/stabs--it would be inconvenient to eliminate those minimal
symbols anyway). */
msymbol = lookup_minimal_symbol_by_pc_section (addr, section);
- symbol = find_pc_sect_function (addr, section);
+ symbol = find_pc_sect_function (addr, section).symbol;
if (symbol)
{
@@ -252,7 +252,7 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
{
if (get_frame_pc_if_available (frame, &pc))
{
- struct symbol *function = find_pc_function (pc);
+ struct symbol *function = find_pc_function (pc).symbol;
if (function != nullptr)
{
struct type *ret_type =
@@ -893,7 +893,7 @@ frv_fdpic_find_canonical_descriptor (CORE_ADDR entry_point)
/* Attempt to find the name of the function. If the name is available,
it'll be used as an aid in finding matching functions in the dynamic
symbol table. */
- sym = find_pc_function (entry_point);
+ sym = find_pc_function (entry_point).symbol;
if (sym == 0)
name = 0;
else
@@ -1249,7 +1249,7 @@ sparc32_frame_cache (frame_info_ptr this_frame, void **this_cache)
cache = sparc_frame_cache (this_frame, this_cache);
- sym = find_pc_function (cache->pc);
+ sym = find_pc_function (cache->pc).symbol;
if (sym)
{
cache->struct_return_p = sparc32_struct_return_from_sym (sym);
@@ -1552,7 +1552,7 @@ static int
sparc32_dwarf2_struct_return_p (frame_info_ptr this_frame)
{
CORE_ADDR pc = get_frame_address_in_block (this_frame);
- struct symbol *sym = find_pc_function (pc);
+ struct symbol *sym = find_pc_function (pc).symbol;
if (sym)
return sparc32_struct_return_from_sym (sym);
@@ -3790,7 +3790,7 @@ skip_prologue_sal (struct symtab_and_line *sal)
switch_to_program_space_and_thread (sal->pspace);
- sym = find_pc_sect_function (sal->pc, sal->section);
+ sym = find_pc_sect_function (sal->pc, sal->section).symbol;
if (sym != NULL)
{
objfile = sym->objfile ();
@@ -4069,7 +4069,7 @@ find_function_alias_target (bound_minimal_symbol msymbol)
if (!msymbol_is_function (msymbol.objfile, msymbol.minsym, &func_addr))
return NULL;
- symbol *sym = find_pc_function (func_addr);
+ symbol *sym = find_pc_function (func_addr).symbol;
if (sym != NULL
&& sym->aclass () == LOC_BLOCK
&& sym->value_block ()->entry_pc () == func_addr)
@@ -2149,13 +2149,13 @@ extern struct type *lookup_enum (const char *, const struct block *);
return value will not be an inlined function; the containing
function will be returned instead. */
-extern struct symbol *find_pc_function (CORE_ADDR);
+extern block_symbol find_pc_function (CORE_ADDR);
/* lookup the function corresponding to the address and section. The
return value will not be an inlined function; the containing
function will be returned instead. */
-extern struct symbol *find_pc_sect_function (CORE_ADDR, struct obj_section *);
+extern block_symbol find_pc_sect_function (CORE_ADDR, struct obj_section *);
/* lookup the function symbol corresponding to the address and
section. The return value will be the closest enclosing function,
@@ -217,7 +217,7 @@ set_traceframe_context (frame_info_ptr trace_frame)
&& get_frame_pc_if_available (trace_frame, &trace_pc))
{
traceframe_sal = find_pc_line (trace_pc, 0);
- traceframe_fun = find_pc_function (trace_pc);
+ traceframe_fun = find_pc_function (trace_pc).symbol;
/* Save linenumber as "$trace_line", a debugger variable visible to
users. */
@@ -3621,7 +3621,7 @@ print_one_static_tracepoint_marker (int count,
uiout->field_core_addr ("addr", marker.gdbarch, marker.address);
sal = find_pc_line (marker.address, 0);
- sym = find_pc_sect_function (marker.address, NULL);
+ sym = find_pc_sect_function (marker.address, NULL).symbol;
if (sym)
{
uiout->text ("in ");