@@ -17,6 +17,10 @@ ifndef FW_PIC
FW_PIC := y
endif
+ifeq ($(FW_PIC),y)
+FW_PIC := $(shell scripts/toolchain-check-pie $(CC))
+endif
+
ifeq ($(FW_PIC),y)
firmware-genflags-y += -DFW_PIC
firmware-asflags-y += -fpic
new file mode 100755
@@ -0,0 +1,7 @@
+#! /bin/bash
+
+if ${1} --version | head -n 1 | grep clang 2>&1 >/dev/null; then
+ echo void _start\(\) \{\} | ${1} --target=riscv64 -fuse-ld=lld -mno-relax -nostdlib -fPIE -Wl,-pie -xc - -o /dev/null 2>/dev/null && echo y || echo n
+else
+ echo void _start\(\) \{\} | ${1} -nostdlib -fPIE -Wl,-pie -xc - -o /dev/null 2>/dev/null && echo y || echo n
+fi
The previous version opensbi enable the FW_PIC option by default, but not all toolchains can support pie. This makes some toolchain report erroes when compiling. This patch whill check whether the toolchain supports FW_PIC and disable FW_PIC. Signed-off-by: Xiang W <wxjstz@126.com> --- firmware/objects.mk | 4 ++++ scripts/toolchain-check-pie | 7 +++++++ 2 files changed, 11 insertions(+) create mode 100755 scripts/toolchain-check-pie