]> gitweb @ CieloNegro.org - pkgsrc-firefox3.git/blob - patches/patch-bx
Initial revision of the upstream www/firefox3
[pkgsrc-firefox3.git] / patches / patch-bx
1 $NetBSD: patch-bx,v 1.1.1.1 2008/06/28 10:01:07 tnn Exp $
2
3 diff -ruN ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp ./xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp
4 --- ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp  2004-04-18 23:18:18.000000000 +0900
5 +++ ./xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc_netbsd.cpp        2005-12-04 19:34:41.000000000 +0900
6 @@ -119,8 +119,10 @@
7                  if ((PRUint32) ap & 4) ap++; // doubles are 8-byte aligned on stack
8                  dp->val.d = *(double*) ap;
9                  ap += 2;
10 +#if __GXX_ABI_VERSION < 100
11                 if (gpr < GPR_COUNT)
12                     gpr += 2;
13 +#endif
14              }
15              continue;
16          }
17 @@ -130,8 +132,10 @@
18              else {
19                  dp->val.f = *(float*) ap;
20                 ap += 1;
21 +#if __GXX_ABI_VERSION < 100
22                 if (gpr < GPR_COUNT)
23                     gpr += 1;
24 +#endif
25              }
26              continue;
27          }
28 @@ -195,7 +199,9 @@
29  // however, it's quick, dirty, and'll break when the ABI changes on
30  // us, which is what we want ;-).
31  
32 -#define STUB_ENTRY(n)                                       \
33 +#if __GXX_ABI_VERSION < 100
34 +// gcc-2 version
35 +# define STUB_ENTRY(n)                                       \
36  __asm__ (                                                   \
37          ".section \".text\" \n\t"                           \
38          ".align 2 \n\t"                                     \
39 @@ -206,6 +212,46 @@
40         "li     11,"#n" \n\t"                               \
41         "b      SharedStub@local \n"                        \
42  );
43 +#else
44 +// gcc-3 version
45 +//
46 +// As G++3 ABI contains the length of the functionname in the mangled
47 +// name, it is difficult to get a generic assembler mechanism like
48 +// in the G++ 2.95 case.
49 +// Create names would be like:
50 +// _ZN14nsXPTCStubBase5Stub1Ev
51 +// _ZN14nsXPTCStubBase6Stub12Ev
52 +// _ZN14nsXPTCStubBase7Stub123Ev
53 +// _ZN14nsXPTCStubBase8Stub1234Ev
54 +// etc.
55 +// Use assembler directives to get the names right...
56 +
57 +# define STUB_ENTRY(n)                                                 \
58 +__asm__ (                                                              \
59 +       ".align 2 \n\t"                                                 \
60 +       ".if    "#n" < 10 \n\t"                                         \
61 +       ".globl _ZN14nsXPTCStubBase5Stub"#n"Ev \n\t"                    \
62 +       ".type  _ZN14nsXPTCStubBase5Stub"#n"Ev,@function \n\n"          \
63 +"_ZN14nsXPTCStubBase5Stub"#n"Ev: \n\t"                                 \
64 +                                                                       \
65 +       ".elseif "#n" < 100 \n\t"                                       \
66 +       ".globl _ZN14nsXPTCStubBase6Stub"#n"Ev \n\t"                    \
67 +       ".type  _ZN14nsXPTCStubBase6Stub"#n"Ev,@function \n\n"          \
68 +"_ZN14nsXPTCStubBase6Stub"#n"Ev: \n\t"                                 \
69 +                                                                       \
70 +       ".elseif "#n" < 1000 \n\t"                                      \
71 +       ".globl _ZN14nsXPTCStubBase7Stub"#n"Ev \n\t"                    \
72 +       ".type  _ZN14nsXPTCStubBase7Stub"#n"Ev,@function \n\n"          \
73 +"_ZN14nsXPTCStubBase7Stub"#n"Ev: \n\t"                                 \
74 +                                                                       \
75 +       ".else \n\t"                                                    \
76 +       ".err   \"stub number "#n" >= 1000 not yet supported\"\n"       \
77 +       ".endif \n\t"                                                   \
78 +                                                                       \
79 +       "li     11,"#n" \n\t"                                           \
80 +       "b      SharedStub@local \n"                                    \
81 +);
82 +#endif
83  
84  #define SENTINEL_ENTRY(n)                            \
85  nsresult nsXPTCStubBase::Sentinel##n()               \