[llvm-dev] Sanitizers and static linking
David Greene via llvm-dev
llvm-dev at lists.llvm.org
Thu Aug 23 10:16:33 PDT 2018
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
More information about the llvm-dev
mailing list