1e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao/* 2e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * Copyright 2011, The Android Open Source Project 3e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * 4e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * Licensed under the Apache License, Version 2.0 (the "License"); 5e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * you may not use this file except in compliance with the License. 6e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * You may obtain a copy of the License at 7e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * 8e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * http://www.apache.org/licenses/LICENSE-2.0 9e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * 10e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * Unless required by applicable law or agreed to in writing, software 11e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * distributed under the License is distributed on an "AS IS" BASIS, 12e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * See the License for the specific language governing permissions and 14e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao * limitations under the License. 15e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao */ 16e2cdbc6710aa43475f17e73aba143ceb786e968cShih-wei Liao 1703eafa401a9387395625023857981d4691ceea22TDYa#ifndef ELF_SECTION_REL_TABLE_H 1803eafa401a9387395625023857981d4691ceea22TDYa#define ELF_SECTION_REL_TABLE_H 1903eafa401a9387395625023857981d4691ceea22TDYa 2058611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien#include "ELFTypes.h" 21974c82871ee2205c0f7728cc43a5ff02487a50e0Logan Chien#include "ELFSection.h" 2203eafa401a9387395625023857981d4691ceea22TDYa 2358611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien#include <string> 2458611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien#include <vector> 2503eafa401a9387395625023857981d4691ceea22TDYa 26a9ab5889e842a49ff16d06594efe96b0210fe1f7Logan Chientemplate <unsigned Bitwidth> 27974c82871ee2205c0f7728cc43a5ff02487a50e0Logan Chienclass ELFSectionRelTable : public ELFSection<Bitwidth> { 2858611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chienpublic: 2958611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien ELF_TYPE_INTRO_TO_TEMPLATE_SCOPE(Bitwidth); 3058611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien 313bab0cc4c1115bc4430aa97453bca914e1174858TDYaprivate: 3258611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien std::vector<ELFRelocTy *> table; 3303eafa401a9387395625023857981d4691ceea22TDYa 3403eafa401a9387395625023857981d4691ceea22TDYaprivate: 3503eafa401a9387395625023857981d4691ceea22TDYa ELFSectionRelTable() { } 3603eafa401a9387395625023857981d4691ceea22TDYa 3703eafa401a9387395625023857981d4691ceea22TDYapublic: 38974c82871ee2205c0f7728cc43a5ff02487a50e0Logan Chien virtual ~ELFSectionRelTable(); 393bab0cc4c1115bc4430aa97453bca914e1174858TDYa 40974c82871ee2205c0f7728cc43a5ff02487a50e0Logan Chien virtual void print() const; 4103eafa401a9387395625023857981d4691ceea22TDYa 42974c82871ee2205c0f7728cc43a5ff02487a50e0Logan Chien template <typename Archiver> 4358611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien static ELFSectionRelTable *read(Archiver &AR, ELFSectionHeaderTy const *sh); 4403eafa401a9387395625023857981d4691ceea22TDYa 45974c82871ee2205c0f7728cc43a5ff02487a50e0Logan Chien size_t size() const { 4668aab0239525454d17465d927028cdbd2bfd2969Logan Chien return table.size(); 47974c82871ee2205c0f7728cc43a5ff02487a50e0Logan Chien } 4803eafa401a9387395625023857981d4691ceea22TDYa 4958611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien ELFRelocTy const *operator[](size_t index) const { 5068aab0239525454d17465d927028cdbd2bfd2969Logan Chien return table[index]; 51974c82871ee2205c0f7728cc43a5ff02487a50e0Logan Chien } 52974c82871ee2205c0f7728cc43a5ff02487a50e0Logan Chien 5358611fc8193e7386698178f167a2e0cbdd6a4f6fLogan Chien ELFRelocTy *operator[](size_t index) { 5468aab0239525454d17465d927028cdbd2bfd2969Logan Chien return table[index]; 55974c82871ee2205c0f7728cc43a5ff02487a50e0Logan Chien } 567cea0a041b87afe2c5ad5f26e6a89494d0819bd1Logan Chien 577cea0a041b87afe2c5ad5f26e6a89494d0819bd1Logan Chien size_t getMaxNumStubs(ELFObjectTy const *) const; 5803eafa401a9387395625023857981d4691ceea22TDYa}; 5903eafa401a9387395625023857981d4691ceea22TDYa 60b27ccae0d5900e923c13936274369f754d8e28e9Logan Chien#include "impl/ELFSectionRelTable.hxx" 6103eafa401a9387395625023857981d4691ceea22TDYa 6203eafa401a9387395625023857981d4691ceea22TDYa#endif // ELF_SECTION_REL_TABLE_H 63