--- ./arch/um/sys-i386/fault.c.warnfix 2003-12-27 17:07:07.000000000 +0100 +++ ./arch/um/sys-i386/fault.c 2003-12-27 17:07:17.000000000 +0100 @@ -7,16 +7,25 @@ #include "sysdep/ptrace.h" #include "sysdep/sigcontext.h" -extern unsigned long search_exception_table(unsigned long addr); +/*These two are from asm-um/uaccess.h and linux/module.h, check them.*/ +struct exception_table_entry +{ + unsigned long insn; + unsigned long fixup; +}; + +const struct exception_table_entry *search_exception_tables(unsigned long add); +/*Compare this to arch/i386/mm/extable.c:fixup_exception()*/ int arch_fixup(unsigned long address, void *sc_ptr) { struct sigcontext *sc = sc_ptr; - unsigned long fixup; + const struct exception_table_entry *fixup; fixup = search_exception_tables(address); + if(fixup != 0){ - sc->eip = fixup; + sc->eip = fixup->fixup; return(1); } return(0);