<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56900>56900</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Can't build scudo_standalone on armv7 on Ubuntu Focal
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:ARM,
            compiler-rt:scudo
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          rovka
      </td>
    </tr>
</table>

<pre>
    Compiling `armv7l-unknown-linux-gnueabihf/libclang_rt.scudo_standalone.so` fails to link, with the following error:
```
ld.lld: error: undefined symbol: __aeabi_unwind_cpp_pr0
  referenced by common.cpp
               compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsan.armhf.dir/common.cpp.o:(.ARM.exidx.text._ZN8gwp_asan13ErrorToStringERKNS_5ErrorE+0x0)
  referenced by common.cpp
               compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsan.armhf.dir/common.cpp.o:(.ARM.exidx.text._ZNK8gwp_asan14AllocatorState21maximumAllocationSizeEv+0x0)
  referenced by common.cpp
               compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsan.armhf.dir/common.cpp.o:(.ARM.exidx.text._ZNK8gwp_asan14AllocatorState10slotToAddrEj+0x0)
  referenced 34 more times
```
The full command line generated is (note the `--unwindlib=none`, which seems relevant):
```
/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/clang++ --target=armv7l-unknown-linux-gnueabihf -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wstring-conversion -Wmisleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -std=c++14 -Wno-unused-parameter -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete -fuse-ld=lld -Wl,--color-diagnostics   -Wl,-z,defs,-z,now,-z,relro -ffunction-sections -fdata-sections -Wl,--gc-sections -nostdlib++ --unwindlib=none -pthread -shared -Wl,-soname,libclang_rt.scudo_standalone.so -o /home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/lib/clang/15.0.0/lib/armv7l-unknown-linux-gnueabihf/libclang_rt.scudo_standalone.so compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsan.armhf.dir/common.cpp.o compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsan.armhf.dir/crash_handler.cpp.o compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsan.armhf.dir/platform_specific/common_posix.cpp.o compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsan.armhf.dir/platform_specific/guarded_pool_allocator_posix.cpp.o compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsan.armhf.dir/platform_specific/mutex_posix.cpp.o compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsan.armhf.dir/platform_specific/utilities_posix.cpp.o compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsan.armhf.dir/guarded_pool_allocator.cpp.o compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsan.armhf.dir/stack_trace_compressor.cpp.o compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsanBacktraceLibc.armhf.dir/optional/backtrace_linux_libc.cpp.o compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsanSegvHandler.armhf.dir/optional/segv_handler_posix.cpp.o compiler-rt/lib/gwp_asan/CMakeFiles/RTGwpAsanOptionsParser.armhf.dir/optional/options_parser.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/checksum.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/common.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/crc32_hw.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/flags_parser.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/flags.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/fuchsia.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/linux.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/release.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/report.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/string_utils.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/wrappers_c.cpp.o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-armhf.dir/wrappers_cpp.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./lib"
```
The whole cmake invocation is:
```
/usr/bin/cmake -DCMAKE_C_COMPILER=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/clang -DCMAKE_CXX_COMPILER=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/clang++ -DCMAKE_ASM_COMPILER=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/clang -DCMAKE_LINKER=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/ld.lld -DCMAKE_AR=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/llvm-ar -DCMAKE_RANLIB=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/llvm-ranlib -DCMAKE_NM=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/llvm-nm -DCMAKE_OBJDUMP=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/llvm-objdump -DCMAKE_OBJCOPY=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/llvm-objcopy -DCMAKE_STRIP=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/llvm-strip -DCMAKE_READELF=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/./bin/llvm-readelf -DCMAKE_C_COMPILER_TARGET=armv7l-unknown-linux-gnueabihf -DCMAKE_CXX_COMPILER_TARGET=armv7l-unknown-linux-gnueabihf -DCMAKE_ASM_COMPILER_TARGET=armv7l-unknown-linux-gnueabihf -DCMAKE_INSTALL_PREFIX=/usr/local -DLLVM_BINARY_DIR=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj -DLLVM_CONFIG_PATH=/home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/bin/llvm-config -DLLVM_ENABLE_WERROR=OFF -DLLVM_HOST_TRIPLE=armv7l-unknown-linux-gnueabihf -DLLVM_HAVE_LINK_VERSION_SCRIPT=1 -DLLVM_USE_RELATIVE_PATHS_IN_DEBUG_INFO=OFF -DLLVM_USE_RELATIVE_PATHS_IN_FILES=OFF -DLLVM_LIT_ARGS=-v -DLLVM_SOURCE_PREFIX= -DPACKAGE_VERSION=15.0.0 -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja -DCMAKE_C_COMPILER_LAUNCHER= -DCMAKE_CXX_COMPILER_LAUNCHER= -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCOMPILER_RT_BUILD_BUILTINS=Off -DLLVM_INCLUDE_TESTS=ON -DLLVM_DEFAULT_TARGET_TRIPLE=armv7l-unknown-linux-gnueabihf -DLLVM_ENABLE_PROJECTS_USED=ON -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON -DLLVM_BUILD_TOOLS=ON -DCMAKE_C_COMPILER_WORKS=ON -DCMAKE_CXX_COMPILER_WORKS=ON -DCMAKE_ASM_COMPILER_WORKS=ON -DHAVE_LLVM_LIT=ON "-DLLVM_ENABLE_RUNTIMES=;compiler-rt;libcxx;libcxxabi;libunwind" -DLLVM_USE_LINKER=lld -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON -GNinja /home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/llvm-project/llvm/runtimes/../../runtimes && /usr/bin/cmake -E touch /home/tcwg-buildslave/workspace/tcwg-llvm-release/tcwg-tk1_32-build/rc1/Phase1/Release/llvmCore-15.0.0-rc1.obj/runtimes/runtimes-stamps//runtimes-configure
```
...which is generated by invoking the release script with:
```
./test-release.sh -release 15.0.0 -rc 1 -triple armv7a-linux-gnueabihf -j3 -no-openmp -no-mlir -no-flang -use-ninja -configure-flags '-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON  -DLLVM_PARALLEL_LINK_JOBS=2 -DLLVM_LIT_ARGS=-v -DCMAKE_C_COMPILER_TARGET=armv7a-linux-gnueabihf'
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVWlmT2roS_jXMi8suMDDLAw8GzIQMWxmT5b64hC1jZWzJV5KBOb_-tLwBEyZLZcLlpogRrVb3p960eNYseOkNWJKSmNCN1rhtIp5s72I9o8-U7agO5Gyvb2iG0ZpEYcMcxWTtx4huPC4N4WcB84RENEAxo9gQDERoISKx0CTTYPRzwxxoOyIjTUZYC1kcs51ShTlnvNG2Gs1ho2nBqPKT_4wDI44D6K3ZtIwGOCQUB5p4SdYsVjTPQwqWl1EQGXh-mnopL0VoGsch5pj6MGT9ovksSRg1gKfqP_nn5zbAXOeymCM8N7vUQwJRaA6m6BmPgEHAD8d93KUWdBhgrCg0AsKBelBgMDUv896wnKmB9yTYGxLvpeH9Z3ZfyWy1bTUzly0lB3PYztNs6XVzmt0w-819s2E-XPNMng5T6VjgVB9JxpcSSWy2ErQnSZaUZMLokvyD7e3_-bxaTREz6TIrCLj97UeTaXe0hHGsSZIAnHMB7qpcyOI4nzRkj8oUrG0wxRw0BRoRGsCjTOI8bWCcrhdRribeHlJINiVM5VZE_EgTGCcCMMR4i6hUsN5ILbBDxBIMX9LfbfR1RuJAxGirKDvGn0WK_Lo3jreJroQiUdPkc8trm8VAoHG_Bc9FBByq4dTMauwArKC3ukbTaOrAaLA12G1kwP81UU7LCwlYEj6arkvEN1jC7H5cgzQ9XIwH9ZMyXWCwoSS-TqjEPGWCqKCDvi0RZA2lTb5AlzKx0CMSBBj6PpeVZRiAwXXlqSNaRjcZ4gEOdLSFWoZKGRTvgAmB24B1LzmCb1Cf0UwAa4o4SjAAAOqOE5Aq8twW8NtHQur_zZAamRAhgKyHBMcB4AKwKIYE4YqRJGlMfCL1ENTIiLNsE6nxbAvBFegCKqkf6VAKURbLQj1leO_jVOryJcU5iepbwiVo0wMIXiAF4BXAc6ZHZJsNBmxKPidBMV5XUYmpkl9MAQgUGERuVTUBcHKg6BCQwIdKcwcEbSgT4AkBI2KlIAwz6qtucFL-LRQfkujod2FRIaHgD_0iGlqdt0w7b2v6cDa0-6tHDXhiSAH9H3iAScTxb8qKSYM6EKGr1WQIa0rFUuDTjxBr34k7iNpVTcgFzn5xVoWejX9EU6ryDK5C_nVOa3oKTgfjgj0iBB6v5AhGkcrawU-WX01n2hWkeFGey_QeFd01-U-3GO-8FLyHOI5E5EWAEcS8m9Q0RjJkPPFEin0SEr8G7qkat_-risoCCJpY7KFqIbyA4iSDpfgCejKpijrB4p11nTfcu4mHTPCfPVh7fOwpaRwL8Wfi-yAwlzeBtDvRxVJVt1Cs1uuKycvT1VMp-idKl3iz_VDmyxsqBbBUOfXnPprngsUCcfG2yqIJEVFwva0ur0qFN8q69FrxmwVMD16glMNm5aSARNh_FllySZU_K4HvrpD7bdOLdhdUGcZo8z_wZq72kvoyPxIEXVBjXgQuqK_coFxUY8qA93IKi522p5alS8bOjqM0ha2996Ny_veUgspCbbXR5SmSETQaptnowrMzd8aP4xkMMowST_taDrG5ccw3D_i7iMVY8xMwk0botrwLgbP9D87mmVD2KU_H-Uh9OJhaT7Y38Abz6WI8sR04K1yJAY5O8QecX75cN9Lq8FXitZbT68ZbI52MZ0_Xh7G4qz2Y8_oAKvmI1wgdazYZ968SJUcUakqNdDa9SpQ0qRHO-x-Hq-niKmECMciS9BjrYL74eq1YfZa-1FiXrjO-TquqbcrBpo5tDe3J6CqRqms0HIdnFlDPtZxH2_2Fm-Yza9pvDz5eYH578Hi2dK3JxFs49mj8pbBzsUdQFwsx8E0mn6ZefzyznK_ecHwN1bcCNZjPRuNHb2G5H64A1Wlw-IyGZFMhtWdWf2J7n23HmSsLzkejquvDfOl6Khsn9q94rRhjfSpWa--T7SzH85m3HIAE5fZWxbNaquyZWO4YeJWJluBrL7_XhsZoforiPPcIQmp5yjgZu7AEPyqqvq2Iy_nKGdiHGAL6who8WY92BVAhy61VB15_NZ4MPffrQk27NG7dmT8WzvzRsabHMVkYmBL6DZ1Lu4m1mg0-5FuY86l1jsH-spg7bsWjvqfWbLgsbVkPBZYCsnq6kDbKLmHtkvFsMFkNbc-1l27eNat6hvbIWk3cMjN_19Vl5IAtPtoDd6kcNTwRXzHUue85q5k7ntplsh44S4vP55Ma4HcW_Dx3nl73HhvwTP9J-TnpL8K0jJqCCMeZU9wlWDWm0e4fnw3bfXUHuN_XDbBL0S5eaoCo4-itN6_lZvHIb688MJ9NvpYQH2d5KP2d0pEzppx9w74sf6q-jBavbcsDZ_6oiIDkFj5a4-xBzdYky_zoGt6_HM2iasLKjZJUUY6JRR3MOD57IDUMo3i9TMTRy-n1S36cfVZ_xqHeTpfoNeHD1kDmf-zx1glXGVOq943VhY6ItKqtVRWI-xqkttpnwPE5T0P0ffp9a6vXaTpLMVV7PGgmMeF5IyxOTeq1X1mK6lnq-dUceOjuF0OwCuGF5cAybE-Ksv5x3lcZYb5VdX-y4fhuOoDnlblucK91233otm7N5sNN0GsHD-0HdCOJjHFvoO6576SWB4j2-sZFY7SwmmqsIBtlpo3UZuEm43EvkjIVxRUKfDbgq2xtQF4fMuBVXhAhsjyQurcPzeZN1Fvfo4fgroM7t-vuQ7Pdad6FneAOd-863VvzNri_idEax6LX6MI521QvDjBVf8tjOVN1W2IOVJU5qSRWeb9kNrrDG9Izm6bZvG-2m_edtnlvtHFnDXpwp9m8v7sPw0aniRNEYkMBNRjf3PBejnmdbQR0xkRIcehEQpANxTjHA_JRJiPGe5xtn9FNPrlePrN_AQz3VEY">