This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Temporarily revert Steven's PCH changes for 4.8 (PR pch/54117)
- From: Steven Bosscher <stevenb dot gcc at gmail dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: Jeff Law <law at redhat dot com>, David Edelsohn <dje at gcc dot gnu dot org>, John David Anglin <danglin at gcc dot gnu dot org>, rupp at gnat dot com, "Joseph S. Myers" <joseph at codesourcery dot com>, Jakub Jelinek <jakub at redhat dot com>
- Date: Wed, 13 Feb 2013 22:12:12 +0100
- Subject: Re: [PATCH] Temporarily revert Steven's PCH changes for 4.8 (PR pch/54117)
- References: <20130213155423.GW4385@tucnak.redhat.com>
On Wed, Feb 13, 2013 at 4:54 PM, Jakub Jelinek wrote:
> Hi!
>
> As agreed on in the PR, here is the revertion of 3 commits, so that
> PCH works again for -gstabs and other debug info formats for 4.8
> release. For 4.9 we should either remove support for anything non-DWARF, or
> hope somebody steps up and fixes dbxout.c etc. not to emit debug info right
> away, but queue it till end of compilation.
Hello,
I'd still like to propose deprecating all stabs support for GCC 4.8 and
remove it for GCC 4.9 (i.e. dbxout, sdbout, xcoffout).
It's not a very useful debug info format, after all. The only
argument against DWARF, that it is so much larger than stabs,
is something I haven't been able to reproduce (see
http://sourceware.org/ml/binutils/2013-01/msg00221.html and
http://sourceware.org/ml/binutils/2013-01/msg00239.html).
DWARF compression via dwz, and debug-fission will improve things
even further.
An important question is of course: Who still *needs* stabs? If there
are important platforms that need stabs support to continue to work,
then deprecating is probably not a realistic option yet...
The list of platforms that are IMHO blockers rights now, with possible
solutions for GCC 4.9, are:
* hppa2.0w-hp-hpux11.11 - no solution immediately available
* powerpc-ibm-aix* - only support AIX7 and later
-> deprecate AIX6 and older in GCC 4.8
* ix86-*-openbsd2.*, ix86-*openbsd3.[0123] - OpenBSD 3.3 was released
in May 2003 -> deprecate for GCC 4.8
* m68k*-*-openbsd - port has seen no active maintenance, and has no
test results posted, ever -> deprecate for GCC 4.8
* pdp11-*-* - toy port -> default to DEBUG_NONE
* ix86-*-interix* - no solution immediately available, and no-one
listed in MAINTAINERS to ask for help, so maybe Doug can say
something about this one?
Platforms that support DWARF2+ but currently have another default
preferred debug info type, would be changed to default to DWARF2+.
So older AIX and 32-bits HPUX are the only real problem cases.
Ciao!
Steven
All GCC 4.8 primary platforms support DWARF2+, and AFAICT they all have
it as their PREFERRED_DEBUGGING_TYPE (including freebsd):
* arm-linux-gnueabi
* i386-unknown-freebsd
* i686-pc-linux-gnu
* mipsisa64-elf
* powerpc64-unknown-linux-gnu
* sparc-sun-solaris2.10
* x86_64-unknown-linux-gnu
Most of the above also include other debug info types by default, but
DWARF2+ is the default.
For the secondary platforms list things are not so simple. Some of them
have a non-DWARF PREFERRED_DEBUGGING_TYPE by default, and some only
conditionally (old configurations):
* hppa2.0w-hp-hpux11.11 -> DBX_DEBUGGING_INFO
For 32-bits only, but that's the most common subtarget.
According to Dave, it should be possible to add DRAWF2+ support:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54117#c14
Perhaps Dave can explain what would have to be done to move this
platform to DWARF2...?
* powerpc-ibm-aix7.1.0.0 -> XCOFF_DEBUGGING_INFO
I think this is for historical reasons. AIX7 has DWARF support,
but it looks like that's not yet implemented in GCC.
Older AIX do not support DWARF, AFAICT (David E.?).
* i686-apple-darwin -> DBX_DEBUGGING_INFO
MacOSX10.4, 32-bits (darwin8).
All 64bits and darwin9+ prefer DWARF2.
* i686-pc-cygwin, i686-mingw32 -> DBX_DEBUGGING_INFO
With binutils 2.16 and later, DWARF2_DEBUGGING_INFO is the default:
http://sourceware.org/ml/binutils/2004-04/msg00327.html
http://gcc.gnu.org/ml/gcc-patches/2004-04/msg01885.html
http://cygwin.com/ml/cygwin/2006-06/msg00865.html
* s390x-linux-gnu -> DWARF2_DEBUGGING_INFO
Other platforms that support DWARF2+ and have it as the preferred type:
* *-*-elf* via:
config/elfos.h:#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
This is practically all ELF platforms. A few target headers redefine
PREFERRED_DEBUGGING_TYPE, usually to DWARF2_DEBUG again...
Exceptions are microblaze*-*-rtems*, microblaze*-*-elf*
* tic6x-*-*, ix86-*-nto-qnx* via:
config/tm-dwarf2.h:#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
* *-*-vxworks* via:
config/vx-common.h:#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
* alpha*-dec-*vms* via:
config/alpha/vms.h:#define PREFERRED_DEBUGGING_TYPE VMS_AND_DWARF2_DEBUG
* hppa*64*-*-hpux11* via:
config/pa/pa64-hpux.h:#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
Other platforms that support DWARF2+ but prefer another debug info type
by default:
* rx-*-elf* if using TARGET_AS100_SYNTAX, via:
config/rx/rx.h:#define PREFERRED_DEBUGGING_TYPE (TARGET_AS100_SYNTAX \
config/rx/rx.h: ? DBX_DEBUG : DWARF2_DEBUG)
* avr-*-* includes elfos.h but changes preffered debug info type via:
config/avr/elf.h:#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
* powerpc-*-lynxos*, ix86-*-lynxos* include elfos.h but change the
preffered debug info type via:
config/lynx.h:# define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
* ix86-pc-msdosdjgpp*, supports DWARF2+ via:
config/i386/djgpp.h:#define DWARF2_DEBUGGING_INFO 1
but picks up its preferred debug info via:
config/dbxcoff.h:#define PREFERRED_DEBUGGING_TYPE SDB_DEBUG
* mn10300-*-*, v850*-*-* if configured --with-stabs, via
config/dbx.h:#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
Targets that do not support DWARF2+:
* ix86-*-openbsd2.*, ix86-*openbsd3.[0123]
* m68k*-*-openbsd via config/m68k/openbsd.h:#define DBX_DEBUGGING_INFO 1
and no other files included that define another debug info type.
* pdp11-*-*: config/pdp11/pdp11.h:#define DBX_DEBUGGING_INFO
* ix86-*-interix* via:
config/i386/i386-interix.h:#define DBX_DEBUGGING_INFO 1
config/i386/i386-interix.h:#define SDB_DEBUGGING_INFO 1
config/i386/i386-interix.h:#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
and picks up nothing else from other header files.
Unknown platforms:
* config/arm/coff.h:#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
Does any platform use this file?