[llvm] [NFC][llvm][object][GOFF] cleanup GOFFObjectTests (PR #212286)
James Henderson via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 3 00:21:25 PDT 2026
================
@@ -106,10 +39,86 @@ void constructInvalidGOFF(const char *Data, size_t Size) {
"of 80 bytes, but is " +
std::to_string(Size) + " bytes"));
}
+
+class GOFFObjectFileTest : public ::testing::Test {
+protected:
+ std::vector<char> GOFFData;
+ uint8_t RecordCount = 0;
+
+ size_t addNewRecord() {
+ size_t Pos = GOFFData.size();
+ GOFFData.resize(Pos + GOFF::RecordLength);
+ ++RecordCount;
+ return Pos;
+ }
+
+ void addEndRecord() {
+ size_t Pos = addNewRecord();
+ GOFFData[Pos] = (char)0x03;
+ GOFFData[Pos + 1] = (char)0x40; // END record, non-continued.
+ GOFFData[Pos + 11] = (char)RecordCount;
+ }
+
+ void addHdrRecord(uint8_t ArchLevel = 0) {
+ size_t Pos = addNewRecord();
+ GOFFData[Pos] = (char)0x03;
+ GOFFData[Pos + 1] = (char)0xF0; // HDR record, non-continued.
+ GOFFData[Pos + 50] = (char)ArchLevel;
+ }
+
+ void
+ addEsdRecord(uint8_t Type, uint8_t ESDID, const std::vector<uint8_t> &Name,
+ uint8_t ParentESDID = 0, uint8_t BindingScope = 0,
+ uint8_t NameSpaceID = 0, uint8_t AdditionalFlags = 0,
+ std::array<uint8_t, 10> BehavioralAttributes = {0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0},
+ uint32_t Length = 0) {
+ size_t Pos = GOFFData.size();
+ GOFFData.resize(GOFFData.size() + GOFF::RecordLength);
+ ++RecordCount;
+
+ GOFFData[Pos] = (char)0x03;
+ GOFFData[Pos + 3] = (char)Type;
+ GOFFData[Pos + 7] = (char)ESDID; // ESDID.
+ GOFFData[Pos + 11] = (char)ParentESDID; // Parent ESDID.
+ GOFFData[Pos + 24] = (char)(Length >> 24); // Length (big-endian).
+ GOFFData[Pos + 25] = (char)(Length >> 16);
+ GOFFData[Pos + 26] = (char)(Length >> 8);
+ GOFFData[Pos + 27] = (char)(Length);
+ GOFFData[Pos + 40] = (char)NameSpaceID; // Name Space ID
+ GOFFData[Pos + 41] = (char)AdditionalFlags; // Additional Flags
+
+ for (size_t Offset = 0; Offset < 10; Offset++)
+ GOFFData[Pos + 60 + Offset] = (char)BehavioralAttributes[Offset];
+
+ GOFFData[Pos + 71] = (char)(Name.size()); // Size of symbol name.
+ size_t StringOffset = Pos + 72; // Start of Symbol name
+ for (uint8_t C : Name) {
+ GOFFData[StringOffset] = (char)C;
+ StringOffset++;
----------------
jh7370 wrote:
Either do `GOFFData[StringOffset++] = (char)C;` or do `++StringOffset;` afterwards.
https://llvm.org/docs/CodingStandards.html#prefer-preincrement
https://github.com/llvm/llvm-project/pull/212286
More information about the llvm-commits
mailing list