[lld] [lld][ELF] improve AMD error message (PR #135082)

Maksim Levental via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 9 22:54:55 PDT 2025


https://github.com/makslevental updated https://github.com/llvm/llvm-project/pull/135082

>From 986fd9e46624d273908d7087558746dcdfbb64c2 Mon Sep 17 00:00:00 2001
From: Maksim Levental <maksim.levental at gmail.com>
Date: Wed, 9 Apr 2025 17:08:29 -0400
Subject: [PATCH 1/2] [lld][ELF] improve AMD error message

---
 lld/ELF/Arch/AMDGPU.cpp | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lld/ELF/Arch/AMDGPU.cpp b/lld/ELF/Arch/AMDGPU.cpp
index 52fc779855a36..7dfd7476ffd84 100644
--- a/lld/ELF/Arch/AMDGPU.cpp
+++ b/lld/ELF/Arch/AMDGPU.cpp
@@ -79,8 +79,8 @@ uint32_t AMDGPU::calcEFlagsV4() const {
 
     if (retXnack == EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4 ||
         (retXnack != EF_AMDGPU_FEATURE_XNACK_ANY_V4 &&
-            (getEFlags(f) & EF_AMDGPU_FEATURE_XNACK_V4)
-                != EF_AMDGPU_FEATURE_XNACK_ANY_V4)) {
+         (getEFlags(f) & EF_AMDGPU_FEATURE_XNACK_V4) !=
+             EF_AMDGPU_FEATURE_XNACK_ANY_V4)) {
       if (retXnack != (getEFlags(f) & EF_AMDGPU_FEATURE_XNACK_V4)) {
         Err(ctx) << "incompatible xnack: " << f;
         return 0;
@@ -92,8 +92,8 @@ uint32_t AMDGPU::calcEFlagsV4() const {
 
     if (retSramEcc == EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4 ||
         (retSramEcc != EF_AMDGPU_FEATURE_SRAMECC_ANY_V4 &&
-            (getEFlags(f) & EF_AMDGPU_FEATURE_SRAMECC_V4) !=
-                EF_AMDGPU_FEATURE_SRAMECC_ANY_V4)) {
+         (getEFlags(f) & EF_AMDGPU_FEATURE_SRAMECC_V4) !=
+             EF_AMDGPU_FEATURE_SRAMECC_ANY_V4)) {
       if (retSramEcc != (getEFlags(f) & EF_AMDGPU_FEATURE_SRAMECC_V4)) {
         Err(ctx) << "incompatible sramecc: " << f;
         return 0;
@@ -143,7 +143,7 @@ uint32_t AMDGPU::calcEFlags() const {
   case ELFABIVERSION_AMDGPU_HSA_V6:
     return calcEFlagsV6();
   default:
-    Err(ctx) << "unknown abi version: " << abiVersion;
+    Err(ctx) << "unknown amd-hsa abi version: " << static_cast<int>(abiVersion);
     return 0;
   }
 }

>From 04fa028aad2fed6cde16b1bcbbf6d708a6173c4a Mon Sep 17 00:00:00 2001
From: Maksim Levental <maksim.levental at gmail.com>
Date: Thu, 10 Apr 2025 01:37:08 -0400
Subject: [PATCH 2/2] comments

---
 lld/ELF/Arch/AMDGPU.cpp               | 10 +++++-----
 lld/test/ELF/amdgpu-abi-version-err.s |  9 +++++++--
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/lld/ELF/Arch/AMDGPU.cpp b/lld/ELF/Arch/AMDGPU.cpp
index 7dfd7476ffd84..1fffd0157dad9 100644
--- a/lld/ELF/Arch/AMDGPU.cpp
+++ b/lld/ELF/Arch/AMDGPU.cpp
@@ -79,8 +79,8 @@ uint32_t AMDGPU::calcEFlagsV4() const {
 
     if (retXnack == EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4 ||
         (retXnack != EF_AMDGPU_FEATURE_XNACK_ANY_V4 &&
-         (getEFlags(f) & EF_AMDGPU_FEATURE_XNACK_V4) !=
-             EF_AMDGPU_FEATURE_XNACK_ANY_V4)) {
+            (getEFlags(f) & EF_AMDGPU_FEATURE_XNACK_V4)
+                != EF_AMDGPU_FEATURE_XNACK_ANY_V4)) {
       if (retXnack != (getEFlags(f) & EF_AMDGPU_FEATURE_XNACK_V4)) {
         Err(ctx) << "incompatible xnack: " << f;
         return 0;
@@ -92,8 +92,8 @@ uint32_t AMDGPU::calcEFlagsV4() const {
 
     if (retSramEcc == EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4 ||
         (retSramEcc != EF_AMDGPU_FEATURE_SRAMECC_ANY_V4 &&
-         (getEFlags(f) & EF_AMDGPU_FEATURE_SRAMECC_V4) !=
-             EF_AMDGPU_FEATURE_SRAMECC_ANY_V4)) {
+            (getEFlags(f) & EF_AMDGPU_FEATURE_SRAMECC_V4) !=
+                EF_AMDGPU_FEATURE_SRAMECC_ANY_V4)) {
       if (retSramEcc != (getEFlags(f) & EF_AMDGPU_FEATURE_SRAMECC_V4)) {
         Err(ctx) << "incompatible sramecc: " << f;
         return 0;
@@ -143,7 +143,7 @@ uint32_t AMDGPU::calcEFlags() const {
   case ELFABIVERSION_AMDGPU_HSA_V6:
     return calcEFlagsV6();
   default:
-    Err(ctx) << "unknown amd-hsa abi version: " << static_cast<int>(abiVersion);
+    Err(ctx) << "unknown AMDHSA ABI version: " << static_cast<int>(abiVersion);
     return 0;
   }
 }
diff --git a/lld/test/ELF/amdgpu-abi-version-err.s b/lld/test/ELF/amdgpu-abi-version-err.s
index d7ce1d5e485af..4f50511cf77d5 100644
--- a/lld/test/ELF/amdgpu-abi-version-err.s
+++ b/lld/test/ELF/amdgpu-abi-version-err.s
@@ -1,9 +1,14 @@
 # REQUIRES: amdgpu
 # RUN: llvm-mc -triple amdgcn-amd-amdhsa -mcpu=gfx900 --amdhsa-code-object-version=4 -filetype=obj %s -o %t-0.o
 # RUN: llvm-mc -triple amdgcn-amd-amdhsa -mcpu=gfx900 --amdhsa-code-object-version=5 -filetype=obj %s -o %t-1.o
-# RUN: not ld.lld -shared %t-0.o %t-1.o -o /dev/null 2>&1 | FileCheck %s
+# RUN: not ld.lld -shared %t-0.o %t-1.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=INCOMPATIBLE
 
-# CHECK: ld.lld: error: incompatible ABI version: {{.*}}-1.o
+# RUN: llvm-mc -triple amdgcn-amd-amdhsa -mcpu=gfx900 --amdhsa-code-object-version=42 -filetype=obj %s -o %t-42.o
+# RUN: not ld.lld -shared %t-42.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=UNKNOWN
+
+# CHECK-INCOMPATIBLE: ld.lld: error: incompatible ABI version: {{.*}}-1.o
+
+# CHECK-UNKNOWN: ld.lld: error: unknown AMDHSA ABI version: 42
 
 .text
   s_nop 0x0



More information about the llvm-commits mailing list