- if (HasRelocationAddend)
- F->getContents() += StringRef((const char *)&entry.r_addend, WordSize);
+ String64(buf, entry.r_offset);
+ F->getContents() += StringRef(buf, 8);
+
+ String64(buf, entry.r_info);
+ F->getContents() += StringRef(buf, 8);
+
+ if (HasRelocationAddend) {
+ String64(buf, entry.r_addend);
+ F->getContents() += StringRef(buf, 8);
+ }
+ } else {
+ char buf[4];
+
+ String32(buf, entry.r_offset);
+ F->getContents() += StringRef(buf, 4);
+
+ String32(buf, entry.r_info);
+ F->getContents() += StringRef(buf, 4);
+
+ if (HasRelocationAddend) {
+ String32(buf, entry.r_addend);
+ F->getContents() += StringRef(buf, 4);
+ }
+ }