Skip to content

Standard libraries not included when using MinGW-w64 GCC #2627

@brechtsanders

Description

@brechtsanders

I built c3c entirely from scratch on Windows using MinGW-w64+GCC (under the MSYS2 shell).
But then, when I try to compile a simple C3 test using flags --cc gcc --linker=custom gcc I see the following issues:

  • the specified linker is not used (lld-link is used instead of gcc)
  • there are undefined symbols related to the standard libraries (maybe due to the above issue)
echo -e "import std::io;\nfn void main()\n{\nio::printn(\"Hello world!\");\n}" | 
 c3c compile - --cc gcc --linker=custom gcc
lld-link: error: <root>: undefined symbol: mainCRTStartup
lld-link: error: undefined symbol: _tls_index
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\collections\list.c3:370
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std_collections_list.std.os.backtrace.Backtrace.obj:(std_collections_list$std.os.backtrace.Backtrace$.List.ensure_capacity)
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\collections\list.c3:372
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std_collections_list.std.os.backtrace.Backtrace.obj:(std_collections_list$std.os.backtrace.Backtrace$.List.ensure_capacity)
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\exception.c3:138
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.exception_handler)
>>> referenced 22 more times

lld-link: error: undefined symbol: __security_cookie
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\exception.c3:134
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.exception_handler)
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:182
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.resolve_backtrace)
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\io\formatter_private.c3:211
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.io.obj:(std.io.Formatter.floatformat)
>>> referenced 4 more times

lld-link: error: undefined symbol: __security_check_cookie
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\exception.c3:172
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.exception_handler)
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\exception.c3:174
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.exception_handler)
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:190
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.resolve_backtrace)
>>> referenced 51 more times

lld-link: error: undefined symbol: SetUnhandledExceptionFilter
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\exception.c3:185
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.init_exception_handler)

lld-link: error: undefined symbol: memset
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:170
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.symbolize_backtrace)
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:184
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.resolve_backtrace)
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:192
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.resolve_backtrace)
>>> referenced 13 more times

lld-link: error: undefined symbol: GetCurrentProcess
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:172
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.symbolize_backtrace)

lld-link: error: undefined symbol: SymInitialize
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:173
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.symbolize_backtrace)

lld-link: error: undefined symbol: SymCleanup
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:174
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.symbolize_backtrace)

lld-link: error: undefined symbol: SymFromAddr
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:188
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.resolve_backtrace)

lld-link: error: undefined symbol: SymGetModuleInfo64
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:194
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.resolve_backtrace)

lld-link: error: undefined symbol: UnDecorateSymbolName
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:200
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.resolve_backtrace)

lld-link: error: undefined symbol: SymGetLineFromAddr64
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\win32\process.c3:205
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.win32.obj:(std.os.win32.resolve_backtrace)

lld-link: error: undefined symbol: RtlCaptureStackBackTrace
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\os\backtrace.c3:81
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.os.backtrace.obj:(std.os.backtrace.capture_current)

lld-link: error: undefined symbol: _fltused
>>> referenced by R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.math.math_rt.obj
>>> referenced by R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.math.obj
>>> referenced by R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.io.obj

lld-link: error: undefined symbol: _get_errno
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\libc\libc.c3:44
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\libc.obj:(libc.errno)

lld-link: error: undefined symbol: _fseeki64
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\io\os\file_libc.c3:54
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.io.os.obj:(std.io.os.native_fseek)

lld-link: error: undefined symbol: _ftelli64
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\io\os\file_libc.c3:60
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.io.os.obj:(std.io.os.native_ftell)

lld-link: error: undefined symbol: fwrite
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\io\os\file_libc.c3:66
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.io.os.obj:(std.io.os.native_fwrite)

lld-link: error: undefined symbol: fputc
>>> referenced by C:\Prog\winlibs14.2.0msvcrt\custombuilt64\lib\c3\std\io\os\file_libc.c3:71
>>>               R:\winlibs14.2.0msvcrt64\_TMP_\c3c4331.tmp\obj\windows-x64\std.io.os.obj:(std.io.os.native_fputc)

lld-link: error: too many errors emitted, stopping now (use /errorlimit:0 to see all errors)
Failed to create an executable: (null)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions