1/* This small function uses all the arithmetic operators that
2   libgcc1.c can handle.  If you can link it, then
3   you have provided replacements for all the libgcc1.c functions that
4   your target machine needs.  */
5
6int foo ();
7double dfoo ();
8
9/* We don't want __main here because that can drag in atexit (among other
10   things) which won't necessarily exist yet.  */
11
12main_without__main ()
13{
14  int a = foo (), b = foo ();
15  unsigned int au = foo (), bu = foo ();
16  float af = dfoo (), bf = dfoo ();
17  double ad = dfoo (), bd = dfoo ();
18
19  discard (a * b);
20  discard (a / b);
21  discard (a % b);
22
23  discard (au / bu);
24  discard (au % bu);
25
26  discard (a >> b);
27  discard (a << b);
28
29  discard (au >> bu);
30  discard (au << bu);
31
32  ddiscard (ad + bd);
33  ddiscard (ad - bd);
34  ddiscard (ad * bd);
35  ddiscard (ad / bd);
36  ddiscard (-ad);
37
38  ddiscard (af + bf);
39  ddiscard (af - bf);
40  ddiscard (af * bf);
41  ddiscard (af / bf);
42  ddiscard (-af);
43
44  discard ((int) ad);
45  discard ((int) af);
46
47  ddiscard ((double) a);
48  ddiscard ((float) a);
49  ddiscard ((float) ad);
50
51  discard (ad == bd);
52  discard (ad < bd);
53  discard (ad > bd);
54  discard (ad != bd);
55  discard (ad <= bd);
56  discard (ad >= bd);
57
58  discard (af == bf);
59  discard (af < bf);
60  discard (af > bf);
61  discard (af != bf);
62  discard (af <= bf);
63  discard (af >= bf);
64
65  return 0;
66}
67
68discard (x)
69     int x;
70{}
71
72ddiscard (x)
73     double x;
74{}
75
76foo ()
77{
78  static int table[] = {20, 69, 4, 12};
79  static int idx;
80
81  return table[idx++];
82}
83
84double
85dfoo ()
86{
87  static double table[] = {20.4, 69.96, 4.4, 202.202};
88  static int idx;
89
90  return table[idx++];
91}
92
93/* Provide functions that some versions of the linker use to default
94   the start address if -e symbol is not used, to avoid the warning
95   message saying the start address is defaulted.  */
96extern void start() __asm__("start");
97extern void _start() __asm__("_start");
98extern void __start() __asm__("__start");
99
100/* Provide functions that might be needed by soft-float emulation routines.  */
101void memcpy() {}
102
103void start() {}
104void _start() {}
105void __start() {}
106void mainCRTStartup() {}
107