strange -fPIC compilation error

Daniel Kozak via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Oct 31 11:23:21 PDT 2016


Dne 31.10.2016 v 18:06 Charles Hixson via Digitalmars-d-learn napsal(a):
>
> On 10/31/2016 09:26 AM, Charles Hixson via Digitalmars-d-learn wrote:
>> On 10/30/2016 11:34 PM, Daniel Kozak via Digitalmars-d-learn wrote:
>>> Dne 31.10.2016 v 02:30 Charles Hixson via Digitalmars-d-learn 
>>> napsal(a):
>>>
>>>>
>>>> Well, that certainly changed the error messages.  With
>>>> dmd -defaultlib=/usr/lib/x86_64-linux-gnu/libphobos2.so test.d
>>>> I get:
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1121): Error: 
>>>> found 'nothrow' when expecting '{'
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1123): Error: 
>>>> mismatched number of curly brackets
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1124): Error: 
>>>> mismatched number of curly brackets
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1125): Error: 
>>>> mismatched number of curly brackets
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1126): Error: 
>>>> mismatched number of curly brackets
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1127): Error: 
>>>> mismatched number of curly brackets
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1128): Error: 
>>>> mismatched number of curly brackets
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1129): Error: 
>>>> mismatched number of curly brackets
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1133): Error: 
>>>> asm statements must end in ';'
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1136): Error: 
>>>> found 'private' instead of statement
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1146): Error: no 
>>>> identifier for declarator add
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1149): Error: no 
>>>> identifier for declarator usDone
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1149): Error: 
>>>> Declaration expected, not ':'
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1157): Error: 
>>>> Declaration expected, not '('
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1159): Error: 
>>>> Declaration expected, not 'foreach'
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1159): Error: 
>>>> Declaration expected, not '0'
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1164): Error: no 
>>>> identifier for declarator __fhnd_info[fd]
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1164): Error: 
>>>> Declaration expected, not '='
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1165): Error: 
>>>> Declaration expected, not 'return'
>>>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1167): Error: 
>>>> unrecognized declaration
>>>> /usr/include/dmd/phobos/std/typecons.d(1124): Error: semicolon 
>>>> expected following function declaration
>>>>
>>> This seems to be problem with your installation, you probably have 
>>> diferen version of dmd compiler and phobos library. So you should 
>>> uninstall all your dmd packages and make sure there is no 
>>> /usr/include/dmd left in your system. And instal dmd only from one 
>>> source (d-apt idealy).
>>>
>> I've done that 2 or 3 times.  If that's the problem, then there are 
>> different versions stored in the repository.  Since I'm on debian 
>> testing I'd been assuming that there'd been some system change since 
>> I'd last used the compiler, and the debs weren't yet up to date. The 
>> only updates to my system prior to the compiler breaking HAD been via 
>> apt-get.  Since then I've used dpkg remove and install a couple of 
>> times to try other versions of dmd with no benefit.
>> Currently dmd-bin version 2.071.2-0
>>               libphobos            2.071.2-0
>>               libphobos            2.071.2-0
>> so they're LISTED as being the same version.  And dmd.conf was 
>> installed by the deb, and is (eliminating the comments):
>> [Environment32]
>> DFLAGS=-I/usr/include/dmd/phobos -I/usr/include/dmd/druntime/import 
>> -L-L/usr/lib/i386-linux-gnu -L--export-dynamic
>>
>> [Environment64]
>> DFLAGS=-I/usr/include/dmd/phobos -I/usr/include/dmd/druntime/import 
>> -L-L/usr/lib/x86_64-linux-gnu -L--export-dynamic
>>
>> But somewhere during the process (which included the nightly system 
>> update) the error messages changed, and now:
>> dmd test.d
>> yields:
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1121): Error: 
>> found 'nothrow' when expecting '{'
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1123): Error: 
>> mismatched number of curly brackets
>> ...
>> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1167): Error: 
>> unrecognized declaration
>> /usr/include/dmd/phobos/std/typecons.d(1124): Error: semicolon 
>> expected following function declaration
> FWIW starting at 
> /usr/include/dmd/druntime/import/core/stdc/stdio.d(1121)::
>         asm nothrow @nogc
>         {
>             mov EDX, num;
>             lock;
>             inc _iSemLockCtrs[EDX * 2];
> so nothrow isn't being seen as appropriate at the beginning of an asm 
> block.  After that I think it gets confused as 1123 doesn't HAVE a 
> brace (i.e. curly bracket) in it.
>
when you type dmd --version what it prints?


More information about the Digitalmars-d-learn mailing list