On processors for D ~ decoupling

Derek Parnell derek at psych.ward
Thu Apr 6 16:42:16 PDT 2006


On Thu, 06 Apr 2006 13:52:08 -0700, Walter Bright wrote:


>> Instead of adding a duplicate itoa() method (about 60 bytes of code), or 
>> perhaps linking to the C library version, TypeInfo gratuitously imports 
>> std.string and all its vast array of baggage. Heck, everyone makes 
>> mistakes, but your comment above indicates you feel this kind of tight 
>> coupling is perfectly fine?
> 
> Although there is a lot of code in std.string, unreferenced free 
> functions in it should be discarded by the linker. A check of the 
> generated .map file should verify this - it is certainly supposed to 
> work that way. One problem Java has is that there are no free functions, 
> so referencing one function wound up pulling in every part of the class 
> the function resided in.

The following program ...

  void main() {}

linked in the following modules (from the .map file)

----------------
??0RTLHeap@@QAE at XZ
??0RTLHeapBlock@@QAE at IAAV0@@Z
??0RTLHeapBlock@@QAE at XZ
??0RTLHeapBlockHeader@@QAE at I@Z
??0RTLMultiPool@@QAE at II@Z
??0RTLPool@@QAE at II@Z
??0Type_info@@AAA at ABV0@@Z
??0bad_cast at std@@QAE at ABV01@@Z
??0bad_cast at std@@QAE at XZ
??0exception at std@@QAE at XZ
??0type_info at std@@IAE at XZ
??1RTLMultiPool@@QAE at XZ
??1Type_info@@UAA at XZ
??1__eh_cv@@QAE at XZ
??1bad_cast at std@@UAE at XZ
??1bad_exception at std@@UAE at XZ
??1bad_typeid at std@@UAE at XZ
??1exception at std@@UAE at XZ
??1type_info at std@@UAA at XZ
??2 at YAPAXI@Z
??3 at YAXPAX@Z
??_GType_info@@UAEPAXI at Z
??_Gbad_cast at std@@UAEPAXI at Z
??_Gbad_exception at std@@UAEPAXI at Z
??_Gbad_typeid at std@@UAEPAXI at Z
??_Gexception at std@@UAEPAXI at Z
??_Gtype_info at std@@UAEPAXI at Z
??_QType_info@@6B@
??_Qbad_cast at std@@6B@
??_Qbad_exception at std@@6B@
??_Qbad_typeid at std@@6B@
??_Qexception at std@@6B@
??_Qtype_info at std@@6B@
?Alloc at RTLHeap@@QAEPAXK at Z
?Alloc at RTLMultiPool@@QAEPAXK at Z
?Alloc at RTLPool@@QAEPAXXZ
?Claim at RTLHeapBlock@@QAEHI at Z
?CreateMainHeap at RTLHeap@@SAXXZ
?CreateMainHeap at RTLMultiPool@@SAXXZ
?FixSize at RTLHeap@@AAEII at Z
?Free at RTLHeap@@QAEXPAX at Z
?Free at RTLMultiPool@@QAEXPAX at Z
?Free at RTLPool@@QAEXPAX at Z
?GetNext at RTLHeapBlock@@QAEAAV1 at XZ
?Handle_VC_Exception@@YAPAUEhstack@@PAU_EXCEPTION_RECORD@@H at Z
?InsertAfter at RTLHeapBlock@@QAEXAAV1@@Z
?MergeBackward at RTLHeapBlock@@QAEHXZ
?MergeForward at RTLHeapBlock@@QAEHXZ
?MoreCore at RTLHeap@@AAEPAVRTLHeapBlock@@I at Z
?Realloc at RTLHeap@@QAEPAXPAXK at Z
?Realloc at RTLMultiPool@@QAEPAXPAXK at Z
?Reclaim at RTLHeapBlock@@QAEHIAAV1@@Z
?Remove at RTLHeapBlock@@QAEXXZ
?SelectFree at RTLMultiPool@@AAEXPAX at Z
?ThreadNewBlock at RTLPool@@AAEXXZ
?__cpp_local_unwind@@YAXPAU_CPP_Establisher_Frame@@PADH at Z
?__do_newalloc@@YAPAXI at Z
?__eh_delete@@YAXPAX at Z
?__eh_delp@@3P6AXPAX at ZA
?__eh_error@@YAXXZ
?__eh_new@@YAPAXI at Z
?__eh_newp@@3P6APAXI at ZA
?__eh_throw@@YAXPBDP6CHXZIZZ
?__internal_cpp_framehandler@@YA?AW4_EXCEPTION_DISPOSITION@@PAUfunc_data@@PAU_EXCEPTION_RECORD@@PAU_CPP_Establisher_Frame@@PAU_CONTEXT@@PAX at Z
?__new_handler_type@@3HA
?__rtti_cast@@YAPAXPAX0PBD1H at Z
?__rtti_match@@YAHPBD0PAI at Z
?_call_catch_block@@YAXJIP6CHXZ at Z
?_new_handler@@3P6AHI at ZA
?match_with_vc_throw_type@@YAHPAUThrowInfo@@PADPAI at Z
?pMainHeap at RTLHeap@@0PAV1 at A
?pMainHeap at RTLMultiPool@@0PAV1 at A
?pPools at RTLPool@@0PAV1 at A
?set_terminate@@YAP6AXXZP6AXXZ at Z
?set_terminate at std@@YAP6AXXZP6AXXZ at Z
?set_unexpected@@YAP6AXXZP6AXXZ at Z
?set_unexpected at std@@YAP6AXXZP6AXXZ at Z
?terminate@@YAXXZ
?terminate_fp@@3P6AXXZA
?unexpected@@YAXXZ
?unexpected_fp@@3P6AXXZA
?what at bad_cast@std@@UBEPBDXZ
?what at bad_exception@std@@UBEPBDXZ
?what at bad_typeid@std@@UBEPBDXZ
?what at exception@std@@UBEPBDXZ
_CW_USEDEFAULT
_CloseHandle at 4
_CreateSemaphoreA at 16
_CreateThread at 24
_D3gcx10notbinsizeG12k
_D3gcx14SENTINEL_EXTRAk
_D3gcx2GC10genCollectFZv
_D3gcx2GC10initializeFZv
_D3gcx2GC10removeRootFPvZv
_D3gcx2GC11__invariantFZv
_D3gcx2GC11fullCollectFZv
_D3gcx2GC11removeRangeFPvZv
_D3gcx2GC12mallocNoSyncFkZPv
_D3gcx2GC12setFinalizerFPvPFPvPvZvZv
_D3gcx2GC14scanStaticDataFC3gcx2GCZv
_D3gcx2GC14setStackBottomFPvZv
_D3gcx2GC18fullCollectNoStackFZv
_D3gcx2GC4DtorFZv
_D3gcx2GC4filePa
_D3gcx2GC4freeFPvZv
_D3gcx2GC4linek
_D3gcx2GC5checkFPvZv
_D3gcx2GC6callocFkkZPv
_D3gcx2GC6enableFZv
_D3gcx2GC6gcLockC9ClassInfo
_D3gcx2GC6mallocFkZPv
_D3gcx2GC7addRootFPvZv
_D3gcx2GC7disableFZv
_D3gcx2GC7reallocFPvkZPv
_D3gcx2GC8addRangeFPvPvZv
_D3gcx2GC8capacityFPvZk
_D3gcx2GC8getStatsFJS7gcstats7GCStatsZv
_D3gcx2GC8minimizeFZv
_D3gcx3Gcx10removeRootFPvZv
_D3gcx3Gcx11fullcollectFPvZk
_D3gcx3Gcx11removeRangeFPvZv
_D3gcx3Gcx16fullcollectshellFZk
_D3gcx3Gcx4DtorFZv
_D3gcx3Gcx4markFPvPvZv
_D3gcx3Gcx7addRootFPvZv
_D3gcx3Gcx7findBinFkZh
_D3gcx3Gcx7newPoolFkZPS3gcx4Pool
_D3gcx3Gcx8addRangeFPvPvZv
_D3gcx3Gcx8bigAllocFkZPv
_D3gcx3Gcx8findPoolFPvZPS3gcx4Pool
_D3gcx3Gcx8findSizeFPvZk
_D3gcx3Gcx9allocPageFhZi
_D3gcx4Pool10allocPagesFkZk
_D3gcx4Pool10initializeFkZv
_D3gcx4Pool4DtorFZv
_D3gcx7binsizeG12k
_D3gcx9GCVERSIONk
_D3std10moduleinit12_moduleCtor2FAC10ModuleInfoiZv
_D3std10moduleinit15ModuleCtorError5_ctorFC10ModuleInfoZC3std10moduleinit15ModuleCtorError
_D3std10moduleinit17_moduleinfo_dtorsAC10ModuleInfo
_D3std10moduleinit19_moduleinfo_dtors_ik
_D3std11outofmemory20OutOfMemoryException1sAa
_D3std11outofmemory20OutOfMemoryException8toStringFZAa
_D3std1c6stdarg15__T8va_startTkZ8va_startFJPvKkZv
_D3std1c6stdarg6va_endFPvZv
_D3std2gc11newCapacityFkkZk
_D3std2gc11newCapacityFkkZk9log2plus1FkZi
_D3std2gc13new_finalizerFPvPvZv
_D3std2gc3_gcC3gcx2GC
_D3std3uni10isUniAlphaFwZi
_D3std3uni10isUniLowerFwZi
_D3std3uni10isUniUpperFwZi
_D3std3uni10toUniLowerFwZw
_D3std3uni10toUniUpperFwZw
_D3std3utf10UTF8strideG256h
_D3std3utf12UtfException5_ctorFAakZC3std3utf12UtfException
_D3std3utf12isValidDcharFwZx
_D3std3utf6decodeFAaKkZw
_D3std3utf6encodeFKAawZv
_D3std3utf6strideFAakZk
_D3std3utf6toUTF8FG4awZAa
_D3std5array16ArrayBoundsError5_ctorFAakZC3std5array16ArrayBoundsError
_D3std6string10whitespaceG6a
_D3std6string2LSw
_D3std6string2PSw
_D3std6string3cmpFAaAaZi
_D3std6string4findFAawZi
_D3std6string6columnFAaiZi
_D3std6string6digitsG10a
_D3std6string7iswhiteFwZi
_D3std6string7lettersG52a
_D3std6string7newlineG2a
_D3std6string8toStringFkZAa
_D3std6string9hexdigitsG16a
_D3std6string9inPatternFwAaZi
_D3std6string9lowercaseG26a
_D3std6string9octdigitsG8a
_D3std6string9uppercaseG26a
_D3std6thread11ThreadError5_ctorFAaZC3std6thread11ThreadError
_D3std6thread20os_query_stackBottomFZPv
_D3std6thread6Thread10allThreadsG1024C3std6thread6Thread
_D3std6thread6Thread10threadLockC6Object
_D3std6thread6Thread11_staticDtorFZv
_D3std6thread6Thread11setPriorityFE3std6thread6Thread8PRIORITYZv
_D3std6thread6Thread11thread_initFZv
_D3std6thread6Thread13allThreadsDimk
_D3std6thread6Thread22getCurrentThreadHandleFZT3std1c7windows7windows6HANDLE
_D3std6thread6Thread3runFZi
_D3std6thread6Thread4waitFZv
_D3std6thread6Thread4waitFkZv
_D3std6thread6Thread5_ctorFZC3std6thread6Thread
_D3std6thread6Thread5errorFAaZv
_D3std6thread6Thread5pauseFZv
_D3std6thread6Thread5startFZv
_D3std6thread6Thread6getAllFZAC3std6thread6Thread
_D3std6thread6Thread6resumeFZv
_D3std6thread6Thread7getThisFZC3std6thread6Thread
_D3std6thread6Thread8getStateFZE3std6thread6Thread2TS
_D3std6thread6Thread8nthreadsk
_D3std6thread6Thread8pauseAllFZv
_D3std6thread6Thread9resumeAllFZv
_D3std8typeinfo2Aa11TypeInfo_Aa5tsizeFZk
_D3std8typeinfo2Aa11TypeInfo_Aa6equalsFPvPvZi
_D3std8typeinfo2Aa11TypeInfo_Aa7compareFPvPvZi
_D3std8typeinfo2Aa11TypeInfo_Aa7getHashFPvZk
_D3std8typeinfo2Aa11TypeInfo_Aa8toStringFZAa
_D3std8typeinfo7ti_char10TypeInfo_a4swapFPvPvZv
_D3std8typeinfo7ti_char10TypeInfo_a5tsizeFZk
_D3std8typeinfo7ti_char10TypeInfo_a6equalsFPvPvZi
_D3std8typeinfo7ti_char10TypeInfo_a7compareFPvPvZi
_D3std8typeinfo7ti_char10TypeInfo_a7getHashFPvZk
_D3std8typeinfo7ti_char10TypeInfo_a8toStringFZAa
_D3std8typeinfo7ti_uint10TypeInfo_k4swapFPvPvZv
_D3std8typeinfo7ti_uint10TypeInfo_k5tsizeFZk
_D3std8typeinfo7ti_uint10TypeInfo_k6equalsFPvPvZi
_D3std8typeinfo7ti_uint10TypeInfo_k7compareFPvPvZi
_D3std8typeinfo7ti_uint10TypeInfo_k7getHashFPvZk
_D3std8typeinfo7ti_uint10TypeInfo_k8toStringFZAa
_D5win3210os_mem_mapFkZPv
_D5win3212os_mem_unmapFPvkZi
_D5win3213os_mem_commitFPvkkZi
_D5win3215os_mem_decommitFPvkkZi
_D5win3220os_query_stackBottomFZPv
_D5win3222os_query_staticdatasegFPPvPkZv
_D6gcbits6GCBits10BITS_SHIFTi
_D6gcbits6GCBits13BITS_PER_WORDi
_D6gcbits6GCBits3setFkZv
_D6gcbits6GCBits4DtorFZv
_D6gcbits6GCBits4baseFZPk
_D6gcbits6GCBits4copyFPS6gcbits6GCBitsZv
_D6gcbits6GCBits4testFkZk
_D6gcbits6GCBits4zeroFZv
_D6gcbits6GCBits5allocFkZv
_D6gcbits6GCBits9BITS_MASKi
_D6gcbits6GCBits9testClearFkZk
_D6object14TypeInfo_Array4swapFPvPvZv
_D6object14TypeInfo_Array5tsizeFZk
_D6object14TypeInfo_Array6equalsFPvPvZi
_D6object14TypeInfo_Array7compareFPvPvZi
_D6object14TypeInfo_Array7getHashFPvZk
_D6object14TypeInfo_Array8toStringFZAa
_D6object14TypeInfo_Class5tsizeFZk
_D6object14TypeInfo_Class6equalsFPvPvZi
_D6object14TypeInfo_Class7compareFPvPvZi
_D6object14TypeInfo_Class7getHashFPvZk
_D6object14TypeInfo_Class8toStringFZAa
_D6object15TypeInfo_Struct5tsizeFZk
_D6object15TypeInfo_Struct6equalsFPvPvZi
_D6object15TypeInfo_Struct7compareFPvPvZi
_D6object15TypeInfo_Struct7getHashFPvZk
_D6object15TypeInfo_Struct8toStringFZAa
_D6object16TypeInfo_Pointer4swapFPvPvZv
_D6object16TypeInfo_Pointer5tsizeFZk
_D6object16TypeInfo_Pointer6equalsFPvPvZi
_D6object16TypeInfo_Pointer7compareFPvPvZi
_D6object16TypeInfo_Pointer7getHashFPvZk
_D6object16TypeInfo_Pointer8toStringFZAa
_D6object16TypeInfo_Typedef4swapFPvPvZv
_D6object16TypeInfo_Typedef5tsizeFZk
_D6object16TypeInfo_Typedef6equalsFPvPvZi
_D6object16TypeInfo_Typedef7compareFPvPvZi
_D6object16TypeInfo_Typedef7getHashFPvZk
_D6object16TypeInfo_Typedef8toStringFZAa
_D6object17TypeInfo_Delegate5tsizeFZk
_D6object17TypeInfo_Delegate8toStringFZAa
_D6object17TypeInfo_Function5tsizeFZk
_D6object17TypeInfo_Function8toStringFZAa
_D6object20TypeInfo_StaticArray4swapFPvPvZv
_D6object20TypeInfo_StaticArray5tsizeFZk
_D6object20TypeInfo_StaticArray6equalsFPvPvZi
_D6object20TypeInfo_StaticArray7compareFPvPvZi
_D6object20TypeInfo_StaticArray7getHashFPvZk
_D6object20TypeInfo_StaticArray8toStringFZAa
_D6object25TypeInfo_AssociativeArray5tsizeFZk
_D6object25TypeInfo_AssociativeArray8toStringFZAa
_D6object5Error5_ctorFAaZC6object5Error
_D6object6Object5opCmpFC6ObjectZi
_D6object6Object5printFZv
_D6object6Object6toHashFZk
_D6object6Object8opEqualsFC6ObjectZi
_D6object6Object8toStringFZAa
_D6object8TypeInfo4swapFPvPvZv
_D6object8TypeInfo5opCmpFC6ObjectZi
_D6object8TypeInfo5tsizeFZk
_D6object8TypeInfo6equalsFPvPvZi
_D6object8TypeInfo6toHashFZk
_D6object8TypeInfo7compareFPvPvZi
_D6object8TypeInfo7getHashFPvZk
_D6object8TypeInfo8opEqualsFC6ObjectZi
_D6object9Exception5_ctorFAaZC9Exception
_D6object9Exception5printFZv
_D6object9Exception8toStringFZAa
_DeleteCriticalSection at 4
_DeleteFileA at 4
_DuplicateHandle at 28
_EnterCriticalSection at 4
_ExitProcess at 4
_ExitThread at 4
_FREEBUF
_FileTimeToDosDateTime at 12
_FindClose at 4
_FindFirstFileA at 8
_FindNextFileA at 8
_FreeEnvironmentStringsA at 4
_GetACP at 0
_GetCPInfo at 8
_GetCommandLineA at 0
_GetCurrentProcess at 0
_GetCurrentThread at 0
_GetCurrentThreadId at 0
_GetEnvironmentStrings at 0
_GetFileType at 4
_GetLastError at 0
_GetModuleFileNameA at 12
_GetModuleHandleA at 4
_GetOEMCP at 0
_GetStdHandle at 4
_GetStringTypeA at 20
_GetThreadContext at 8
_GetTickCount at 0
_GetVersion at 0
_GlobalAlloc at 8
_GlobalFree at 4
_HKEY_CLASSES_ROOT
_HKEY_CURRENT_CONFIG
_HKEY_CURRENT_USER
_HKEY_DYN_DATA
_HKEY_LOCAL_MACHINE
_HKEY_PERFORMANCE_DATA
_HKEY_USERS
_HWND_DESKTOP
_IDC_ARROW
_IDC_CROSS
_IDI_APPLICATION
_INVALID_FILE_SIZE
_INVALID_HANDLE_VALUE
_INVALID_SET_FILE_POINTER
_InitializeCriticalSection at 4
_LCMapStringA at 24
_LeaveCriticalSection at 4
_MAILSLOT_NO_MESSAGE
_MAILSLOT_WAIT_FOREVER
_MessageBoxA at 16
_MultiByteToWideChar at 24
_REG_CREATED_NEW_KEY
_REG_OPENED_EXISTING_KEY
_RTLPoolCreate
_RaiseException at 16
_ReadFile at 20
_ReleaseSemaphore at 12
_ResumeThread at 4
_RtlUnwind at 16
_SetConsoleCtrlHandler at 8
_SetFilePointer at 16
_SetHandleCount at 4
_SetThreadPriority at 8
_SetUnhandledExceptionFilter at 4
_SuspendThread at 4
_ThreadStarted
_UnhandledExceptionFilter at 4
_VirtualAlloc at 16
_VirtualFree at 12
_WaitForSingleObject at 8
_WideCharToMultiByte at 32
_WriteConsoleA at 20
_WriteFile at 20
__8087
__8087_init
__80x87
__87TOPSW@
__Class_10ModuleInfo
__Class_10TypeInfo_a
__Class_10TypeInfo_k
__Class_11TypeInfo_Aa
__Class_13TypeInfo_Enum
__Class_14TypeInfo_Array
__Class_14TypeInfo_Class
__Class_15TypeInfo_Struct
__Class_16TypeInfo_Pointer
__Class_16TypeInfo_Typedef
__Class_17TypeInfo_Delegate
__Class_17TypeInfo_Function
__Class_20TypeInfo_StaticArray
__Class_25TypeInfo_AssociativeArray
__Class_3gcx2GC
__Class_3gcx6GCLock
__Class_3std10moduleinit15ModuleCtorError
__Class_3std11outofmemory20OutOfMemoryException
__Class_3std3utf12UtfException
__Class_3std3utf8UtfError
__Class_3std5array16ArrayBoundsError
__Class_3std6string15StringException
__Class_3std6thread11ThreadError
__Class_3std6thread6Thread
__Class_6Object
__Class_6object5Error
__Class_8TypeInfo
__Class_9ClassInfo
__Class_9Exception
__D3std6thread6Thread11threadstartWPvZk at 4
__DBLINT87@
__DBLLNG87@
__DBLTO87@
__DOSIGN
__DTST87@
__DestroySemaphore
__Dmain
__Exit
__FCOMPP@
__FEEXCEPT
__FE_DFL_ENV
__FLOATCVT
__FLTTO87@
__FTEST0@
__FTEST@
__InitSemaphoreSys
__LCMP@
__LDIV@
__LMUL@
__ModuleInfo_3adi
__ModuleInfo_3gcx
__ModuleInfo_3std10moduleinit
__ModuleInfo_3std2gc
__ModuleInfo_3std3utf
__ModuleInfo_3std5ctype
__ModuleInfo_3std5stdio
__ModuleInfo_3std6format
__ModuleInfo_3std6string
__ModuleInfo_3std6thread
__ModuleInfo_3std8typeinfo2Aa
__ModuleInfo_6aApply
__ModuleInfo_6dmain2
__ModuleInfo_6gcbits
__ModuleInfo_6object
__ModuleInfo_8arraycat
__ReleaseSemaphore
__SCANFLOAT
__SET_ERRNO
__SET_NT_ERRNO
__STD_critical
__STD_init_std_files
__STD_monitor_staticdtor
__STD_signal
__STI_critical
__STI_fltused
__STI_init_std_files
__STI_io_ctor
__STI_monitor_staticctor
__STI_signal
__ULDIV@
__WDOSIGN
__WSCANFLOAT
__WaitSemaphore
___CPPExceptionFilter at 4
___SD?%___heap32_multpool_cpp1525433864_
___SI?%___heap32_multpool_cpp1525433864_
___alloca
___argc
___argv
___build_environ
___callve
___cpp_init
___cpp_init_ptr
___faterr
___fcloseall
___fhnd_info
___floatfmt
___fp_lock
___fp_sigfunc
___fp_unlock
___fpclassify_ld
___init_environ_ptr
___init_mbctype_ptr
___initmbctype
___itoa
___locale_chars
___locale_codepage
___locale_decimal_const
___locale_decpoint
___locale_ident
___locale_mbsize
___mb_cpinfo
___mb_cpinfoN
___mbcodepage
___mbcpinfo
___mblcid
___module_handle
___pfloatfmt
___pscanfloat
___rtl_clean_cppexceptions
___rtl_criticalsection
___rtl_init_cppexceptions
___rtti?AVType_info@@
___rtti?AVbad_cast at std@@
___rtti?AVbad_exception at std@@
___rtti?AVbad_typeid at std@@
___rtti?AVexception at std@@
___rtti?AVtype_info at std@@
___sigill_sigfunc
___sigsegv_sigfunc
___terminate_done
___thdtbl
___threadstartex at 4
___ti?AVType_info@@
___ti?AVbad_cast at std@@
___ti?AVbad_exception at std@@
___ti?AVbad_typeid at std@@
___ti?AVexception at std@@
___ti?AVtype_info at std@@
___tiX
___unmangle_vc_exception_type
___ve_debughook
___wargv
___wfloatfmt
___wildcard
___wpfloatfmt
___wpscanfloat
___write_fp
___xcfilter
__aApplycd1
__aApplycd2
__acmdln
__acrtused_con
__adDup
__adEq
__addthreadtableentry
__alloca_probe
__allocinit
__argc
__argv
__assert
__atexit_max
__atexit_tbl
__atexitp
__atopsp
__beginthreadex
__call_except_block
__chkstack
__chkstk
__cinit
__clear87
__clearbss
__control87
__cpp_framehandler
__cppeh_sv
__cpumode
__ctype
__d_OutOfMemory
__d_arrayappend
__d_arrayappendc
__d_arraycat
__d_arraycatn
__d_arraysetlength
__d_callfinalizer
__d_create_exception_object
__d_delmemory
__d_exception_filter
__d_framehandler
__d_isbaseof
__d_local_unwind
__d_local_unwind2
__d_monitor_epilog
__d_monitor_handler
__d_monitor_prolog
__d_monitorenter
__d_monitorexit
__d_monitorrelease
__d_new
__d_newarrayi
__d_newclass
__d_throw at 4
__d_translate_se_to_d_exception
__dodtors
__dos_sethandlecount
__doserrno
__edata
__end
__endthreadex
__environ
__envptr
__errno_set
__except_handler3
__except_list
__fatexit
__fcloseallp
__fe_cur_env
__fgetc_nlock
__fillbuf
__fltused
__flushbu
__flushterm
__fpreset
__fputc_nlock
__getthreaddata
__global_unwind
__hdlSemHandles
__hookexitp
__iSemLockCtrs
__iSemNestCount
__iSemThreadIds
__imp__CloseHandle at 4
__imp__CreateSemaphoreA at 16
__imp__CreateThread at 24
__imp__DeleteCriticalSection at 4
__imp__DeleteFileA at 4
__imp__DuplicateHandle at 28
__imp__EnterCriticalSection at 4
__imp__ExitProcess at 4
__imp__ExitThread at 4
__imp__FileTimeToDosDateTime at 12
__imp__FindClose at 4
__imp__FindFirstFileA at 8
__imp__FindNextFileA at 8
__imp__GetACP at 0
__imp__GetCPInfo at 8
__imp__GetCommandLineA at 0
__imp__GetCurrentProcess at 0
__imp__GetCurrentThread at 0
__imp__GetCurrentThreadId at 0
__imp__GetFileType at 4
__imp__GetLastError at 0
__imp__GetModuleFileNameA at 12
__imp__GetModuleHandleA at 4
__imp__GetOEMCP at 0
__imp__GetStdHandle at 4
__imp__GetStringTypeA at 20
__imp__GetThreadContext at 8
__imp__GetTickCount at 0
__imp__InitializeCriticalSection at 4
__imp__LCMapStringA at 24
__imp__LeaveCriticalSection at 4
__imp__MessageBoxA at 16
__imp__MultiByteToWideChar at 24
__imp__RaiseException at 16
__imp__ReleaseSemaphore at 12
__imp__ResumeThread at 4
__imp__SetConsoleCtrlHandler at 8
__imp__SetFilePointer at 16
__imp__SetHandleCount at 4
__imp__SetThreadPriority at 8
__imp__SetUnhandledExceptionFilter at 4
__imp__SuspendThread at 4
__imp__UnhandledExceptionFilter at 4
__imp__VirtualAlloc at 16
__imp__VirtualFree at 12
__imp__WaitForSingleObject at 8
__imp__WideCharToMultiByte at 32
__imp__WriteConsoleA at 20
__init_10ModuleInfo
__init_10TypeInfo_a
__init_10TypeInfo_k
__init_11TypeInfo_Aa
__init_13TypeInfo_Enum
__init_14TypeInfo_Array
__init_14TypeInfo_Class
__init_15TypeInfo_Struct
__init_16TypeInfo_Pointer
__init_16TypeInfo_Typedef
__init_17TypeInfo_Delegate
__init_17TypeInfo_Function
__init_20TypeInfo_StaticArray
__init_25TypeInfo_AssociativeArray
__init_3adi5Array
__init_3gcx2GC
__init_3gcx3Gcx
__init_3gcx4List
__init_3gcx4Pool
__init_3gcx5Range
__init_3gcx6GCLock
__init_3std10moduleinit15ModuleCtorError
__init_3std11outofmemory20OutOfMemoryException
__init_3std1c7windows7windows10BITMAPINFO
__init_3std1c7windows7windows10LOGPALETTE
__init_3std1c7windows7windows10OVERLAPPED
__init_3std1c7windows7windows10SYSTEMTIME
__init_3std1c7windows7windows11DLGTEMPLATE
__init_3std1c7windows7windows11PAINTSTRUCT
__init_3std1c7windows7windows11TEXTMETRICA
__init_3std1c7windows7windows11WNDCLASSEXA
__init_3std1c7windows7windows12MEMORYSTATUS
__init_3std1c7windows7windows12PALETTEENTRY
__init_3std1c7windows7windows13OPENFILENAMEA
__init_3std1c7windows7windows13OPENFILENAMEW
__init_3std1c7windows7windows15WIN32_FIND_DATA
__init_3std1c7windows7windows16BITMAPINFOHEADER
__init_3std1c7windows7windows16WIN32_FIND_DATAW
__init_3std1c7windows7windows18FLOATING_SAVE_AREA
__init_3std1c7windows7windows19SECURITY_ATTRIBUTES
__init_3std1c7windows7windows21PIXELFORMATDESCRIPTOR
__init_3std1c7windows7windows21TIME_ZONE_INFORMATION
__init_3std1c7windows7windows24MEMORY_BASIC_INFORMATION
__init_3std1c7windows7windows3MSG
__init_3std1c7windows7windows4RECT
__init_3std1c7windows7windows5POINT
__init_3std1c7windows7windows6BITMAP
__init_3std1c7windows7windows6LOGPEN
__init_3std1c7windows7windows7CONTEXT
__init_3std1c7windows7windows7RGBQUAD
__init_3std1c7windows7windows8FILETIME
__init_3std1c7windows7windows8LOGFONTA
__init_3std1c7windows7windows9WNDCLASSA
__init_3std2gc5Array
__init_3std3utf12UtfException
__init_3std3utf8UtfError
__init_3std5array16ArrayBoundsError
__init_3std6string15StringException
__init_3std6thread11ThreadError
__init_3std6thread6Thread
__init_6Object
__init_6gcbits6GCBits
__init_6object5Error
__init_6object9Interface
__init_8TypeInfo
__init_9ClassInfo
__init_9Exception
__iob
__isctype
__ismbblead
__ismbcdigit
__local_except_handler
__local_unwind
__mbctype
__mbschr
__minit
__moddtor_3std6thread
__moduleCtor
__moduleDtor
__moduleUnitTests
__moduleinfo_array
__nullext
__opti_stosd
__osfhnd
__osmode
__osver
__pCPPExceptionFilter
__pPreviousUnhandledExceptionFilter
__pctype
__pformat
__pgmptr
__pwctype
__rtl_critical_enter
__rtl_critical_exit
__semerr
__setargv
__setenvp
__setmbcp
__status87
__szSemPrefix
__szSemPrefixLen
__tab_size
__thread1
__thread_init
__vtbl_10ModuleInfo
__vtbl_10TypeInfo_a
__vtbl_10TypeInfo_k
__vtbl_11TypeInfo_Aa
__vtbl_13TypeInfo_Enum
__vtbl_14TypeInfo_Array
__vtbl_14TypeInfo_Class
__vtbl_15TypeInfo_Struct
__vtbl_16TypeInfo_Pointer
__vtbl_16TypeInfo_Typedef
__vtbl_17TypeInfo_Delegate
__vtbl_17TypeInfo_Function
__vtbl_20TypeInfo_StaticArray
__vtbl_25TypeInfo_AssociativeArray
__vtbl_3gcx2GC
__vtbl_3gcx6GCLock
__vtbl_3std10moduleinit15ModuleCtorError
__vtbl_3std11outofmemory20OutOfMemoryException
__vtbl_3std3utf12UtfException
__vtbl_3std3utf8UtfError
__vtbl_3std5array16ArrayBoundsError
__vtbl_3std6string15StringException
__vtbl_3std6thread11ThreadError
__vtbl_3std6thread6Thread
__vtbl_6Object
__vtbl_6object5Error
__vtbl_8TypeInfo
__vtbl_9ClassInfo
__vtbl_9Exception
__wargv
__wenviron
__wenvptr
__win32_faterr
__win32_stderrmsg
__winmajor
__winminor
__winver
__wpgmptr
__xc_a
__xc_z
__xi_a
__xi_z
__xp_a
__xp_z
__xt_a
__xt_z
_abort
_calloc
_close
_edata
_end
_errno
_exit
_fclose
_fegetenv
_fesetenv
_fflush
_fgetc
_findfirst
_findnext
_flushall
_fprintf
_fputc
_free
_gc_init
_gc_term
_isatty
_itoa
_lseek
_main
_mainCRTStartup
_malloc
_mbtowc
_memchr
_memcmp
_memcpy
_memicmp
_memmove
_memset
_no_catch_exceptions
_printf
_raise
_read
_realloc
_remove
_sbrk
_setvbuf
_signal
_sprintf
_strcat
_strchr
_strcmp
_strcpy
_strdup
_strlen
_strtold
_tolower
_ultoa
_unmangle_ident
_unmangle_pt
_vfprintf
_vprintf
_vsprintf
_wcscpy
_wcslen
_wctomb
_write
roundto0
----------------

So I either the map file is wrong (or I misunderstood it), the linker is
not stripping out 'unreferenced' functions, or there are many more
referenced functions than you suspected.

-- 
Derek
(skype: derek.j.parnell)
Melbourne, Australia
"Down with mediocracy!"
7/04/2006 9:39:07 AM



More information about the Digitalmars-d-announce mailing list