[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: -= PROPOSAL =- Release sarge with amd64



On Tue, Jul 13, 2004 at 05:04:12PM +0200, Andreas Jochens wrote:
> Colin Watson wrote:
> >Judging from conversation on debian-glibc, it sounds like AMD64 really
> >wants to use gcc 3.4, which is not tenable for sarge because it involves
> >an API change (see Matthias Klose's recent mail to debian-release and
> >debian-glibc).

I meant ABI rather than API here, sorry.

> >Can you explain how critical this is to the port?
> 
> There are minor ABI changes from gcc-3.3 to gcc-3.4 on some 
> architectures (MIPS/SPARC).
> I doubt that those ABI changes will affect many libraries (They 
> basically involve the direct use of structs and unions as function 
> parameters, e.g. 'void f(struct s x)' - not pointer arguments like 
> 'void f(struct s *x)'.)

  Notes on GCC 3.4 in the sarge distribution
  ------------------------------------------
  
  [package maintainers: when using GCC 3.4 for package building, please
   check that your packages still work on platforms with GCC changes
   specific for these platforms (hppa, m68k, mips, mipsel, sparc).       ]
  
  GCC 3.4 is included in sarge as a newer compiler version, the system
  compiler for sarge is GCC 3.3 (the transition to a newer system compiler
  is a post sarge issue).  Due to some incompatibilities between
  3.3 and 3.4 care should be taken, when some code built by both versions
  is linked together (most likely linking against a shared library found
  in Debian):
  
  - C++ code compiled by g++-3.3 and g++-3.4 is not compatible.  Applications
    using C++ libraries have to make sure that these libraries are rebuilt.

  [...]

Looking at libstdc++5 and libstdc++6, I see:

  $ objdump -x /usr/lib/libstdc++.so.5 | grep CXXABI
  7 0x00 0x056bafd2 CXXABI_1.2
  8 0x00 0x0bafd271 CXXABI_1.2.1
          CXXABI_1.2

  $ objdump -x libstdc++6/usr/lib/libstdc++.so.6 | grep CXXABI
  objdump: libstdc++6/usr/lib/libstdc++.so.6: no symbols
  4 0x00 0x056bafd3 CXXABI_1.3

This is an ABI transition. In order to cope with this, all C++ library
packages will have to be renamed to *c103, the same way that they all
had to be renamed to *c102 when we moved to g++ 3.3. This took a long
time; the experience of the last time means that we know how to do it
gracefully, but it will still take time.

We *will not* be moving to g++ 3.4 for sarge. It would be release
management insanity.

> I fail to see why the amd64 port cannot use gcc-3.4. The amd64 port 
> may use gcc-3.4 while the other architectures still use gcc-3.3.

The required library package name changes mean that the g++ 3.4
transition has to happen simultaneously on all architectures, or the
result will be total madness.

Cheers,

-- 
Colin Watson                                  [cjwatson@flatline.org.uk]



Reply to: