This commit was generated by cvs2svn to track changes on a CVS vendor
[external/binutils.git] / gdb / testsuite / gdb.base / nodebug.c
1 #include <stdlib.h>
2 /* Test that things still (sort of) work when compiled without -g.  */
3
4 int dataglobal = 3;                     /* Should go in global data */
5 static int datalocal = 4;               /* Should go in local data */
6 int bssglobal;                          /* Should go in global bss */
7 static int bsslocal;                    /* Should go in local bss */
8
9 #ifdef PROTOTYPES
10 int
11 inner (int x)
12 #else
13 int
14 inner (x)
15      int x;
16 #endif
17 {
18   return x + dataglobal + datalocal + bssglobal + bsslocal;
19 }
20
21 #ifdef PROTOTYPES
22 static short
23 middle (int x)
24 #else
25 static short
26 middle (x)
27      int x;
28 #endif
29 {
30   return 2 * inner (x);
31 }
32
33 #ifdef PROTOTYPES
34 short
35 top (int x)
36 #else
37 short
38 top (x)
39      int x;
40 #endif
41 {
42   return 2 * middle (x);
43 }
44
45 #ifdef PROTOTYPES
46 int
47 main (int argc, char **argv)
48 #else
49 int 
50 main (argc, argv)
51      int argc;
52      char **argv;
53 #endif
54 {
55 #ifdef usestubs
56   set_debug_traps();
57   breakpoint();
58 #endif
59   return top (argc);
60 }
61
62 int *x;
63
64 #ifdef PROTOTYPES
65 int array_index (char *arr, int i)
66 #else
67 int
68 array_index (arr, i)
69      char *arr;
70      int i;
71 #endif
72 {
73   /* The basic concept is just "return arr[i];".  But call malloc so that gdb
74      will be able to call functions.  */
75   char retval;
76   x = (int *) malloc (sizeof (int));
77   *x = i;
78   retval = arr[*x];
79   free (x);
80   return retval;
81 }