[llvm] [llvm-objcopy] Support SREC output format (PR #75874)

via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 2 10:02:07 PST 2024


================
@@ -390,6 +390,57 @@ class IHexWriter : public Writer {
   IHexWriter(Object &Obj, raw_ostream &Out) : Writer(Obj, Out) {}
 };
 
+using SRecLineData = SmallVector<char, 64>;
+struct SRecord {
+  uint8_t Type;
+  uint32_t Address;
+  ArrayRef<uint8_t> Data;
+  SRecLineData toString() const;
+  uint8_t getCount() const;
+  // get address size in characters
+  uint8_t getAddressSize() const;
+  uint8_t getChecksum() const;
+  size_t getSize() const;
+  static SRecord getHeader(StringRef FileName);
+  enum Type : uint8_t {
+    // Vendor specific text comment
+    S0 = 0,
+    // Data that starts at a 16 bit address
+    S1 = 1,
+    // Data that starts at a 24 bit address
+    S2 = 2,
+    // Data that starts at a 32 bit address
+    S3 = 3,
+    // Reserved
+    S4 = 4,
+    // 16 bit count of S1/S2/S3 records (optional)
+    S5 = 5,
+    // 32 bit count of S1/S2/S3 records (optional)
+    S6 = 6,
+    // Terminates a series of S3 records
+    S7 = 7,
+    // Terminates a series of S2 records
+    S8 = 8,
+    // Terminates a series of S1 records
+    S9 = 9
+  };
+};
+
+/// FIXME: This is currently a contrived writer that only writes the
----------------
quic-areg wrote:

Done

https://github.com/llvm/llvm-project/pull/75874


More information about the llvm-commits mailing list