[foreign] libEndianTest fails on windows
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Fri Mar 1 17:24:47 UTC 2019
I had issues on my macro patch related to missing <stdint.h> when
running tests - but you made me realize of an issue: the macro reparser
was NOT readding clang's headers in the include list... so that might be
the culprit.
I'll try.
Maurizio
On 01/03/2019 17:07, Henry Jen wrote:
> The libEndianTest is to be compiled, stdint.h is standard part of toolchain, so this is not an issue.
>
> Nevertheless, test should be required before push. My mistake for trusting past test result and that turns out the fix wasn’t included.
>
> Cheers,
> Henry
>
>> On Mar 1, 2019, at 8:37 AM, Maurizio Cimadamore <maurizio.cimadamore at oracle.com> wrote:
>>
>> Sorry, I misread the patch.
>>
>> I think we should give it a run on our internal test infra, which is the one that is used to generate the EA snapshots. If it passes there on a machine that does NOT have MSVC installed, ok.
>>
>> Maurizio
>>
>> On 01/03/2019 16:28, Jorn Vernee wrote:
>>> This actually fixes the test. The missing lib is include with that `#pragma comment(lib, ...)` (didn't know that that existed).
>>>
>>> So, should probably push this as well to turn on the test in Windows?
>>>
>>> Jorn
>>>
>>> Maurizio Cimadamore schreef op 2019-03-01 17:23:
>>>> Already pushed something like that, but also had to disable the
>>>> header, to prevent warnings and compilation errors from breaking the
>>>> build.
>>>>
>>>> Maurizio
>>>>
>>>> On 01/03/2019 16:11, Henry Jen wrote:
>>>>> Uh, I know why, I didn’t merge the patch back in to my main laptop.
>>>>>
>>>>> Here is the webrev[1] fix the issue.
>>>>>
>>>>> [1] http://cr.openjdk.java.net/~henryjen/panama/8219975/webrev/
>>>>>
>>>>> Cheers,
>>>>> Henry
>>>>>
>>>>>
>>>>>> On Mar 1, 2019, at 7:48 AM, Henry Jen <henry.jen at oracle.com> wrote:
>>>>>>
>>>>>> It’s odd, I did a test before the first patch, and not remember I modify this test after…
>>>>>>
>>>>>> Sorry for the inconvenience, I’ll take a look.
>>>>>>
>>>>>> Cheers,
>>>>>> Henry
>>>>>>
>>>>>>> On Mar 1, 2019, at 5:24 AM, Maurizio Cimadamore <maurizio.cimadamore at oracle.com> wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 01/03/2019 13:16, Jorn Vernee wrote:
>>>>>>>> Can confirm. The fix for that is to move the stdint.h include outside of the compiler switch block. Also, the return type of the declared functions needs to be `long long` or unint64_t to avoid lossy conversion warnings.
>>>>>>>>
>>>>>>>> But! Even after that the linker is choking on a missing library dependency:
>>>>>>>>
>>>>>>>> libEndianTest.obj : error LNK2019: unresolved external symbol __imp_htonl referenced in function calc
>>>>>>>>
>>>>>>>> To fix that would probably take some build system tinkering :/
>>>>>>>>
>>>>>>>> Maybe we can re-write the test without the dependency?
>>>>>>> I got to the same place, and then I gave up. I need to be able to build/test on all platforms, so I will shortly submit a webrev which disables the test on Win.
>>>>>>>
>>>>>>> We can rewrite the test at some later point.
>>>>>>>
>>>>>>> Maurizio
>>>>>>>
>>>>>>>> Jorn
>>>>>>>>
>>>>>>>> Maurizio Cimadamore schreef op 2019-03-01 12:19:
>>>>>>>>> Hi,
>>>>>>>>> The new endianness tests fails on windows platform:
>>>>>>>>>
>>>>>>>>> === Output from failing command(s) repeated here ===
>>>>>>>>> jib > * For target
>>>>>>>>> support_test_jdk_jtreg_native_support_libEndianTest_libEndianTest.obj:
>>>>>>>>> jib > libEndianTest.c
>>>>>>>>> jib >
>>>>>>>>> t:/workspace/open/test/jdk/java/foreign/types/libEndianTest.c(43):
>>>>>>>>> error C2061: syntax error: identifier 'uint16_t'
>>>>>>>>> jib >
>>>>>>>>> t:/workspace/open/test/jdk/java/foreign/types/libEndianTest.c(44):
>>>>>>>>> error C2061: syntax error: identifier 'hl'
>>>>>>>>> jib >
>>>>>>>>> t:/workspace/open/test/jdk/java/foreign/types/libEndianTest.c(44):
>>>>>>>>> error C2059: syntax error: ';'
>>>>>>>>> jib >
>>>>>>>>> t:/workspace/open/test/jdk/java/foreign/types/libEndianTest.c(45):
>>>>>>>>> error C2061: syntax error: identifier 'hll'
>>>>>>>>> jib >
>>>>>>>>> t:/workspace/open/test/jdk/java/foreign/types/libEndianTest.c(45):
>>>>>>>>> error C2059: syntax error: ';'
>>>>>>>>> jib >
>>>>>>>>> t:/workspace/open/test/jdk/java/foreign/types/libEndianTest.c(46):
>>>>>>>>> error C2059: syntax error: '}'
>>>>>>>>> jib >
>>>>>>>>> t:/workspace/open/test/jdk/java/foreign/types/libEndianTest.c(47):
>>>>>>>>> error C2061: syntax error: identifier 'ns'
>>>>>>>>> jib >
>>>>>>>>> t:/workspace/open/test/jdk/java/foreign/types/libEndianTest.c(47):
>>>>>>>>> error C2059: syntax error: ';'
>>>>>>>>> jib >
>>>>>>>>> t:/workspace/open/test/jdk/java/foreign/types/libEndianTest.c(48):
>>>>>>>>> error C2061: syntax error: identifier 'nl'
>>>>>>>>> jib >
>>>>>>>>> t:/workspace/open/test/jdk/java/foreign/types/libEndianTest.c(48):
>>>>>>>>> error C2059: syntax error: ';'
>>>>>>>>> jib >
>>>>>>>>> t:/workspace/open/test/jdk/java/foreign/types/libEndianTest.c(49):
>>>>>>>>> error C2061: syntax error: identifier 'nll'
>>>>>>>>> jib > ... (rest of output omitted)
>>>>>>>>>
>>>>>>>>> I think it's an issue with stdint.h not being included...
>>>>>>>>>
>>>>>>>>> Maurizio
More information about the panama-dev
mailing list