12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# These are the functions which clang needs when it is targeting a previous 2868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# version of the OS. The issue is that the backend may use functions which were 3868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# not present in the libgcc that shipped on the platform. In such cases, we link 4868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# with a version of the library which contains private_extern definitions of all 5868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# the extra functions which might be referenced. 6868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 7868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverDescription := Static runtime libraries for embedded clang/Darwin 8868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 92d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# A function that ensures we don't try to build for architectures that we 102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# don't have working toolchains for. 112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesCheckArches = \ 122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines $(shell \ 132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines result=""; \ 142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines for arch in $(1); do \ 152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if $(CC) -arch $$arch -c \ 162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines -integrated-as \ 172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines $(ProjSrcRoot)/make/platform/clang_macho_embedded_test_input.c \ 182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines -o /dev/null > /dev/null 2> /dev/null; then \ 192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines result="$$result$$arch "; \ 202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines else \ 212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines printf 1>&2 \ 222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines "warning: clang_macho_embedded.mk: dropping arch '$$arch' from lib '$(2)'\n"; \ 232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines fi; \ 242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines done; \ 252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines echo $$result) 262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 27868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverXCRun = \ 28868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover $(shell \ 29868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover result=`xcrun -find $(1) 2> /dev/null`; \ 30868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover if [ "$$?" != "0" ]; then result=$(1); fi; \ 31868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover echo $$result) 32868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 33868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover### 34868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 35868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCC := $(call XCRun,clang) 36868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverAR := $(call XCRun,ar) 37868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverRANLIB := $(call XCRun,ranlib) 38868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverSTRIP := $(call XCRun,strip) 39868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverLIPO := $(call XCRun,lipo) 40868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverDSYMUTIL := $(call XCRun,dsymutil) 41868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 42868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverConfigs := 43868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverUniversalArchs := 44868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 45868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# Soft-float version of the runtime. No floating-point instructions will be used 46868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# and the ABI (out of necessity) passes floating values in normal registers: 47868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# non-VFP variant of the AAPCS. 482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.soft_static := $(call CheckArches,armv6m armv7m armv7em armv7,soft_static) 492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesConfigs += $(if $(UniversalArchs.soft_static),soft_static) 50868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 51868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# Hard-float version of the runtime. On ARM VFP instructions and registers are 52868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# allowed, and floating point values get passed in them. VFP variant of the 53868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# AAPCS. 542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.hard_static := $(call CheckArches,armv7em armv7 i386 x86_64,hard_static) 552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesConfigs += $(if $(UniversalArchs.hard_static),hard_static) 56868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.soft_pic := $(call CheckArches,armv6m armv7m armv7em armv7,soft_pic) 582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesConfigs += $(if $(UniversalArchs.soft_pic),soft_pic) 59868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesUniversalArchs.hard_pic := $(call CheckArches,armv7em armv7 i386 x86_64,hard_pic) 612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen HinesConfigs += $(if $(UniversalArchs.hard_pic),hard_pic) 62868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 63868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS := -Wall -Werror -Oz -fomit-frame-pointer -ffreestanding 64868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 65868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverPIC_CFLAGS := -fPIC 66868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverSTATIC_CFLAGS := -static 67868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 68868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS_SOFT := -mfloat-abi=soft 69868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS_HARD := -mfloat-abi=hard 70868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 71868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS_ARMV7 := -target thumbv7-apple-darwin-eabi 72868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS_I386 := -march=pentium 73868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 74868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.soft_static := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_SOFT) 75868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.hard_static := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_HARD) 76868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.soft_pic := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_SOFT) 77868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.hard_pic := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_HARD) 78868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 79868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.soft_static.armv7 := $(CFLAGS.soft_static) $(CFLAGS_ARMV7) 80868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.hard_static.armv7 := $(CFLAGS.hard_static) $(CFLAGS_ARMV7) 81868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.soft_pic.armv7 := $(CFLAGS.soft_pic) $(CFLAGS_ARMV7) 82868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.hard_pic.armv7 := $(CFLAGS.hard_pic) $(CFLAGS_ARMV7) 83868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 84868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# x86 platforms ignore -mfloat-abi options and complain about doing so. Despite 85868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# this they're hard-float. 86868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.hard_static.i386 := $(CFLAGS) $(STATIC_CFLAGS) $(CFLAGS_I386) 87868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.hard_pic.i386 := $(CFLAGS) $(PIC_CFLAGS) $(CFLAGS_I386) 88868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.hard_static.x86_64 := $(CFLAGS) $(STATIC_CFLAGS) 89868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCFLAGS.hard_pic.x86_64 := $(CFLAGS) $(PIC_CFLAGS) 90868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 91868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# Functions not wanted: 92868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# + eprintf is obsolete anyway 93868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# + *vfp: designed for Thumb1 CPUs with VFPv2 94868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 95868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverCOMMON_FUNCTIONS := \ 96868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover absvdi2 \ 97868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover absvsi2 \ 98868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover addvdi3 \ 99868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover addvsi3 \ 100868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover ashldi3 \ 101868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover ashrdi3 \ 102868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover bswapdi2 \ 103868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover bswapsi2 \ 104868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover clzdi2 \ 105868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover clzsi2 \ 106868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover cmpdi2 \ 107868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover ctzdi2 \ 108868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover ctzsi2 \ 109868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover divdc3 \ 110868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover divdi3 \ 111868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover divsc3 \ 112868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover divmodsi4 \ 113868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover udivmodsi4 \ 114868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover do_global_dtors \ 115868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover ffsdi2 \ 116868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover fixdfdi \ 117868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover fixsfdi \ 118868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover fixunsdfdi \ 119868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover fixunsdfsi \ 120868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover fixunssfdi \ 121868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover fixunssfsi \ 122868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover floatdidf \ 123868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover floatdisf \ 124868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover floatundidf \ 125868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover floatundisf \ 126868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover gcc_bcmp \ 127868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover lshrdi3 \ 128868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover moddi3 \ 129868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover muldc3 \ 130868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover muldi3 \ 131868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover mulsc3 \ 132868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover mulvdi3 \ 133868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover mulvsi3 \ 134868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover negdi2 \ 135868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover negvdi2 \ 136868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover negvsi2 \ 137868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover paritydi2 \ 138868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover paritysi2 \ 139868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover popcountdi2 \ 140868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover popcountsi2 \ 141868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover powidf2 \ 142868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover powisf2 \ 143868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover subvdi3 \ 144868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover subvsi3 \ 145868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover ucmpdi2 \ 146868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover udiv_w_sdiv \ 147868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover udivdi3 \ 148868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover udivmoddi4 \ 149868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover umoddi3 \ 150868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover adddf3 \ 151868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover addsf3 \ 152868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover cmpdf2 \ 153868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover cmpsf2 \ 154868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover div0 \ 155868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover divdf3 \ 156868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover divsf3 \ 157868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover divsi3 \ 158868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover extendsfdf2 \ 159868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover ffssi2 \ 160868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover fixdfsi \ 161868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover fixsfsi \ 162868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover floatsidf \ 163868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover floatsisf \ 164868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover floatunsidf \ 165868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover floatunsisf \ 166868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover comparedf2 \ 167868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover comparesf2 \ 168868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover modsi3 \ 169868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover muldf3 \ 170868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover mulsf3 \ 171868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover negdf2 \ 172868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover negsf2 \ 173868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover subdf3 \ 174868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover subsf3 \ 175868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover truncdfsf2 \ 176868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover udivsi3 \ 177868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover umodsi3 \ 178868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover unorddf2 \ 179868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover unordsf2 180868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 181868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverARM_FUNCTIONS := \ 182868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_cdcmpeq \ 183868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_cdrcmple \ 184868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_cfcmpeq \ 185868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_cfrcmple \ 186868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_dcmpeq \ 187868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_dcmpge \ 188868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_dcmpgt \ 189868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_dcmple \ 190868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_dcmplt \ 191868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_drsub \ 192868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_fcmpeq \ 193868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_fcmpge \ 194868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_fcmpgt \ 195868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_fcmple \ 196868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_fcmplt \ 197868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_frsub \ 198868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_idivmod \ 199868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_uidivmod \ 200868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 201868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# ARM Assembly implementation which requires Thumb2 (i.e. won't work on v6M). 202868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverTHUMB2_FUNCTIONS := \ 203868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover switch16 \ 204868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover switch32 \ 205868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover switch8 \ 206868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover switchu8 \ 2072d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_add_4 \ 2082d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_sub_4 \ 2092d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_and_4 \ 2102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_or_4 \ 2112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_xor_4 \ 2122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_nand_4 \ 2132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_max_4 \ 2142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_umax_4 \ 2152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_min_4 \ 2162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_umin_4 \ 2172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_add_8 \ 2182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_sub_8 \ 2192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_and_8 \ 2202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_or_8 \ 2212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_xor_8 \ 2222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_nand_8 \ 2232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_max_8 \ 2242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_umax_8 \ 2252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_min_8 \ 2262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sync_fetch_and_umin_8 227868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 228868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverI386_FUNCTIONS := \ 229868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover i686.get_pc_thunk.eax \ 230868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover i686.get_pc_thunk.ebp \ 231868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover i686.get_pc_thunk.ebx \ 232868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover i686.get_pc_thunk.ecx \ 233868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover i686.get_pc_thunk.edi \ 234868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover i686.get_pc_thunk.edx \ 235868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover i686.get_pc_thunk.esi 236868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 237868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# FIXME: Currently, compiler-rt is missing implementations for a number of the 238868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover# functions. Filter them out for now. 239868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverMISSING_FUNCTIONS := \ 240868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover cmpdf2 cmpsf2 div0 \ 241868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover ffssi2 \ 242868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover udiv_w_sdiv unorddf2 unordsf2 bswapdi2 \ 243868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover bswapsi2 \ 244868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover gcc_bcmp \ 245868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover do_global_dtors \ 246868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover i686.get_pc_thunk.eax i686.get_pc_thunk.ebp i686.get_pc_thunk.ebx \ 247868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover i686.get_pc_thunk.ecx i686.get_pc_thunk.edi i686.get_pc_thunk.edx \ 248868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover i686.get_pc_thunk.esi \ 249868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_cdcmpeq aeabi_cdrcmple aeabi_cfcmpeq aeabi_cfrcmple aeabi_dcmpeq \ 250868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_dcmpge aeabi_dcmpgt aeabi_dcmple aeabi_dcmplt aeabi_drsub \ 251868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_fcmpeq \ aeabi_fcmpge aeabi_fcmpgt aeabi_fcmple aeabi_fcmplt \ 252868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover aeabi_frsub aeabi_idivmod aeabi_uidivmod 253868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 254868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS_ARMV6M := $(COMMON_FUNCTIONS) $(ARM_FUNCTIONS) 255868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS_ARM_ALL := $(COMMON_FUNCTIONS) $(ARM_FUNCTIONS) $(THUMB2_FUNCTIONS) 256868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS_I386 := $(COMMON_FUNCTIONS) $(I386_FUNCTIONS) 257868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS_X86_64 := $(COMMON_FUNCTIONS) 258868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 259868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS_ARMV6M := \ 260868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_ARMV6M)) 261868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS_ARM_ALL := \ 262868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_ARM_ALL)) 263868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS_I386 := \ 264868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_I386)) 265868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS_X86_64 := \ 266868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover $(filter-out $(MISSING_FUNCTIONS),$(FUNCTIONS_X86_64)) 267868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 268868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.soft_static.armv6m := $(FUNCTIONS_ARMV6M) 269868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.soft_pic.armv6m := $(FUNCTIONS_ARMV6M) 270868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 271868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.soft_static.armv7m := $(FUNCTIONS_ARM_ALL) 272868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.soft_pic.armv7m := $(FUNCTIONS_ARM_ALL) 273868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 274868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.soft_static.armv7em := $(FUNCTIONS_ARM_ALL) 275868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.hard_static.armv7em := $(FUNCTIONS_ARM_ALL) 276868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.soft_pic.armv7em := $(FUNCTIONS_ARM_ALL) 277868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.hard_pic.armv7em := $(FUNCTIONS_ARM_ALL) 278868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 279868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.soft_static.armv7 := $(FUNCTIONS_ARM_ALL) 280868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.hard_static.armv7 := $(FUNCTIONS_ARM_ALL) 281868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.soft_pic.armv7 := $(FUNCTIONS_ARM_ALL) 282868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.hard_pic.armv7 := $(FUNCTIONS_ARM_ALL) 283868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 284868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.hard_static.i386 := $(FUNCTIONS_I386) 285868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.hard_pic.i386 := $(FUNCTIONS_I386) 286868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim Northover 287868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.hard_static.x86_64 := $(FUNCTIONS_X86_64) 288868082b4f9eb6fd7f2f9c9cc36002afbfdf17802Tim NorthoverFUNCTIONS.hard_pic.x86_64 := $(FUNCTIONS_X86_64) 289