[LLVMbugs] [Bug 21896] New: clang-cl: Implement /Gs compiler switch

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Dec 12 08:14:10 PST 2014


http://llvm.org/bugs/show_bug.cgi?id=21896

            Bug ID: 21896
           Summary: clang-cl: Implement /Gs compiler switch
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: Driver
          Assignee: unassignedclangbugs at nondot.org
          Reporter: clangbugs.10.mdwxzxkl at spamgourmet.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

The /Gs compiler switch is ignored by clang-cl:

1>clang-cl.exe : warning : argument unused during compilation: '/Gs0x7fffffff'
1>...
1>main.obj : error LNK2019: unresolved external symbol __chkstk referenced in
function "int __cdecl mainCRTStartup(void)" (?mainCRTStartup@@YAHXZ)

The /Gs compiler switch is needed to suppress calls to __chkstk (the stack
probing function used by MSVC), e.g. when one carefully uses stack memory so
that all necessary stack probes are initiated, or when compiling with
/NODEFAULTLIB (as __chkstk would then be undefined). 

One workaround could be to forward /Gs0x7fffffff or /Gs2147483647 (the maximum
value for /Gs, which is the recommended way to suppress all __chkstk() calls)
to -mno-stack-arg-probe. Currently a /Gs value of 4096 seems to be hardcoded in
LLVM:

http://llvm.org/klaus/llvm/blob/master/lib/Target/X86/X86FrameLowering.cpp#L-709

Specifying -mno-stack-arg-probe will probably set UseStackProbe to false.

Reference:
http://msdn.microsoft.com/en-us/library/9598wk25

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20141212/8229e0eb/attachment.html>


More information about the llvm-bugs mailing list