[Kos-dev] Galere

Thomas Petazzoni kos-dev@enix.org
Fri, 17 Jan 2003 13:51:47 +0100


d2 <David.Decotigny@irisa.fr> writes:

Salut,

> J'ai du louper un episode, mais ca fait le 2eme message que je vois
> parler de pbs avec le loader... et j'ai pas recu de message les
> detaillant depuis mes modifs d'il y'a 1 mois. Donc, si pb il y a, quel
> est il ?

Le probleme est pas avec le loader ...

> Pour ce qui concerne new/delete, j'ai vu que Julien a ajoute des
> choses, donc quels sont les problemes qui restent ? Si c'est les
> versions gcc 3.x qui vous embetent, new_op.cc et cie sont pas bien
> pour vous en inspirer ? Bref, je ne vois pas trop ce qui pose probleme
> la-dedans, merci d'etre plus precis.

En fait, j'ai regarde le code de libsupc++, et ca ressemble pas du
tout a ce qu'on a fait jusqu'a maintenant au niveau de libcxxrt, donc
je me posais des questions. Quelle est la difference entre les
operator new (de libsupc++) et les __builtin_new que nous on definit ?

A quoi sert libsupc++ exactement ? Il me semblait que ca jouait le
meme role que libcxxrt, mais pour Linux (et au niveau utilisateur, pas
au niveau noyau), et pourtant ca a pas du tout la meme tronche.

Bref, kezako. Je dis pas qu'il y a un probleme. Je me pose des
questions, voila tout.

Enfin si d'apres toi, les __builtin_new, __builtin_delete & co ca
suffit, bin allons y ;-)

Julien, j'ai compris a quoi servait le parametre padding, suffit
d'aller voir le code de libsupc++ dans vec.cc, tu comprends tres bien
a quoi ca sert :

(extrait de __cxa_vec_new2)

    std::size_t size = element_count * element_size + padding_size;
    char *base = static_cast <char *> (alloc (size));

    if (padding_size)
      {
        base += padding_size;
        reinterpret_cast <std::size_t *> (base)[-1] = element_count;
      }
    try
      {
        __cxa_vec_ctor(base, element_count, element_size,
                       constructor, destructor);
      }

Bref, padding c'est juste un espace ajoute avant le tableau
d'objets. Bon par contre le reinterpret_cast, j'avoue que j'ai un peu
du mal ... Mais enfin bon.

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni@enix.org - UIN : 34937744
(Perso)      http://www.enix.org/~thomas/
(KOS)        http://kos.enix.org/ 
(Club LinUT) http://club-linut.enix.org