[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