summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2015-09-09 22:47:52 -0400
committermidipix <writeonce@midipix.org>2015-09-13 22:04:38 -0400
commitfa55cc4bd37a06c67231368a7bbc6d2fa45616bd (patch)
tree9fcfed5e3168e50c6ba1a3f4a3b3156515473dbb
parent3621ff77f635085921ba0181399600ed50be302b (diff)
downloadmmglue-fa55cc4bd37a06c67231368a7bbc6d2fa45616bd.tar.bz2
mmglue-fa55cc4bd37a06c67231368a7bbc6d2fa45616bd.tar.xz
nt32: add GOT support to assembly files.
-rw-r--r--src/internal/nt32/syscall.s7
-rw-r--r--src/setjmp/nt32/longjmp.s6
-rw-r--r--src/setjmp/nt32/setjmp.s11
-rw-r--r--src/thread/nt32/syscall_cp.s18
4 files changed, 37 insertions, 5 deletions
diff --git a/src/internal/nt32/syscall.s b/src/internal/nt32/syscall.s
index bf90d04..29fe032 100644
--- a/src/internal/nt32/syscall.s
+++ b/src/internal/nt32/syscall.s
@@ -4,3 +4,10 @@
___syscall:
jmp ___syscall_disp
+
+ .section .got$___syscall
+ .global __imp____syscall
+__imp____syscall:
+ .long ___syscall
+ .linkonce discard
+
diff --git a/src/setjmp/nt32/longjmp.s b/src/setjmp/nt32/longjmp.s
index 46713f2..73b2e61 100644
--- a/src/setjmp/nt32/longjmp.s
+++ b/src/setjmp/nt32/longjmp.s
@@ -11,3 +11,9 @@ ___longjmp:
__longjmp:
_longjmp:
test %edx, %edx # is val zero?
+
+ .section .got$longjmp
+ .global __imp__longjmp
+__imp__longjmp:
+ .long _longjmp
+ .linkonce discard
diff --git a/src/setjmp/nt32/setjmp.s b/src/setjmp/nt32/setjmp.s
index d4e8db3..7ef6485 100644
--- a/src/setjmp/nt32/setjmp.s
+++ b/src/setjmp/nt32/setjmp.s
@@ -10,9 +10,10 @@
___setjmp:
__setjmp:
_setjmp:
- pop (%ecx) # return address
- mov %esp, 0x04(%ecx) # caller's stack pointer
- push (%ecx) # restore own stack pointer
-
- xor %eax, %eax
ret
+
+ .section .got$setjmp,"r"
+ .global __imp__setjmp
+__imp__setjmp:
+ .long _setjmp
+ .linkonce discard
diff --git a/src/thread/nt32/syscall_cp.s b/src/thread/nt32/syscall_cp.s
index c52731f..1b3f672 100644
--- a/src/thread/nt32/syscall_cp.s
+++ b/src/thread/nt32/syscall_cp.s
@@ -13,3 +13,21 @@ ___cp_begin:
___cp_end:
ret
+
+ .section .got$___syscall_cp_asm
+ .global __imp____syscall_cp_asm
+__imp____syscall_cp_asm:
+ .long ___syscall_cp_asm
+ .linkonce discard
+
+ .section .got$___cp_begin
+ .global __imp____cp_begin
+__imp____cp_begin:
+ .long ___cp_begin
+ .linkonce discard
+
+ .section .got$___cp_end
+ .global __imp____cp_end
+__imp____cp_end:
+ .long ___cp_end
+ .linkonce discard