mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 01:24:27 +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 :=
|
Q :=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LDFLAGS := --gc-sections -O1
|
LDFLAGS := -Wl,--gc-sections -nostdlib
|
||||||
|
|
||||||
ifeq ($(DEBUG),1)
|
ifeq ($(DEBUG),1)
|
||||||
LDFLAGS += -Map=$(MAPFILE)
|
LDFLAGS += -Wl,-Map=$(MAPFILE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (${ARM_ARCH_MINOR},0)
|
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-cpp = $(1) # Use the C compiler
|
||||||
guess-gnu-gcc-as = $(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-oc = $(shell $(1) --print-prog-name objcopy 2>$(nul))
|
||||||
guess-gnu-gcc-od = $(shell $(1) --print-prog-name objdump 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))
|
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-cc-default := $(or $(CROSS_COMPILE),arm-none-eabi-)gcc
|
||||||
aarch32-cpp-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-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-oc-default := $(or $(CROSS_COMPILE),arm-none-eabi-)objcopy
|
||||||
aarch32-od-default := $(or $(CROSS_COMPILE),arm-none-eabi-)objdump
|
aarch32-od-default := $(or $(CROSS_COMPILE),arm-none-eabi-)objdump
|
||||||
aarch32-ar-default := $(or $(CROSS_COMPILE),arm-none-eabi-)gcc-ar
|
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-cc-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)gcc
|
||||||
aarch64-cpp-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-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-oc-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)objcopy
|
||||||
aarch64-od-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)objdump
|
aarch64-od-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)objdump
|
||||||
aarch64-ar-default := $(or $(CROSS_COMPILE),aarch64-none-elf-)gcc-ar
|
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-cc-default := $(or $(M0_CROSS_COMPILE),arm-none-eabi-)gcc
|
||||||
rk3399-m0-cpp-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-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-oc-default := $(or $(M0_CROSS_COMPILE),arm-none-eabi-)objcopy
|
||||||
rk3399-m0-od-default := $(or $(M0_CROSS_COMPILE),arm-none-eabi-)objdump
|
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
|
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
|
# Linker
|
||||||
###################################################
|
###################################################
|
||||||
$(OUTPUT_FILE_SA0) : $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0)
|
$(OUTPUT_FILE_SA0) : $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0)
|
||||||
$(aarch64-ld) $(OBJ_FILE_SA0) \
|
$(aarch64-ld) $(OBJ_FILE_SA0) -nostdlib \
|
||||||
-T $(MEMORY_DEF_SA0) \
|
-T $(MEMORY_DEF_SA0) \
|
||||||
-o $(OUTPUT_FILE_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 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
|
$(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)
|
$(OUTPUT_FILE_SA6) : $(MEMORY_DEF_SA6) $(OBJ_FILE_SA6)
|
||||||
$(aarch64-ld) $(OBJ_FILE_SA6) \
|
$(aarch64-ld) $(OBJ_FILE_SA6) -nostdlib \
|
||||||
-T $(MEMORY_DEF_SA6) \
|
-T $(MEMORY_DEF_SA6) \
|
||||||
-o $(OUTPUT_FILE_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 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
|
$(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
|
# Linker
|
||||||
###################################################
|
###################################################
|
||||||
$(OUTPUT_FILE_SA0) : $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0)
|
$(OUTPUT_FILE_SA0) : $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0)
|
||||||
$(aarch64-ld) $(OBJ_FILE_SA0) \
|
$(aarch64-ld) $(OBJ_FILE_SA0) -nostdlib \
|
||||||
-T $(MEMORY_DEF_SA0) \
|
-T $(MEMORY_DEF_SA0) \
|
||||||
-o $(OUTPUT_FILE_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 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
|
$(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)
|
$(OUTPUT_FILE_SA6) : $(MEMORY_DEF_SA6) $(OBJ_FILE_SA6)
|
||||||
$(aarch64-ld) $(OBJ_FILE_SA6) \
|
$(aarch64-ld) $(OBJ_FILE_SA6) -nostdlib \
|
||||||
-T $(MEMORY_DEF_SA6) \
|
-T $(MEMORY_DEF_SA6) \
|
||||||
-o $(OUTPUT_FILE_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 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
|
$(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