diff options
author | Alan Modra <amodra@gmail.com> | 2024-04-17 18:16:55 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2024-04-18 10:31:59 +0930 |
commit | 170957ff9b847cf44f6121fd846f5483f2090afd (patch) | |
tree | a5b4eaec22c13f35175886a4a0df7247cc52ff11 /binutils | |
parent | 1c8102d17f5e56796adb27d9a9180f2c5013b913 (diff) | |
download | binutils-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.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/objdump.c | 10 |
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) |