<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Jan 13, 2016 at 2:38 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Wed, Jan 6, 2016 at 3:25 PM, Rui Ueyama via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: ruiu<br>
Date: Wed Jan  6 17:25:42 2016<br>
New Revision: 256993<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=256993&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=256993&view=rev</a><br>
Log:<br>
Define align() and use that instead of RoundUpToAlignment().<br>
<br>
The name "RoundUpToAlignment" is too long compared to what it does.<br></blockquote><div><br></div></span><div>Should we remove/replace RoundUpToAlignment, then? Rather than introducing another name for the same thing? (if I'm reading this patch correctly)</div><div><div class="h5"><div></div></div></div></div></div></div></blockquote><div><br></div><div>Maybe we should. I'll create a patch and send it to review (to silvas, I guess from the history of this file.)</div><div><br></div><div>The function is in MathExtra.h. We may also want to fix some of them whose name start with uppercase letters. (That is not directly related to this topic.)</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Modified:<br>
    lld/trunk/ELF/OutputSections.cpp<br>
    lld/trunk/ELF/OutputSections.h<br>
    lld/trunk/ELF/Writer.cpp<br>
<br>
Modified: lld/trunk/ELF/OutputSections.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=256993&r1=256992&r2=256993&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=256993&r1=256992&r2=256993&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/OutputSections.cpp (original)<br>
+++ lld/trunk/ELF/OutputSections.cpp Wed Jan  6 17:25:42 2016<br>
@@ -770,7 +770,7 @@ void OutputSection<ELFT>::addSection(Inp<br>
     this->Header.sh_addralign = Align;<br>
<br>
   uintX_t Off = this->Header.sh_size;<br>
-  Off = RoundUpToAlignment(Off, Align);<br>
+  Off = align(Off, Align);<br>
   S->OutSecOff = Off;<br>
   Off += S->getSize();<br>
   this->Header.sh_size = Off;<br>
@@ -971,7 +971,7 @@ void EHOutputSection<ELFT>::addSectionAu<br>
       auto P = CieMap.insert(std::make_pair(CieInfo, Cies.size()));<br>
       if (P.second) {<br>
         Cies.push_back(C);<br>
-        this->Header.sh_size += RoundUpToAlignment(Length, sizeof(uintX_t));<br>
+        this->Header.sh_size += align(Length, sizeof(uintX_t));<br>
       }<br>
       OffsetToIndex[Offset] = P.first->second;<br>
     } else {<br>
@@ -984,7 +984,7 @@ void EHOutputSection<ELFT>::addSectionAu<br>
         if (I == OffsetToIndex.end())<br>
           error("Invalid CIE reference");<br>
         Cies[I->second].Fdes.push_back(EHRegion<ELFT>(S, Index));<br>
-        this->Header.sh_size += RoundUpToAlignment(Length, sizeof(uintX_t));<br>
+        this->Header.sh_size += align(Length, sizeof(uintX_t));<br>
       }<br>
     }<br>
<br>
@@ -1037,7 +1037,7 @@ static typename ELFFile<ELFT>::uintX_t w<br>
                                                             uint8_t *Buf) {<br>
   typedef typename ELFFile<ELFT>::uintX_t uintX_t;<br>
   const endianness E = ELFT::TargetEndianness;<br>
-  uint64_t Len = RoundUpToAlignment(Data.size(), sizeof(uintX_t));<br>
+  uint64_t Len = align(Data.size(), sizeof(uintX_t));<br>
   write32<E>(Buf, Len - 4);<br>
   memcpy(Buf + 4, Data.data() + 4, Data.size() - 4);<br>
   return Len;<br>
<br>
Modified: lld/trunk/ELF/OutputSections.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.h?rev=256993&r1=256992&r2=256993&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.h?rev=256993&r1=256992&r2=256993&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/OutputSections.h (original)<br>
+++ lld/trunk/ELF/OutputSections.h Wed Jan  6 17:25:42 2016<br>
@@ -432,6 +432,10 @@ private:<br>
   uint32_t GprMask = 0;<br>
 };<br>
<br>
+inline uint64_t align(uint64_t Value, uint64_t Align) {<br>
+  return (Value + Align - 1) & ~(Align - 1);<br>
+}<br>
+<br>
 // All output sections that are hadnled by the linker specially are<br>
 // globally accessible. Writer initializes them, so don't use them<br>
 // until Writer is initialized.<br>
<br>
Modified: lld/trunk/ELF/Writer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=256993&r1=256992&r2=256993&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=256993&r1=256992&r2=256993&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Writer.cpp (original)<br>
+++ lld/trunk/ELF/Writer.cpp Wed Jan  6 17:25:42 2016<br>
@@ -491,7 +491,7 @@ void Writer<ELFT>::addCommonSymbols(std:<br>
   uintX_t Off = getBss()->getSize();<br>
   for (DefinedCommon *C : Syms) {<br>
     uintX_t Align = C->MaxAlignment;<br>
-    Off = RoundUpToAlignment(Off, Align);<br>
+    Off = align(Off, Align);<br>
     C->OffsetInBss = Off;<br>
     Off += C->Size;<br>
   }<br>
@@ -514,7 +514,7 @@ void Writer<ELFT>::addCopyRelSymbols(std<br>
                  countTrailingZeros((uintX_t)Sym.st_value));<br>
     uintX_t Align = 1 << TrailingZeros;<br>
     Out<ELFT>::Bss->updateAlign(Align);<br>
-    Off = RoundUpToAlignment(Off, Align);<br>
+    Off = align(Off, Align);<br>
     C->OffsetInBss = Off;<br>
     Off += Sym.st_size;<br>
   }<br>
@@ -1024,8 +1024,8 @@ template <class ELFT> void Writer<ELFT>:<br>
       bool InRelRo = Config->ZRelro && (Flags & PF_W) && isRelroSection(Sec);<br>
       bool FirstNonRelRo = GnuRelroPhdr.p_type && !InRelRo && !RelroAligned;<br>
       if (FirstNonRelRo || PH->p_flags != Flags) {<br>
-        VA = RoundUpToAlignment(VA, Target->getPageSize());<br>
-        FileOff = RoundUpToAlignment(FileOff, Target->getPageSize());<br>
+        VA = align(VA, Target->getPageSize());<br>
+        FileOff = align(FileOff, Target->getPageSize());<br>
         if (FirstNonRelRo)<br>
           RelroAligned = true;<br>
       }<br>
@@ -1040,8 +1040,8 @@ template <class ELFT> void Writer<ELFT>:<br>
         if (!TlsPhdr.p_vaddr)<br>
           setPhdr(&TlsPhdr, PT_TLS, PF_R, FileOff, VA, 0, Sec->getAlign());<br>
         if (Sec->getType() != SHT_NOBITS)<br>
-          VA = RoundUpToAlignment(VA, Sec->getAlign());<br>
-        uintX_t TVA = RoundUpToAlignment(VA + ThreadBssOffset, Sec->getAlign());<br>
+          VA = align(VA, Sec->getAlign());<br>
+        uintX_t TVA = align(VA + ThreadBssOffset, Sec->getAlign());<br>
         Sec->setVA(TVA);<br>
         TlsPhdr.p_memsz += Sec->getSize();<br>
         if (Sec->getType() == SHT_NOBITS) {<br>
@@ -1052,7 +1052,7 @@ template <class ELFT> void Writer<ELFT>:<br>
         }<br>
         TlsPhdr.p_align = std::max<uintX_t>(TlsPhdr.p_align, Sec->getAlign());<br>
       } else {<br>
-        VA = RoundUpToAlignment(VA, Sec->getAlign());<br>
+        VA = align(VA, Sec->getAlign());<br>
         Sec->setVA(VA);<br>
         VA += Sec->getSize();<br>
         if (InRelRo)<br>
@@ -1060,7 +1060,7 @@ template <class ELFT> void Writer<ELFT>:<br>
       }<br>
     }<br>
<br>
-    FileOff = RoundUpToAlignment(FileOff, Sec->getAlign());<br>
+    FileOff = align(FileOff, Sec->getAlign());<br>
     Sec->setFileOffset(FileOff);<br>
     if (Sec->getType() != SHT_NOBITS)<br>
       FileOff += Sec->getSize();<br>
@@ -1073,7 +1073,7 @@ template <class ELFT> void Writer<ELFT>:<br>
   if (TlsPhdr.p_vaddr) {<br>
     // The TLS pointer goes after PT_TLS. At least glibc will align it,<br>
     // so round up the size to make sure the offsets are correct.<br>
-    TlsPhdr.p_memsz = RoundUpToAlignment(TlsPhdr.p_memsz, TlsPhdr.p_align);<br>
+    TlsPhdr.p_memsz = align(TlsPhdr.p_memsz, TlsPhdr.p_align);<br>
     Phdrs[++PhdrIdx] = TlsPhdr;<br>
     Out<ELFT>::TlsPhdr = &Phdrs[PhdrIdx];<br>
   }<br>
@@ -1105,7 +1105,7 @@ template <class ELFT> void Writer<ELFT>:<br>
   }<br>
<br>
   // Add space for section headers.<br>
-  SectionHeaderOff = RoundUpToAlignment(FileOff, ELFT::Is64Bits ? 8 : 4);<br>
+  SectionHeaderOff = align(FileOff, ELFT::Is64Bits ? 8 : 4);<br>
   FileSize = SectionHeaderOff + getNumSections() * sizeof(Elf_Shdr);<br>
<br>
   // Update "_end" and "end" symbols so that they<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div></div><br></div></div>
</blockquote></div><br></div></div>