[PATCH] D37462: [LLD] Fix padding of .eh_frame when in executable segment

Rui Ueyama via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 5 11:14:52 PDT 2017


ruiu added inline comments.


================
Comment at: ELF/SyntheticSections.cpp:525
-  memcpy(Buf, D.data(), D.size());
+  size_t DataSize = D.size();
+  memcpy(Buf, D.data(), DataSize);
+
+  size_t AlignSize = alignTo(DataSize, sizeof(typename ELFT::uint));
+
+  // Must be padded with zero if needed.
+  if (AlignSize > DataSize)
+    memset(Buf + DataSize, 0, AlignSize - DataSize);
 
   // Fix the size field. -4 since size does not include the size field itself.
----------------
I think you can simplify the code by adding this piece of code here.

  constexpr size_t Wordsize = sizeof(typename ELFT::uint);

  // Zero-clear trailing padding if exists.
  memset(Buf + D.size(), 0, Wordsize - D.size() % Wordsize);


https://reviews.llvm.org/D37462





More information about the llvm-commits mailing list