<p>Hoernchen has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/simtrace2/+/25849">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">clang build support<br><br>Supposed to be used with https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm<br>+ distro provided binutils-arm-none-eabi package, might provide better and more reliable<br>binary sizes, especially for the bootloader.<br><br>Just run USE_CLANG=1 make<br><br>Change-Id: I1a19f40d44797efad5c46121e73115ed738a095b<br>---<br>M firmware/Makefile<br>M firmware/atmel_softpack_libraries/libchip_sam3s/source/exceptions.c<br>2 files changed, 30 insertions(+), 11 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/49/25849/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/firmware/Makefile b/firmware/Makefile</span><br><span>index 0364166..bfe2c9d 100644</span><br><span>--- a/firmware/Makefile</span><br><span>+++ b/firmware/Makefile</span><br><span>@@ -73,12 +73,20 @@</span><br><span> # Tool suffix when cross-compiling</span><br><span> CROSS_COMPILE = arm-none-eabi-</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-LIBS = -Wl,--start-group -lgcc -Wl,--end-group -nostdlib</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-# Compilation tools</span><br><span style="color: hsl(120, 100%, 40%);">+USE_CLANG ?= 0</span><br><span style="color: hsl(120, 100%, 40%);">+ifneq ("$(USE_CLANG)","0")</span><br><span style="color: hsl(120, 100%, 40%);">+# --target=thumbv7m-none-eabi</span><br><span style="color: hsl(120, 100%, 40%);">+CC = clang</span><br><span style="color: hsl(120, 100%, 40%);">+LD = ld.lld</span><br><span style="color: hsl(120, 100%, 40%);">+SIZE = llvm-size</span><br><span style="color: hsl(120, 100%, 40%);">+LIBS = -nostdlib</span><br><span style="color: hsl(120, 100%, 40%);">+else</span><br><span> CC = $(CROSS_COMPILE)gcc</span><br><span> LD = $(CROSS_COMPILE)ld</span><br><span> SIZE = $(CROSS_COMPILE)size</span><br><span style="color: hsl(120, 100%, 40%);">+LIBS = -Wl,--start-group -lgcc -Wl,--end-group -nostdlib</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> STRIP = $(CROSS_COMPILE)strip</span><br><span> OBJCOPY = $(CROSS_COMPILE)objcopy</span><br><span> GDB = $(CROSS_COMPILE)gdb</span><br><span>@@ -139,7 +147,11 @@</span><br><span> #CFLAGS+=-DUSB_NO_DEBUG=1</span><br><span> </span><br><span> # Optimization level, put in comment for debugging</span><br><span style="color: hsl(120, 100%, 40%);">+ifneq ("$(USE_CLANG)","0")</span><br><span style="color: hsl(120, 100%, 40%);">+OPTIMIZATION ?= -Oz</span><br><span style="color: hsl(120, 100%, 40%);">+else</span><br><span> OPTIMIZATION ?= -Os</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span> </span><br><span> # Flags</span><br><span> INCLUDES_USB = -I$(AT91LIB)/usb/include -I$(AT91LIB)</span><br><span>@@ -153,6 +165,11 @@</span><br><span> INCLUDES += -Isrc_simtrace -Iinclude</span><br><span> INCLUDES += -Iapps/$(APP)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ifneq ("$(USE_CLANG)","0")</span><br><span style="color: hsl(120, 100%, 40%);">+CFLAGS += -Wno-unknown-warning-option -Wno-empty-body -fno-exceptions -fno-unwind-tables --config armv7em_soft_nofp_nosys</span><br><span style="color: hsl(120, 100%, 40%);">+else</span><br><span style="color: hsl(120, 100%, 40%);">+CFLAGS += -Wno-suggest-attribute=noreturn --param max-inline-insns-single=500</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span> CFLAGS += -Wall -Wchar-subscripts -Wcomment -Wimplicit-int -Wformat=2</span><br><span> CFLAGS += -Werror-implicit-function-declaration -Wmain -Wparentheses</span><br><span> CFLAGS += -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs #-Wunused</span><br><span>@@ -165,16 +182,16 @@</span><br><span> CFLAGS += -Wunreachable-code</span><br><span> #CFLAGS += -Wcast-align</span><br><span> #CFLAGS += -std=c11</span><br><span style="color: hsl(0, 100%, 40%);">-CFLAGS += -Wmissing-noreturn</span><br><span style="color: hsl(120, 100%, 40%);">+#CFLAGS += -Wmissing-noreturn</span><br><span> #CFLAGS += -Wconversion</span><br><span> CFLAGS += -Wno-unused-but-set-variable -Wno-unused-variable</span><br><span style="color: hsl(0, 100%, 40%);">-CFLAGS += -Wno-suggest-attribute=noreturn</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> # -mlong-calls  -Wall</span><br><span> #CFLAGS += -save-temps -fverbose-asm</span><br><span> #CFLAGS += -Wa,-a,-ad</span><br><span> CFLAGS += -D__ARM -fno-builtin</span><br><span style="color: hsl(0, 100%, 40%);">-CFLAGS += --param max-inline-insns-single=500 -mcpu=cortex-m3 -mthumb # -mfix-cortex-m3-ldrd</span><br><span style="color: hsl(120, 100%, 40%);">+CFLAGS += -mcpu=cortex-m3 -mthumb # -mfix-cortex-m3-ldrd</span><br><span> CFLAGS += -ffunction-sections -g $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -DTRACE_LEVEL=$(TRACE_LEVEL) -DALLOW_PEER_ERASE=$(ALLOW_PEER_ERASE)</span><br><span> CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"</span><br><span> CFLAGS += -DBOARD=\"$(BOARD)\" -DBOARD_$(BOARD)</span><br><span>@@ -188,7 +205,10 @@</span><br><span> endif</span><br><span> </span><br><span> ASFLAGS = -mcpu=cortex-m3 -mthumb -Wall -g $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D__ASSEMBLY__</span><br><span style="color: hsl(0, 100%, 40%);">-LDFLAGS = -mcpu=cortex-m3 -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=ResetException -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--print-memory-usage -Wl,--no-undefined $(LIB)</span><br><span style="color: hsl(120, 100%, 40%);">+LDFLAGS = -mcpu=cortex-m3 -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=ResetException -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--no-undefined $(LIB)</span><br><span style="color: hsl(120, 100%, 40%);">+ifeq ("$(USE_CLANG)","0")</span><br><span style="color: hsl(120, 100%, 40%);">+LDFLAGS += -Wl,--warn-section-align -Wl,--print-memory-usage</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span> #LD_OPTIONAL=-Wl,--print-gc-sections -Wl,--stats</span><br><span> </span><br><span> # Append BIN directories to output filename</span><br><span>@@ -227,14 +247,14 @@</span><br><span> ASM_OBJECTS_$(1) = $(addprefix $(OBJ)/$(1)_, $(ASM_OBJECTS))</span><br><span> </span><br><span> $(1): $$(ASM_OBJECTS_$(1)) $$(C_OBJECTS_$(1))</span><br><span style="color: hsl(0, 100%, 40%);">- $(SILENT)$(CC) $(LDFLAGS) $(LD_OPTIONAL) -T"libboard/common/resources/$(CHIP)/$$@.ld" -Wl,-Map,$(OUTPUT)-$$@.map -o $(OUTPUT)-$$@.elf $$^ $(LIBS)</span><br><span style="color: hsl(120, 100%, 40%);">+   $(SILENT)$(CC) $(CFLAGS) $(LDFLAGS) $(LD_OPTIONAL) -T"libboard/common/resources/$(CHIP)/$$@.ld" -Wl,-Map,$(OUTPUT)-$$@.map -o $(OUTPUT)-$$@.elf $$^ $(LIBS)</span><br><span>        $(SILENT)$(NM) $(OUTPUT)-$$@.elf >$(OUTPUT)-$$@.elf.txt</span><br><span>   $(SILENT)$(OBJCOPY) -O binary $(OUTPUT)-$$@.elf $(OUTPUT)-$$@.bin</span><br><span>    $(SILENT)$(SIZE) $$^ $(OUTPUT)-$$@.elf</span><br><span> </span><br><span> $$(C_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.c Makefile $(OBJ) $(BIN)</span><br><span>        @echo [COMPILING $$<]</span><br><span style="color: hsl(0, 100%, 40%);">-        $(SILENT)$(CC) $(CFLAGS) -DENVIRONMENT_$(1) -DENVIRONMENT=\"$(1)\" -Wa,-ahlms=$(BIN)/$$*.lst -c -o $$@ $$<</span><br><span style="color: hsl(120, 100%, 40%);">+       $(SILENT)$(CC) $(CFLAGS) -DENVIRONMENT_$(1) -DENVIRONMENT=\"$(1)\" -c -o $$@ $$<</span><br><span> </span><br><span> $$(ASM_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.S Makefile $(OBJ) $(BIN)</span><br><span>       @echo [ASSEMBLING $$@]</span><br><span>diff --git a/firmware/atmel_softpack_libraries/libchip_sam3s/source/exceptions.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/exceptions.c</span><br><span>index 4799eae..7496f3a 100644</span><br><span>--- a/firmware/atmel_softpack_libraries/libchip_sam3s/source/exceptions.c</span><br><span>+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/exceptions.c</span><br><span>@@ -151,8 +151,7 @@</span><br><span>                " mrseq r0, msp            \n"</span><br><span>             " mrsne r0, psp            \n"</span><br><span>             //" ldr r1, [r0, #24]      \n"</span><br><span style="color: hsl(0, 100%, 40%);">-                " b hard_fault_handler_c\n"</span><br><span style="color: hsl(0, 100%, 40%);">-           ".syntax divided   \n");</span><br><span style="color: hsl(120, 100%, 40%);">+            " b hard_fault_handler_c\n");</span><br><span> }</span><br><span> </span><br><span> /**</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/simtrace2/+/25849">change 25849</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/simtrace2/+/25849"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: simtrace2 </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I1a19f40d44797efad5c46121e73115ed738a095b </div>
<div style="display:none"> Gerrit-Change-Number: 25849 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Hoernchen <ewild@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>