[lld] [lld][ELF] Add armeb support when incoming bc is arm big endian (PR #72604)

dong jianqiang via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 17 06:57:04 PST 2023


https://github.com/dongjianqiang2 updated https://github.com/llvm/llvm-project/pull/72604

>From de2167ad3fcc5ac3cbdd2c353bf3ed8f01bb03b6 Mon Sep 17 00:00:00 2001
From: Dong JianQiang <dongjianqiang2 at huawei.com>
Date: Thu, 16 Nov 2023 20:55:05 +0800
Subject: [PATCH] [lld][ELF] Add armeb support when incoming bc is arm big
 endian

---
 lld/ELF/InputFiles.cpp    |  2 ++
 lld/test/ELF/lto/armeb.ll | 31 +++++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)
 create mode 100644 lld/test/ELF/lto/armeb.ll

diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp
index 4b4d7d6db93cd57..17ecd047e015287 100644
--- a/lld/ELF/InputFiles.cpp
+++ b/lld/ELF/InputFiles.cpp
@@ -1582,7 +1582,9 @@ static uint16_t getBitcodeMachineKind(StringRef path, const Triple &t) {
   case Triple::r600:
     return EM_AMDGPU;
   case Triple::arm:
+  case Triple::armeb:
   case Triple::thumb:
+  case Triple::thumbeb:
     return EM_ARM;
   case Triple::avr:
     return EM_AVR;
diff --git a/lld/test/ELF/lto/armeb.ll b/lld/test/ELF/lto/armeb.ll
new file mode 100644
index 000000000000000..c914f048ea9c470
--- /dev/null
+++ b/lld/test/ELF/lto/armeb.ll
@@ -0,0 +1,31 @@
+; REQUIRES: arm
+;; Test we can infer the e_machine value EM_ARM from arm big endian bitcode file.
+
+; RUN: split-file %s %t
+; RUN: llvm-as %t/armeb.ll -o %t/armeb.bc
+; RUN: ld.lld %t/armeb.bc -o %t/armeb.o
+; RUN: llvm-readobj -h %t/armeb.o | FileCheck %s --check-prefixes=CHECK
+
+; RUN: llvm-as %t/thumbeb.ll -o %t/thumbeb.bc
+; RUN: ld.lld %t/thumbeb.bc -o %t/thumbeb.o
+; RUN: llvm-readobj -h %t/thumbeb.o | FileCheck %s --check-prefixes=CHECK
+
+; CHECK:   Class: 32-bit
+; CHECK:      DataEncoding: BigEndian
+; CHECK: Machine: EM_ARM
+
+;--- armeb.ll
+target triple = "armebv7-linux-musleabi"
+target datalayout = "E-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
+
+define dso_local void @_start() {
+  ret void
+}
+
+;--- thumbeb.ll
+target triple = "thumbebv7-linux-musleabi"
+target datalayout = "E-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
+
+define dso_local void @_start() {
+  ret void
+}



More information about the llvm-commits mailing list