Files
binutils-gdb/ld/emulparams
Szabolcs Nagy a71d876801 aarch64: Add DT_RELR support
The logic to decide if an input relocation for a symbol becomes a
particular kind of output relocation is one of the hard to maintain
parts of the bfd ld backend, since it is partially repeated across

 elfNN_aarch64_check_relocs (where dynamic relocations are counted per
 symbol and input section),

 elfNN_aarch64_late_size_sections (where relocation sections are sized
 and GOT offsets assigned),

 elfNN_aarch64_relocate_section (where most relocations are applied and
 output to a relocation section),

 elfNN_aarch64_finish_dynamic_symbol (where some of the GOT
 relocations are applied and output).

The DT_RELR support adds another layer to this complexity: after the
output relocation sections are sized, so all dynamic relocations are
accounted (in elfNN_aarch64_late_size_sections), we scan the symbols
and input relocations again to decide which ones become relative
relocations that can be packed. The sizes of the relocation sections
are updated accordingly. This logic must be consistent with the code
that applies the relocs later so each relative relocation is emitted
exactly once: either in .rela.* or packed in .relr.dyn.

Sizing of .relr.dyn is done via elfNN_aarch64_size_relative_relocs that
may be called repeatedly whenever the layout changes since an address
change can affect the size of the packed format. Then the final content
is emitted in elfNN_aarch64_finish_relative_relocs, that is called
after the layout is final and before relocations are applied and
emitted. These hooks are only called if DT_RELR is enabled.

We only pack relative relocs that are known to be aligned in the output
during .relr.dyn sizing, the potentially unaligned relative relocs are
emitted normally (in .rela.*, not packed), because the format requires
aligned addresses.
2024-05-31 09:47:50 +01:00
..
2019-09-11 13:45:18 +09:30
2024-05-31 09:47:50 +01:00
2024-05-31 09:47:50 +01:00
2022-12-14 21:45:04 +10:30
2019-09-11 13:45:18 +09:30
2024-05-31 09:47:50 +01:00
2018-10-13 20:33:23 +10:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2022-12-14 21:45:04 +10:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2021-03-31 10:49:23 +10:30
2021-03-31 10:49:23 +10:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2022-01-12 06:04:29 -08:00
2021-03-31 10:49:23 +10:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2021-03-31 10:49:23 +10:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2021-03-31 10:49:23 +10:30
2021-10-24 21:36:32 +10:30
2021-10-24 21:36:32 +10:30
2021-03-31 10:49:23 +10:30
2021-03-31 10:49:23 +10:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2022-12-14 21:45:04 +10:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2021-03-31 10:49:23 +10:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2023-08-02 12:06:23 +01:00
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2021-10-24 21:36:32 +10:30
2022-07-25 09:49:41 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2022-12-14 21:45:04 +10:30
2023-08-02 12:06:23 +01:00
2022-12-14 21:45:04 +10:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-05-30 01:01:42 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2021-03-31 10:49:23 +10:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2021-03-31 10:49:23 +10:30
2019-09-11 13:45:18 +09:30
2019-09-11 13:45:18 +09:30
2021-03-31 10:49:23 +10:30
2020-11-03 08:56:27 +00:00
2018-07-10 23:59:07 +09:30

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

The files in this directory are read by genscripts.sh as shell commands.
They set parameters for the emulations.

Copyright (C) 2012-2024 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.