Commit Graph

158 Commits

Author SHA1 Message Date
Chandler Carruth 2a649c7a42 Add initial support for applying the sysroot to library search paths.
This is still very much a WIP, but sysroot was completely broken before
this so we are moving closer to correctness.

The crux of this is that 'ld' (on Linux, the only place I'm touching
here) doesn't apply the sysroot to any flags given to it. Instead, the
driver must translate all the paths it adds to the link step with the
system root. This is easily observed by building a GCC that supports
sysroot, and checking its driver output.

This patch just fixes the non-multilib library search paths. We should
also use this in many other places, but first things first.

This also allows us to make the Linux 'ld' test independent of the host
system. This in turn will allow me to check in test tree configurations
based on various different distro's configuration. Again, WIP.

llvm-svn: 140990
2011-10-03 06:41:08 +00:00
Chandler Carruth 413e5ac2a5 Rework the selection of builtin library search paths on Linux to
precisely match the pattern and logic used by the GCC driver on Linux as
of a recent SVN checkout.

This happens to follow a *much* more principled approach. There is
a strict hierarchy of paths examined, first with multilib-suffixing,
second without such suffixing. Any and all of these directories which
exist will be added to the library search path when using GCC.

There were many places where Clang followed different paths, omitted
critical entries, and worst of all (in terms of challenges to debugging)
got the entries in a subtly wrong order.

If this breaks Clang on a distro you use, please let me know, and I'll
work with you to figure out what is needed to work on that distro. I've
checked the behavior of the latest release of Ubuntu, OpenSUSE, Fedora,
and Gentoo. I'll be testing it on those as well as Debian stable and
unstable and ArchLinux. I may even dig out a Slackware install.

No real regression tests yet, those will follow once I add enough
support for sysroot to simulate various distro layouts in the testsuite.

llvm-svn: 140981
2011-10-03 05:28:29 +00:00
Chandler Carruth 59d9ebb103 As I suspected, completely non-multilib machines just get no suffix.
Make the suffixes optional everywhere, and just make sure they have the
right value. The suffixes aren't the interesting part of this test
anyways.

Sorry for the churn as I let the bots try out various patterns.

llvm-svn: 140927
2011-10-01 02:39:57 +00:00
Chandler Carruth c5ab7efea3 Teach this test to cope with Windows suffixes so that msys builds can
run it.

llvm-svn: 140925
2011-10-01 02:08:56 +00:00
Chandler Carruth 97bb841545 Correct my failure at writing proper regex's for FileCheck. Thanks Nick.
llvm-svn: 140920
2011-10-01 01:46:47 +00:00
Chandler Carruth 91052b6851 Allow for both 'lib' and 'lib32', as both seem to be in evidence. I've
left a FIXME to go track down more distros and see if 'lib' is ever the
64-bit half.

This should hopefully appease the build bots.

llvm-svn: 140915
2011-10-01 01:26:40 +00:00
Chandler Carruth 6276a75731 There might be an 'ld' without any path prefix.
llvm-svn: 140913
2011-10-01 01:03:45 +00:00
Chandler Carruth 94bcd38d10 Add a test that ensures we get the basic multilib '-L' flags to 'ld'
invocations on Linux.

llvm-svn: 140909
2011-10-01 00:37:39 +00:00