mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-10 00:04:06 -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 commit04d7ea4720("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> (cherry picked from commite913afbeb1) Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
This commit is contained in:
committed by
Titouan Christophe
parent
a6c86f8511
commit
bc5042f1d1
@@ -210,7 +210,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