[foreign] libEndianTest fails on windows
Henry Jen
henry.jen at oracle.com
Fri Mar 1 17:07:07 UTC 2019
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