diff options
author | Andrii Nakryiko <andriin@fb.com> | 2019-05-24 11:59:04 -0700 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2019-05-24 14:05:58 -0700 |
commit | 2d2a3ad872f884d618f11e1a2028cff862503dcd (patch) | |
tree | ac6c8d467949cdb304024b3aff5bd113e3bff3c6 /tools/testing/selftests/bpf/progs/btf_dump_test_case_namespacing.c | |
parent | 351131b51c7a27daf0fbdce80b619b8d130374c6 (diff) | |
download | linux-2d2a3ad872f884d618f11e1a2028cff862503dcd.tar.gz linux-2d2a3ad872f884d618f11e1a2028cff862503dcd.tar.bz2 linux-2d2a3ad872f884d618f11e1a2028cff862503dcd.zip |
selftests/bpf: add btf_dump BTF-to-C conversion tests
Add new test_btf_dump set of tests, validating BTF-to-C conversion
correctness. Tests rely on clang to generate BTF from provided C test
cases.
Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/testing/selftests/bpf/progs/btf_dump_test_case_namespacing.c')
-rw-r--r-- | tools/testing/selftests/bpf/progs/btf_dump_test_case_namespacing.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/progs/btf_dump_test_case_namespacing.c b/tools/testing/selftests/bpf/progs/btf_dump_test_case_namespacing.c new file mode 100644 index 000000000000..92a4ad428710 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/btf_dump_test_case_namespacing.c @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) + +/* + * BTF-to-C dumper test validating no name versioning happens between + * independent C namespaces (struct/union/enum vs typedef/enum values). + * + * Copyright (c) 2019 Facebook + */ +/* ----- START-EXPECTED-OUTPUT ----- */ +struct S { + int S; + int U; +}; + +typedef struct S S; + +union U { + int S; + int U; +}; + +typedef union U U; + +enum E { + V = 0, +}; + +typedef enum E E; + +struct A {}; + +union B {}; + +enum C { + A = 1, + B = 2, + C = 3, +}; + +struct X {}; + +union Y {}; + +enum Z; + +typedef int X; + +typedef int Y; + +typedef int Z; + +/*------ END-EXPECTED-OUTPUT ------ */ + +int f(struct { + struct S _1; + S _2; + union U _3; + U _4; + enum E _5; + E _6; + struct A a; + union B b; + enum C c; + struct X x; + union Y y; + enum Z *z; + X xx; + Y yy; + Z zz; +} *_) +{ + return 0; +} |