[lld] 8653db9 - [lld-macho][test] Make reloc-subtractor.s robust
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 20 20:50:10 PDT 2023
Author: Fangrui Song
Date: 2023-06-20T20:50:06-07:00
New Revision: 8653db9503774c0f70a5ae3858ceaf180815fe3b
URL: https://github.com/llvm/llvm-project/commit/8653db9503774c0f70a5ae3858ceaf180815fe3b
DIFF: https://github.com/llvm/llvm-project/commit/8653db9503774c0f70a5ae3858ceaf180815fe3b.diff
LOG: [lld-macho][test] Make reloc-subtractor.s robust
The test requires that LLVM integreated assembler generates
SUBTRACTOR/UNSIGNED relocations for `.long _minuend_1 - _subtrahend_1`.
This currently works by luck because:
* `_minuend_1` and `_subtrahend_1` are in different fragments (separated by a MCFillFragment)
* and the result is known to be negative at parsing time.
D153096 will change the assembler to fold `.long _minuend_1 - _subtrahend_1` to
a constant, giving ld -order_file no chance to change the result.
To fix the test, move the referenced labels after the label differences to block
constant folding.
Note: you may think the model is somewhat broken and it is. The
.subsections_via_symbols mechanism does not block such constant folding. In
reality SUBTRACTOR/UNSIGNED is for references to another section, which does not
have the problem.
Reviewed By: #lld-macho, smeenai
Differential Revision: https://reviews.llvm.org/D153382
Added:
Modified:
lld/test/MachO/reloc-subtractor.s
Removed:
################################################################################
diff --git a/lld/test/MachO/reloc-subtractor.s b/lld/test/MachO/reloc-subtractor.s
index 550f27d352b57..24702731a2a2f 100644
--- a/lld/test/MachO/reloc-subtractor.s
+++ b/lld/test/MachO/reloc-subtractor.s
@@ -33,15 +33,6 @@ L_.minuend:
.space 16
.section __DATA,bar
-_minuend_1:
- .space 16
-_minuend_2:
- .space 16
-_subtrahend_1:
- .space 16
-_subtrahend_2:
- .space 16
-
_sub1:
.long _minuend_1 - _subtrahend_1
.space 12
@@ -58,6 +49,16 @@ _sub5:
.quad L_.minuend - _subtrahend_1 + 1
.space 8
+.section __DATA,bar
+_minuend_1:
+ .space 16
+_minuend_2:
+ .space 16
+_subtrahend_1:
+ .space 16
+_subtrahend_2:
+ .space 16
+
.text
.p2align 2
_main:
More information about the llvm-commits
mailing list