source: branches/libc-0.6/testcase/weak/weak3-main.c@ 2442

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

more/fixed.

  • Property cvs2svn:cvs-rev set to 1.1
  • 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
30#if 0 /* BROKEN_GAS */
31extern int WeakExternalWithExternalDefault_ResolveWKEXT(void);
32#pragma weak WeakExternalWithExternalDefault_ResolveWKEXT = ExternalDefault
33#endif
34
35
36int main()
37{
38 int rc = 0;
39 int i;
40
41 i = f();
42 if (i != 1)
43 {
44 printf("weak3: f() returned %d expected %d\n", i, 1);
45 rc++;
46 }
47
48 i = WeakExternalWithLocalDefault_ResolveDefault();
49 if (i != 2)
50 {
51 printf("weak3: WeakExternalWithLocalDefault_ResolveDefault() returned %d expected %d\n", i, 2);
52 rc++;
53 }
54
55 i = WeakExternalWithExternalDefault_ResolveDefault();
56 if (i != -1)
57 {
58 printf("weak3: WeakExternalWithExternalDefault_ResolveDefault() returned %d expected %d\n", i, -1);
59 rc++;
60 }
61
62 i = WeakExternalWithLocalDefault_ResolveWKEXT();
63 if (i != -2)
64 {
65 printf("weak3: WeakExternalWithLocalDefault_ResolveWKEXT() returned %d expected %d\n", i, -2);
66 rc++;
67 }
68
69#if 0 /* BROKEN_GAS */
70 i = WeakExternalWithExternalDefault_ResolveWKEXT();
71 if (i != -3)
72 {
73 printf("weak3: WeakExternalWithExternalDefault_ResolveWKEXT() returned %d expected %d\n", i, -3);
74 rc++;
75 }
76#endif
77
78 return rc;
79}
Note: See TracBrowser for help on using the repository browser.