[PATCH] A couple minor changes to support sanitizers on FreeBSD 9.2
vkutuzov at accesssoftek.com
Mon Mar 17 04:39:46 PDT 2014
> Where is size_t defined in sanitizer sources?
I probably misworded the reference to sanitizers sources. The point is that clang has its own set of headers it use in place of the system ones (see /tools/clang/lib/Headers). One of the headers--<stddef.h>, namely--define 'size_t' as:
typedef __SIZE_TYPE__ size_t;
which is the correct definition on all platforms, but conflicts with the incorrect one:
typedef __uint64_t __size_t;
typedef __size_t size_t;
on FreeBSD 9.2 in 32-bit mode (-m32). Depending on which of the headers--the system or the clang's one--is included first 'size_t' is defined as 'unsigned int' or 'unsigned long'. Tracking potential [indirect] inclusions of <sys/types.h> doesn't seem to be trivial so I see two alternatives: either define _SIZE_T_DECLARED in all test sources before any #includes or put -D_SIZE_T_DECLARED to the CMakeLists.txt files.
More information about the llvm-commits