This is the mail archive of the gcc-patches@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: [geoffk@cygnus.com: GCC testing failed with your patch.]


> Cc: Theodore.Papadopoulo@sophia.inria.fr, ghazi@caip.rutgers.edu,
>         mark@codesourcery.com, rth@cygnus.com
> From: Jason Merrill <jason@cygnus.com>
> Date: 23 Mar 2000 12:00:02 -0800
> 
> >>>>> Geoff Keating <geoffk@cygnus.com> writes:
> 
>  > Jason, do I understand that your patch changes the frame_state
>  > structure?  I don't think you can do this.  It breaks binary
>  > compatibility on linux systems, because frame.o is in libc.so but
>  > __throw is in applications and they communicate with frame_state.
>  > However, that is not the problem that is causing these regressions.

(Note that the automated testing doesn't actually test anything to do
with linux, so the incompatibility problem I refer to here is not the
thing that's causing the test failures).

> Does this mean that we can't update frame.o without moving to a new libc?
> That's pretty bogus.

You can't change frame.o at all if it would cause incompatibility if
the wrong version was used (there are two cases to worry about; a new
frame.o with an old eh.o, and the reverse).

This is a general problem; you can't do this for anything in libgcc.a.
You can even get get one .o file from libgcc.a from one GCC version
and another .o file from a different GCC version, and this has to work.

I know this is bad.  There seems to be no way around it.  It's why the
PowerPC DWARF frame information uses negative offsets; it was done
that way in the first cut and then people started shipping it on CDs
and now we're stuck.

It's even worse because at least if you change eh.o you just break C++
binary compatibility, but if you change frame.o then you break C
binary compatibility too.

There is one kind of change you _can_ make:  if all you do is change
the behaviour in a case that never occurred before, and if the change
of behaviour occurs on a new platform that doesn't have compatibility
issues (eg. because you're only now implementing DWARF support on that
platform), then that's OK.

-- 
- Geoffrey Keating <geoffk@cygnus.com>

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