(cited the wrong JBS issue, the correct one is https://bugs.openjdk.java.net/browse/JDK-8284997)
On Fri, May 27, 2022 at 3:12 PM Thomas Stüfe <thomas.stu...@gmail.com> wrote: > Hi, > > I am investigating the arm-specific problem > https://bugs.openjdk.java.net/browse/JDK-8283326. It looks like the > error is caused by arm- and thumb-code interleaving: GCC-compiled code, in > thumb mode, calls into a static assembler subroutine that has been compiled > into arm mode, but the caller uses the wrong call instruction and we call > into SafeFetch without switching into arm mode (gcc-generated code uses bl > instead of blx). > > This problem only happens if the OpenJDK was built with a GCC that itself > was built with --with-mode=thumb. Without that option, GCC defaults to arm > code generation, and that hides the error I describe above. > > My question is: Is this by design? It seems strange to leave this decision > up to whoever built the toolchain. Should we not fix the arm/thumb decision > at build time with either one of -mthumb or -marm? > > Thanks, Thomas > > P.S. I found one possible solution for my particular problem was to add > `.type function` to the static assembler routine. That caused gcc to use > the correct jump instruction (blx instead of bl). But I am not sure this is > the best solution, maybe best would be to just use the same mode for all > hotspot compilation units. >