[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