Subject: Re: bug#49990: [core-updates-frozen] Ant-bootstrap broken by classpath-bootstrap

From: Ludovic Courtès <[email-masked]>
Date: Wed, 01 Sep 2021 15:53:52 +0200

Hi,

Julien Lepiller <[email-masked]> skribis:

> Le Wed, 01 Sep 2021 00:32:39 +0200,
> Ludovic Courtès <[email-masked]> a écrit :
>
>> Hello!
>> 
>> As discussed on IRC, I had a semi-victory with the attached patch,
>> which works around a miscompilation issue in
>> ‘Java_java_io_VMFile_isFile’.
>
> another possibility I tested was to disable optimization by adding
> CFLAGS=-O0 to the configure-flags. This creates an unoptimized version,
> but that should be fine since it's only for the bootstrap. However, I
> noticed that my debug messages from my previous attempt were still
> visible when compiling icedtea. I don't know what happened, since
> there is at least another classpath version before it.
>
>> 
>> Unfortunately, with this patch applied, ‘ant-bootstrap’ fails to build
>> with:

The root cause is that, even tough we’re passing “-classpath
build/classes:src”, only the first element of the classpath is
searched.  If we pass “-classpath foobar:build/classes”, then Main.class
is not found.  That suggests another problem with ‘stat’-related
functions.

>> Ideas?  What a wonderful puzzle we have!  :-)

> Even more wonderful is the fact I do not get this error at all when
> using CFLAGS=-O0, but I do with your patch. I didn't have any issue
> either with my previous attempt with debugging. Could there be other
> problems with optimizations in classpath?

Hmm -O0 is brute-force.  It doesn’t work for me though if I also remove
the ‘remove-call-to-free’ phase, though.

I also tried this Classpath patch:

diff --git a/include/jni_md.h b/include/jni_md.h
index 989dbfe..f7867d7 100644
--- a/include/jni_md.h
+++ b/include/jni_md.h
@@ -32,7 +32,7 @@ executable file might be covered by the GNU General Public License. */
 #define JNIEXPORT
 #define JNIIMPORT
 
-typedef unsigned char jboolean;
+typedef int jboolean;
 typedef signed char jbyte;
 typedef unsigned short jchar;
 typedef short jshort;

It seems to have the same effect as my initial patch.

I’m lacking inspiration now!

Ludo’.