This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi, I currently experiment with the new -fvisibility options for gcc-3.4 and gcc-4.0. And i ran into problems with the basic_string headers. If i use std::string within a library that gets compiled with -fvisibility-inlines-hidden, ld is unable to link. lib.cpp: #include <string> int some_function( std::string const& do_something ) __attribute__ ((visibility("default"))); int some_function( std::string const& do_something ) { std::string another_string; return 0; } g++ -fPIC -fvisibility=hidden -fvisibility-inlines-hidden lib.cpp -c g++ -shared -fPIC -fvisibility=hidden -fvisibility-inlines-hidden lib.o -o liblib.so /usr/lib/gcc/x86_64-pc-linux-gnu/4.0.0/../../../../x86_64-pc-linux-gnu/bin/ld: lib.o: relocation R_X86_64_PC32 against `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()@@GLIBCXX_3.4' can not be used when making a shared object; recompile with -fPIC /usr/lib/gcc/x86_64-pc-linux-gnu/4.0.0/../../../../x86_64-pc-linux-gnu/bin/ld: final link failed: Bad value collect2: ld returned 1 exit status If i do not use the default constructor of std::string, it works fine. I noticed similar problems with the destructor and the std::allocator. It seems like a bad idea to use -fvisibility-inlines-hidden at all. The problem vanishes if I add __attribute__ ((visibility("default"))) to the symbols in the string headers. Other inline methods of my own code are not affected, this happens only in the libstdc++ headers. I noticed other parties having the same problem: http://groups.google.de/groups?q=relocation+R_X86_64_PC32+against+making+a+shared+object&hl=de&lr=&selm=ct12kj%242njo%241%40FreeBSD.csie.NCTU.edu.tw&rnum=2 http://bugs.gentoo.org/show_bug.cgi?id=78720 Is this a gcc bug? Or maybe some problem that occurs because the gcc-extern-export and the new visibility options collide? Regards Andreas Pokorny
Attachment:
pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |