source: trunk/testcase/weak/weak3.c@ 1186

Last change on this file since 1186 was 1186, checked in by bird, 22 years ago

...

  • Property cvs2svn:cvs-rev set to 1.6
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 1.9 KB
Line 
1/* Example on weak aliasing as found in some GCC manual:
2 * http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
3 */
4#include <stdio.h>
5
6/* GCC Style */
7int __f ()
8{
9 return 1;
10}
11int f () __attribute__ ((weak, alias ("__f")));
12
13
14/* SUN style */
15extern int WeakExternalWithLocalDefault_ResolveDefault(void);
16int LocalDefault(void)
17{
18 return 2;
19}
20#pragma weak WeakExternalWithLocalDefault_ResolveDefault = LocalDefault
21
22extern int ExternalDefault(void);
23extern int WeakExternalWithExternalDefault_ResolveDefault(void);
24#pragma weak WeakExternalWithExternalDefault_ResolveDefault = ExternalDefault
25
26/* resolve weak external (still SUN style) */
27extern int WeakExternalWithLocalDefault_ResolveWKEXT(void);
28#pragma weak WeakExternalWithLocalDefault_ResolveWKEXT = LocalDefault
29
30extern int WeakExternalWithExternalDefault_ResolveWKEXT(void);
31#pragma weak WeakExternalWithExternalDefault_ResolveWKEXT = ExternalDefault
32
33
34int main()
35{
36 int rc = 0;
37 int i;
38
39 i = f();
40 if (i != 1)
41 {
42 printf("weak3: f() returned %d expected %d\n", i, 1);
43 rc++;
44 }
45
46 i = WeakExternalWithLocalDefault_ResolveDefault();
47 if (i != 2)
48 {
49 printf("weak3: WeakExternalWithLocalDefault_ResolveDefault() returned %d expected %d\n", i, 2);
50 rc++;
51 }
52
53 i = WeakExternalWithExternalDefault_ResolveDefault();
54 if (i != -1)
55 {
56 printf("weak3: WeakExternalWithExternalDefault_ResolveDefault() returned %d expected %d\n", i, -1);
57 rc++;
58 }
59
60 i = WeakExternalWithLocalDefault_ResolveWKEXT();
61 if (i != -2)
62 {
63 printf("weak3: WeakExternalWithLocalDefault_ResolveWKEXT() returned %d expected %d\n", i, -2);
64 rc++;
65 }
66
67 i = WeakExternalWithExternalDefault_ResolveWKEXT();
68 if (i != -3)
69 {
70 printf("weak3: WeakExternalWithExternalDefault_ResolveWKEXT() returned %d expected %d\n", i, -3);
71 rc++;
72 }
73
74 return rc;
75}
Note: See TracBrowser for help on using the repository browser.