[llvm] r209200 - ARMEB: Additional test files for ARM fixups
Christian Pirker
cpirker at a-bix.com
Tue May 20 02:24:38 PDT 2014
Author: cpirker
Date: Tue May 20 04:24:37 2014
New Revision: 209200
URL: http://llvm.org/viewvc/llvm-project?rev=209200&view=rev
Log:
ARMEB: Additional test files for ARM fixups
Added:
llvm/trunk/test/MC/ARM/big-endian-arm-fixup.s
llvm/trunk/test/MC/ARM/big-endian-thumb-fixup.s
llvm/trunk/test/MC/ARM/big-endian-thumb2-fixup.s
Modified:
llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp?rev=209200&r1=209199&r2=209200&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp (original)
+++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp Tue May 20 04:24:37 2014
@@ -742,8 +742,11 @@ void ARMAsmBackend::applyFixup(const MCF
// Used to point to big endian bytes.
unsigned FullSizeBytes;
- if (!IsLittleEndian)
+ if (!IsLittleEndian) {
FullSizeBytes = getFixupKindContainerSizeBytes(Fixup.getKind());
+ assert((Offset + FullSizeBytes) <= DataSize && "Invalid fixup size!");
+ assert(NumBytes <= FullSizeBytes && "Invalid fixup size!");
+ }
// For each byte of the fragment that the fixup touches, mask in the bits from
// the fixup value. The Value has been "split up" into the appropriate
Added: llvm/trunk/test/MC/ARM/big-endian-arm-fixup.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/big-endian-arm-fixup.s?rev=209200&view=auto
==============================================================================
--- llvm/trunk/test/MC/ARM/big-endian-arm-fixup.s (added)
+++ llvm/trunk/test/MC/ARM/big-endian-arm-fixup.s Tue May 20 04:24:37 2014
@@ -0,0 +1,107 @@
+// RUN: llvm-mc -triple=armeb-eabi -mattr v7,vfp2 -filetype=obj < %s | llvm-objdump -s - | FileCheck %s
+
+ .syntax unified
+ .text
+ .align 2
+ .code 32
+
+ at ARM::fixup_arm_condbl
+.section s_condbl,"ax",%progbits
+// CHECK-LABEL: Contents of section s_condbl
+// CHECK: 0000 0b000002
+ bleq condbl_label+16
+condbl_label:
+
+ at ARM::fixup_arm_uncondbl
+.section s_uncondbl,"ax",%progbits
+// CHECK-LABEL: Contents of section s_uncondbl
+// CHECK: 0000 eb000002
+ bl uncond_label+16
+uncond_label:
+
+ at ARM::fixup_arm_blx
+.section s_blx,"ax",%progbits
+// CHECK-LABEL: Contents of section s_blx
+// CHECK: 0000 fa000002
+ blx blx_label+16
+blx_label:
+
+ at ARM::fixup_arm_uncondbranch
+.section s_uncondbranch,"ax",%progbits
+// CHECK-LABEL: Contents of section s_uncondbranch
+// CHECK: 0000 ea000003
+ b uncondbranch_label+16
+uncondbranch_label:
+
+ at ARM::fixup_arm_condbranch
+.section s_condbranch,"ax",%progbits
+// CHECK-LABEL: Contents of section s_condbranch
+// CHECK: 0000 0a000003
+ beq condbranch_label+16
+condbranch_label:
+
+ at ARM::fixup_arm_pcrel_10
+.section s_arm_pcrel_10,"ax",%progbits
+// CHECK-LABEL: Contents of section s_arm_pcrel_10
+// CHECK: 0000 ed9f0b03
+ vldr d0, arm_pcrel_10_label+16
+arm_pcrel_10_label:
+
+ at ARM::fixup_arm_ldst_pcrel_12
+.section s_arm_ldst_pcrel_12,"ax",%progbits
+// CHECK-LABEL: Contents of section s_arm_ldst_pcrel_12
+// CHECK: 0000 e59f000c
+ ldr r0, arm_ldst_pcrel_12_label+16
+arm_ldst_pcrel_12_label:
+
+ at ARM::fixup_arm_adr_pcrel_12
+.section s_arm_adr_pcrel_12,"ax",%progbits
+// CHECK-LABEL: Contents of section s_arm_adr_pcrel_12
+// CHECK: 0000 e28f0010
+ adr r0, arm_adr_pcrel_12_label+20
+arm_adr_pcrel_12_label:
+
+ at ARM::fixup_arm_adr_pcrel_10_unscaled
+.section s_arm_adr_pcrel_10_unscaled,"ax",%progbits
+// CHECK-LABEL: Contents of section s_arm_adr_pcrel_10_unscaled
+// CHECK: 0000 e1cf01d4
+ ldrd r0, r1, arm_adr_pcrel_10_unscaled_label+24
+arm_adr_pcrel_10_unscaled_label:
+
+ at ARM::fixup_arm_movw_lo16
+.section s_movw,"ax",%progbits
+// CHECK-LABEL: Contents of section s_movw
+// CHECK: 0000 e3000008
+ movw r0, :lower16:(some_label+8)
+
+ at ARM::fixup_arm_movt_hi16
+.section s_movt,"ax",%progbits
+// CHECK-LABEL: Contents of section s_movt
+// CHECK: 0000 e34f0ffc
+ movt r0, :upper16:GOT-(movt_label)
+movt_label:
+
+ at FK_Data_1
+.section s_fk_data_1
+// CHECK-LABEL: Contents of section s_fk_data_1
+// CHECK: 0000 01
+fk_data1_l_label:
+.byte fk_data1_h_label-fk_data1_l_label
+fk_data1_h_label:
+
+ at FK_Data_2
+.section s_fk_data_2
+// CHECK-LABEL: Contents of section s_fk_data_2
+// CHECK: 0000 0002
+fk_data2_l_label:
+.short fk_data2_h_label-fk_data2_l_label
+fk_data2_h_label:
+
+ at FK_Data_4
+.section s_fk_data_4
+// CHECK-LABEL: Contents of section s_fk_data_4
+// CHECK: 0000 00000004
+fk_data4_l_label:
+.long fk_data4_h_label-fk_data4_l_label
+fk_data4_h_label:
+
Added: llvm/trunk/test/MC/ARM/big-endian-thumb-fixup.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/big-endian-thumb-fixup.s?rev=209200&view=auto
==============================================================================
--- llvm/trunk/test/MC/ARM/big-endian-thumb-fixup.s (added)
+++ llvm/trunk/test/MC/ARM/big-endian-thumb-fixup.s Tue May 20 04:24:37 2014
@@ -0,0 +1,63 @@
+// RUN: llvm-mc -triple=armeb-eabi -mattr v7,vfp2 -filetype=obj < %s | llvm-objdump -s - | FileCheck %s
+
+ .syntax unified
+ .text
+ .align 2
+ .code 16
+
+ at ARM::fixup_arm_thumb_bl
+.section s_thumb_bl,"ax",%progbits
+// CHECK-LABEL: Contents of section s_thumb_bl
+// CHECK: 0000 f000f801
+ bl thumb_bl_label
+ nop
+thumb_bl_label:
+
+ at ARM::fixup_arm_thumb_blx
+// CHECK-LABEL: Contents of section s_thumb_bl
+// CHECK: 0000 f000e802
+.section s_thumb_blx,"ax",%progbits
+ blx thumb_blx_label+8
+thumb_blx_label:
+
+ at ARM::fixup_arm_thumb_br
+.section s_thumb_br,"ax",%progbits
+// CHECK-LABEL: Contents of section s_thumb_br
+// CHECK: 0000 e000bf00
+ b thumb_br_label
+ nop
+thumb_br_label:
+
+ at ARM::fixup_arm_thumb_bcc
+.section s_thumb_bcc,"ax",%progbits
+// CHECK-LABEL: Contents of section s_thumb_bcc
+// CHECK: 0000 d000bf00
+ beq thumb_bcc_label
+ nop
+thumb_bcc_label:
+
+ at ARM::fixup_arm_thumb_cb
+.section s_thumb_cb,"ax",%progbits
+// CHECK-LABEL: Contents of section s_thumb_cb
+// CHECK: 0000 b100bf00
+ cbz r0, thumb_cb_label
+ nop
+thumb_cb_label:
+
+ at ARM::fixup_arm_thumb_cp
+.section s_thumb_cp,"ax",%progbits
+// CHECK-LABEL: Contents of section s_thumb_cp
+// CHECK: 0000 4801bf00
+ ldr r0, =thumb_cp_label
+ nop
+ nop
+thumb_cp_label:
+
+ at ARM::fixup_arm_thumb_adr_pcrel_10
+.section s_thumb_adr_pcrel_10,"ax",%progbits
+// CHECK-LABEL: Contents of section s_thumb_adr_pcrel_10
+// CHECK: 0000 a000bf00
+ adr r0, thumb_adr_pcrel_10_label
+ nop
+thumb_adr_pcrel_10_label:
+
Added: llvm/trunk/test/MC/ARM/big-endian-thumb2-fixup.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/big-endian-thumb2-fixup.s?rev=209200&view=auto
==============================================================================
--- llvm/trunk/test/MC/ARM/big-endian-thumb2-fixup.s (added)
+++ llvm/trunk/test/MC/ARM/big-endian-thumb2-fixup.s Tue May 20 04:24:37 2014
@@ -0,0 +1,49 @@
+// RUN: llvm-mc -triple=thumbeb-eabi -mattr v7,vfp2 -filetype=obj < %s | llvm-objdump -s - | FileCheck %s
+
+ .syntax unified
+ .text
+ .align 2
+
+ at ARM::fixup_t2_movw_lo16
+.section s_movw,"ax",%progbits
+// CHECK-LABEL: Contents of section s_movw
+// CHECK: 0000 f2400008
+ movw r0, :lower16:(some_label+8)
+
+ at ARM::fixup_t2_movt_hi16
+.section s_movt,"ax",%progbits
+// CHECK-LABEL: Contents of section s_movt
+// CHECK: 0000 f6cf70fc
+ movt r0, :upper16:GOT-(movt_label)
+movt_label:
+
+ at ARM::fixup_t2_uncondbranch
+.section s_uncondbranch,"ax",%progbits
+// CHECK-LABEL: Contents of section s_uncondbranch
+// CHECK: 0000 f000b801 bf00
+ b.w uncond_label
+ nop
+uncond_label:
+
+ at ARM::fixup_t2_condbranch
+.section s_condbranch,"ax",%progbits
+// CHECK-LABEL: Contents of section s_condbranch
+// CHECK: 0000 f0008001 bf00
+ beq.w cond_label
+ nop
+cond_label:
+
+ at ARM::fixup_t2_ldst_precel_12
+.section s_ldst_precel_12,"ax",%progbits
+ ldr r0, ldst_precel_12_label
+ nop
+ nop
+ldst_precel_12_label:
+
+ at ARM::fixup_t2_adr_pcrel_12
+.section s_adr_pcrel_12,"ax",%progbits
+ adr r0, adr_pcrel_12_label
+ nop
+ nop
+adr_pcrel_12_label:
+
More information about the llvm-commits
mailing list