diff options
| author | ruki <[email protected]> | 2025-12-09 00:29:51 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-12-09 00:29:51 +0800 |
| commit | ba293bc4b8840da34220e1f54313d531d18dde8e (patch) | |
| tree | e6b6325ccf446b845b26a3a21f06f0bd84914170 /xmake/core | |
| parent | f1726a8f0f63160ae2185f28b38a740caf6d1ab1 (diff) | |
add binary readsyms
Diffstat (limited to 'xmake/core')
| -rw-r--r-- | xmake/core/base/binutils.lua | 10 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/base/binutils.lua | 10 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/utils.lua | 2 |
3 files changed, 21 insertions, 1 deletions
diff --git a/xmake/core/base/binutils.lua b/xmake/core/base/binutils.lua index b21de2276..8047046b2 100644 --- a/xmake/core/base/binutils.lua +++ b/xmake/core/base/binutils.lua @@ -26,6 +26,7 @@ binutils._bin2c = binutils._bin2c or binutils.bin2c binutils._bin2coff = binutils._bin2coff or binutils.bin2coff binutils._bin2macho = binutils._bin2macho or binutils.bin2macho binutils._bin2elf = binutils._bin2elf or binutils.bin2elf +binutils._readsyms = binutils._readsyms or binutils.readsyms -- generate c/c++ code from the binary file function binutils.bin2c(binaryfile, outputfile, opt) @@ -56,6 +57,15 @@ function binutils.bin2elf(binaryfile, outputfile, opt) return binutils._bin2elf(binaryfile, outputfile, opt.symbol_prefix or "_binary_", opt.arch or "x86_64", opt.basename, opt.zeroend or false) end +-- read symbols from object file (auto-detect format: COFF, ELF, or Mach-O) +function binutils.readsyms(binaryfile) + if binutils._readsyms then + return binutils._readsyms(binaryfile) + else + return nil, "readsyms: C implementation not available" + end +end + -- return module return binutils diff --git a/xmake/core/sandbox/modules/import/core/base/binutils.lua b/xmake/core/sandbox/modules/import/core/base/binutils.lua index 38aad9b73..9e371d777 100644 --- a/xmake/core/sandbox/modules/import/core/base/binutils.lua +++ b/xmake/core/sandbox/modules/import/core/base/binutils.lua @@ -57,6 +57,16 @@ function sandbox_core_base_binutils.bin2elf(binaryfile, outputfile, opt) end end +-- read symbols from object file (auto-detect format: ELF, COFF, Mach-O) +function sandbox_core_base_binutils.readsyms(binaryfile) + local symbols, errors = binutils.readsyms(binaryfile) + if symbols then + return symbols + else + raise("readsyms: %s", errors or "unknown errors") + end +end + -- return module return sandbox_core_base_binutils diff --git a/xmake/core/sandbox/modules/utils.lua b/xmake/core/sandbox/modules/utils.lua index df90492be..1be9c7c08 100644 --- a/xmake/core/sandbox/modules/utils.lua +++ b/xmake/core/sandbox/modules/utils.lua @@ -150,7 +150,7 @@ function sandbox_utils.assert(value, format, ...) end -- generate c/c++ code from the binary file (deprecated, use binutils.bin2c instead) -function sandbox_utils.bin2c(binaryfile, outputfile, opt) + function sandbox_utils.bin2c(binaryfile, outputfile, opt) deprecated.add("binutils.bin2c", "utils.bin2c") return binutils.bin2c(binaryfile, outputfile, opt) end |
