summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorNick Kossifidis <mickflemm@gmail.com>2019-02-14 06:37:13 +0300
committerAnup Patel <anup@brainfault.org>2019-02-15 06:25:45 +0300
commit286b80768beb16130f869877875af2f581439b2b (patch)
tree581cf5ed12134713b9c34d1cd16c4b420f793ed9 /Makefile
parent35e617385f5c6278ee83434b9594d07731993742 (diff)
downloadopensbi-286b80768beb16130f869877875af2f581439b2b.tar.xz
Makefile: Make sure ld is always aware of the target abi/emulation
On Makefile merge_objs calls ld without providing any hints on the target so on a multilib toolchain for example it will always pick the default one (elf64-littleriscv) which will then result a failure when compiling on RV32 since the objects will be 32bits and the target will be 64bits. The same happens on compile_ld that calls gcc without CFLAGS so it doesn't get mabi/march. With this patch OpenSBI compiles on RV32 (PLATFORM_RISCV_XLEN=32), I tested fw_jump.elf on qemu (but it doesn't boot the kernel yet -bbl also doesn't boot the kernel so it may be something else). Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile4
1 files changed, 3 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index d775e4e..32f6aa8 100644
--- a/Makefile
+++ b/Makefile
@@ -171,6 +171,8 @@ LDFLAGS += $(platform-ldflags-y)
LDFLAGS += $(firmware-ldflags-y)
MERGEFLAGS += -r
+MERGEFLAGS += -b elf$(PLATFORM_RISCV_XLEN)-littleriscv
+MERGEFLAGS += -m elf$(PLATFORM_RISCV_XLEN)lriscv
DTCFLAGS = -O dtb
@@ -225,7 +227,7 @@ compile_as = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
$(AS) $(ASFLAGS) $(call dynamic_flags,$(1),$(2)) -c $(2) -o $(1)
compile_ld = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
echo " LD $(subst $(build_dir)/,,$(1))"; \
- $(CC) $(3) $(LDFLAGS) -Wl,-T$(2) -o $(1)
+ $(CC) $(CFLAGS) $(3) $(LDFLAGS) -Wl,-T$(2) -o $(1)
compile_ar = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \
echo " AR $(subst $(build_dir)/,,$(1))"; \
$(AR) $(ARFLAGS) $(1) $(2)