[LLVMbugs] [Bug 9213] New: Static initializers (C++) are not called with Microsoft Visual Studio Linker

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sun Feb 13 21:10:02 PST 2011


           Summary: Static initializers (C++) are not called with
                    Microsoft Visual Studio Linker
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Windows NT
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Linker
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: art.oriented at gmail.com
                CC: llvmbugs at cs.uiuc.edu

Static initializers in C++, defined by @llvm.global_ctors are not called when
object files are linked by MSVC linker. I've attached a simple test file. Other
tool chains (MinGW gcc) are okay in Windows.

The attached file should print out:

I'm unclear which component is culprit for this bug. Please move this bug
reporting if better component section fits.

[1] MSVC C++ - Okay
>cl ctor.cpp  (Calling MSVC C++ compiler and linker)

[2] MinGW-gcc - Okay
>gcc ctor.cpp -o ctor.exe (MinGW gcc)

[3] MinGW-llvm-gcc - Okay
>llvm-gcc ctor.cpp -o ctor.exe (MinGW gcc)
Z:\dev\MinGW\bin/ld.exe: Warning: type of symbol `_main' changed from 32 to 512
in R:\temp/ccMNSXGt.o


[4] Clang - NOT okay (Clang will call MSVC's "link.exe")
>clang ctor.cpp -o ctor.exe
===> Static initializer wasn't called.

>clang ctor.cpp -c -o ctor.o
>gcc -o ctor.exe ctor.o

===> However, linking with gcc's is okay.

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list