[LLVMdev] PATCH: AddressSanitizer: Fix errors about mis-matched exception specifiers for intercepted libc functions on Linux

Kostya Serebryany 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:

> Hello,
>
> 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.
>

ouch!
How do I reproduce the failure?
For me, the code build fine with gcc (4.4.3 and 4.7.0).

--kcc


>
> Amusingly, this is only diagnosed by GCC, not by Clang. =] So I didn't
> even notice it at first.
> -Chandler
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120625/3649ea12/attachment.html>


More information about the llvm-dev mailing list