| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 148137
|
|
|
|
|
|
| |
Gnu hash is not supported by the Android loader.
llvm-svn: 148113
|
|
|
|
| |
llvm-svn: 147920
|
|
|
|
|
|
| |
shared between lambda expressions and block literals.
llvm-svn: 147917
|
|
|
|
|
|
|
|
|
|
| |
for the arm-linux-androideabi triple in particular.
Also use this to do a better job of selecting soft FP settings.
Patch by Evgeniy Stepanov.
llvm-svn: 147872
|
|
|
|
|
|
| |
Patch by Sylvestre Ledru. Fixes PR11673.
llvm-svn: 147313
|
|
|
|
|
|
| |
http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
llvm-svn: 146959
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
especially nice as the Windows toolchain needs the windows header files,
and has lots of platform specific hooks in it.
To facilitate the split, hoist a bunch of file-level static helpers into
class-level static helpers. Spiff up their doxygen comments while there
as they're now more likely to be looked up via docs.
Hopefully, this will be followed by further breaking apart of the
toolchain definitions. Most of the large and complex ones should likely
live on their own. I'm looking at you Darwin. ;]
llvm-svn: 146840
|
|
|
|
| |
llvm-svn: 146413
|
|
|
|
|
|
|
|
| |
incompatible with the MIPS ABI.
Patch by Simon Atanasyan.
llvm-svn: 146243
|
|
|
|
|
|
|
|
|
|
|
| |
. move compiler-rt to a separate directory so the -L argument only includes compiler-rt (thanks joerg)
. build all clang subdirs
. switches the Minix platform to ELF
. normalizes toolchain invocation
Patch by Ben Gras.
llvm-svn: 146206
|
|
|
|
| |
llvm-svn: 146142
|
|
|
|
|
|
| |
dual support for compiler-rt on Linux, during bringup.
llvm-svn: 146094
|
|
|
|
| |
llvm-svn: 146016
|
|
|
|
|
|
| |
dynamic_lookup for dynamic libs. Style fixes. Patch by glider@google.com
llvm-svn: 145955
|
|
|
|
| |
llvm-svn: 145651
|
|
|
|
|
|
| |
PR11444/PR11445.
llvm-svn: 145321
|
|
|
|
| |
llvm-svn: 144869
|
|
|
|
| |
llvm-svn: 144381
|
|
|
|
|
|
| |
Atanasyan.
llvm-svn: 144358
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 144165
|
|
|
|
| |
llvm-svn: 144108
|
|
|
|
|
|
|
|
|
|
|
|
| |
useful when using Clang as a system-compiler, but its harmless. When
using Clang as a cross-compiler, this can be very handy as quite a few
toolchains ship their libc headers here rather than under
'/usr/include'.
For reference, this is the beginning of my work to also make the Clang
driver more suitable as a cross-compiler.
llvm-svn: 144089
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We don't actually need a separate flag for non-sysrooted paths as the
driver has to manage the sysroot anyways. The driver is not infrequently
adding paths to the header search based on their existence on the
filesystem. For that, it has to add the sysroot anyways, we should pass
it on down to CC1 already joined. More importantly, the driver cannot in
all cases distinguish between sysrooted paths and paths that are
relative to the Clang binary's installation directory. Essentially, we
always need to ignore the system root for these internal header search
options. It turns out in most of the places we were already providing
the system root in the driver, and then another one in CC1 so this fixes
several bugs.
llvm-svn: 143917
|
|
|
|
|
|
|
| |
Test cases for this and all the rest of the port are still in the works,
but will wait for a fixed computer and post 3.0 merging...
llvm-svn: 143916
|
|
|
|
|
|
| |
routines on the base toolchain class.
llvm-svn: 143900
|
|
|
|
|
|
|
|
|
|
| |
toolchain. The logic is mostly generic already, and where possible
should be made more generic. Also, it has no impact other than to expose
a set of methods which each toolchain can then query to setup their
desired configuration. These should be available to toolchains beyond
just Linux.
llvm-svn: 143899
|
|
|
|
|
|
| |
the same as a directory added further down in the new logic.
llvm-svn: 143897
|
|
|
|
|
|
|
| |
looks for evidence of a multilib installation, and adds the appropriate
bits to the search paths.
llvm-svn: 143896
|
|
|
|
|
|
| |
aren't guaranteed to live long enough otherwise.
llvm-svn: 143875
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
detection system that is providing the library paths and crt object
files.
This, modulo any bugs that need to be shaken out, resolves numerous bugs
with how we handle header paths. Here are a few that I know of:
- We no longer need to enumerate all GCC versions searched.
- OpenSUSE searched GCC versions in the wrong order.
- There were typos when selecting various patterns, etc.
- We aren't stating quite some many directories now.
- SysRoot didn't always work in a reasonable way.
I'm working on tests for this, but the tests are making me and Lit sad.
The real testing for this type of driver change is to try it out on
various distributions. I'll hit the common ones right away, and start
more thorough testing tomorrow after some sleep.
llvm-svn: 143874
|
|
|
|
|
|
| |
path triples. Also order the 32-bit triples a bit more reasonably.
llvm-svn: 143873
|
|
|
|
|
|
|
| |
the detected GCC installation. This allows us to expose another aspect
of what we detected: the GCC version. This will be used shortly.
llvm-svn: 143871
|
|
|
|
|
|
| |
This will facilitate further use and recombinations of them.
llvm-svn: 143869
|
|
|
|
|
|
|
|
| |
directories. This way we stop at the first multiarch directory found on
the system. This achieves the real intended result of pruning
non-existent directories.
llvm-svn: 143866
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a better way. The more I think about it the more worried I am that this
hammer is simply too large. We should only be reaching out to the
filesystem when doing interesting "detection" things, not gratuitously.
Original commit message:
Start pruning down the set of flags passed to CC1 for header search.
This cleans up the CC1 invocations, and reduces the overhead there.
We're still hammering the filesystem looking for the C++ standard
libraries though.
The only reservation I have about this policy is the case of virtualized
files inside of CC1, but it's not clear what the best way to solve that
is. The Driver consistently queries the actual filesystem to make its
decisions. Changing that would be a very large undertaking. It might be
worthwhile, but it's not an immediate goal.
llvm-svn: 143865
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This cleans up the CC1 invocations, and reduces the overhead there.
We're still hammering the filesystem looking for the C++ standard
libraries though.
The only reservation I have about this policy is the case of virtualized
files inside of CC1, but it's not clear what the best way to solve that
is. The Driver consistently queries the actual filesystem to make its
decisions. Changing that would be a very large undertaking. It might be
worthwhile, but it's not an immediate goal.
llvm-svn: 143864
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 143841
|
|
|
|
|
|
|
|
| |
variable to begin with... As I'm planning to add include root
information to this object, this would have caused confusion. It didn't
even *actually* hold the include root by the time we were done with it.
llvm-svn: 143840
|
|
|
|
|
|
| |
Michael!
llvm-svn: 143839
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
toolchain instead of merely using it in the constructor. This will allow
us to query it when building include paths as well as the file search
paths built in the constructor. I've lifted as little of it as I could
into the header file.
Eventually this will likely sink down into some of the Generic
toolchains and be used on more platforms, but I'm starting on Linux so
I can work out all the APIs needed there, where it is easiest to test
and we have the most pressing need.
llvm-svn: 143838
|
|
|
|
|
|
|
|
|
| |
headers. As llvm-gcc is dead, and I have no idea if this ever really
worked, I think it's time for it to go. More importantly, it makes it
harder to generalize the include search logic. If someone really wants
these to work, they can set the CPLUS_INCLUDE_PATH environment variable.
llvm-svn: 143836
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the first (and diff-noisiest) step to making Linux header searching
tremendously more principled and less brittle. Note that this step
should have essentially no functional impact. We still search the exact
same set of paths in the exact same order. The only change here is where
the code implementing such a search lives.
This has one obvious negative impact -- we now pass a ludicrous number
of flags to the CC1 layer. That should go away as I re-base this logic
on the logic to detect a GCC installation. I want to do this in two
phases so the bots can tell me if this step alone breaks something, and
so that the diffs of the refactoring make more sense.
llvm-svn: 143822
|
|
|
|
| |
llvm-svn: 143816
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
actually manage the builtin header file includes as well as the system
ones.
This one is actually debatable whether it belongs in the driver or not,
as the builtin includes are really an internal bit of implementation
goop for Clang. However, they must be included at *exactly* the right
point in the sequence of header files, which makes it essentially
impossible to have this be managed by the Frontend and the rest by the
Driver. I have terrible ideas that would "work", but I think they're
worse than putting this in the driver and making the Frontend library
even more ignorant of the environment and system on which it is being
run.
Also fix the fact that we weren't properly respecting the flags which
suppress standard system include directories.
Note that this still leaves all of the Clang tests which run CC1
directly and include builtin header files broken on Windows. I'm working
on a followup patch to address that.
llvm-svn: 143801
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
encode the *exact* semantics which the header search paths internally
built by the Frontend layer have had, which is both non-user-provided,
and at times adding the implicit extern "C" bit to the directory entry.
There are lots of CC1 options that are very close, but none do quite
this, and they are all already overloaded for other purposes. In some
senses this makes the command lines more clean as it clearly indicates
which flags are exclusively used to implement internal detection of
"standard" header search paths.
Lots of the implementation of this is really crufty, due to the
surrounding cruft. It doesn't seem worth investing lots of time cleaning
this up as it isn't new, and hopefully *lots* of this code will melt
away as header search inside of the frontend becomes increasingly
trivial.
llvm-svn: 143798
|
|
|
|
| |
llvm-svn: 143770
|
|
|
|
|
|
|
|
|
| |
Windows. There are still FIXMEs and lots of problems with this code.
Some of them will be addressed shortly by my follow-up patches, but most
are going to wait until we isolate this code and can fix it properly.
This version should be no worse than what we had before.
llvm-svn: 143752
|
|
|
|
|
|
|
|
| |
I don't have any Debian system with one of these currently, and it seems
unlikely for one to show up suddenly. We can add more patterns here if
they become necessary.
llvm-svn: 143346
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
library search logic to "properly" handle multiarch installations. I've
tested this on both Debian unstable and the latest Ubuntu which both use
this setup, and this appears to work largely the same way as GCC does.
It isn't exactly the same, but it is close enough and more principled in
its behavior where it differs. This should resolve any failures to find
'crt1.o' etc on Debian-based Linux distributions. If folks find more
cases where we fail, please file bugs and CC me.
Test cases for all of the debian silliness are waiting both to simplify
the process of merging these down into the 3.0 release, and because
they're so crazy I haven't yet been able to really produce a fake tree
that represents what we need to test for. I'll eventually add them
though.
llvm-svn: 143344
|