Re: [v2 PATCH 2/2] bpf: CO-RE builtins support tests.
Pushed to upstream master. Thanks ! Jose E. Marchesi writes: > OK. > Thanks. > >> Hi, >> >> Resending this patch since I have noticed I had a testcase added in >> previous patch. Makes more sense here. >> >> Thanks, >> Cupertino >> >> From 334e9ae0f428f6573f2a5e8a3067a4d181b8b9c5 Mon Sep 17 00:00:00 2001 >> From: Cupertino Miranda >> Date: Thu, 27 Jul 2023 18:05:22 +0100 >> Subject: [PATCH v2 2/2] bpf: CO-RE builtins support tests. >> >> This patch adds tests for the following builtins: >> __builtin_preserve_enum_value >> __builtin_btf_type_id >> __builtin_preserve_type_info >> --- >> .../gcc.target/bpf/core-builtin-enumvalue.c | 52 + >> .../bpf/core-builtin-enumvalue_errors.c | 22 >> .../bpf/core-builtin-enumvalue_opt.c | 35 ++ >> ...core-builtin-fieldinfo-const-elimination.c | 29 + >> .../bpf/core-builtin-fieldinfo-errors-1.c | 2 +- >> .../bpf/core-builtin-fieldinfo-errors-2.c | 2 +- >> .../gcc.target/bpf/core-builtin-type-based.c | 58 ++ >> .../gcc.target/bpf/core-builtin-type-id.c | 40 +++ >> gcc/testsuite/gcc.target/bpf/core-support.h | 109 ++ >> 9 files changed, 347 insertions(+), 2 deletions(-) >> create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c >> create mode 100644 >> gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c >> create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_opt.c >> create mode 100644 >> gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-const-elimination.c >> create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-type-based.c >> create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-type-id.c >> create mode 100644 gcc/testsuite/gcc.target/bpf/core-support.h >> >> diff --git a/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c >> b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c >> new file mode 100644 >> index ..3e3334dc089a >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c >> @@ -0,0 +1,52 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-O0 -dA -gbtf -mco-re" } */ >> + >> +#include "core-support.h" >> + >> +extern int *v; >> + >> +int foo(void *data) >> +{ >> + int i = 0; >> + enum named_ue64 named_unsigned64 = 0; >> + enum named_se64 named_signed64 = 0; >> + enum named_ue named_unsigned = 0; >> + enum named_se named_signed = 0; >> + >> + v[i++] = bpf_core_enum_value_exists (named_unsigned64, UE64_VAL1); >> + v[i++] = bpf_core_enum_value_exists (enum named_ue64, UE64_VAL2); >> + v[i++] = bpf_core_enum_value_exists (enum named_ue64, UE64_VAL3); >> + v[i++] = bpf_core_enum_value_exists (named_signed64, SE64_VAL1); >> + v[i++] = bpf_core_enum_value_exists (enum named_se64, SE64_VAL2); >> + v[i++] = bpf_core_enum_value_exists (enum named_se64, SE64_VAL3); >> + >> + v[i++] = bpf_core_enum_value (named_unsigned64, UE64_VAL1); >> + v[i++] = bpf_core_enum_value (named_unsigned64, UE64_VAL2); >> + v[i++] = bpf_core_enum_value (named_signed64, SE64_VAL1); >> + v[i++] = bpf_core_enum_value (named_signed64, SE64_VAL2); >> + >> + v[i++] = bpf_core_enum_value_exists (named_unsigned, UE_VAL1); >> + v[i++] = bpf_core_enum_value_exists (enum named_ue, UE_VAL2); >> + v[i++] = bpf_core_enum_value_exists (enum named_ue, UE_VAL3); >> + v[i++] = bpf_core_enum_value_exists (named_signed, SE_VAL1); >> + v[i++] = bpf_core_enum_value_exists (enum named_se, SE_VAL2); >> + v[i++] = bpf_core_enum_value_exists (enum named_se, SE_VAL3); >> + >> + v[i++] = bpf_core_enum_value (named_unsigned, UE_VAL1); >> + v[i++] = bpf_core_enum_value (named_unsigned, UE_VAL2); >> + v[i++] = bpf_core_enum_value (named_signed, SE_VAL1); >> + v[i++] = bpf_core_enum_value (named_signed, SE_VAL2); >> + >> + return 0; >> +} >> + >> +/* { dg-final { scan-assembler-times "\t.4byte\t0x8\t; bpfcr_type >> \\(named_ue64\\)" 5 } } */ >> +/* { dg-final { scan-assembler-times "\t.4byte\t0x9\t; bpfcr_type >> \\(named_se64\\)" 5} } */ >> +/* { dg-final { scan-assembler-times "\t.4byte\t0xb\t; bpfcr_type >> \\(named_ue\\)" 5 } } */ >> +/* { dg-final { scan-assembler-times "\t.4byte\t0xc\t; bpfcr_type >> \\(named_se\\)" 5} } */ >> +/* { dg-final { scan-assembler-times "\t.4byte\t0xa\t; bpfcr_kind" 12 } } >> BPF_ENUMVAL_EXISTS */ >> +/* { dg-final { scan-assembler-times "\t.4byte\t0xb\t; bpfcr_kind" 8 } } >> BPF_ENUMVAL_VALUE */ >> + >> +/* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0\"\\)" 8 } } */ >> +/* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"1\"\\)" 8 } } */ >> +/* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"2\"\\)" 4 } } */ >> diff --git a/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c >> b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c >> new file mode 100644 >> index ..138e99895160 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c >> @@ -0,0 +1,22 @@ >> +/* { dg-do compile } */ >>
Re: [v2 PATCH 2/2] bpf: CO-RE builtins support tests.
OK. Thanks. > Hi, > > Resending this patch since I have noticed I had a testcase added in > previous patch. Makes more sense here. > > Thanks, > Cupertino > > From 334e9ae0f428f6573f2a5e8a3067a4d181b8b9c5 Mon Sep 17 00:00:00 2001 > From: Cupertino Miranda > Date: Thu, 27 Jul 2023 18:05:22 +0100 > Subject: [PATCH v2 2/2] bpf: CO-RE builtins support tests. > > This patch adds tests for the following builtins: > __builtin_preserve_enum_value > __builtin_btf_type_id > __builtin_preserve_type_info > --- > .../gcc.target/bpf/core-builtin-enumvalue.c | 52 + > .../bpf/core-builtin-enumvalue_errors.c | 22 > .../bpf/core-builtin-enumvalue_opt.c | 35 ++ > ...core-builtin-fieldinfo-const-elimination.c | 29 + > .../bpf/core-builtin-fieldinfo-errors-1.c | 2 +- > .../bpf/core-builtin-fieldinfo-errors-2.c | 2 +- > .../gcc.target/bpf/core-builtin-type-based.c | 58 ++ > .../gcc.target/bpf/core-builtin-type-id.c | 40 +++ > gcc/testsuite/gcc.target/bpf/core-support.h | 109 ++ > 9 files changed, 347 insertions(+), 2 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c > create mode 100644 > gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c > create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_opt.c > create mode 100644 > gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-const-elimination.c > create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-type-based.c > create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-type-id.c > create mode 100644 gcc/testsuite/gcc.target/bpf/core-support.h > > diff --git a/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c > b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c > new file mode 100644 > index ..3e3334dc089a > --- /dev/null > +++ b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c > @@ -0,0 +1,52 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O0 -dA -gbtf -mco-re" } */ > + > +#include "core-support.h" > + > +extern int *v; > + > +int foo(void *data) > +{ > + int i = 0; > + enum named_ue64 named_unsigned64 = 0; > + enum named_se64 named_signed64 = 0; > + enum named_ue named_unsigned = 0; > + enum named_se named_signed = 0; > + > + v[i++] = bpf_core_enum_value_exists (named_unsigned64, UE64_VAL1); > + v[i++] = bpf_core_enum_value_exists (enum named_ue64, UE64_VAL2); > + v[i++] = bpf_core_enum_value_exists (enum named_ue64, UE64_VAL3); > + v[i++] = bpf_core_enum_value_exists (named_signed64, SE64_VAL1); > + v[i++] = bpf_core_enum_value_exists (enum named_se64, SE64_VAL2); > + v[i++] = bpf_core_enum_value_exists (enum named_se64, SE64_VAL3); > + > + v[i++] = bpf_core_enum_value (named_unsigned64, UE64_VAL1); > + v[i++] = bpf_core_enum_value (named_unsigned64, UE64_VAL2); > + v[i++] = bpf_core_enum_value (named_signed64, SE64_VAL1); > + v[i++] = bpf_core_enum_value (named_signed64, SE64_VAL2); > + > + v[i++] = bpf_core_enum_value_exists (named_unsigned, UE_VAL1); > + v[i++] = bpf_core_enum_value_exists (enum named_ue, UE_VAL2); > + v[i++] = bpf_core_enum_value_exists (enum named_ue, UE_VAL3); > + v[i++] = bpf_core_enum_value_exists (named_signed, SE_VAL1); > + v[i++] = bpf_core_enum_value_exists (enum named_se, SE_VAL2); > + v[i++] = bpf_core_enum_value_exists (enum named_se, SE_VAL3); > + > + v[i++] = bpf_core_enum_value (named_unsigned, UE_VAL1); > + v[i++] = bpf_core_enum_value (named_unsigned, UE_VAL2); > + v[i++] = bpf_core_enum_value (named_signed, SE_VAL1); > + v[i++] = bpf_core_enum_value (named_signed, SE_VAL2); > + > + return 0; > +} > + > +/* { dg-final { scan-assembler-times "\t.4byte\t0x8\t; bpfcr_type > \\(named_ue64\\)" 5 } } */ > +/* { dg-final { scan-assembler-times "\t.4byte\t0x9\t; bpfcr_type > \\(named_se64\\)" 5} } */ > +/* { dg-final { scan-assembler-times "\t.4byte\t0xb\t; bpfcr_type > \\(named_ue\\)" 5 } } */ > +/* { dg-final { scan-assembler-times "\t.4byte\t0xc\t; bpfcr_type > \\(named_se\\)" 5} } */ > +/* { dg-final { scan-assembler-times "\t.4byte\t0xa\t; bpfcr_kind" 12 } } > BPF_ENUMVAL_EXISTS */ > +/* { dg-final { scan-assembler-times "\t.4byte\t0xb\t; bpfcr_kind" 8 } } > BPF_ENUMVAL_VALUE */ > + > +/* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0\"\\)" 8 } } */ > +/* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"1\"\\)" 8 } } */ > +/* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"2\"\\)" 4 } } */ > diff --git a/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c > b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c > new file mode 100644 > index ..138e99895160 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c > @@ -0,0 +1,22 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O0 -dA -gbtf -mco-re" } */ > + > +#include "core-support.h" > + > +extern int *v; > + > +unsigned long foo(void *data) > +{ > + int i = 0; > + enum named_ue64
Re: [v2 PATCH 2/2] bpf: CO-RE builtins support tests.
Hi, Resending this patch since I have noticed I had a testcase added in previous patch. Makes more sense here. Thanks, Cupertino >From 334e9ae0f428f6573f2a5e8a3067a4d181b8b9c5 Mon Sep 17 00:00:00 2001 From: Cupertino Miranda Date: Thu, 27 Jul 2023 18:05:22 +0100 Subject: [PATCH v2 2/2] bpf: CO-RE builtins support tests. This patch adds tests for the following builtins: __builtin_preserve_enum_value __builtin_btf_type_id __builtin_preserve_type_info --- .../gcc.target/bpf/core-builtin-enumvalue.c | 52 + .../bpf/core-builtin-enumvalue_errors.c | 22 .../bpf/core-builtin-enumvalue_opt.c | 35 ++ ...core-builtin-fieldinfo-const-elimination.c | 29 + .../bpf/core-builtin-fieldinfo-errors-1.c | 2 +- .../bpf/core-builtin-fieldinfo-errors-2.c | 2 +- .../gcc.target/bpf/core-builtin-type-based.c | 58 ++ .../gcc.target/bpf/core-builtin-type-id.c | 40 +++ gcc/testsuite/gcc.target/bpf/core-support.h | 109 ++ 9 files changed, 347 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_opt.c create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-const-elimination.c create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-type-based.c create mode 100644 gcc/testsuite/gcc.target/bpf/core-builtin-type-id.c create mode 100644 gcc/testsuite/gcc.target/bpf/core-support.h diff --git a/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c new file mode 100644 index ..3e3334dc089a --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue.c @@ -0,0 +1,52 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -dA -gbtf -mco-re" } */ + +#include "core-support.h" + +extern int *v; + +int foo(void *data) +{ + int i = 0; + enum named_ue64 named_unsigned64 = 0; + enum named_se64 named_signed64 = 0; + enum named_ue named_unsigned = 0; + enum named_se named_signed = 0; + + v[i++] = bpf_core_enum_value_exists (named_unsigned64, UE64_VAL1); + v[i++] = bpf_core_enum_value_exists (enum named_ue64, UE64_VAL2); + v[i++] = bpf_core_enum_value_exists (enum named_ue64, UE64_VAL3); + v[i++] = bpf_core_enum_value_exists (named_signed64, SE64_VAL1); + v[i++] = bpf_core_enum_value_exists (enum named_se64, SE64_VAL2); + v[i++] = bpf_core_enum_value_exists (enum named_se64, SE64_VAL3); + + v[i++] = bpf_core_enum_value (named_unsigned64, UE64_VAL1); + v[i++] = bpf_core_enum_value (named_unsigned64, UE64_VAL2); + v[i++] = bpf_core_enum_value (named_signed64, SE64_VAL1); + v[i++] = bpf_core_enum_value (named_signed64, SE64_VAL2); + + v[i++] = bpf_core_enum_value_exists (named_unsigned, UE_VAL1); + v[i++] = bpf_core_enum_value_exists (enum named_ue, UE_VAL2); + v[i++] = bpf_core_enum_value_exists (enum named_ue, UE_VAL3); + v[i++] = bpf_core_enum_value_exists (named_signed, SE_VAL1); + v[i++] = bpf_core_enum_value_exists (enum named_se, SE_VAL2); + v[i++] = bpf_core_enum_value_exists (enum named_se, SE_VAL3); + + v[i++] = bpf_core_enum_value (named_unsigned, UE_VAL1); + v[i++] = bpf_core_enum_value (named_unsigned, UE_VAL2); + v[i++] = bpf_core_enum_value (named_signed, SE_VAL1); + v[i++] = bpf_core_enum_value (named_signed, SE_VAL2); + + return 0; +} + +/* { dg-final { scan-assembler-times "\t.4byte\t0x8\t; bpfcr_type \\(named_ue64\\)" 5 } } */ +/* { dg-final { scan-assembler-times "\t.4byte\t0x9\t; bpfcr_type \\(named_se64\\)" 5} } */ +/* { dg-final { scan-assembler-times "\t.4byte\t0xb\t; bpfcr_type \\(named_ue\\)" 5 } } */ +/* { dg-final { scan-assembler-times "\t.4byte\t0xc\t; bpfcr_type \\(named_se\\)" 5} } */ +/* { dg-final { scan-assembler-times "\t.4byte\t0xa\t; bpfcr_kind" 12 } } BPF_ENUMVAL_EXISTS */ +/* { dg-final { scan-assembler-times "\t.4byte\t0xb\t; bpfcr_kind" 8 } } BPF_ENUMVAL_VALUE */ + +/* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"0\"\\)" 8 } } */ +/* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"1\"\\)" 8 } } */ +/* { dg-final { scan-assembler-times "bpfcr_astr_off \\(\"2\"\\)" 4 } } */ diff --git a/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c new file mode 100644 index ..138e99895160 --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/core-builtin-enumvalue_errors.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -dA -gbtf -mco-re" } */ + +#include "core-support.h" + +extern int *v; + +unsigned long foo(void *data) +{ + int i = 0; + enum named_ue64 named_unsigned = 0; + enum named_se64 named_signed = 0; + typeof(enum named_ue64) a = 0; + + v[i++] = __builtin_preserve_enum_value (({ extern typeof(named_unsigned) *_type0; _type0; }), 0, BPF_ENUMVAL_EXISTS); /* { dg-error "invalid enum value argument