diff options
| author | Fangrui Song <maskray@google.com> | 2019-04-24 13:23:15 +0000 |
|---|---|---|
| committer | Fangrui Song <maskray@google.com> | 2019-04-24 13:23:15 +0000 |
| commit | de0462a500f9f4429473cb174f027d690066a9c2 (patch) | |
| tree | a415730d716ef984117e75317d1bf1a4ea56b99c | |
| parent | b49e192a37b40f0e7249df3fe6cea187858531e9 (diff) | |
| download | bcm5719-llvm-de0462a500f9f4429473cb174f027d690066a9c2.tar.gz bcm5719-llvm-de0462a500f9f4429473cb174f027d690066a9c2.zip | |
[yaml2obj] Replace num_zeros with write_zeros
llvm-svn: 359091
| -rw-r--r-- | llvm/tools/yaml2obj/yaml2coff.cpp | 59 |
1 files changed, 24 insertions, 35 deletions
diff --git a/llvm/tools/yaml2obj/yaml2coff.cpp b/llvm/tools/yaml2obj/yaml2coff.cpp index 223ade065e1..e9f1f558201 100644 --- a/llvm/tools/yaml2obj/yaml2coff.cpp +++ b/llvm/tools/yaml2obj/yaml2coff.cpp @@ -339,22 +339,6 @@ zeros_impl<sizeof(T)> zeros(const T &) { return zeros_impl<sizeof(T)>(); } -struct num_zeros_impl { - size_t N; - num_zeros_impl(size_t N) : N(N) {} -}; - -raw_ostream &operator<<(raw_ostream &OS, const num_zeros_impl &NZI) { - for (size_t I = 0; I != NZI.N; ++I) - OS.write(0); - return OS; -} - -static num_zeros_impl num_zeros(size_t N) { - num_zeros_impl NZI(N); - return NZI; -} - template <typename T> static uint32_t initializeOptionalHeader(COFFParser &CP, uint16_t Magic, T Header) { memset(Header, 0, sizeof(*Header)); @@ -431,7 +415,7 @@ static bool writeCOFF(COFFParser &CP, raw_ostream &OS) { OS.write(reinterpret_cast<char *>(&DH), sizeof(DH)); // Write padding until we reach the position of where our PE signature // should live. - OS << num_zeros(DOSStubSize - sizeof(DH)); + OS.write_zeros(DOSStubSize - sizeof(DH)); // Write out the PE signature. OS.write(COFF::PEMagic, sizeof(COFF::PEMagic)); } @@ -515,10 +499,10 @@ static bool writeCOFF(COFFParser &CP, raw_ostream &OS) { if (!S.Header.SizeOfRawData) continue; assert(S.Header.PointerToRawData >= OS.tell()); - OS << num_zeros(S.Header.PointerToRawData - OS.tell()); + OS.write_zeros(S.Header.PointerToRawData - OS.tell()); S.SectionData.writeAsBinary(OS); assert(S.Header.SizeOfRawData >= S.SectionData.binary_size()); - OS << num_zeros(S.Header.SizeOfRawData - S.SectionData.binary_size()); + OS.write_zeros(S.Header.SizeOfRawData - S.SectionData.binary_size()); for (const COFFYAML::Relocation &R : S.Relocations) { uint32_t SymbolTableIndex; if (R.SymbolTableIndex) { @@ -550,25 +534,28 @@ static bool writeCOFF(COFFParser &CP, raw_ostream &OS) { << binary_le(i->Header.StorageClass) << binary_le(i->Header.NumberOfAuxSymbols); - if (i->FunctionDefinition) + if (i->FunctionDefinition) { OS << binary_le(i->FunctionDefinition->TagIndex) << binary_le(i->FunctionDefinition->TotalSize) << binary_le(i->FunctionDefinition->PointerToLinenumber) << binary_le(i->FunctionDefinition->PointerToNextFunction) - << zeros(i->FunctionDefinition->unused) - << num_zeros(CP.getSymbolSize() - COFF::Symbol16Size); - if (i->bfAndefSymbol) + << zeros(i->FunctionDefinition->unused); + OS.write_zeros(CP.getSymbolSize() - COFF::Symbol16Size); + } + if (i->bfAndefSymbol) { OS << zeros(i->bfAndefSymbol->unused1) << binary_le(i->bfAndefSymbol->Linenumber) << zeros(i->bfAndefSymbol->unused2) << binary_le(i->bfAndefSymbol->PointerToNextFunction) - << zeros(i->bfAndefSymbol->unused3) - << num_zeros(CP.getSymbolSize() - COFF::Symbol16Size); - if (i->WeakExternal) + << zeros(i->bfAndefSymbol->unused3); + OS.write_zeros(CP.getSymbolSize() - COFF::Symbol16Size); + } + if (i->WeakExternal) { OS << binary_le(i->WeakExternal->TagIndex) << binary_le(i->WeakExternal->Characteristics) - << zeros(i->WeakExternal->unused) - << num_zeros(CP.getSymbolSize() - COFF::Symbol16Size); + << zeros(i->WeakExternal->unused); + OS.write_zeros(CP.getSymbolSize() - COFF::Symbol16Size); + } if (!i->File.empty()) { unsigned SymbolSize = CP.getSymbolSize(); uint32_t NumberOfAuxRecords = @@ -576,9 +563,9 @@ static bool writeCOFF(COFFParser &CP, raw_ostream &OS) { uint32_t NumberOfAuxBytes = NumberOfAuxRecords * SymbolSize; uint32_t NumZeros = NumberOfAuxBytes - i->File.size(); OS.write(i->File.data(), i->File.size()); - OS << num_zeros(NumZeros); + OS.write_zeros(NumZeros); } - if (i->SectionDefinition) + if (i->SectionDefinition) { OS << binary_le(i->SectionDefinition->Length) << binary_le(i->SectionDefinition->NumberOfRelocations) << binary_le(i->SectionDefinition->NumberOfLinenumbers) @@ -586,14 +573,16 @@ static bool writeCOFF(COFFParser &CP, raw_ostream &OS) { << binary_le(static_cast<int16_t>(i->SectionDefinition->Number)) << binary_le(i->SectionDefinition->Selection) << zeros(i->SectionDefinition->unused) - << binary_le(static_cast<int16_t>(i->SectionDefinition->Number >> 16)) - << num_zeros(CP.getSymbolSize() - COFF::Symbol16Size); - if (i->CLRToken) + << binary_le(static_cast<int16_t>(i->SectionDefinition->Number >> 16)); + OS.write_zeros(CP.getSymbolSize() - COFF::Symbol16Size); + } + if (i->CLRToken) { OS << binary_le(i->CLRToken->AuxType) << zeros(i->CLRToken->unused1) << binary_le(i->CLRToken->SymbolTableIndex) - << zeros(i->CLRToken->unused2) - << num_zeros(CP.getSymbolSize() - COFF::Symbol16Size); + << zeros(i->CLRToken->unused2); + OS.write_zeros(CP.getSymbolSize() - COFF::Symbol16Size); + } } // Output string table. |

