Ping...

Apply for a sponsor for this simple patch. 

I doubt if I could have permission to file the issue/bug report anywhere, could 
anyone kindly give a guidance? Thanks.

Regards
Patrick

-----Original Message-----
From: core-libs-dev <core-libs-dev-boun...@openjdk.java.net> On Behalf Of 
Patrick Zhang
Sent: Thursday, December 6, 2018 4:28 PM
To: core-libs-dev@openjdk.java.net; David Holmes <david.hol...@oracle.com>
Cc: Florian Weimer <fwei...@redhat.com>
Subject: RE: OpenJDK fails to build with GCC when the #include<time.h> inside 
zip.cpp comes from a non-sysroot path

To All,
Who could help sponsor this simple patch (may require a wide range of building 
tests)? Thanks in advance. 

Regards
Patrick

-----Original Message-----
From: David Holmes <david.hol...@oracle.com>
Sent: Monday, December 3, 2018 8:11 AM
To: Patrick Zhang <patr...@os.amperecomputing.com>; Florian Weimer 
<fwei...@redhat.com>
Cc: core-libs-dev@openjdk.java.net
Subject: Re: OpenJDK fails to build with GCC when the #include<time.h> inside 
zip.cpp comes from a non-sysroot path

Hi Patrick,

On 30/11/2018 11:41 pm, Patrick Zhang wrote:
> Thanks Florian, the "-isystem /usr/include" is helpful to my case, I see 
> gcc.gnu.org says that "it gets the same special treatment that is applied to 
> the standard system directories". As such the issue gets hidden (error 
> suppressed).
> 
> Hi David,
> Thanks for your suggestion. My intention was to limit the influence range as 
> far as I could since I don't have other systems except CentOS/Fedora to 
> verify (even just smoke test) all paths.

You'd need some assistance testing a wider range of platforms but that can be 
arranged.

> In addition, if we make below update, does it mean the macro " _REENTRANT " 
> can be removed too? This is probably the only place where _REENTRANT gets 
> used AFAIK.
_REENTRANT is also examined by system headers. It's probably legacy but would 
require more investigation.

Cheers,
David

> #ifdef _MSC_VER // Windows
> #define gmtime_r(t, s) gmtime(t)
> #endif
> 
> Regards
> Patrick
> 
> -----Original Message-----
> From: Florian Weimer <fwei...@redhat.com>
> Sent: Thursday, November 29, 2018 8:02 PM
> To: David Holmes <david.hol...@oracle.com>
> Cc: Patrick Zhang <patr...@os.amperecomputing.com>; 
> jdk-...@openjdk.java.net; core-libs-dev@openjdk.java.net
> Subject: Re: OpenJDK fails to build with GCC when the #include<time.h> 
> inside zip.cpp comes from a non-sysroot path
> 
> * David Holmes:
> 
>> This should really be being discussed on core-libs-dev.
> 
> Okay, moving the conversation.
> 
>>> diff -r 70a423caee44 src/share/native/com/sun/java/util/jar/pack/zip.cpp
>>> --- a/src/share/native/com/sun/java/util/jar/pack/zip.cpp   Tue Oct 09 
>>> 08:33:33 2018 +0100
>>> +++ b/src/share/native/com/sun/java/util/jar/pack/zip.cpp   Wed Nov 28 
>>> 22:13:12 2018 -0500
>>> @@ -415,9 +415,7 @@
>>>        ((uLong)h << 11) | ((uLong)m << 5) | ((uLong)s >> 1);
>>>    }
>>>    -#ifdef _REENTRANT // solaris
>>> -extern "C" struct tm *gmtime_r(const time_t *, struct tm *); -#else
>>> +#if !defined(_REENTRANT) // linux
>>>    #define gmtime_r(t, s) gmtime(t)
>>>    #endif
>>>    /*
>>
>> Under the theme "two wrongs don't make a right" the use of _REENTRANT 
>> here is totally inappropriate AFAICS. It seems to be a misguided 
>> attempt at determining whether we need the thread-safe gmtime_r or 
>> not
>> - and the answer to that should always be yes IMHO.
>>
>> We define _REENTRANT for:
>> - linux
>> - gcc
>> - xlc
>>
>> So the original code will define:
>>
>> extern "C" struct tm *gmtime_r(const time_t *, struct tm *);
>>
>> for linux (and AIX with xlc?) but not Solaris, OS X or Windows.
>>
>> But Solaris has gmtime_r anyway. So the existing code seems a really 
>> convoluted hack. AFAICS we have gmtime_r everywhere but Windows 
>> (where gmtime is already thread-safe). So it seems to me that all we 
>> should need here is:
>>
>> -#ifdef _REENTRANT // solaris
>> -extern "C" struct tm *gmtime_r(const time_t *, struct tm *); -#else
>> +#ifdef _MSC_VER // Windows
>>   #define gmtime_r(t, s) gmtime(t)
>>   #endif
> 
> That looks much cleaner.
> 
> Thanks,
> Florian
> 

Reply via email to