forked from OSchip/llvm-project
Support for building the ubsan runtime when using the autoconf build system on
Darwin. Patch by Jean-Daniel Dupas, tweaked by Jonathan Sauer, simplified somewhat by me. llvm-svn: 167889
This commit is contained in:
parent
05dce7e644
commit
6122d0692b
|
@ -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__ */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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=%)
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 \
|
||||
|
|
Loading…
Reference in New Issue