mirror of https://github.com/wolfSSL/wolfBoot.git
Use LLVM LDD with clang
parent
9778552534
commit
8572e207f2
4
Makefile
4
Makefile
|
|
@ -42,6 +42,10 @@ OBJS:= \
|
|||
./src/libwolfboot.o \
|
||||
./hal/hal.o
|
||||
|
||||
ifeq ($(USE_CLANG),1)
|
||||
OBJS+=./src/clang_sections.o
|
||||
endif
|
||||
|
||||
ifeq ($(WOLFCRYPT_TZ_PSA),1)
|
||||
OBJS+=./src/dice/dice.o
|
||||
endif
|
||||
|
|
|
|||
6
arch.mk
6
arch.mk
|
|
@ -1288,9 +1288,7 @@ ifeq ($(USE_CLANG),1)
|
|||
CLANG_NEWLIB_INCLUDE?=$(abspath $(dir $(CLANG_LIBC_A))/../include)
|
||||
|
||||
CC=$(CLANG_DRIVER)
|
||||
# Keep clang for compilation, but use the GNU linker driver so linker-script
|
||||
# LMAs for RAM sections are preserved and objcopy does not emit sparse images.
|
||||
LD=$(CLANG_GCC_NAME)
|
||||
LD=$(CLANG_DRIVER) -fuse-ld=lld
|
||||
AS=$(CLANG_DRIVER)
|
||||
AR=$(CROSS_COMPILE)ar
|
||||
OBJCOPY?=$(CROSS_COMPILE)objcopy
|
||||
|
|
@ -1300,7 +1298,7 @@ ifeq ($(USE_CLANG),1)
|
|||
CFLAGS+=-DWOLFSSL_NO_ATOMIC -DWOLFSSL_NO_ATOMICS
|
||||
CFLAGS+=-Wno-unknown-attributes -Wno-error=unknown-attributes
|
||||
CFLAGS+=-fno-unwind-tables -fno-asynchronous-unwind-tables
|
||||
LSCRIPT_FLAGS+=-T $(abspath $(WOLFBOOT_ROOT)/hal/clang-discard.ld)
|
||||
LDFLAGS+=-nostdlib
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GCC),1)
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
SECTIONS
|
||||
{
|
||||
/DISCARD/ :
|
||||
{
|
||||
*(.ARM.extab* .gnu.linkonce.armextab.*)
|
||||
*(.eh_frame* .gcc_except_table*)
|
||||
*(.preinit_array*)
|
||||
*(.init_array*)
|
||||
*(.fini_array*)
|
||||
*(.ctors*)
|
||||
*(.dtors*)
|
||||
*(.jcr*)
|
||||
}
|
||||
}
|
||||
|
|
@ -30,7 +30,7 @@ SECTIONS
|
|||
*(.ARM.exidx*)
|
||||
} > FLASH
|
||||
|
||||
.gnu.sgstubs :
|
||||
.gnu.sgstubs ORIGIN(FLASH_NSC) :
|
||||
{
|
||||
. += 0x400;
|
||||
. = ALIGN(4);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ SECTIONS
|
|||
*(.ARM.exidx*)
|
||||
} > FLASH
|
||||
|
||||
.gnu.sgstubs :
|
||||
.gnu.sgstubs ORIGIN(FLASH_NSC) :
|
||||
{
|
||||
. += 0x400;
|
||||
. = ALIGN(4);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ SECTIONS
|
|||
*(.ARM.exidx*)
|
||||
} > FLASH
|
||||
|
||||
.gnu.sgstubs :
|
||||
.gnu.sgstubs ORIGIN(FLASH_NSC) :
|
||||
{
|
||||
. += 0x400;
|
||||
. = ALIGN(4);
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ SECTIONS
|
|||
*(.ARM.exidx*)
|
||||
} > FLASH
|
||||
|
||||
.gnu.sgstubs :
|
||||
.gnu.sgstubs ORIGIN(FLASH_NSC) :
|
||||
{
|
||||
. += 0x400;
|
||||
. = ALIGN(4);
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ SECTIONS
|
|||
*(.ARM.exidx*)
|
||||
} > FLASH
|
||||
|
||||
.gnu.sgstubs :
|
||||
.gnu.sgstubs ORIGIN(FLASH_NSC) :
|
||||
{
|
||||
. += 0x400;
|
||||
. = ALIGN(4);
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ SECTIONS
|
|||
. = ALIGN(4);
|
||||
} > FLASH
|
||||
|
||||
.gnu.sgstubs :
|
||||
.gnu.sgstubs ORIGIN(FLASH_NSC) :
|
||||
{
|
||||
*(.gnu.sgstubs*) /* Secure Gateway stubs */
|
||||
. = ALIGN(4);
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ SECTIONS
|
|||
*(.ARM.exidx*)
|
||||
} > FLASH
|
||||
|
||||
.gnu.sgstubs :
|
||||
.gnu.sgstubs ORIGIN(FLASH_NSC) :
|
||||
{
|
||||
. = ALIGN(32);
|
||||
*(.gnu.sgstubs*) /* Secure Gateway stubs */
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ SECTIONS
|
|||
*(.ARM.exidx*)
|
||||
} > FLASH
|
||||
|
||||
.gnu.sgstubs :
|
||||
.gnu.sgstubs ORIGIN(FLASH_NSC) :
|
||||
{
|
||||
. += 0x400;
|
||||
. = ALIGN(4);
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ SECTIONS
|
|||
*(.ARM.exidx*)
|
||||
} > FLASH
|
||||
|
||||
.gnu.sgstubs :
|
||||
.gnu.sgstubs ORIGIN(FLASH_NSC) :
|
||||
{
|
||||
. += 0x400;
|
||||
. = ALIGN(4);
|
||||
|
|
|
|||
|
|
@ -102,10 +102,9 @@ LDFLAGS+=-T $(LSCRIPT) -Wl,-gc-sections -Wl,-Map=image.map -nostartfiles
|
|||
|
||||
# Setup default objcopy flags
|
||||
OBJCOPY_FLAGS+=--gap-fill $(FILL_BYTE)
|
||||
OBJCOPY_IMAGE_FLAGS?=
|
||||
|
||||
ifeq ($(USE_CLANG),1)
|
||||
APP_OBJS+=clang_sections.o
|
||||
APP_OBJS+=../src/clang_sections.o
|
||||
endif
|
||||
|
||||
ifeq ($(DEBUG_UART),1)
|
||||
|
|
@ -925,15 +924,15 @@ delta-extra-data:LDFLAGS=-Wl,-Map=image.map
|
|||
|
||||
image.bin: image.elf
|
||||
@echo "\t[BIN] $@"
|
||||
$(Q)$(OBJCOPY) $(OBJCOPY_FLAGS) $(OBJCOPY_IMAGE_FLAGS) -O binary $^ $@
|
||||
$(Q)$(OBJCOPY) $(OBJCOPY_FLAGS) -O binary $^ $@
|
||||
|
||||
image.hex: image.elf
|
||||
@echo "\t[HEX] $@"
|
||||
$(Q)$(OBJCOPY) $(OBJCOPY_FLAGS) $(OBJCOPY_IMAGE_FLAGS) -O ihex $^ $@
|
||||
$(Q)$(OBJCOPY) $(OBJCOPY_FLAGS) -O ihex $^ $@
|
||||
|
||||
image.srec: image.elf
|
||||
@echo "\t[SREC] $@"
|
||||
$(Q)$(OBJCOPY) $(OBJCOPY_FLAGS) $(OBJCOPY_IMAGE_FLAGS) -O srec $^ $@
|
||||
$(Q)$(OBJCOPY) $(OBJCOPY_FLAGS) -O srec $^ $@
|
||||
|
||||
APP_OBJS := $(patsubst $(WOLFBOOT_LIB_WOLFSSL)/%, \
|
||||
$(WOLFSSL_LOCAL_OBJDIR)/%, $(APP_OBJS))
|
||||
|
|
@ -943,7 +942,7 @@ ifeq ($(ELF_FLASH_SCATTER),1)
|
|||
SQUASHELF_TOOL = ../tools/squashelf/squashelf
|
||||
image-orig.elf: $(APP_OBJS) $(LSCRIPT)
|
||||
@echo "\t[LD] $@"
|
||||
$(Q)$(LD) $(LDFLAGS) $(LSCRIPT_FLAGS) $(APP_OBJS) $(LIBS) $(OUTPUT_FLAG) $@
|
||||
$(Q)$(LD) $(LDFLAGS) $(APP_OBJS) $(LIBS) $(OUTPUT_FLAG) $@
|
||||
|
||||
image.elf: image-orig.elf
|
||||
@echo "\t[SQUASHELF] $@"
|
||||
|
|
@ -952,7 +951,7 @@ else
|
|||
# Default behavior when ELF_FLASH_SCATTER is not set
|
||||
image.elf: $(APP_OBJS) $(LSCRIPT)
|
||||
@echo "\t[LD] $@"
|
||||
$(Q)$(LD) $(LDFLAGS) $(LSCRIPT_FLAGS) $(APP_OBJS) $(LIBS) $(OUTPUT_FLAG) $@
|
||||
$(Q)$(LD) $(LDFLAGS) $(APP_OBJS) $(LIBS) $(OUTPUT_FLAG) $@
|
||||
endif
|
||||
|
||||
standalone: image.bin
|
||||
|
|
|
|||
Loading…
Reference in New Issue