🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: ee.prog
Article #71

Re: GCC 3 ja libstdc++.so

#71
From: Rene Prillop
Date: Fri, 08 Nov 2002 11:35
117 lines
5044 bytes
Toomas Kiisk wrote:
> On Thu, 7 Nov 2002, Rene Prillop wrote:
> No tore siis, aga sellega o nyyd na"htavasti lo~pp.
> Kuni ta"naseni ei oleks mina vist kyll uneski osanud sellise asja
> peale tulla, et yritada C++ koodi C kompilaatoriga kompileerida ... oh
> ajad, majad jmt. Erinevad keeled ju, linkimise tasandil isegi ysna
> po~hjalikult erinevad. Nagu siga ja ka"gu.
> 
Mina t�mbaks pigem paralleele g++ ja m�ne teise kompilaatori "force c++ 
compilation" lipukesega.
g++ v�ttis juba 2.x puhul libstdc++.so k�lge ning selle kasutamine on 
seet�ttu minu vaatenurgast t�iesti m�ttetu.

Hetkel ei meenu mulle mitte �htki kompilaatoripaketti, mis n�uaks 
kasutajalt erineva kompilaatori seadmist c ja cpp failidele.

Igatahes veetsin natuke produktiivset aega gcc 3 seltsis ja all on 
lyhike programm, mis probleemi reprob.
------------------------------------------------
gcc3test.cpp:

#include <stdio.h>
#include <dlfcn.h>
#include <string.h>
#include <stdlib.h>

class CTest{
public:
         CTest(char *lpszText){
                 m_lpszText=(char *)malloc(strlen(lpszText)+1);
                 strcpy(m_lpszText, lpszText);
         }
         ~CTest() {
                 free(m_lpszText);
         }
protected:
         char *m_lpszText;
};

extern "C" int GCC3Fun(){
// Comment next line out to get rid of seg fault...
         static const CTest Test("1234");
         printf("In GCC3Fun\n");
         return 0;
}

#if defined (MAIN)
int main(int argc, char *argv[])
{
         int (*pGCC3Fun)();
         try{
                 throw 1;
         }catch(...){
                 printf("Catch OK\n");
         }
         if (argc>1){
                 printf("Step 1\n");
                 void *pDynLib=dlopen("./libgcc3test.so", RTLD_LAZY);
                 printf("Step 2\n");
                 pGCC3Fun=(int (*)())dlsym(pDynLib, "GCC3Fun");
                 printf("Step 3\n");
                 (*pGCC3Fun)();
                 printf("Step 4\n");
                 dlclose(pDynLib);
                 printf("Step 5\n");
         }
         else{
                 printf("Step 1\n");
                 pGCC3Fun=GCC3Fun;
                 (*pGCC3Fun)();
                 printf("Step 2\n");
         }
         return 0;
}
#endif
------------------------------------------------
Makefile:
CC=g++
FLAGS=-O3

all:
         $(CC) $(FLAGS) -shared -o libgcc3test.so gcc3test.cpp
         $(CC) $(FLAGS) -DMAIN -o gcc3test.bin gcc3test.cpp -ldl
------------------------------------------------
Output:
[prr@localhost c]$ make
g++ -O3 -shared -o libgcc3test.so gcc3test.cpp
g++ -O3 -DMAIN -o gcc3test.bin gcc3test.cpp -ldl
[prr@localhost c]$ ./gcc3test.bin
Step 1
In GCC3Fun
Step 2
[prr@localhost c]$ ./gcc3test.bin x
Step 1
Step 2
Step 3
In GCC3Fun
Step 4
Step 5
Segmentation fault
[prr@localhost c]$ gcc -v
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/specs
Configured with: ../gcc-3.2/configure
Thread model: posix
gcc version 3.2
------------------------------------------------

Masinaks oli RedHat 7.3.
Suures testimistuhinas proovisin sama koodi yhel RH 8 masinal, kus 
crashi ei tekkinud. Samal masinal funkas ka gcc nii nagu enne, st oskas 
cpp koodi normaalselt kompileerida. Ainult et libstdc++ tuleb erinevalt 
varasemast k�lge linkida.

Niiet v�imalik, et tegelt on s��dlane hoopist�kkis RH73, ehk �igemini 
inime, kes selle kehvasti konfind on.

PRR
Technical Details
Message-ID: <3DCBA17B.6080506@tac.ee>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!sn-xit-06!sn-xit-04!supernews.com!newsfeed.gamma.ru!Gamma.RU!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed1.ulv.nextra.no!nextra.com!uio.no!newsfeed1.funet.fi!newsfeeds.funet.fi!newsfeed.uninet.ee!news.ut.ee!not-for-mail
References: <3DC905E8.4030707@tac.ee> <Pine.GSO.4.44.0211062136300.26245-100000@math.ut.ee> <Pine.WNT.4.44.0211071145470.428-100000@viluvere.itsise> <3DCA4542.6020408@tac.ee> <Pine.GSO.4.44.0211071635320.26526-100000@math.ut.ee> <3DCA8832.7060205@tac.ee> <Pine.GSO.4.44.0211071957140.17785-100000@math.ut.ee>

Show Full Headers
Complete Article Headers
X-Google-Language: ESTONIAN,CP1257
X-Google-Thread: 1063a5,9e9f472a45e0a698
X-Google-Attributes: gid1063a5,public
X-Google-Thread: f8b3f,9e9f472a45e0a698
X-Google-Attributes: gidf8b3f,public
X-Google-ArrivalTime: 2002-11-08 03:44:06 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!sn-xit-06!sn-xit-04!supernews.com!newsfeed.gamma.ru!Gamma.RU!news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed1.ulv.nextra.no!nextra.com!uio.no!newsfeed1.funet.fi!newsfeeds.funet.fi!newsfeed.uninet.ee!news.ut.ee!not-for-mail
From: Rene Prillop <prr@tac.ee>
Newsgroups: ee.prog,ee.arvutid.unix
Subject: Re: GCC 3 ja libstdc++.so
Date: Fri, 08 Nov 2002 13:35:23 +0200
Lines: 118
Distribution: Estonia
Message-ID: <3DCBA17B.6080506@tac.ee>
References: <3DC905E8.4030707@tac.ee> <Pine.GSO.4.44.0211062136300.26245-100000@math.ut.ee> <Pine.WNT.4.44.0211071145470.428-100000@viluvere.itsise> <3DCA4542.6020408@tac.ee> <Pine.GSO.4.44.0211071635320.26526-100000@math.ut.ee> <3DCA8832.7060205@tac.ee> <Pine.GSO.4.44.0211071957140.17785-100000@math.ut.ee>
NNTP-Posting-Host: tln-yksik-paastekomp-gw.estpak.ee
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: kadri.ut.ee 1036755382 23235 194.126.102.178 (8 Nov 2002 11:36:22 GMT)
X-Complaints-To: usenet@kadri.ut.ee
NNTP-Posting-Date: Fri, 8 Nov 2002 11:36:22 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.1) Gecko/20020826
X-Accept-Language: en-us, en