[binutils-gdb] mn10300: ubsan: shift exponent too large
Alan Modra
amodra@sourceware.org
Mon Aug 31 10:58:55 GMT 2020
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=8f383897b69c58e02bc447b3c0813361f04bdc1e
commit 8f383897b69c58e02bc447b3c0813361f04bdc1e
Author: Alan Modra <amodra@gmail.com>
Date: Mon Aug 31 08:09:23 2020 +0930
mn10300: ubsan: shift exponent too large
* elf-m10300.c (mn10300_elf_relax_delete_bytes): Calculate
alignment from reloc addend after reloc type R_MN10300_ALIGN is
found.
Diff:
---
bfd/ChangeLog | 6 ++++++
bfd/elf-m10300.c | 18 ++++++++++--------
2 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 31c74bf8bee..5d004cd7df0 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2020-08-31 Alan Modra <amodra@gmail.com>
+
+ * elf-m10300.c (mn10300_elf_relax_delete_bytes): Calculate
+ alignment from reloc addend after reloc type R_MN10300_ALIGN is
+ found.
+
2020-08-30 Alan Modra <amodra@gmail.com>
PR 26435
diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c
index 7c63ce4cd12..7a2b67569b0 100644
--- a/bfd/elf-m10300.c
+++ b/bfd/elf-m10300.c
@@ -2418,17 +2418,19 @@ mn10300_elf_relax_delete_bytes (bfd *abfd,
are deleting. */
for (; irel < irelend; irel++)
{
- int alignment = 1 << irel->r_addend;
-
if (ELF32_R_TYPE (irel->r_info) == (int) R_MN10300_ALIGN
&& irel->r_offset > addr
- && irel->r_offset < toaddr
- && (count < alignment
- || alignment % count != 0))
+ && irel->r_offset < toaddr)
{
- irelalign = irel;
- toaddr = irel->r_offset;
- break;
+ int alignment = 1 << irel->r_addend;
+
+ if (count < alignment
+ || alignment % count != 0)
+ {
+ irelalign = irel;
+ toaddr = irel->r_offset;
+ break;
+ }
}
}
}
More information about the Binutils-cvs
mailing list