[llvm] [Object][GOFF] Recognize RLD and LEN records (PR #207118)

Amy Kwan via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 14 04:04:56 PDT 2026


https://github.com/amy-kwan updated https://github.com/llvm/llvm-project/pull/207118

>From 4ecea98bd100936d93e5a2d06c68c792418a3752 Mon Sep 17 00:00:00 2001
From: Amy Kwan <amy.kwan1 at ibm.com>
Date: Thu, 2 Jul 2026 01:03:37 -0400
Subject: [PATCH 1/2] [Object][GOFF] Recognize RLD and LEN records

This patch adds explicit cases for RT_RLD and RT_LEN records when parsing GOFF
objects. These record types are not handled yet, but recognizing them allows
us to diagnose them and avoids teating them as unexpected records.
---
 llvm/lib/Object/GOFFObjectFile.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/llvm/lib/Object/GOFFObjectFile.cpp b/llvm/lib/Object/GOFFObjectFile.cpp
index 4ee51a61c14fa..813ead330b4e0 100644
--- a/llvm/lib/Object/GOFFObjectFile.cpp
+++ b/llvm/lib/Object/GOFFObjectFile.cpp
@@ -170,6 +170,12 @@ GOFFObjectFile::GOFFObjectFile(MemoryBufferRef Object, Error &Err)
       TextPtrs.emplace_back(I);
       LLVM_DEBUG(dbgs() << "  --  TXT\n");
       break;
+    case GOFF::RT_RLD:
+      LLVM_DEBUG(dbgs() << "  --  RLD (GOFF record type) unhandled\n");
+      break;
+    case GOFF::RT_LEN:
+      LLVM_DEBUG(dbgs() << "  --  LEN (GOFF record type) unhandled\n");
+      break;
     case GOFF::RT_END:
       LLVM_DEBUG(dbgs() << "  --  END (GOFF record type) unhandled\n");
       break;

>From 670652ec3baa844f5525c0b3f404001d15375658 Mon Sep 17 00:00:00 2001
From: Amy Kwan <amy.kwan1 at ibm.com>
Date: Mon, 13 Jul 2026 17:04:24 -0400
Subject: [PATCH 2/2] Remove usage of llvm_unreachable

---
 llvm/lib/Object/GOFFObjectFile.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/llvm/lib/Object/GOFFObjectFile.cpp b/llvm/lib/Object/GOFFObjectFile.cpp
index 813ead330b4e0..057d3fc208c9b 100644
--- a/llvm/lib/Object/GOFFObjectFile.cpp
+++ b/llvm/lib/Object/GOFFObjectFile.cpp
@@ -183,7 +183,10 @@ GOFFObjectFile::GOFFObjectFile(MemoryBufferRef Object, Error &Err)
       LLVM_DEBUG(dbgs() << "  --  HDR (GOFF record type) unhandled\n");
       break;
     default:
-      llvm_unreachable("Unknown record type");
+      Err = createStringError(object_error::parse_failed,
+                              "record %zu has unknown record type 0x%02" PRIX8,
+                              RecordNum, RecordType);
+      return;
     }
     PrevRecordType = RecordType;
     PrevContinuationBits = I[1] & 0x03;



More information about the llvm-commits mailing list