[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/19979] New: Linker arithmetic behavior changed between 2.25 and
From: |
stefan.reinauer at coreboot dot org |
Subject: |
[Bug ld/19979] New: Linker arithmetic behavior changed between 2.25 and 2.26 |
Date: |
Thu, 21 Apr 2016 19:39:42 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=19979
Bug ID: 19979
Summary: Linker arithmetic behavior changed between 2.25 and
2.26
Product: binutils
Version: 2.26
Status: NEW
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: stefan.reinauer at coreboot dot org
Target Milestone: ---
We used to have the following assert in our linker script:
/* SRAM memory is mapped in two different locations. Define regions in both for
* full overlap checking and use this to guarantee they're kept in sync. */
#define ASSERT_MIRRORED(r1, r2) \
_ = ASSERT(_e##r1 - _##r1 == _e##r2 - _##r2 && \
_##r1 & 0x7fffffff == _##r2 & 0x7fffffff, \
STR(r1 and r2 do not match!));
[..]
ASSERT_MIRRORED(bootblock, gram_bootblock)
With binutils 2.25 everything was fine, but the assert started triggering with
2.26.
As a fix in our code base I changed the code to:
#define ASSERT_MIRRORED(r1, r2) \
_ = ASSERT((_e##r1 - _##r1) == (_e##r2 - _##r2) && \
(_##r1 & 0x7fffffff) == (_##r2 & 0x7fffffff), \
STR(r1 and r2 do not match!));
which seems like a good idea anyways, but I think binutils 2.26 is still doing
the wrong thing by grouping the parts of the expression differently than it
should.
Here's the link to the code change:
https://review.coreboot.org/#/c/14440
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug ld/19979] New: Linker arithmetic behavior changed between 2.25 and 2.26,
stefan.reinauer at coreboot dot org <=