summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-02-27Merge 6f10573 for LLVM update to 353983HEADmastermainllvm-r353983Yi Kong
Change-Id: If23612bcc67a98ba4b0328fa26444f522cc8d577
2019-02-12[CMake] Avoid passing -rtlib=compiler-rt when using compiler-rtPetr Hosek
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
2019-02-05[CMake] Support compiler-rt builtins library in testsPetr Hosek
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
2019-02-05[CMake] Update lit test configurationPetr Hosek
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
2019-02-04[CMake] Support CMake variables for setting target, sysroot and toolchainPetr Hosek
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
2019-01-30[CMake] Use correct visibility for linked libraries in CMakePetr Hosek
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
2019-01-30Revert "[CMake] Use correct visibility for linked libraries in CMake"Petr Hosek
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
2019-01-30[CMake] Use correct visibility for linked libraries in CMakePetr Hosek
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
2019-01-29[libunwind] Support building hermetic static libraryPetr Hosek
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
2019-01-29Adjust documentation for git migration.James Y Knight
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
2019-01-28Revert "[CMake] Use __libc_start_main rather than fopen when checking for C ↵Petr Hosek
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
2019-01-28[cmake] Fix get_llvm_lit_path() to respect LLVM_EXTERNAL_LIT alwaysMichal Gorny
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
2019-01-28[CMake] Use __libc_start_main rather than fopen when checking for C libraryPetr Hosek
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
2019-01-24[libcxxabi] Support building hermetic static libraryPetr Hosek
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
2019-01-22Enable LLVM_ENABLE_WARNINGS when building standalone out of treeMartin Storsjo
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
2019-01-21Fix typos throughout the license files that somehow I and my reviewersChandler Carruth
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
2019-01-19Update more file headers across all of the LLVM projects in the monorepoChandler Carruth
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
2019-01-19Update the file headers across all of the LLVM projects in the monorepoChandler Carruth
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
2019-01-19Remove unnecesasry comment markers.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351635 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-19Install new LLVM license structure and new developer policy.Chandler Carruth
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
2019-01-17[demangler] Support for block literals.Erik Pilkington
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351482 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-17[demangler] Ignore leading underscores if presentErik Pilkington
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
2019-01-17NFC: Make the copies of the demangler byte-for-byte identicalErik Pilkington
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
2019-01-16Found another version number to increase from 8 to 9Hans Wennborg
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@351341 91177308-0d34-0410-b5e6-96231b3b80d8
2019-01-15Update year in license filesHans Wennborg
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
2019-01-14Include toolchain/llvm_android OWNERSllvm-svn.349610Chih-Hung Hsieh
Bug: 112259977 Test: [[FIND OWNERS]] in Gerrit Change-Id: Ibb169071dc01bda99f848bba851055572ab9643b
2019-01-14Merge 307bb62 for LLVM update to 349610Pirama Arumuga Nainar
Change-Id: I171a8d418e753fd4e96a9e58ae14ebf1a20f3979
2019-01-14 revert to previous base llvm-svn.346389Pirama Arumuga Nainar
Change-Id: I609feced4a4f683725f221d75538b3c2763fcd52
2018-11-30Include toolchain/llvm_android OWNERSChih-Hung Hsieh
Bug: 112259977 Test: [[FIND OWNERS]] in Gerrit Change-Id: I2c53fefb8e5d09ec64fdf930d1ffee27b7557691
2018-11-29[libcxx] Remove bad_array_lengthLouis Dionne
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
2018-11-27[Demangle] remove itaniumFindTypesInMangledNamePavel Labath
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
2018-11-15Merge 150fc2e for LLVM update to 346389Chih-Hung Hsieh
Change-Id: Id0164b1c30ea7e937c473276ec74ccc6d1b99189
2018-11-14[CMake] Passthrough CFLAGS when checking the compiler-rt pathPetr Hosek
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
2018-11-11Port LLVM r346606 to libcxxabi.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@346607 91177308-0d34-0410-b5e6-96231b3b80d8
2018-11-01Use C++11 fallthrough attribute syntax when available and add a breakReid Kleckner
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
2018-10-29[libc++abi] Provide __cxa_thread_atexit on FuchsiaPetr Hosek
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
2018-10-16cxa_demangle: make demangler's parsing functions overridablePavel Labath
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
2018-10-16Merge e878418 for LLVM update to 344140llvm-svn.344140Yi Kong
Change-Id: Iad73c26d7b08137c5c5c0c07559aab6ea3fd0c82
2018-10-15NFC: Fix a -Wsign-conversion warningErik Pilkington
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344564 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-11Override libcxxabi's .clang-format in the demangle directoryErik Pilkington
This directory uses LLVM style. git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344316 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-11Use C++03 friendly version of alignofEric Fiselier
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344215 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-11Update libc++abi's detection of aligned allocation after r344207.Eric Fiselier
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344208 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-10[libcxxabi] Allow building with sanitizers enabledLouis Dionne
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
2018-10-10Blind attempt to fix linker errors when building libc++abit w/o exceptions.Marshall Clow
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344156 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-10Make libc++abi work better with gcc's ARM unwind library. Reviewed as ↵Marshall Clow
https://reviews.llvm.org/D42242 git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@344152 91177308-0d34-0410-b5e6-96231b3b80d8
2018-10-10Port llvm r342166 to libcxxabi demanglerPavel Labath
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
2018-10-09[NFC][unwind] Improve error message when a type has more than one RTTIsLouis Dionne
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
2018-09-22Update docs to reference new libc++ mailing lists.Eric Fiselier
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@342817 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-22Fix incorrectly aligned exceptions in 32 bit builds.Eric Fiselier
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
2018-09-21[libc++abi] is_strcmp parameter to is_equal is unused for WIN32Pirama Arumuga Nainar
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