forked from swiftlang/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[AArch64] [Windows] Error out on unsupported symbol locations
These might occur in seemingly generic assembly. Previously when targeting COFF, they were silently ignored, which certainly won't give the right result. Instead clearly error out, to make it clear that the assembly needs to be adjusted for this target. Also change a preexisting report_fatal_error into a proper error message, pointing out the offending source instruction. This isn't strictly an internal error, as it can be triggered by user input. Differential Revision: https://reviews.llvm.org/D85242
- Loading branch information
Showing
2 changed files
with
69 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
// RUN: not llvm-mc -triple aarch64-win32 -filetype=obj %s -o /dev/null 2>&1 | FileCheck %s | ||
|
||
adrp x0, :got:symbol | ||
// CHECK: error: relocation variant :got: unsupported on COFF targets | ||
// CHECK-NEXT: adrp x0, :got:symbol | ||
// CHECK-NEXT: ^ | ||
|
||
ldr x0, [x0, :got_lo12:symbol] | ||
// CHECK: error: relocation variant :got_lo12: unsupported on COFF targets | ||
// CHECK-NEXT: ldr x0, [x0, :got_lo12:symbol] | ||
// CHECK-NEXT: ^ | ||
|
||
adrp x0, :tlsdesc:symbol | ||
// CHECK: error: relocation variant :tlsdesc: unsupported on COFF targets | ||
// CHECK-NEXT: adrp x0, :tlsdesc:symbol | ||
// CHECK-NEXT: ^ | ||
add x0, x0, :tlsdesc_lo12:symbol | ||
// CHECK: error: relocation variant :tlsdesc_lo12: unsupported on COFF targets | ||
// CHECK-NEXT: add x0, x0, :tlsdesc_lo12:symbol | ||
// CHECK-NEXT: ^ | ||
|
||
adrp x0, :gottprel:symbol | ||
// CHECK: error: relocation variant :gottprel: unsupported on COFF targets | ||
// CHECK-NEXT: adrp x0, :gottprel:symbol | ||
// CHECK-NEXT: ^ | ||
ldr x0, [x0, :gottprel_lo12:symbol] | ||
// CHECK: error: relocation variant :gottprel_lo12: unsupported on COFF targets | ||
// CHECK-NEXT: ldr x0, [x0, :gottprel_lo12:symbol] | ||
// CHECK-NEXT: ^ | ||
|
||
add x0, x0, #:dtprel_hi12:symbol, lsl #12 | ||
// CHECK: error: relocation variant :dtprel_hi12: unsupported on COFF targets | ||
// CHECK-NEXT: add x0, x0, #:dtprel_hi12:symbol, lsl #12 | ||
// CHECK-NEXT: ^ | ||
add x0, x0, :dtprel_lo12:symbol | ||
// CHECK: error: relocation variant :dtprel_lo12: unsupported on COFF targets | ||
// CHECK-NEXT: add x0, x0, :dtprel_lo12:symbol | ||
// CHECK-NEXT: ^ | ||
|
||
movz x0, #:abs_g0:symbol | ||
// CHECK: error: relocation type :abs_g0: unsupported on COFF targets | ||
// CHECK-NEXT: movz x0, #:abs_g0:symbol | ||
// CHECK-NEXT: ^ |