changeset 30470:9ccf3bea4cf1

Prefix EXTERN_ASM to global variables to match them to an extern prefix of C.
author komh
date Fri, 05 Feb 2010 11:00:59 +0000
parents 6dd1ae2298f3
children ef00ce26e9b5
files loader/wrapper.S
diffstat 1 files changed, 28 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/loader/wrapper.S	Fri Feb 05 10:54:28 2010 +0000
+++ b/loader/wrapper.S	Fri Feb 05 11:00:59 2010 +0000
@@ -1,27 +1,33 @@
+#include "config.h"
+
+#define GLUE(a, b) a ## b
+#define JOIN(a, b) GLUE(a, b)
+#define MANGLE(s)  JOIN(EXTERN_ASM, s)
+
 .data
-.globl caller_return
-caller_return:
+.globl MANGLE(caller_return)
+MANGLE(caller_return):
 	.long 0
-.globl report_entry
-report_entry:
-	.long null_call
-.globl report_ret
-report_ret:
-	.long null_call
-.global wrapper_target
-wrapper_target:
-	.long null_call
+.globl MANGLE(report_entry)
+MANGLE(report_entry):
+	.long MANGLE(null_call)
+.globl MANGLE(report_ret)
+MANGLE(report_ret):
+	.long MANGLE(null_call)
+.global MANGLE(wrapper_target)
+MANGLE(wrapper_target):
+	.long MANGLE(null_call)
 
 .text
-.globl null_call
-	.type null_call, @function
+.globl MANGLE(null_call)
+	.type MANGLE(null_call), @function
 	.balign 16,0x90
-null_call:
+MANGLE(null_call):
 	ret
-.globl wrapper
-	.type wrapper, @function
+.globl MANGLE(wrapper)
+	.type MANGLE(wrapper), @function
 	.balign 16,0x90
-wrapper:
+MANGLE(wrapper):
 	pusha			# store registers (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI)
 	pushf			# store flags
 
@@ -39,7 +45,7 @@
 	push %eax
 	push %edx
 
-	call *report_entry	# report entry
+	call *MANGLE(report_entry)	# report entry
 
 	test %eax, %eax
 	jnz .Ldone
@@ -48,14 +54,14 @@
 	popf			# restore flags
 	popa			# restore registers
 
-	popl caller_return	# switch return addresses
+	popl MANGLE(caller_return)	# switch return addresses
 	pushl $.Lwrapper_return
 
-	jmp *wrapper_target	# wrapper_target should return at .Lwrapper_return
+	jmp *MANGLE(wrapper_target)	# wrapper_target should return at .Lwrapper_return
 
 	.balign 16, 0x90
 .Lwrapper_return:
-	pushl caller_return	# restore the original return address
+	pushl MANGLE(caller_return)	# restore the original return address
 	pusha			# more for reference sake here
 	pushf
 
@@ -73,7 +79,7 @@
 	push %eax
 	push %edx
 
-	call *report_ret	# report the return information (same args)
+	call *MANGLE(report_ret)	# report the return information (same args)
 .Ldone:
 
 	leave