[foreign] RFR 8220163: jextract drivers used in jtreg tests should not depend on platform specific headers

Sundararajan Athijegannathan sundararajan.athijegannathan at oracle.com
Wed Mar 6 06:11:12 UTC 2019


+1

-Sundar

On 05/03/19, 9:26 PM, Maurizio Cimadamore wrote:
> Hi,
> in an attempt to make our jextract tests more reliable across 
> platforms and test environments, I went ahead and added the -nostdinc 
> option to the various jextract drivers we're using:
>
> http://cr.openjdk.java.net/~mcimadamore/panama/8220163/
>
> Two comments:
>
> * since <complex.h> is not in the set of standard header provided by 
> LLVM (which we can rely upon), I removed reference to 'complex' and 
> replaced them with __Complex (which is a keyword in C99, sadly not 
> supported by MSVC)
>
> * LibProc is also depending on availability of system headers at test 
> execution time - so I've ignored it for now; we can rewrite it in the 
> future by simply writing the annotated interfaces it needs by hand.
>
>
> In general, there are various degrees of portability in tests:
>
> 1) the test extracts no external header - then it's totally portable
>
> 2) the test extracts some external headers which are defined in the 
> <jdk-root>/conf/jextract folder - the test should be portable with 
> reasonable confidence
>
> 3) the test relies on some native compilation (e.g. compilation of a 
> shared native lib) which relies on a standard header (e.g. in stdlib) 
> - that should be portable enough (note we're not running jextract on 
> the header here, we're just compiling the library during the build, 
> when we DO have the headers)
>
> 4) the test attempts to extract some libraries not in 
> <jdk-root>/conf/jextract; the cross-platform behavior is unspecified; 
> could work on some platforms, not on others and, even with same 
> platforms, you might be at risk of depending on specifics of the 
> machine running the test (e.g. is MSVC installed or not)
>
>
> So, this patch tries to move away from (4) into any of the other (1, 
> 2, 3) approaches, which are significantly more portable and robust.
>
>
> Another way to make (4) safer, would be to run jextract on the headers 
> at build-time (in the same way native shared test lib are also built 
> at build-time). This is probably a better idea longer term, but it 
> likely requires lots of build hackery to get there. As such, this 
> patch looks like a reasonable compromise to get to a better place, but 
> suggestions are welcome, of course.
>
> Maurizio
>
>
>


More information about the panama-dev mailing list