]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
debug: Allow means for targets to opt out of CTF/BTF support
authorIndu Bhagat <indu.bhagat@oracle.com>
Mon, 19 Jul 2021 17:24:59 +0000 (10:24 -0700)
committerIndu Bhagat <indu.bhagat@oracle.com>
Mon, 19 Jul 2021 17:34:39 +0000 (10:34 -0700)
CTF/BTF debug formats can be safely enabled for all ELF-based targets by
default in GCC.

CTF/BTF debug formats now adopt a similar approach as taken for DWARF debug
format via the DWARF2_DEBUGGING_INFO.
  - By default, CTF/BTF formats can be enabled for all ELF-based targets.
  - By default, CTF/BTF formats can be disabled for all non ELF-based targets.
  - If the user passed a -gctf but CTF is not enabled for the target, GCC
  issues an error to the user (as is done currently with other debug formats) -
  "target system does not support the 'ctf' debug format". Analogous behavior
  for -gbtf command line option.

A previous commit disabled the CTF and BTF testcases on the AIX platform. This
is not necessary now that CTF and BTF debug formats are disabled by default on
all non-ELF targets. GCC emits an error message when -gctf/-gbtf is used on
such platforms and these tests will be skipped.

gcc/

* config/elfos.h (CTF_DEBUGGING_INFO): New definition.
(BTF_DEBUGGING_INFO): Likewise.
* doc/tm.texi.in: Document the new macros.
* doc/tm.texi: Regenerated.
* toplev.c: Guard initialization of debug hooks.

gcc/testsuite/

* gcc.dg/debug/btf/btf.exp: Do not run BTF testsuite if target does not
support BTF format. Remove redundant check for AIX.
* gcc.dg/debug/ctf/ctf.exp: Do not run CTF testsuite if target does not
support CTF format. Remove redundant check for AIX.
* lib/gcc-dg.exp: Remove redundant check for AIX.

gcc/config/elfos.h
gcc/doc/tm.texi
gcc/doc/tm.texi.in
gcc/testsuite/gcc.dg/debug/btf/btf.exp
gcc/testsuite/gcc.dg/debug/ctf/ctf.exp
gcc/testsuite/lib/gcc-dg.exp
gcc/toplev.c

index 7a736cc3b89dbe55578db3682bdd98efd3692e26..e5cb487a133c2809556f12fb350cc9c2134a0281 100644 (file)
@@ -68,6 +68,14 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 #define DWARF2_DEBUGGING_INFO 1
 
+/* All ELF targets can support CTF.  */
+
+#define CTF_DEBUGGING_INFO 1
+
+/* All ELF targets can support BTF.  */
+
+#define BTF_DEBUGGING_INFO 1
+
 /* The GNU tools operate better with dwarf2, and it is required by some
    psABI's.  Since we don't have any native tools to be compatible with,
    default to dwarf2.  */
index 3ad39443eba4a999887ae6d8746d58c1200bebdc..c8f4abe3e41ad79fd24a10cb24ac85db64a964c8 100644 (file)
@@ -9947,6 +9947,8 @@ This describes how to specify debugging information.
 * File Names and DBX:: Macros controlling output of file names in DBX format.
 * DWARF::              Macros for DWARF format.
 * VMS Debug::          Macros for VMS debug format.
+* CTF Debug::          Macros for CTF debug format.
+* BTF Debug::          Macros for BTF debug format.
 @end menu
 
 @node All Debuggers
@@ -10374,6 +10376,30 @@ behavior is controlled by @code{TARGET_OPTION_OPTIMIZATION} and
 @code{TARGET_OPTION_OVERRIDE}.
 @end defmac
 
+@need 2000
+@node CTF Debug
+@subsection Macros for CTF Debug Format
+
+@c prevent bad page break with this line
+Here are macros for CTF debug format.
+
+@defmac CTF_DEBUGGING_INFO
+Define this macro if GCC should produce debugging output in CTF debug
+format in response to the @option{-gctf} option.
+@end defmac
+
+@need 2000
+@node BTF Debug
+@subsection Macros for BTF Debug Format
+
+@c prevent bad page break with this line
+Here are macros for BTF debug format.
+
+@defmac BTF_DEBUGGING_INFO
+Define this macro if GCC should produce debugging output in BTF debug
+format in response to the @option{-gbtf} option.
+@end defmac
+
 @node Floating Point
 @section Cross Compilation and Floating Point
 @cindex cross compilation and floating point
index f881cdabe9e377254cf4adcaa7c82cadbe17c335..9c4b50160533f58a2a4d9ae881a2db5d0b38cafa 100644 (file)
@@ -6613,6 +6613,8 @@ This describes how to specify debugging information.
 * File Names and DBX:: Macros controlling output of file names in DBX format.
 * DWARF::              Macros for DWARF format.
 * VMS Debug::          Macros for VMS debug format.
+* CTF Debug::          Macros for CTF debug format.
+* BTF Debug::          Macros for BTF debug format.
 @end menu
 
 @node All Debuggers
@@ -6994,6 +6996,30 @@ behavior is controlled by @code{TARGET_OPTION_OPTIMIZATION} and
 @code{TARGET_OPTION_OVERRIDE}.
 @end defmac
 
+@need 2000
+@node CTF Debug
+@subsection Macros for CTF Debug Format
+
+@c prevent bad page break with this line
+Here are macros for CTF debug format.
+
+@defmac CTF_DEBUGGING_INFO
+Define this macro if GCC should produce debugging output in CTF debug
+format in response to the @option{-gctf} option.
+@end defmac
+
+@need 2000
+@node BTF Debug
+@subsection Macros for BTF Debug Format
+
+@c prevent bad page break with this line
+Here are macros for BTF debug format.
+
+@defmac BTF_DEBUGGING_INFO
+Define this macro if GCC should produce debugging output in BTF debug
+format in response to the @option{-gbtf} option.
+@end defmac
+
 @node Floating Point
 @section Cross Compilation and Floating Point
 @cindex cross compilation and floating point
index e1735158666e35aa864384f21fb35d914bd528f1..15593fdf671722ed576b3ca1b11c41cfc564e9f3 100644 (file)
@@ -24,11 +24,6 @@ if { [istarget nvptx-*-*] } {
     return
 }
 
-if { [istarget "powerpc-ibm-aix*"] } {
-    set torture_execute_xfail "powerpc-ibm-aix*"
-    return
-}
-
 # If a testcase doesn't have special options, use these.
 global DEFAULT_CFLAGS
 if ![info exists DEFAULT_CFLAGS] then {
@@ -39,8 +34,15 @@ if ![info exists DEFAULT_CFLAGS] then {
 dg-init
 
 # Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\] ]] \
-       "" $DEFAULT_CFLAGS
+set comp_output [gcc_target_compile \
+    "$srcdir/$subdir/../trivial.c" "trivial.S" assembly \
+    "additional_flags=-gbtf"]
+if { ! [string match "*: target system does not support the * debug format*" \
+    $comp_output] } {
+    remove-build-file "trivial.S"
+    dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\] ]] \
+           "" $DEFAULT_CFLAGS
+}
 
 # All done.
 dg-finish
index 0b650ed74065a13e469d99cabff9bc51449fa2dc..7ad6723019c86874511972beb855490623fc5463 100644 (file)
@@ -24,11 +24,6 @@ if { [istarget nvptx-*-*] } {
     return
 }
 
-if { [istarget "powerpc-ibm-aix*"] } {
-    set torture_execute_xfail "powerpc-ibm-aix*"
-    return
-}
-
 # If a testcase doesn't have special options, use these.
 global DEFAULT_CFLAGS
 if ![info exists DEFAULT_CFLAGS] then {
@@ -39,8 +34,15 @@ if ![info exists DEFAULT_CFLAGS] then {
 dg-init
 
 # Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\] ]] \
-       "" $DEFAULT_CFLAGS
+set comp_output [gcc_target_compile \
+    "$srcdir/$subdir/../trivial.c" "trivial.S" assembly \
+    "additional_flags=-gctf"]
+if { ! [string match "*: target system does not support the * debug format*" \
+    $comp_output] } {
+    remove-build-file "trivial.S"
+    dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\] ]] \
+           "" $DEFAULT_CFLAGS
+}
 
 # All done.
 dg-finish
index 81f4bb2ff7934ae753541fdf8b0a2de8f33b2c70..7edd070d71dc3e5e49d0f807c7758d77f1735217 100644 (file)
@@ -641,7 +641,6 @@ proc gcc-dg-frontend-supports-ctf { target_compile trivial } {
 proc gcc-dg-target-supports-debug-format { target_compile trivial type } {
     global srcdir subdir
 
-    if {$type == "-gctf" && [istarget *-*-aix*]} { return 0 }
     set comp_output [$target_compile \
            "$srcdir/$subdir/$trivial" "trivial.S" assembly \
            "additional_flags=$type"]
index 43f1f7d345e7bb8cbf560c919ece41624c1fc2d7..14d1335e79e6699907ba51048cb5f480340620b8 100644 (file)
@@ -1463,8 +1463,15 @@ process_options (void)
     debug_hooks = &xcoff_debug_hooks;
 #endif
 #ifdef DWARF2_DEBUGGING_INFO
-  else if (dwarf_debuginfo_p ()
-          || dwarf_based_debuginfo_p ())
+  else if (dwarf_debuginfo_p ())
+    debug_hooks = &dwarf2_debug_hooks;
+#endif
+#ifdef CTF_DEBUGGING_INFO
+  else if (ctf_debuginfo_p ())
+    debug_hooks = &dwarf2_debug_hooks;
+#endif
+#ifdef BTF_DEBUGGING_INFO
+  else if (btf_debuginfo_p ())
     debug_hooks = &dwarf2_debug_hooks;
 #endif
 #ifdef VMS_DEBUGGING_INFO