retdec
elf_core.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_FILEFORMAT_TYPES_NOTE_SECTION_ELF_CORE_H
8 #define RETDEC_FILEFORMAT_TYPES_NOTE_SECTION_ELF_CORE_H
9 
10 #include <string>
11 #include <vector>
12 #include <map>
13 
14 #include "retdec/common/address.h"
15 
16 namespace retdec {
17 namespace fileformat {
18 
19 using RegisterMap = std::map<std::string, std::uint64_t>;
20 using AuxVectorEntry = std::pair<std::uint64_t, std::uint64_t>;
21 
26 {
27  public:
28  std::uint64_t startAddr;
29  std::uint64_t endAddr;
30  std::uint64_t pageOffset;
31  std::string filePath;
32 };
33 
41 {
42  public:
43  std::uint64_t pid;
44  std::uint64_t ppid;
46 };
47 
52 {
53  private:
54  // NT_FILE
55  std::uint64_t pageSize;
56  std::vector<FileMapEntry> fileMap;
57 
58  // NT_PRSTATUS
59  std::vector<PrStatusInfo> prstatusInfos;
60 
61  // NT_PRPSINFO
62  std::string appName;
63  std::string cmdLine;
64 
65  // NT_AUXV
66  std::vector<AuxVectorEntry> auxVector;
67 
68  public:
71  void setPageSize(const std::uint64_t& size);
72  void addFileMapEntry(const FileMapEntry& entry);
73  void addAuxVectorEntry(const AuxVectorEntry& entry);
74  void addPrStatusInfo(const PrStatusInfo& info);
75  void setAppName(const std::string& name);
76  void setCmdLine(const std::string& line);
78 
81  std::uint64_t getPageSize() const;
82  const std::vector<FileMapEntry>& getFileMap() const;
83  const std::vector<AuxVectorEntry>& getAuxVector() const;
85 
88  void dump(std::ostream& outStream);
90 };
91 
92 } // namespace fileformat
93 } // namespace retdec
94 
95 #endif
Definition: elf_core.h:52
const std::vector< FileMapEntry > & getFileMap() const
Definition: elf_core.cpp:79
void addPrStatusInfo(const PrStatusInfo &info)
Definition: elf_core.cpp:34
void dump(std::ostream &outStream)
Definition: elf_core.cpp:97
std::string cmdLine
command line
Definition: elf_core.h:63
std::vector< PrStatusInfo > prstatusInfos
prstatus structures
Definition: elf_core.h:59
void setPageSize(const std::uint64_t &size)
Definition: elf_core.cpp:61
void setAppName(const std::string &name)
Definition: elf_core.cpp:43
void addFileMapEntry(const FileMapEntry &entry)
Definition: elf_core.cpp:16
std::vector< AuxVectorEntry > auxVector
Definition: elf_core.h:66
std::vector< FileMapEntry > fileMap
parsed file map
Definition: elf_core.h:56
const std::vector< AuxVectorEntry > & getAuxVector() const
Definition: elf_core.cpp:88
std::string appName
original application name
Definition: elf_core.h:62
void addAuxVectorEntry(const AuxVectorEntry &entry)
Definition: elf_core.cpp:25
std::uint64_t pageSize
used page size
Definition: elf_core.h:55
std::uint64_t getPageSize() const
Definition: elf_core.cpp:70
void setCmdLine(const std::string &line)
Definition: elf_core.cpp:52
Definition: elf_core.h:26
std::string filePath
full path to mapped file
Definition: elf_core.h:31
std::uint64_t pageOffset
page offset
Definition: elf_core.h:30
std::uint64_t startAddr
start address of mapped segment
Definition: elf_core.h:28
std::uint64_t endAddr
end address of mapped segment
Definition: elf_core.h:29
Definition: elf_core.h:41
RegisterMap registers
registers state
Definition: elf_core.h:45
std::uint64_t pid
process ID
Definition: elf_core.h:43
std::uint64_t ppid
parent process ID
Definition: elf_core.h:44
Address, address pair and other derived class representation.
std::map< std::string, std::uint64_t > RegisterMap
Definition: elf_core.h:19
std::pair< std::uint64_t, std::uint64_t > AuxVectorEntry
Definition: elf_core.h:20
Definition: archive_wrapper.h:19