RFR: 8232084: HotSpot build failed with GCC 9.2.1
Yasumasa Suenaga
suenaga at oss.nttdata.com
Thu Oct 10 08:14:11 UTC 2019
> I saw the discussion in some OpenJDK mail list #pragma is uncomfortable
> because it disables to find implicit bug - but I could not find out them.
It also includes -Wno-* option in GCC.
Yasumasa
On 2019/10/10 17:11, Yasumasa Suenaga wrote:
> On 2019/10/10 17:06, serguei.spitsyn at oracle.com wrote:
>> On 10/10/19 00:42, David Holmes wrote:
>>> On 10/10/2019 5:25 pm, serguei.spitsyn at oracle.com wrote:
>>>> On 10/9/19 23:39, Chris Plummer wrote:
>>>>> I think the +1 gets rid of the warning, but it also means there is no need for the following line that sets buf[len].
>>>>
>>>> Yes, it was my guess.
>>>> Then I agree this statement must be removed: buf[len] = '\0';
>>>
>>> I don't think so!
>>>
>>> Given this description:
>>>
>>> template <> void DCmdArgument<bool>::parse_value(const char* str,
>>> size_t len, TRAPS) {
>>> // len is the length of the current token starting at str
>>>
>>> it is not evident to me that we are even dealing with a NUL-terminated str. Rather str is the start of the next token, with length len, after which may be another token and so forth. So we may be passing in:
>>>
>>> str = "token1 token2"
>>> len = 6
>>>
>>> so we still need the explicit buf[len]='\0'
>>
>> Agreed.
>> Then I do not like this solution to get rid of a false positive warning with this:
>> strncpy(buf, str, len + 1);
>>
>> The solutions with #pragma and memcpy() look better.
>
> I saw the discussion in some OpenJDK mail list #pragma is uncomfortable
> because it disables to find implicit bug - but I could not find out them.
>
> So I want to fix to use memcpy() only.
>
>
> Yasumasa
>
>
>> Thanks,
>> Serguei
>>
>>>
>>> David
>>>
>>>> Thanks,
>>>> Serguei
>>>>
>>>>
>>>>>
>>>>> Chris
>>>>>
>>>>> On 10/9/19 11:31 PM, serguei.spitsyn at oracle.com wrote:
>>>>>> Hi Yasumasa,
>>>>>>
>>>>>> The fix in src/hotspot/cpu/x86/macroAssembler_x86.hpp looks Okay.
>>>>>>
>>>>>> But I don't understand why you need this fix in src/hotspot/share/services/diagnosticArgument.cpp ?:
>>>>>> char* buf = NEW_RESOURCE_ARRAY(char, len + 1);
>>>>>> - strncpy(buf, str, len);
>>>>>> + strncpy(buf, str, len + 1);
>>>>>> buf[len] = '\0';
>>>>>> The buf[len] is set to '\0' anyway.
>>>>>>
>>>>>> Thanks,
>>>>>> Serguei
>>>>>>
>>>>>>
>>>>>> On 10/9/19 22:55, Yasumasa Suenaga wrote:
>>>>>>> Hi all,
>>>>>>>
>>>>>>> Please review this change:
>>>>>>>
>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8232084
>>>>>>> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8232084/webrev.00/
>>>>>>>
>>>>>>>
>>>>>>> I tried to build OpenJDK on Fedora 30 x64 with GCC 9.2.1, but it was failed in
>>>>>>> macroAssembler_x86.hpp and diagnosticArgument.cpp .
>>>>>>> (Please see JBS for details)
>>>>>>>
>>>>>>> This change has passed tests on submit repo.
>>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Yasumasa (ysuenaga)
>>>>>>
>>>>>
>>>>>
>>>>
>>
More information about the hotspot-compiler-dev
mailing list