On 2023/07/24 12:19, Laurence Tratt wrote: > On an Intel amd64 machine with the latest snapshot (Jul 24th), net/unison > dies for me on startup with the culprit being `caml_startup__code_begin`. I > guess this is because O'Caml hasn't been updated sufficiently for IBT? Here's > what I see: > > $ unison -h > fish: Job 1, 'unison -h' terminated by signal SIGILL (Illegal instruction) > $ gdb unison > GNU gdb 6.3 > Copyright 2004 Free Software Foundation, Inc. > GDB is free software, covered by the GNU General Public License, and you are > welcome to change it and/or distribute copies of it under certain > conditions. > Type "show copying" to see the conditions. > There is absolutely no warranty for GDB. Type "show warranty" for details. > This GDB was configured as "amd64-unknown-openbsd7.3"... > (gdb) run > Starting program: /usr/local/bin/unison > Error while reading shared library symbols: > Dwarf Error: wrong version in compilation unit header (is 4, should be 2) > [in module /usr/libexec/ld.so] > > Program received signal SIGILL, Illegal instruction. > 0x00000d8d44d79a30 in caml_startup__code_begin () from /usr/local/bin/unison > > However, Unison on this same snapshot works fine on an AMD amd64 > machine. AFAIK the main difference between the two is the lack of IBT > support on the AMD machine. > > > Laurie >
Yes that's exactly it. I have just committed changes to ocaml ports to use USE_NOBTCFI=Yes to disable branch tracking. They can be removed easily if the ocaml compiler gains support for generating the landing pad nops.
