[lld] 4b267bb - [lld] load rpaths from tbd files (#134925)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 10 07:34:23 PDT 2025
Author: Richard Howell
Date: 2025-04-10T07:34:20-07:00
New Revision: 4b267bb7c2f1f84e10d3d47d17e0a19de6559de2
URL: https://github.com/llvm/llvm-project/commit/4b267bb7c2f1f84e10d3d47d17e0a19de6559de2
DIFF: https://github.com/llvm/llvm-project/commit/4b267bb7c2f1f84e10d3d47d17e0a19de6559de2.diff
LOG: [lld] load rpaths from tbd files (#134925)
TBD files can contain rpaths, add support for setting them in DylibFile
during construction.
Added:
lld/test/MachO/tapi-rpath.s
Modified:
lld/MachO/InputFiles.cpp
Removed:
################################################################################
diff --git a/lld/MachO/InputFiles.cpp b/lld/MachO/InputFiles.cpp
index 9adfbc9d3f6f5..60667e3b415d7 100644
--- a/lld/MachO/InputFiles.cpp
+++ b/lld/MachO/InputFiles.cpp
@@ -1879,6 +1879,9 @@ DylibFile::DylibFile(const InterfaceFile &interface, DylibFile *umbrella,
installName = saver().save(interface.getInstallName());
compatibilityVersion = interface.getCompatibilityVersion().rawValue();
currentVersion = interface.getCurrentVersion().rawValue();
+ for (const auto &rpath : interface.rpaths())
+ if (rpath.first == config->platformInfo.target)
+ rpaths.push_back(saver().save(rpath.second));
if (config->printEachFile)
message(toString(this));
diff --git a/lld/test/MachO/tapi-rpath.s b/lld/test/MachO/tapi-rpath.s
new file mode 100644
index 0000000000000..48032f28a6ce6
--- /dev/null
+++ b/lld/test/MachO/tapi-rpath.s
@@ -0,0 +1,87 @@
+# REQUIRES: aarch64, shell
+# RUN: rm -rf %t; split-file %s %t
+# RUN: ln -s Versions/A/Developer %t/Developer/Library/Frameworks/Developer.framework/
+# RUN: ln -s Versions/A/DeveloperCore %t/Developer/Library/PrivateFrameworks/DeveloperCore.framework/
+# RUN: llvm-mc -filetype obj -triple arm64-apple-macos11.0 %t/test.s -o %t/test.o
+# RUN: %lld -arch arm64 -platform_version macos 11.0 11.0 -o %t/test -framework Developer -F %t/Developer/Library/Frameworks %t/test.o
+
+# RUN: llvm-objdump --bind --no-show-raw-insn -d %t/test | FileCheck %s
+# CHECK: Bind table:
+# CHECK-DAG: __DATA __data {{.*}} pointer 0 Developer _funcPublic
+# CHECK-DAG: __DATA __data {{.*}} pointer 0 Developer _funcCore
+
+#--- Developer/Library/Frameworks/Developer.framework/Versions/A/Developer
+{
+ "tapi_tbd_version": 5,
+ "main_library": {
+ "target_info": [
+ {
+ "target": "arm64-macos"
+ }
+ ],
+ "install_names": [
+ {
+ "name": "@rpath/Developer.framework/Versions/A/Developer"
+ }
+ ],
+ "rpaths": [
+ {
+ "paths": [
+ "@loader_path/../../../../PrivateFrameworks/"
+ ]
+ }
+ ],
+ "reexported_libraries": [
+ {
+ "names": [
+ "@rpath/DeveloperCore.framework/Versions/A/DeveloperCore"
+ ]
+ }
+ ],
+ "exported_symbols": [
+ {
+ "text": {
+ "global": ["_funcPublic"]
+ }
+ }
+ ]
+ }
+}
+#--- Developer/Library/PrivateFrameworks/DeveloperCore.framework/Versions/A/DeveloperCore
+{
+ "tapi_tbd_version": 5,
+ "main_library": {
+ "target_info": [
+ {
+ "target": "arm64-macos"
+ }
+ ],
+ "install_names": [
+ {
+ "name": "@rpath/DeveloperCore.framework/Versions/A/DeveloperCore"
+ }
+ ],
+ "allowable_clients": [
+ {
+ "clients": ["Developer"]
+ }
+ ],
+ "exported_symbols": [
+ {
+ "text": {
+ "global": ["_funcCore"]
+ }
+ }
+ ]
+ }
+}
+#--- test.s
+.text
+.globl _main
+
+_main:
+ ret
+
+.data
+ .quad _funcPublic
+ .quad _funcCore
More information about the llvm-commits
mailing list