[Bug c++/42870] [4.5 regression] __attribute__ ((dllexport)) produces broken linkage

jojelino at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Jan 26 22:02:00 GMT 2010



------- Comment #3 from jojelino at gmail dot com  2010-01-26 22:02 -------
Created an attachment (id=19719)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19719&action=view)
given __attribute__ ((visibility ("default")))

and test result
(given __attribute__ ((dllexport)) )
$ gcc test.cpp -shared -o test.dll -Wl,--out-implib,test.dll.a -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-pc-cygwin/4.5.0/lto-wrapper.exe
Target: i686-pc-cygwin
Configured with: ./configure --prefix=/usr --disable-win32-registry
--enable-thr
eads=posix --enable-languages=c,c++ --with-win32-nlsapi=unicode --enable-tls
--d
isable-bootstrap --enable-shared --disable-sjlj-exceptions
Thread model: posix
gcc version 4.5.0 20100126 (experimental) (GCC)
COLLECT_GCC_OPTIONS='-shared' '-o' 'test.dll' '-v' '-mtune=generic'
 /usr/libexec/gcc/i686-pc-cygwin/4.5.0/cc1plus.exe -quiet -v -D__CYGWIN32__
-D__
CYGWIN__ -Dunix -D__unix__ -D__unix -idirafter
/usr/lib/gcc/i686-pc-cygwin/4.5.0
/../../../../include/w32api -idirafter
/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../.
./../i686-pc-cygwin/lib/../../include/w32api test.cpp -quiet -dumpbase test.cpp
-mtune=generic -auxbase test -version -o /cygdrive/d/Temp/cache/ccyU7ymf.s
GNU C++ (GCC) version 4.5.0 20100126 (experimental) (i686-pc-cygwin)
        compiled by GNU C version 4.5.0 20100120 (experimental), GMP version
4.3
.1, MPFR version 2.4.1-p5, MPC version 0.8
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
ignoring duplicate directory
"/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../i686
-pc-cygwin/lib/../../include/w32api"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../include/c++/4.5.0
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../include/c++/4.5.0/i686-pc-cygwin
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../include/c++/4.5.0/backward
 /usr/local/include
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/include
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/include-fixed
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../i686-pc-cygwin/include
 /usr/include
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../include/w32api
End of search list.
GNU C++ (GCC) version 4.5.0 20100126 (experimental) (i686-pc-cygwin)
        compiled by GNU C version 4.5.0 20100120 (experimental), GMP version
4.3
.1, MPFR version 2.4.1-p5, MPC version 0.8
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: fb963511c7be306a48675197d8d9d6d7
COLLECT_GCC_OPTIONS='-shared' '-o' 'test.dll' '-v' '-mtune=generic'
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../i686-pc-cygwin/bin/as -o
/cygdriv
e/d/Temp/cache/ccbLebdC.o /cygdrive/d/Temp/cache/ccyU7ymf.s
COMPILER_PATH=/usr/libexec/gcc/i686-pc-cygwin/4.5.0/:/usr/libexec/gcc/i686-pc-cy
gwin/4.5.0/:/usr/libexec/gcc/i686-pc-cygwin/:/usr/lib/gcc/i686-pc-cygwin/4.5.0/:
/usr/lib/gcc/i686-pc-cygwin/:/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../i686-
pc-cygwin/bin/
LIBRARY_PATH=/usr/lib/gcc/i686-pc-cygwin/4.5.0/:/usr/lib/gcc/i686-pc-cygwin/4.5.
0/../../../../i686-pc-cygwin/lib/:/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../:/l
ib/:/usr/lib/
COLLECT_GCC_OPTIONS='-shared' '-o' 'test.dll' '-v' '-mtune=generic'
 /usr/libexec/gcc/i686-pc-cygwin/4.5.0/collect2.exe --wrap _Znwj --wrap _Znaj
--
wrap _ZdlPv --wrap _ZdaPv --wrap _ZnwjRKSt9nothrow_t --wrap _ZnajRKSt9nothrow_t
--wrap _ZdlPvRKSt9nothrow_t --wrap _ZdaPvRKSt9nothrow_t --shared -Bdynamic
--ena
ble-auto-image-base -e __cygwin_dll_entry@12 --dll-search-prefix=cyg -tsaware
-o
 test.dll /usr/lib/gcc/i686-pc-cygwin/4.5.0/crtbegin.o
-L/usr/lib/gcc/i686-pc-cy
gwin/4.5.0 -L/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../i686-pc-cygwin/lib
-L
/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../.. /cygdrive/d/Temp/cache/ccbLebdC.o
--o
ut-implib test.dll.a -lgcc_s -lgcc -lcygwin -luser32 -lkernel32 -ladvapi32
-lshe
ll32 -lgcc_s -lgcc /usr/lib/gcc/i686-pc-cygwin/4.5.0/crtend.o
Creating library file: test.dll.a

and for test2.dll

$ gcc test2.cpp -shared -o test2.dll -Wl,--out-implib,test2.dll.a -v -L. -ltest
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-pc-cygwin/4.5.0/lto-wrapper.exe
Target: i686-pc-cygwin
Configured with: ./configure --prefix=/usr --disable-win32-registry
--enable-thr
eads=posix --enable-languages=c,c++ --with-win32-nlsapi=unicode --enable-tls
--d
isable-bootstrap --enable-shared --disable-sjlj-exceptions
Thread model: posix
gcc version 4.5.0 20100126 (experimental) (GCC)
COLLECT_GCC_OPTIONS='-shared' '-o' 'test2.dll' '-v' '-L.' '-mtune=generic'
 /usr/libexec/gcc/i686-pc-cygwin/4.5.0/cc1plus.exe -quiet -v -D__CYGWIN32__
-D__
CYGWIN__ -Dunix -D__unix__ -D__unix -idirafter
/usr/lib/gcc/i686-pc-cygwin/4.5.0
/../../../../include/w32api -idirafter
/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../.
./../i686-pc-cygwin/lib/../../include/w32api test2.cpp -quiet -dumpbase
test2.cp
p -mtune=generic -auxbase test2 -version -o /cygdrive/d/Temp/cache/ccjQ1IbV.s
GNU C++ (GCC) version 4.5.0 20100126 (experimental) (i686-pc-cygwin)
        compiled by GNU C version 4.5.0 20100120 (experimental), GMP version
4.3
.1, MPFR version 2.4.1-p5, MPC version 0.8
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
ignoring duplicate directory
"/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../i686
-pc-cygwin/lib/../../include/w32api"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../include/c++/4.5.0
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../include/c++/4.5.0/i686-pc-cygwin
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../include/c++/4.5.0/backward
 /usr/local/include
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/include
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/include-fixed
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../i686-pc-cygwin/include
 /usr/include
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../include/w32api
End of search list.
GNU C++ (GCC) version 4.5.0 20100126 (experimental) (i686-pc-cygwin)
        compiled by GNU C version 4.5.0 20100120 (experimental), GMP version
4.3
.1, MPFR version 2.4.1-p5, MPC version 0.8
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: fb963511c7be306a48675197d8d9d6d7
COLLECT_GCC_OPTIONS='-shared' '-o' 'test2.dll' '-v' '-L.' '-mtune=generic'
 /usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../i686-pc-cygwin/bin/as -o
/cygdriv
e/d/Temp/cache/ccWB27cP.o /cygdrive/d/Temp/cache/ccjQ1IbV.s
COMPILER_PATH=/usr/libexec/gcc/i686-pc-cygwin/4.5.0/:/usr/libexec/gcc/i686-pc-cy
gwin/4.5.0/:/usr/libexec/gcc/i686-pc-cygwin/:/usr/lib/gcc/i686-pc-cygwin/4.5.0/:
/usr/lib/gcc/i686-pc-cygwin/:/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../i686-
pc-cygwin/bin/
LIBRARY_PATH=/usr/lib/gcc/i686-pc-cygwin/4.5.0/:/usr/lib/gcc/i686-pc-cygwin/4.5.
0/../../../../i686-pc-cygwin/lib/:/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../:/l
ib/:/usr/lib/
COLLECT_GCC_OPTIONS='-shared' '-o' 'test2.dll' '-v' '-L.' '-mtune=generic'
 /usr/libexec/gcc/i686-pc-cygwin/4.5.0/collect2.exe --wrap _Znwj --wrap _Znaj
--
wrap _ZdlPv --wrap _ZdaPv --wrap _ZnwjRKSt9nothrow_t --wrap _ZnajRKSt9nothrow_t
--wrap _ZdlPvRKSt9nothrow_t --wrap _ZdaPvRKSt9nothrow_t --shared -Bdynamic
--ena
ble-auto-image-base -e __cygwin_dll_entry@12 --dll-search-prefix=cyg -tsaware
-o
 test2.dll /usr/lib/gcc/i686-pc-cygwin/4.5.0/crtbegin.o -L.
-L/usr/lib/gcc/i686-
pc-cygwin/4.5.0
-L/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../../../i686-pc-cygwin/l
ib -L/usr/lib/gcc/i686-pc-cygwin/4.5.0/../../..
/cygdrive/d/Temp/cache/ccWB27cP.
o --out-implib test2.dll.a -ltest -lgcc_s -lgcc -lcygwin -luser32 -lkernel32
-la
dvapi32 -lshell32 -lgcc_s -lgcc /usr/lib/gcc/i686-pc-cygwin/4.5.0/crtend.o
Creating library file: test2.dll.a
/cygdrive/d/Temp/cache/ccWB27cP.o:test2.cpp:(.text+0x1e): undefined reference
to
 `__imp___ZN2SaD1Ev'
/cygdrive/d/Temp/cache/ccWB27cP.o:test2.cpp:(.text+0x64): undefined reference
to
 `__imp___ZN2SaD1Ev'
collect2: ld returned 1 exit status


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42870



More information about the Gcc-bugs mailing list