[llvm-dev] Sanitizers and static linking

Reid Kleckner via llvm-dev llvm-dev at lists.llvm.org
Thu Aug 23 10:21:38 PDT 2018


I think so. I'd CC Matt Morehouse on it.

On Thu, Aug 23, 2018 at 10:16 AM David Greene <dag at cray.com> wrote:

> Ok, that makes sense.  Should there be code to test the result of dlsym
> and report an error to the user?  Faulting simply because one uses
> --static during the link stage isn't very friendly.  It would be nice to
> get an error with a helpful message about linking libc dynamically.
>
> Would there be interest in a patch to implement this?
>
>                           -David
>
> Reid Kleckner via llvm-dev <llvm-dev at lists.llvm.org> writes:
>
> > Saying that sanitizers "do not support static linking" seems strange
> > because we strongly advise users to link the sanitizer libraries
> > themselves statically. This gives the best user experience, because it
> > puts the interceptors into the executable, so they always come first
> > in dynamic symbol search order.
> >
> > What I think you are saying is that the sanitizers do not support
> > linking statically with libc. This is probably true. It would be
> > difficult to modify the interceptors to work when libc is linked
> > statically, so it's probably not supported.
> >
> > Hopefully that explains why the sanitizer libraries are static, but
> > they don't exactly support linking with -static.
> >
> > On Thu, Aug 23, 2018 at 10:04 AM David Greene via llvm-dev
> > <llvm-dev at lists.llvm.org> wrote:
> >
> >     I am guessing that sanitizers are not supported with static
> >     linking.
> >     The AddressSanitizer document says so explicitly but the others do
> >     not.
> >     Yet the interceptors use dlsym to set up certain system calls, so
> >     by
> >     definition they can't support static linking.
> >
> >     Given that sanitizers won't work with static linking, why are
> >     static
> >     libraries created for them?
> >
> >     Should there be an error check in the interceptor code for dlsym
> >     returning nullptr? I just spent a bunch of time tracking down a
> >     problem
> >     that turned out to be dlsym returning nullptr due to static
> >     linking.
> >
> >     It seems like either users should not be able to link sanitizer
> >     runtime
> >     when linking statically or there should be a runtime check that
> >     dlsym
> >     doesn't return nullptr. Ideally both.
> >
> >     -David
> >     _______________________________________________
> >     LLVM Developers mailing list
> >     llvm-dev at lists.llvm.org
> >     http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > llvm-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180823/2d5249eb/attachment.html>


More information about the llvm-dev mailing list