diff options
-rw-r--r-- | SDKs/darwin/usr/include/stdio.h | 16 | ||||
-rw-r--r-- | lib/Makefile.mk | 1 | ||||
-rw-r--r-- | lib/ubsan/Makefile.mk | 23 | ||||
-rw-r--r-- | lib/ubsan/ubsan_value.h | 6 | ||||
-rw-r--r-- | make/platform/clang_darwin.mk | 7 |
5 files changed, 47 insertions, 6 deletions
diff --git a/SDKs/darwin/usr/include/stdio.h b/SDKs/darwin/usr/include/stdio.h index 744138806..63b10a86b 100644 --- a/SDKs/darwin/usr/include/stdio.h +++ b/SDKs/darwin/usr/include/stdio.h @@ -17,6 +17,10 @@ #ifndef __STDIO_H__ #define __STDIO_H__ +#if defined(__cplusplus) +extern "C" { +#endif + typedef struct __sFILE FILE; typedef __SIZE_TYPE__ size_t; @@ -63,12 +67,18 @@ extern FILE *__stderrp; int fclose(FILE *); int fflush(FILE *); -FILE *fopen(const char * restrict, const char * restrict) __asm(__FOPEN_NAME); -int fprintf(FILE * restrict, const char * restrict, ...); -size_t fwrite(const void * restrict, size_t, size_t, FILE * restrict) +FILE *fopen(const char * __restrict, const char * __restrict) __asm(__FOPEN_NAME); +int fprintf(FILE * __restrict, const char * __restrict, ...); +size_t fwrite(const void * __restrict, size_t, size_t, FILE * __restrict) __asm(__FWRITE_NAME); size_t fread(void * __restrict, size_t, size_t, FILE * __restrict); long ftell(FILE *); int fseek(FILE *, long, int); +int snprintf(char * __restrict, size_t, const char * __restrict, ...); + +#if defined(__cplusplus) +} +#endif + #endif /* __STDIO_H__ */ diff --git a/lib/Makefile.mk b/lib/Makefile.mk index 791921a80..ea471e01b 100644 --- a/lib/Makefile.mk +++ b/lib/Makefile.mk @@ -19,6 +19,7 @@ SubDirs += interception SubDirs += profile SubDirs += sanitizer_common SubDirs += tsan +SubDirs += ubsan # FIXME: We don't currently support building an atomic library, and as it must # be a separate library from the runtime library, we need to remove its source diff --git a/lib/ubsan/Makefile.mk b/lib/ubsan/Makefile.mk new file mode 100644 index 000000000..5702e0e75 --- /dev/null +++ b/lib/ubsan/Makefile.mk @@ -0,0 +1,23 @@ +#===- lib/ubsan/Makefile.mk ---------------------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +ModuleName := ubsan +SubDirs := + +Sources := $(foreach file,$(wildcard $(Dir)/*.cc),$(notdir $(file))) +ObjNames := $(Sources:%.cc=%.o) + +Implementation := Generic + +# FIXME: use automatic dependencies? +Dependencies := $(wildcard $(Dir)/*.h) +Dependencies += $(wildcard $(Dir)/../sanitizer_common/*.h) + +# Define a convenience variable for all the ubsan functions. +UbsanFunctions := $(Sources:%.cc=%) diff --git a/lib/ubsan/ubsan_value.h b/lib/ubsan/ubsan_value.h index a85579106..0c755ca97 100644 --- a/lib/ubsan/ubsan_value.h +++ b/lib/ubsan/ubsan_value.h @@ -14,9 +14,9 @@ #ifndef UBSAN_VALUE_H #define UBSAN_VALUE_H -// For now, only support linux. Other platforms should be easy to add, and -// probably work as-is. -#if !defined(__linux__) +// For now, only support linux and darwin. Other platforms should be easy to +// add, and probably work as-is. +#if !defined(__linux__) && !defined(__APPLE__) #error "UBSan not supported for this platform!" #endif diff --git a/make/platform/clang_darwin.mk b/make/platform/clang_darwin.mk index 5bc0e1062..399edee03 100644 --- a/make/platform/clang_darwin.mk +++ b/make/platform/clang_darwin.mk @@ -76,6 +76,9 @@ UniversalArchs.asan_osx := $(call CheckArches,i386 x86_64,asan_osx) Configs += asan_osx_dynamic UniversalArchs.asan_osx_dynamic := $(call CheckArches,i386 x86_64,asan_osx_dynamic) +Configs += ubsan_osx +UniversalArchs.ubsan_osx := $(call CheckArches,i386 x86_64,ubsan_osx) + # Darwin 10.6 has a bug in cctools that makes it unable to use ranlib on our ARM # object files. If we are on that platform, strip out all ARM archs. We still # build the libraries themselves so that Clang can find them where it expects @@ -131,6 +134,8 @@ CFLAGS.asan_osx_dynamic := \ $(CFLAGS) -mmacosx-version-min=10.5 -fno-builtin \ -DMAC_INTERPOSE_FUNCTIONS=1 +CFLAGS.ubsan_osx := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS) + CFLAGS.ios.i386 := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS) CFLAGS.ios.x86_64 := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS) CFLAGS.ios.armv7 := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) @@ -183,6 +188,8 @@ FUNCTIONS.asan_osx_dynamic := $(AsanFunctions) $(InterceptionFunctions) \ $(SanitizerCommonFunctions) \ $(AsanDynamicFunctions) +FUNCTIONS.ubsan_osx := $(UbsanFunctions) + CCKEXT_COMMON_FUNCTIONS := \ absvdi2 \ absvsi2 \ |