* objdump.c (objdump_print_address): If we can't find a smaller
symbol in the right section, look for a larger one.
This commit is contained in:
parent
006ae0e478
commit
2d0546410d
2 changed files with 23 additions and 7 deletions
|
@ -2,7 +2,8 @@ Fri Sep 16 11:27:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
|
||||||
|
|
||||||
* objdump.c (struct objdump_disasm_info): Add field require_sec.
|
* objdump.c (struct objdump_disasm_info): Add field require_sec.
|
||||||
(objdump_print_address): If aux->require_sec, require that the
|
(objdump_print_address): If aux->require_sec, require that the
|
||||||
symbol be in aux->sec even if HAS_RELOC is not set.
|
symbol be in aux->sec even if HAS_RELOC is not set. If we can't
|
||||||
|
find a smaller symbol in the right section, look for a larger one.
|
||||||
(disassemble_data): Set aux.require_sec around the
|
(disassemble_data): Set aux.require_sec around the
|
||||||
objdump_print_address call for the instruction address.
|
objdump_print_address call for the instruction address.
|
||||||
|
|
||||||
|
|
|
@ -422,12 +422,12 @@ objdump_print_address (vma, info)
|
||||||
long i;
|
long i;
|
||||||
|
|
||||||
aux = (struct objdump_disasm_info *) info->application_data;
|
aux = (struct objdump_disasm_info *) info->application_data;
|
||||||
if ((aux->require_sec
|
if (syms[thisplace]->section != aux->sec
|
||||||
|| (aux->abfd->flags & HAS_RELOC) != 0)
|
&& (aux->require_sec
|
||||||
|
|| ((aux->abfd->flags & HAS_RELOC) != 0
|
||||||
&& vma >= bfd_get_section_vma (aux->abfd, aux->sec)
|
&& vma >= bfd_get_section_vma (aux->abfd, aux->sec)
|
||||||
&& vma < (bfd_get_section_vma (aux->abfd, aux->sec)
|
&& vma < (bfd_get_section_vma (aux->abfd, aux->sec)
|
||||||
+ bfd_get_section_size_before_reloc (aux->sec))
|
+ bfd_get_section_size_before_reloc (aux->sec)))))
|
||||||
&& syms[thisplace]->section != aux->sec)
|
|
||||||
{
|
{
|
||||||
for (i = thisplace + 1; i < symcount; i++)
|
for (i = thisplace + 1; i < symcount; i++)
|
||||||
{
|
{
|
||||||
|
@ -443,8 +443,23 @@ objdump_print_address (vma, info)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (syms[thisplace]->section != aux->sec)
|
||||||
|
{
|
||||||
|
/* We didn't find a good symbol with a smaller value.
|
||||||
|
Look for one with a larger value. */
|
||||||
|
for (i = thisplace + 1; i < symcount; i++)
|
||||||
|
{
|
||||||
|
if (syms[i]->section == aux->sec)
|
||||||
|
{
|
||||||
|
thisplace = i;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fprintf (info->stream, " <%s", syms[thisplace]->name);
|
fprintf (info->stream, " <%s", syms[thisplace]->name);
|
||||||
if (syms[thisplace]->value > vma)
|
if (syms[thisplace]->value > vma)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue