aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/COFFImportFile.cpp
diff options
context:
space:
mode:
authorGalina Kistanova <gkistanova@gmail.com>2017-06-08 23:35:52 +0000
committerGalina Kistanova <gkistanova@gmail.com>2017-06-08 23:35:52 +0000
commit415ec9260f20d23ed9f269204cfd45a433b5e170 (patch)
tree416534cf555fefe4ac534d2e749fbb53d226c6bf /llvm/lib/Object/COFFImportFile.cpp
parentc1993fa1a3ec2e9c9722879ea9cb80d9a3cacce2 (diff)
downloadllvm-415ec9260f20d23ed9f269204cfd45a433b5e170.zip
llvm-415ec9260f20d23ed9f269204cfd45a433b5e170.tar.gz
llvm-415ec9260f20d23ed9f269204cfd45a433b5e170.tar.bz2
Fixed warning: dereferencing type-punned pointer will break strict-aliasing rules.
No need in reinterpret_cast<StringTableOffset &> here, as struct coff_symbol Name is a unin with the member StringTableOffset Offset. This union member could be accessed directly. llvm-svn: 305029
Diffstat (limited to 'llvm/lib/Object/COFFImportFile.cpp')
-rw-r--r--llvm/lib/Object/COFFImportFile.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/llvm/lib/Object/COFFImportFile.cpp b/llvm/lib/Object/COFFImportFile.cpp
index 37962d8..740bf94 100644
--- a/llvm/lib/Object/COFFImportFile.cpp
+++ b/llvm/lib/Object/COFFImportFile.cpp
@@ -285,11 +285,13 @@ ObjectFactory::createImportDescriptor(std::vector<uint8_t> &Buffer) {
IMAGE_SYM_CLASS_EXTERNAL,
0},
};
- reinterpret_cast<StringTableOffset &>(SymbolTable[0].Name).Offset =
+ // TODO: Name.Offset.Offset here and in the all similar places below
+ // suggests a names refactoring. Maybe StringTableOffset.Value?
+ SymbolTable[0].Name.Offset.Offset =
sizeof(uint32_t);
- reinterpret_cast<StringTableOffset &>(SymbolTable[5].Name).Offset =
+ SymbolTable[5].Name.Offset.Offset =
sizeof(uint32_t) + ImportDescriptorSymbolName.length() + 1;
- reinterpret_cast<StringTableOffset &>(SymbolTable[6].Name).Offset =
+ SymbolTable[6].Name.Offset.Offset =
sizeof(uint32_t) + ImportDescriptorSymbolName.length() + 1 +
NullImportDescriptorSymbolName.length() + 1;
append(Buffer, SymbolTable);
@@ -354,8 +356,7 @@ ObjectFactory::createNullImportDescriptor(std::vector<uint8_t> &Buffer) {
IMAGE_SYM_CLASS_EXTERNAL,
0},
};
- reinterpret_cast<StringTableOffset &>(SymbolTable[0].Name).Offset =
- sizeof(uint32_t);
+ SymbolTable[0].Name.Offset.Offset = sizeof(uint32_t);
append(Buffer, SymbolTable);
// String Table
@@ -437,8 +438,7 @@ NewArchiveMember ObjectFactory::createNullThunk(std::vector<uint8_t> &Buffer) {
IMAGE_SYM_CLASS_EXTERNAL,
0},
};
- reinterpret_cast<StringTableOffset &>(SymbolTable[0].Name).Offset =
- sizeof(uint32_t);
+ SymbolTable[0].Name.Offset.Offset = sizeof(uint32_t);
append(Buffer, SymbolTable);
// String Table