[ARM] Handle fixup_arm_pcrel_9 correctly on big-endian targets

Summary:
The getFixupKindContainerSizeBytes function returns the size of the
instruction containing a given fixup. Currently fixup_arm_pcrel_9 is
not handled in this function, this causes an assertion failure in
the debug build and incorrect codegen in the release build.

This patch fixes the problem.

Reviewers: ostannard, simon_tatham

Reviewed By: ostannard

Subscribers: javed.absar, kristof.beyls, hiraditya, pbarrio, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D63778

llvm-svn: 364404
This commit is contained in:
Mikhail Maltsev 2019-06-26 10:48:40 +00:00
parent 051f2ef225
commit 4609ef5d02
2 changed files with 19 additions and 0 deletions

View File

@ -1000,6 +1000,7 @@ static unsigned getFixupKindContainerSizeBytes(unsigned Kind) {
case ARM::fixup_arm_pcrel_10_unscaled:
case ARM::fixup_arm_ldst_pcrel_12:
case ARM::fixup_arm_pcrel_10:
case ARM::fixup_arm_pcrel_9:
case ARM::fixup_arm_adr_pcrel_12:
case ARM::fixup_arm_uncondbl:
case ARM::fixup_arm_condbl:

View File

@ -0,0 +1,18 @@
// RUN: llvm-mc -triple=armebv8.2a-eabi -filetype=obj < %s | llvm-objdump -s - | FileCheck %s --check-prefix=CHECK-BE
// RUN: llvm-mc -triple=armv8.2a-eabi -filetype=obj < %s | llvm-objdump -s - | FileCheck %s --check-prefix=CHECK-LE
.text
.fpu crypto-neon-fp-armv8
.arch_extension fp16
.section s_pcrel_9,"ax",%progbits
// CHECK-BE-LABEL: Contents of section s_pcrel_9
// CHECK-LE-LABEL: Contents of section s_pcrel_9
// CHECK-BE: 0000 ed9f0902
// CHECK-LE: 0000 02099fed
vldr.16 s0, .LCPI0_0
nop
bx lr
.LCPI0_0:
.short 28012