From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6102 invoked by alias); 8 Apr 2011 08:53:03 -0000 Received: (qmail 6088 invoked by uid 22791); 8 Apr 2011 08:53:01 -0000 X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,TW_CX,TW_GC,TW_JL,TW_LG X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 08 Apr 2011 08:52:54 +0000 From: "blakawk at gentooist dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug boehm-gc/48514] New: [4.6] boehm gc incorrectly compile using __declspec(dllexport) on i686-w64-mingw32 target X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: boehm-gc X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: blakawk at gentooist dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Fri, 08 Apr 2011 08:53:00 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2011-04/txt/msg00849.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48514 Summary: [4.6] boehm gc incorrectly compile using __declspec(dllexport) on i686-w64-mingw32 target Product: gcc Version: 4.6.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: boehm-gc AssignedTo: unassigned@gcc.gnu.org ReportedBy: blakawk@gentooist.com When trying to build a cross compiler for i686-w64-mingw32 target, the boehm-gc library is built with __declspec(dllexport) while --disable-shared was specified on the command line, which leads to programs linked with resulting GCJ failing to link with undefined references to ___imp_GC functions. The build should instead define GC_NOT_DLL when building the GC static library to avoid theses link failures. The error encountered was: # i686-w64-mingw32-gcj -v -o HelloWorldJava.exe HelloWorld.java --main=HelloWorld Using built-in specs. Reading specs from /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/libgcj.spec rename spec startfile to startfileorig rename spec lib to liborig COLLECT_GCC=i686-w64-mingw32-gcj COLLECT_LTO_WRAPPER=/home/users_csee/parizet/test/root/bin/../libexec/gcc/i686-w64-mingw32/4.6.1/lto-wrapper Target: i686-w64-mingw32 Configured with: ../../sources/gcc-4.6-20110401/configure --prefix=/users_csee/parizet/test/root --with-sysroot=/users_csee/parizet/test/root --disable-multilib --with-mpfr=/users_csee/parizet/test/root --with-mpc=/users_csee/parizet/test/root --with-gmp=/users_csee/parizet/test/root --disable-shared --enable-threads=win32 --disable-tls --disable-__cxa_atexit --enable-languages=c,c++,java --enable-libssp --disable-win32-registry --disable-nls --disable-lto --enable-libgcj --enable-sjlj-exceptions --target=i686-w64-mingw32 --build=i386-redhat-linux Thread model: win32 gcc version 4.6.1 20110401 (prerelease) (GCC) COLLECT_GCC_OPTIONS='-fsaw-java-file' '-v' '-o' 'HelloWorldJava.exe' '-fbootclasspath=./:/home/users_csee/parizet/test/root/bin/../lib/gcc/../../share/java/libgcj-4.6.1.jar' '-g1' '-mtune=generic' '-march=pentiumpro' /home/users_csee/parizet/test/root/bin/../libexec/gcc/i686-w64-mingw32/4.6.1/ecj1 HelloWorld.java -g1 -fbootclasspath=./:/home/users_csee/parizet/test/root/bin/../lib/gcc/../../share/java/libgcj-4.6.1.jar -g1 -fsource=1.5 -ftarget=1.5 -fzip-dependency /tmp/cckS7y6u.zip -fzip-target /tmp/ccmUv52P.jar COLLECT_GCC_OPTIONS='-fsaw-java-file' '-v' '-o' 'HelloWorldJava.exe' '-fbootclasspath=./:/home/users_csee/parizet/test/root/bin/../lib/gcc/../../share/java/libgcj-4.6.1.jar' '-g1' '-mtune=generic' '-march=pentiumpro' /home/users_csee/parizet/test/root/bin/../libexec/gcc/i686-w64-mingw32/4.6.1/jc1 /tmp/ccmUv52P.jar -fsource-filename=HelloWorld.java -fhash-synchronization -fuse-divide-subroutine -fcheck-references -fuse-boehm-gc -fnon-call-exceptions -fkeep-inline-functions -quiet -dumpbase HelloWorld.java -mtune=generic -march=pentiumpro -auxbase HelloWorld -g1 -version -fsaw-java-file -fbootclasspath=./:/home/users_csee/parizet/test/root/bin/../lib/gcc/../../share/java/libgcj-4.6.1.jar -faux-classpath /tmp/cckS7y6u.zip -o /tmp/ccJNzi4m.s GNU Java (GCC) version 4.6.1 20110401 (prerelease) (i686-w64-mingw32) compiled by GNU C version 4.1.2 20080704 (Red Hat 4.1.2-48), GMP version 5.0.1, MPFR version 3.0.1, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU Java (GCC) version 4.6.1 20110401 (prerelease) (i686-w64-mingw32) compiled by GNU C version 4.1.2 20080704 (Red Hat 4.1.2-48), GMP version 5.0.1, MPFR version 3.0.1, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Class path starts here: /tmp/cckS7y6u.zip/ (zip) ./ (system) /home/users_csee/parizet/test/root/bin/../lib/gcc/../../share/java/libgcj-4.6.1.jar/ (system) (zip) COLLECT_GCC_OPTIONS='-fsaw-java-file' '-v' '-o' 'HelloWorldJava.exe' '-fbootclasspath=./:/home/users_csee/parizet/test/root/bin/../lib/gcc/../../share/java/libgcj-4.6.1.jar' '-g1' '-mtune=generic' '-march=pentiumpro' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/bin/as -o /tmp/ccqpxrJW.o /tmp/ccJNzi4m.s COLLECT_GCC_OPTIONS='-fsaw-java-file' '-v' '-o' 'HelloWorldJava.exe' '-fbootclasspath=./:/home/users_csee/parizet/test/root/bin/../lib/gcc/../../share/java/libgcj-4.6.1.jar' '-g1' '-mtune=generic' '-march=pentiumpro' /home/users_csee/parizet/test/root/bin/../libexec/gcc/i686-w64-mingw32/4.6.1/jvgenmain HelloWorldmain /tmp/ccBkLRxw.i COLLECT_GCC_OPTIONS= '-v' '-o' 'HelloWorldJava.exe' '-g1' '-mtune=generic' '-march=pentiumpro' /home/users_csee/parizet/test/root/bin/../libexec/gcc/i686-w64-mingw32/4.6.1/cc1 /tmp/ccBkLRxw.i -quiet -dumpbase HelloWorldmain.c -mtune=generic -march=pentiumpro -g1 -version -fdollars-in-identifiers -o /tmp/ccJNzi4m.s GNU C (GCC) version 4.6.1 20110401 (prerelease) (i686-w64-mingw32) compiled by GNU C version 4.1.2 20080704 (Red Hat 4.1.2-48), GMP version 5.0.1, MPFR version 3.0.1, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU C (GCC) version 4.6.1 20110401 (prerelease) (i686-w64-mingw32) compiled by GNU C version 4.1.2 20080704 (Red Hat 4.1.2-48), GMP version 5.0.1, MPFR version 3.0.1, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 393b96e33d8c030f489e8d94e734813a COLLECT_GCC_OPTIONS= '-v' '-o' 'HelloWorldJava.exe' '-g1' '-mtune=generic' '-march=pentiumpro' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/bin/as -o /tmp/ccAFjqT9.o /tmp/ccJNzi4m.s COMPILER_PATH=/home/users_csee/parizet/test/root/bin/../libexec/gcc/i686-w64-mingw32/4.6.1/:/home/users_csee/parizet/test/root/bin/../libexec/gcc/:/home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/bin/ LIBRARY_PATH=/home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/:/home/users_csee/parizet/test/root/bin/../lib/gcc/:/home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/:/home/users_csee/parizet/test/root/bin/../../root/mingw/lib/../lib/:/home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/:/home/users_csee/parizet/test/root/bin/../../root/mingw/lib/ COLLECT_GCC_OPTIONS= '-v' '-o' 'HelloWorldJava.exe' '-g1' '-mtune=generic' '-march=pentiumpro' /home/users_csee/parizet/test/root/bin/../libexec/gcc/i686-w64-mingw32/4.6.1/collect2 --sysroot=/home/users_csee/parizet/test/root/bin/../../root -m i386pe -Bdynamic -o HelloWorldJava.exe /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/crt2.o /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/crtbegin.o -L/home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1 -L/home/users_csee/parizet/test/root/bin/../lib/gcc -L/home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib -L/home/users_csee/parizet/test/root/bin/../../root/mingw/lib/../lib -L/home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib -L/home/users_csee/parizet/test/root/bin/../../root/mingw/lib /tmp/ccAFjqT9.o /tmp/ccqpxrJW.o -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -lgcj-noncore -lgcj -lm -lgdi32 -lws2_32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/crtend.o /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(natObject.o): In function `alloc_heavy': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/java/lang/natObject.cc:835: undefined reference to `__imp__GC_register_finalizer_no_order' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(natObject.o): In function `heavy_lock_obj_finalization_proc': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/java/lang/natObject.cc:713: undefined reference to `__imp__GC_register_finalizer_no_order' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(natObject.o): In function `remove_all_heavy': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/java/lang/natObject.cc:767: undefined reference to `__imp__GC_register_finalizer_no_order' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(link.o): In function `_ZN10_Jv_Linker14wait_for_stateEPN4java4lang5ClassEi': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/link.cc:2022: undefined reference to `__imp__GC_base' /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/link.cc:2022: undefined reference to `__imp__GC_base' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(link.o): In function `_ZN10_Jv_Linker18resolve_pool_entryEPN4java4lang5ClassEib': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/link.cc:401: undefined reference to `__imp__GC_base' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Jv_AllocBytes': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:312: undefined reference to `__imp__GC_malloc_atomic' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z14_Jv_AllocArrayiPN4java4lang5ClassE': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:367: undefined reference to `__imp__GC_malloc' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z15_Jv_AllocRawObji': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:380: undefined reference to `__imp__GC_malloc' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z24_Jv_ClosureListFinalizerv': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:403: undefined reference to `__imp__GC_register_finalizer_unreachable' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z21_Jv_RegisterFinalizerPvPFvPN4java4lang6ObjectEE': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:421: undefined reference to `__imp__GC_register_finalizer_no_order' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z17_Jv_RunFinalizersv': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:427: undefined reference to `__imp__GC_invoke_finalizers' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z9_Jv_RunGCv': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:439: undefined reference to `__imp__GC_gcollect' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z17_Jv_GCTotalMemoryv': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:445: undefined reference to `__imp__GC_get_heap_size' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z16_Jv_GCFreeMemoryv': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:451: undefined reference to `__imp__GC_get_free_bytes' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z24_Jv_GCSetInitialHeapSizej': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:457: undefined reference to `__imp__GC_get_heap_size' /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:459: undefined reference to `__imp__GC_expand_hp' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z24_Jv_GCSetMaximumHeapSizej': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:465: undefined reference to `__imp__GC_set_max_heap_size' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z25_Jv_SetGCFreeSpaceDivisori': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:471: undefined reference to `__imp__GC_set_free_space_divisor' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z10_Jv_InitGCv': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:526: undefined reference to `__imp__GC_all_interior_pointers' /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:541: undefined reference to `__imp__GC_oom_fn' /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:543: undefined reference to `__imp__GC_java_finalization' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z26_Jv_GCInitializeFinalizersPFvvE': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:600: undefined reference to `__imp__GC_finalize_on_demand' /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:601: undefined reference to `__imp__GC_finalizer_notifier' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(boehm.o): In function `_Z30_Jv_GCRegisterDisappearingLinkPPN4java4lang6ObjectE': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:610: undefined reference to `__imp__GC_base' /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/boehm.cc:611: undefined reference to `__imp__GC_general_register_disappearing_link' /home/users_csee/parizet/test/root/bin/../lib/gcc/i686-w64-mingw32/4.6.1/../../../../i686-w64-mingw32/lib/../lib/libgcj.a(win32-threads.o): In function `_Z15_Jv_ThreadStartPN4java4lang6ThreadEP12_Jv_Thread_tPFvS2_E': /users_csee/parizet/test/builds/gcc/i686-w64-mingw32/libjava/../../../../sources/gcc-4.6-20110401/libjava/win32-threads.cc:393: undefined reference to `__imp__GC_CreateThread@24' collect2: ld returned 1 exit status The program used was: file "HelloWorld.java": > public class HelloWorld{ > public static void main(String[] args) { > System.out.println("Hello World!"); > } > }