Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Name mangling, RTTI y compatibilidad entre compiladores

Received: by 10.52.21.68 with SMTP id t4mr825490vde.8.1333079737647;
        Thu, 29 Mar 2012 20:55:37 -0700 (PDT)
X-BeenThere: cppba@googlegroups.com
Received: by 10.52.88.105 with SMTP id bf9ls1155175vdb.8.gmail; Thu, 29 Mar
 2012 20:55:36 -0700 (PDT)
Received: by 10.52.71.195 with SMTP id x3mr663880vdu.4.1333079736303;
        Thu, 29 Mar 2012 20:55:36 -0700 (PDT)
Received: by 10.52.71.195 with SMTP id x3mr663879vdu.4.1333079736288;
        Thu, 29 Mar 2012 20:55:36 -0700 (PDT)
Return-Path: <danielgut...@gmail.com>
Received: from mail-vb0-f43.google.com (mail-vb0-f43.google.com [209.85.212.43])
        by gmr-mx.google.com with ESMTPS id hc9si3657972vdb.2.2012.03.29.20.55.36
        (version=TLSv1/SSLv3 cipher=OTHER);
        Thu, 29 Mar 2012 20:55:36 -0700 (PDT)
Received-SPF: pass (google.com: domain of danielgut...@gmail.com designates 209.85.212.43 as permitted sender) client-ip=209.85.212.43;
Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of danielgut...@gmail.com designates 209.85.212.43 as permitted sender) smtp.mail=danielgut...@gmail.com; dkim=pass header...@gmail.com
Received: by vbbfq11 with SMTP id fq11so326849vbb.16
        for <cppba@googlegroups.com>; Thu, 29 Mar 2012 20:55:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=mime-version:in-reply-to:references:date:message-id:subject:from:to
         :content-type;
        bh=95CumQAgK8DN1m84sTHyzriDt+qPCgS+3B71o3M/akA=;
        b=fYuKtAHmXojJp0+uaLuK/v3aK9uSCJ0sdkbljKE9jXwENQcVbq8PbRAEWPx/aXvfPx
         AXUshgbqc8OMAyK9c+kulvczquAbFZ7yvqdTXuDpSDkc9Am2+fED5lsWKWOUfu4ribwK
         uK/BQe+mfEuvHiElf/NLeZnfiqYXKpgxYeNauBJEHal0LDP1qEOXjDTsh+qe/zacephE
         BR1d9/0sP75sPJD9cbRASleCRUl/iluewRiYefZif17GVYqkum98oyUO2lMkeU+dj5bH
         OrjYB+XaOYTW71MAWwsptr4Y01Air2fabVN/iSjDuhH0XYPkeSyyGe/JRGMGPcJyr6nu
         MrQg==
MIME-Version: 1.0
Received: by 10.220.116.73 with SMTP id l9mr372111vcq.36.1333079736180; Thu,
 29 Mar 2012 20:55:36 -0700 (PDT)
Received: by 10.52.117.66 with HTTP; Thu, 29 Mar 2012 20:55:36 -0700 (PDT)
In-Reply-To: <CAFdMc-2w-wv=viSDVd4j6dKWkh2UUGyzBy-SNOc1_qAsfiG...@mail.gmail.com>
References: <CAC3KrV_-Q035meEpt5pd7bv-0+Z5soeAnuRXm8pxsA44+Ad...@mail.gmail.com>
	<CAFdMc-2w-wv=viSDVd4j6dKWkh2UUGyzBy-SNOc1_qAsfiG...@mail.gmail.com>
Date: Fri, 30 Mar 2012 00:55:36 -0300
Message-ID: <CAFdMc-2RrOFPF3ByEO7C4ZvH=thTTWkGZr9o1gzqHGqeX1k...@mail.gmail.com>
Subject: Re: [cppba] Name mangling, RTTI y compatibilidad entre compiladores
From: Daniel Gutson <danielgut...@gmail.com>
To: cppba@googlegroups.com
Content-Type: multipart/alternative; boundary=f46d042fdd0221df1504bc6dd0ac

--f46d042fdd0221df1504bc6dd0ac
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

Aclaro algo m=E1s y me voy a dormir con fiebre:
   todo esto que mencion=E1s tendr=EDas igual de problema a=FAn sin dynamic
loading, lo tendr=EDas tanto en static como dynamic linking tambi=E9n.
Es decir, es un problema de linking,
 no importa que ocurra en momento de linking de la aplicaci=F3n, en momento
de start-up de la aplicaci=F3n, u on-demand en runtime.

2012/3/30 Daniel Gutson <danielgut...@gmail.com>

> Joaqu=EDn,
>
>   te suger=ED que miraras unplugged.googlecode.com, lo viste? Viste los
> ejemplos?
>
> Vamos por partes porque hay mucho para responder.
>
> Vos, primero, sab=E9s que el problema no es tanto el compilador, sino el
> DYNAMIC LOADER del sistema operativo?
>
> El binding entre la aplicaci=F3n y un shared object ocurre din=E1micament=
e por
> la acci=F3n del DYNAMIC LOADER, que es un componente del sistema operativ=
o.
>
> El compilador ("casi" sin linker, puedo explicar en m=E1s detalle), es am=
igo
> del sistema operativo target, ya que respeta lo que se llama ABI
> (Application Binary Interface), un documento que escriben de la manito el
> fabricante del sistema operativo y el fabricante del microprocesador.
>
> NO HAY NAME MANGLING al menos en linux (no s=E9 en windows), es todo
> C-calling conventions.
>
> Y por =FAltimo, si el plugin genera una instancia de una clase escrita en=
 un
> .h, que la aplicaci=F3n usar=E1, ni siquiera hace falta que cambies de
> compilador para tener kilombo: basta con que hayas compilado con distinta=
s
> opciones de empaquetamiento para que se rompa todo.
>
> Ahora bien, fij=E1te el link y despu=E9s cont=E1me para qu=E9 quer=E9s ha=
cer esto.
> Ni C ni C++ tienen inter=E9s desde dise=F1o en ser binary-compatible code=
s,
> para eso est=E1 Java y .net.
>
>
> 2012/3/30 Joaquin Duo <joa...@gmail.com>
>
>> Hola Lista!
>> Gracias por sus respuestas!
>>
>> Dise=F1ando el sistema de plugins me han surgido ciertas dudas.
>> Mi idea en el dise=F1o es que los plugins se puedan compilar con diferen=
tes
>> compiladores, y que la compatibilidad con el sistema tenga larga duraci=
=F3n.
>> En otras palabras, que no haga falta compilar nuevamente el plugin si
>> cambia el compilador.
>> Aunque no es un requisito fundamental me interesa saber c=F3mo se compor=
tan
>> las compatibilidades entre compiladores.
>>
>> 1- Respecto al name mangling:
>> Tengo entendido que el name mangling cambia de un compilador a otro. Per=
o
>> tambi=E9n de una versi=F3n a otra, no?
>> No existe ahora un est=E1ndar que diga c=F3mo deber=EDa ser el name mang=
ling?
>> S=ED o s=ED tengo que compilar los plugins con la misma versi=F3n (o ver=
siones
>> cercanas) del compilador?
>> Cu=E1les son los l=EDmites?
>>
>> Suponiendo que evito el problema usando una funci=F3n de interface 'exte=
rn
>> "C"'.
>> Qu=E9 compatibilidad hay a nivel l=F3gico/de compilaci=F3n entre compila=
dores?
>>
>> Suponiendo los siguientes pasos:
>> 1- ambos compiladores leen la misma definici=F3n de una clase.
>> 2- el n=FAcleo de la aplicaci=F3n es compilado con un compilador A, que =
usa
>> esa clase
>> 3- el plugin es compilado con el compilador B, que usa la clase.
>> 4- el n=FAcleo carga la librer=EDa y recibe, luego de llamar una funci=
=F3n de
>> la librer=EDa, un puntero a la clase creada por B.
>> Pueden haber incompatibilidades?
>>
>> 2- Respecto a RTTI:
>> Tengo las mismas dudas que para las compatibilidades entre clases.
>> Qu=E9 sucede con el RTTI en diferentes compiladores? Hay incompatibilida=
des?
>>
>> Espero que la pregunta sea interesante.
>> Gracias desde ya!
>>
>>  --
>> =BFEres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recib=
ido
>> este mesaje por error.
>> En caso de duda visita "http://groups.google.com/group/cppba"
>
>
>
>
> --
> Who=92s got the sweetest disposition?
> One guess, that=92s who?
> Who=92d never, ever start an argument?
> Who never shows a bit of temperament?
> Who's never wrong but always right?
> Who'd never dream of starting a fight?
> Who get stuck with all the bad luck?
>



--=20
Who=92s got the sweetest disposition?
One guess, that=92s who?
Who=92d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--f46d042fdd0221df1504bc6dd0ac
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

Aclaro algo m=E1s y me voy a dormir con fiebre:<div>=A0 =A0todo esto que me=
ncion=E1s tendr=EDas igual de problema a=FAn sin dynamic loading, lo tendr=
=EDas tanto en static como dynamic linking tambi=E9n.</div><div>Es decir, e=
s un problema de linking,</div>
<div>=A0no importa que ocurra en momento de linking de la aplicaci=F3n, en =
momento de start-up de la aplicaci=F3n, u on-demand en runtime.</div><div><=
br><div class=3D"gmail_quote">2012/3/30 Daniel Gutson <span dir=3D"ltr">&lt=
;<a href=3D"mailto:danielgut...@gmail.com">danielgut...@gmail.com</a>&gt;</=
span><br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">Joaqu=EDn,<div><br></div><div>=A0 te suger=
=ED que miraras <a href=3D"http://unplugged.googlecode.com" target=3D"_blan=
k">unplugged.googlecode.com</a>, lo viste? Viste los ejemplos?</div>
<div><br></div><div>Vamos por partes porque hay mucho para responder.</div>
<div><br></div><div>Vos, primero, sab=E9s que el problema no es tanto el co=
mpilador, sino el DYNAMIC LOADER del sistema operativo?</div><div><br></div=
><div>El binding entre la aplicaci=F3n y un shared object ocurre din=E1mica=
mente por la acci=F3n del DYNAMIC LOADER, que es un componente del sistema =
operativo.</div>

<div><br></div><div>El compilador (&quot;casi&quot; sin linker, puedo expli=
car en m=E1s detalle), es amigo del sistema operativo target, ya que respet=
a lo que se llama ABI (Application Binary Interface), un documento que escr=
iben de la manito el fabricante del sistema operativo y el fabricante del m=
icroprocesador.</div>

<div><br></div><div>NO HAY NAME MANGLING al menos en linux (no s=E9 en wind=
ows), es todo C-calling conventions.</div><div><br></div><div>Y por =FAltim=
o, si el plugin genera una instancia de una clase escrita en un .h, que la =
aplicaci=F3n usar=E1, ni siquiera hace falta que cambies de compilador para=
 tener kilombo: basta con que hayas compilado con distintas opciones de emp=
aquetamiento para que se rompa todo.</div>

<div><br></div><div>Ahora bien, fij=E1te el link y despu=E9s cont=E1me para=
 qu=E9 quer=E9s hacer esto.</div><div>Ni C ni C++ tienen inter=E9s desde di=
se=F1o en ser binary-compatible codes, para eso est=E1 Java y .net.<div><di=
v></div><div class=3D"h5">
<br><br><div class=3D"gmail_quote">
2012/3/30 Joaquin Duo <span dir=3D"ltr">&lt;<a href=3D"mailto:joaduo@gmail.=
com" target=3D"_blank">joa...@gmail.com</a>&gt;</span><br><blockquote class=
=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padd=
ing-left:1ex">
Hola Lista!<br>
Gracias por sus respuestas!<br><br>Dise=F1ando el sistema de plugins me han=
 surgido ciertas dudas.<br>Mi idea en el dise=F1o es que los plugins se pue=
dan compilar con diferentes compiladores, y que la compatibilidad con el si=
stema tenga larga duraci=F3n.<br>



En otras palabras, que no haga falta compilar nuevamente el plugin si cambi=
a el compilador.<br>Aunque no es un requisito fundamental me interesa saber=
 c=F3mo se comportan las compatibilidades entre compiladores.<br><br>1- Res=
pecto al name mangling:<br>



Tengo entendido que el name mangling cambia de un compilador a otro. Pero t=
ambi=E9n de una versi=F3n a otra, no?<br>No existe ahora un est=E1ndar que =
diga c=F3mo deber=EDa ser el name mangling?<br>S=ED o s=ED tengo que compil=
ar los plugins con la misma versi=F3n (o versiones cercanas) del compilador=
?<br>



Cu=E1les son los l=EDmites?<br><br>Suponiendo que evito el problema usando =
una funci=F3n de interface &#39;extern &quot;C&quot;&#39;.<br>Qu=E9 compati=
bilidad hay a nivel l=F3gico/de compilaci=F3n entre compiladores?<br><br>Su=
poniendo los siguientes pasos:<br>


1- ambos compiladores leen la misma definici=F3n de una clase.<br>
2- el n=FAcleo de la aplicaci=F3n es compilado con un compilador A, que usa=
 esa clase<br>3- el plugin es compilado con el compilador B, que usa la cla=
se.<br>4- el n=FAcleo carga la librer=EDa y recibe, luego de llamar una fun=
ci=F3n de la librer=EDa,  un puntero a la clase creada por B.<br>


Pueden haber incompatibilidades?<br><br>2- Respecto a RTTI:<br>Tengo las mi=
smas dudas que para las compatibilidades entre clases.<br>Qu=E9 sucede con =
el RTTI en diferentes compiladores? Hay incompatibilidades?<br><br>Espero q=
ue la pregunta sea interesante.<br>


Gracias desde ya!<br><font color=3D"#888888"><br>

<p></p>

-- <br>
=BFEres miembro de &quot;CyC++ Buenos Aires&quot; verdad? Si no lo eres, ha=
s recibido este mesaje por error. <br>
En caso de duda visita &quot;<a href=3D"http://groups.google.com/group/cppb=
a" target=3D"_blank">http://groups.google.com/group/cppba</a>&quot;</font><=
/blockquote></div><br><br clear=3D"all"><div><br></div></div></div><font co=
lor=3D"#888888">-- <br>
Who=92s got the sweetest disposition?<br>
One guess, that=92s who?<br>Who=92d never, ever start an argument?<br>Who n=
ever shows a bit of temperament?<br>Who&#39;s never wrong but always right?=
<br>Who&#39;d never dream of starting a fight?<br>Who get stuck with all th=
e bad luck? <br>


</font></div>
</blockquote></div><br><br clear=3D"all"><div><br></div>-- <br>Who=92s got =
the sweetest disposition?<br>One guess, that=92s who?<br>Who=92d never, eve=
r start an argument?<br>Who never shows a bit of temperament?<br>Who&#39;s =
never wrong but always right?<br>
Who&#39;d never dream of starting a fight?<br>Who get stuck with all the ba=
d luck? <br>
</div>

--f46d042fdd0221df1504bc6dd0ac--