1//===- GOT.cpp ------------------------------------------------------------===//
2//
3//                     The MCLinker Project
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9#include <llvm/Support/Casting.h>
10
11#include <mcld/LD/LDSection.h>
12#include <mcld/Target/GOT.h>
13#include <mcld/Support/MsgHandling.h>
14#include <mcld/IRBuilder.h>
15
16#include <cstring>
17#include <cstdlib>
18
19using namespace mcld;
20
21//===----------------------------------------------------------------------===//
22// GOT
23//===----------------------------------------------------------------------===//
24GOT::GOT(LDSection& pSection)
25  : m_Section(pSection) {
26  m_SectionData = IRBuilder::CreateSectionData(pSection);
27}
28
29GOT::~GOT()
30{
31}
32
33void GOT::finalizeSectionSize()
34{
35  uint32_t offset = 0;
36  SectionData::iterator frag, fragEnd = m_SectionData->end();
37  for (frag = m_SectionData->begin(); frag != fragEnd; ++frag) {
38    frag->setOffset(offset);
39    offset += frag->size();
40  }
41
42  m_Section.setSize(offset);
43}
44
45