2010/9/10 Ozkan Sezer <[email protected]>:
> On Fri, Sep 10, 2010 at 10:54 AM, Kai Tietz <[email protected]> wrote:
>> 2010/9/10 Ozkan Sezer <[email protected]>:
>>> On Fri, Sep 10, 2010 at 10:34 AM, Kai Tietz <[email protected]> wrote:
>>>> 2010/9/10 Ozkan Sezer <[email protected]>:
>>>>> On Fri, Sep 10, 2010 at 10:28 AM, Kai Tietz <[email protected]>
>>>>> wrote:
>>>>>> 2010/9/10 Teemu Nätkinniemi <[email protected]>:
>>>>>>>
>>>>>>>> libusb_driver.o:libusb_driver.c:(.text+0x6a9): undefined
>>>>>>>> reference to `_Interloc
>>>>>>>> kedIncrement'
>>>>>>>> libusb_driver.o:libusb_driver.c:(.text+0x6d4): undefined
>>>>>>>> reference to `_Interloc
>>>>>>>> kedDecrement'
>>>>>>>> libusb_driver.o:libusb_driver.c:(.text+0x70d): undefined
>>>>>>>> reference to `_Interloc
>>>>>>>> kedDecrement'
>>>>>>>> transfer.o:transfer.c:(.text+0x149): undefined reference to
>>>>>>>> `_InterlockedIncreme
>>>>>>>> nt'
>>>>>>>> transfer.o:transfer.c:(.text+0x19a): undefined reference to
>>>>>>>> `_InterlockedDecreme
>>>>>>>> nt'
>>>>>>>> transfer.o:transfer.c:(.text+0x1cd): undefined reference to
>>>>>>>> `_InterlockedDecreme
>>>>>>>> nt'
>>>>>>>> transfer.o:transfer.c:(.text+0x324): undefined reference to
>>>>>>>> `_InterlockedDecreme
>>>>>>>> nt'
>>>>>>>> transfer.o:transfer.c:(.text+0x457): undefined reference to
>>>>>>>> `_InterlockedExchang
>>>>>>>> ePointer'
>>>>>>>> transfer.o:transfer.c:(.text+0x4ed): undefined reference to
>>>>>>>> `_InterlockedExchang
>>>>>>>> ePointer'
>>>>>>>> transfer.o:transfer.c:(.text+0x66d): undefined reference to
>>>>>>>> `_InterlockedIncreme
>>>>>>>> nt'
>>>>>>>> transfer.o:transfer.c:(.text+0xe3f): undefined reference to
>>>>>>>> `_InterlockedExchang
>>>>>>>> ePointer'
>>>>>>>> transfer.o:transfer.c:(.text+0xf76): undefined reference to
>>>>>>>> `_InterlockedIncreme
>>>>>>>> nt'
>>>>>>>> collect2: ld returned 1 exit status
>>>>>>>> make: *** [libusb0.sys] Error 1
>>>>>>>
>>>>>>> On 64-bit Windows those should be InterlockedIncrement64 and
>>>>>>> InterlockedDecrement64.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> On 64-bit are acutual no Interlocked...-API. It reflects always to
>>>>>> _Interlocked..-API on x64. But why you get unresolved externals? We
>>>>>> are providing those intrinsics in libminwex.a
>>>>>
>>>>> See wdm.h, they are probably expected to be exported from ntoskrnl.exe
>>>>> I guess?
>>>>>
>>>>> As for libmingwex.a, they are linking with -nostdlib
>>>>>
>>>>>>
>>>>>> Kai
>>>>>>
>>>>>
>>>>> --
>>>>> Ozkan
>>>>>
>>>>
>>>> Well, to link without mingwex library cause here for sure issues as
>>>> all intrinsics are missing. If they can't link to this library, then
>>>> they need to provide at least a library which declares those
>>>> intrinsics of VC, which are by obvious reasons not present in gcc.
>>>> All this has for sure nothing to do with force-inline, as not all
>>>> intrinsics are described in wdm.h headers as such kind of inlines.
>>>
>>>
>>> wdm.h defines all of the Interlocked* as _Interlocked* for non-x86
>>> so where is it supposed to retrieve them? Only as compiler builtins?
>>>
>>>
>>>>
>>>> Kai
>>>>
>>>>
>>>> --
>>>> | (\_/) This is Bunny. Copy and paste
>>>> | (='.'=) Bunny into your signature to help
>>>> | (")_(") him gain world domination
>>>>
>>>
>>> --
>>> Ozkan
>>>
>>
>> Yes, you got it. And therefore we provide them in our libminwex.
>>
>
>
> Hrmph, I guess the only way here is to bite the bullet and
> really add a -lmingwex after all other libs. However it would
> have been really nice if we provided them as always_inlines
>
>
>> Kai
>>
>> --
>> | (\_/) This is Bunny. Copy and paste
>> | (='.'=) Bunny into your signature to help
>> | (")_(") him gain world domination
>>
>
Hmm, always inline is bad too. As gcc allows in debugging build to
omit inlines, which allows debugging even of those.
I think it would be a better solution to provide an additional
intrinsic library for making gcc compatible to VS. I don't like to see
this force-inline in headers as it has the tendency to hide stuff and
makes function pointer passing of those functions not correct working,
as each module gets an new version of this intrinsic.
Kai
--
| (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination
------------------------------------------------------------------------------
Automate Storage Tiering Simply
Optimize IT performance and efficiency through flexible, powerful,
automated storage tiering capabilities. View this brief to learn how
you can reduce costs and improve performance.
http://p.sf.net/sfu/dell-sfdev2dev
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public