On 9/16/2021 1:41 AM, Richard Biener wrote:
On Wed, 15 Sep 2021, Koning, Paul wrote:
On Sep 13, 2021, at 3:31 AM, Richard Biener <rguent...@suse.de> wrote:
This makes defaults.h choose DWARF2_DEBUG if PREFERRED_DEBUGGING_TYPE
is not specified by the target and NO_DEBUG if DWARF is not supported.
As I'm looking at questions about old debug formats, it brings up the
question of old object formats. I don't remember what the status of
a.out is. Is that considered deprecated? Still current? Of course
most targets use elf, but is there an expectation to move away from
a.out the way there is an expectation to move away from STABS?
Is this actually a binutils rather than a gcc question?
I guess it's a question for both - I do still see a.out targets
in the configs supported by gas for example.
Note that languages like C++ might have difficulties with object
formats that do not support separate sections for instantiated
templates for example, or for global initializers. We might have
kludges for that in collect2 where removing those might be a
motivation to deprecate object formats not supporting some
set of features (named sections for example).
As for "old", the problem with the legacy systems, being it
pdp11 or hppa-hpux, is of course that they tend to be kept alive
with minimal resources and doing major modernization doesn't
really make sense if all that is wanted is to preserve them
rather than turning them into something modern.
That said - yes, I'd consider a.out purely legacy and not fit
for the future. But it never came up on the radar of standing
in the way of modernizing GCC in any area.
I'd definitely consider a.out & SOM as purely legacy. As long as they
continue to work, great, but I wouldn't make any significant investment
in either. And yes, there are mechanisms in collect2 to support things
like global initializers/finalizers on a.out systems.
FWIW, SOM (the 32bit native hpux format) is a COFF derivative and can
support most of the stuff ELF can. Even so, I'd consider it pure legacy.