ELFSectionRelTable.h revision 3bab0cc4c1115bc4430aa97453bca914e1174858
103eafa401a9387395625023857981d4691ceea22TDYa#ifndef ELF_SECTION_REL_TABLE_H 203eafa401a9387395625023857981d4691ceea22TDYa#define ELF_SECTION_REL_TABLE_H 303eafa401a9387395625023857981d4691ceea22TDYa 43bab0cc4c1115bc4430aa97453bca914e1174858TDYa#include "ELFSectionTable_CRTP.h" 53bab0cc4c1115bc4430aa97453bca914e1174858TDYa#include "ELFSectionRel.h" 603eafa401a9387395625023857981d4691ceea22TDYa 73bab0cc4c1115bc4430aa97453bca914e1174858TDYa#include <string> 803eafa401a9387395625023857981d4691ceea22TDYa 903eafa401a9387395625023857981d4691ceea22TDYatemplate <size_t Bitwidth> class ELFSectionRel; 1003eafa401a9387395625023857981d4691ceea22TDYa 1103eafa401a9387395625023857981d4691ceea22TDYatemplate <size_t Bitwidth> 123bab0cc4c1115bc4430aa97453bca914e1174858TDYaclass ELFSectionRelTable : 133bab0cc4c1115bc4430aa97453bca914e1174858TDYa public ELFSectionTable_CRTP<Bitwidth, 143bab0cc4c1115bc4430aa97453bca914e1174858TDYa ELFSectionRelTable<Bitwidth>, 153bab0cc4c1115bc4430aa97453bca914e1174858TDYa ELFSectionRel<Bitwidth> > { 163bab0cc4c1115bc4430aa97453bca914e1174858TDYa friend class ELFSectionTable_CRTP<Bitwidth, 173bab0cc4c1115bc4430aa97453bca914e1174858TDYa ELFSectionRelTable<Bitwidth>, 183bab0cc4c1115bc4430aa97453bca914e1174858TDYa ELFSectionRel<Bitwidth> >; 193bab0cc4c1115bc4430aa97453bca914e1174858TDYaprivate: 203bab0cc4c1115bc4430aa97453bca914e1174858TDYa static std::string const TABLE_NAME; 213bab0cc4c1115bc4430aa97453bca914e1174858TDYa 2203eafa401a9387395625023857981d4691ceea22TDYapublic: 2303eafa401a9387395625023857981d4691ceea22TDYa typedef ELFSectionRel<Bitwidth> Rel; 2403eafa401a9387395625023857981d4691ceea22TDYa 2503eafa401a9387395625023857981d4691ceea22TDYaprivate: 263bab0cc4c1115bc4430aa97453bca914e1174858TDYa //std::vector<boost::shared_ptr<Rel> > rel_table; 2703eafa401a9387395625023857981d4691ceea22TDYa 2803eafa401a9387395625023857981d4691ceea22TDYaprivate: 2903eafa401a9387395625023857981d4691ceea22TDYa ELFSectionRelTable() { } 3003eafa401a9387395625023857981d4691ceea22TDYa 3103eafa401a9387395625023857981d4691ceea22TDYapublic: 323bab0cc4c1115bc4430aa97453bca914e1174858TDYa // Note: Inherit from Table CRTP. 333bab0cc4c1115bc4430aa97453bca914e1174858TDYa 343bab0cc4c1115bc4430aa97453bca914e1174858TDYa //template <typename Archiver> 353bab0cc4c1115bc4430aa97453bca914e1174858TDYa //static boost::shared_ptr<ELFSectionRelTable> 363bab0cc4c1115bc4430aa97453bca914e1174858TDYa //read(Archiver &AR, 373bab0cc4c1115bc4430aa97453bca914e1174858TDYa // ELFObject<Bitwidth> *owner, 383bab0cc4c1115bc4430aa97453bca914e1174858TDYa // ELFSectionHeader<Bitwidth> const *sh); 3903eafa401a9387395625023857981d4691ceea22TDYa 403bab0cc4c1115bc4430aa97453bca914e1174858TDYa //virtual void print() const; 4103eafa401a9387395625023857981d4691ceea22TDYa 423bab0cc4c1115bc4430aa97453bca914e1174858TDYa //size_t size() const; 4303eafa401a9387395625023857981d4691ceea22TDYa 443bab0cc4c1115bc4430aa97453bca914e1174858TDYa //Rel const *operator[](size_t index) const; 4503eafa401a9387395625023857981d4691ceea22TDYa}; 4603eafa401a9387395625023857981d4691ceea22TDYa 4703eafa401a9387395625023857981d4691ceea22TDYa 4803eafa401a9387395625023857981d4691ceea22TDYa//==================Inline Member Function Definition========================== 4903eafa401a9387395625023857981d4691ceea22TDYa 5003eafa401a9387395625023857981d4691ceea22TDYatemplate <size_t Bitwidth> 513bab0cc4c1115bc4430aa97453bca914e1174858TDYastd::string const ELFSectionRelTable<Bitwidth>::TABLE_NAME("Relocation Table"); 5203eafa401a9387395625023857981d4691ceea22TDYa 5303eafa401a9387395625023857981d4691ceea22TDYa#endif // ELF_SECTION_REL_TABLE_H 54