diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/unix.h | 8 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d06524f..205785a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -47,6 +47,11 @@ * gcc.texi (Contributing): Update. +2000-10-13 Diego Novillo <dnovillo@cygnus.com> + + * config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Output final jump using + appropriate assembler dialect. + 2000-10-13 Alexandre Oliva <aoliva@redhat.com> * c-common.c (c_expand_builtin): PARAMS-ize prototype. diff --git a/gcc/config/i386/unix.h b/gcc/config/i386/unix.h index 5b87c8c..eea359c 100644 --- a/gcc/config/i386/unix.h +++ b/gcc/config/i386/unix.h @@ -118,9 +118,11 @@ do { \ ASM_OUTPUT_INTERNAL_LABEL (FILE, "L", CODE_LABEL_NUMBER (xops[1])); \ output_asm_insn ("pop{l}\t%0", xops); \ output_asm_insn ("add{l}\t$_GLOBAL_OFFSET_TABLE_+[.-%P1], %0", xops); \ - fprintf (FILE, "\tmovl "); \ - assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \ - fprintf (FILE, "@GOT(%%ebx),%%ecx\n\tpopl %%ebx\n\tjmp *%%ecx\n"); \ + xops[0] = gen_rtx_MEM (SImode, XEXP (DECL_RTL (FUNCTION), 0)); \ + output_asm_insn ("mov{l}\t{%0@GOT(%%ebx), %%ecx|%%ecx, %0@GOT[%%ebx]}",\ + xops); \ + asm_fprintf (FILE, "\tpop{l\t%%ebx|\t%%ebx}\n"); \ + asm_fprintf (FILE, "\tjmp\t{*%%ecx|%%ecx}\n"); \ } \ else \ { \ |