]> git.pld-linux.org Git - packages/crossm68k-gcc.git/blame - crossm68k-gcc-thunk.patch
- outdated
[packages/crossm68k-gcc.git] / crossm68k-gcc-thunk.patch
CommitLineData
1b8f31c8 1
2This takes care of -mid-shared-library requirements for
3code generated by m68k_output_mi_thunk().
4
5NOTE: the generated assembly code clobbers %a1. I don't
6know whether this is safe.
7
8
9diff -Npr -U10 gcc-3.3.1.orig/gcc/config/m68k/m68k.c gcc-3.3.1/gcc/config/m68k/m68k.c
10--- gcc-3.3.1.orig/gcc/config/m68k/m68k.c 2003-07-25 00:35:34.000000000 +0200
11+++ gcc-3.3.1/gcc/config/m68k/m68k.c 2003-07-25 00:36:14.000000000 +0200
12@@ -4181,40 +4181,44 @@ m68k_output_mi_thunk (file, thunk, delta
13 #endif
14 }
15
16 xops[0] = DECL_RTL (function);
17
18 /* Logic taken from call patterns in m68k.md. */
19 if (flag_pic)
20 {
21 if (TARGET_PCREL)
22 fmt = "bra.l %o0";
23- else
24+ else if ((flag_pic == 1) || TARGET_68020)
25 {
26 #ifdef MOTOROLA
27 #ifdef HPUX_ASM
28 fmt = "bra.l %0";
29 #else
30 #ifdef USE_GAS
31 fmt = "bra.l %0@PLTPC";
32 #else
33 fmt = "bra %0@PLTPC";
34 #endif
35 #endif
36 #else
37 #ifdef USE_GAS
38 fmt = "bra.l %0";
39 #else
40 fmt = "jra %0,a1";
41 #endif
42 #endif
43 }
44+ else if (optimize_size || TARGET_ID_SHARED_LIBRARY)
45+ fmt = "move.l %0@GOT(%%a5), %%a1\n\tjmp (%%a1)";
46+ else
47+ fmt = "lea %0-.-8,%%a1\n\tjsr 0(%%pc,%%a1)";
48 }
49 else
50 {
51 #if defined (MOTOROLA) && !defined (USE_GAS)
52 #ifdef MOTOROLA_BSR
53 fmt = "bra %0";
54 #else
55 fmt = "jmp %0";
56 #endif
57 #else
This page took 0.069491 seconds and 4 git commands to generate.