ELFSectionProgBits.hxx revision 74f7a939f44d926babd52f59978e6b093e4bb2d0
16ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien#ifndef ELF_SECTION_PROGBITS_HXX
26ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien#define ELF_SECTION_PROGBITS_HXX
36ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien
46ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien#include "ELFTypes.h"
56ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien
66ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien#include <llvm/Support/Format.h>
76ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien#include <llvm/Support/raw_ostream.h>
86ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien
96ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien#include "utils/raw_ostream.h"
106ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien
116ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chientemplate <unsigned Bitwidth>
1274f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chientemplate <typename Archiver>
1374f7a939f44d926babd52f59978e6b093e4bb2d0Logan ChienELFSectionProgBits<Bitwidth> *
1474f7a939f44d926babd52f59978e6b093e4bb2d0Logan ChienELFSectionProgBits<Bitwidth>::read(Archiver &AR,
1574f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien                                   ELFObjectTy const *owner,
1674f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien                                   ELFSectionHeaderTy const *sh) {
176ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien
1874f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien  llvm::OwningPtr<ELFSectionProgBits> result(new ELFSectionProgBits());
196ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien
2074f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien  // FIXME: We should add extra space for stub.
2174f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien  if (!result->chunk.allocate(sh->getSize())) {
2274f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien    return NULL;
2374f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien  }
246ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien
2574f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien  result->sh = sh;
266ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien
2774f7a939f44d926babd52f59978e6b093e4bb2d0Logan Chien  return result.take();
286ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien}
296ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien
306ea6f71f24bc6cf759b2458209f3ef86559c685aLogan Chien#endif // ELF_SECTION_PROGBITS_HXX
31