diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2022-07-27 19:50:45 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2022-07-27 19:50:54 +0000 |
| commit | 08e8dd7b9db7bb4a9de26d44c1cbfd24e869c014 (patch) | |
| tree | 041e72e32710b1e742516d8c9f1575bf0116d3e3 /lld/ELF/ScriptParser.cpp | |
| parent | 4b4fe385e49bd883fd183b5f21c1ea486c722e61 (diff) | |
vendor/llvm-project/llvmorg-15-init-17827-gd77882e66779vendor/llvm-project/llvmorg-15-init-17826-g1f8ae9d7e7e4
Diffstat (limited to 'lld/ELF/ScriptParser.cpp')
| -rw-r--r-- | lld/ELF/ScriptParser.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lld/ELF/ScriptParser.cpp b/lld/ELF/ScriptParser.cpp index 4d73541b3d42..7fc50b293b15 100644 --- a/lld/ELF/ScriptParser.cpp +++ b/lld/ELF/ScriptParser.cpp @@ -1392,7 +1392,7 @@ Expr ScriptParser::readPrimary() { Expr e = readExpr(); if (consume(")")) { e = checkAlignment(e, location); - return [=] { return alignTo(script->getDot(), e().getValue()); }; + return [=] { return alignToPowerOf2(script->getDot(), e().getValue()); }; } expect(","); Expr e2 = checkAlignment(readExpr(), location); @@ -1423,7 +1423,8 @@ Expr ScriptParser::readPrimary() { expect(")"); seenDataAlign = true; return [=] { - return alignTo(script->getDot(), std::max((uint64_t)1, e().getValue())); + uint64_t align = std::max(uint64_t(1), e().getValue()); + return (script->getDot() + align - 1) & -align; }; } if (tok == "DATA_SEGMENT_END") { @@ -1443,7 +1444,7 @@ Expr ScriptParser::readPrimary() { expect(")"); seenRelroEnd = true; Expr e = getPageSize(); - return [=] { return alignTo(script->getDot(), e().getValue()); }; + return [=] { return alignToPowerOf2(script->getDot(), e().getValue()); }; } if (tok == "DEFINED") { StringRef name = unquote(readParenLiteral()); |
