Re: Help needed for debugging OCaml failure on m68k

Stéphane Glondu <[email protected]>
Newsgroups gmane.linux.debian.ports.68k
Message-ID <[email protected]>
Le 19/06/2024 à 12:45, John Paul Adrian Glaubitz a écrit :
>>>> To reproduce the problem quickly:
>>>> - unpack ocaml 5.2.0 source package
>>>> - ./configure --enable-imprecise-c99-float-ops
>>>> - make coldstart
>>>>
>>>> Is there some subtlety with thread local variables on m68k?
>>>
>>> Can you please try reproduce the issue on the porterbox mitchy.debian.net first to
>>> make sure it's not related to the QEMU build environment on the buildds?
>>
>> I can reproduce the issue on mitchy.debian.net.
> 
> OK, then it's actually a bug.
> 
> One important thing to know is that the natural alignment on m68k is actually 16 bits
> and not 32 bits which causes quite some issues with various upstream projects.
> 
> We're currently planning on switching the alignment on m68k to 32 bits and chances are
> that this could this issue as well.
> 
> Can you maybe try passing "-malign-int" to CFLAGS/CXXFLAGS when building OCaml on m68k
> to verify this hypothesis? Please note that this also breaks the SysV ABI, so it's not
> possible to easily do this on a per-package basis.

I observe the same behaviour with "-malign-int": the address of 
caml_state (a thread local variable) changes unexpectedly (goes from 
0x402e5fac to 0x402e7454) after the following goto:

 
https://salsa.debian.org/ocaml-team/ocaml/-/blob/debian/experimental/runtime/interp.c?ref_type=heads#L295

which leads to:

 
https://salsa.debian.org/ocaml-team/ocaml/-/blob/debian/experimental/runtime/interp.c?ref_type=heads#L819

...confirmed by adding:

   fprintf(stderr, "&caml_state = %p\n", &caml_state);

before the goto and after the "Instruct(BRANCH):".


Cheers,
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.