From 40422bb78e05b0b9d8d585513771cefd51f9d745 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 22 Sep 2022 19:13:05 +0200 Subject: [PATCH] add bolt support --- debian/bolt-X.Y.install.in | 10 + debian/control | 19 ++ debian/libbolt-X.Y-dev.install.in | 4 + debian/patches/bolt-disable-emit-relocs.patch | 14 ++ debian/patches/bolt.patch | 177 ++++++++++++++++++ debian/patches/series | 2 + debian/rules | 5 + 7 files changed, 231 insertions(+) create mode 100644 debian/bolt-X.Y.install.in create mode 100644 debian/libbolt-X.Y-dev.install.in create mode 100644 debian/patches/bolt-disable-emit-relocs.patch create mode 100644 debian/patches/bolt.patch diff --git a/debian/bolt-X.Y.install.in b/debian/bolt-X.Y.install.in new file mode 100644 index 00000000..63c12de6 --- /dev/null +++ b/debian/bolt-X.Y.install.in @@ -0,0 +1,10 @@ +usr/bin/llvm-bolt-@LLVM_VERSION@ +usr/bin/llvm-bolt-heatmap-@LLVM_VERSION@ +usr/bin/llvm-boltdiff-@LLVM_VERSION@ +usr/bin/merge-fdata-@LLVM_VERSION@ +usr/bin/perf2bolt-@LLVM_VERSION@ +usr/lib/llvm-@LLVM_VERSION@/bin/llvm-bolt +usr/lib/llvm-@LLVM_VERSION@/bin/llvm-bolt-heatmap +usr/lib/llvm-@LLVM_VERSION@/bin/llvm-boltdiff +usr/lib/llvm-@LLVM_VERSION@/bin/merge-fdata +usr/lib/llvm-@LLVM_VERSION@/bin/perf2bolt diff --git a/debian/control b/debian/control index d9d86f6b..db3ac3d7 100644 --- a/debian/control +++ b/debian/control @@ -805,3 +805,22 @@ Description: Multi-Level Intermediate Representation library MLIR aims to address software fragmentation, improve compilation for heterogeneous hardware, significantly reduce the cost of building domain specific compilers, and aid in connecting existing compilers together. + + +# ------------- bolt ------------- + +Package: bolt-15 +Architecture: amd64 arm64 +Depends: ${shlibs:Depends}, ${misc:Depends}, libbolt-15-dev (= ${binary:Version}), +Pre-Depends: ${misc:Pre-Depends} +Description: Post-link optimizer + TODO + + + +Package: libbolt-15-dev +Section: libdevel +Architecture: amd64 arm64 +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Post-link optimizer + TODO diff --git a/debian/libbolt-X.Y-dev.install.in b/debian/libbolt-X.Y-dev.install.in new file mode 100644 index 00000000..df12dc09 --- /dev/null +++ b/debian/libbolt-X.Y-dev.install.in @@ -0,0 +1,4 @@ +usr/lib/llvm-@LLVM_VERSION@/lib/libbolt_rt_hugify.a +usr/lib/llvm-@LLVM_VERSION@/lib/libbolt_rt_instr.a +usr/lib/llvm-@LLVM_VERSION@/lib/libbolt_rt_instr_osx.a + diff --git a/debian/patches/bolt-disable-emit-relocs.patch b/debian/patches/bolt-disable-emit-relocs.patch new file mode 100644 index 00000000..a356194b --- /dev/null +++ b/debian/patches/bolt-disable-emit-relocs.patch @@ -0,0 +1,14 @@ +Index: llvm-toolchain-15-15.0.0~+rc3/bolt/tools/merge-fdata/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.0~+rc3.orig/bolt/tools/merge-fdata/CMakeLists.txt ++++ llvm-toolchain-15-15.0.0~+rc3/bolt/tools/merge-fdata/CMakeLists.txt +@@ -9,6 +9,6 @@ add_bolt_tool(merge-fdata + set_target_properties(merge-fdata PROPERTIES FOLDER "BOLT") + + # Emit relocations for BOLT meta test (bolt/test/runtime/meta-merge-fdata.test) +-if (BOLT_INCLUDE_TESTS AND UNIX AND NOT APPLE) +- target_link_options(merge-fdata PRIVATE LINKER:--emit-relocs) +-endif() ++# if (BOLT_INCLUDE_TESTS AND UNIX AND NOT APPLE) ++# target_link_options(merge-fdata PRIVATE LINKER:--emit-relocs) ++# endif() diff --git a/debian/patches/bolt.patch b/debian/patches/bolt.patch new file mode 100644 index 00000000..4bcd658b --- /dev/null +++ b/debian/patches/bolt.patch @@ -0,0 +1,177 @@ +Index: llvm-toolchain-15-15.0.1/bolt/lib/Core/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Core/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Core/CMakeLists.txt +@@ -24,6 +24,7 @@ add_llvm_library(LLVMBOLTCore + ParallelUtilities.cpp + Relocation.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB + LINK_LIBS + ${LLVM_PTHREAD_LIB} + ) +Index: llvm-toolchain-15-15.0.1/bolt/lib/Passes/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Passes/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Passes/CMakeLists.txt +@@ -46,6 +46,8 @@ add_llvm_library(LLVMBOLTPasses + VeneerElimination.cpp + RetpolineInsertion.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + LINK_LIBS + ${LLVM_PTHREAD_LIB} + +Index: llvm-toolchain-15-15.0.1/bolt/lib/Profile/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Profile/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Profile/CMakeLists.txt +@@ -7,6 +7,8 @@ add_llvm_library(LLVMBOLTProfile + YAMLProfileReader.cpp + YAMLProfileWriter.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + LINK_COMPONENTS + Support + ) +Index: llvm-toolchain-15-15.0.1/bolt/lib/Rewrite/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Rewrite/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Rewrite/CMakeLists.txt +@@ -33,6 +33,8 @@ add_llvm_library(LLVMBOLTRewrite + MachORewriteInstance.cpp + RewriteInstance.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + LINK_LIBS + ${LLVM_PTHREAD_LIB} + ) +Index: llvm-toolchain-15-15.0.1/bolt/lib/RuntimeLibs/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/RuntimeLibs/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/RuntimeLibs/CMakeLists.txt +@@ -10,6 +10,8 @@ add_llvm_library(LLVMBOLTRuntimeLibs + RuntimeLibrary.cpp + HugifyRuntimeLibrary.cpp + InstrumentationRuntimeLibrary.cpp ++ ++ DISABLE_LLVM_LINK_LLVM_DYLIB + ) + + target_link_libraries(LLVMBOLTRuntimeLibs +Index: llvm-toolchain-15-15.0.1/bolt/lib/Target/AArch64/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Target/AArch64/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Target/AArch64/CMakeLists.txt +@@ -8,6 +8,8 @@ set(LLVM_LINK_COMPONENTS + add_llvm_library(LLVMBOLTTargetAArch64 + AArch64MCPlusBuilder.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + DEPENDS + AArch64CommonTableGen + ) +Index: llvm-toolchain-15-15.0.1/bolt/lib/Target/X86/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Target/X86/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Target/X86/CMakeLists.txt +@@ -11,6 +11,8 @@ add_llvm_library(LLVMBOLTTargetX86 + X86MCPlusBuilder.cpp + X86MCSymbolizer.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + DEPENDS + X86CommonTableGen + ) +Index: llvm-toolchain-15-15.0.1/bolt/lib/Utils/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/lib/Utils/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/lib/Utils/CMakeLists.txt +@@ -2,6 +2,8 @@ add_llvm_library(LLVMBOLTUtils + CommandLineOpts.cpp + Utils.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + LINK_LIBS + ${LLVM_PTHREAD_LIB} + +Index: llvm-toolchain-15-15.0.1/bolt/tools/driver/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/tools/driver/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/tools/driver/CMakeLists.txt +@@ -14,6 +14,8 @@ endif() + add_bolt_tool(llvm-bolt + llvm-bolt.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + DEPENDS + ${BOLT_DRIVER_DEPS} + ) +Index: llvm-toolchain-15-15.0.1/bolt/tools/heatmap/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/tools/heatmap/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/tools/heatmap/CMakeLists.txt +@@ -7,6 +7,7 @@ set(LLVM_LINK_COMPONENTS + + add_bolt_tool(llvm-bolt-heatmap + heatmap.cpp ++ DISABLE_LLVM_LINK_LLVM_DYLIB + ) + + target_link_libraries(llvm-bolt-heatmap +Index: llvm-toolchain-15-15.0.1/bolt/tools/llvm-bolt-fuzzer/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/tools/llvm-bolt-fuzzer/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/tools/llvm-bolt-fuzzer/CMakeLists.txt +@@ -5,4 +5,6 @@ set(LLVM_LINK_COMPONENTS + + add_llvm_fuzzer(llvm-bolt-fuzzer + llvm-bolt-fuzzer.cpp ++ ++ DISABLE_LLVM_LINK_LLVM_DYLIB + ) +Index: llvm-toolchain-15-15.0.1/bolt/tools/merge-fdata/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/tools/merge-fdata/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/tools/merge-fdata/CMakeLists.txt +@@ -3,6 +3,8 @@ set(LLVM_LINK_COMPONENTS Support) + add_bolt_tool(merge-fdata + merge-fdata.cpp + ++ DISABLE_LLVM_LINK_LLVM_DYLIB ++ + DEPENDS + intrinsics_gen + ) +Index: llvm-toolchain-15-15.0.1/bolt/unittests/Core/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/unittests/Core/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/unittests/Core/CMakeLists.txt +@@ -9,6 +9,8 @@ add_bolt_unittest(CoreTests + BinaryContext.cpp + MCPlusBuilder.cpp + DynoStats.cpp ++ ++ DISABLE_LLVM_LINK_LLVM_DYLIB + ) + + target_link_libraries(CoreTests +Index: llvm-toolchain-15-15.0.1/bolt/unittests/Profile/CMakeLists.txt +=================================================================== +--- llvm-toolchain-15-15.0.1.orig/bolt/unittests/Profile/CMakeLists.txt ++++ llvm-toolchain-15-15.0.1/bolt/unittests/Profile/CMakeLists.txt +@@ -1,5 +1,7 @@ + add_bolt_unittest(ProfileTests + DataAggregator.cpp ++ ++ DISABLE_LLVM_LINK_LLVM_DYLIB + ) + + target_link_libraries(ProfileTests diff --git a/debian/patches/series b/debian/patches/series index 3be5b3ab..be3883aa 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -143,3 +143,5 @@ revert-update-doc.diff unwind-force-pthread-dl.diff force-sse2-compiler-rt.diff fix-typo-1018770.diff +bolt.patch +bolt-disable-emit-relocs.patch diff --git a/debian/rules b/debian/rules index e28cd54e..e0d8a825 100755 --- a/debian/rules +++ b/debian/rules @@ -268,6 +268,11 @@ ifneq (,$(filter $(DEB_HOST_ARCH),$(BINUTILS_GOLD_ARCHS))) endif endif +BOLT_ARCHS := amd64 arm64 +ifneq (,$(filter $(DEB_HOST_ARCH),$(BOLT_ARCHS))) + PROJECTS += ;bolt +endif + CODECOVERAGE=no ifneq (,$(filter codecoverage,$(DEB_BUILD_OPTIONS))) # enable the code coverage