Pranav Kant 8389d6fad7
[lld] Merge equivalent symbols found during ICF (#134342)
Fixes a correctness issue for AArch64 when ADRP and LDR instructions are
outlined in separate sections and sections are fed to ICF for
deduplication.

See test case (based on
https://github.com/llvm/llvm-project/issues/129122) for details. All
rodata.* sections are folded into a single section with ICF. This leads
to all f2_* function sections getting folded into one (as their
relocation target symbols g* belong to .rodata.g* sections that have
already been folded into one). Since relocations still refer original g*
symbols, we end up creating duplicate GOT entry for all such symbols.
This PR addresses that by tracking such folded symbols and create one
GOT entry for all such symbols.

Fixes https://github.com/llvm/llvm-project/issues/129122

Co-authored by: @jyknight
2025-04-21 15:17:03 -07:00
..
2024-08-30 10:50:56 -04:00
2023-05-02 09:34:48 +08:00
2023-08-21 09:11:51 -07:00
2024-01-22 09:09:46 -08:00
2024-07-28 12:38:10 -07:00
2024-06-14 23:20:50 -07:00
2023-07-25 17:06:07 +08:00
2023-07-25 17:06:07 +08:00
2024-11-23 12:46:35 -08:00
2023-07-18 17:57:31 -07:00
2024-11-29 13:00:36 -08:00
2024-07-31 12:57:23 -07:00