mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-28 10:00:51 +00:00
PR binutils/15818
* objdump.c (disassemble_section): Return early if nothing from this section needs to be disassembled.
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
2013-08-12 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
PR binutils/15818
|
||||
* objdump.c (disassemble_section): Return early if nothing from
|
||||
this section needs to be disassembled.
|
||||
|
||||
2013-08-09 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* readelf.c (get_machine_flags): Handle RL78 G10 flag.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* objdump.c -- dump information about an object file.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
|
||||
2012 Free Software Foundation, Inc.
|
||||
2012, 2013 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
|
||||
@@ -1915,6 +1915,27 @@ disassemble_section (bfd *abfd, asection *section, void *inf)
|
||||
if (datasize == 0)
|
||||
return;
|
||||
|
||||
if (start_address == (bfd_vma) -1
|
||||
|| start_address < section->vma)
|
||||
addr_offset = 0;
|
||||
else
|
||||
addr_offset = start_address - section->vma;
|
||||
|
||||
if (stop_address == (bfd_vma) -1)
|
||||
stop_offset = datasize / opb;
|
||||
else
|
||||
{
|
||||
if (stop_address < section->vma)
|
||||
stop_offset = 0;
|
||||
else
|
||||
stop_offset = stop_address - section->vma;
|
||||
if (stop_offset > datasize / opb)
|
||||
stop_offset = datasize / opb;
|
||||
}
|
||||
|
||||
if (addr_offset >= stop_offset)
|
||||
return;
|
||||
|
||||
/* Decide which set of relocs to use. Load them if necessary. */
|
||||
paux = (struct objdump_disasm_info *) pinfo->application_data;
|
||||
if (paux->dynrelbuf)
|
||||
@@ -1965,32 +1986,13 @@ disassemble_section (bfd *abfd, asection *section, void *inf)
|
||||
pinfo->buffer_length = datasize;
|
||||
pinfo->section = section;
|
||||
|
||||
if (start_address == (bfd_vma) -1
|
||||
|| start_address < pinfo->buffer_vma)
|
||||
addr_offset = 0;
|
||||
else
|
||||
addr_offset = start_address - pinfo->buffer_vma;
|
||||
|
||||
if (stop_address == (bfd_vma) -1)
|
||||
stop_offset = datasize / opb;
|
||||
else
|
||||
{
|
||||
if (stop_address < pinfo->buffer_vma)
|
||||
stop_offset = 0;
|
||||
else
|
||||
stop_offset = stop_address - pinfo->buffer_vma;
|
||||
if (stop_offset > pinfo->buffer_length / opb)
|
||||
stop_offset = pinfo->buffer_length / opb;
|
||||
}
|
||||
|
||||
/* 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;
|
||||
|
||||
if (addr_offset < stop_offset)
|
||||
printf (_("\nDisassembly of section %s:\n"), section->name);
|
||||
printf (_("\nDisassembly of section %s:\n"), section->name);
|
||||
|
||||
/* Find the nearest symbol forwards from our current position. */
|
||||
paux->require_sec = TRUE;
|
||||
|
||||
Reference in New Issue
Block a user