diff options
author | Stephane Sezer <sas@cd80.net> | 2016-03-23 18:00:13 +0000 |
---|---|---|
committer | Stephane Sezer <sas@cd80.net> | 2016-03-23 18:00:13 +0000 |
commit | 8e38c66645b3452eae659d97130c028dd30e5c21 (patch) | |
tree | fddf43c8107f5463f9ce6b1661de5cf7dd37f4da /lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp | |
parent | e82f3a099fa5c3b81eca29c4d5d0ce9ae4cdd923 (diff) | |
download | bcm5719-llvm-8e38c66645b3452eae659d97130c028dd30e5c21.tar.gz bcm5719-llvm-8e38c66645b3452eae659d97130c028dd30e5c21.zip |
Implement ObjectFilePECOFF::GetEntryPointAddress.
Reviewers: zturner, clayborg
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D17970
llvm-svn: 264173
Diffstat (limited to 'lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp')
-rw-r--r-- | lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp b/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp index 52c6ac8fb65..48b9f8816a3 100644 --- a/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp +++ b/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp @@ -192,7 +192,8 @@ ObjectFilePECOFF::ObjectFilePECOFF (const lldb::ModuleSP &module_sp, m_dos_header (), m_coff_header (), m_coff_header_opt (), - m_sect_headers () + m_sect_headers (), + m_entry_point_address () { ::memset (&m_dos_header, 0, sizeof(m_dos_header)); ::memset (&m_coff_header, 0, sizeof(m_coff_header)); @@ -814,6 +815,25 @@ ObjectFilePECOFF::GetDependentModules (FileSpecList& files) return 0; } +lldb_private::Address +ObjectFilePECOFF::GetEntryPointAddress () +{ + if (m_entry_point_address.IsValid()) + return m_entry_point_address; + + if (!ParseHeader() || !IsExecutable()) + return m_entry_point_address; + + SectionList *section_list = GetSectionList(); + addr_t offset = m_coff_header_opt.entry; + + if (!section_list) + m_entry_point_address.SetOffset(offset); + else + m_entry_point_address.ResolveAddressUsingFileSections(offset, section_list); + return m_entry_point_address; +} + //---------------------------------------------------------------------- // Dump |