See #125421 and #126294 for more information.
The runtime and ilc handle setting the thumb bit during compilation/emission of methods. ILC emits symbol definitions with the thumb bit, but crossgen emits method body symbols as RVAs of the code, and adds an addend to any relocs to the symbols. This meant that when the JIT would emit a reloc directly to the resumption stub, it needed to include the thumb bit addend only in crossgen compilations in #125421. It may be helpful to unify on a single behavior, either including the thumb bit in symbol definitions for method body nodes (make the field entries PCode) or making the resumption stub entrypoint a fixup.
ILC probably can't remove the thumb the method symbol definitions without messing up linking, so I don't see that as an option.
cc @MichalStrehovsky @jakobbotsch
See #125421 and #126294 for more information.
The runtime and ilc handle setting the thumb bit during compilation/emission of methods. ILC emits symbol definitions with the thumb bit, but crossgen emits method body symbols as RVAs of the code, and adds an addend to any relocs to the symbols. This meant that when the JIT would emit a reloc directly to the resumption stub, it needed to include the thumb bit addend only in crossgen compilations in #125421. It may be helpful to unify on a single behavior, either including the thumb bit in symbol definitions for method body nodes (make the field entries PCode) or making the resumption stub entrypoint a fixup.
ILC probably can't remove the thumb the method symbol definitions without messing up linking, so I don't see that as an option.
cc @MichalStrehovsky @jakobbotsch