devnexen added inline comments.

================
Comment at: lib/Driver/ToolChains/OpenBSD.cpp:189
       if (getToolChain().ShouldLinkCXXStdlib(Args))
-        getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
+        ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
       if (Args.hasArg(options::OPT_pg))
----------------
devnexen wrote:
> dberris wrote:
> > devnexen wrote:
> > > dberris wrote:
> > > > devnexen wrote:
> > > > > dberris wrote:
> > > > > > Do you actually need this change? Why isn't 
> > > > > > `getToolChain().AddCXXStdlibLibArgs(...)` not sufficient here?
> > > > > That s the thing, I wish it was simple as FreeBSD, but seemingly in 
> > > > > OpenBSD needs both c++98 gcc runtime and libc++ for fuzzer (I tried 
> > > > > libc++ alone already)
> > > > Right, but this comment is on this specific line change. I don't think 
> > > > you need to reach into `Toolchain.` direcly, since you can already use 
> > > > `getToolChain()` just from the above line (188).
> > > Right, so I guess this diff https://reviews.llvm.org/D45662?id=142686 is 
> > > sufficient then ?
> > No. Let me try and explain again.
> > 
> > You were on the right path, with overriding the `AddCXXStdlibLibArgs` 
> > function in the OpenBSD Toolchain type. It's just that you weren't handling 
> > the case for when the binary was being built with libc++ or libstdc++ 
> > properly. I was referring you to what FreeBSD was doing for their 
> > implementation of `AddCXXStdlibLibArgs`. This means, checking first whether 
> > the invocation of the compiler was using libc++ or libstdc++, and then 
> > adding the appropriate link spelling. That all happens in the 
> > `AddCXXStdlibLibArgs` implementation, because there's no need to 
> > special-case just for the sanitizers.
> > 
> > This means, if you're building a normal binary with `-pg` in OpenBSD 
> > against either libc++ or libstdc++, it wouldn't work correctly regardless 
> > of whether you were using libFuzzer.
> > 
> > Does that make more sense?
> Ok will try a newer version later, thanks for your inputs.
So I looked at FreeBSD and makes more sense by default it s libcxx since the 
10.x releases. A release has a few years span of support. OpenBSD has complete 
different release policy, much shorter and two releases per year. clang been in 
since 6.2 (and we re at 6.3 now and the time llvm 7 comes out it will be 6.4).


https://reviews.llvm.org/D45662



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to