pipedmd -msmode Should be the default

Rainer Schuetze via Digitalmars-d-ide digitalmars-d-ide at puremagic.com
Fri Dec 12 00:52:18 PST 2014



On 08.12.2014 00:52, sdvcn wrote:
> On Sunday, 7 December 2014 at 10:46:25 UTC, Rainer Schuetze wrote:
>>
>>
>> On 07.12.2014 04:06, sdvcn wrote:
>>> On Friday, 5 December 2014 at 10:15:03 UTC, sdvcn wrote:
>>>> On Friday, 5 December 2014 at 10:04:43 UTC, sdvcn wrote:
>>>>> Certain probability utf-8 errors.
>>>>>
>>>>> pipedmd.d
>>>>>
>>>>> if(!linkerFound)
>>>>> {
>>>>>   if (output.startsWith("OPTLINK (R)"))
>>>>>       linkerFound = true;
>>>>>   else if(output.countUntil("error LNK") >= 0 ||
>>>>> output.countUntil("warning LNK") >= 0) // <-- utf-8 error
>>>>>       linkerFound = msMode = true;
>>>>> }
>>>>>
>>>>> my chinese os,link info "错误 LNK" or "警告 LNK"
>>>>>
>>>>>
>>>>> config.d
>>>>>
>>>>> if(performLink && Package.GetGlobalOptions().demangleError)
>>>>>    cmd = "\"$(VisualDInstallDir)pipedmd.exe\" " ~ cmd; // <-- no set
>>>>> msmode
>>>>>
>>>>> I can not find where to set "msmode"
>>>>
>>>> win32:(OPTLINK (R) for Win32  Release 8.00.15)
>>>> not set "Demangle names in link errors" Unable to import lib path .
>>>> if set "Demangle names in link errors". Can be compiled
>>>>
>>>> x64:(Microsoft (R) Incremental Linker Version 12.00.30324.0)
>>>> not set "Demangle names in link errors" .Can be compiled
>>>>
>>>> if set "Demangle names in link errors". Certain probability utf-8
>>>> errors.
>>>>
>>>> std.utf.UTFException at m:\s\d\rainers\phobos\std\utf.d(1109): Invalid
>>>> UTF-8 sequence (at index 1)
>>>> ----------------
>>>
>>> Please ignore this error report
>>>
>>> my Solutions:
>>> Not choose "Demangle names in link error"
>>> Not choose "Monitor OPTLINK dependencies"
>>>
>>> Modify "sc.ini"
>>> [Environment64]
>>> VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 12.0\vc\
>>> WindowsSdkDir=C:\Program Files (x86)\Windows Kits\8.1\
>>> LINKCMD=%VCINSTALLDIR%\bin\link.exe
>>>
>>> Not choose x64 page "override linker settings from dmd configuration in
>>> sc.ini."
>>>
>>>
>>>
>>
>> I guess the error might still be valid. dmd emits compressed symbols
>> for Win32 that interfere with utf8. I guess parsing the output must be
>> better aware of non-UTF8 sequences.
>>
>> Do you have a small test program that exhibits the problem?
>
> Default processing Converted utf8 string not?
>
> windows Console Output ASCII or MBS. Under no circumstances are
> converted into utf8.

D identifiers are UTF8 encoded. The compression done for Win32 uses the 
same byte range as UTF8 (>= 0x80) to encode repeated name segments. 
Combining both produces an undecipherable mess.

The linker just spits that out, the decompression/demangling should be 
aware of these possibly invalid encodings.


More information about the Digitalmars-d-ide mailing list