Return symbol from symbol_at_address_func
include/ * dis-asm.h (struct disassemble_info <symbol_at_address_func>): Return asymbol*. binutils/ * objdump.c (objdump_symbol_at_address): Return asymbol*. opcodes/ * dis-buf.c (generic_symbol_at_address): Return symbol* NULL. * s12z-dis.c (decode_possible_symbol): Use symbol returned from symbol_at_address_func.
This commit is contained in:
parent
4db29512ce
commit
a2e6677373
@ -1,3 +1,7 @@
|
||||
2021-04-06 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* objdump.c (objdump_symbol_at_address): Return asymbol*.
|
||||
|
||||
2021-04-06 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* NEWS: Mention C99 requirement.
|
||||
|
@ -1459,14 +1459,16 @@ objdump_print_address (bfd_vma vma, struct disassemble_info *inf)
|
||||
|
||||
/* Determine if the given address has a symbol associated with it. */
|
||||
|
||||
static int
|
||||
static asymbol *
|
||||
objdump_symbol_at_address (bfd_vma vma, struct disassemble_info * inf)
|
||||
{
|
||||
asymbol * sym;
|
||||
|
||||
sym = find_symbol_for_address (vma, inf, NULL);
|
||||
if (sym != NULL && bfd_asymbol_value (sym) == vma)
|
||||
return sym;
|
||||
|
||||
return (sym != NULL && (bfd_asymbol_value (sym) == vma));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Hold the last function name and the last line number we displayed
|
||||
|
@ -1,3 +1,8 @@
|
||||
2021-04-06 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* dis-asm.h (struct disassemble_info <symbol_at_address_func>):
|
||||
Return asymbol*.
|
||||
|
||||
2021-04-01 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* opcode/cr16.h (strneq): Remove strneq and use startswith.
|
||||
|
@ -144,13 +144,13 @@ typedef struct disassemble_info
|
||||
some circumstances we want to include the overlay number in the
|
||||
address, (normally because there is a symbol associated with
|
||||
that address), but sometimes we want to mask out the overlay bits. */
|
||||
int (* symbol_at_address_func)
|
||||
asymbol * (*symbol_at_address_func)
|
||||
(bfd_vma addr, struct disassemble_info *dinfo);
|
||||
|
||||
/* Function called to check if a SYMBOL is can be displayed to the user.
|
||||
This is used by some ports that want to hide special symbols when
|
||||
displaying debugging outout. */
|
||||
bool (* symbol_is_valid)
|
||||
bool (*symbol_is_valid)
|
||||
(asymbol *, struct disassemble_info *dinfo);
|
||||
|
||||
/* These are for buffer_read_memory. */
|
||||
@ -376,11 +376,11 @@ extern void perror_memory (int, bfd_vma, struct disassemble_info *);
|
||||
extern void generic_print_address
|
||||
(bfd_vma, struct disassemble_info *);
|
||||
|
||||
/* Always true. */
|
||||
extern int generic_symbol_at_address
|
||||
/* Always NULL. */
|
||||
extern asymbol *generic_symbol_at_address
|
||||
(bfd_vma, struct disassemble_info *);
|
||||
|
||||
/* Also always true. */
|
||||
/* Always true. */
|
||||
extern bool generic_symbol_is_valid
|
||||
(asymbol *, struct disassemble_info *);
|
||||
|
||||
|
@ -1,3 +1,9 @@
|
||||
2021-04-06 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* dis-buf.c (generic_symbol_at_address): Return symbol* NULL.
|
||||
* s12z-dis.c (decode_possible_symbol): Use symbol returned from
|
||||
symbol_at_address_func.
|
||||
|
||||
2021-04-05 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* configure.ac: Don't check for limits.h, string.h, strings.h or
|
||||
|
@ -87,13 +87,13 @@ generic_print_address (bfd_vma addr, struct disassemble_info *info)
|
||||
(*info->fprintf_func) (info->stream, "0x%s", buf);
|
||||
}
|
||||
|
||||
/* Just return true. */
|
||||
/* Just return NULL. */
|
||||
|
||||
int
|
||||
asymbol *
|
||||
generic_symbol_at_address (bfd_vma addr ATTRIBUTE_UNUSED,
|
||||
struct disassemble_info *info ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return 1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Just return TRUE. */
|
||||
|
@ -206,27 +206,12 @@ decode_possible_symbol (bfd_vma addr, bfd_vma base,
|
||||
struct disassemble_info *info, bool relative)
|
||||
{
|
||||
const char *fmt = relative ? "*%+" BFD_VMA_FMT "d" : "%" BFD_VMA_FMT "d";
|
||||
if (!info->symbol_at_address_func (addr + base, info))
|
||||
{
|
||||
(*info->fprintf_func) (info->stream, fmt, addr);
|
||||
}
|
||||
asymbol *sym = info->symbol_at_address_func (addr + base, info);
|
||||
|
||||
if (!sym)
|
||||
(*info->fprintf_func) (info->stream, fmt, addr);
|
||||
else
|
||||
{
|
||||
asymbol *sym = NULL;
|
||||
int j;
|
||||
for (j = 0; j < info->symtab_size; ++j)
|
||||
{
|
||||
sym = info->symtab[j];
|
||||
if (bfd_asymbol_value (sym) == addr + base)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (j < info->symtab_size)
|
||||
(*info->fprintf_func) (info->stream, "%s", bfd_asymbol_name (sym));
|
||||
else
|
||||
(*info->fprintf_func) (info->stream, fmt, addr);
|
||||
}
|
||||
(*info->fprintf_func) (info->stream, "%s", bfd_asymbol_name (sym));
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user