reloc: _exit can't be global unless %ebx is regenerated
authorH. Peter Anvin <hpa@zytor.com>
Fri, 11 Jan 2008 03:05:41 +0000 (19:05 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Fri, 11 Jan 2008 03:05:41 +0000 (19:05 -0800)
We don't currently use the _exit symbol in reloc_init.S, so we can
rely on main() preserving %ebx around it.  However, if something were
to call _exit() directly this wouldn't be the case, so don't make
_exit a global unless we add %ebx reinitialization.

reloc/reloc_init.S

index 810a971..eb3e31f 100644 (file)
@@ -97,7 +97,7 @@ _start:
                   protected-mode environment.  %eax is live here
                   and contains the exit code. */
 
-               .globl  _exit
+               /* Don't make this global without regenerating %ebx! */
 _exit:
                lidtl   orig_idt(%ebx)
                lgdtl   orig_gdt(%ebx)