llvmPackages_{13,17,19,git}.lld: commonify patches
This commit is contained in:
@@ -1,68 +0,0 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index d4e561b50d8f..cfa5bdd79c2a 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -6,6 +6,8 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(LLD_BUILT_STANDALONE TRUE)
|
||||
|
||||
+ include(GNUInstallDirs)
|
||||
+
|
||||
find_program(LLVM_CONFIG_PATH "llvm-config" DOC "Path to llvm-config binary")
|
||||
if(NOT LLVM_CONFIG_PATH)
|
||||
message(FATAL_ERROR "llvm-config not found: specify LLVM_CONFIG_PATH")
|
||||
@@ -179,7 +181,7 @@ include_directories(BEFORE
|
||||
|
||||
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||
install(DIRECTORY include/
|
||||
- DESTINATION include
|
||||
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
FILES_MATCHING
|
||||
PATTERN "*.h"
|
||||
)
|
||||
diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake
|
||||
index 23df41312403..d62372c88de7 100644
|
||||
--- a/cmake/modules/AddLLD.cmake
|
||||
+++ b/cmake/modules/AddLLD.cmake
|
||||
@@ -20,9 +20,9 @@ macro(add_lld_library name)
|
||||
install(TARGETS ${name}
|
||||
COMPONENT ${name}
|
||||
${export_to_lldtargets}
|
||||
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
- RUNTIME DESTINATION bin)
|
||||
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
|
||||
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
|
||||
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
||||
if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
add_llvm_install_targets(install-${name}
|
||||
@@ -54,7 +54,7 @@ macro(add_lld_tool name)
|
||||
|
||||
install(TARGETS ${name}
|
||||
${export_to_lldtargets}
|
||||
- RUNTIME DESTINATION bin
|
||||
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
COMPONENT ${name})
|
||||
|
||||
if(NOT CMAKE_CONFIGURATION_TYPES)
|
||||
@@ -69,5 +69,5 @@ endmacro()
|
||||
macro(add_lld_symlink name dest)
|
||||
add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE)
|
||||
# Always generate install targets
|
||||
- llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE)
|
||||
+ llvm_install_symlink(${name} ${dest} ${CMAKE_INSTALL_FULL_BINDIR} ALWAYS_GENERATE)
|
||||
endmacro()
|
||||
diff --git a/tools/lld/CMakeLists.txt b/tools/lld/CMakeLists.txt
|
||||
index 5cff736ff57f..64e775c771b9 100644
|
||||
--- a/tools/lld/CMakeLists.txt
|
||||
+++ b/tools/lld/CMakeLists.txt
|
||||
@@ -21,7 +21,7 @@ target_link_libraries(lld
|
||||
)
|
||||
|
||||
install(TARGETS lld
|
||||
- RUNTIME DESTINATION bin)
|
||||
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
||||
if(NOT LLD_SYMLINKS_TO_CREATE)
|
||||
set(LLD_SYMLINKS_TO_CREATE
|
||||
@@ -1,190 +0,0 @@
|
||||
From 93adcb770b99351b18553089c164fe3ef2119699 Mon Sep 17 00:00:00 2001
|
||||
From: Sam Clegg <sbc@chromium.org>
|
||||
Date: Fri, 25 Aug 2023 13:56:16 -0700
|
||||
Subject: [PATCH] [lld][WebAssembly] Add `--table-base` setting
|
||||
|
||||
This is similar to `--global-base` but determines where to place the
|
||||
table segments rather than that data segments.
|
||||
|
||||
See https://github.com/emscripten-core/emscripten/issues/20097
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D158892
|
||||
---
|
||||
test/wasm/table-base.s | 72 ++++++++++++++++++++++++++++++++++++++
|
||||
wasm/Driver.cpp | 19 ++++++++--
|
||||
wasm/Options.td | 5 ++-
|
||||
wasm/Writer.cpp | 8 -----
|
||||
4 files changed, 93 insertions(+), 11 deletions(-)
|
||||
create mode 100644 test/wasm/table-base.s
|
||||
|
||||
diff --git a/test/wasm/table-base.s b/test/wasm/table-base.s
|
||||
new file mode 100644
|
||||
index 000000000000000..56fff414fd31d96
|
||||
--- /dev/null
|
||||
+++ b/test/wasm/table-base.s
|
||||
@@ -0,0 +1,72 @@
|
||||
+# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %s -o %t.o
|
||||
+
|
||||
+# RUN: wasm-ld --export=__table_base -o %t.wasm %t.o
|
||||
+# RUN: obj2yaml %t.wasm | FileCheck %s -check-prefix=CHECK-DEFAULT
|
||||
+
|
||||
+# RUN: wasm-ld --table-base=100 --export=__table_base -o %t.wasm %t.o
|
||||
+# RUN: obj2yaml %t.wasm | FileCheck %s -check-prefix=CHECK-100
|
||||
+
|
||||
+.globl _start
|
||||
+_start:
|
||||
+ .functype _start () -> ()
|
||||
+ i32.const _start
|
||||
+ drop
|
||||
+ end_function
|
||||
+
|
||||
+# CHECK-DEFAULT: - Type: TABLE
|
||||
+# CHECK-DEFAULT-NEXT: Tables:
|
||||
+# CHECK-DEFAULT-NEXT: - Index: 0
|
||||
+# CHECK-DEFAULT-NEXT: ElemType: FUNCREF
|
||||
+# CHECK-DEFAULT-NEXT: Limits:
|
||||
+# CHECK-DEFAULT-NEXT: Flags: [ HAS_MAX ]
|
||||
+# CHECK-DEFAULT-NEXT: Minimum: 0x2
|
||||
+# CHECK-DEFAULT-NEXT: Maximum: 0x2
|
||||
+
|
||||
+# CHECK-DEFAULT: - Type: GLOBAL
|
||||
+# CHECK-DEFAULT-NEXT: Globals:
|
||||
+# CHECK-DEFAULT-NEXT: - Index: 0
|
||||
+# CHECK-DEFAULT-NEXT: Type: I32
|
||||
+# CHECK-DEFAULT-NEXT: Mutable: true
|
||||
+# CHECK-DEFAULT-NEXT: InitExpr:
|
||||
+# CHECK-DEFAULT-NEXT: Opcode: I32_CONST
|
||||
+# CHECK-DEFAULT-NEXT: Value: 66560
|
||||
+# CHECK-DEFAULT-NEXT: - Index: 1
|
||||
+# CHECK-DEFAULT-NEXT: Type: I32
|
||||
+# CHECK-DEFAULT-NEXT: Mutable: false
|
||||
+# CHECK-DEFAULT-NEXT: InitExpr:
|
||||
+# CHECK-DEFAULT-NEXT: Opcode: I32_CONST
|
||||
+# CHECK-DEFAULT-NEXT: Value: 1
|
||||
+
|
||||
+# CHECK-DEFAULT: - Type: EXPORT
|
||||
+# CHECK-DEFAULT: - Name: __table_base
|
||||
+# CHECK-DEFAULT-NEXT: Kind: GLOBAL
|
||||
+# CHECK-DEFAULT-NEXT: Index: 1
|
||||
+
|
||||
+# CHECK-100: - Type: TABLE
|
||||
+# CHECK-100-NEXT: Tables:
|
||||
+# CHECK-100-NEXT: - Index: 0
|
||||
+# CHECK-100-NEXT: ElemType: FUNCREF
|
||||
+# CHECK-100-NEXT: Limits:
|
||||
+# CHECK-100-NEXT: Flags: [ HAS_MAX ]
|
||||
+# CHECK-100-NEXT: Minimum: 0x65
|
||||
+# CHECK-100-NEXT: Maximum: 0x65
|
||||
+
|
||||
+# CHECK-100: - Type: GLOBAL
|
||||
+# CHECK-100-NEXT: Globals:
|
||||
+# CHECK-100-NEXT: - Index: 0
|
||||
+# CHECK-100-NEXT: Type: I32
|
||||
+# CHECK-100-NEXT: Mutable: true
|
||||
+# CHECK-100-NEXT: InitExpr:
|
||||
+# CHECK-100-NEXT: Opcode: I32_CONST
|
||||
+# CHECK-100-NEXT: Value: 66560
|
||||
+# CHECK-100-NEXT: - Index: 1
|
||||
+# CHECK-100-NEXT: Type: I32
|
||||
+# CHECK-100-NEXT: Mutable: false
|
||||
+# CHECK-100-NEXT: InitExpr:
|
||||
+# CHECK-100-NEXT: Opcode: I32_CONST
|
||||
+# CHECK-100-NEXT: Value: 100
|
||||
+
|
||||
+# CHECK-100: - Type: EXPORT
|
||||
+# CHECK-100: - Name: __table_base
|
||||
+# CHECK-100-NEXT: Kind: GLOBAL
|
||||
+# CHECK-100-NEXT: Index: 1
|
||||
diff --git a/wasm/Driver.cpp b/wasm/Driver.cpp
|
||||
index 84304881f5ca34e..c2f5f0185781f36 100644
|
||||
--- a/wasm/Driver.cpp
|
||||
+++ b/wasm/Driver.cpp
|
||||
@@ -502,6 +502,7 @@ static void readConfigs(opt::InputArgList &args) {
|
||||
|
||||
config->initialMemory = args::getInteger(args, OPT_initial_memory, 0);
|
||||
config->globalBase = args::getInteger(args, OPT_global_base, 0);
|
||||
+ config->tableBase = args::getInteger(args, OPT_table_base, 0);
|
||||
config->maxMemory = args::getInteger(args, OPT_max_memory, 0);
|
||||
config->zStackSize =
|
||||
args::getZOptionValue(args, OPT_z, "stack-size", WasmPageSize);
|
||||
@@ -573,6 +574,17 @@ static void setConfigs() {
|
||||
if (config->exportTable)
|
||||
error("-shared/-pie is incompatible with --export-table");
|
||||
config->importTable = true;
|
||||
+ } else {
|
||||
+ // Default table base. Defaults to 1, reserving 0 for the NULL function
|
||||
+ // pointer.
|
||||
+ if (!config->tableBase)
|
||||
+ config->tableBase = 1;
|
||||
+ // The default offset for static/global data, for when --global-base is
|
||||
+ // not specified on the command line. The precise value of 1024 is
|
||||
+ // somewhat arbitrary, and pre-dates wasm-ld (Its the value that
|
||||
+ // emscripten used prior to wasm-ld).
|
||||
+ if (!config->globalBase && !config->relocatable && !config->stackFirst)
|
||||
+ config->globalBase = 1024;
|
||||
}
|
||||
|
||||
if (config->relocatable) {
|
||||
@@ -666,8 +678,11 @@ static void checkOptions(opt::InputArgList &args) {
|
||||
warn("-Bsymbolic is only meaningful when combined with -shared");
|
||||
}
|
||||
|
||||
- if (config->globalBase && config->isPic) {
|
||||
- error("--global-base may not be used with -shared/-pie");
|
||||
+ if (config->isPic) {
|
||||
+ if (config->globalBase)
|
||||
+ error("--global-base may not be used with -shared/-pie");
|
||||
+ if (config->tableBase)
|
||||
+ error("--table-base may not be used with -shared/-pie");
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/wasm/Options.td b/wasm/Options.td
|
||||
index 50417d2928e0a34..bb764396bf4df14 100644
|
||||
--- a/wasm/Options.td
|
||||
+++ b/wasm/Options.td
|
||||
@@ -191,7 +191,7 @@ def growable_table: FF<"growable-table">,
|
||||
HelpText<"Remove maximum size from function table, allowing table to grow">;
|
||||
|
||||
def global_base: JJ<"global-base=">,
|
||||
- HelpText<"Where to start to place global data">;
|
||||
+ HelpText<"Memory offset at which to place global data (Defaults to 1024)">;
|
||||
|
||||
def import_memory: FF<"import-memory">,
|
||||
HelpText<"Import the module's memory from the default module of \"env\" with the name \"memory\".">;
|
||||
@@ -224,6 +224,9 @@ def no_entry: FF<"no-entry">,
|
||||
def stack_first: FF<"stack-first">,
|
||||
HelpText<"Place stack at start of linear memory rather than after data">;
|
||||
|
||||
+def table_base: JJ<"table-base=">,
|
||||
+ HelpText<"Table offset at which to place address taken functions (Defaults to 1)">;
|
||||
+
|
||||
defm whole_archive: B<"whole-archive",
|
||||
"Force load of all members in a static library",
|
||||
"Do not force load of all members in a static library (default)">;
|
||||
diff --git a/wasm/Writer.cpp b/wasm/Writer.cpp
|
||||
index f25d358dc5bae6f..0576bf2907e49c4 100644
|
||||
--- a/wasm/Writer.cpp
|
||||
+++ b/wasm/Writer.cpp
|
||||
@@ -358,13 +358,6 @@ void Writer::layoutMemory() {
|
||||
memoryPtr = config->globalBase;
|
||||
}
|
||||
} else {
|
||||
- if (!config->globalBase && !config->relocatable && !config->isPic) {
|
||||
- // The default offset for static/global data, for when --global-base is
|
||||
- // not specified on the command line. The precise value of 1024 is
|
||||
- // somewhat arbitrary, and pre-dates wasm-ld (Its the value that
|
||||
- // emscripten used prior to wasm-ld).
|
||||
- config->globalBase = 1024;
|
||||
- }
|
||||
memoryPtr = config->globalBase;
|
||||
}
|
||||
|
||||
@@ -1685,7 +1678,6 @@ void Writer::run() {
|
||||
// For PIC code the table base is assigned dynamically by the loader.
|
||||
// For non-PIC, we start at 1 so that accessing table index 0 always traps.
|
||||
if (!config->isPic) {
|
||||
- config->tableBase = 1;
|
||||
if (WasmSym::definedTableBase)
|
||||
WasmSym::definedTableBase->setVA(config->tableBase);
|
||||
if (WasmSym::definedTableBase32)
|
||||
@@ -1,15 +0,0 @@
|
||||
diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake
|
||||
index d3924f7243d4..42a7cd62281c 100644
|
||||
--- a/cmake/modules/AddLLD.cmake
|
||||
+++ b/cmake/modules/AddLLD.cmake
|
||||
@@ -18,8 +18,8 @@ macro(add_lld_library name)
|
||||
install(TARGETS ${name}
|
||||
COMPONENT ${name}
|
||||
${export_to_lldtargets}
|
||||
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
|
||||
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
|
||||
if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
@@ -80,7 +80,10 @@ let
|
||||
&& p == "clang/gnu-install-dirs.patch"
|
||||
then
|
||||
(if lib.versionAtLeast release_version "19" then ../19/${p} else ../12/${p})
|
||||
else if lib.versionAtLeast release_version "18" && p == "clang/purity.patch" then
|
||||
else if
|
||||
lib.versionAtLeast release_version "18"
|
||||
&& (p == "clang/purity.patch" || p == "lld/gnu-install-dirs.patch")
|
||||
then
|
||||
../18/${p}
|
||||
else if
|
||||
lib.versionAtLeast release_version "15"
|
||||
@@ -103,10 +106,15 @@ let
|
||||
&& lib.versionAtLeast release_version "13"
|
||||
then
|
||||
../13/${p}
|
||||
else if lib.versionAtLeast release_version "16" && p == "compiler-rt/normalize-var.patch" then
|
||||
else if
|
||||
lib.versionAtLeast release_version "16"
|
||||
&& (p == "lld/add-table-base.patch" || p == "compiler-rt/normalize-var.patch")
|
||||
then
|
||||
../16/${p}
|
||||
else if lib.versionOlder release_version "16" && p == "compiler-rt/normalize-var.patch" then
|
||||
../12/${p}
|
||||
else if lib.versionOlder release_version "14" && p == "lld/gnu-install-dirs.patch" then
|
||||
../12/${p}
|
||||
else
|
||||
"${metadata.versionDir}/${p}";
|
||||
};
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake
|
||||
index d3924f7243d4..42a7cd62281c 100644
|
||||
--- a/cmake/modules/AddLLD.cmake
|
||||
+++ b/cmake/modules/AddLLD.cmake
|
||||
@@ -18,8 +18,8 @@ macro(add_lld_library name)
|
||||
install(TARGETS ${name}
|
||||
COMPONENT ${name}
|
||||
${export_to_lldtargets}
|
||||
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
|
||||
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}"
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
|
||||
if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
Reference in New Issue
Block a user