Age | Commit message (Collapse) | Author |
|
Change-Id: If23612bcc67a98ba4b0328fa26444f522cc8d577
|
|
We build libc++ and libc++abi with -nodefaultlibs, so -rtlib=compiler-rt
has no effect and results in an 'argument unused during compilation'
warning which breaks the build when using -Werror. We can therefore drop
-rtlib=compiler-rt without any functional change; note that the actual
compiler-rt linking is handled by HandleCompilerRT.
Differential Revision: https://reviews.llvm.org/D58084
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@353786 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
We're building tests with -nostdlib which means that we need to
explicitly include the builtins library. When using libgcc (default)
we can simply include -lgcc_s on the link line, but when using
compiler-rt builtins we need a complete path to the builtins library.
This path is already available in CMake as <PROJECT>_BUILTINS_LIBRARY,
so we just need to pass that path to lit and if config.compiler_rt is
true, link it to the test.
Prior to this patch, running tests when compiler-rt is being used as
the builtins library was broken as all tests would fail to link, but
with this change running tests when compiler-rt bultins library is
being used should be supported.
Differential Revision: https://reviews.llvm.org/D56701
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@353208 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
There are several changes:
- Don't stringify Pythonized bools (that's why we're Pythonizing them)
- Support specifying target and sysroot via CMake variables
- Use consistent spelling for --target, --sysroot, --gcc-toolchain
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@353137 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
CMake has a standard way of setting target triple, sysroot and external
toolchain through CMAKE_<LANG>_COMPILER_TARGET, CMAKE_SYSROOT and
CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN. These are turned into
corresponding --target=, --sysroot= and --gcc-toolchain= variables add
included appended to CMAKE_<LANG>_FLAGS.
libunwind, libc++abi, libc++ provides their own mechanism through
<PROJECT>_TARGET_TRIPLE, <PROJECT>_SYSROOT and <PROJECT>_GCC_TOOLCHAIN
variables. These are also passed to lit via lit.site.cfg, and lit config
uses these to set the corresponding compiler flags when building tessts.
This means that there are two different ways of setting target, sysroot
and toolchain, but only one is properly supported in lit. This change
extends CMake build for libunwind, libc++abi and libc++ to also support
the CMake variables in addition to project specific ones in lit.
Differential Revision: https://reviews.llvm.org/D57670
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@353084 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
When linking library dependencies, we shouldn't need to export linked
libraries to dependents. We should be explicit about this in
target_link_libraries, otherwise other targets that depend on these such
as sanitizers get repeated (and possibly even conflicting) dependencies.
Differential Revision: https://reviews.llvm.org/D57456
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@352688 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
This reverts commit r352654: this broke libcxx and sanitizer bots.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@352658 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
When linking library dependencies, we shouldn't need to export linked
libraries to dependents. We should be explicit about this in
target_link_libraries, otherwise other targets that depend on these such
as sanitizers get repeated (and possibly even conflicting) dependencies.
Differential Revision: https://reviews.llvm.org/D57456
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@352654 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
This is useful when the static libunwind library is being linked into
shared libraries that may be used in with other shared libraries that
use different unwinder. We want to avoid avoid exporting libunwind
symbols in those cases. This achieved by a new CMake option which can be
enabled by libunwind vendors as needed.
The same CMake option has already been added to libc++ and libc++abi in
D55404 and D56026.
Differential Revision: https://reviews.llvm.org/D57107
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@352559 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
This fixes most references to the paths:
llvm.org/svn/
llvm.org/git/
llvm.org/viewvc/
github.com/llvm-mirror/
github.com/llvm-project/
reviews.llvm.org/diffusion/
to instead point to https://github.com/llvm/llvm-project.
This is *not* a trivial substitution, because additionally, all the
checkout instructions had to be migrated to instruct users on how to
use the monorepo layout, setting LLVM_ENABLE_PROJECTS instead of
checking out various projects into various subdirectories.
I've attempted to not change any scripts here, only documentation. The
scripts will have to be addressed separately.
Additionally, I've deleted one document which appeared to be outdated
and unneeded:
lldb/docs/building-with-debug-llvm.txt
Differential Revision: https://reviews.llvm.org/D57330
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@352514 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
library"
This reverts commit r352341: it broke the build on macOS which doesn't
seem to provide __libc_start_main in its C library.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@352411 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Refactor the get_llvm_lit_path() logic to respect LLVM_EXTERNAL_LIT,
and require the fallback to be defined explicitly
as LLVM_DEFAULT_EXTERNAL_LIT. This fixes building libcxx standalone
after r346888.
The old logic was using LLVM_EXTERNAL_LIT both as user-defined cache
variable and an optional pre-definition of default value from caller
(e.g. libcxx). It included a hack to make this work by assigning
the value back and forth but it was fragile and stopped working
in libcxx.
The new logic is simpler and more transparent. Default value is
provided in a separate variable, and used only when user-specified
variable is empty (i.e. not overriden).
Differential Revision: https://reviews.llvm.org/D57282
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@352374 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
The check_library_exists CMake uses a custom symbol definition. This
is a problem when checking for C library symbols because Clang
recognizes many of them as builtins, and returns the
-Wbuiltin-requires-header (or -Wincompatible-library-redeclaration)
error. When building with -Werror which is the default, this causes
the check_library_exists check fail making the build think that C
library isn't available.
To avoid this issue, we should use a symbol that isn't recognized by
Clang and wouldn't cause the same issue. __libc_start_main seems like
reasonable choice that fits the bill.
Differential Revision: https://reviews.llvm.org/D57142
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@352341 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
This is useful when the static libc++abi library is being linked into
shared libraries that may be used in with other shared libraries that
use different C++ library. We want to avoid avoid exporting libc++abi
or libc++ symbols in those cases. This achieved by a new CMake option
which can be enabled by libc++abi vendors as needed.
Differential Revision: https://reviews.llvm.org/D56026
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@352017 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
When built within the llvm runtimes directory, the runtimes
CMakeLists.txt adds the same.
Differential Revision: https://reviews.llvm.org/D56979
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351873 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
all missed!
Thanks to Alex Bradbury for pointing this out, and the fact that I never
added the intended `legacy` anchor to the developer policy. Add that
anchor too. With hope, this will cause the links to all resolve
successfully.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351731 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
to reflect the new license. These used slightly different spellings that
defeated my regular expressions.
We understand that people may be surprised that we're moving the header
entirely to discuss the new license. We checked this carefully with the
Foundation's lawyer and we believe this is the correct approach.
Essentially, all code in the project is now made available by the LLVM
project under our new license, so you will see that the license headers
include that license only. Some of our contributors have contributed
code under our old license, and accordingly, we have retained a copy of
our old license notice in the top-level files in each project and
repository.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351648 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
to reflect the new license.
We understand that people may be surprised that we're moving the header
entirely to discuss the new license. We checked this carefully with the
Foundation's lawyer and we believe this is the correct approach.
Essentially, all code in the project is now made available by the LLVM
project under our new license, so you will see that the license headers
include that license only. Some of our contributors have contributed
code under our old license, and accordingly, we have retained a copy of
our old license notice in the top-level files in each project and
repository.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351636 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351635 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
This installs the new developer policy and moves all of the license
files across all LLVM projects in the monorepo to the new license
structure. The remaining projects will be moved independently.
Note that I've left odd formatting and other idiosyncracies of the
legacy license structure text alone to make the diff easier to read.
Critically, note that we do not in any case *remove* the old license
notice or terms, as that remains necessary until we finish the
relicensing process.
I've updated a few license files that refer to the LLVM license to
instead simply refer generically to whatever license the LLVM project is
under, basically trying to minimize confusion.
This is really the culmination of so many people. Chris led the
community discussions, drafted the policy update and organized the
multi-year string of meeting between lawyers across the community to
figure out the strategy. Numerous lawyers at companies in the community
spent their time figuring out initial answers, and then the Foundation's
lawyer Heather Meeker has done *so* much to help refine and get us ready
here. I could keep going on, but I just want to make sure everyone
realizes what a huge community effort this has been from the begining.
Differential Revision: https://reviews.llvm.org/D56897
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351631 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351482 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
On MacOS, symbols start with a leading underscore, so just parse and
ignore it if present.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351481 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
With this patch, the copies of the files ItaniumDemangle.h,
StringView.h, and Utility.h are kept byte-for-byte in sync between
libcxxabi and llvm. All differences (namespaces, fallthrough, and
unreachable macros) are defined in each copies' DemanglerConfig.h.
This patch also adds a script to copy changes from libcxxabi
(cp-to-llvm.sh), and a README.txt explaining the situation.
Differential revision: https://reviews.llvm.org/D53538
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351474 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351341 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
In last year's update (D48219) it was suggested that the release manager
might want to do this, so here we go.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351194 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Bug: 112259977
Test: [[FIND OWNERS]] in Gerrit
Change-Id: Ibb169071dc01bda99f848bba851055572ab9643b
|
|
Change-Id: I171a8d418e753fd4e96a9e58ae14ebf1a20f3979
|
|
Change-Id: I609feced4a4f683725f221d75538b3c2763fcd52
|
|
Bug: 112259977
Test: [[FIND OWNERS]] in Gerrit
Change-Id: I2c53fefb8e5d09ec64fdf930d1ffee27b7557691
|
|
Summary:
std::bad_array_length was added by n3467, but this never made it into C++.
This commit removes the definition of std::bad_array_length from the headers
AND from the shared library. See the comments in the ABI changelog for details
about the ABI implications of this change.
Reviewers: mclow.lists, dexonsmith, howard.hinnant, EricWF
Subscribers: christof, jkorous, libcxx-commits
Differential Revision: https://reviews.llvm.org/D54804
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@347903 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Summary:
This (very specialized) function was added to enable an LLDB use case.
Now that a more generic interface (overriding of parser functions -
D52992) is available, and LLDB has been converted to use that (D54074),
the function is unused and can be removed.
Reviewers: erik.pilkington, sgraenitz, rsmith
Subscribers: mgorny, hiraditya, christof, libcxx-commits, llvm-commits
Differential Revision: https://reviews.llvm.org/D54893
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@347670 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Change-Id: Id0164b1c30ea7e937c473276ec74ccc6d1b99189
|
|
This is needed when cross-compiling for a different target since
CFLAGS may contain additional flags like -resource-dir which
change the location in which compiler-rt builtins are found.
Differential Revision: https://reviews.llvm.org/D54371
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@346820 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@346607 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Summary:
This silences the two -Wimplicit-fallthrough warnings clang finds in
ItaniumDemangle.h in libc++abi.
Clang does not have a GNU attribute spelling for this attribute, so this
is necessary.
I will commit the same change to the LLVM demangler soon.
Reviewers: EricWF, ldionne
Subscribers: christof, erik.pilkington, cfe-commits
Differential Revision: https://reviews.llvm.org/D53985
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@345870 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Fuchsia already supports this interface.
Differential Revision: https://reviews.llvm.org/D53801
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@345534 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Summary:
This uses CRTP (for performance reasons) to allow a user the override
demangler functions to implement custom parsing logic. The motivation
for this is LLDB, which needs to occasionaly modify the mangled names.
One such instance is already implemented via the TypeCallback member,
but this is very specific functionality which does not help with any
other use case. Currently we have a use case for modifying the
constructor flavours, which would require adding another callback. This
approach does not scale.
With CRTP, the user (LLDB) can override any function it needs without
any special support from the demangler library. After LLDB is ported to
use this instead of the TypeCallback mechanism, the callback can be
removed.
More context can be found in D50599.
Reviewers: erik.pilkington, rsmith
Subscribers: christof, ldionne, llvm-commits, libcxx-commits
Differential Revision: https://reviews.llvm.org/D52992
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344607 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Change-Id: Iad73c26d7b08137c5c5c0c07559aab6ea3fd0c82
|
|
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344564 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
This directory uses LLVM style.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344316 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344215 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344208 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Summary:
I copied the sanitizer-related logic in libcxx/lib/CMakeLists.txt. In
the future, it would be great to avoid duplicating this logic in the
compiler, libc++ and libc++abi.
Reviewers: EricWF
Subscribers: mgorny, christof, dexonsmith, libcxx-commits, davide
Differential Revision: https://reviews.llvm.org/D53028
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344191 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344156 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
https://reviews.llvm.org/D42242
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344152 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Summary:
This was committed back in september (D51463), but it seems it never
made it into the libcxxabi copy.
The original commit message was:
The hash computed for an ArrayType was different when first constructed
versus when later profiled due to the constructor default argument, and
we were not tracking constructor / destructor variant as part of the
mangled name AST, leading to incorrect equivalences.
Reviewers: erik.pilkington, rsmith, EricWF
Subscribers: christof, ldionne, libcxx-commits
Differential Revision: https://reviews.llvm.org/D53063
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344121 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
The "dynamic_cast error 2" error can apparently happen when the same
type (with RTTI) is defined in more than one translation unit, and
those translation units are linked together. This is technically an
ODR violation, but making the error message more obvious is still
helpful.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344052 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@342817 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
This patch fixes a bug where exceptions in 32 bit builds
would be incorrectly aligned because malloc only provides 8 byte aligned
memory where 16 byte alignment is needed.
This patch makes libc++abi correctly use posix_memalign when it's
available. This requires defining _LIBCPP_BUILDING_LIBRARY so that
libc++ only defines _LIBCPP_HAS_NO_ALIGNED_ALLOCATION when libc doesn't
support it and not when aligned new/delete are disable for other
reasons.
This bug somehow made it into the 7.0 release, making it a regression.
Therefore this patch should be included in the next dot release.
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@342815 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Summary: Mark it as unused to avoid -Wunused-parameter.
Reviewers: EricWF, srhines, mstorsjo
Subscribers: christof, ldionne, libcxx-commits, cfe-commits
Differential Revision: https://reviews.llvm.org/D52368
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@342764 91177308-0d34-0410-b5e6-96231b3b80d8
|