summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Atanasyan <simon@atanasyan.com>2015-10-08 12:13:38 +0000
committerSimon Atanasyan <simon@atanasyan.com>2015-10-08 12:13:38 +0000
commit456bd05d97580634e572c1fa14cdf896ce71edba (patch)
treef416b052b9e4f6cb30f3ec7c1198ef4079a29265
parentd42f4e5389ff8c8ed8f29c1ee80a941663409929 (diff)
downloadbcm5719-llvm-456bd05d97580634e572c1fa14cdf896ce71edba.tar.gz
bcm5719-llvm-456bd05d97580634e572c1fa14cdf896ce71edba.zip
[ELF2][mips] Support elf32ltsmip/elf32btsmip target emulation as the -m arguments
llvm-svn: 249683
-rw-r--r--lld/ELF/Driver.cpp10
-rw-r--r--lld/test/elf2/emulation.s50
2 files changed, 59 insertions, 1 deletions
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index aee2a1e9868..2ae38c98de7 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -46,6 +46,16 @@ static void setELFType(StringRef Emul) {
Config->EMachine = EM_X86_64;
return;
}
+ if (Emul == "elf32ltsmip") {
+ Config->ElfKind = ELF32LEKind;
+ Config->EMachine = EM_MIPS;
+ return;
+ }
+ if (Emul == "elf32btsmip") {
+ Config->ElfKind = ELF32BEKind;
+ Config->EMachine = EM_MIPS;
+ return;
+ }
if (Emul == "elf32ppc") {
Config->ElfKind = ELF32BEKind;
Config->EMachine = EM_PPC;
diff --git a/lld/test/elf2/emulation.s b/lld/test/elf2/emulation.s
index f19ea68b2fd..d732c1b6d4a 100644
--- a/lld/test/elf2/emulation.s
+++ b/lld/test/elf2/emulation.s
@@ -122,7 +122,55 @@
# PPC-NEXT: StringTableSectionIndex: 5
# PPC-NEXT: }
-# REQUIRES: x86,ppc
+# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %tmips
+# RUN: lld -flavor gnu2 -m elf32btsmip -e _start %tmips -o %t2mips
+# RUN: llvm-readobj -file-headers %t2mips | FileCheck --check-prefix=MIPS %s
+# RUN: lld -flavor gnu2 %tmips -e _start -o %t3mips
+# RUN: llvm-readobj -file-headers %t3mips | FileCheck --check-prefix=MIPS %s
+# MIPS: ElfHeader {
+# MIPS-NEXT: Ident {
+# MIPS-NEXT: Magic: (7F 45 4C 46)
+# MIPS-NEXT: Class: 32-bit (0x1)
+# MIPS-NEXT: DataEncoding: BigEndian (0x2)
+# MIPS-NEXT: FileVersion: 1
+# MIPS-NEXT: OS/ABI: SystemV (0x0)
+# MIPS-NEXT: ABIVersion: 0
+# MIPS-NEXT: Unused: (00 00 00 00 00 00 00)
+# MIPS-NEXT: }
+# MIPS-NEXT: Type: Executable (0x2)
+# MIPS-NEXT: Machine: EM_MIPS (0x8)
+# MIPS-NEXT: Version: 1
+# MIPS-NEXT: Entry: 0x11030
+# MIPS-NEXT: ProgramHeaderOffset: 0x34
+# MIPS-NEXT: SectionHeaderOffset: 0x1094
+# MIPS-NEXT: Flags [ (0x0)
+# MIPS-NEXT: ]
+
+# RUN: llvm-mc -filetype=obj -triple=mipsel-unknown-linux %s -o %tmipsel
+# RUN: lld -flavor gnu2 -m elf32ltsmip -e _start %tmipsel -o %t2mipsel
+# RUN: llvm-readobj -file-headers %t2mipsel | FileCheck --check-prefix=MIPSEL %s
+# RUN: lld -flavor gnu2 %tmipsel -e _start -o %t3mipsel
+# RUN: llvm-readobj -file-headers %t3mipsel | FileCheck --check-prefix=MIPSEL %s
+# MIPSEL: ElfHeader {
+# MIPSEL-NEXT: Ident {
+# MIPSEL-NEXT: Magic: (7F 45 4C 46)
+# MIPSEL-NEXT: Class: 32-bit (0x1)
+# MIPSEL-NEXT: DataEncoding: LittleEndian (0x1)
+# MIPSEL-NEXT: FileVersion: 1
+# MIPSEL-NEXT: OS/ABI: SystemV (0x0)
+# MIPSEL-NEXT: ABIVersion: 0
+# MIPSEL-NEXT: Unused: (00 00 00 00 00 00 00)
+# MIPSEL-NEXT: }
+# MIPSEL-NEXT: Type: Executable (0x2)
+# MIPSEL-NEXT: Machine: EM_MIPS (0x8)
+# MIPSEL-NEXT: Version: 1
+# MIPSEL-NEXT: Entry: 0x11030
+# MIPSEL-NEXT: ProgramHeaderOffset: 0x34
+# MIPSEL-NEXT: SectionHeaderOffset: 0x1094
+# MIPSEL-NEXT: Flags [ (0x0)
+# MIPSEL-NEXT: ]
+
+# REQUIRES: x86,ppc,mips
.globl _start;
_start:
OpenPOWER on IntegriCloud