[cfe-dev] clang patches for OpenBSD

Matthew Dempsky matthew at dempsky.org
Fri Feb 18 12:02:10 PST 2011


On Fri, Feb 18, 2011 at 09:16:30AM -0800, Chris Lattner wrote:
> > +++ lib/Driver/Tools.cpp	(working copy)
> > @@ -3080,9 +3080,9 @@
> > 
> >     if (Args.hasArg(options::OPT_pthread))
> >       CmdArgs.push_back("-pthread");
> > +      //CmdArgs.push_back("-lpthread");
> >     if (!Args.hasArg(options::OPT_shared))
> >       CmdArgs.push_back("-lc");
> > -    CmdArgs.push_back("-lgcc");
> >   }
> > 
> >   if (!Args.hasArg(options::OPT_nostdlib) &&
> 
> > There's a extra include of -lgcc and a deliberately commented out
> > -lpthread in llvm/tools/clang/lib/Driver/Tools.cpp.
> > I am unsure about -pthread or -lpthread but Matthew referred to this
> > particular diff in a email here
> > http://marc.info/?l=openbsd-ports&m=129780043311893&w=2

Please note that Amit's diff here is off slightly; the actual diff
that I would suggest for inclusion in LLVM/clang is attached below.

> I don't understand the issue here, but this has the same problem.
> We need this conditionalized to only apply to OpenBSD.  I'm not
> familiar with the driver, so I don't know what the best way to go for
> that is. 

The issue is that when the "clang" driver is invoked using the
-pthread option, it needs to pass -lpthread to ld.  E.g., the freebsd
link job construction code already correctly does this, but the
openbsd implementation erroneously passes -pthread instead, which
causes a link error because ld doesn't understand this option.

Thanks!

(I don't have anything useful to add about the -lgcc arguments though;
they do seem redundant, but it's consistent with gcc's behavior so I'd
suggest leaving it.)


--- tools/clang/lib/Driver/Tools.cpp.orig	Thu Sep  2 16:59:25 2010
+++ tools/clang/lib/Driver/Tools.cpp	Tue Feb 15 10:25:35 2011
@@ -2787,7 +2787,7 @@ void openbsd::Link::ConstructJob(Compilation &C, const
     CmdArgs.push_back("-lgcc");
 
     if (Args.hasArg(options::OPT_pthread))
-      CmdArgs.push_back("-pthread");
+      CmdArgs.push_back("-lpthread");
     if (!Args.hasArg(options::OPT_shared))
       CmdArgs.push_back("-lc");
     CmdArgs.push_back("-lgcc");



More information about the cfe-dev mailing list