Author: hans Date: Fri Aug 23 02:44:42 2019 New Revision: 369743 URL: http://llvm.org/viewvc/llvm-project?rev=369743&view=rev Log: Merging r368145: ------------------------------------------------------------------------ r368145 | ruiu | 2019-08-07 12:16:21 +0200 (Wed, 07 Aug 2019) | 3 lines
Handle /align option. Differential Revision: https://reviews.llvm.org/D65736 ------------------------------------------------------------------------ Added: lld/branches/release_90/test/COFF/align.s - copied unchanged from r368145, lld/trunk/test/COFF/align.s Modified: lld/branches/release_90/ (props changed) lld/branches/release_90/COFF/Config.h lld/branches/release_90/COFF/Driver.cpp lld/branches/release_90/COFF/Writer.cpp Propchange: lld/branches/release_90/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Fri Aug 23 02:44:42 2019 @@ -1 +1 @@ -/lld/trunk:366445,366500,366504,366780,366784,367836-367837,368041,368078 +/lld/trunk:366445,366500,366504,366780,366784,367836-367837,368041,368078,368145 Modified: lld/branches/release_90/COFF/Config.h URL: http://llvm.org/viewvc/llvm-project/lld/branches/release_90/COFF/Config.h?rev=369743&r1=369742&r2=369743&view=diff ============================================================================== --- lld/branches/release_90/COFF/Config.h (original) +++ lld/branches/release_90/COFF/Config.h Fri Aug 23 02:44:42 2019 @@ -189,6 +189,7 @@ struct Configuration { // Used for /thinlto-object-suffix-replace: std::pair<llvm::StringRef, llvm::StringRef> thinLTOObjectSuffixReplace; + uint64_t align = 4096; uint64_t imageBase = -1; uint64_t fileAlign = 512; uint64_t stackReserve = 1024 * 1024; Modified: lld/branches/release_90/COFF/Driver.cpp URL: http://llvm.org/viewvc/llvm-project/lld/branches/release_90/COFF/Driver.cpp?rev=369743&r1=369742&r2=369743&view=diff ============================================================================== --- lld/branches/release_90/COFF/Driver.cpp (original) +++ lld/branches/release_90/COFF/Driver.cpp Fri Aug 23 02:44:42 2019 @@ -36,6 +36,7 @@ #include "llvm/Option/Option.h" #include "llvm/Support/Debug.h" #include "llvm/Support/LEB128.h" +#include "llvm/Support/MathExtras.h" #include "llvm/Support/Path.h" #include "llvm/Support/Process.h" #include "llvm/Support/TarWriter.h" @@ -1421,6 +1422,13 @@ void LinkerDriver::link(ArrayRef<const c for (auto *arg : args.filtered(OPT_section)) parseSection(arg->getValue()); + // Handle /align + if (auto *arg = args.getLastArg(OPT_align)) { + parseNumbers(arg->getValue(), &config->align); + if (!isPowerOf2_64(config->align)) + error("/align: not a power of two: " + StringRef(arg->getValue())); + } + // Handle /aligncomm for (auto *arg : args.filtered(OPT_aligncomm)) parseAligncomm(arg->getValue()); Modified: lld/branches/release_90/COFF/Writer.cpp URL: http://llvm.org/viewvc/llvm-project/lld/branches/release_90/COFF/Writer.cpp?rev=369743&r1=369742&r2=369743&view=diff ============================================================================== --- lld/branches/release_90/COFF/Writer.cpp (original) +++ lld/branches/release_90/COFF/Writer.cpp Fri Aug 23 02:44:42 2019 @@ -1205,9 +1205,11 @@ void Writer::assignAddresses() { sizeOfHeaders += config->is64() ? sizeof(pe32plus_header) : sizeof(pe32_header); sizeOfHeaders = alignTo(sizeOfHeaders, config->fileAlign); - uint64_t rva = pageSize; // The first page is kept unmapped. fileSize = sizeOfHeaders; + // The first page is kept unmapped. + uint64_t rva = alignTo(sizeOfHeaders, config->align); + for (OutputSection *sec : outputSections) { if (sec == relocSec) addBaserels(); @@ -1237,10 +1239,10 @@ void Writer::assignAddresses() { sec->header.SizeOfRawData = rawSize; if (rawSize != 0) sec->header.PointerToRawData = fileSize; - rva += alignTo(virtualSize, pageSize); + rva += alignTo(virtualSize, config->align); fileSize += alignTo(rawSize, config->fileAlign); } - sizeOfImage = alignTo(rva, pageSize); + sizeOfImage = alignTo(rva, config->align); // Assign addresses to sections in MergeChunks. for (MergeChunk *mc : MergeChunk::instances) @@ -1309,7 +1311,7 @@ template <typename PEHeaderTy> void Writ pe->MinorLinkerVersion = 0; pe->ImageBase = config->imageBase; - pe->SectionAlignment = pageSize; + pe->SectionAlignment = config->align; pe->FileAlignment = config->fileAlign; pe->MajorImageVersion = config->majorImageVersion; pe->MinorImageVersion = config->minorImageVersion; _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits