mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-08 05:43:53 +00:00
build: use GCC to link by default
When configuring GNU GCC as the C compiler, we usually use the GNU BFD linker directly to link by default. However, this complicates things because we also need to support LTO, which can only be done when linking is done via the C compiler, and we cannot change the linker later on if some other part of the build system wants to enable LTO. This change migrates the default choice of linker to GCC if the C compiler is GCC, in order to enable this use-case. This should have no impact on anything outside of the build system, as by default GCC merely acts as a wrapper around BFD. Change-Id: I40771be2b0571def67bbfde9e877e7629ec8cdaa Signed-off-by: Chris Kay <chris.kay@arm.com>
This commit is contained in:
parent
753da8ce45
commit
2f1c5e7eb1
7 changed files with 15 additions and 14 deletions
|
@ -30,9 +30,10 @@ else
|
|||
Q :=
|
||||
endif
|
||||
|
||||
LDFLAGS := --gc-sections -O1
|
||||
LDFLAGS := -Wl,--gc-sections -nostdlib
|
||||
|
||||
ifeq ($(DEBUG),1)
|
||||
LDFLAGS += -Map=$(MAPFILE)
|
||||
LDFLAGS += -Wl,-Map=$(MAPFILE)
|
||||
endif
|
||||
|
||||
ifeq (${ARM_ARCH_MINOR},0)
|
||||
|
|
|
@ -287,7 +287,7 @@ guess-llvm-clang-ar = $(shell $(1) --print-prog-name llvm-ar 2>$(nul))
|
|||
|
||||
guess-gnu-gcc-cpp = $(1) # Use the C compiler
|
||||
guess-gnu-gcc-as = $(1) # Use the C compiler
|
||||
guess-gnu-gcc-ld = $(if $(filter 1,$(ENABLE_LTO)),$(1),$(shell $(1) --print-prog-name ld.bfd 2>$(nul)))
|
||||
guess-gnu-gcc-ld = $(1) # Use the C compiler
|
||||
guess-gnu-gcc-oc = $(shell $(1) --print-prog-name objcopy 2>$(nul))
|
||||
guess-gnu-gcc-od = $(shell $(1) --print-prog-name objdump 2>$(nul))
|
||||
guess-gnu-gcc-ar = $(patsubst %$(notdir $(1)),%$(subst gcc,gcc-ar,$(notdir $(1))),$(1))
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
aarch32-cc-default := $(or $(CROSS_COMPILE),arm-none-eabi-)gcc
|
||||
aarch32-cpp-default := $(or $(CROSS_COMPILE),arm-none-eabi-)gcc
|
||||
aarch32-as-default := $(or $(CROSS_COMPILE),arm-none-eabi-)gcc
|
||||
aarch32-ld-default := $(or $(CROSS_COMPILE),arm-none-eabi-)ld.bfd
|
||||
aarch32-ld-default := $(or $(CROSS_COMPILE),arm-none-eabi-)gcc
|
||||
aarch32-oc-default := $(or $(CROSS_COMPILE),arm-none-eabi-)objcopy
|
||||
aarch32-od-default := $(or $(CROSS_COMPILE),arm-none-eabi-)objdump
|
||||
aarch32-ar-default := $(or $(CROSS_COMPILE),arm-none-eabi-)gcc-ar
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
aarch64-cc-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)gcc
|
||||
aarch64-cpp-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)gcc
|
||||
aarch64-as-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)gcc
|
||||
aarch64-ld-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)ld.bfd
|
||||
aarch64-ld-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)gcc
|
||||
aarch64-oc-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)objcopy
|
||||
aarch64-od-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)objdump
|
||||
aarch64-ar-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)gcc-ar
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
rk3399-m0-cc-default := $(or $(M0_CROSS_COMPILE),arm-none-eabi-)gcc
|
||||
rk3399-m0-cpp-default := $(or $(M0_CROSS_COMPILE),arm-none-eabi-)gcc
|
||||
rk3399-m0-as-default := $(or $(M0_CROSS_COMPILE),arm-none-eabi-)gcc
|
||||
rk3399-m0-ld-default := $(or $(M0_CROSS_COMPILE),arm-none-eabi-)ld.bfd
|
||||
rk3399-m0-ld-default := $(or $(M0_CROSS_COMPILE),arm-none-eabi-)gcc
|
||||
rk3399-m0-oc-default := $(or $(M0_CROSS_COMPILE),arm-none-eabi-)objcopy
|
||||
rk3399-m0-od-default := $(or $(M0_CROSS_COMPILE),arm-none-eabi-)objdump
|
||||
rk3399-m0-ar-default := $(or $(M0_CROSS_COMPILE),arm-none-eabi-)gcc-ar
|
||||
|
|
|
@ -89,19 +89,19 @@ all: $(OUTPUT_FILE_SA0) $(OUTPUT_FILE_SA6)
|
|||
# Linker
|
||||
###################################################
|
||||
$(OUTPUT_FILE_SA0) : $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0)
|
||||
$(aarch64-ld) $(OBJ_FILE_SA0) \
|
||||
$(aarch64-ld) $(OBJ_FILE_SA0) -nostdlib \
|
||||
-T $(MEMORY_DEF_SA0) \
|
||||
-o $(OUTPUT_FILE_SA0) \
|
||||
-Map $(FILE_NAME_SA0).map \
|
||||
-Wl,-Map $(FILE_NAME_SA0).map \
|
||||
|
||||
$(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).srec
|
||||
$(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).bin
|
||||
|
||||
$(OUTPUT_FILE_SA6) : $(MEMORY_DEF_SA6) $(OBJ_FILE_SA6)
|
||||
$(aarch64-ld) $(OBJ_FILE_SA6) \
|
||||
$(aarch64-ld) $(OBJ_FILE_SA6) -nostdlib \
|
||||
-T $(MEMORY_DEF_SA6) \
|
||||
-o $(OUTPUT_FILE_SA6) \
|
||||
-Map $(FILE_NAME_SA6).map \
|
||||
-Wl,-Map $(FILE_NAME_SA6).map \
|
||||
|
||||
$(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).srec
|
||||
$(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).bin
|
||||
|
|
|
@ -86,19 +86,19 @@ all: $(OUTPUT_FILE_SA0) $(OUTPUT_FILE_SA6)
|
|||
# Linker
|
||||
###################################################
|
||||
$(OUTPUT_FILE_SA0) : $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0)
|
||||
$(aarch64-ld) $(OBJ_FILE_SA0) \
|
||||
$(aarch64-ld) $(OBJ_FILE_SA0) -nostdlib \
|
||||
-T $(MEMORY_DEF_SA0) \
|
||||
-o $(OUTPUT_FILE_SA0) \
|
||||
-Map $(FILE_NAME_SA0).map \
|
||||
-Wl,-Map $(FILE_NAME_SA0).map \
|
||||
|
||||
$(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).srec
|
||||
$(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).bin
|
||||
|
||||
$(OUTPUT_FILE_SA6) : $(MEMORY_DEF_SA6) $(OBJ_FILE_SA6)
|
||||
$(aarch64-ld) $(OBJ_FILE_SA6) \
|
||||
$(aarch64-ld) $(OBJ_FILE_SA6) -nostdlib \
|
||||
-T $(MEMORY_DEF_SA6) \
|
||||
-o $(OUTPUT_FILE_SA6) \
|
||||
-Map $(FILE_NAME_SA6).map \
|
||||
-Wl,-Map $(FILE_NAME_SA6).map \
|
||||
|
||||
$(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).srec
|
||||
$(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).bin
|
||||
|
|
Loading…
Add table
Reference in a new issue