Open
Description
It looks like CREL relocation tables contain addends even for ARM32 and i386. This deviates from their psABIs, where addends are typically stored at relocated places.
For REL-type psABIs, can LLVM store addends at relocated places instead of in CREL tables?
I see two reasons for doing so:
- It aligns more closely with the baseline psABI and simplifies support for other tools that expect addends to be at relocated places rather than in the relocation table. This is our motivation (crel fails on i686 and armv7l since commit bf1ec5ac rui314/mold#1430).
- Since CREL was designed to save disk space, storing addends in CREL isn't ideal for these targets. Eliminating addends could save more bytes per relocation.