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 "mcld/LD/LDSection.h"
10#include "mcld/IRBuilder.h"
11#include "mcld/Support/MsgHandling.h"
12#include "mcld/Target/GOT.h"
13
14#include <llvm/Support/Casting.h>
15
16#include <cstring>
17#include <cstdlib>
18
19namespace mcld {
20
21//===----------------------------------------------------------------------===//
22// GOT
23//===----------------------------------------------------------------------===//
24GOT::GOT(LDSection& pSection) : m_Section(pSection) {
25  m_SectionData = IRBuilder::CreateSectionData(pSection);
26}
27
28GOT::~GOT() {
29}
30
31void GOT::finalizeSectionSize() {
32  uint32_t offset = 0;
33  SectionData::iterator frag, fragEnd = m_SectionData->end();
34  for (frag = m_SectionData->begin(); frag != fragEnd; ++frag) {
35    frag->setOffset(offset);
36    offset += frag->size();
37  }
38
39  m_Section.setSize(offset);
40}
41
42}  // namespace mcld
43