Makefile.inc: Replace linker flag -nostartfiles with --nmagic

While the gcc(1) driver has the `-nostartfiles` option, ld(1), the
program the coreboot toolchain uses to link the object files, doesn't
have it.

In binutils before 2.36, this option is interpreted as `-n -o
startfiles`, in which the `-o` option is overridden by a later `-o`
option, so only the `-n` option has effect, which is the `--nmagic`
long option of ld(1). So the correct linker option in this place is
`--nmagic`.

It is tested that without `--nmagic`, ld can generate a much bigger
x86_64 romstage, so this option is still needed.

This error is found when trying to update binutils to 2.36 and later
versions, where ld(1) is unable to disambiguate options and reports an
error.

Change-Id: I27dc2209abdc6fec866716a252736c5cf236a347
Signed-off-by: Iru Cai <mytbk920423@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/56490
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Martin Roth <martinroth@google.com>
Signed-off-by: Uwe Poeche <uwe.poeche@siemens.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/61958
Reviewed-by: Werner Zeh <werner.zeh@siemens.com>
Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
This commit is contained in:
Iru Cai 2021-07-21 23:14:35 +08:00 committed by Felix Held
parent 4401498041
commit 6ffb50080a
1 changed files with 1 additions and 1 deletions

View File

@ -478,7 +478,7 @@ ADAFLAGS_common += -gnatwa.eeD.HHTU.U.W.Y
# Disable style checks for now # Disable style checks for now
ADAFLAGS_common += -gnatyN ADAFLAGS_common += -gnatyN
LDFLAGS_common := --gc-sections -nostdlib -nostartfiles -static --emit-relocs LDFLAGS_common := --gc-sections -nostdlib --nmagic -static --emit-relocs
ifeq ($(CONFIG_WARNINGS_ARE_ERRORS),y) ifeq ($(CONFIG_WARNINGS_ARE_ERRORS),y)
CFLAGS_common += -Werror CFLAGS_common += -Werror