Added Mapping Symbols for ARM ELF
Before this patch, when you objdump an LLVM-compiled file, objdump tried to
decode data-in-code sections as if they were code. This patch adds the missing
Mapping Symbols, as defined by "ELF for the ARM Architecture" (ARM IHI 0044D).
Patch based on work by Greg Fitzgerald.
llvm-svn: 169609
diff --git a/llvm/test/MC/ARM/multi-section-mapping.s b/llvm/test/MC/ARM/multi-section-mapping.s
new file mode 100644
index 0000000..f7c4e89
--- /dev/null
+++ b/llvm/test/MC/ARM/multi-section-mapping.s
@@ -0,0 +1,35 @@
+@ RUN: llvm-mc -triple=arm-linux-gnueabi -filetype=obj < %s | llvm-objdump -t - | FileCheck %s
+
+ .text
+ add r0, r0, r0
+
+@ .wibble should *not* inherit .text's mapping symbol. It's a completely different section.
+ .section .wibble
+ add r0, r0, r0
+
+@ A section should be able to start with a $t
+ .section .starts_thumb
+ .thumb
+ adds r0, r0, r0
+
+@ A setion should be able to start with a $d
+ .section .starts_data
+ .word 42
+
+@ Changing back to .text should not emit a redundant $a
+ .text
+ .arm
+ add r0, r0, r0
+
+@ With all those constraints, we want:
+@ + .text to have $a at 0 and no others
+@ + .wibble to have $a at 0
+@ + .starts_thumb to have $t at 0
+@ + .starts_data to have $d at 0
+
+@ CHECK: 00000000 .text 00000000 $a
+@ CHECK-NEXT: 00000000 .wibble 00000000 $a
+@ CHECK-NEXT: 00000000 .starts_data 00000000 $d
+@ CHECK-NEXT: 00000000 .starts_thumb 00000000 $t
+@ CHECK-NOT: ${{[adt]}}
+