linuxOS_AP06/external/libmali/scripts/fixup_sym.py
2025-06-03 12:28:32 +08:00

21 lines
613 B
Python
Executable File

#!/usr/bin/env python3
import lief
import sys
libpath = sys.argv[1]
lib = lief.parse(libpath)
symbols = ["__bss_end__", "__bss_start", "_end", "_edata", "__bss_start__", "_bss_end__", "__end__"]
for symbol in symbols:
hidden = lib.get_symbol(symbol)
if hidden:
hidden.binding = lief.ELF.SYMBOL_BINDINGS.GLOBAL
hidden.visibility = lief.ELF.SYMBOL_VISIBILITY.DEFAULT
hidden = lib.add_dynamic_symbol(hidden)
# HACK: increase .dynsym's sh_info to workaround local symbol warning:
# 'found local symbol in global part of symbol table'
lib.get_section('.dynsym').information = 10
lib.write(libpath)