aboutsummaryrefslogtreecommitdiff
path: root/libunwind
AgeCommit message (Collapse)AuthorFilesLines
2023-01-24Bump the trunk major version to 17llvmorg-17-initTom Stellard1-2/+2
2023-01-13[libunwind] Fixed an upcoming clang -Wsign-conversion warningFahad Nayyar1-2/+2
Fixing an upcoming clang warning (from https://reviews.llvm.org/D139114) in libunwind. Differential Revision: https://reviews.llvm.org/D141515
2022-12-14[libunwind] Use .irp directives. NFCFangrui Song2-402/+61
The repeated instructions make the file long and difficult to read. Simplify them with .irp directives. Skip PowerPC since AIX assembler doesn't support .irp Reviewed By: #libunwind, compnerd Differential Revision: https://reviews.llvm.org/D139368
2022-12-07Revert "[libunwind] Use .irp directives. NFC"David Tenty2-118/+900
This reverts commit 8482e95f75d02227fbf51527680c0b5424bacb69, which breaks on AIX due to unsupported psudeo-ops in the assembly. Differential Revision: https://reviews.llvm.org/D139368
2022-12-06[libunwind] Use .irp directives. NFCFangrui Song2-900/+118
The repeated instructions make the file long and difficult to read. Simplify them with .irp directives. Reviewed By: #libunwind, compnerd Differential Revision: https://reviews.llvm.org/D139368
2022-12-06[libunwind][RISCV] Support reading of VLENB CSR registerSergey Kachkov3-0/+69
Support reading of VLENB (vector byte length) control register, that can be required for correct unwinding of RVV objects on stack. Differential Revision: https://reviews.llvm.org/D136264
2022-12-05Revert "[CMake] Use LLVM_TARGET_TRIPLE in runtimes"Leonard Chan2-3/+3
This reverts commit bec8a372fc0db95852748691c0f4933044026b25. This causes many of these errors to appear when rebuilding runtimes part of fuchsia's toolchain: ld.lld: error: /usr/local/google/home/paulkirth/llvm-upstream/build/lib/x86_64-unknown-linux-gnu/libunwind.a(libunwind.cpp.o) is incompatible with elf64-x86-64 This can be reproduced by making a complete toolchain, saving any source file with no changes, then rerunning ninja distribution.
2022-11-29[CMake] Use LLVM_TARGET_TRIPLE in runtimesPetr Hosek2-3/+3
This variable is derived from LLVM_DEFAULT_TARGET_TRIPLE by default, but using a separate variable allows additional normalization to be performed if needed. Differential Revision: https://reviews.llvm.org/D137451
2022-11-15[libunwind][LoongArch] Add 64-bit LoongArch supportzhanglimin8-1/+527
Defines enums for the LoongArch registers. Adds the register class implementation for LoongArch. Adds save and restore context functionality. This only supports 64 bits integer and float-point register implementation. Fix https://github.com/llvm/llvm-project/issues/55398 Reviewed By: SixWeining Differential Revision: https://reviews.llvm.org/D137010
2022-11-10[libunwind][NFC] Fix typo in libunwind debug stringjinge901-25/+25
Reviewed By: mstorsjo Differential Revision: https://reviews.llvm.org/D137529 Signed-off-by: jinge90 <ge.jin@intel.com>
2022-11-09[libunwind] Check corrupted return address in unwind_phase2 when CET is enabled.jinge901-0/+19
If CET shadow stack is enabled, we count the number of stack frames skipped and adjust CET shadow stack based on the number in libunwind unwind_phase2. At the same time, we can enhance security via comparing the return address in normal stack against counterpart in CET shadow stack, if they don't match, it means the return address stored in normal stack has been corrupted and we will return _URC_FATAL_PHASE2_ERROR in that case. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D136667 Signed-off-by: jinge90 <ge.jin@intel.com>
2022-11-08[CMake] Fix -Wstrict-prototypesSam James1-1/+1
Fixes warnings (or errors, if someone injects -Werror in their build system, which happens in fact with some folks vendoring LLVM too) with Clang 16: ``` +/var/tmp/portage.notmp/portage/sys-devel/llvm-15.0.4/work/llvm_build-abi_x86_64.amd64/CMakeFiles/CMakeTmp/src.c:3:9: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes] -/var/tmp/portage.notmp/portage/sys-devel/llvm-14.0.4/work/llvm_build-abi_x86_64.amd64/CMakeFiles/CMakeTmp/src.c:3:9: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes] int main() {return 0;} ^ void ``` Differential Revision: https://reviews.llvm.org/D137503
2022-10-26[libunwind] Add module maps for libunwindIan Anderson3-0/+16
Add module maps for the libunwind headers. unwind_arm_ehabi.h and unwind_itanium.h aren't covered because they don't get installed on all platforms. Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D135345
2022-10-18[CMake] Fix LIBUNWIND_ENABLE_CET build after D110005jinge901-2/+2
D110005 renamed LIBUNWIND_SUPPORTS_* to CXX_SUPPORTS_*. Reviewed By: MaskRay, #libunwind, mstorsjo Differential Revision: https://reviews.llvm.org/D136131
2022-10-12Revert "[runtimes] Always define cxx_shared, cxx_static & other targets"Haowei Wu1-30/+26
This reverts commit 79ee0342dbf025bc70f237bdfe9ccb4e10a592ce which breaks the LLVM TSan bots.
2022-10-12[runtimes] Always define cxx_shared, cxx_static & other targetsLouis Dionne1-26/+30
However, mark them as EXCLUDE_FROM_ALL when we don't want to build them. Simply declaring the targets should be of no harm, and it allows other projects to mention these targets regardless of whether they end up being built or not. While the diff may not make that obvious, this patch basically moves the definition of e.g. `cxx_shared` out of the `if (LIBCXX_ENABLE_SHARED)` and instead marks it as `EXCLUDE_FROM_ALL` conditionally on whether LIBCXX_ENABLE_SHARED is passed. It then does the same for libunwind and libc++abi targets. Differential Revision: https://reviews.llvm.org/D134221
2022-10-11[runtimes] Add the ability to customize the output name of libc++, libc++abi ↵Louis Dionne2-2/+5
and libunwind We already had the ability to do that for libc++.dylib, so this only adds consistency for all the runtime libraries. This should allow working around difficulties on AIX as described in https://llvm.org/D134221. Differential Revision: https://reviews.llvm.org/D135669
2022-10-11[libunwind] Install the headers by defaultLouis Dionne1-1/+1
Just like we install libc++ and libc++abi headers by default when we install the library, it makes sense to install the libunwind headers by default when we build libunwind. In the current state of things, there is an increased risk that folks are using older (previously installed) libunwind headers along with a recent libunwind dylib, which is not ideal. Differential Revision: https://reviews.llvm.org/D135663
2022-09-30[libunwind] Fix compile error with CROSS_UNWINDINGFlorian Mayer1-1/+4
Reviewed By: #libunwind, MaskRay, mgorny Differential Revision: https://reviews.llvm.org/D134969
2022-09-30[runtimes] Remove all traces of the legacy testing configuration systemLouis Dionne7-147/+0
Now that all jobs have moved over to the new style of Lit configuration, we can remove all traces of the legacy testing configuration system. This includes: - Cache settings that are not honored or useful anymore - Several CMake options that were only useful in the context of the legacy Lit configuration system - A bunch of Python support code that is not used anymore - The legacy lit.cfg.in files themselves Differential Revision: https://reviews.llvm.org/D134650
2022-09-21[libunwind] Handle G in personality stringFlorian Mayer5-27/+69
Tested with the following program: ``` static volatile int* x = nullptr; void throws() __attribute__((noinline)) { if (getpid() == 0) return; throw "error"; } void maybe_throws() __attribute__((noinline)) { volatile int y = 1; x = &y; throws(); y = 2; } int main(int argc, char** argv) { int y; try { maybe_throws(); } catch (const char* e) { //printf("Caught\n"); } y = *x; printf("%d\n", y); // should be MTE failure. return 0; } ``` Built using `clang++ -c -O2 -target aarch64-linux -fexceptions -march=armv8-a+memtag -fsanitize=memtag-heap,memtag-stack` Currently only Android implements runtime support for MTE stack tagging. Without this change, we crash on `__cxa_get_globals` when trying to catch the exception (because the stack frame __cxa_get_globals frame will fail due to tags left behind on the stack). With this change, we crash on the `y = *x;` as expected, because the stack frame has been untagged, but the pointer hasn't. Reviewed By: #libunwind, compnerd, MaskRay Differential Revision: https://reviews.llvm.org/D128998
2022-09-16[libunwind] Fix usage of `_dl_find_object` on 32-bit x86Adrian Vogelsgesang1-5/+0
On 32-bit x86, `_dl_find_object` also returns a `dlfo_eh_dbase` address. So far, compiling against a version of `_dl_find_object` which returns a `dlfo_eh_dbase` was blocked using a `#if` + `#error`. This commit now removes this compile time assertion and simply ignores the returned `dlfo_eh_dbase`. All test cases are passing on a 32-bit build now. According to https://www.gnu.org/software/libc/manual/html_node/Dynamic-Linker-Introspection.html, `dlfo_eh_dbase` should be the base address for all DW_EH_PE_datarel relocations. However, glibc/elf/dl-find_object.h says that eh_dbase is the relocated DT_PLTGOT value. I don't understand how those two statements fit together, but to fix 32-bit x86, ignoring `dlfo_eh_dbase` seems to be good enough. Fixes #57733 Differential Revision: https://reviews.llvm.org/D133846
2022-09-07[libunwind] Fix a few libunwind includesRyan Prichard3-14/+15
In UnwindCursor.hpp, include config.h before checking _LIBUNWIND_SUPPORT_SEH_UNWIND. Include libunwind_ext.h for UNW_STEP_SUCCESS. Differential Revision: https://reviews.llvm.org/D86766
2022-08-20[libunwind] Fixed a number of typosGabriel Ravier15-29/+30
I went over the output of the following mess of a command: `(ulimit -m 2000000; ulimit -v 2000000; git ls-files -z | parallel --xargs -0 cat | aspell list --mode=none --ignore-case | grep -E '^[A-Za-z][a-z]*$' | sort | uniq -c | sort -n | grep -vE '.{25}' | aspell pipe -W3 | grep : | cut -d' ' -f2 | less)` and proceeded to spend a few days looking at it to find probable typos and fixed a few hundred of them in all of the llvm project (note, the ones I found are not anywhere near all of them, but it seems like a good start). Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D130948
2022-08-18Revert "[cmake] Use `CMAKE_INSTALL_LIBDIR` too"John Ericson2-4/+6
This reverts commit f7a33090a91015836497c75f173775392ab0304d. Unfortunately this causes a number of failures that didn't show up in my local build.
2022-08-18[cmake] Use `CMAKE_INSTALL_LIBDIR` tooJohn Ericson2-6/+4
We held off on this before as `LLVM_LIBDIR_SUFFIX` conflicted with it. Now we return this. `LLVM_LIBDIR_SUFFIX` is kept as a deprecated way to set `CMAKE_INSTALL_LIBDIR`. The other `*_LIBDIR_SUFFIX` are just removed entirely. I imagine this is too potentially-breaking to make LLVM 15. That's fine. I have a more minimal version of this in the disto (NixOS) patches for LLVM 15 (like previous versions). This more expansive version I will test harder after the release is cut. Reviewed By: sebastian-ne, ldionne, #libc, #libc_abi Differential Revision: https://reviews.llvm.org/D130586
2022-08-17[compiler-rt][libunwind][runtimes] Recategorize `llvm_check_linker_flag` langsJohn Ericson1-1/+1
Done according to @phosek's comments in D117537, but not done then to separate pure refactor (that) from possible behavior change (this). Wasn't working before, but I think that was due to an issue of mismatched variable names fixed in D110005. Reviewed By: phosek, #libunwind, #libc_abi Differential Revision: https://reviews.llvm.org/D117833
2022-08-12[libunwind][AIX] Implement _Unwind_FindEnclosingFunction() using traceback ↵Xing Xue2-1/+32
table on AIX Summary: The implementation of _Unwind_FindEnclosingFunction(void *ip) takes the context of itself and then uses the context to get the info of the function enclosing ip. This approach does not work for AIX because on AIX, the TOC base in GPR2 is used as the base for calculating relative addresses. Since _Unwind_FindEnclosingFunction() may be in a different shared lib than the function containing ip, their TOC bases can be different. Therefore, using the value of GPR2 in the context from _Unwind_FindEnclosingFunction() as the base results in incorrect addresses. On the other hand, the start address of a function is available in the traceback table following the instructions of each function on AIX. To get to the traceback table, search a word of 0 starting from ip and the traceback table is located after the word 0. This patch implements _Unwind_FindEnclosingFunction() for AIX by obtaining the function start address from its traceback table. Reviewed by: compnerd, MaskRay, libunwind Differential Revision: https://reviews.llvm.org/D131709
2022-08-12[libunwind] Remove __ANDROID_API__ < 18 workaroundFangrui Song1-23/+1
https://github.com/android/ndk/wiki/Changelog-r24 shows that the NDK has moved forward to at least a minimum target API of 19. Remove old workaround. Reviewed By: #libunwind, danalbert Differential Revision: https://reviews.llvm.org/D131792
2022-08-09[libunwind] Use `_dl_find_object` if availableAdrian Vogelsgesang1-0/+55
As shown in P2544R0 [1] and the accompanying benchmark [2], the current unwinding logic does not scale for multi-threaded programs. This is because `dl_iterate_phdr` takes a global lock. glibc 2.35 added `_dl_find_object` which directly returns the unwind info for a given target address. `_dl_find_object` is fully lock-free and hence allows parallel exception unwinding on multiple threads. With this commit, libunwind now takes advantage of `_dl_find_object`. Thereby, this commit improves libunwind's performance on benchmark [2] for unwinding exception on 20 threads from 1103ms to 78ms. (measured on Intel Xeon Silver 4114 with 20 physical cores) [1] https://isocpp.org/files/papers/P2544R0.html [2] https://github.com/neumannt/exceptionperformance Detailed performance numbers from the benchmark: Before: > Testing unwinding performance: sqrt computation with occasional errors > > testing baseline using 1 2 4 8 16 20 threads > failure rate 0%: 34 35 34 35 35 36 > testing exceptions using 1 2 4 8 16 20 threads > failure rate 0%: 16 32 33 34 35 36 > failure rate 0.1%: 16 32 34 36 35 36 > failure rate 1%: 20 40 40 43 90 113 > failure rate 10%: 59 92 140 304 880 1103 > [...] > > Testing invocation overhead: recursive fib with occasional errors > > testing exceptions using 1 2 4 8 16 20 threads > failure rate 0%: 19 32 37 38 39 36 > failure rate 0.1%: 22 32 40 40 39 34 > failure rate 1%: 20 28 38 39 48 40 > failure rate 10%: 25 39 44 50 92 113 After: > Testing unwinding performance: sqrt computation with occasional errors > > testing baseline using 1 2 4 8 16 20 threads > failure rate 0%: 19 30 35 38 39 35 > testing baseline using 1 2 4 8 16 20 threads > failure rate 0%: 32 35 33 34 34 36 > testing exceptions using 1 2 4 8 16 20 threads > failure rate 0%: 16 35 33 37 35 35 > failure rate 0.1%: 16 32 36 33 34 37 > failure rate 1%: 21 37 39 40 40 41 > failure rate 10%: 72 75 76 80 80 78 > [...] > > Testing invocation overhead: recursive fib with occasional errors > > testing baseline using 1 2 4 8 16 20 threads > failure rate 0%: 18 35 37 34 38 37 > testing exceptions using 1 2 4 8 16 20 threads > failure rate 0%: 19 33 40 40 41 39 > failure rate 0.1%: 21 33 39 38 39 38 > failure rate 1%: 20 36 39 40 41 40 > failure rate 10%: 25 45 41 42 44 43 Differential Revision: https://reviews.llvm.org/D130668
2022-08-08[libunwind][AIX] Save/restore errno before/after system calls ↵Xing Xue1-0/+6
dlopen/dlsym/dlclose Summary: libunwind on AIX calls dlopen()/dlsym()/dlclose() to dynamically load libc++abi and get the personality for state table EH when it is running against the legacy xlcang++ compiler genereated applications. dlopen() sets errno to 0 when it is successful, which clobbers the value in errno from the user code. This seems to be an AIX bug that it should not set errno to 0 according to POSIX. We will open a bug report to AIX but in the mean time there won't be time line when AIX will have a fix and even AIX does fix it, it won't help earlier AIX releases in the field. This patch saves and restores errno before and after these calls so that user code can work as expected. Reviewed by: compnerd, libunwind Differential Revision: https://reviews.llvm.org/D131292
2022-08-04[libunwind] undef NDEBUG for assert.h in tests.Florian Mayer6-0/+6
This makes sure the assertions also get verified in optimized builds. This matches what is already done in bad_unwind_info.pass.cpp. Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D131210
2022-08-03[libunwind] Remove unused substitution in AIX libunwind configLouis Dionne1-1/+1
It must have been a copy-paste error, since cxx-include is never defined by the libunwind config. Differential Revision: https://reviews.llvm.org/D131030
2022-07-28Update references to mailing lists that have moved to Discourse.tlattner1-1/+1
2022-07-26Bump the trunk major version to 16llvmorg-16-initTom Stellard1-2/+2
2022-07-18[libunwind][SystemZ] Use process_vm_readv to avoid potential segfaultsUlrich Weigand2-4/+24
Fix potential crashes during unwind when checking for signal frames and the current PC is invalid. The same bug was fixed for aarch64 in https://reviews.llvm.org/D126343. Reviewed by: MaskRay Differential Revision: https://reviews.llvm.org/D129856
2022-06-27[libunwind,EHABI,ARM] Fix get/set of RA_AUTH_CODE.Simon Tatham1-4/+2
According to EHABI32 §8.5.2, the PAC for the return address of a function described in an exception table is supposed to be addressed in the _Unwind_VRS_{Get,Set} API by setting regclass=_UVRSC_PSEUDO and regno=0. (The space of 'regno' values is independent for each regclass, and for _UVRSC_PSEUDO, there is only one valid regno so far.) That is indeed what libunwind's _Unwind_VRS_{Get,Set} functions expect to receive. But at two call sites, the wrong values are passed in: regno is being set to UNW_ARM_RA_AUTH_CODE (0x8F) instead of 0, and in one case, regclass is _UVRSC_CORE instead of _UVRSC_PSEUDO. As a result, those calls to _Unwind_VRS_{Get,Set} return _UVRSR_FAILED, which their callers ignore. So if you compile in the AUTG instruction that actually validates the PAC, it will try to validate what's effectively an uninitialised register as an authentication code, and trigger a CPU fault even on correct exception unwinding. Reviewed By: danielkiss Differential Revision: https://reviews.llvm.org/D128522
2022-06-20[libunwind] Ensure test/libunwind_01.pass is not completely inlinedAlex Richardson1-7/+22
By adding noinline and calling fprintf before returning we ensure that every function will have a distinct call frame and that the return address will always be saved instead of saving the target in main as the result. Before this change all backtraces were always backtrace -> main -> _start, i.e. always exactly three entries. This happenend because all calls were inlined in main() and the test just happenend to pass because there is at least _start before main. I found this while fixing some bugs in libunwind for CHERI and noticed that the test was passing even though the code was completely broken. Obtained from: https://github.com/CTSRD-CHERI/llvm-project Reviewed By: #libunwind, ldionne, MaskRay Differential Revision: https://reviews.llvm.org/D126611
2022-06-06[libunwind] Don't store a predecremented PC when using SEHMartin Storsjö2-1/+9
This fixes unwinding in boundary cases on ARM with SEH. In the case of ARM/Thumb, disp->ControlPc points at the following instruction, with the thumb bit set. Thus by decrementing 1, it still points at the next instruction. To achieve the desired effect of pointing at the previous instruction, one first has to strip out the thumb bit, then do the decrement by 1 to reach the previous instruction. When libcxxabi looks for call site ranges, it already does `_Unwind_GetIP(context) - 1` (in `scan_eh_tab` in libcxxabi/src/cxa_personality.cpp), so we shouldn't do the corresponding `- 1` multiple times. In the case of libcxxabi on Thumb, `funcStart` (still in `scan_eh_tab`) may have the thumb bit set. If the program counter address is decremented both in libunwind (first removing the thumb bit, then decremented), and then libcxxabi decrements it further, and compares with a `funcStart` with the thumb bit set, it could point to one byte before the start of the call site. Thus: This modification makes libunwind with SEH work with libcxxabi on Thumb, in settings where libunwind and libcxxabi worked fine with Dwarf before. For existing cases with libunwind with SEH (on x86_64 and aarch64), this modification doesn't break any of my testcases. Differential Revision: https://reviews.llvm.org/D126869
2022-06-06[libunwind] Remove unused ARM SEH placeholder codeMartin Storsjö1-4/+0
There's no such corresponding code for ARM64 (which has been working in production for years). The SEH version of the Unwind functions (e.g. `_Unwind_GetLanguageSpecificData`) doesn't use these fields. The `_Unwind_ForcedUnwind` function would need these bits though, but that's not used in normal C++ exception unwinding. Differential Revision: https://reviews.llvm.org/D126868
2022-06-06[libunwind] Fix SEH unwinding on ARMMartin Storsjö4-5/+5
Check `__SEH__` when checking if ARM EHABI should be implied, similarly to 4a3722a2c3dff1fe885cc38bf43d3c095c9851e7 / D126866. Fix a warning by using the right format specifier (PRIxPTR instead of PRIx64), and add a double->float cast in a codepath that hasn't been built so far. This is enough to make SEH unwinding of itanium ABI exceptions on ARM mostly work - one specific issue is fixed in a separate follow-up patch. Differential Revision: https://reviews.llvm.org/D126867
2022-06-03[NFC] [libunwind] turn assert into static_assertFlorian Mayer2-18/+47
Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D126987
2022-06-02[libunwind][ci][AIX] Add libunwind to buildbot CIXing Xue1-0/+25
Summary: This patch changes scripts to add libunwind CI on AIX. Test config file ibm-libunwind-shared.cfg.in is introduced for testing on AIX. Reviewed by: ldionne, MaskRay, libunwind, ibc++abi Differential Revision: https://reviews.llvm.org/D126017
2022-06-01[libunwind] Add more information to eh_frame_hdr version errorFlorian Mayer1-1/+2
This makes it easier to find the offending ELF file. Reviewed By: #libunwind, MaskRay Differential Revision: https://reviews.llvm.org/D126841
2022-05-27[runtimes] Officially deprecate the legacy testing configuration systemLouis Dionne1-0/+3
Add a warning and tweak the release note to explain that the deprecation targets libc++, libc++abi and libuwnind as well. Also, as a fly-by, ensure that our CI runs the legacy testing configuration for libc++, libc++abi and libunwind. This doesn't matter too much since it's deprecated, but we might as well test it properly. Differential Revision: https://reviews.llvm.org/D126478
2022-05-27[libunwind][CMake] Fix name of LIBUNWIND_SUPPORTS_NODEFAULTLIBS_FLAGPavel Samolysov1-1/+1
The CMake variable LIBUNWIND_SUPPORTS_NODEFAULTLIBS_FLAG has been renamed into C_SUPPORTS_NODEFAULTLIBS_FLAG because the last one is used in the confix-ix.cmake file while the variable with the original name is not used at al. Differential Revision: https://reviews.llvm.org/D126466
2022-05-26[libunwind] Tidy-up the testing configuration for libunwindLouis Dionne3-4/+68
Start testing Apple backdeployment with older libunwinds, and stop explicitly specifying the libunwind testing config, since it is already selected correctly by default. Differential Revision: https://reviews.llvm.org/D126470
2022-05-26[libunwind] Use process_vm_readv to avoid potential segfaultsShoaib Meenai2-9/+90
We've observed segfaults in libunwind when attempting to check for the Linux aarch64 sigreturn frame, presumably because of bad unwind info leading to an incorrect PC that we attempt to read from. Use process_vm_readv to read the memory safely instead. The s390x code path should likely follow suit, but I don't have the hardware to be able to test that, so I didn't modify it here either. Reviewed By: MaskRay, rprichard, #libunwind Differential Revision: https://reviews.llvm.org/D126343
2022-05-26[libunwind] Factor out sigreturn check condition. NFCShoaib Meenai1-13/+22
Create a macro for this instead of duplicating the architecture checks everywhere. (It's a little redundant to use it when we're checking for a specific architecture, but I'm also applying it there for consistency.) Reviewed By: rprichard, MaskRay, #libunwind Differential Revision: https://reviews.llvm.org/D126342
2022-05-20[libunwind] Introduce a cmake-bridge.cfg.in file to reduce test config ↵Louis Dionne5-89/+54
duplication Differential Revision: https://reviews.llvm.org/D125981