From ccd992355df7192993c666236047820244914598 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 16 Apr 2024 21:19:13 +0200 Subject: Adding upstream version 1.21.8. Signed-off-by: Daniel Baumann --- src/debug/dwarf/testdata/bitfields.c | 17 +++++ src/debug/dwarf/testdata/bitfields.elf4 | Bin 0 -> 2464 bytes src/debug/dwarf/testdata/cppunsuptypes.cc | 34 ++++++++++ src/debug/dwarf/testdata/cppunsuptypes.elf | Bin 0 -> 3920 bytes src/debug/dwarf/testdata/cycle.c | 7 ++ src/debug/dwarf/testdata/cycle.elf | Bin 0 -> 2624 bytes src/debug/dwarf/testdata/debug_rnglists | Bin 0 -> 23 bytes src/debug/dwarf/testdata/line-clang-dwarf5.elf | Bin 0 -> 18384 bytes src/debug/dwarf/testdata/line-clang.elf | Bin 0 -> 10271 bytes src/debug/dwarf/testdata/line-gcc-dwarf5.elf | Bin 0 -> 18040 bytes src/debug/dwarf/testdata/line-gcc-win.bin | Bin 0 -> 133202 bytes src/debug/dwarf/testdata/line-gcc-zstd.elf | Bin 0 -> 17168 bytes src/debug/dwarf/testdata/line-gcc.elf | Bin 0 -> 10113 bytes src/debug/dwarf/testdata/line1.c | 9 +++ src/debug/dwarf/testdata/line1.h | 7 ++ src/debug/dwarf/testdata/line2.c | 6 ++ src/debug/dwarf/testdata/ranges.c | 25 +++++++ src/debug/dwarf/testdata/ranges.elf | Bin 0 -> 10348 bytes src/debug/dwarf/testdata/rnglistx.c | 19 ++++++ src/debug/dwarf/testdata/rnglistx.elf | Bin 0 -> 11024 bytes src/debug/dwarf/testdata/split.c | 5 ++ src/debug/dwarf/testdata/split.elf | Bin 0 -> 9509 bytes src/debug/dwarf/testdata/typedef.c | 86 +++++++++++++++++++++++++ src/debug/dwarf/testdata/typedef.elf | Bin 0 -> 12448 bytes src/debug/dwarf/testdata/typedef.elf4 | Bin 0 -> 9496 bytes src/debug/dwarf/testdata/typedef.elf5 | Bin 0 -> 6016 bytes src/debug/dwarf/testdata/typedef.macho | Bin 0 -> 5024 bytes src/debug/dwarf/testdata/typedef.macho4 | Bin 0 -> 6220 bytes 28 files changed, 215 insertions(+) create mode 100644 src/debug/dwarf/testdata/bitfields.c create mode 100644 src/debug/dwarf/testdata/bitfields.elf4 create mode 100644 src/debug/dwarf/testdata/cppunsuptypes.cc create mode 100644 src/debug/dwarf/testdata/cppunsuptypes.elf create mode 100644 src/debug/dwarf/testdata/cycle.c create mode 100644 src/debug/dwarf/testdata/cycle.elf create mode 100644 src/debug/dwarf/testdata/debug_rnglists create mode 100644 src/debug/dwarf/testdata/line-clang-dwarf5.elf create mode 100644 src/debug/dwarf/testdata/line-clang.elf create mode 100644 src/debug/dwarf/testdata/line-gcc-dwarf5.elf create mode 100644 src/debug/dwarf/testdata/line-gcc-win.bin create mode 100644 src/debug/dwarf/testdata/line-gcc-zstd.elf create mode 100644 src/debug/dwarf/testdata/line-gcc.elf create mode 100644 src/debug/dwarf/testdata/line1.c create mode 100644 src/debug/dwarf/testdata/line1.h create mode 100644 src/debug/dwarf/testdata/line2.c create mode 100644 src/debug/dwarf/testdata/ranges.c create mode 100644 src/debug/dwarf/testdata/ranges.elf create mode 100644 src/debug/dwarf/testdata/rnglistx.c create mode 100644 src/debug/dwarf/testdata/rnglistx.elf create mode 100644 src/debug/dwarf/testdata/split.c create mode 100644 src/debug/dwarf/testdata/split.elf create mode 100644 src/debug/dwarf/testdata/typedef.c create mode 100644 src/debug/dwarf/testdata/typedef.elf create mode 100644 src/debug/dwarf/testdata/typedef.elf4 create mode 100644 src/debug/dwarf/testdata/typedef.elf5 create mode 100644 src/debug/dwarf/testdata/typedef.macho create mode 100644 src/debug/dwarf/testdata/typedef.macho4 (limited to 'src/debug/dwarf/testdata') diff --git a/src/debug/dwarf/testdata/bitfields.c b/src/debug/dwarf/testdata/bitfields.c new file mode 100644 index 0000000..0583333 --- /dev/null +++ b/src/debug/dwarf/testdata/bitfields.c @@ -0,0 +1,17 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Linux ELF: +gcc -gdwarf-4 -m64 -c bitfields.c -o bitfields.elf4 +*/ + +typedef struct another_struct { + unsigned short quix; + int xyz[0]; + unsigned x:1; + long long array[40]; +} t_another_struct; +t_another_struct q2; + diff --git a/src/debug/dwarf/testdata/bitfields.elf4 b/src/debug/dwarf/testdata/bitfields.elf4 new file mode 100644 index 0000000..2e06e68 Binary files /dev/null and b/src/debug/dwarf/testdata/bitfields.elf4 differ diff --git a/src/debug/dwarf/testdata/cppunsuptypes.cc b/src/debug/dwarf/testdata/cppunsuptypes.cc new file mode 100644 index 0000000..e9281c7 --- /dev/null +++ b/src/debug/dwarf/testdata/cppunsuptypes.cc @@ -0,0 +1,34 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// cppunsuptypes.elf built with g++ 7.3 +// g++ -g -c -o cppunsuptypes.elf cppunsuptypes.cc + +int i = 3; +double d = 3; + +// anonymous reference type +int &culprit = i; + +// named reference type +typedef double &dref; +dref dr = d; + +// incorporated into another type +typedef struct { + dref q; + int &r; +} hasrefs; + +hasrefs hr = { d, i }; + +// This code is intended to trigger a DWARF "pointer to member" type DIE +struct CS { int dm; }; + +int foo() +{ + int CS::* pdm = &CS::dm; + CS cs = {42}; + return cs.*pdm; +} diff --git a/src/debug/dwarf/testdata/cppunsuptypes.elf b/src/debug/dwarf/testdata/cppunsuptypes.elf new file mode 100644 index 0000000..e955512 Binary files /dev/null and b/src/debug/dwarf/testdata/cppunsuptypes.elf differ diff --git a/src/debug/dwarf/testdata/cycle.c b/src/debug/dwarf/testdata/cycle.c new file mode 100644 index 0000000..a0b53df --- /dev/null +++ b/src/debug/dwarf/testdata/cycle.c @@ -0,0 +1,7 @@ +typedef struct aaa *AAA; +typedef AAA BBB; +struct aaa { BBB val; }; + +AAA x(void) { + return (AAA)0; +} diff --git a/src/debug/dwarf/testdata/cycle.elf b/src/debug/dwarf/testdata/cycle.elf new file mode 100644 index 0000000..e0b66ca Binary files /dev/null and b/src/debug/dwarf/testdata/cycle.elf differ diff --git a/src/debug/dwarf/testdata/debug_rnglists b/src/debug/dwarf/testdata/debug_rnglists new file mode 100644 index 0000000..985ec6c Binary files /dev/null and b/src/debug/dwarf/testdata/debug_rnglists differ diff --git a/src/debug/dwarf/testdata/line-clang-dwarf5.elf b/src/debug/dwarf/testdata/line-clang-dwarf5.elf new file mode 100644 index 0000000..7b80c9c Binary files /dev/null and b/src/debug/dwarf/testdata/line-clang-dwarf5.elf differ diff --git a/src/debug/dwarf/testdata/line-clang.elf b/src/debug/dwarf/testdata/line-clang.elf new file mode 100644 index 0000000..b63cc78 Binary files /dev/null and b/src/debug/dwarf/testdata/line-clang.elf differ diff --git a/src/debug/dwarf/testdata/line-gcc-dwarf5.elf b/src/debug/dwarf/testdata/line-gcc-dwarf5.elf new file mode 100644 index 0000000..34ce17c Binary files /dev/null and b/src/debug/dwarf/testdata/line-gcc-dwarf5.elf differ diff --git a/src/debug/dwarf/testdata/line-gcc-win.bin b/src/debug/dwarf/testdata/line-gcc-win.bin new file mode 100644 index 0000000..583ad44 Binary files /dev/null and b/src/debug/dwarf/testdata/line-gcc-win.bin differ diff --git a/src/debug/dwarf/testdata/line-gcc-zstd.elf b/src/debug/dwarf/testdata/line-gcc-zstd.elf new file mode 100644 index 0000000..45cbe72 Binary files /dev/null and b/src/debug/dwarf/testdata/line-gcc-zstd.elf differ diff --git a/src/debug/dwarf/testdata/line-gcc.elf b/src/debug/dwarf/testdata/line-gcc.elf new file mode 100644 index 0000000..50500a8 Binary files /dev/null and b/src/debug/dwarf/testdata/line-gcc.elf differ diff --git a/src/debug/dwarf/testdata/line1.c b/src/debug/dwarf/testdata/line1.c new file mode 100644 index 0000000..f358647 --- /dev/null +++ b/src/debug/dwarf/testdata/line1.c @@ -0,0 +1,9 @@ +#include "line1.h" + +void f2(); + +int main() +{ + f1(); + f2(); +} diff --git a/src/debug/dwarf/testdata/line1.h b/src/debug/dwarf/testdata/line1.h new file mode 100644 index 0000000..974d4c8 --- /dev/null +++ b/src/debug/dwarf/testdata/line1.h @@ -0,0 +1,7 @@ +static void f1() +{ + char buf[10]; + int i; + for(i = 0; i < 10; i++) + buf[i] = 1; +} diff --git a/src/debug/dwarf/testdata/line2.c b/src/debug/dwarf/testdata/line2.c new file mode 100644 index 0000000..38d8998 --- /dev/null +++ b/src/debug/dwarf/testdata/line2.c @@ -0,0 +1,6 @@ +#include + +void f2() +{ + printf("hello\n"); +} diff --git a/src/debug/dwarf/testdata/ranges.c b/src/debug/dwarf/testdata/ranges.c new file mode 100644 index 0000000..2f208e5 --- /dev/null +++ b/src/debug/dwarf/testdata/ranges.c @@ -0,0 +1,25 @@ +// gcc -g -O2 -freorder-blocks-and-partition + +const char *arr[10000]; +const char *hot = "hot"; +const char *cold = "cold"; + +__attribute__((noinline)) +void fn(int path) { + int i; + + if (path) { + for (i = 0; i < sizeof arr / sizeof arr[0]; i++) { + arr[i] = hot; + } + } else { + for (i = 0; i < sizeof arr / sizeof arr[0]; i++) { + arr[i] = cold; + } + } +} + +int main(int argc, char *argv[]) { + fn(argc); + return 0; +} diff --git a/src/debug/dwarf/testdata/ranges.elf b/src/debug/dwarf/testdata/ranges.elf new file mode 100644 index 0000000..7f54138 Binary files /dev/null and b/src/debug/dwarf/testdata/ranges.elf differ diff --git a/src/debug/dwarf/testdata/rnglistx.c b/src/debug/dwarf/testdata/rnglistx.c new file mode 100644 index 0000000..8770435 --- /dev/null +++ b/src/debug/dwarf/testdata/rnglistx.c @@ -0,0 +1,19 @@ +// clang -gdwarf-5 -O2 -nostdlib + +__attribute__((noinline, cold)) +static int sum(int i) { + int j, s; + + s = 0; + for (j = 0; j < i; j++) { + s += j * i; + } + return s; +} + +int main(int argc, char** argv) { + if (argc == 0) { + return 0; + } + return sum(argc); +} diff --git a/src/debug/dwarf/testdata/rnglistx.elf b/src/debug/dwarf/testdata/rnglistx.elf new file mode 100644 index 0000000..c2d7f55 Binary files /dev/null and b/src/debug/dwarf/testdata/rnglistx.elf differ diff --git a/src/debug/dwarf/testdata/split.c b/src/debug/dwarf/testdata/split.c new file mode 100644 index 0000000..0ef3427 --- /dev/null +++ b/src/debug/dwarf/testdata/split.c @@ -0,0 +1,5 @@ +// gcc -gsplit-dwarf split.c -o split.elf + +int main() +{ +} diff --git a/src/debug/dwarf/testdata/split.elf b/src/debug/dwarf/testdata/split.elf new file mode 100644 index 0000000..99ee2c2 Binary files /dev/null and b/src/debug/dwarf/testdata/split.elf differ diff --git a/src/debug/dwarf/testdata/typedef.c b/src/debug/dwarf/testdata/typedef.c new file mode 100644 index 0000000..3e7e008 --- /dev/null +++ b/src/debug/dwarf/testdata/typedef.c @@ -0,0 +1,86 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Linux ELF: +gcc -gdwarf-2 -m64 -c typedef.c && gcc -gdwarf-2 -m64 -o typedef.elf typedef.o + +OS X Mach-O: +gcc -gdwarf-2 -m64 -c typedef.c -o typedef.macho +gcc -gdwarf-4 -m64 -c typedef.c -o typedef.macho4 +*/ +#include + +typedef volatile int* t_ptr_volatile_int; +typedef const char *t_ptr_const_char; +typedef long t_long; +typedef unsigned short t_ushort; +typedef int t_func_int_of_float_double(float, double); +typedef int (*t_ptr_func_int_of_float_double)(float, double); +typedef int (*t_ptr_func_int_of_float_complex)(float complex); +typedef int (*t_ptr_func_int_of_double_complex)(double complex); +typedef int (*t_ptr_func_int_of_long_double_complex)(long double complex); +typedef int *t_func_ptr_int_of_char_schar_uchar(char, signed char, unsigned char); +typedef void t_func_void_of_char(char); +typedef void t_func_void_of_void(void); +typedef void t_func_void_of_ptr_char_dots(char*, ...); +typedef struct my_struct { + volatile int vi; + char x : 1; + int y : 4; + int z[0]; + long long array[40]; + int zz[0]; +} t_my_struct; +typedef struct my_struct1 { + int zz [1]; +} t_my_struct1; +typedef union my_union { + volatile int vi; + char x : 1; + int y : 4; + long long array[40]; +} t_my_union; +typedef enum my_enum { + e1 = 1, + e2 = 2, + e3 = -5, + e4 = 1000000000000000LL, +} t_my_enum; + +typedef struct list t_my_list; +struct list { + short val; + t_my_list *next; +}; + +typedef struct tree { + struct tree *left, *right; + unsigned long long val; +} t_my_tree; + +t_ptr_volatile_int *a2; +t_ptr_const_char **a3a; +t_long *a4; +t_ushort *a5; +t_func_int_of_float_double *a6; +t_ptr_func_int_of_float_double *a7; +t_func_ptr_int_of_char_schar_uchar *a8; +t_func_void_of_char *a9; +t_func_void_of_void *a10; +t_func_void_of_ptr_char_dots *a11; +t_my_struct *a12; +t_my_struct1 *a12a; +t_my_union *a12b; +t_my_enum *a13; +t_my_list *a14; +t_my_tree *a15; +t_ptr_func_int_of_float_complex *a16; +t_ptr_func_int_of_double_complex *a17; +t_ptr_func_int_of_long_double_complex *a18; + +int main() +{ + return 0; +} diff --git a/src/debug/dwarf/testdata/typedef.elf b/src/debug/dwarf/testdata/typedef.elf new file mode 100644 index 0000000..b2062d2 Binary files /dev/null and b/src/debug/dwarf/testdata/typedef.elf differ diff --git a/src/debug/dwarf/testdata/typedef.elf4 b/src/debug/dwarf/testdata/typedef.elf4 new file mode 100644 index 0000000..3d5a5a1 Binary files /dev/null and b/src/debug/dwarf/testdata/typedef.elf4 differ diff --git a/src/debug/dwarf/testdata/typedef.elf5 b/src/debug/dwarf/testdata/typedef.elf5 new file mode 100644 index 0000000..aec48f6 Binary files /dev/null and b/src/debug/dwarf/testdata/typedef.elf5 differ diff --git a/src/debug/dwarf/testdata/typedef.macho b/src/debug/dwarf/testdata/typedef.macho new file mode 100644 index 0000000..f75afcc Binary files /dev/null and b/src/debug/dwarf/testdata/typedef.macho differ diff --git a/src/debug/dwarf/testdata/typedef.macho4 b/src/debug/dwarf/testdata/typedef.macho4 new file mode 100644 index 0000000..093ff37 Binary files /dev/null and b/src/debug/dwarf/testdata/typedef.macho4 differ -- cgit v1.2.3