dberris 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:
> > > > 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?


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