[lld] r256993 - Define align() and use that instead of RoundUpToAlignment().
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 13 14:57:05 PST 2016
On Wed, Jan 13, 2016 at 2:43 PM, Rui Ueyama <ruiu at google.com> wrote:
> On Wed, Jan 13, 2016 at 2:38 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
>>
>>
>> On Wed, Jan 6, 2016 at 3:25 PM, Rui Ueyama via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>>> Author: ruiu
>>> Date: Wed Jan 6 17:25:42 2016
>>> New Revision: 256993
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=256993&view=rev
>>> Log:
>>> Define align() and use that instead of RoundUpToAlignment().
>>>
>>> The name "RoundUpToAlignment" is too long compared to what it does.
>>>
>>
>> Should we remove/replace RoundUpToAlignment, then? Rather than
>> introducing another name for the same thing? (if I'm reading this patch
>> correctly)
>>
>
> Maybe we should. I'll create a patch and send it to review (to silvas, I
> guess from the history of this file.)
>
Thanks - I'm sure someone'll get to reviewing it, these sort of libs are
pretty communally owned (blessing and a curse - but small simple changes
are easy to get nearly anyone to review)
> 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.)
>
Yeah, the old naming convention is still around in places. The style guide
says "local consistency" so if a file is full of old naming convention
stuff, might be argued to keep everything that way - but standalone
functions like this are probably fine to migrate piece-meal.
- Dave
>
>
>>
>>>
>>> Modified:
>>> lld/trunk/ELF/OutputSections.cpp
>>> lld/trunk/ELF/OutputSections.h
>>> lld/trunk/ELF/Writer.cpp
>>>
>>> Modified: lld/trunk/ELF/OutputSections.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.cpp?rev=256993&r1=256992&r2=256993&view=diff
>>>
>>> ==============================================================================
>>> --- lld/trunk/ELF/OutputSections.cpp (original)
>>> +++ lld/trunk/ELF/OutputSections.cpp Wed Jan 6 17:25:42 2016
>>> @@ -770,7 +770,7 @@ void OutputSection<ELFT>::addSection(Inp
>>> this->Header.sh_addralign = Align;
>>>
>>> uintX_t Off = this->Header.sh_size;
>>> - Off = RoundUpToAlignment(Off, Align);
>>> + Off = align(Off, Align);
>>> S->OutSecOff = Off;
>>> Off += S->getSize();
>>> this->Header.sh_size = Off;
>>> @@ -971,7 +971,7 @@ void EHOutputSection<ELFT>::addSectionAu
>>> auto P = CieMap.insert(std::make_pair(CieInfo, Cies.size()));
>>> if (P.second) {
>>> Cies.push_back(C);
>>> - this->Header.sh_size += RoundUpToAlignment(Length,
>>> sizeof(uintX_t));
>>> + this->Header.sh_size += align(Length, sizeof(uintX_t));
>>> }
>>> OffsetToIndex[Offset] = P.first->second;
>>> } else {
>>> @@ -984,7 +984,7 @@ void EHOutputSection<ELFT>::addSectionAu
>>> if (I == OffsetToIndex.end())
>>> error("Invalid CIE reference");
>>> Cies[I->second].Fdes.push_back(EHRegion<ELFT>(S, Index));
>>> - this->Header.sh_size += RoundUpToAlignment(Length,
>>> sizeof(uintX_t));
>>> + this->Header.sh_size += align(Length, sizeof(uintX_t));
>>> }
>>> }
>>>
>>> @@ -1037,7 +1037,7 @@ static typename ELFFile<ELFT>::uintX_t w
>>> uint8_t
>>> *Buf) {
>>> typedef typename ELFFile<ELFT>::uintX_t uintX_t;
>>> const endianness E = ELFT::TargetEndianness;
>>> - uint64_t Len = RoundUpToAlignment(Data.size(), sizeof(uintX_t));
>>> + uint64_t Len = align(Data.size(), sizeof(uintX_t));
>>> write32<E>(Buf, Len - 4);
>>> memcpy(Buf + 4, Data.data() + 4, Data.size() - 4);
>>> return Len;
>>>
>>> Modified: lld/trunk/ELF/OutputSections.h
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/OutputSections.h?rev=256993&r1=256992&r2=256993&view=diff
>>>
>>> ==============================================================================
>>> --- lld/trunk/ELF/OutputSections.h (original)
>>> +++ lld/trunk/ELF/OutputSections.h Wed Jan 6 17:25:42 2016
>>> @@ -432,6 +432,10 @@ private:
>>> uint32_t GprMask = 0;
>>> };
>>>
>>> +inline uint64_t align(uint64_t Value, uint64_t Align) {
>>> + return (Value + Align - 1) & ~(Align - 1);
>>> +}
>>> +
>>> // All output sections that are hadnled by the linker specially are
>>> // globally accessible. Writer initializes them, so don't use them
>>> // until Writer is initialized.
>>>
>>> Modified: lld/trunk/ELF/Writer.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=256993&r1=256992&r2=256993&view=diff
>>>
>>> ==============================================================================
>>> --- lld/trunk/ELF/Writer.cpp (original)
>>> +++ lld/trunk/ELF/Writer.cpp Wed Jan 6 17:25:42 2016
>>> @@ -491,7 +491,7 @@ void Writer<ELFT>::addCommonSymbols(std:
>>> uintX_t Off = getBss()->getSize();
>>> for (DefinedCommon *C : Syms) {
>>> uintX_t Align = C->MaxAlignment;
>>> - Off = RoundUpToAlignment(Off, Align);
>>> + Off = align(Off, Align);
>>> C->OffsetInBss = Off;
>>> Off += C->Size;
>>> }
>>> @@ -514,7 +514,7 @@ void Writer<ELFT>::addCopyRelSymbols(std
>>> countTrailingZeros((uintX_t)Sym.st_value));
>>> uintX_t Align = 1 << TrailingZeros;
>>> Out<ELFT>::Bss->updateAlign(Align);
>>> - Off = RoundUpToAlignment(Off, Align);
>>> + Off = align(Off, Align);
>>> C->OffsetInBss = Off;
>>> Off += Sym.st_size;
>>> }
>>> @@ -1024,8 +1024,8 @@ template <class ELFT> void Writer<ELFT>:
>>> bool InRelRo = Config->ZRelro && (Flags & PF_W) &&
>>> isRelroSection(Sec);
>>> bool FirstNonRelRo = GnuRelroPhdr.p_type && !InRelRo &&
>>> !RelroAligned;
>>> if (FirstNonRelRo || PH->p_flags != Flags) {
>>> - VA = RoundUpToAlignment(VA, Target->getPageSize());
>>> - FileOff = RoundUpToAlignment(FileOff, Target->getPageSize());
>>> + VA = align(VA, Target->getPageSize());
>>> + FileOff = align(FileOff, Target->getPageSize());
>>> if (FirstNonRelRo)
>>> RelroAligned = true;
>>> }
>>> @@ -1040,8 +1040,8 @@ template <class ELFT> void Writer<ELFT>:
>>> if (!TlsPhdr.p_vaddr)
>>> setPhdr(&TlsPhdr, PT_TLS, PF_R, FileOff, VA, 0,
>>> Sec->getAlign());
>>> if (Sec->getType() != SHT_NOBITS)
>>> - VA = RoundUpToAlignment(VA, Sec->getAlign());
>>> - uintX_t TVA = RoundUpToAlignment(VA + ThreadBssOffset,
>>> Sec->getAlign());
>>> + VA = align(VA, Sec->getAlign());
>>> + uintX_t TVA = align(VA + ThreadBssOffset, Sec->getAlign());
>>> Sec->setVA(TVA);
>>> TlsPhdr.p_memsz += Sec->getSize();
>>> if (Sec->getType() == SHT_NOBITS) {
>>> @@ -1052,7 +1052,7 @@ template <class ELFT> void Writer<ELFT>:
>>> }
>>> TlsPhdr.p_align = std::max<uintX_t>(TlsPhdr.p_align,
>>> Sec->getAlign());
>>> } else {
>>> - VA = RoundUpToAlignment(VA, Sec->getAlign());
>>> + VA = align(VA, Sec->getAlign());
>>> Sec->setVA(VA);
>>> VA += Sec->getSize();
>>> if (InRelRo)
>>> @@ -1060,7 +1060,7 @@ template <class ELFT> void Writer<ELFT>:
>>> }
>>> }
>>>
>>> - FileOff = RoundUpToAlignment(FileOff, Sec->getAlign());
>>> + FileOff = align(FileOff, Sec->getAlign());
>>> Sec->setFileOffset(FileOff);
>>> if (Sec->getType() != SHT_NOBITS)
>>> FileOff += Sec->getSize();
>>> @@ -1073,7 +1073,7 @@ template <class ELFT> void Writer<ELFT>:
>>> if (TlsPhdr.p_vaddr) {
>>> // The TLS pointer goes after PT_TLS. At least glibc will align it,
>>> // so round up the size to make sure the offsets are correct.
>>> - TlsPhdr.p_memsz = RoundUpToAlignment(TlsPhdr.p_memsz,
>>> TlsPhdr.p_align);
>>> + TlsPhdr.p_memsz = align(TlsPhdr.p_memsz, TlsPhdr.p_align);
>>> Phdrs[++PhdrIdx] = TlsPhdr;
>>> Out<ELFT>::TlsPhdr = &Phdrs[PhdrIdx];
>>> }
>>> @@ -1105,7 +1105,7 @@ template <class ELFT> void Writer<ELFT>:
>>> }
>>>
>>> // Add space for section headers.
>>> - SectionHeaderOff = RoundUpToAlignment(FileOff, ELFT::Is64Bits ? 8 :
>>> 4);
>>> + SectionHeaderOff = align(FileOff, ELFT::Is64Bits ? 8 : 4);
>>> FileSize = SectionHeaderOff + getNumSections() * sizeof(Elf_Shdr);
>>>
>>> // Update "_end" and "end" symbols so that they
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160113/38d09d11/attachment.html>
More information about the llvm-commits
mailing list