Message-ID: <3BD6FAAA.6080402@edu.stadia.fi> From: Antti Koskipaa User-Agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.5) Gecko/20011011 X-Accept-Language: en-us MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: Weird behaviour of the C++ compiler. Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Lines: 70 Date: Wed, 24 Oct 2001 20:30:18 +0300 NNTP-Posting-Host: 212.38.225.12 X-Trace: uutiset.nic.fi 1003944597 212.38.225.12 (Wed, 24 Oct 2001 20:29:57 EET DST) NNTP-Posting-Date: Wed, 24 Oct 2001 20:29:57 EET DST Organization: NIC Tietoverkot Oy - NIC Data Networks Ltd. To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Hi. I was trying C++ with DJGPP the other day. The compiler accepts the input file, and passes it to the assembler. The assembler chokes on it. I'm not a pro in C++, only C so I can't really tell whether the compiler or code has the error. Here are some of the ~90 error messages I get: c:\source>gcc -c hello.cpp Z:\ccSMxCUe.s: Assembler messages: Z:\ccSMxCUe.s:2718: Error: Too many new sections; can't add ".gnu.linkonce.t._ZNSsD1Ev" Z:\ccSMxCUe.s:2804: Error: Too many new sections; can't add ".gnu.linkonce.t._ZNSsD1Ev" Z:\ccSMxCUe.s:2805: Error: Too many new sections; can't add ".gnu.linkonce.t._ZNSsaSERKSs" Z:\ccSMxCUe.s:2826: Error: Too many new sections; can't add ".gnu.linkonce.t._ZNKSt8numpunctIcE9falsenameEv" Z:\ccSMxCUe.s:2856: Error: Too many new sections; can't add ".gnu.linkonce.t._ZNKSt8numpunctIcE13thousands_sepEv" Z:\ccSMxCUe.s:2880: Error: Too many new sections; can't add ".gnu.linkonce.t._ZNKSt8numpunctIcE13decimal_pointEv" etc. When compiling with gcc -S hello.cpp, the resulting asm file is over 7000 lines long! Now I knew that C++ had something to do with "bloat", but this is ridiculous... Here's the source: (and yes, it pretty useless...) // The hard way to say hello... #include class HelloWorld { private: char *HelloWorldStr; public: void SayIt (); HelloWorld (); ~HelloWorld (); }; HelloWorld::HelloWorld () { HelloWorldStr = new char[20]; strcpy (HelloWorldStr, "Hello, World!"); } HelloWorld::~HelloWorld () { delete[] HelloWorldStr; } void HelloWorld::SayIt () { cout << HelloWorldStr << endl; } int main () { HelloWorld* Hello = new HelloWorld; Hello->SayIt (); delete Hello; return 0; } -- - Antti