diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2015-06-23 19:55:04 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2015-06-23 19:55:04 +0000 |
commit | cfacc9d3e6f9a109c22b615b4a2bb27ce0fd57d6 (patch) | |
tree | 7f2f6b131d048fb6e73a5c7df4d2f145c0aaa7bc | |
parent | 44b0723069df2a73181ddbafef6d12f38521f097 (diff) | |
download | bcm5719-llvm-cfacc9d3e6f9a109c22b615b4a2bb27ce0fd57d6.tar.gz bcm5719-llvm-cfacc9d3e6f9a109c22b615b4a2bb27ce0fd57d6.zip |
[MachO] Initialize all fields of NormalizedFile.
The ObjectFileYAML.roundTrip serializes a default-constructed
NormalizedFile to YAML, triggering uninitialized memory reads.
While there use in-class member initializers.
llvm-svn: 240446
-rw-r--r-- | lld/lib/ReaderWriter/MachO/MachONormalizedFile.h | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFile.h b/lld/lib/ReaderWriter/MachO/MachONormalizedFile.h index 100ea9d6a91..c5f8fbc2b18 100644 --- a/lld/lib/ReaderWriter/MachO/MachONormalizedFile.h +++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFile.h @@ -210,15 +210,9 @@ LLVM_YAML_STRONG_TYPEDEF(uint32_t, FileFlags) /// struct NormalizedFile { - NormalizedFile() : arch(MachOLinkingContext::arch_unknown), - fileType(llvm::MachO::MH_OBJECT), - flags(0), - hasUUID(false), - os(MachOLinkingContext::OS::unknown) { } - - MachOLinkingContext::Arch arch; - HeaderFileType fileType; - FileFlags flags; + MachOLinkingContext::Arch arch = MachOLinkingContext::arch_unknown; + HeaderFileType fileType = llvm::MachO::MH_OBJECT; + FileFlags flags = 0; std::vector<Segment> segments; // Not used in object files. std::vector<Section> sections; @@ -229,20 +223,20 @@ struct NormalizedFile { // Maps to load commands with no LINKEDIT content (final linked images only). std::vector<DependentDylib> dependentDylibs; - StringRef installName; // dylibs only - PackedVersion compatVersion; // dylibs only - PackedVersion currentVersion; // dylibs only - bool hasUUID; + StringRef installName; // dylibs only + PackedVersion compatVersion = 0; // dylibs only + PackedVersion currentVersion = 0; // dylibs only + bool hasUUID = false; std::vector<StringRef> rpaths; - Hex64 entryAddress; - Hex64 stackSize; - MachOLinkingContext::OS os; - Hex64 sourceVersion; - PackedVersion minOSverson; - PackedVersion sdkVersion; + Hex64 entryAddress = 0; + Hex64 stackSize = 0; + MachOLinkingContext::OS os = MachOLinkingContext::OS::unknown; + Hex64 sourceVersion = 0; + PackedVersion minOSverson = 0; + PackedVersion sdkVersion = 0; // Maps to load commands with LINKEDIT content (final linked images only). - Hex32 pageSize; + Hex32 pageSize = 0; std::vector<RebaseLocation> rebasingInfo; std::vector<BindLocation> bindingInfo; std::vector<BindLocation> weakBindingInfo; |