Ping.

archive: https://gcc.gnu.org/pipermail/gcc-patches/2024-June/654253.html

On 6/11/24 12:01, David Faust wrote:
> Previously it was not supported to generate both CTF and BTF debug info
> in the same compiler run, as both formats made incompatible changes to
> the same internal data structures.
> 
> With the structural change in the prior patches, in particular the
> guarantee that CTF will always be fully emitted before any BTF
> translation occurs, there is no longer anything preventing generation
> of both CTF and BTF at the same time.  This patch changes option parsing
> to allow any combination of -gdwarf, -gctf, and -gbtf at the same time.
> 
> gcc/
>       * opts.cc (set_debug_level): Allow any combination of -gdwarf,
>       -gctf and -gbtf to be enabled at the same time.
> 
> gcc/testsuite/
>       * gcc.dg/debug/btf/btf-3.c: New test.
>       * gcc.dg/debug/btf/btf-4.c: Likewise.
>       * gcc.dg/debug/btf/btf-5.c: Likewise.
> ---
>  gcc/opts.cc                            | 20 +++++---------------
>  gcc/testsuite/gcc.dg/debug/btf/btf-3.c |  8 ++++++++
>  gcc/testsuite/gcc.dg/debug/btf/btf-4.c |  8 ++++++++
>  gcc/testsuite/gcc.dg/debug/btf/btf-5.c |  9 +++++++++
>  4 files changed, 30 insertions(+), 15 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-3.c
>  create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-4.c
>  create mode 100644 gcc/testsuite/gcc.dg/debug/btf/btf-5.c
> 
> diff --git a/gcc/opts.cc b/gcc/opts.cc
> index 1b1b46455af6..7e9f2d91172b 100644
> --- a/gcc/opts.cc
> +++ b/gcc/opts.cc
> @@ -3506,21 +3506,11 @@ set_debug_level (uint32_t dinfo, int extended, const 
> char *arg,
>      }
>    else
>      {
> -      /* Make and retain the choice if both CTF and DWARF debug info are to
> -      be generated.  */
> -      if (((dinfo == DWARF2_DEBUG) || (dinfo == CTF_DEBUG))
> -       && ((opts->x_write_symbols == (DWARF2_DEBUG|CTF_DEBUG))
> -           || (opts->x_write_symbols == DWARF2_DEBUG)
> -           || (opts->x_write_symbols == CTF_DEBUG)))
> -     {
> -       opts->x_write_symbols |= dinfo;
> -       opts_set->x_write_symbols |= dinfo;
> -     }
> -      /* However, CTF and BTF are not allowed together at this time.  */
> -      else if (((dinfo == DWARF2_DEBUG) || (dinfo == BTF_DEBUG))
> -            && ((opts->x_write_symbols == (DWARF2_DEBUG|BTF_DEBUG))
> -                || (opts->x_write_symbols == DWARF2_DEBUG)
> -                || (opts->x_write_symbols == BTF_DEBUG)))
> +      /* Any combination of DWARF, CTF and BTF is allowed.  */
> +      if (((dinfo == DWARF2_DEBUG) || (dinfo == CTF_DEBUG)
> +        || (dinfo == BTF_DEBUG))
> +       && ((opts->x_write_symbols | (DWARF2_DEBUG | CTF_DEBUG | BTF_DEBUG))
> +            == (DWARF2_DEBUG | CTF_DEBUG | BTF_DEBUG)))
>       {
>         opts->x_write_symbols |= dinfo;
>         opts_set->x_write_symbols |= dinfo;
> diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-3.c 
> b/gcc/testsuite/gcc.dg/debug/btf/btf-3.c
> new file mode 100644
> index 000000000000..93c8164a2a54
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-3.c
> @@ -0,0 +1,8 @@
> +/* Verify that BTF debug info can co-exist with DWARF.  */
> +/* { dg-do compile } */
> +/* { dg-options "-gdwarf -gbtf -dA" } */
> +/* { dg-final { scan-assembler "0xeb9f.*btf_magic" } } */
> +/* { dg-final { scan-assembler "DWARF version number" } } */
> +
> +void func (void)
> +{ }
> diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-4.c 
> b/gcc/testsuite/gcc.dg/debug/btf/btf-4.c
> new file mode 100644
> index 000000000000..b087917188bb
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-4.c
> @@ -0,0 +1,8 @@
> +/* Verify that BTF debug info can co-exist with CTF.  */
> +/* { dg-do compile } */
> +/* { dg-options "-gctf -gbtf -dA" } */
> +/* { dg-final { scan-assembler "0xeb9f.*btf_magic" } } */
> +/* { dg-final { scan-assembler "0xdff2.*CTF preamble magic number" } } */
> +
> +void func (void)
> +{ }
> diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-5.c 
> b/gcc/testsuite/gcc.dg/debug/btf/btf-5.c
> new file mode 100644
> index 000000000000..45267b5fc422
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-5.c
> @@ -0,0 +1,9 @@
> +/* Verify that BTF, CTF and DWARF can all co-exist happily.  */
> +/* { dg-do compile } */
> +/* { dg-options "-gctf -gbtf -gdwarf -dA" } */
> +/* { dg-final { scan-assembler "0xeb9f.*btf_magic" } } */
> +/* { dg-final { scan-assembler "0xdff2.*CTF preamble magic number" } } */
> +/* { dg-final { scan-assembler "DWARF version number" } } */
> +
> +void func (void)
> +{ }

Reply via email to