[compiler-rt] r202122 - Enable UBSan on FreeBSD. Patch by Viktor Kutuzov.

Alexey Samsonov samsonov at google.com
Tue Feb 25 23:54:28 PST 2014


OK, looks like some of the necessary patches mailed by Viktor are still
being reviewed. For now, let me disable
building sanitizer runtimes on FreeBSD until we have all the patches in, to
avoid breaking the compiler-rt build.


On Wed, Feb 26, 2014 at 2:19 AM, Roman Divacky <rdivacky at freebsd.org> wrote:

> I tried to use ubsan and
>
> 1) compiler-rt doesnt compile for me, I need this patch:
>
> Index:
> ../projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
> ===================================================================
> ---
> ../projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
>      (revision 202195)
> +++
> ../projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
>      (working copy)
> @@ -378,6 +378,10 @@
>      // The size is determined by looking at sizeof of real sigset_t on
> linux.
>      uptr val[128 / sizeof(uptr)];
>    };
> +#elif SANITIZER_FREEBSD
> +  struct __sanitizer_sigset_t {
> +    u32 val[4];
> +  };
>  #endif
>
>    // Linux system headers define the 'sa_handler' and 'sa_sigaction'
> macros.
>
> 2) the clang driver doesnt add sanitizer arguments:
>
> Index: ../tools/clang/lib/Driver/Tools.cpp
> ===================================================================
> --- ../tools/clang/lib/Driver/Tools.cpp (revision 202180)
> +++ ../tools/clang/lib/Driver/Tools.cpp (working copy)
> @@ -6172,6 +6172,7 @@
>
>  CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
>    }
>
> +  addSanitizerRuntimes(getToolChain(), Args, CmdArgs);
>    addProfileRT(ToolChain, Args, CmdArgs);
>
>    const char *Exec =
>
> 3) Even with the above, it doesnt work because addSanitizerRuntimes() is
> not adjusted
> for freebsd (ie. it looks for sanitizer libs in freebsd9.2 instead of
> freebsd dir and
> tries to add -ldl which doesn exist on freebsd)
>
> 4) even when I correct that (manually), ubsan doesnt link with lots of
> undefined symbols,
> eg.:
>
> __sanitizer::StackTrace::SlowUnwindStackWithContext etc.
>
>
> Can you shed some light on the status?
>
> On Tue, Feb 25, 2014 at 08:29:36AM -0000, Alexey Samsonov wrote:
> > Author: samsonov
> > Date: Tue Feb 25 02:29:36 2014
> > New Revision: 202122
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=202122&view=rev
> > Log:
> > Enable UBSan on FreeBSD. Patch by Viktor Kutuzov.
> >
> > Modified:
> >     compiler-rt/trunk/lib/ubsan/ubsan_value.h
> >
> > Modified: compiler-rt/trunk/lib/ubsan/ubsan_value.h
> > URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/ubsan_value.h?rev=202122&r1=202121&r2=202122&view=diff
> >
> ==============================================================================
> > --- compiler-rt/trunk/lib/ubsan/ubsan_value.h (original)
> > +++ compiler-rt/trunk/lib/ubsan/ubsan_value.h Tue Feb 25 02:29:36 2014
> > @@ -14,9 +14,9 @@
> >  #ifndef UBSAN_VALUE_H
> >  #define UBSAN_VALUE_H
> >
> > -// For now, only support linux and darwin. Other platforms should be
> easy to
> > -// add, and probably work as-is.
> > -#if !defined(__linux__) && !defined(__APPLE__)
> > +// For now, only support Linux, FreeBSD and Darwin. Other platforms
> should
> > +// be easy to add, and probably work as-is.
> > +#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__APPLE__)
> >  #error "UBSan not supported for this platform!"
> >  #endif
> >
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>



-- 
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140226/c0660e10/attachment.html>


More information about the llvm-commits mailing list