The regex being overspecified meant that host tests were not properly
replacing the dummy.o when linking, meaning all of the tests that were
running were running nothing but `int main() {}`.
The good news is that there weren't any failing tests hiding behind
this on Linux.
Change-Id: I9bea82ff1fefdf156d68a58689e532807c8d999b
The change in how we link the unwinder/libgcc seems to have broken
exception handling for targets using libunwind, but it now works using
the libgcc unwinder.
Change-Id: Id7e92423eff1066933b3a4a15fab13bad81c4935
_run never gets called any more, so the LD_LIBRARY_PATH wasn't being
set any more. The tests were still passing locally for me because the
tests were happily using the libc++.so from my system rather than the
one we build.
Wasn't obvious from the buildbot because the display for the test
results is absolutely terrible and they got lost in the noise of the
known failures.
Change-Id: Ib2df196ec6748718930e70887b7d0099884d792c
The host tests were being compiled into the target's out directory.
This wasn't causing any problems, but seeing it made me thing there
was something more sinister going on.
Change-Id: Ic2b9317512340e718f5c2648ecb23409dad7dcf9
The build system handles the reasons we used to do this now, and doing
this commonly causes multiple symbol definition problems when it
collides with libgcc.
Bug: 18389856
Change-Id: Ife74d66c2327751ca47630216bea9a08b8270c89
We want to make linking the unwinder the responsibility of the build
system rather than bundling it here (so we can link it with
--exclude-libs to prevent cross-talk between unwinders). Since these
unwinders will be linked if using libc++, we need to manually link it
in this case.
Bug: 18471342
Bug: 19958712
Change-Id: I351da9e7cd940887a60149b3e448d342833769d8
The upstream test runner has changed enough that the way Android was
shimmed into it was no longer compatible. This adapts our test runner
to the new APIs for cross-compiling and remote execution.
There's probably a fair amount of dead code in the Android test
runners now (or at least some code that should be made dead). I'll
clean it up in a later patch, but want to get us up and running for
now.
The NDK test runner will need to be updated as well. There aren't any
continuous runs for that, so that will be fixed in a follow up as
well.
Change-Id: I1756f538aa6c7136ebd26d1e81c8299b87f0c6b2
GCC fails to compile the following pattern with this patch:
#include <set>
std::set<int> foo;
#include <map>
using namespace std;
std::map<int, int> bar;
It looks like a GCC bug, but there is some external code that trips
this issue that I'd rather leave unmodified.
This reverts commit 59f573f670.
Bug: 19606303
Change-Id: I72ac5619b3572e03db83850cdaadc4ec618f312e
Summary:
The data files for any given test will be in the same directory as the
source with a file name that matches *.dat. To make these available to
tests running remotely (such as over adb or ssh), copy them into the
test's remote working directory.
Note that we will perform more copies than we actually need. The data
files in the directory may only be used by one of the tests, but will
be copied for all tests in the same directory.
This patch also moves the remote test binary into the working
directory (previously it was only invoked from the working directory
rather than existing in it).
Reviewers: EricWF, jroelofs
Reviewed By: jroelofs
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D8118
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@231864 91177308-0d34-0410-b5e6-96231b3b80d8
Change-Id: I53d095bd26e2f38bc938745c205439b1ae715de1
We should probably be using this argument to find the data files for
the tests, but that isn't implemented yet.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@231498 91177308-0d34-0410-b5e6-96231b3b80d8
Change-Id: Idbf369eada1de93a21180edc6abeeebf89e6cdff
The PrefixExecutor wasn't passing the exe_path down the chain, so the
command was overriding that, the work_dir was being passed as the
command, and so on.
I've cleaned up a few pylint issues while I was here.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@231496 91177308-0d34-0410-b5e6-96231b3b80d8
Change-Id: Ice5baa25246cf5830c91b329eaeb819ae0dd1aad
This depends on Bionic's NDK compatibility library, which is still a
WIP.
We should probably consider adding both compatlib and non-compatlib
flows to the NDK so that users who only care about the latest versions
can avoid using the compatblib (there are probably going to be bugs
for a while).
Bug: 19149083
Change-Id: I76907cc6cfb1960a4dbd144974ce20cdd9b94777
LOCAL_ADDITIONAL_DEPENDENCIES := $(THIS_MAKEFILE) is no longer
necessary.
The ifneq ARM block for libdl not only isn't correct (broken for
32-bit arm on an aarch64 device), but is already linked for all
architectures just above.
Change-Id: Ie2ad80b22dbf73e5834be26bccecd4a811ad5ac7
Checking errno without first checking that the call failed means that
if some other call prior to mkstemp failed with EINVAL prior to this,
the assert would fire even if mkstemp succeeded. If something failed
with EEXIST, it would go in to an infinite loop.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@229035 91177308-0d34-0410-b5e6-96231b3b80d8
Change-Id: I512f29f2cb4b379e9f33e9bc12c060851152647c
This isn't actually used for anything, and is broken on Darwin
(currently causing build failures now that the triple is passed to aid
cross compiling). Rather than fix unused code, just remove it.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@226243 91177308-0d34-0410-b5e6-96231b3b80d8
(cherry picked from commit cbc84977aa)
Change-Id: I734aa3065ef7ece0c6582b3f00674e61171ea358
Everything can be broken out into modules now, so there's not need to
keep the whole world in one file. This also brings us to the point
where we no longer require changes to any files in test/ compared to
upstream, only new files.
Change-Id: I3da27e12e6e2890355013c51567415436c4b517b
Summary:
I've moved the bulk of `lit.cfg` into `test/libcxx/testconfig.py` and
`test/libcxx/testformat.py`. All that remains in `lit.cfg` is the
logic to discover lit.site.cfg if lit.cfg was run directly, and the
logic for loading configuration variants.
The configuration variant flow has changed with this patch. Rather
than instantiating an object of type `<VARIANT>Configuration`, we now
instatiate an object of type `Configuration` that was loaded from the
module `<VARIANT>.testconfig.py`.
This has to be done on a per-project basis rather than in LIT itself
because LIT doesn't actually know where the real test directory is,
only where the site configuration is (which is usually in the output
directory). It's simple enough to do though, so it's fine to require
each project to do it themselves.
I also cleaned up all the pylint issues while I was here, which was
mostly just a matter of fixing long lines.
Reviewers: mclow.lists, jroelofs, EricWF
Reviewed By: EricWF
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D6881
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@225532 91177308-0d34-0410-b5e6-96231b3b80d8
(cherry picked from commit aa66357f48)
Change-Id: I07dafbe1085d9decd42f6aa28889dde1f5aaaa85
This adds all the permutations for tests as make targets of the form
test-libcxx-(host|target)-(clang|gcc)-(32|64).
This also changes the host tests to use the Android build system (like
I had done with https://android-review.googlesource.com/#/c/111924/).
This probably should have been a separate patch, but I got carried
away (and wanted to make sure this new approach would work for both),
and now they're non-trivial to split.
Change-Id: Ie99caf6c3ff21c833408f99d37299d966ee7bc94