--- kqemu-1.4.0pre1/common/i386/monitor.ld.orig 2008-05-30 22:33:34.000000000 +0200 +++ kqemu-1.4.0pre1/common/i386/monitor.ld 2009-05-12 19:20:53.671188400 +0200 @@ -1,13 +1,16 @@ -ENTRY(_start) SECTIONS { +ENTRY(_start) +PROVIDE(__start = . ); . = 0xf0000000; .text : { *(.text) } .rodata : { *(.rodata) } . = ALIGN(4); __start_seg_ex_table = . ; + PROVIDE(___start_seg_ex_table = . ); seg_ex_table : { *(seg_ex_table) } __stop_seg_ex_table = . ; + PROVIDE(___stop_seg_ex_table = . ); .data : { *(.data) } .plt : { *(.plt) } .got : { *(.got.plt) *(.got) } --- kqemu-1.4.0pre1/common/i386/monitor_asm.S.orig 2008-05-30 22:33:34.000000000 +0200 +++ kqemu-1.4.0pre1/common/i386/monitor_asm.S 2009-05-12 18:57:01.741801600 +0200 @@ -24,8 +24,8 @@ unsigned long a, unsigned long b) */ //#define USE_PUSHF - .globl ASM_NAME(exec_binary) -ASM_NAME(exec_binary): + .globl ASM_NAME(_exec_binary) +ASM_NAME(_exec_binary): pushl %ebx pushl %esi movl 12(%esp), %ebx @@ -143,17 +143,16 @@ BT_OP4(bsf) BT_OP4(bsr) - .globl ASM_NAME(start_func) -ASM_NAME(start_func): + .globl ASM_NAME(_start_func) +ASM_NAME(_start_func): movl %ecx, %esp pushl %edx /* parameter */ pushl $0 /* invalid return address */ jmp *%eax #define SEG_EXCEPTION(label) \ - .section "seg_ex_table", "a" ; \ + .section seg_ex_table, "a" ; \ .long label ; \ - .previous #ifdef USE_SEG_GP /* %ebx contains the kqemu_state pointer, %eax the selector, @@ -198,8 +197,8 @@ #endif /* switch to user mode */ - .globl ASM_NAME(goto_user) -ASM_NAME(goto_user): + .globl ASM_NAME(_goto_user) +ASM_NAME(_goto_user): movl %eax, %ebx movl %edx, %esp jmp exception_return @@ -349,7 +348,7 @@ .align 16 ; \ push_0 ; \ pushl %edi ; \ - movl $ASM_NAME(kqemu_exception_ ## n), %edi ; \ + movl $ASM_NAME(_kqemu_exception_ ## n), %edi ; \ jmp __monitor_exception /* hardware interrupts */ @@ -381,7 +380,7 @@ movl %ecx, 6 * 4(%esp) pushl %ebx - call ASM_NAME(monitor_interrupt) + call ASM_NAME(_monitor_interrupt) addl $4, %esp jmp exception_return @@ -392,9 +391,9 @@ jmp __monitor_interrupt ; .align 16 - .globl ASM_NAME(interrupt_table) + .globl ASM_NAME(_interrupt_table) -ASM_NAME(interrupt_table): +ASM_NAME(_interrupt_table): EXCEPTION_VECTOR(00, pushl $0) EXCEPTION_VECTOR(01, pushl $0) --- kqemu-1.4.0pre1/common/i386/nexus_asm.S.orig 2008-05-30 22:33:34.000000000 +0200 +++ kqemu-1.4.0pre1/common/i386/nexus_asm.S 2009-05-12 18:56:15.509202000 +0200 @@ -20,24 +20,24 @@ #include "monitor_def.h" #include "kqemu_int.h" -.globl ASM_NAME(kernel2monitor) -.globl ASM_NAME(monitor2kernel) -.globl ASM_NAME(kernel2monitor_jmp_offset) -.globl ASM_NAME(monitor2kernel_jmp_offset) +.globl ASM_NAME(_kernel2monitor) +.globl ASM_NAME(_monitor2kernel) +.globl ASM_NAME(_kernel2monitor_jmp_offset) +.globl ASM_NAME(_monitor2kernel_jmp_offset) .global _start _start: - .long ASM_NAME(kernel2monitor) - _start - .long ASM_NAME(interrupt_table) - _start - .long ASM_NAME(kernel2monitor_jmp_offset) - _start - .long ASM_NAME(monitor2kernel_jmp_offset) - _start - .long ASM_NAME(monitor_exec) - _start + .long ASM_NAME(_kernel2monitor) - _start + .long ASM_NAME(_interrupt_table) - _start + .long ASM_NAME(_kernel2monitor_jmp_offset) - _start + .long ASM_NAME(_monitor2kernel_jmp_offset) - _start + .long ASM_NAME(_monitor_exec) - _start /* * Assumptions when entering kernel2monitor: * %ss, %ds, %es, %cs are 4G flat 32 bit segments * IRQ disabled */ -ASM_NAME(kernel2monitor): +ASM_NAME(_kernel2monitor): pushl %ebp movl %esp, %ebp pushl %ebx @@ -84,7 +84,7 @@ lgdt KQEMU_STATE_monitor_gdt(%ebx) ljmp *KQEMU_STATE_monitor_jmp(%ebx) -ASM_NAME(kernel2monitor_jmp_offset): +ASM_NAME(_kernel2monitor_jmp_offset): lldt KQEMU_STATE_monitor_ldt_sel(%ebx) @@ -127,7 +127,7 @@ * Assumptions when entering monitor2kernel: * IRQ disabled */ -ASM_NAME(monitor2kernel): +ASM_NAME(_monitor2kernel): pushl %ebp movl %esp, %ebp pushl %ebx @@ -168,7 +168,7 @@ lldt KQEMU_STATE_kernel_ldt_sel(%ebx) ljmp *KQEMU_STATE_kernel_jmp(%ebx) -ASM_NAME(monitor2kernel_jmp_offset): +ASM_NAME(_monitor2kernel_jmp_offset): /* restore TR and clear BUSY bit */ movw KQEMU_STATE_kernel_tr_sel(%ebx), %ax --- kqemu-1.4.0pre1/common/kqemu_int.h.orig 2008-05-30 22:33:34.000000000 +0200 +++ kqemu-1.4.0pre1/common/kqemu_int.h 2009-05-12 18:47:58.075179200 +0200 @@ -1062,9 +1062,8 @@ ".previous\n" #else #define MMU_EXCEPTION(label) \ - ".section \"mmu_ex_table\", \"a\"\n"\ - ".long " #label "\n"\ - ".previous\n" + ".section mmu_ex_table, \"a\"\n"\ + ".long " #label "\n" #endif extern char _start; @@ -1225,9 +1224,8 @@ ".previous\n" #else #define SEG_EXCEPTION(label) \ - ".section \"seg_ex_table\", \"a\"\n"\ - ".long " #label "\n"\ - ".previous\n" + ".section seg_ex_table, \"a\"\n"\ + ".long " #label "\n" #endif static inline unsigned long compute_eflags_user(struct kqemu_state *s,