aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2018-09-14 20:22:56 +0100
committerMaciej W. Rozycki <macro@linux-mips.org>2018-09-14 20:22:56 +0100
commita000f8817b32eadd4aeadf9185634350a59e6649 (patch)
tree6a834679a3e5632bff6b92b9f64dbe7e92c932a4
parent606cc04085a08f5e04eda6ef67f516bf81b691a1 (diff)
downloadbinutils-a000f8817b32eadd4aeadf9185634350a59e6649.zip
binutils-a000f8817b32eadd4aeadf9185634350a59e6649.tar.gz
binutils-a000f8817b32eadd4aeadf9185634350a59e6649.tar.bz2
LD: Avoid a division by zero page size with SEGMENT_START handling
Avoid a division by zero and thus a linker crash in SEGMENT_START script builtin function handling, by not checking the value supplied with a `-T' command-line override against the maximum page size if that has not been set. ld/ * ldexp.c (fold_binary): Check that `config.maxpagesize' is non-zero before using it as a divisor.
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/ldexp.c1
2 files changed, 6 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index f1a5506..bda269c 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2018-09-14 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * ldexp.c (fold_binary): Check that `config.maxpagesize' is
+ non-zero before using it as a divisor.
+
2018-09-03 Nick Clifton <nickc@redhat.com>
* po/fi.po: Updated Finnish translation.
diff --git a/ld/ldexp.c b/ld/ldexp.c
index e123f0e..4b9676e 100644
--- a/ld/ldexp.c
+++ b/ld/ldexp.c
@@ -545,6 +545,7 @@ fold_binary (etree_type *tree)
{
if (!seg->used
&& config.magic_demand_paged
+ && config.maxpagesize != 0
&& (seg->value % config.maxpagesize) != 0)
einfo (_("%P: warning: address of `%s' "
"isn't multiple of maximum page size\n"),