From 2c497bc57fc27af645afbf3de2e4e6068ea853dc Mon Sep 17 00:00:00 2001 From: ruki Date: Fri, 19 Dec 2025 22:55:22 +0800 Subject: add rpath list in binutils --- xmake/core/base/binutils.lua | 10 ++++++++++ xmake/core/sandbox/modules/import/core/base/binutils.lua | 10 ++++++++++ 2 files changed, 20 insertions(+) (limited to 'xmake/core') diff --git a/xmake/core/base/binutils.lua b/xmake/core/base/binutils.lua index af71e8ae7..5bed5de21 100644 --- a/xmake/core/base/binutils.lua +++ b/xmake/core/base/binutils.lua @@ -31,6 +31,7 @@ binutils._bin2macho = binutils._bin2macho or binutils.bin2macho binutils._bin2elf = binutils._bin2elf or binutils.bin2elf binutils._readsyms = binutils._readsyms or binutils.readsyms binutils._deplibs = binutils._deplibs or binutils.deplibs +binutils._rpath_list = binutils._rpath_list or binutils.rpath_list binutils._extractlib = binutils._extractlib or binutils.extractlib -- generate c/c++ code from the binary file @@ -111,6 +112,15 @@ function binutils.deplibs(binaryfile) end end +-- get rpath list from binary file (auto-detect format: ELF or Mach-O) +function binutils.rpath_list(binaryfile) + if binutils._rpath_list then + return binutils._rpath_list(binaryfile) + else + return nil, "binutils: internal rpath_list not supported!" + end +end + -- extract static library to directory -- Supports AR format (.a) and MSVC lib format (.lib) -- @param libraryfile the static library file path (.a or .lib) diff --git a/xmake/core/sandbox/modules/import/core/base/binutils.lua b/xmake/core/sandbox/modules/import/core/base/binutils.lua index 11f432340..b7b8a1792 100644 --- a/xmake/core/sandbox/modules/import/core/base/binutils.lua +++ b/xmake/core/sandbox/modules/import/core/base/binutils.lua @@ -62,6 +62,16 @@ function sandbox_core_base_binutils.deplibs(binaryfile) end end +-- get rpath list from binary file (auto-detect format: ELF or Mach-O) +function sandbox_core_base_binutils.rpath_list(binaryfile) + local rpaths, errors = binutils.rpath_list(binaryfile) + if rpaths then + return rpaths + else + raise("rpath_list: %s", errors or "unknown errors") + end +end + -- extract static library to directory function sandbox_core_base_binutils.extractlib(libraryfile, outputdir, opt) local ok, errors = binutils.extractlib(libraryfile, outputdir, opt) -- cgit v1.3.1