mbox series

[RFC,V2,0/3] Support for CTF in GCC

Message ID 1560362410-27014-1-git-send-email-indu.bhagat@oracle.com
Headers show
Series Support for CTF in GCC | expand

Message

Indu Bhagat June 12, 2019, 6 p.m. UTC
Hello,

Thanks for the feedback on the previous patch set.

This is the second posting of the RFC patch for CTF support in GCC. This patch
set does not rely on debug hooks, but it keeps CTF and DWARF debug info
generation separated in the compiler.

For CTF generation, callsites in symbol_table::finalize_compilation_unit and
rest_of_decl_compilation are used. For CTF emission, callsite in
symbol_table::finalize_compilation_unit is used.

Summary of the GCC RFC V2 patch set :
Patch 1 and Patch 2 have remain unchanged since V1.
Patch 1 is a simple addition of a new function lang_GNU_GIMPLE to check for
GIMPLE frontend.
Patch 2 and Patch 3 set up the framework for CTF support in GCC :
-- Patch 2 adds the new command line option for generating CTF. CTF generation
   is enabled in the compiler by specifying an explicit -gt or
   -gtLEVEL[LEVEL=1,2] :
    
    -gtLEVEL

    This is used to request CTF debug information and to specify how much CTF
    debug information, LEVEL[=0,1,2] can be specified. If -gt is specified
    (with no LEVEL), the default value of LEVEL is 2.

    -gt0 (Level 0) produces no CTF debug information at all. Thus, -gt0
    negates -gt.

    -gt1 (Level 1) produces CTF information for tracebacks only. This includes
    CTF callsite information, but does not include type information for other
    entities.

    -gt2 (Level 2) produces type information for entities (functions, variables
    etc.) at file-scope or global-scope only. This level of information can be
    used by dynamic tracers like DTrace.

--  Patch 3 initializes the CTF container if user-level option for CTF
    generation is specified. CTF is generated for all to-be-emitted global
    decls if gtLEVEL of 2 is specified. 

Tested on x86_64-linux and sparc64-linux.

Thanks

Indu Bhagat (3):
  Add new function lang_GNU_GIMPLE
  Add CTF command line options : -gtLEVEL
  Setup for CTF generation and emission

 gcc/ChangeLog                                   |  27 ++
 gcc/Makefile.in                                 |   3 +
 gcc/cgraphunit.c                                |  12 +-
 gcc/common.opt                                  |   9 +
 gcc/ctfout.c                                    | 163 ++++++++
 gcc/ctfout.h                                    |  52 +++
 gcc/doc/invoke.texi                             |  16 +
 gcc/flag-types.h                                |  13 +
 gcc/gengtype.c                                  |   4 +-
 gcc/langhooks.c                                 |   9 +
 gcc/langhooks.h                                 |   1 +
 gcc/opts.c                                      |  26 ++
 gcc/passes.c                                    |   7 +-
 gcc/testsuite/ChangeLog                         |   7 +
 gcc/testsuite/gcc.dg/debug/ctf/ctf-1.c          |   6 +
 gcc/testsuite/gcc.dg/debug/ctf/ctf-preamble-1.c |  11 +
 gcc/testsuite/gcc.dg/debug/ctf/ctf.exp          |  41 ++
 gcc/testsuite/gcc.dg/debug/dwarf2-ctf-1.c       |   7 +
 gcc/toplev.c                                    |  18 +
 include/ChangeLog                               |   4 +
 include/ctf.h                                   | 483 ++++++++++++++++++++++++
 21 files changed, 913 insertions(+), 6 deletions(-)
 create mode 100644 gcc/ctfout.c
 create mode 100644 gcc/ctfout.h
 create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-1.c
 create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-preamble-1.c
 create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf.exp
 create mode 100644 gcc/testsuite/gcc.dg/debug/dwarf2-ctf-1.c
 create mode 100644 include/ctf.h

Comments

Indu Bhagat June 18, 2019, 6:06 p.m. UTC | #1
Hello,

PING, In case this patch series slipped your attention.

Thanks
Indu

On Wed, Jun 12, 2019 at 10:50 AM Indu Bhagat <indu.bhagat@oracle.com> wrote:
>
> Hello,
>
> Thanks for the feedback on the previous patch set.
>
> This is the second posting of the RFC patch for CTF support in GCC. This patch
> set does not rely on debug hooks, but it keeps CTF and DWARF debug info
> generation separated in the compiler.
>
> For CTF generation, callsites in symbol_table::finalize_compilation_unit and
> rest_of_decl_compilation are used. For CTF emission, callsite in
> symbol_table::finalize_compilation_unit is used.
>
> Summary of the GCC RFC V2 patch set :
> Patch 1 and Patch 2 have remain unchanged since V1.
> Patch 1 is a simple addition of a new function lang_GNU_GIMPLE to check for
> GIMPLE frontend.
> Patch 2 and Patch 3 set up the framework for CTF support in GCC :
> -- Patch 2 adds the new command line option for generating CTF. CTF generation
>    is enabled in the compiler by specifying an explicit -gt or
>    -gtLEVEL[LEVEL=1,2] :
>
>     -gtLEVEL
>
>     This is used to request CTF debug information and to specify how much CTF
>     debug information, LEVEL[=0,1,2] can be specified. If -gt is specified
>     (with no LEVEL), the default value of LEVEL is 2.
>
>     -gt0 (Level 0) produces no CTF debug information at all. Thus, -gt0
>     negates -gt.
>
>     -gt1 (Level 1) produces CTF information for tracebacks only. This includes
>     CTF callsite information, but does not include type information for other
>     entities.
>
>     -gt2 (Level 2) produces type information for entities (functions, variables
>     etc.) at file-scope or global-scope only. This level of information can be
>     used by dynamic tracers like DTrace.
>
> --  Patch 3 initializes the CTF container if user-level option for CTF
>     generation is specified. CTF is generated for all to-be-emitted global
>     decls if gtLEVEL of 2 is specified.
>
> Tested on x86_64-linux and sparc64-linux.
>
> Thanks
>
> Indu Bhagat (3):
>   Add new function lang_GNU_GIMPLE
>   Add CTF command line options : -gtLEVEL
>   Setup for CTF generation and emission
>
>  gcc/ChangeLog                                   |  27 ++
>  gcc/Makefile.in                                 |   3 +
>  gcc/cgraphunit.c                                |  12 +-
>  gcc/common.opt                                  |   9 +
>  gcc/ctfout.c                                    | 163 ++++++++
>  gcc/ctfout.h                                    |  52 +++
>  gcc/doc/invoke.texi                             |  16 +
>  gcc/flag-types.h                                |  13 +
>  gcc/gengtype.c                                  |   4 +-
>  gcc/langhooks.c                                 |   9 +
>  gcc/langhooks.h                                 |   1 +
>  gcc/opts.c                                      |  26 ++
>  gcc/passes.c                                    |   7 +-
>  gcc/testsuite/ChangeLog                         |   7 +
>  gcc/testsuite/gcc.dg/debug/ctf/ctf-1.c          |   6 +
>  gcc/testsuite/gcc.dg/debug/ctf/ctf-preamble-1.c |  11 +
>  gcc/testsuite/gcc.dg/debug/ctf/ctf.exp          |  41 ++
>  gcc/testsuite/gcc.dg/debug/dwarf2-ctf-1.c       |   7 +
>  gcc/toplev.c                                    |  18 +
>  include/ChangeLog                               |   4 +
>  include/ctf.h                                   | 483 ++++++++++++++++++++++++
>  21 files changed, 913 insertions(+), 6 deletions(-)
>  create mode 100644 gcc/ctfout.c
>  create mode 100644 gcc/ctfout.h
>  create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-1.c
>  create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-preamble-1.c
>  create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf.exp
>  create mode 100644 gcc/testsuite/gcc.dg/debug/dwarf2-ctf-1.c
>  create mode 100644 include/ctf.h
>
> --
> 1.8.3.1
>