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