Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions aaelf64/aaelf64.rst
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,9 @@ changes to the content of the document for that release.
| | | - R_AARCH64_TLS_DTPREL can be used as a |
| | | static relocation as well as dynamic |
+---------------+--------------------+-----------------------------------------+
| 2026Q2 | 29\ :sup:`th` | - In `Call and Jump relocations`_ make |
| | | pc-relative relocaions signed. |
+---------------+--------------------+-----------------------------------------+

References
----------
Expand Down Expand Up @@ -1125,17 +1128,17 @@ See also table `GOT-relative data relocations`_.
| | | | | No overflow check. |
+---------+---------+----------------------+-----------+------------------------------------------------------------------+
| 261 | 3 | R\_<CLS>\_PREL32 | S + A - P | Write bits [31:0] of X at byte-aligned place P. |
| | | | | Check that -2\ :sup:`31` <= X < 2\ :sup:`32`. |
| | | | | Check that -2\ :sup:`31` <= X < 2\ :sup:`31`. |
+---------+---------+----------------------+-----------+------------------------------------------------------------------+
| 262 | 4 | R\_<CLS>\_PREL16 | S + A - P | Write bits [15:0] of X at byte-aligned place P. |
| | | | | Check that -2\ :sup:`15` <= X < 2\ :sup:`16`. |
| | | | | Check that -2\ :sup:`15` <= X < 2\ :sup:`15`. |
+---------+---------+----------------------+-----------+------------------------------------------------------------------+
| 314 | 29 | R\_<CLS>\_PLT32 | S + A - P | Write bits [31:0] of X at byte-aligned place P. |
| | | | | Check that -2\ :sup:`31` <= X < 2\ :sup:`31`. |
| | | | | See `Call and Jump relocations`_. |
+---------+---------+----------------------+-----------+------------------------------------------------------------------+

With the exception of ``R_<CLS>_PLT32``, these overflow ranges permit either signed or unsigned narrow values to be created from the intermediate result viewed as a 64-bit signed integer. If the place is intended to hold a narrow signed value and ``INTn_MAX < X <= UINTn_MAX``, no overflow will be detected but the positive result will be interpreted as a negative value.
For the relocations with a S + A operation, these overflow ranges permit either signed or unsigned narrow values to be created from the intermediate result viewed as a 64-bit signed integer. If the place is intended to hold a narrow signed value and ``INTn_MAX < X <= UINTn_MAX``, no overflow will be detected but the positive result will be interpreted as a negative value.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This feels a bit indirect of a way to just say "For the R_<CLS>_ABSn relocations"? Also, arguably the other relocations do have an S + A operation nested inside an S + A - P one.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My first draft said absolute relocations, then I'd need to define which ones were absolute and settled for S+A as that was the entry in the table.

Can try and reword using the relocation names and a prefix in a separate patch, likely next week though.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In principle this whole paragraph could be removed once we agree that ABS relocations are always unsigned (#402).



Static AArch64 relocations
Expand Down
Loading