[lld] r344976 - [ELF] Handle elf32-littlearm in OUTPUT_FORMAT

Shoaib Meenai via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 22 16:56:10 PDT 2018


Author: smeenai
Date: Mon Oct 22 16:56:10 2018
New Revision: 344976

URL: http://llvm.org/viewvc/llvm-project?rev=344976&view=rev
Log:
[ELF] Handle elf32-littlearm in OUTPUT_FORMAT

We need this to support 32-bit ARM. Add test cases for emulation
handling for this architecture as well.

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

Modified:
    lld/trunk/ELF/ScriptParser.cpp
    lld/trunk/test/ELF/emulation.s

Modified: lld/trunk/ELF/ScriptParser.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/ScriptParser.cpp?rev=344976&r1=344975&r2=344976&view=diff
==============================================================================
--- lld/trunk/ELF/ScriptParser.cpp (original)
+++ lld/trunk/ELF/ScriptParser.cpp Mon Oct 22 16:56:10 2018
@@ -389,6 +389,8 @@ std::pair<ELFKind, uint16_t> ScriptParse
     return {ELF32LEKind, EM_386};
   if (S == "elf32-iamcu")
     return {ELF32LEKind, EM_IAMCU};
+  if (S == "elf32-littlearm")
+    return {ELF32LEKind, EM_ARM};
   if (S == "elf32-x86-64")
     return {ELF32LEKind, EM_X86_64};
   if (S == "elf64-littleaarch64")

Modified: lld/trunk/test/ELF/emulation.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/emulation.s?rev=344976&r1=344975&r2=344976&view=diff
==============================================================================
--- lld/trunk/test/ELF/emulation.s (original)
+++ lld/trunk/test/ELF/emulation.s Mon Oct 22 16:56:10 2018
@@ -1,4 +1,4 @@
-# REQUIRES: x86,ppc,mips,aarch64
+# REQUIRES: x86,ppc,mips,aarch64,arm
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-freebsd %s -o %tx64
 # RUN: ld.lld -m elf_amd64_fbsd %tx64 -o %t2x64
 # RUN: llvm-readobj -file-headers %t2x64 | FileCheck --check-prefix=AMD64 %s
@@ -408,5 +408,34 @@
 # AARCH64-NEXT:   Flags [ (0x0)
 # AARCH64-NEXT:   ]
 
+# RUN: llvm-mc -filetype=obj -triple=armv7-unknown-linux %s -o %tarm
+# RUN: ld.lld -m armelf %tarm -o %t2arm
+# RUN: llvm-readobj -file-headers %t2arm | FileCheck --check-prefix=ARM %s
+# RUN: ld.lld -m armelf_linux_eabi %tarm -o %t3arm
+# RUN: llvm-readobj -file-headers %t3arm | FileCheck --check-prefix=ARM %s
+# RUN: ld.lld %tarm -o %t4arm
+# RUN: llvm-readobj -file-headers %t4arm | FileCheck --check-prefix=ARM %s
+# RUN: echo 'OUTPUT_FORMAT(elf32-littlearm)' > %t5arm.script
+# RUN: ld.lld %t5arm.script %tarm -o %t5arm
+# RUN: llvm-readobj -file-headers %t5arm | FileCheck --check-prefix=ARM %s
+# ARM:      ElfHeader {
+# ARM-NEXT:   Ident {
+# ARM-NEXT:     Magic: (7F 45 4C 46)
+# ARM-NEXT:     Class: 32 (0x1)
+# ARM-NEXT:     DataEncoding: LittleEndian (0x1)
+# ARM-NEXT:     FileVersion: 1
+# ARM-NEXT:     OS/ABI: SystemV (0x0)
+# ARM-NEXT:     ABIVersion: 0
+# ARM-NEXT:     Unused: (00 00 00 00 00 00 00)
+# ARM-NEXT:   }
+# ARM-NEXT:   Type: Executable (0x2)
+# ARM-NEXT:   Machine: EM_ARM (0xB7)
+# ARM-NEXT:   Version: 1
+# ARM-NEXT:   Entry:
+# ARM-NEXT:   ProgramHeaderOffset: 0x40
+# ARM-NEXT:   SectionHeaderOffset:
+# ARM-NEXT:   Flags [ (0x0)
+# ARM-NEXT:   ]
+
 .globl _start
 _start:




More information about the llvm-commits mailing list