aboutsummaryrefslogtreecommitdiff
path: root/test/Driver/Inputs
AgeCommit message (Collapse)Author
2013-04-20Supports Sourcery CodeBench Mips toolchain directories tree.Simon Atanasyan
Sourcery CodeBench and modern FSF Mips toolchains require a bit more complicated algorithm to calculate headers, libraries and sysroot paths than implemented by Clang driver now. The main problem is that all these paths depend on a set of command line arguments additionally to a target triple value. For example, let $TC is a toolchain installation directory. If we compile big-endian 32-bit mips code, crtbegin.o is in the $TC/lib/gcc/mips-linux-gnu/4.7.2 folder and the toolchain's linker requires --sysroot=$TC/mips-linux-gnu/libc argument. If we compile little-endian 32-bit soft-float mips code, crtbegin.o is in the $TC/lib/gcc/mips-linux-gnu/4.7.2/soft-float/el folder and the toolchain's linker requires --sysroot=$TC/mips-linux-gnu/libc/soft-float/el argument. 1. Calculate MultiarchSuffix using all necessary command line options and use this MultiarchSuffix to detect crtbegin.o location in the GCCInstallationDetector::ScanLibDirForGCCTriple() routine. 2. If a user does not provide --sysroot argument to the driver explicitly, calculate new sysroot value based on command line options. Then use this calculated sysroot path: a. To populate a file search paths list in the Linux::Linux() constructor. b. To find Mips toolchain specific include headers directories in the Linux::AddClangSystemIncludeArgs() routine. c. To provide -–sysroot argument for a linker. Note: - The FSF's tree slightly differs (folder names) and is not supported yet. - New addExternCSystemIncludeIfExits() routine is a temporary solution. I plan to move path existence check to the addExternCSystemInclude() routine by a separate commit. The patch reviewed by Rafael Espindola. http://llvm-reviews.chandlerc.com/D644 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179934 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-14Add driver support for fedora 18 on ARM.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179484 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-23If a .syms file is available alongside a sanitizer runtime, pass it to theRichard Smith
linker via --dynamic-list instead of using --export-dynamic. This reduces the size of the dynamic symbol table, and thus of the binary (in some cases by up to ~30%). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177783 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-06Driver: add support for new style multiarch in Ubuntu 13.04Dmitri Gribenko
Patch by Sanne Wouda. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176557 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-04Beef up the testing of our 'ld' invocation on linux to cover staticChandler Carruth
linking. About to fix a bug here and there was no good test case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176427 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-25Create clang/test/Driver/lit.local.cfg.NAKAMURA Takumi
These files had been ignored. - clang_f_opts.h - debug-comp-dir.S - debug-main-file.S git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173416 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-06Revert r169557. It seems that the test is too restrictedLogan Chien
and will break the build on buildbot. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169562 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-06Add i686-linux-android for gcc toolchain detection.Logan Chien
* Look for i686-linux-android under <sysroot>/lib/gcc. * This patch also slightly enhance the test suite for Android GCC toolchain detection. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169557 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-06Hexagon TC: Reimplement Link::ConstructJob to callMatthew Curtis
linker directly Rather than calling gcc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169512 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-06Hexagon TC: Update toolchain to add appropriate includeMatthew Curtis
paths - Inherit from Linux rather than ToolChain - Override AddClangSystemIncludeArgs and AddClangCXXStdlibIncludeArgs to properly set include paths. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169495 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-31Extend -Bprefix functionality and make it closer to gcc. If the "prefix"Simon Atanasyan
is not a directory, Driver::GetProgramPath() routine does not try to append the program name as a "path component" to it. It just joins the "prefix" with the program name and checks the resulting path existence. The patch reviewed by Rafael Espindola. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167114 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-04Driver: Link crtfastmath.o if it's available and -ffast-math is specified.Benjamin Kramer
crtfastmath.o contains routines to set the floating point flags to a faster, unsafe mode. Linking it in speeds up code dealing with denormals significantly (PR14024). For now this is only enabled on linux where I can test it and crtfastmath.o is widely available. We may want to provide a similar file with compiler-rt eventually and/or enable it on other platforms too. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165240 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-03Implement Adnroid MIPS toolchain support:Simon Atanasyan
1. Add mipsel-linux-android to the list of valid MIPS target triples. 2. Add <gcc install path>/mips-r2 to the list of toolchain specific path prefixes if target is mipsel-linux-android. The patch reviewed by Logan Chien. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165131 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-18Add the freescale_ppc64_tree that should have been included in r164177.Hal Finkel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164179 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-18Add C/C++ header locations for the Freescale SDK.Hal Finkel
The Freescale SDK is based on OpenEmbedded, and this might be useful for other OpenEmbedded-based configurations as well. With minor modifications, patch by Tobias von Koch! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164177 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-14Do not use "lib32" directory to create a library/object filesSimon Atanasyan
paths when target is MIPS 32-bit. The patch reviewed by Chandler Carruth. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163898 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-03Android standalone toolchain support.Evgeniy Stepanov
This change adds detection of C++ headers and libraries paths when building with the standalone toolchain from Android NDK. They are in a slightly unusual place. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163109 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-31Add two more .keep files to avoid the missing of empty folders in git ↵Jiangning Liu
repository. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161043 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-31Add two .keep files to avoid the missing of empty folders in git repository.Jiangning Liu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161042 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-31Support ARM hard float (arm-linux-gnueabihf).Jiangning Liu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161038 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-30supply a simple-minded testcase for r156813, to check whether the embedded ↵Gabor Greif
montavista gcc toolchain is recognized git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157686 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-26MIPS: Add tests to check the debian multiarch stuff for mips and mipsel targets.Simon Atanasyan
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155628 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-25Clang driver support for linking on Android.Evgeniy Stepanov
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155541 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-26Add the critical crtbegin.o files necessary for any of the tests inChandler Carruth
r151482 and r151484 to work. Sorry about the fallout... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151485 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-26Add support for PPC and PPC64 multiarch toolchains on Debain.Chandler Carruth
Patch from Michel Dänzer, sent our way via Jeremy Huddleston who added 64-bit support. I just added one other place where powerpc64-linux-gnu was missing (we only had powerpc64-unknown-linux-gnu). I've also added a tree to test out the debian multiarch stuff. I don't use debian regularly, so I'm not certain this is entirely accurate. If anyone wants to check it against a debian system and fix any inaccuracies, fire away. This way at least folks can see how this is *supposed* to be tested. It'd be particularly good to get the Debian MIPS toolchains tested in this way. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151482 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-22Revert part of r148839 and keep DefaultTargetTriple in the form adjustedJoerg Sonnenberger
by -target and similar options. As discussed in PR 12026, the change broke support for target-prefixed tools, i.e. calling x86_64--linux-ld when compiling for x86_64--linux. Improve the test cases added originally in r149083 to not require execution, just executable files. Document the hack with appropiate FIXME comments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151185 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-26Reintroduce r148981 with significantly improved regression test. Now itChandler Carruth
both actually tests what it wants to, doesn't have bogus and broken assertions in it, and is also formatted much more cleanly and consistently. Probably still some more that can be improved here, but its much better. Original commit message: ---- Try to unbreak the FreeBSD toolchain's detection of 32-bit targets inside a 64-bit freebsd machine with the 32-bit compatibility layer installed. The FreeBSD image always has the /usr/lib32 directory, so test for the more concrete existence of crt1.o. Also enhance the tests for freebsd to clarify what these trees look like and exercise the new code. Thanks to all the FreeBSD folks for helping me understand what caused the failure and how we might fix it. =] That helps a lot. Also, yay build bots. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149011 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Revert r148981 because it fails test/Driver/freebsd.cArgyrios Kyrtzidis
Original log: Author: chandlerc <chandlerc@91177308-0d34-0410-b5e6-96231b3b80d8> Date: Wed Jan 25 21:32:31 2012 +0000 Try to unbreak the FreeBSD toolchain's detection of 32-bit targets inside a 64-bit freebsd machine with the 32-bit compatibility layer installed. The FreeBSD image always has the /usr/lib32 directory, so test for the more concrete existence of crt1.o. Also enhance the tests for freebsd to clarify what these trees look like and exercise the new code. Thanks to all the FreeBSD folks for helping me understand what caused the failure and how we might fix it. =] That helps a lot. Also, yay build bots. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148993 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Try to unbreak the FreeBSD toolchain's detection of 32-bit targetsChandler Carruth
inside a 64-bit freebsd machine with the 32-bit compatibility layer installed. The FreeBSD image always has the /usr/lib32 directory, so test for the more concrete existence of crt1.o. Also enhance the tests for freebsd to clarify what these trees look like and exercise the new code. Thanks to all the FreeBSD folks for helping me understand what caused the failure and how we might fix it. =] That helps a lot. Also, yay build bots. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148981 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Add some really minimalist freebsd testing trees and use them in theChandler Carruth
freebsd test so that it's behavior isn't dependent on the filesystem of the host running the tests. This should revive the build bots at least. The tests and the trees still need a lot of love to make them as useful and easy to maintain as linux-ld.c. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148949 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-08add tree test for suse on ppc64 (r146142)Hal Finkel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146176 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-09Fix an issue that Duncan discovered on a specific (no longer current)Chandler Carruth
version of Ubuntu. It has a very broken multiarch configuration, and so we need special logic to handle it correctly. Fixing and testing this uncovered a few other trivial issues with the logic that are fixed as well. I added tests to cover this as it is hard to notice if you install recent versions of the OS. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144165 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Enhance the GCC version parsing and comparison logic to handle some moreChandler Carruth
edge cases and have better behavior. Specifically, we should actually prefer the general '4.6' version string over the '4.6.1' string, as '4.6.2' should be able to replace it without breaking rpaths or any other place that these paths have been embedded. Debian-based distributions are already using a path structure with symlinks to achieve in-place upgrades for patch versions. Now our parsing reflects this and we select the shorter paths instead of the longer paths. A separate issue was that we would not parse a leading patch version number even in the presence of a suffix. The above change makes this more problematic as it would cause a suffix being added to make us treat the entire thing as patch-version-agnostic, which it isn't. This changes the logic to distinguish between '4.4.x' and 4.4.1-x', and retain that the latter has *some* patch number information. Currently, we always bias toward the shorter and more canonical version strings. If it becomes important we can add more Debian like rules to produce sequences such as '4.4.1b' > '4.4.1' > '4.4.1-rc3' > '4.4.1-rc2' > '4.4.1-pre5', but I'm very doubtful this will ever matter or be desirable. I've made the tests for this logic a bit more interesting, and added some specific tests for logic that is now different. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143841 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-05Use the InstalledDir correctly, and test it correctly as well. =/ ShouldChandler Carruth
have noticed this previously, sorry. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141167 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-05Teach Clang to cope with GCC installations that have unusual patchChandler Carruth
"versions". Currently, these are just dropped on the floor, A concrete version number will always win out. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141159 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-05Implement the feature I was originally driving toward when I startedChandler Carruth
this saga. Teach the driver to detect a GCC installed along side Clang using the existing InstalledDir support in the Clang driver. This makes a lot of Clang's behavior more automatic when it is installed along side GCC. Also include the first test cases (more to come, honest) which test both the install directory behavior, and the version sorting behavior to show that we're actually searching for the best candidate GCC installation now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141145 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-03Test a multilib setup on a 64-bit host. This is the far more commonChandler Carruth
configuration, although the test still stubs out more directories than are necessary or common in order to exercise all of the lookup paths observed with upstream GCC. This finishes testing the distribution-independent and GCC-installation-independent parts of the library path search logic. More testing is still needed for the triple detection, GCC-installation detection, and handling distributions with unusual configurations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141000 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-03Enable generic multilib support on 32bit hosts. Previously this was onlyChandler Carruth
enabled for debian hosts, which is quite odd. I think all restriction on when Clang attempts to use a multilib installation should go away. Clang is fundamentally a cross compiler. It behaves more like GCC when built as a cross compiler, and so it should just use multilib installs when they are present on the system. However, there is a very specific exemption for Exherbo, which I can't test on, so I'm leaving that in place. With this, check in a generic test tree for multilib on a 32-bit host. This stubs out many directories that most distributions don't use but that uptsream GCC supports. This is intended to be an agnostic test that the driver behaves properly compared with the GCC driver it aims for compatibility with. Also, fix a bug in the driver that this testing exposed (see!) where it was incorrectly testing the target architecture rather than the host architecture. If anyone is having trouble with the tree-structure stubs I'm creating to test this, let me know and I can revisit the design. I chose this over (for example) a tar-ball in order to make tests run faster at the small, hopefully amortized VCS cost. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140999 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-03Test that we include a GCC-triple-prefixed tree. While I don't know ofChandler Carruth
any distros that use this, building a multilib GCC from mainline will install linker scripts here. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140996 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-03Teach the logic for locating an installed GCC about the system root.Chandler Carruth
This requires fixing a latent bug -- if we used the default host triple instead of an autodetected triple to locate GCC's installation, we didn't go back and fix the GCC triple. Correct that with a pile of hacks. This entire routine needs a major refactoring which I'm saving for a subsequent commit. Essentially, the detection of the GCC triple should be hoisted into the same routine as we locate the GCC installation: the first is intrinsically tied to the latter. Then the routine will just return the triple and base directory. Also start to bring the rest of the library search path logic under test, including locating crtbegin.o. Still need to test the multilib and other behaviors, but there are also bugs in the way of that. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140995 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-03Add initial support for applying the sysroot to library search paths.Chandler Carruth
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140990 91177308-0d34-0410-b5e6-96231b3b80d8