aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2024-04-17 18:16:55 +0930
committerAlan Modra <amodra@gmail.com>2024-04-18 10:31:59 +0930
commit170957ff9b847cf44f6121fd846f5483f2090afd (patch)
treea5b4eaec22c13f35175886a4a0df7247cc52ff11
parent1c8102d17f5e56796adb27d9a9180f2c5013b913 (diff)
downloadbinutils-170957ff9b847cf44f6121fd846f5483f2090afd.zip
binutils-170957ff9b847cf44f6121fd846f5483f2090afd.tar.gz
binutils-170957ff9b847cf44f6121fd846f5483f2090afd.tar.bz2
Tidy objdump opb expressions
I don't think any of these can overflow, but since all of the expressions I'm editing here are inside a while loop with condition addr_offset < stop_offset, this change makes it more obvious that they can't overflow. * objdump.c (disassemble_bytes): Calculate octet expressions involving both addr_offset and stop_offset by first subtracting addr_offset from stop_offset.
-rw-r--r--binutils/objdump.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 6396174..f92e14b 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -3356,28 +3356,28 @@ disassemble_bytes (struct disassemble_info *inf,
/* If we see more than SKIP_ZEROES octets of zeroes, we just
print `...'. */
if (! disassemble_zeroes)
- for (; addr_offset * opb + octets < stop_offset * opb; octets++)
+ for (; octets < (stop_offset - addr_offset) * opb; octets++)
if (data[addr_offset * opb + octets] != 0)
break;
if (! disassemble_zeroes
&& (inf->insn_info_valid == 0
|| inf->branch_delay_insns == 0)
&& (octets >= skip_zeroes
- || (addr_offset * opb + octets == stop_offset * opb
+ || (octets == (stop_offset - addr_offset) * opb
&& octets < skip_zeroes_at_end)))
{
/* If there are more nonzero octets to follow, we only skip
zeroes in multiples of 4, to try to avoid running over
the start of an instruction which happens to start with
zero. */
- if (addr_offset * opb + octets != stop_offset * opb)
+ if (octets != (stop_offset - addr_offset) * opb)
octets &= ~3;
/* If we are going to display more data, and we are displaying
file offsets, then tell the user how many zeroes we skip
and the file offset from where we resume dumping. */
if (display_file_offsets
- && addr_offset + octets / opb < stop_offset)
+ && octets / opb < stop_offset - addr_offset)
printf (_("\t... (skipping %lu zeroes, "
"resuming at file offset: 0x%lx)\n"),
(unsigned long) (octets / opb),
@@ -3529,7 +3529,7 @@ disassemble_bytes (struct disassemble_info *inf,
bfd_vma j;
octets = octets_per_line;
- if (addr_offset + octets / opb > stop_offset)
+ if (octets / opb > stop_offset - addr_offset)
octets = (stop_offset - addr_offset) * opb;
for (j = addr_offset * opb; j < addr_offset * opb + octets; ++j)