From e6108850bda002d61ba69f5542ecf7e9546ad5dd Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Fri, 24 Jan 2025 10:06:31 -0800 Subject: [PATCH 1/2] -mcmodel=medium --- Tools/jit/_stencils.py | 20 ++++---------------- Tools/jit/_targets.py | 2 +- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/Tools/jit/_stencils.py b/Tools/jit/_stencils.py index ee761a73fa808a..ff1d567fab22b0 100644 --- a/Tools/jit/_stencils.py +++ b/Tools/jit/_stencils.py @@ -84,9 +84,8 @@ class HoleValue(enum.Enum): "R_AARCH64_MOVW_UABS_G3": "patch_aarch64_16d", # x86_64-unknown-linux-gnu: "R_X86_64_64": "patch_64", - "R_X86_64_GOTPCREL": "patch_32r", "R_X86_64_GOTPCRELX": "patch_x86_64_32rx", - "R_X86_64_PC32": "patch_32r", + "R_X86_64_PLT32": "patch_32r", "R_X86_64_REX_GOTPCRELX": "patch_x86_64_32rx", # x86_64-apple-darwin: "X86_64_RELOC_BRANCH": "patch_32r", @@ -222,11 +221,11 @@ def remove_jump(self, *, alignment: int = 1) -> None: offset -= 3 case Hole( offset=offset, - kind="IMAGE_REL_I386_REL32" | "X86_64_RELOC_BRANCH", + kind="IMAGE_REL_I386_REL32" | "R_X86_64_PLT32" | "X86_64_RELOC_BRANCH", value=HoleValue.CONTINUE, symbol=None, - addend=-4, - ) as hole: + addend=addend, + ) as hole if _signed(addend) == -4: # jmp 5 jump = b"\xE9\x00\x00\x00\x00" offset -= 1 @@ -239,17 +238,6 @@ def remove_jump(self, *, alignment: int = 1) -> None: ) as hole: # b #4 jump = b"\x00\x00\x00\x14" - case Hole( - offset=offset, - kind="R_X86_64_GOTPCRELX", - value=HoleValue.GOT, - symbol="_JIT_CONTINUE", - addend=addend, - ) as hole: - assert _signed(addend) == -4 - # jmp qword ptr [rip] - jump = b"\xFF\x25\x00\x00\x00\x00" - offset -= 2 case _: return if self.body[offset:] == jump and offset % alignment == 0: diff --git a/Tools/jit/_targets.py b/Tools/jit/_targets.py index d23ced19842347..2d750ef33ffbeb 100644 --- a/Tools/jit/_targets.py +++ b/Tools/jit/_targets.py @@ -513,7 +513,7 @@ def get_target(host: str) -> _COFF | _ELF | _MachO: args = ["-fms-runtime-lib=dll"] target = _COFF(host, args=args) elif re.fullmatch(r"x86_64-.*-linux-gnu", host): - args = ["-fpic"] + args = ["-fno-pic", "-mcmodel=medium", "-mlarge-data-threshold=0"] target = _ELF(host, args=args) else: raise ValueError(host) From 7773ceaa0ee6c63a6aa696383306c10b08fa03a4 Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Thu, 13 Feb 2025 12:42:03 -0800 Subject: [PATCH 2/2] blurb add --- .../2025-02-13-12-31-53.gh-issue-115802.0kN4xM.rst | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-02-13-12-31-53.gh-issue-115802.0kN4xM.rst diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-02-13-12-31-53.gh-issue-115802.0kN4xM.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-02-13-12-31-53.gh-issue-115802.0kN4xM.rst new file mode 100644 index 00000000000000..b645c6b9e1cf20 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-02-13-12-31-53.gh-issue-115802.0kN4xM.rst @@ -0,0 +1,2 @@ +Use the more efficient "medium" code model for JIT-compiled code on +supported platforms.