This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: 1008 segfaults in genattr


> > If this doesn't make the difference, then there's probably a problem 
> > with the way .fini is being built.
> 
> If .fini on SCO is supported as ELF, atexit () should not be used

SCO makes two distinctly different products  - OpenServer and Unixware.
The Unixware product is the stuff formerly from AT&T/USL/USG/Univel/Novell.

SVR4/386 has never supported generation of COFF binaries - it was ELF
out of the gate and never looked back.   Yes, it will execute many COFF
binaries, but can't create them.   GCC on SVR4/386 reflects this 
"ELF-only" statistic, so I think we can count on having a functional
.fini section.

> at all. BTW, by ".fini", I mean a section which will be called
> by the system automatically upon exit and the only thing you 
> have to do is stick some stuff you want in it. If you need
> to do more than that, it is not the ".fini" gcc wants.

That is part of the ELF spec, and I'm pretty sure that Unixware
does exactly what you're asking of it.


The problem is that "config/svr4.h" #defines HAVE_ATEXIT and nothing
in config/i386/sysv4.h #undefs it.  This is why we see the potentially 
goofy double exit thing on systems that are SVR4-ish on x86, which 
would certainly include Unixware.

Whether config/svr4.h shouldn't define it or i386/sysv4.h should 
undefine it is left as an exercise for someone with a better feel
for risk management. :-)

Things were uglier on OpenServer where we have both COFF and ELF, but
I think that's all behind us now.

RJL


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]