mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-09 07:51:59 -09:00
package/Makefile.in: fix support for $(PKG)_FLAT_STACKSIZE
When a package defines $(PKG)_FLAT_STACKSIZE, ELF2FLT_FLAGS contains
-Wl,-elf2flt="-r -s<stack-size>". The embedded quotes are needed to
keep both elf2flt options in single linker argument.
However, many package Makefiles wrap $(TARGET_CFLAGS) in double quotes,
for example:
CFLAGS="$(TARGET_CFLAGS)"
After expansion, the embedded quote terminates the outer CFLAGS quote.
As a result, the shell interprets "-s<stack-size> ..." as a command
instead of passing it to the compiler.
Pass -r and -s<stack-size> in separate -Wl arguments instead. This
avoids embedded quotes; GCC forwards both -elf2flt options to
ld-elf2flt, which collects them before invoking elf2flt.
This got broken by commit
04d7ea4720 ("package: Makefile.in: fix
elf2flt invocation options"), which by adding -r as an elf2flt
argument, did not correctly handle -s$($(PKG)_FLAT_STACKSIZE).
Signed-off-by: Fengwei Tan <tfx2001@outlook.com>
[Thomas: improve commit message]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
committed by
Thomas Petazzoni
parent
5245c41441
commit
e913afbeb1
@@ -218,7 +218,7 @@ ifeq ($(BR2_riscv),y)
|
||||
TARGET_CFLAGS += -fPIC
|
||||
endif
|
||||
ELF2FLT_FLAGS = $(if $($(PKG)_FLAT_STACKSIZE),\
|
||||
-Wl$(comma)-elf2flt="-r -s$($(PKG)_FLAT_STACKSIZE)",\
|
||||
-Wl$(comma)-elf2flt=-r -Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\
|
||||
-Wl$(comma)-elf2flt=-r)
|
||||
TARGET_CFLAGS += $(ELF2FLT_FLAGS)
|
||||
TARGET_CXXFLAGS += $(ELF2FLT_FLAGS)
|
||||
|
||||
Reference in New Issue
Block a user