[LLVMdev] PATCH: AddressSanitizer: Fix errors about mis-matched exception specifiers for intercepted libc functions on Linux
kcc at google.com
Mon Jun 25 02:25:59 PDT 2012
On Mon, Jun 25, 2012 at 1:10 PM, Chandler Carruth <chandlerc at google.com>wrote:
> On modern Linux installs, glibc has a very annoying practice: it adds an
> empty exception specifier to lots of libc functions as an optimization. It
> only does this if the compiler is modern and GCC-like, and we are compiling
> in C++ mode.
> This, however, causes GCC to complain about signature mismatches between
> the glibc functions declared in malloc.h and those defined as an alias in
> the interceptors library:
> ..../asan_malloc_linux.cc:57:1: error: declaration of 'void free(void*)'
> has a different exception specifier
> /usr/include/malloc.h:66:13: error: from previous declaration 'void
> free(void*) throw ()'
> I've attached a complete hack of a patch to address this... but surely
> there is a better way? I'm open to suggestions about this sticky issue.
How do I reproduce the failure?
For me, the code build fine with gcc (4.4.3 and 4.7.0).
> Amusingly, this is only diagnosed by GCC, not by Clang. =] So I didn't
> even notice it at first.
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev