From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1298) id E1DA23858CDA; Fri, 7 Oct 2022 06:58:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E1DA23858CDA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1665125914; bh=Wt1zosqeAlu9b0FymzYa8Bkfn55ofN7/aCTWFlp8Sb0=; h=From:To:Subject:Date:From; b=JVM6hSB6URHuqZubaeCxkEOHxw+SO4iKtGO2upz6n4+v7eebYj4n4C3MUEjam21o7 4dMEAFTaXwCSWmSJ+fghJtN/B8sHOcYja2RxW888LMJXuF5MLOtF5nk6sybyu8ptXJ q2IlLf6sWJjzvytXNujBU4SMJ/X4F0lMNDNTioHY= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Olivier Hainque To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-3145] Introduce DWARF_VERSION_DEFAULT and redefine for VxWorks X-Act-Checkin: gcc X-Git-Author: Olivier Hainque X-Git-Refname: refs/heads/master X-Git-Oldrev: 8307b7d6d0335da952a87bf56015f830072ac431 X-Git-Newrev: 8dffd0e9621d93faabb6676e7a018cb5267dfa22 Message-Id: <20221007065834.E1DA23858CDA@sourceware.org> Date: Fri, 7 Oct 2022 06:58:34 +0000 (GMT) List-Id: https://gcc.gnu.org/g:8dffd0e9621d93faabb6676e7a018cb5267dfa22 commit r13-3145-g8dffd0e9621d93faabb6676e7a018cb5267dfa22 Author: Olivier Hainque Date: Mon Sep 26 16:05:48 2022 +0000 Introduce DWARF_VERSION_DEFAULT and redefine for VxWorks This change introduces a target overridable macro to replace the hardcoded value used to initialize dwarf_version from common.opt. The main advantage compared to special code in a target override_options hook is that redefinitions by target config files are visible by both the compiler proper and by the driver, which might refer to dwarf_version in ASM_DEBUG_SPECs and friends. This is useful at least on VxWorks, where we usually need to default to dwarf 4 or even 2 to accommodate non-gdb debuggers provided by the environment, including for assembly sources used in libgcc for some ports (witnessed with lse.S on aarch64). 2022-02-28 Olivier Hainque gcc/ * defaults.h (DWARF_DEFAULT_VERSION): Define if not defined already. * common.opt (gdwarf-): Use it. * doc/tm.texi.in (DWARF_DEFAULT_VERSION): Document. * doc/tm.texi: Update accordingly. * config/vxworks.h (DWARF_DEFAULT_VERSION): Redefine. * config/vxworks.cc: Remove code setting dwarf_version, now handled by the DWARF_DEFAULT_VERSION redefinition. Diff: --- gcc/common.opt | 2 +- gcc/config/vxworks.cc | 10 ++-------- gcc/config/vxworks.h | 8 ++++---- gcc/defaults.h | 6 ++++++ gcc/doc/tm.texi | 6 ++++++ gcc/doc/tm.texi.in | 6 ++++++ 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/gcc/common.opt b/gcc/common.opt index 58dc1a0a780..3a97e6782ce 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -3317,7 +3317,7 @@ Common Driver JoinedOrMissing Negative(gdwarf-) Generate debug information in default version of DWARF format. gdwarf- -Common Driver Joined UInteger Var(dwarf_version) Init(5) +Common Driver Joined UInteger Var(dwarf_version) Init(DWARF_VERSION_DEFAULT) Generate debug information in DWARF v2 (or later) format. gdwarf32 diff --git a/gcc/config/vxworks.cc b/gcc/config/vxworks.cc index 9d2587391b4..f0c0df29367 100644 --- a/gcc/config/vxworks.cc +++ b/gcc/config/vxworks.cc @@ -164,16 +164,10 @@ vxworks_override_options (void) if (flag_pic > 0 && !TARGET_VXWORKS_RTP) error ("PIC is only supported for RTPs"); - /* VxWorks comes with non-gdb debuggers which only support strict - dwarf up to certain version. Default dwarf control to friendly - values for these. */ - + /* VxWorks comes with non-gdb debuggers which only support strict dwarf + up to certain versions, as controlled by DWARF_VERSION_DEFAULT. */ if (!OPTION_SET_P (dwarf_strict)) dwarf_strict = 1; - - if (!OPTION_SET_P (dwarf_version)) - dwarf_version = VXWORKS_DWARF_VERSION_DEFAULT; - } /* We don't want to use library symbol __clear_cache on SR0640. Avoid diff --git a/gcc/config/vxworks.h b/gcc/config/vxworks.h index 84a9c93c6d3..d6ac83b2bd2 100644 --- a/gcc/config/vxworks.h +++ b/gcc/config/vxworks.h @@ -376,11 +376,11 @@ extern void vxworks_asm_out_destructor (rtx symbol, int priority); vxworks_emit_call_builtin___clear_cache extern void vxworks_emit_call_builtin___clear_cache (rtx begin, rtx end); -/* Default dwarf control values, for non-gdb debuggers that come with - VxWorks. */ +/* Default dwarf control values, accounting for non-gdb debuggers that come + with VxWorks. */ -#undef VXWORKS_DWARF_VERSION_DEFAULT -#define VXWORKS_DWARF_VERSION_DEFAULT (TARGET_VXWORKS7 ? 4 : 2) +#undef DWARF_VERSION_DEFAULT +#define DWARF_VERSION_DEFAULT (TARGET_VXWORKS7 ? 4 : 2) #undef DWARF_GNAT_ENCODINGS_DEFAULT #define DWARF_GNAT_ENCODINGS_DEFAULT \ diff --git a/gcc/defaults.h b/gcc/defaults.h index 953605c1627..376687d91b1 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -1441,6 +1441,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #define DWARF_GNAT_ENCODINGS_DEFAULT DWARF_GNAT_ENCODINGS_GDB #endif +/* When generating dwarf info, the default standard version we'll honor + and advertise in absence of -gdwarf- on the command line. */ +#ifndef DWARF_VERSION_DEFAULT +#define DWARF_VERSION_DEFAULT 5 +#endif + #ifndef USED_FOR_TARGET /* Done this way to keep gengtype happy. */ #if BITS_PER_UNIT == 8 diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 7590924f2ca..110f8dfa0a9 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -3294,6 +3294,12 @@ someone decided it was a good idea to use that register number to terminate the stack backtrace. New ports should avoid this. @end defmac +@defmac DWARF_VERSION_DEFAULT +A C expression whose value is the default dwarf standard version we'll honor +and advertise when generating dwarf debug information, in absence of +an explicit @option{-gdwarf-@var{version}} option on the command line. +@end defmac + @deftypefn {Target Hook} void TARGET_DWARF_HANDLE_FRAME_UNSPEC (const char *@var{label}, rtx @var{pattern}, int @var{index}) This target hook allows the backend to emit frame-related insns that contain UNSPECs or UNSPEC_VOLATILEs. The DWARF 2 call frame debugging diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index 21b849ea32a..501ddf147e4 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -2575,6 +2575,12 @@ someone decided it was a good idea to use that register number to terminate the stack backtrace. New ports should avoid this. @end defmac +@defmac DWARF_VERSION_DEFAULT +A C expression whose value is the default dwarf standard version we'll honor +and advertise when generating dwarf debug information, in absence of +an explicit @option{-gdwarf-@var{version}} option on the command line. +@end defmac + @hook TARGET_DWARF_HANDLE_FRAME_UNSPEC @hook TARGET_DWARF_POLY_INDETERMINATE_VALUE