Author: labath Date: Tue Jul 30 01:42:42 2019 New Revision: 367299 URL: http://llvm.org/viewvc/llvm-project?rev=367299&view=rev Log: PECOFF: Fix a "memset clearing an object of non-trivial type" warning
This time, the warning pointed to an actual problem, because the coff_opt_header structure contained a std::vector. I guess this happened to work because the all-zero state was a valid representation of an empty vector, but its not a good idea to rely on that. I remove the memset, and have the structure clear its members in the constructor instead. Modified: lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h Modified: lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp?rev=367299&r1=367298&r2=367299&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp (original) +++ lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp Tue Jul 30 01:42:42 2019 @@ -267,11 +267,10 @@ ObjectFilePECOFF::ObjectFilePECOFF(const lldb::offset_t file_offset, lldb::offset_t length) : ObjectFile(module_sp, file, file_offset, length, data_sp, data_offset), - m_dos_header(), m_coff_header(), m_coff_header_opt(), m_sect_headers(), + m_dos_header(), m_coff_header(), m_sect_headers(), m_entry_point_address(), m_deps_filespec(), m_owningbin() { ::memset(&m_dos_header, 0, sizeof(m_dos_header)); ::memset(&m_coff_header, 0, sizeof(m_coff_header)); - ::memset(&m_coff_header_opt, 0, sizeof(m_coff_header_opt)); } ObjectFilePECOFF::ObjectFilePECOFF(const lldb::ModuleSP &module_sp, @@ -279,11 +278,10 @@ ObjectFilePECOFF::ObjectFilePECOFF(const const lldb::ProcessSP &process_sp, addr_t header_addr) : ObjectFile(module_sp, process_sp, header_addr, header_data_sp), - m_dos_header(), m_coff_header(), m_coff_header_opt(), m_sect_headers(), + m_dos_header(), m_coff_header(), m_sect_headers(), m_entry_point_address(), m_deps_filespec(), m_owningbin() { ::memset(&m_dos_header, 0, sizeof(m_dos_header)); ::memset(&m_coff_header, 0, sizeof(m_coff_header)); - ::memset(&m_coff_header_opt, 0, sizeof(m_coff_header_opt)); } ObjectFilePECOFF::~ObjectFilePECOFF() {} Modified: lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h?rev=367299&r1=367298&r2=367299&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h (original) +++ lldb/trunk/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h Tue Jul 30 01:42:42 2019 @@ -171,36 +171,36 @@ protected: } data_directory_t; typedef struct coff_opt_header { - uint16_t magic; - uint8_t major_linker_version; - uint8_t minor_linker_version; - uint32_t code_size; - uint32_t data_size; - uint32_t bss_size; - uint32_t entry; - uint32_t code_offset; - uint32_t data_offset; + uint16_t magic = 0; + uint8_t major_linker_version = 0; + uint8_t minor_linker_version = 0; + uint32_t code_size = 0; + uint32_t data_size = 0; + uint32_t bss_size = 0; + uint32_t entry = 0; + uint32_t code_offset = 0; + uint32_t data_offset = 0; - uint64_t image_base; - uint32_t sect_alignment; - uint32_t file_alignment; - uint16_t major_os_system_version; - uint16_t minor_os_system_version; - uint16_t major_image_version; - uint16_t minor_image_version; - uint16_t major_subsystem_version; - uint16_t minor_subsystem_version; - uint32_t reserved1; - uint32_t image_size; - uint32_t header_size; - uint32_t checksum; - uint16_t subsystem; - uint16_t dll_flags; - uint64_t stack_reserve_size; - uint64_t stack_commit_size; - uint64_t heap_reserve_size; - uint64_t heap_commit_size; - uint32_t loader_flags; + uint64_t image_base = 0; + uint32_t sect_alignment = 0; + uint32_t file_alignment = 0; + uint16_t major_os_system_version = 0; + uint16_t minor_os_system_version = 0; + uint16_t major_image_version = 0; + uint16_t minor_image_version = 0; + uint16_t major_subsystem_version = 0; + uint16_t minor_subsystem_version = 0; + uint32_t reserved1 = 0; + uint32_t image_size = 0; + uint32_t header_size = 0; + uint32_t checksum = 0; + uint16_t subsystem = 0; + uint16_t dll_flags = 0; + uint64_t stack_reserve_size = 0; + uint64_t stack_commit_size = 0; + uint64_t heap_reserve_size = 0; + uint64_t heap_commit_size = 0; + uint32_t loader_flags = 0; // uint32_t num_data_dir_entries; std::vector<data_directory> data_dirs; // will contain num_data_dir_entries entries _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits