18b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# These are the functions which clang needs when it is targetting a previous
28b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# version of the OS. The issue is that the backend may use functions which were
38b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# not present in the libgcc that shipped on the platform. In such cases, we link
48b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# with a version of the library which contains private_extern definitions of all
58b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# the extra functions which might be referenced.
68b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
78b790353436e0815e6b94a018c6e6b314cba9042Daniel DunbarDescription := Static runtime libraries for clang/Darwin.
88b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
92f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher# A function that ensures we don't try to build for architectures that we
102f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher# don't have working toolchains for.
112f5efb0238df99509fb8dd53d218065abd8dff8bEric ChristopherCheckArches = \
122f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher  $(shell \
132f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    result=""; \
142f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    for arch in $(1); do \
15279a22ab3a2a5c838b7e80d67cbc970b7c12bbd8Daniel Dunbar      if $(CC) -arch $$arch -c \
160e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel Dunbar	  -integrated-as \
17279a22ab3a2a5c838b7e80d67cbc970b7c12bbd8Daniel Dunbar	  $(ProjSrcRoot)/make/platform/clang_darwin_test_input.c \
180e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel Dunbar	  -isysroot $(ProjSrcRoot)/SDKs/darwin \
1990467a679a4e45c035b126701a0450857f3c4483Daniel Dunbar	  -o /dev/null > /dev/null 2> /dev/null; then \
2096051e1bd0e4c60a65e8c059a719a4a72b229247Daniel Dunbar        result="$$result$$arch "; \
210e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel Dunbar      else \
220e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel Dunbar	printf 1>&2 \
230e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel Dunbar	  "warning: clang_darwin.mk: dropping arch '$$arch' from lib '$(2)'\n"; \
2496051e1bd0e4c60a65e8c059a719a4a72b229247Daniel Dunbar      fi; \
252f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    done; \
262f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    echo $$result)
272f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher
282f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher###
292f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher
30d69211491f42082d7cb2c294007c05704a98a163Daniel DunbarCC := clang
31d69211491f42082d7cb2c294007c05704a98a163Daniel Dunbar
324a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel DunbarConfigs :=
338b790353436e0815e6b94a018c6e6b314cba9042Daniel DunbarUniversalArchs :=
348b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
35ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar# Configuration solely for providing access to an eprintf symbol, which may
36ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar# still be referenced from Darwin system headers. This symbol is only ever
37ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar# needed on i386.
38ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel DunbarConfigs += eprintf
390e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel DunbarUniversalArchs.eprintf := $(call CheckArches,i386,eprintf)
40ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar
414a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel Dunbar# Configuration for targetting 10.4. We need a few functions missing from
424a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel Dunbar# libgcc_s.10.4.dylib. We only build x86 slices since clang doesn't really
434a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel Dunbar# support targetting PowerPC.
444a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel DunbarConfigs += 10.4
450e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel DunbarUniversalArchs.10.4 := $(call CheckArches,i386 x86_64,10.4)
468b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
471ace4055f79f304750839d73c46bbcaeb994f1b5Eric Christopher# Configuration for targetting OSX. These functions may not be in libSystem
481ace4055f79f304750839d73c46bbcaeb994f1b5Eric Christopher# so we should provide our own.
491ace4055f79f304750839d73c46bbcaeb994f1b5Eric ChristopherConfigs += osx
500e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel DunbarUniversalArchs.osx := $(call CheckArches,i386 x86_64,osx)
511ace4055f79f304750839d73c46bbcaeb994f1b5Eric Christopher
52b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar# Configuration for use with kernel/kexts.
53b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarConfigs += cc_kext
54d6ccdaca29e0cc3e39b5ccd8bd33c827eeda1cb4Daniel DunbarUniversalArchs.cc_kext := $(call CheckArches,i386 x86_64,cc_kext)
55b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
5691d9c15ef503507fc5badd4900a5049936be65c1Daniel Dunbar# Configurations which define the profiling support functions.
5791d9c15ef503507fc5badd4900a5049936be65c1Daniel DunbarConfigs += profile_osx
580e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel DunbarUniversalArchs.profile_osx := $(call CheckArches,i386 x86_64,profile_osx)
5991d9c15ef503507fc5badd4900a5049936be65c1Daniel Dunbar
60f8328c56b93ccbb11ce2e77e066c25536204d31bDaniel Dunbar# Configurations which define the ASAN support functions.
61f8328c56b93ccbb11ce2e77e066c25536204d31bDaniel DunbarConfigs += asan_osx
620e1d0f2dd3349fda967bd5ae098332301d8b70c5Daniel DunbarUniversalArchs.asan_osx := $(call CheckArches,i386 x86_64,asan_osx)
63f8328c56b93ccbb11ce2e77e066c25536204d31bDaniel Dunbar
6478aedd464282595ba2c7bf83ddc4978117925217Daniel DunbarConfigs += asan_osx_dynamic
6578aedd464282595ba2c7bf83ddc4978117925217Daniel DunbarUniversalArchs.asan_osx_dynamic := $(call CheckArches,i386 x86_64,asan_osx_dynamic)
6678aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar
678ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar# If RC_SUPPORTED_ARCHS is defined, treat it as a list of the architectures we
688ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar# are intended to support and limit what we try to build to that.
698ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar#
708ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar# We make sure to remove empty configs if we end up dropping all the requested
718ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar# archs for a particular config.
728ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbarifneq ($(RC_SUPPORTED_ARCHS),)
738ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar$(foreach config,$(Configs),\
748ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar  $(call Set,UniversalArchs.$(config),\
758ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar	$(filter $(RC_SUPPORTED_ARCHS),$(UniversalArchs.$(config))))\
768ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar  $(if $(UniversalArchs.$(config)),,\
778ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar	$(call Set,Configs,$(filter-out $(config),$(Configs)))))
788ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbarendif
798ef083003fe24fe2b3e8e35c03f4039c45bc46aaDaniel Dunbar
80b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar###
81b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
82d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbar# Forcibly strip off any -arch, as that totally breaks our universal support.
83d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbaroverride CC := $(subst -arch ,-arch_,$(CC))
84d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbaroverride CC := $(patsubst -arch_%,,$(CC))
85d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbar
86e512f7ffd8b7e6636b4a5cb66b2968b2c3608ff5Daniel DunbarCFLAGS := -Wall -Werror -O3 -fomit-frame-pointer
878b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
8856026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# Always set deployment target arguments for every build, these libraries should
8956026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# never depend on the environmental overrides. We simply set them to minimum
9056026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# supported deployment target -- nothing in the compiler-rt libraries should
9156026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# actually depend on the deployment target.
92469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarOSX_DEPLOYMENT_ARGS := -mmacosx-version-min=10.4
9356026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar
9491354d7be8b43a5008f8bc5bb53b8e396afb3d20Daniel Dunbar# Use our stub SDK as the sysroot to support more portable building.
9591354d7be8b43a5008f8bc5bb53b8e396afb3d20Daniel DunbarOSX_DEPLOYMENT_ARGS += -isysroot $(ProjSrcRoot)/SDKs/darwin
9656026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar
97469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.eprintf		:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
98469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.10.4		:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
99f8328c56b93ccbb11ce2e77e066c25536204d31bDaniel Dunbar# FIXME: We can't build ASAN with our stub SDK yet.
1009003eae323f92d68b834f649de17774a21866f0dKostya SerebryanyCFLAGS.asan_osx         := $(CFLAGS) -mmacosx-version-min=10.5 -fno-builtin
10178aedd464282595ba2c7bf83ddc4978117925217Daniel DunbarCFLAGS.asan_osx_dynamic := \
10278aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar	$(CFLAGS) -mmacosx-version-min=10.5 -fno-builtin \
10378aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar	-DMAC_INTERPOSE_FUNCTIONS=1
104f8328c56b93ccbb11ce2e77e066c25536204d31bDaniel Dunbar
105469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.osx.i386		:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
106469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.osx.x86_64	:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
107469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.cc_kext.i386	:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
108469846b9252d2790bfc7d86927a780cf76c52c01Daniel DunbarCFLAGS.cc_kext.x86_64	:= $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
10991d9c15ef503507fc5badd4900a5049936be65c1Daniel DunbarCFLAGS.profile_osx.i386   := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
11091d9c15ef503507fc5badd4900a5049936be65c1Daniel DunbarCFLAGS.profile_osx.x86_64 := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
11156026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar
11278aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar# Configure the asan_osx_dynamic library to be built shared.
11378aedd464282595ba2c7bf83ddc4978117925217Daniel DunbarSHARED_LIBRARY.asan_osx_dynamic := 1
11478aedd464282595ba2c7bf83ddc4978117925217Daniel DunbarLDFLAGS.asan_osx_dynamic := -framework Foundation -lstdc++
11578aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar
116ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel DunbarFUNCTIONS.eprintf := eprintf
1174a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel DunbarFUNCTIONS.10.4 := eprintf floatundidf floatundisf floatundixf
118d0dbbc4c9ac73e7a7de8a90408a4982819e1811bDaniel Dunbar
1191ace4055f79f304750839d73c46bbcaeb994f1b5Eric ChristopherFUNCTIONS.osx	:= mulosi4 mulodi4 muloti4
1201ace4055f79f304750839d73c46bbcaeb994f1b5Eric Christopher
12191d9c15ef503507fc5badd4900a5049936be65c1Daniel DunbarFUNCTIONS.profile_osx := GCDAProfiling
12291d9c15ef503507fc5badd4900a5049936be65c1Daniel Dunbar
123b3cedf98a3c8545da2234c2d35cb5d687984035fKostya SerebryanyFUNCTIONS.asan_osx := $(AsanFunctions) $(InterceptionFunctions) \
124b3cedf98a3c8545da2234c2d35cb5d687984035fKostya Serebryany                                       $(SanitizerCommonFunctions)
12578aedd464282595ba2c7bf83ddc4978117925217Daniel DunbarFUNCTIONS.asan_osx_dynamic := $(AsanFunctions) $(InterceptionFunctions) \
12678aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar                              $(SanitizerCommonFunctions) \
12778aedd464282595ba2c7bf83ddc4978117925217Daniel Dunbar	                      $(AsanDynamicFunctions)
128f8328c56b93ccbb11ce2e77e066c25536204d31bDaniel Dunbar
129b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarCCKEXT_COMMON_FUNCTIONS := \
130b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	absvdi2 \
131b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	absvsi2 \
132b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addvdi3 \
133b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addvsi3 \
134b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashldi3 \
135b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashrdi3 \
136b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	bswapdi2 \
137b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	bswapsi2 \
138b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	clzdi2 \
139b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	clzsi2 \
140b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpdi2 \
141b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ctzdi2 \
142b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ctzsi2 \
143b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divdc3 \
144b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divdi3 \
145b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divsc3 \
1464c45b931fde3005c8b253ebf7e18035b88e05f52Daniel Dunbar	divmodsi4 \
1474c45b931fde3005c8b253ebf7e18035b88e05f52Daniel Dunbar	udivmodsi4 \
148b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	do_global_dtors \
149b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	eprintf \
150b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffsdi2 \
151b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixdfdi \
152b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixsfdi \
153b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsdfdi \
154b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsdfsi \
155b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunssfdi \
156b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunssfsi \
157b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatdidf \
158b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatdisf \
159b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatundidf \
160b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatundisf \
161b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	gcc_bcmp \
162b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	lshrdi3 \
163b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	moddi3 \
164b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	muldc3 \
165b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	muldi3 \
166b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulsc3 \
167b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulvdi3 \
168b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulvsi3 \
169b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negdi2 \
170b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negvdi2 \
171b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negvsi2 \
172b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	paritydi2 \
173b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	paritysi2 \
174b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	popcountdi2 \
175b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	popcountsi2 \
176b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	powidf2 \
177b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	powisf2 \
178b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subvdi3 \
179b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subvsi3 \
180b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ucmpdi2 \
181b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udiv_w_sdiv \
182b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivdi3 \
183b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivmoddi4 \
184b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	umoddi3
185b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
186ed9b014382e7af5d62358dd7cddc58598b050fd5Daniel DunbarCCKEXT_ARM_FUNCTIONS := $(CCKEXT_COMMON_FUNCTIONS) \
187b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	adddf3 \
188b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addsf3 \
189b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cdcmpeq \
190b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cdrcmple \
191b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cfcmpeq \
192b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cfrcmple \
193b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpeq \
194b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpge \
195b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpgt \
196b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmple \
197b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmplt \
198b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_drsub \
199b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpeq \
200b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpge \
201b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpgt \
202b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmple \
203b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmplt \
204b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_frsub \
205b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_idivmod \
206b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_uidivmod \
207b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpdf2 \
208b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpsf2 \
209b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	div0 \
210b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divdf3 \
211b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divsf3 \
212b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divsi3 \
213b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	extendsfdf2 \
214b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffssi2 \
215b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixdfsi \
216b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixsfsi \
217b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatsidf \
218b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatsisf \
219b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatunsidf \
220b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatunsisf \
221358b3fd9c3fbdba1e0b8f5ed2aa4a4bfe62375ebDaniel Dunbar	comparedf2 \
222358b3fd9c3fbdba1e0b8f5ed2aa4a4bfe62375ebDaniel Dunbar	comparesf2 \
223b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	modsi3 \
224b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	muldf3 \
225b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulsf3 \
226b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negdf2 \
227b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negsf2 \
228b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subdf3 \
229b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subsf3 \
230b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switch16 \
231b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switch32 \
232b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switch8 \
233b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switchu8 \
234b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	truncdfsf2 \
235b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivsi3 \
236b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	umodsi3 \
237b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	unorddf2 \
238b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	unordsf2
239b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
240b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarCCKEXT_X86_FUNCTIONS := $(CCKEXT_COMMON_FUNCTIONS) \
241b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divxc3 \
242b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsxfdi \
243b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsxfsi \
244b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixxfdi \
245b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatdixf \
246b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatundixf \
247b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulxc3 \
248b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	powixf2
249b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
250b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.i386 := $(CCKEXT_X86_FUNCTIONS) \
251b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffssi2 \
252b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.eax \
253b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ebp \
254b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ebx \
255b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ecx \
256b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.edi \
257b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.edx \
258b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.esi
259b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
260b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.x86_64 := $(CCKEXT_X86_FUNCTIONS) \
261b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	absvti2 \
262b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addvti3 \
263b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashlti3 \
264b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashrti3 \
265b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	clzti2 \
266b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpti2 \
267b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ctzti2 \
268b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divti3 \
269b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffsti2 \
270b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixdfti \
271b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixsfti \
272b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsdfti \
273b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunssfti \
274b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsxfti \
275b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixxfti \
276b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floattidf \
277b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floattisf \
278b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floattixf \
279b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatuntidf \
280b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatuntisf \
281b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatuntixf \
282b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	lshrti3 \
283b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	modti3 \
284b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	multi3 \
285b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulvti3 \
286b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negti2 \
287b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negvti2 \
288b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	parityti2 \
289b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	popcountti2 \
290b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subvti3 \
291b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ucmpti2 \
292b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivmodti4 \
293b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivti3 \
294b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	umodti3
295b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
296b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar# FIXME: Currently, compiler-rt is missing implementations for a number of the
297b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar# functions that need to go into libcc_kext.a. Filter them out for now.
298b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarCCKEXT_MISSING_FUNCTIONS := \
299f442f2622541ce54aea208fbe2ea5b79a104a481Daniel Dunbar	cmpdf2 cmpsf2 div0 \
300f442f2622541ce54aea208fbe2ea5b79a104a481Daniel Dunbar	ffssi2 \
301ce750fdaab5c9c1d013817ad949c9109eb3f2af2Daniel Dunbar	udiv_w_sdiv unorddf2 unordsf2 bswapdi2 \
302b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	bswapsi2 \
303b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	gcc_bcmp \
304b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	do_global_dtors \
305b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.eax i686.get_pc_thunk.ebp i686.get_pc_thunk.ebx \
306b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ecx i686.get_pc_thunk.edi i686.get_pc_thunk.edx \
307b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.esi \
308b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cdcmpeq aeabi_cdrcmple aeabi_cfcmpeq aeabi_cfrcmple aeabi_dcmpeq \
309b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpge aeabi_dcmpgt aeabi_dcmple aeabi_dcmplt aeabi_drsub aeabi_fcmpeq \
310b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpge aeabi_fcmpgt aeabi_fcmple aeabi_fcmplt aeabi_frsub aeabi_idivmod \
311b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_uidivmod
312b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
313b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.i386 := \
314b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.i386))
315b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.x86_64 := \
316b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.x86_64))
317b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
318d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel DunbarKERNEL_USE.cc_kext := 1
319d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel Dunbar
3208b790353436e0815e6b94a018c6e6b314cba9042Daniel DunbarVISIBILITY_HIDDEN := 1
321