From 6409ae936500b52e0583a4c9b82ce2d0373a4ba2 Mon Sep 17 00:00:00 2001 From: Kelvin Sherlock Date: Sat, 14 Dec 2019 19:00:22 -0500 Subject: [PATCH] wasn't generating some SUPER records. --- omf.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/omf.cpp b/omf.cpp index 337f45b..6ab1ba5 100644 --- a/omf.cpp +++ b/omf.cpp @@ -204,9 +204,9 @@ uint32_t add_relocs(std::vector &data, size_t data_offset, omf::segment auto &sr = ss[n]; if (!sr) sr.emplace(); + sr->append(r.offset); uint32_t value = r.value; - sr->append(r.offset); for (int i = 0; i < 2; ++i, value >>= 8) data[data_offset + r.offset + i] = value; continue; @@ -220,9 +220,9 @@ uint32_t add_relocs(std::vector &data, size_t data_offset, omf::segment auto &sr = ss[n]; if (!sr) sr.emplace(); + sr->append(r.offset); uint32_t value = r.value; - sr->append(r.offset); for (int i = 0; i < 3; ++i, value >>= 8) data[data_offset + r.offset + i] = value; continue; @@ -234,9 +234,9 @@ uint32_t add_relocs(std::vector &data, size_t data_offset, omf::segment int n = SUPER_INTERSEG24 + seg.segnum; auto &sr = ss[n]; if (!sr) sr.emplace(); + sr->append(r.offset); uint32_t value = r.value; - sr->append(r.offset); for (int i = 0; i < 2; ++i, value >>= 8) data[data_offset + r.offset + i] = value; continue; @@ -268,8 +268,10 @@ uint32_t add_relocs(std::vector &data, size_t data_offset, omf::segment constexpr int n = SUPER_INTERSEG1; auto &sr = ss[n]; if (!sr) sr.emplace(); + sr->append(r.offset); uint32_t value = r.segment_offset; + data[data_offset + r.offset + 0] = value; value >>= 8; data[data_offset + r.offset + 1] = value; value >>= 8; data[data_offset + r.offset + 2] = r.segment; @@ -282,9 +284,9 @@ uint32_t add_relocs(std::vector &data, size_t data_offset, omf::segment int n = SUPER_INTERSEG12 + r.segment; auto &sr = ss[n]; if (!sr) sr.emplace(); + sr->append(r.offset); uint32_t value = r.segment_offset; - sr->append(r.offset); for (int i = 0; i < 2; ++i, value >>= 8) data[data_offset + r.offset + i] = value; continue; @@ -295,9 +297,9 @@ uint32_t add_relocs(std::vector &data, size_t data_offset, omf::segment int n = SUPER_INTERSEG24 + r.segment; auto &sr = ss[n]; if (!sr) sr.emplace(); + sr->append(r.offset); uint32_t value = r.segment_offset; - sr->append(r.offset); for (int i = 0; i < 2; ++i, value >>= 8) data[data_offset + r.offset + i] = value; continue;