https://sourceware.org/bugzilla/show_bug.cgi?id=33323
Bug ID: 33323
Summary: arm linker does not respect --no-relax
Product: binutils
Version: 2.46 (HEAD)
Status: NEW
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: sam at gentoo dot org
Target Milestone: ---
This came up when looking at PR33314 at least for TLS relaxations but I *think*
it never honours it.
It looks like this in ld/emultempl/armelf.em:
```
static void
gld${EMULATION_NAME}_set_symbols (void)
{
/* PR 19106: The section resizing code in gldarmelf_after_allocation
is effectively the same as relaxation, so prevent early memory
region checks which produce bogus error messages.
Note - this test has nothing to do with symbols. It is just here
because this is the first emulation routine that is called after
the command line has been parsed. */
if (!bfd_link_relocatable (&link_info))
TARGET_ENABLE_RELAXATION;
}
```
clobbers DISABLE_RELAXATION set by --no-relax.
ld/emultempl/loongarchelf.em instead honours RELAXATION_DISABLED_BY_USER by
doing:
```
static void
larch_elf_before_allocation (void)
{
gld${EMULATION_NAME}_before_allocation ();
if (link_info.discard == discard_sec_merge)
link_info.discard = discard_l;
if (!bfd_link_relocatable (&link_info))
{
/* We always need at least some relaxation to handle code alignment. */
if (RELAXATION_DISABLED_BY_USER)
TARGET_ENABLE_RELAXATION;
else
ENABLE_RELAXATION;
}
link_info.relax_pass = 3;
}
```
--
You are receiving this mail because:
You are on the CC list for the bug.