[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/28910] New: GNU-ld: ARM: Issues when trying to set target output
From: |
krjdev at gmail dot com |
Subject: |
[Bug ld/28910] New: GNU-ld: ARM: Issues when trying to set target output architecture |
Date: |
Mon, 21 Feb 2022 04:31:57 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=28910
Bug ID: 28910
Summary: GNU-ld: ARM: Issues when trying to set target output
architecture
Product: binutils
Version: 2.36.1
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: krjdev at gmail dot com
Target Milestone: ---
I noticed two issues in the ARM port from GNU-ld. It's a special case when the
output target is set manually (linker script or command line). When no target
output architecture is set, linking of the objects works fine with GNU-ld.
Testcase:
I used a current project from me which targets a Cortex-M7 (Armv7E-M).
GNU-ld is invoked directly within a Makefile, not via GCC.
Compiled the source code with the following GCC options:
CCFLAGS += -march=armv7e-m
CCFLAGS += -mcpu=cortex-m7
Issue #1 - command line with long option "--architecture ARCH"
Setting the target output architecture doesn't work with the command line
option when using the long format. GNU-ld doesn't recognize the option and
aborts with an error. I don't know if this is a real issue or an usage mistake
from me when I use the long option instead of the short form.
Tried it with...
$ arm-none-eabi-ld --architecture armv7e-m
arm-none-eabi-ld: Error: unable to disambiguate: --architecture (did you mean
---architecture ?)
...and...
arm-none-eabi-ld --architecture=armv7e-m
arm-none-eabi-ld: Error: unable to disambiguate: --architecture=armv7e-m (did
you mean ---architecture=armv7e-m ?)
Works with the short form:
$ arm-none-eabi-ld -A armv7e-m
Issue #2 - linker script
If I don't use the working short form for setting the target output
architecture
and use a linker script instead with...
OUTPUT_ARCH(armv7e-m)
...linking fails with many EABI version mismatches errors:
arm-none-eabi-ld: error: source object main.o has EABI version 5, but target
main_cm7.elf has EABI version 0
arm-none-eabi-ld: failed to merge target specific data of file main.o
The linking fails with GNU-ld, but works when I use GNU-gold instead. An ARM
developer community member has also confirmed this behavior.
Affected version:
2.36.1.20210621
$ arm-none-eabi-ld --version
GNU ld (GNU Arm Embedded Toolchain 10.3-2021.07) 2.36.1.20210621
I currently haven't build GNU ld from the actually source code, so I don't know
if these issues are known or already fixed. Will make up this later. The tried
version was the binary build from the ARM homepage.
References:
ARM developer Community:
https://community.arm.com/support-forums/f/compilers-and-libraries-forum/52304/arm-none-eabi-ld-cannot-set-target-architecture
StackOverflow:
https://stackoverflow.com/questions/71188898/gnu-ld-warn-about-mismatching-arm-architecture-version
--
You are receiving this mail because:
You are on the CC list for the bug.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Bug ld/28910] New: GNU-ld: ARM: Issues when trying to set target output architecture,
krjdev at gmail dot com <=