From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by sourceware.org (Postfix) with ESMTPS id B44893858D1E for ; Fri, 30 Sep 2022 16:17:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B44893858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: by mail-wr1-x42b.google.com with SMTP id j7so2220121wrr.3 for ; Fri, 30 Sep 2022 09:17:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; h=to:cc:date:message-id:subject:mime-version:from:from:to:cc:subject :date; bh=I7D1Wgt0dL7uz6zwJktlCSd3So1BQQuLWJ8fPUx8dN0=; b=EvIhigUKqHdlMYU2JJbsPjEAWZnL1JWYDNSHBBrAF6YRfrL0/2U5NXgC3eIaapHR0r 4VsNcdwn5073BDmoLKbtQu9Q7IS6Gyb7B0McgAScrb/SFTpFUuT5e/ytrwJIjPZC15mc it0a50eDhrzqpgUdFlARF8Kf6Px+did73rna67ZeiXAdEDGKv/Xy8eWRi3uEOilZliKz Q/3nxdVevLM6asJD0XZgWYElWXg/ZMujrmfOi4oV/QUNay6aMEaQTF769ZWZmmEFBuee x+QzFVoBVlmxqcLhuQkowoSXImEsWMT6u12b4Z1N1KkP6t3A3OrtozjIDrqUXEwHHbra Aevw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:cc:date:message-id:subject:mime-version:from:x-gm-message-state :from:to:cc:subject:date; bh=I7D1Wgt0dL7uz6zwJktlCSd3So1BQQuLWJ8fPUx8dN0=; b=4M34XTYgHz+5BSeTOI7+6Q4dRoZuOc6h1i5WgV6NkxXUpm1DYqvTclbxSRaFBImK6t abIMcHDXBGD/Ey1XXsLmUcSxiHXJhymUidz0fmiQWE8YHrDhpgNSh0NF1tahudo1XX2U vYTl0Io66hAubvsFJrN1M2g8XdzZIwymqL2ih5Unv5zGhirF9d0pZoPJQpd0Fl+r+Ao9 OUZVEWg+Srd3CV3mMkwmejTzVmTgXMajJaY0ypVhxJ0ei8D/1vbqb6LkOsoNE7MQSn3Y rk7lTsKqSJmx+CEq3SGq2gE/3VlwViA/rVaPdm43xSL9+gP5YceI1Tyy9gAGNoiftgXO W8YA== X-Gm-Message-State: ACrzQf0pqEw0sQvZS1pxWq3JzEQTzAl2X5P4awzv6wnA6IwA6pr+U5/Y wo6JLvayfho2mTruRupQ6Yhwf6OM7ERPQQ== X-Google-Smtp-Source: AMsMyM7gSHT3Qf5m0d4je+BnjPgfA2gNJRErdM2M2EyPeSpwSWZxS7C24CKlbKAF38RCB73YrZXy5Q== X-Received: by 2002:a5d:5351:0:b0:22c:be67:9542 with SMTP id t17-20020a5d5351000000b0022cbe679542mr5921689wrv.203.1664554656815; Fri, 30 Sep 2022 09:17:36 -0700 (PDT) Received: from smtpclient.apple ([45.147.211.82]) by smtp.gmail.com with ESMTPSA id n31-20020a05600c501f00b003a844885f88sm2515257wmr.22.2022.09.30.09.17.36 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Sep 2022 09:17:36 -0700 (PDT) From: Olivier Hainque Content-Type: multipart/mixed; boundary="Apple-Mail=_317EF4B4-E2B7-497A-84CE-1ADDF12FBF14" Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.13\)) Subject: [PATCH] Introduce DWARF_VERSION_DEFAULT (and redefine for VxWorks) Message-Id: <30A5CEC6-062F-4DE3-8A36-E6A34C2EE4BB@adacore.com> Date: Fri, 30 Sep 2022 18:17:35 +0200 Cc: Olivier Hainque To: gcc-patches X-Mailer: Apple Mail (2.3654.120.0.1.13) X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --Apple-Mail=_317EF4B4-E2B7-497A-84CE-1ADDF12FBF14 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii Hello, This change is a proposal to introduce a target overridable macro to replace the hardcoded value used in common.opt to initialize dwarf_version. 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). We have been using this in a lot of gcc-11 based toolchains for various configurations for a while, cross and native. This is a noop for anything but VxWorks and helped cure crashes of target debuggers in VxWorks environments. Bootstrapped and regression tested for mainline on x86_64-linux. Is this ok to commit? Thanks in advance! Best Regards, Olivier 2022-09-30 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. --Apple-Mail=_317EF4B4-E2B7-497A-84CE-1ADDF12FBF14 Content-Disposition: attachment; filename=0012-Introduce-DWARF_VERSION_DEFAULT-and-redefine-for-VxW.patch Content-Type: application/octet-stream; x-unix-mode=0640; name="0012-Introduce-DWARF_VERSION_DEFAULT-and-redefine-for-VxW.patch" Content-Transfer-Encoding: quoted-printable =46rom=20066876a82af48bdcc826ce38404cc7725a1a68f3=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Olivier=20Hainque=20=0A= Date:=20Mon,=2026=20Sep=202022=2016:05:48=20+0000=0ASubject:=20[PATCH=20= 12/18]=20Introduce=20DWARF_VERSION_DEFAULT=20and=20redefine=20for=0A=20= VxWorks=0A=0AThis=20change=20introduces=20a=20target=20overridable=20= macro=20to=20replace=0Athe=20hardcoded=20value=20used=20to=20initialize=20= dwarf_version=20from=20common.opt.=0A=0AThe=20main=20advantage=20= compared=20to=20special=20code=20in=20a=20target=0Aoverride_options=20= hook=20is=20that=20redefinitions=20by=20target=20config=20files=0Aare=20= visible=20by=20both=20the=20compiler=20proper=20and=20by=20the=20driver,=20= which=0Amight=20refer=20to=20dwarf_version=20in=20ASM_DEBUG_SPECs=20and=20= friends.=0A=0AThis=20is=20useful=20at=20least=20on=20VxWorks,=20where=20= we=20usually=20need=20to=0Adefault=20to=20dwarf=204=20or=20even=202=20to=20= accommodate=20non-gdb=20debuggers=0Aprovided=20by=20the=20environment,=20= including=20for=20assembly=20sources=0Aused=20in=20libgcc=20for=20some=20= ports=20(witnessed=20with=20lse.S=20on=20aarch64).=0A=0A2022-02-28=20=20= Olivier=20Hainque=20=20=0A=0Agcc/=0A=09*=20= defaults.h=20(DWARF_DEFAULT_VERSION):=20Define=20if=20not=0A=09defined=20= already.=0A=09*=20common.opt=20(gdwarf-):=20Use=20it.=0A=09*=20= doc/tm.texi.in=20(DWARF_DEFAULT_VERSION):=20Document.=0A=09*=20= doc/tm.texi:=20Update=20accordingly.=0A=0A=09*=20config/vxworks.h=20= (DWARF_DEFAULT_VERSION):=20Redefine.=0A=09*=20config/vxworks.cc:=20= Remove=20code=20setting=20dwarf_version,=20now=0A=09handled=20by=20the=20= DWARF_DEFAULT_VERSION=20redefinition.=0A---=0A=20gcc/common.opt=20=20=20=20= =20=20=20=20|=20=202=20+-=0A=20gcc/config/vxworks.cc=20|=2010=20= ++--------=0A=20gcc/config/vxworks.h=20=20|=20=208=20++++----=0A=20= gcc/defaults.h=20=20=20=20=20=20=20=20|=20=206=20++++++=0A=20= gcc/doc/tm.texi=20=20=20=20=20=20=20|=20=206=20++++++=0A=20= gcc/doc/tm.texi.in=20=20=20=20|=20=206=20++++++=0A=206=20files=20= changed,=2025=20insertions(+),=2013=20deletions(-)=0A=0Adiff=20--git=20= a/gcc/common.opt=20b/gcc/common.opt=0Aindex=20296d6f194bf..8460bc1a6e5=20= 100644=0A---=20a/gcc/common.opt=0A+++=20b/gcc/common.opt=0A@@=20-3317,7=20= +3317,7=20@@=20Common=20Driver=20JoinedOrMissing=20Negative(gdwarf-)=0A=20= Generate=20debug=20information=20in=20default=20version=20of=20DWARF=20= format.=0A=20=0A=20gdwarf-=0A-Common=20Driver=20Joined=20UInteger=20= Var(dwarf_version)=20Init(5)=0A+Common=20Driver=20Joined=20UInteger=20= Var(dwarf_version)=20Init(DWARF_VERSION_DEFAULT)=0A=20Generate=20debug=20= information=20in=20DWARF=20v2=20(or=20later)=20format.=0A=20=0A=20= gdwarf32=0Adiff=20--git=20a/gcc/config/vxworks.cc=20= b/gcc/config/vxworks.cc=0Aindex=209d2587391b4..f0c0df29367=20100644=0A= ---=20a/gcc/config/vxworks.cc=0A+++=20b/gcc/config/vxworks.cc=0A@@=20= -164,16=20+164,10=20@@=20vxworks_override_options=20(void)=0A=20=20=20if=20= (flag_pic=20>=200=20&&=20!TARGET_VXWORKS_RTP)=0A=20=20=20=20=20error=20= ("PIC=20is=20only=20supported=20for=20RTPs");=0A=20=0A-=20=20/*=20= VxWorks=20comes=20with=20non-gdb=20debuggers=20which=20only=20support=20= strict=0A-=20=20=20=20=20dwarf=20up=20to=20certain=20version.=20=20= Default=20dwarf=20control=20to=20friendly=0A-=20=20=20=20=20values=20for=20= these.=20=20*/=0A-=0A+=20=20/*=20VxWorks=20comes=20with=20non-gdb=20= debuggers=20which=20only=20support=20strict=20dwarf=0A+=20=20=20=20=20up=20= to=20certain=20versions,=20as=20controlled=20by=20DWARF_VERSION_DEFAULT.=20= =20*/=0A=20=20=20if=20(!OPTION_SET_P=20(dwarf_strict))=0A=20=20=20=20=20= dwarf_strict=20=3D=201;=0A-=0A-=20=20if=20(!OPTION_SET_P=20= (dwarf_version))=0A-=20=20=20=20dwarf_version=20=3D=20= VXWORKS_DWARF_VERSION_DEFAULT;=0A-=0A=20}=0A=20=0A=20/*=20We=20don't=20= want=20to=20use=20library=20symbol=20__clear_cache=20on=20SR0640.=20=20= Avoid=0Adiff=20--git=20a/gcc/config/vxworks.h=20b/gcc/config/vxworks.h=0A= index=20e644b88a253..1ad927e8aba=20100644=0A---=20a/gcc/config/vxworks.h=0A= +++=20b/gcc/config/vxworks.h=0A@@=20-406,11=20+406,11=20@@=20extern=20= void=20vxworks_asm_out_destructor=20(rtx=20symbol,=20int=20priority);=0A=20= =20=20vxworks_emit_call_builtin___clear_cache=0A=20extern=20void=20= vxworks_emit_call_builtin___clear_cache=20(rtx=20begin,=20rtx=20end);=0A=20= =0A-/*=20Default=20dwarf=20control=20values,=20for=20non-gdb=20debuggers=20= that=20come=20with=0A-=20=20=20VxWorks.=20=20*/=0A+/*=20Default=20dwarf=20= control=20values,=20accounting=20for=20non-gdb=20debuggers=20that=20come=0A= +=20=20=20with=20VxWorks.=20=20*/=0A=20=0A-#undef=20= VXWORKS_DWARF_VERSION_DEFAULT=0A-#define=20VXWORKS_DWARF_VERSION_DEFAULT=20= (TARGET_VXWORKS7=20?=204=20:=202)=0A+#undef=20DWARF_VERSION_DEFAULT=0A= +#define=20DWARF_VERSION_DEFAULT=20(TARGET_VXWORKS7=20?=204=20:=202)=0A=20= =0A=20#undef=20DWARF_GNAT_ENCODINGS_DEFAULT=0A=20#define=20= DWARF_GNAT_ENCODINGS_DEFAULT=20\=0Adiff=20--git=20a/gcc/defaults.h=20= b/gcc/defaults.h=0Aindex=20953605c1627..376687d91b1=20100644=0A---=20= a/gcc/defaults.h=0A+++=20b/gcc/defaults.h=0A@@=20-1441,6=20+1441,12=20@@=20= see=20the=20files=20COPYING3=20and=20COPYING.RUNTIME=20respectively.=20=20= If=20not,=20see=0A=20#define=20DWARF_GNAT_ENCODINGS_DEFAULT=20= DWARF_GNAT_ENCODINGS_GDB=0A=20#endif=0A=20=0A+/*=20When=20generating=20= dwarf=20info,=20the=20default=20standard=20version=20we'll=20honor=0A+=20= =20=20and=20advertise=20in=20absence=20of=20-gdwarf-=20on=20the=20= command=20line.=20=20*/=0A+#ifndef=20DWARF_VERSION_DEFAULT=0A+#define=20= DWARF_VERSION_DEFAULT=205=0A+#endif=0A+=0A=20#ifndef=20USED_FOR_TARGET=0A= =20/*=20Done=20this=20way=20to=20keep=20gengtype=20happy.=20=20*/=0A=20= #if=20BITS_PER_UNIT=20=3D=3D=208=0Adiff=20--git=20a/gcc/doc/tm.texi=20= b/gcc/doc/tm.texi=0Aindex=20858bfb80cec..3111d74c418=20100644=0A---=20= a/gcc/doc/tm.texi=0A+++=20b/gcc/doc/tm.texi=0A@@=20-3294,6=20+3294,12=20= @@=20someone=20decided=20it=20was=20a=20good=20idea=20to=20use=20that=20= register=20number=20to=0A=20terminate=20the=20stack=20backtrace.=20=20= New=20ports=20should=20avoid=20this.=0A=20@end=20defmac=0A=20=0A+@defmac=20= DWARF_VERSION_DEFAULT=0A+A=20C=20expression=20whose=20value=20is=20the=20= default=20dwarf=20standard=20version=20we'll=20honor=0A+and=20advertise=20= when=20generating=20dwarf=20debug=20information,=20in=20absence=20of=0A= +an=20explicit=20@option{-gdwarf-@var{version}}=20option=20on=20the=20= command=20line.=0A+@end=20defmac=0A+=0A=20@deftypefn=20{Target=20Hook}=20= void=20TARGET_DWARF_HANDLE_FRAME_UNSPEC=20(const=20char=20*@var{label},=20= rtx=20@var{pattern},=20int=20@var{index})=0A=20This=20target=20hook=20= allows=20the=20backend=20to=20emit=20frame-related=20insns=20that=0A=20= contain=20UNSPECs=20or=20UNSPEC_VOLATILEs.=20=20The=20DWARF=202=20call=20= frame=20debugging=0Adiff=20--git=20a/gcc/doc/tm.texi.in=20= b/gcc/doc/tm.texi.in=0Aindex=2021b849ea32a..501ddf147e4=20100644=0A---=20= a/gcc/doc/tm.texi.in=0A+++=20b/gcc/doc/tm.texi.in=0A@@=20-2575,6=20= +2575,12=20@@=20someone=20decided=20it=20was=20a=20good=20idea=20to=20= use=20that=20register=20number=20to=0A=20terminate=20the=20stack=20= backtrace.=20=20New=20ports=20should=20avoid=20this.=0A=20@end=20defmac=0A= =20=0A+@defmac=20DWARF_VERSION_DEFAULT=0A+A=20C=20expression=20whose=20= value=20is=20the=20default=20dwarf=20standard=20version=20we'll=20honor=0A= +and=20advertise=20when=20generating=20dwarf=20debug=20information,=20in=20= absence=20of=0A+an=20explicit=20@option{-gdwarf-@var{version}}=20option=20= on=20the=20command=20line.=0A+@end=20defmac=0A+=0A=20@hook=20= TARGET_DWARF_HANDLE_FRAME_UNSPEC=0A=20=0A=20@hook=20= TARGET_DWARF_POLY_INDETERMINATE_VALUE=0A--=20=0A2.25.1=0A=0A= --Apple-Mail=_317EF4B4-E2B7-497A-84CE-1ADDF12FBF14--