[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-devel
Subject:    Re: Calling all KDE devs! Autopackage needs your help!
From:       Thiago Macieira <thiago () kde ! org>
Date:       2005-05-29 20:31:45
Message-ID: 200505291731.51863.thiago () kde ! org
[Download RAW message or body]

[Attachment #2 (multipart/signed)]


carl wrote:
>> The solution is simple: make sure all C++ programs are compiled with
>> the same g++ ABI and linked to the same libstdc++.

>Unfortunately it's not that simple.

That's the whole problem: it has to be.

A simple solution such as enforcing a single g++ version would solve all 
the problems.

This would, of course, not be an acceptable solution, since I wouldn't 
want to downgrade my whole *system* to g++ 3.3 just because someone at 
autopackage felt 3.3 was best.

>We don't know what version of gcc 
> KDELIBS was compiled with.

You can, since it sets specific signatures in the binaries. The first and 
foremost is the soname of the libstdc++ that it was linked with:

$ ldd /usr/local/kde3/lib/libkdecore.so.4 | grep stdc++
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb71b7000)

Second, the CXXABI symbol:
$ objdump -p /usr/local/kde3/lib/libkdecore.so.4 | grep CXXABI
    0x056bafd3 0x00 02 CXXABI_1.3

Both are evidences of using g++ 3.4, with ABI version 1.3.

> Many different distributions mean many 
> different compiler versions which means we can't anticipate which ABI
> to use. 

Which means: you can't provide a *single* package that will work in all 
installations. 

Problem solved: you must create one package for each target ABI.

> The best solution is to use xdeltas to install the proper binaries. 

One master package plus xdeltas to change the binary into the proper ABI?

Consider this: each and every C++ package would have to be compiled and 
recompiled for each target ABI. Then each resulting binary would have to 
be diff'ed into xdeltas. The total package size would probably be twice 
as large, or even more.

When the C++ ABI changes, all calling conventions are thrown out of the 
window, plus typeinfo nodes, typeinfo names, symbol names, virtual table 
layouts, etc. If you were to compare a libkdecore.so.4 compiled with g++ 
2.95 to one compiled with g++ 3.4, I wouldn't be surprised if there were 
nothing in common.

> Mike of autopackage can go into more detail about that than I can. But
> he needs help since he really isn't much of a KDE developer.

-- 
  Thiago Macieira  -  thiago (AT) macieira (DOT) info
    PGP/GPG: 0x6EF45358; fingerprint:
    E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358

4. And æfter se scieppend ingelogode, he wrát "cenn", ac eala! se 
rihtendgesamnung andswarode "cenn: ne wát hú cennan 'eall'. Ástynt."

[Attachment #5 (application/pgp-signature)]

>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic