Skip to content

Commit 771db6f

Browse files
author
Chad Rosier
committedJan 18, 2017
[Assembler] Fix crash when assembling .quad for AArch32.
A 64-bit relocation does not exist in 32-bit ARMELF. Report an error instead of crashing. PR23870 Patch by Sanne Wouda (sanwou01). Differential Revision: https://reviews.llvm.org/D28851 llvm-svn: 292373
1 parent 8485cec commit 771db6f

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed
 

Diff for: ‎llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,8 @@ unsigned ARMAsmBackend::adjustFixupValue(const MCFixup &Fixup, uint64_t Value,
363363
unsigned Kind = Fixup.getKind();
364364
switch (Kind) {
365365
default:
366-
llvm_unreachable("Unknown fixup kind!");
366+
if (Ctx) Ctx->reportError(Fixup.getLoc(), "bad relocation fixup type");
367+
return 0;
367368
case FK_Data_1:
368369
case FK_Data_2:
369370
case FK_Data_4:

Diff for: ‎llvm/test/MC/ARM/quad-relocation.s

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@ RUN: not llvm-mc -triple arm-arm-none-eabi -filetype obj < %s -o /dev/null 2>&1 | FileCheck %s
2+
3+
.align 3
4+
symbol:
5+
.quad(symbol)
6+
7+
@ CHECK: error: bad relocation fixup type
8+
@ CHECK-NEXT: .quad(symbol)
9+
@ CHECK-NEXT: ^

0 commit comments

Comments
 (0)
Please sign in to comment.