34 lines
590 B
Bash
Executable File
34 lines
590 B
Bash
Executable File
#!/bin/sh
|
|
lib=$1; shift
|
|
as=$1; shift
|
|
ar=$1; shift
|
|
rm -rf newsym.dir
|
|
trap "rm -rf newsym.dir" 0 1 2 15
|
|
mkdir newsym.dir
|
|
while [ -n "$1" ]; do
|
|
newsym=$1; shift
|
|
oldsym=$1; shift
|
|
cat <<EOF > newsym.dir/$newsym.s
|
|
.section .text
|
|
.global _$newsym
|
|
.global __imp__$newsym
|
|
_$newsym:
|
|
jmp *__imp__$oldsym
|
|
|
|
.section .idata\$7
|
|
.long __head_cygwin1_dll
|
|
|
|
.section .idata\$5
|
|
__imp__$newsym: .rva 1f
|
|
|
|
.section .idata\$4
|
|
.rva 1f
|
|
|
|
.section .idata\$6
|
|
1: .short 2
|
|
.asciz "$oldsym"
|
|
EOF
|
|
$as -o newsym.dir/$newsym.o newsym.dir/$newsym.s
|
|
done
|
|
$ar crus $lib newsym.dir/*.o
|