[PATCH] D153382: [lld-macho][test] Make reloc-subtractor.s robust

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 20 15:24:40 PDT 2023


MaskRay created this revision.
MaskRay added reviewers: lld-macho, int3, smeenai, nickdesaulniers.
Herald added projects: lld-macho, All.
MaskRay requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

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 <https://reviews.llvm.org/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.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D153382

Files:
  lld/test/MachO/reloc-subtractor.s


Index: lld/test/MachO/reloc-subtractor.s
===================================================================
--- lld/test/MachO/reloc-subtractor.s
+++ lld/test/MachO/reloc-subtractor.s
@@ -33,15 +33,6 @@
   .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 @@
   .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:


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D153382.533063.patch
Type: text/x-patch
Size: 642 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230620/2e98ecf4/attachment.bin>


More information about the llvm-commits mailing list