Add IBM 370 support.
[deliverable/binutils-gdb.git] / ld / testsuite / ld-empic / runtest1.c
CommitLineData
252b5132
RH
1/* First C source file for actual execution test. */
2
3/* The main point of this test is to make sure that the code and data
4 are truly position independent. We statically initialize several
5 global variables, and make sure that they are correctly adjusted at
6 runtime. */
7
8int i = 1;
9int j = 0;
10extern int k;
11int l;
12char small_buf[] = "aaaa";
13char *small_pointer = small_buf;
14char big_buf[] = "aaaaaaaaaaaaaaaa";
15char *big_pointer = big_buf;
16
17extern int bar ();
18int (*pbar) () = bar;
19
20static int
21foo2 (arg)
22 int arg;
23{
24 l = arg;
25 return i + j;
26}
27
28int (*pfoo2) () = foo2;
29
30int
31chkstr (z, c)
32 char *z;
33 int c;
34{
35 /* Switch statements need extra effort to be position independent,
36 so we run one here, even though most of the cases will never be
37 taken. */
38 switch (c)
39 {
40 case 1:
41 case 2:
42 case 3:
43 return i - 1;
44 case 4:
45 break;
46 case 5:
47 case 6:
48 case 7:
49 case 8:
50 case 9:
51 return i * j;
52 case 10:
53 case 11:
54 case 12:
55 case 13:
56 case 14:
57 case 15:
58 return j;
59 case 16:
60 break;
61 default:
62 return 0;
63 }
64
65 while (c-- != 0)
66 if (*z++ != 'a')
67 return 0;
68
69 return *z == '\0';
70}
71
72/* This function is called by the assembler startup routine. It tries
73 to test that everything was correctly initialized. It returns 0 on
74 success, something else on failure. */
75
76int
77foo ()
78{
79 if (i != 1)
80 return 1;
81 if (j != 0)
82 return 2;
83 if (! chkstr (small_buf, 4))
84 return 3;
85 if (! chkstr (small_pointer, 4))
86 return 4;
87 if (! chkstr (big_buf, 16))
88 return 5;
89 if (! chkstr (big_pointer, 16))
90 return 6;
91
92 if (l != 0)
93 return 7;
94 if (foo2 (1) != 1)
95 return 8;
96 if (l != 1)
97 return 9;
98 if ((*pfoo2) (2) != 1)
99 return 10;
100 if (l != 2)
101 return 11;
102
103 if (bar (1) != 0)
104 return 12;
105 if (bar (-1) != 1)
106 return 13;
107 if ((*pbar) (0xa5a5a5a5) != -1)
108 return 14;
109 if (k != 0xa5a5a5a5)
110 return 15;
111 if ((*pbar) (0) != 0xa5a5a5a5)
112 return 16;
113 if (k != 0)
114 return 17;
115
116 return 0;
117}
This page took 0.040254 seconds and 4 git commands to generate.