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
7 changed files with 32 additions and 30 deletions
|
@ -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>
|
2021-04-06 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* NEWS: Mention C99 requirement.
|
* 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. */
|
/* 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)
|
objdump_symbol_at_address (bfd_vma vma, struct disassemble_info * inf)
|
||||||
{
|
{
|
||||||
asymbol * sym;
|
asymbol * sym;
|
||||||
|
|
||||||
sym = find_symbol_for_address (vma, inf, NULL);
|
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
|
/* 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>
|
2021-04-01 Martin Liska <mliska@suse.cz>
|
||||||
|
|
||||||
* opcode/cr16.h (strneq): Remove strneq and use startswith.
|
* opcode/cr16.h (strneq): Remove strneq and use startswith.
|
||||||
|
|
|
@ -144,7 +144,7 @@ typedef struct disassemble_info
|
||||||
some circumstances we want to include the overlay number in the
|
some circumstances we want to include the overlay number in the
|
||||||
address, (normally because there is a symbol associated with
|
address, (normally because there is a symbol associated with
|
||||||
that address), but sometimes we want to mask out the overlay bits. */
|
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);
|
(bfd_vma addr, struct disassemble_info *dinfo);
|
||||||
|
|
||||||
/* Function called to check if a SYMBOL is can be displayed to the user.
|
/* Function called to check if a SYMBOL is can be displayed to the user.
|
||||||
|
@ -376,11 +376,11 @@ extern void perror_memory (int, bfd_vma, struct disassemble_info *);
|
||||||
extern void generic_print_address
|
extern void generic_print_address
|
||||||
(bfd_vma, struct disassemble_info *);
|
(bfd_vma, struct disassemble_info *);
|
||||||
|
|
||||||
/* Always true. */
|
/* Always NULL. */
|
||||||
extern int generic_symbol_at_address
|
extern asymbol *generic_symbol_at_address
|
||||||
(bfd_vma, struct disassemble_info *);
|
(bfd_vma, struct disassemble_info *);
|
||||||
|
|
||||||
/* Also always true. */
|
/* Always true. */
|
||||||
extern bool generic_symbol_is_valid
|
extern bool generic_symbol_is_valid
|
||||||
(asymbol *, struct disassemble_info *);
|
(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>
|
2021-04-05 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* configure.ac: Don't check for limits.h, string.h, strings.h or
|
* 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);
|
(*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,
|
generic_symbol_at_address (bfd_vma addr ATTRIBUTE_UNUSED,
|
||||||
struct disassemble_info *info ATTRIBUTE_UNUSED)
|
struct disassemble_info *info ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
return 1;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Just return TRUE. */
|
/* Just return TRUE. */
|
||||||
|
|
|
@ -206,27 +206,12 @@ decode_possible_symbol (bfd_vma addr, bfd_vma base,
|
||||||
struct disassemble_info *info, bool relative)
|
struct disassemble_info *info, bool relative)
|
||||||
{
|
{
|
||||||
const char *fmt = relative ? "*%+" BFD_VMA_FMT "d" : "%" BFD_VMA_FMT "d";
|
const char *fmt = relative ? "*%+" BFD_VMA_FMT "d" : "%" BFD_VMA_FMT "d";
|
||||||
if (!info->symbol_at_address_func (addr + base, info))
|
asymbol *sym = info->symbol_at_address_func (addr + base, info);
|
||||||
{
|
|
||||||
|
if (!sym)
|
||||||
(*info->fprintf_func) (info->stream, fmt, addr);
|
(*info->fprintf_func) (info->stream, fmt, addr);
|
||||||
}
|
|
||||||
else
|
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));
|
(*info->fprintf_func) (info->stream, "%s", bfd_asymbol_name (sym));
|
||||||
else
|
|
||||||
(*info->fprintf_func) (info->stream, fmt, addr);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue