[PATCH] D98901: [AIX] Update rpath for BUILD_SHARED_LIBS
Jinsong Ji via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 18 14:44:05 PDT 2021
jsji created this revision.
jsji added reviewers: PowerPC, daltenty, hubert.reinterpretcast.
Herald added a subscriber: mgorny.
jsji requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
BUILD_SHARED_LIBS build llvm component as shared library,
which can reduce the size a lot.
Normally, the binary use ORIGIN../lib to load component libraries,
unfortunatly, ORIGIN is not supported by AIX ld.
We hardcoded the build lib and install lib path in rpath for now
to enable BUILD_SHARED_LIBS build.
Understand that this is not perfect solution,
we can update this when we find better solution.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D98901
Files:
llvm/cmake/modules/AddLLVM.cmake
llvm/cmake/modules/HandleLLVMOptions.cmake
Index: llvm/cmake/modules/HandleLLVMOptions.cmake
===================================================================
--- llvm/cmake/modules/HandleLLVMOptions.cmake
+++ llvm/cmake/modules/HandleLLVMOptions.cmake
@@ -212,6 +212,11 @@
append("-bcdtors:mbr"
CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
endif()
+ if(BUILD_SHARED_LIBS)
+ # See rpath handling in AddLLVM.cmake
+ # FIXME: Remove this warning if this rpath is no longer hardcoded.
+ message(WARNING "Build and install environment path info may be exposed, binaries also unrelocatable.")
+ endif()
endif()
# Pass -Wl,-z,defs. This makes sure all symbols are defined. Otherwise a DSO
Index: llvm/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm/cmake/modules/AddLLVM.cmake
+++ llvm/cmake/modules/AddLLVM.cmake
@@ -2105,6 +2105,12 @@
if (APPLE)
set(_install_name_dir INSTALL_NAME_DIR "@rpath")
set(_install_rpath "@loader_path/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
+ elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND BUILD_SHARED_LIBS)
+ # $ORIGIN is not interpreted at link time by aix ld.
+ # Since BUILD_SHARED_LIBS is only recommended for use by developers,
+ # hardcode the rpath to build/install lib dir first in this mode.
+ # FIXME: update this when there is better solution.
+ set(_install_rpath "${LLVM_LIBRARY_OUTPUT_INTDIR}" "${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}")
elseif(UNIX)
set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D98901.331693.patch
Type: text/x-patch
Size: 1657 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210318/b5675504/attachment.bin>
More information about the llvm-commits
mailing list