D issues are now tracked on GitHub. This Bugzilla instance remains as a read-only archive.
Issue 10631 - Module import pull lots of symbols
Summary: Module import pull lots of symbols
Status: RESOLVED WORKSFORME
Alias: None
Product: D
Classification: Unclassified
Component: dmd (show other issues)
Version: D2
Hardware: All All
: P2 regression
Assignee: No Owner
URL:
Keywords: link-failure
Depends on:
Blocks:
 
Reported: 2013-07-13 08:45 UTC by Denis Shelomovskii
Modified: 2013-09-15 18:19 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description Denis Shelomovskii 2013-07-13 08:45:08 UTC
This code used to work allowing usage of stuff like `min` where no D runtime functions are used:
---
import std.algorithm;

extern(C) void main()
{ }
---

Current OPTLINK output:
---
OPTLINK (R) for Win32  Release 8.00.13
Copyright (C) Digital Mars 1989-2010  All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined __d_arrayappendT
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D12TypeInfo_Aya6__initZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined __d_throwc
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std3utf12isValidDcharFNaNbNfwZb
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std3utf12UTFException7__ClassZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined __d_newclass
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std3utf7__arrayZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std3utf12UTFException6__ctorMFNaNfAyakAyakC6object9ThrowableZC3std3utf12UTFException
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std3utf6encodeFNaNfKG4awZk
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std4conv7__arrayZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std6format7__arrayZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std5array7__arrayZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined __d_allocmemory
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D16TypeInfo_Pointer6__vtblZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D15TypeInfo_Struct6__vtblZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined __d_newitemT
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D4core6memory2GC6qallocFNaNbkkZS4core6memory8BlkInfo_
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D4core6memory2GC6extendFNaNbPvkkZk
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined __d_arraycopy
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std6format15FormatException6__ctorMFNaNbNfAyaAyakC6object9ThrowableZC3std6format15FormatException
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std6format15FormatException7__ClassZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D11TypeInfo_Aa6__initZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined __d_arraysetcapacity
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std4conv13ConvException6__ctorMFNaNbNfAyaAyakZC3std4conv13ConvException
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std4conv13ConvException7__ClassZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std4conv21ConvOverflowException6__ctorMFNaNbNfAyaAyakZC3std4conv21ConvOverflowException
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std4conv21ConvOverflowException7__ClassZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std5ascii7isDigitFNaNbNfwZb
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined __adDupT
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D14TypeInfo_Array6__vtblZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D10TypeInfo_a6__initZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D14TypeInfo_Const6__vtblZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D9Exception7__ClassZ
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D6object9Exception6__ctorMFNaNbNfAyaAyakC6object9ThrowableZC9Exception
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std9exception7bailOutFNaNfAyakxAaZv
Release\test_d2.obj(test_d2) 
 Error 42: Symbol Undefined _D3std9algorithm12__ModuleInfoZ
--- errorlevel 36
---
(`betterC` flag removes one undefined symbol)

This forces one to copy/paste all the functionality for runtime-less applications.
Comment 1 Kenji Hara 2013-09-11 19:36:36 UTC
Maybe this is a dup of bug 10441.
http://d.puremagic.com/issues/show_bug.cgi?id=10441#c11
Comment 2 Kenji Hara 2013-09-15 18:19:45 UTC
(In reply to comment #1)
> Maybe this is a dup of bug 10441.
> http://d.puremagic.com/issues/show_bug.cgi?id=10441#c11

By merging https://github.com/D-Programming-Language/dmd/pull/2550, now the link-failures are disappeared.