bfd_vma start_offset,
bfd_vma stop_offset,
bfd_vma rel_offset,
- arelent *** relppp,
+ arelent ** relpp,
arelent ** relppend)
{
struct objdump_disasm_info *aux;
if (inf->disassembler_needs_relocs
&& (bfd_get_file_flags (aux->abfd) & EXEC_P) == 0
&& (bfd_get_file_flags (aux->abfd) & DYNAMIC) == 0
- && *relppp < relppend)
+ && relpp < relppend)
{
bfd_signed_vma distance_to_rel;
- distance_to_rel = (**relppp)->address - (rel_offset + addr_offset);
+ distance_to_rel = (*relpp)->address - (rel_offset + addr_offset);
/* Check to see if the current reloc is associated with
the instruction that we are about to disassemble. */
bfd_vma start_offset,
bfd_vma stop_offset,
bfd_vma rel_offset,
- arelent ***relppp,
+ arelent **relpp,
arelent **relppend)
{
struct objdump_disasm_info *aux;
if (inf->disassembler_needs_relocs
&& (bfd_get_file_flags (aux->abfd) & EXEC_P) == 0
&& (bfd_get_file_flags (aux->abfd) & DYNAMIC) == 0
- && *relppp < relppend)
+ && relpp < relppend)
{
bfd_signed_vma distance_to_rel;
int max_reloc_offset
= aux->abfd->arch_info->max_reloc_offset_into_insn;
- distance_to_rel = ((**relppp)->address - rel_offset
+ distance_to_rel = ((*relpp)->address - rel_offset
- addr_offset);
insn_size = 0;
&& distance_to_rel < insn_size / (int) opb))
{
inf->flags |= INSN_HAS_RELOC;
- aux->reloc = **relppp;
+ aux->reloc = *relpp;
}
}
need_nl = true;
}
- while ((*relppp) < relppend
- && (**relppp)->address < rel_offset + addr_offset + octets / opb)
+ while (relpp < relppend
+ && (*relpp)->address < rel_offset + addr_offset + octets / opb)
{
if (dump_reloc_info || dump_dynamic_reloc_info)
{
arelent *q;
- q = **relppp;
+ q = *relpp;
if (wide_output)
putchar ('\t');
printf ("\n");
need_nl = false;
}
- ++(*relppp);
+ ++relpp;
}
if (need_nl)
if (sorted_symcount > 1)
qsort (sorted_syms, sorted_symcount, sizeof (asymbol *), compare_symbols);
- /* Skip over the relocs belonging to addresses below the
- start address. */
- while (rel_pp < rel_ppend
- && (*rel_pp)->address < rel_offset + addr_offset)
- ++rel_pp;
-
printf (_("\nDisassembly of section %s:\n"), sanitize_string (section->name));
/* Find the nearest symbol forwards from our current position. */
bfd_vma nextstop_offset;
bool insns;
+ /* Skip over the relocs belonging to addresses below the
+ start address. */
+ while (rel_pp < rel_ppend
+ && (*rel_pp)->address < rel_offset + addr_offset)
+ ++rel_pp;
+
addr = section->vma + addr_offset;
addr = ((addr & ((sign_adjust << 1) - 1)) ^ sign_adjust) - sign_adjust;
/* We are not currently printing. Check to see
if the current symbol matches the requested symbol. */
- if (streq (name, paux->symbol))
+ if (streq (name, paux->symbol)
+ && bfd_asymbol_value (sym) <= addr)
{
do_print = true;
- /* Skip over the relocs belonging to addresses below the
- symbol address. */
- const bfd_vma sym_offset = bfd_asymbol_value (sym) - section->vma;
- while (rel_pp < rel_ppend &&
- (*rel_pp)->address - rel_offset < sym_offset)
- ++rel_pp;
-
loop_until = next_sym;
if (sym->flags & BSF_FUNCTION)
{
{
bfd_size_type fsize =
((elf_symbol_type *) sym)->internal_elf_sym.st_size;
- if (addr_offset + fsize > addr_offset
- && addr_offset + fsize <= stop_offset)
+ bfd_vma fend =
+ bfd_asymbol_value (sym) - section->vma + fsize;
+ if (fend > addr_offset && fend <= stop_offset)
{
/* Sym is a function symbol with a valid
size associated with it. Disassemble
to the end of the function. */
- stop_offset = addr_offset + fsize;
+ stop_offset = fend;
loop_until = stop_offset_reached;
}
}
objdump_print_symname (abfd, &di, sym);
/* Fetch jump information. */
- detected_jumps = disassemble_jumps
- (pinfo, paux->disassemble_fn,
- addr_offset, nextstop_offset,
- rel_offset, &rel_pp, rel_ppend);
-
+ detected_jumps = disassemble_jumps (pinfo, paux->disassemble_fn,
+ addr_offset, nextstop_offset,
+ rel_offset, rel_pp, rel_ppend);
/* Free symbol name. */
free (sf.buffer);
}
/* Add jumps to output. */
disassemble_bytes (pinfo, paux->disassemble_fn, insns, data,
addr_offset, nextstop_offset,
- rel_offset, &rel_pp, rel_ppend);
+ rel_offset, rel_pp, rel_ppend);
/* Free jumps. */
while (detected_jumps)