summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/newsym
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/newsym')
-rwxr-xr-xwinsup/cygwin/newsym21
1 files changed, 16 insertions, 5 deletions
diff --git a/winsup/cygwin/newsym b/winsup/cygwin/newsym
index 688a8c6f8..b0f68fec2 100755
--- a/winsup/cygwin/newsym
+++ b/winsup/cygwin/newsym
@@ -1,22 +1,33 @@
-#!/bin/sh -x
+#!/bin/sh
lib=$1; shift
as=$1; shift
ar=$1; shift
ranlib=$1; shift
rm -rf newsym.dir
-trap "rm -rf newsym.dir" 0 1 2 15
+# 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 .idata$6
- .extern __imp__$oldsym
- .extern __head_cygwin1_dll
.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