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