← 返回首页
GH-115802: Remove no-plt for Linux AArch64 by diegorusso · Pull Request #148238 · python/cpython · GitHub
Skip to content

Navigation Menu

Toggle navigation
Sign in
Appearance settings
Search or jump to...

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Resetting focus

GH-115802: Remove no-plt for Linux AArch64#148238

Merged
diegorusso merged 3 commits into
python:mainfrom
diegorusso:drop-no-plt
Apr 8, 2026
Merged

GH-115802: Remove no-plt for Linux AArch64#148238
diegorusso merged 3 commits into
python:mainfrom
diegorusso:drop-no-plt

Conversation

diegorusso commented Apr 8, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Removing -fno-plt makes Linux stencils use more direct call relocations and fewer GOT-indirect call sequences. On AArch64 it means CALL26 instead of adrp/ldr/blr GOT calls

This improves code size and some complexity of the JIT stencils. It reduces the amount of GOT-specific patching the JIT has to do.

diegorusso changed the title GH-115802: Remove no-plt for Linux targets GH-115802: Remove no-plt for Linux AArch64 Apr 8, 2026

diegorusso commented Apr 8, 2026
edited
Loading

Copy link
Copy Markdown
Contributor Author

I had to revert the x86-64 changes as they are more involved and require more investigation. I'm going to create a new issue for changing x86-64 Linux target: #148256

Copy link
Copy Markdown
Member

Do you have any numbers for this?

diegorusso commented Apr 8, 2026
edited
Loading

Copy link
Copy Markdown
Contributor Author

Do you have any numbers for this?

Relocation Before (-fno-plt) After (default) Delta
R_AARCH64_CALL26 0 368 +368
R_AARCH64_JUMP26 269 269 0
R_AARCH64_ADR_GOT_PAGE 831 461 -370
R_AARCH64_LD64_GOT_LO12_NC 829 461 -368

Before all the calls were done via GOT, now only 55% are done via the GOT and the rest using a direct bl

Hide details View details diegorusso merged commit e11315d into python:main Apr 8, 2026
82 checks passed
diegorusso deleted the drop-no-plt branch April 8, 2026 15:34

Copy link
Copy Markdown
Member

Sorry, didn’t have a chance to look at this yet. What happens if the jump is outside the 26 bit range? The trampolines get used? Were the trampolines being used at all before?

Copy link
Copy Markdown
Contributor Author

Sorry, didn’t have a chance to look at this yet. What happens if the jump is outside the 26 bit range? The trampolines get used? Were the trampolines being used at all before?

Earlier no trampolines were used at all. Now if a jump is out of range, the trampoline is generated.

ljfp pushed a commit to ljfp/cpython that referenced this pull request Apr 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Footer

© 2026 GitHub, Inc.