diff options
author | Fangrui Song <maskray@google.com> | 2019-08-31 10:48:09 +0000 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-08-31 10:48:09 +0000 |
commit | b0610c74e72b2bd95cf5baafb86a94244c74f782 (patch) | |
tree | dd7440e505be2db45b2c3c11f8f20f0d1f457b87 /llvm/tools/llvm-objcopy | |
parent | e62c509cd4c0701ab3b951269cef7da2ca803780 (diff) | |
download | bcm5719-llvm-b0610c74e72b2bd95cf5baafb86a94244c74f782.tar.gz bcm5719-llvm-b0610c74e72b2bd95cf5baafb86a94244c74f782.zip |
[llvm-objcopy] Simplify alignToAddr with llvm::alignTo
llvm-svn: 370577
Diffstat (limited to 'llvm/tools/llvm-objcopy')
-rw-r--r-- | llvm/tools/llvm-objcopy/ELF/Object.cpp | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/llvm/tools/llvm-objcopy/ELF/Object.cpp b/llvm/tools/llvm-objcopy/ELF/Object.cpp index 54cddcdd2cd..898137185e5 100644 --- a/llvm/tools/llvm-objcopy/ELF/Object.cpp +++ b/llvm/tools/llvm-objcopy/ELF/Object.cpp @@ -1863,19 +1863,6 @@ void Object::sortSections() { }); } -static uint64_t alignToAddr(uint64_t Offset, uint64_t Addr, uint64_t Align) { - // Calculate Diff such that (Offset + Diff) & -Align == Addr & -Align. - if (Align == 0) - Align = 1; - auto Diff = - static_cast<int64_t>(Addr % Align) - static_cast<int64_t>(Offset % Align); - // We only want to add to Offset, however, so if Diff < 0 we can add Align and - // (Offset + Diff) & -Align == Addr & -Align will still hold. - if (Diff < 0) - Diff += Align; - return Offset + Diff; -} - // Orders segments such that if x = y->ParentSegment then y comes before x. static void orderSegments(std::vector<Segment *> &Segments) { llvm::stable_sort(Segments, compareSegmentsByOffset); @@ -1903,8 +1890,8 @@ static uint64_t layoutSegments(std::vector<Segment *> &Segments, Seg->Offset = Parent->Offset + Seg->OriginalOffset - Parent->OriginalOffset; } else { - Offset = alignToAddr(Offset, Seg->VAddr, Seg->Align); - Seg->Offset = Offset; + Seg->Offset = + alignTo(Offset, std::max<uint64_t>(Seg->Align, 1), Seg->VAddr); } Offset = std::max(Offset, Seg->Offset + Seg->FileSize); } |