Skip to content
Snippets Groups Projects
renamesyms.sh 970 B
Newer Older
target=$1
deps_dir=$2

if [ -z "$target" ] || [ -z "$deps_dir" ]; then
    echo "Usage:\n\t./renamesyms.sh TARGET DEPS_DIR"
    exit 1
fi

symbols_file=`mktemp`
special_syms=(
    __rg_alloc
    __rg_alloc_zeroed
    __rg_dealloc
    __rg_oom
    __rg_realloc
    __rust_alloc
    __rust_alloc_error_handler
    __rust_alloc_error_handler_should_panic
    __rust_alloc_zeroed
    __rust_dealloc
    __rust_no_alloc_shim_is_unstable

for dep in `find $deps_dir -type f -name "*.rlib"`; do
    "${TARGET}-nm" --format=posix -g "$dep" 2>/dev/null | sed 's/.*:.*//g' | awk '{if ($2 == "T") print $1}' | sed 's/^\(.*\)$/\1 __relibc_\1/g' >> $symbols_file
for special_sym in "${special_syms[@]}"; do
    echo "$special_sym __relibc_$special_sym" >> $symbols_file
done

sorted_file=`mktemp`
sort -u "$symbols_file" > "$sorted_file"
rm -f "$symbols_file"

"${TARGET}-objcopy" --redefine-syms="$sorted_file" "$target"

rm -f "$sorted_file"