RFR(XS): 8215009: GCC 8 compilation eror in libjli

David Holmes david.holmes at oracle.com
Wed Dec 19 06:27:19 UTC 2018


On 19/12/2018 1:56 am, Dmitry Chuyko wrote:
> On 12/18/18 3:39 AM, David Holmes wrote:
>> On 11/12/2018 9:30 pm, Dmitry Chuyko wrote:
>>> On 12/11/18 4:03 AM, David Holmes wrote:
>>>> Hi Dmitry,
>>>>
>>>> On 11/12/2018 12:16 am, Dmitry Chuyko wrote:
>>>>> Hello,
>>>>>
>>>>> Please review a small fix in java_md_solinux.c: continuation is not 
>>>>> truly compatible with pthread_create start_routine's signature but 
>>>>> we control what actually happens. So it makes sense to add 
>>>>> intermediate void* cast to silence the error.
>>>>
>>>> I'd be tempted to fix the signature and get rid of all the casts.
>>>
>>> David, the signature is a signature of
>>>
>>> int JNICALL JavaMain(void * _args)
>>>
>>> It would be fun to change it. But still on Windows it is correctly 
>>> passed to _beginthreadex() and then return code is extracted with 
>>> GetExitCodeThread(). In case we want it to return void* the cast will 
>>> move there.
>>
>> I think the current double cast is truly ugly and an ifdef for 
>> windows, or a cast for Windows only would be an improvement.
> 
> I agree. Maybe making a wrapper function is not so ugly. If there are no 
> objections to changing beginning of the call stack it is quite easy to 
> implement. For consistency it may be done for all 3 points (posix unix, 
> posix mac, windows) or just for posix ones.
> 
> It looks like ifdef should be better as long as there are already 
> OS-specific parts in libjli. Again, if there are no objections to have 
> different JavaMain signatures on different platforms. In this case there 
> won't be a signature cast for Windows.

How about setting

#define THREAD_FUNC_RETURN int

in windows/java_md.h.

Then:

#ifndef THREAD_FUNC_RETURN
   #define THREAD_FUNC_RETURN void*
#endif

in java.h (after the other includes).

Then:

THREAD_FUNC_RETURN JNICALL
JavaMain(void * _args)

in java.c.

?

Cheers,
David


> 
> -Dmitry
> 
>>
>> But I won't impose that on you just to silence gcc 8.
>>
>> Cheers,
>> David
>>
>>> -Dmitry
>>>
>>>>
>>>> Cheers,
>>>> David
>>>>
>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8215009
>>>>> webrev: http://cr.openjdk.java.net/~dchuyko/8215009/webrev.00/
>>>>> testing: submit repo 
>>>>> (mach5-one-dchuyko-JDK-8215009-20181207-1625-13615: PASSED)
>>>>>
>>>>> -Dmitry
>>>>>


More information about the core-libs-dev mailing list