[PATCH] D50234: [LLD][ELF][ARM] Test undefined weak symbol for Thumb narrow branch
Peter Smith via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 3 07:01:20 PDT 2018
peter.smith updated this revision to Diff 159002.
peter.smith added a comment.
Thanks for the suggestion to use yaml2obj. I keep forgetting about that. I've been able to make the same test case.
https://reviews.llvm.org/D50234
Files:
test/ELF/arm-thumb-undefined-weak-narrow.test
Index: test/ELF/arm-thumb-undefined-weak-narrow.test
===================================================================
--- /dev/null
+++ test/ELF/arm-thumb-undefined-weak-narrow.test
@@ -0,0 +1,51 @@
+# REQUIRES: arm
+# RUN: yaml2obj %s -o %t.o
+# RUN: llvm-objdump -triple=thumbv7a-linux-gnueabi -d -r %t.o
+# RUN: ld.lld %t.o -o %t
+# RUN: llvm-objdump -triple=thumbv7a-linux-gnueabi -d %t | FileCheck %s
+
+# CHECK: Disassembly of section .text:
+# CHECK-NEXT:_start:
+# CHECK-NEXT: 11000: ff e7 b #-2
+
+# Test the R_ARM_THM_JUMP11 relocation (102) to an undefined weak reference
+# It should resolve to the next instruction, which is an offset of -2 which
+# when added to the Thumb PC-bias of 4 is +2. We can't use llvm-mc to construct
+# the object as it relaxes b.n to b.w (R_ARM_JUMP24).
+
+!ELF
+FileHeader:
+ Class: ELFCLASS32
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_ARM
+Sections:
+ - Type: SHT_PROGBITS
+ Name: .text
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ Content: "fee7"
+ - Type: SHT_REL
+ Name: .rel.text
+ Link: .symtab
+ Info: .text
+ Relocations:
+ - Offset: 0
+ Symbol: undefined_weak
+ Type: 102
+
+Symbols:
+ Global:
+ - Type: STT_FUNC
+ Name: _start
+ Value: 1
+ Section: .text
+ Local:
+ - Type: STT_NOTYPE
+ Name: "$t"
+ Section: .text
+ Value: 0
+ Weak:
+ - Type: STT_NOTYPE
+ Name: undefined_weak
+ Value: 0
+
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50234.159002.patch
Type: text/x-patch
Size: 1735 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180803/4e5f8d4d/attachment.bin>
More information about the llvm-commits
mailing list