1# Nonsensical program used to generate an example DWARF4 and DWARF5 file.
2# The generated code is the same, but the DWARF representation is different.
3
4# = hello.h =
5
6extern int m;
7extern int baz (int x);
8
9static inline int
10frob (int a, int b)
11{
12  int c = a;
13
14  if (a > b)
15    c -= b;
16
17  return baz (c);
18}
19
20# = hello.c =
21
22#include <stddef.h>
23#include "hello.h"
24
25extern int main (int, char **);
26int m = 2;
27
28wchar_t foo (wchar_t);
29int baz (int x)
30{
31  int r = x;
32
33  if (x > m)
34    r -= m;
35
36  r = foo (r);
37  return r;
38}
39
40wchar_t
41foo (wchar_t f)
42{
43  if (f < 0)
44    return main (f, NULL);
45
46  return f > 0 ? frob (f - 1, m) : 0;
47}
48
49# = world.c =
50
51#include "hello.h"
52#include <stdlib.h>
53
54int
55calc (const char *word)
56{
57  if (word == 0 || word[0] == '\0')
58    return 0;
59
60  return frob (word[0], m + 42);
61}
62
63int
64main (int argc, const char **argv)
65{
66  const char *n;
67  if (argc > 1)
68    n = argv[0];
69  else
70    n = "world";
71
72  exit (calc (n));
73}
74
75$ gcc -gdwarf-4 -gno-as-loc-support -gno-variable-location-views -O2 -c world.c
76$ gcc -gdwarf-4 -gno-as-loc-support -gno-variable-location-views -O2 -c hello.c
77$ gcc -o testfile-dwarf-4 hello.o world.o
78
79$ gcc -gdwarf-5 -gno-as-loc-support -gno-variable-location-views -O2 -c world.c
80$ gcc -gdwarf-5 -gno-as-loc-support -gno-variable-location-views -O2 -c hello.c
81$ gcc -o testfile-dwarf-5 hello.o world.o
82
83$ gcc -gdwarf-4 -gsplit-dwarf -gno-as-loc-support -gno-variable-location-views -O2 -o testfile-world4.o -c world.c
84$ gcc -gdwarf-4 -gsplit-dwarf -gno-as-loc-support -gno-variable-location-views -O2 -o testfile-hello4.o -c hello.c
85$ gcc -o testfile-splitdwarf-4 testfile-hello4.o testfile-world4.o
86
87$ gcc -gdwarf-5 -gsplit-dwarf -gno-as-loc-support -gno-variable-location-views -O2 -o testfile-world5.o -c world.c
88$ gcc -gdwarf-5 -gsplit-dwarf -gno-as-loc-support -gno-variable-location-views -O2 -o testfile-hello5.o -c hello.c
89$ gcc -o testfile-splitdwarf-5 testfile-hello5.o testfile-world5.o
90