[compiler-rt] [hwasan][aarch64] Fix missing DT_AARCH64_BTI_PLT flag (PR #95796)

Tulio Magno Quites Machado Filho via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 17 07:43:18 PDT 2024


https://github.com/tuliom created https://github.com/llvm/llvm-project/pull/95796

When building hwasan on aarch64, the DT_AARCH64_BTI_PLT flag is missing from libclang_rt.hwasan.so because some object files without DT_AARCH64_BTI_PLT are linked in the final DSO.
These files are specific to riscv64 and x86_64, ending up with no aarch64 code in them.

Avoid building and linking architecture-specific files unless the architecture is listed in HWASAN_SUPPORTED_ARCH.

>From 1df9fd71f76a7731f198a174da19deaab50f10bb Mon Sep 17 00:00:00 2001
From: Tulio Magno Quites Machado Filho <tuliom at redhat.com>
Date: Mon, 17 Jun 2024 11:25:36 -0300
Subject: [PATCH] [hwasan][aarch64] Fix missing DT_AARCH64_BTI_PLT flag

When building hwasan on aarch64, the DT_AARCH64_BTI_PLT flag is missing
from libclang_rt.hwasan.so because some object files without
DT_AARCH64_BTI_PLT are linked in the final DSO.
These files are specific to riscv64 and x86_64, ending up with no
aarch64 code in them.

Avoid building and linking architecture-specific files unless the
architecture is listed in HWASAN_SUPPORTED_ARCH.
---
 compiler-rt/lib/hwasan/CMakeLists.txt | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/compiler-rt/lib/hwasan/CMakeLists.txt b/compiler-rt/lib/hwasan/CMakeLists.txt
index 6f75baa7e354f..086079c7536e5 100644
--- a/compiler-rt/lib/hwasan/CMakeLists.txt
+++ b/compiler-rt/lib/hwasan/CMakeLists.txt
@@ -15,16 +15,28 @@ set(HWASAN_RTL_SOURCES
   hwasan_memintrinsics.cpp
   hwasan_poisoning.cpp
   hwasan_report.cpp
-  hwasan_setjmp_aarch64.S
-  hwasan_setjmp_riscv64.S
-  hwasan_setjmp_x86_64.S
-  hwasan_tag_mismatch_aarch64.S
-  hwasan_tag_mismatch_riscv64.S
   hwasan_thread.cpp
   hwasan_thread_list.cpp
   hwasan_type_test.cpp
   )
 
+foreach(arch ${HWASAN_SUPPORTED_ARCH})
+  if(${arch} MATCHES "aarch64")
+    list(APPEND HWASAN_RTL_SOURCES
+      hwasan_setjmp_aarch64.S
+      hwasan_tag_mismatch_aarch64.S)
+  endif()
+  if(${arch} MATCHES "riscv64")
+    list(APPEND HWASAN_RTL_SOURCES
+      hwasan_setjmp_riscv64.S
+      hwasan_tag_mismatch_riscv64.S)
+  endif()
+  if(${arch} MATCHES "x86_64")
+    list(APPEND HWASAN_RTL_SOURCES
+      hwasan_setjmp_x86_64.S)
+  endif()
+endforeach()
+
 set(HWASAN_RTL_CXX_SOURCES
   hwasan_new_delete.cpp
   )



More information about the llvm-commits mailing list