[coreboot] build environment broken again
Sean McNeil
seanmcneil3 at gmail.com
Mon May 19 05:50:11 CEST 2014
It looks like there are numerous places where LDFLAGS instead of
CCFLAGS_xxxx or not provided:
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index 6c7008c..09e76ea 100644
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -324,7 +324,7 @@ $(objcbfs)/ramstage.debug:
$(objgenerated)/ramstage.o $(src)/arch/x86/ramstage.l
ifeq ($(CONFIG_COMPILER_LLVM_CLANG),y)
$(LD_ramstage) -m elf_i386 -o $@ -L$(obj) $< -T
$(src)/arch/x86/ramstage.ld
else
- $(CC_ramstage) -nostdlib -nostartfiles -static -o $@ -L$(obj) -T
$(src)/arch/x86/ramstage.ld $<
+ $(CC_ramstage) $(CFLAGS_ramstage) -nostdlib -nostartfiles
-static -o $@ -L$(obj) -T $(src)/arch/x86/ramstage.ld $<
endif
endif
diff --git a/src/cpu/x86/Makefile.inc b/src/cpu/x86/Makefile.inc
index bc6a116..b27fac0 100644
--- a/src/cpu/x86/Makefile.inc
+++ b/src/cpu/x86/Makefile.inc
@@ -16,7 +16,7 @@ endif
rmodules-$(CONFIG_PARALLEL_MP) += sipi_vector.S
$(SIPI_DOTO): $(dir $(SIPI_ELF))sipi_vector.rmodules.o
- $(CC_ramstage) $(LDFLAGS) -nostdlib -r -o $@ $^
+ $(CC_ramstage) $(CFLAGS_ramstage) -nostdlib -r -o $@ $^
$(eval $(call rmodule_link,$(SIPI_ELF), $(SIPI_ELF:.elf=.o), 0))
diff --git a/src/cpu/x86/smm/Makefile.inc b/src/cpu/x86/smm/Makefile.inc
index cec738a..b3bae29 100644
--- a/src/cpu/x86/smm/Makefile.inc
+++ b/src/cpu/x86/smm/Makefile.inc
@@ -36,7 +36,7 @@ ramstage-srcs += $(obj)/cpu/x86/smm/smmstub
# SMM Stub Module. The stub is used as a trampoline for relocation and
normal
# SMM handling.
$(obj)/cpu/x86/smm/smmstub.o: $$(smmstub-objs)
- $(CC_smmstub) $(LDFLAGS) -nostdlib -r -o $@ $^
+ $(CC_smmstub) $(CFLAGS_smmstub) -nostdlib -r -o $@ $^
# Link the SMM stub module with a 0-byte heap.
$(eval $(call rmodule_link,$(obj)/cpu/x86/smm/smmstub.elf,
$(obj)/cpu/x86/smm/smmstub.o, 0))
@@ -51,7 +51,7 @@ $(obj)/cpu/x86/smm/smmstub.ramstage.o:
$(obj)/cpu/x86/smm/smmstub
# C-based SMM handler.
$(obj)/cpu/x86/smm/smm.o: $$(smm-objs) $(LIBGCC_FILE_NAME_smm)
- $(CC_smm) $(LDFLAGS) -nostdlib -r -o $@ -Wl,--wrap,__divdi3
-Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3
-Wl,--start-group $(smm-objs) $(LIBGCC_FILE_NAME_smm) -Wl,--end-group
+ $(CC_smm) $(CFLAGS_smm) -nostdlib -r -o $@ -Wl,--wrap,__divdi3
-Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3
-Wl,--start-group $(smm-objs) $(LIBGCC_FILE_NAME_smm) -Wl,--end-group
$(eval $(call rmodule_link,$(obj)/cpu/x86/smm/smm.elf,
$(obj)/cpu/x86/smm/smm.o, $(CONFIG_SMM_MODULE_HEAP_SIZE)))
@@ -73,18 +73,18 @@ endif
# Use TSEG specific entry point and linker script
ifeq ($(CONFIG_SMM_TSEG),y)
smm-y += smmhandler_tseg.S
-SMM_LDFLAGS := $(LDFLAGS) -pie
+SMM_LDFLAGS := $(LDFLAGS_smm) -pie
SMM_LDSCRIPT := smm_tseg.ld
else
smm-y += smmhandler.S
-SMM_LDFLAGS := $(LDFLAGFS)
+SMM_LDFLAGS := $(LDFLAGS_smm)
SMM_LDSCRIPT := smm.ld
endif
smm-y += smihandler.c
$(obj)/cpu/x86/smm/smm.o: $$(smm-objs) $(LIBGCC_FILE_NAME_smm)
- $(CC_smm) $(LDFLAGS) -nostdlib -r -o $@ -Wl,--wrap,__divdi3
-Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3
-Wl,--start-group $(smm-objs) $(LIBGCC_FILE_NAME_smm) -Wl,--end-group
+ $(CC_smm) $(CFLAGS_smm) -nostdlib -r -o $@ -Wl,--wrap,__divdi3
-Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3
-Wl,--start-group $(smm-objs) $(LIBGCC_FILE_NAME_smm) -Wl,--end-group
$(obj)/cpu/x86/smm/smm_wrap: $(obj)/cpu/x86/smm/smm.o
$(src)/cpu/x86/smm/$(SMM_LDSCRIPT) $(obj)/ldoptions
$(CC_smm) $(SMM_LDFLAGS) -nostdlib -nostartfiles -static -o
$(obj)/cpu/x86/smm/smm.elf -T $(src)/cpu/x86/smm/$(SMM_LDSCRIPT)
$(obj)/cpu/x86/smm/smm.o
On 05/19/2014 09:51 AM, Sean McNeil wrote:
> I am not sure if this is only for CONFIG_ANY_TOOLCHAIN=y, but builds
> are not working again for me.
>
> This time I don't think it is some addition I am missing:
>
> The first problem seems to be that the wrong libgcc.a is found. I
> think toolchain.inc is missing flags:
>
> LIBGCC_FILE_NAME_$(1) = $(wildcard $(shell $(CC_$(2)) $(CFLAGS_$(2))
> -print-libgcc-file-name))
>
> Next, it would appear that the smm stage is still using 64-bit code:
>
> /usr/bin/ld: Relocatable linking with relocations from format
> elf32-i386 (build/arch/x86/lib/memcpy.smm.o) to format elf64-x86-64
> (build/cpu/x86/smm/smm.o) is not supported
>
> Looks like in src/cpu/x86/smm/Makefile.inc the CC_smm is not correct.
>
> $(obj)/cpu/x86/smm/smm.o: $$(smm-objs) $(LIBGCC_FILE_NAME_smm)
> $(CC_smm) $(LDFLAGS) -nostdlib -r -o $@ -Wl,--wrap,__divdi3
> -Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3
> -Wl,--start-group $(smm-objs) $(LIBGCC_FILE_NAME_smm) -Wl,--end-group
>
> Cheers,
> Sean
>
More information about the coreboot
mailing list