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