[PATCH] D113993: WIP: [clang] customizable build-id style

Konrad Wilhelm Kleine via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 16 06:36:57 PST 2021


kwk updated this revision to Diff 387606.
kwk edited the summary of this revision.
kwk added a comment.

Renamed: `ENABLE_LINKER_BUILD_ID_STYLE` to `DEFAULT_LINKER_BUILD_ID_STYLE`.
Fixed issues with CMake (not done yet)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113993/new/

https://reviews.llvm.org/D113993

Files:
  clang/CMakeLists.txt
  clang/include/clang/Config/config.h.cmake
  clang/lib/Driver/ToolChains/Hurd.cpp


Index: clang/lib/Driver/ToolChains/Hurd.cpp
===================================================================
--- clang/lib/Driver/ToolChains/Hurd.cpp
+++ clang/lib/Driver/ToolChains/Hurd.cpp
@@ -82,7 +82,11 @@
   const std::string MultiarchTriple = getMultiarchTriple(D, Triple, SysRoot);
 
 #ifdef ENABLE_LINKER_BUILD_ID
-  ExtraOpts.push_back("--build-id");
+  #ifdef ENABLE_LINKER_BUILD_ID_STYLE
+    ExtraOpts.push_back("--build-id=" ENABLE_LINKER_BUILD_ID_STYLE);
+  #else
+    ExtraOpts.push_back("--build-id");
+  #endif
 #endif
 
   Generic_GCC::AddMultilibPaths(D, SysRoot, OSLibDir, MultiarchTriple, Paths);
Index: clang/include/clang/Config/config.h.cmake
===================================================================
--- clang/include/clang/Config/config.h.cmake
+++ clang/include/clang/Config/config.h.cmake
@@ -69,9 +69,12 @@
 /* Linker version detected at compile time. */
 #cmakedefine HOST_LINK_VERSION "${HOST_LINK_VERSION}"
 
-/* pass --build-id to ld */
+/* Pass --build-id or --build-id=<style> to linker (e.g. ld or lld) by default */
 #cmakedefine ENABLE_LINKER_BUILD_ID
 
+/* Set --build-id=<style> */
+#cmakedefine DEFAULT_LINKER_BUILD_ID_STYLE "${DEFAULT_LINKER_BUILD_ID_STYLE}"
+
 /* enable x86 relax relocations by default */
 #cmakedefine01 ENABLE_X86_RELAX_RELOCATIONS
 
Index: clang/CMakeLists.txt
===================================================================
--- clang/CMakeLists.txt
+++ clang/CMakeLists.txt
@@ -219,7 +219,23 @@
 set(DEFAULT_SYSROOT "" CACHE STRING
   "Default <path> to all compiler invocations for --sysroot=<path>." )
 
-set(ENABLE_LINKER_BUILD_ID OFF CACHE BOOL "pass --build-id to ld")
+set(ENABLE_LINKER_BUILD_ID OFF CACHE BOOLEAN
+  "Pass --build-id or --build-id=<style> to linker (e.g. ld or lld). See also ENABLE_LINKER_BUILD_ID_STYLE.")
+
+set(DEFAULT_LINKER_BUILD_ID_STYLE "" CACHE STRING
+  "enables ENABLE_LINKER_BUILD_ID (if not already done) and passes the style to --build-id=<style>")
+
+if (NOT(DEFAULT_LINKER_BUILD_ID_STYLE STREQUAL ""))
+  if (NOT(ENABLE_LINKER_BUILD_ID))
+    message(WARNING "Turning on ENABLE_LINKER_BUILD_ID because DEFAULT_LINKER_BUILD_ID_STYLE style was specified")
+    set(ENABLE_LINKER_BUILD_ID ON)
+  endif()
+  if (NOT("${DEFAULT_LINKER_BUILD_ID_STYLE}" MATCHES "^(fast|md5|sha1|uuid|0x[0-9A-Fa-f]+)$"))
+    message(WARNING "Allowed values for DEFAULT_LINKER_BUILD_ID_STYLE are "
+"\"sha1\", \"md5\" or \"uuid\", \"fast\", \"0x<hexstring>\" "
+"but the current value is: ${DEFAULT_LINKER_BUILD_ID_STYLE}")
+  endif()
+endif()  
 
 set(ENABLE_X86_RELAX_RELOCATIONS ON CACHE BOOL
     "enable x86 relax relocations by default")


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D113993.387606.patch
Type: text/x-patch
Size: 2641 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20211116/d09a3b41/attachment.bin>


More information about the cfe-commits mailing list