ELFFileFormat.h revision affc150dc44fab1911775a49636d0ce85333b634
15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- LDFileFormat.h -----------------------------------------------------===// 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// The MCLinker Project 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details. 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifndef MCLD_ELF_FILE_FORMAT_H 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define MCLD_ELF_FILE_FORMAT_H 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifdef ENABLE_UNITTEST 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <gtest.h> 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/LDFileFormat.h> 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/LDSection.h> 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace mcld 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass GNULDBackend; 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass MCLinker; 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/** \class ELFFileFormat 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * \brief ELFFileFormat describes the common file formats in ELF. 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * LDFileFormats control the formats of the output file. 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * @ref "Object Files," Ch. 4, in System V Application Binary Interface, 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * Fourth Edition. 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * @ref "Object Format," Ch. 10, in ISO/IEC 23360 Part 1:2010(E), Linux 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * Standard Base Core Specification 4.1. 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */ 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass ELFFileFormat : public LDFileFormat 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic: 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ELFFileFormat(GNULDBackend& pBackend); 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao virtual ~ELFFileFormat(); 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao virtual void initObjectFormat(MCLinker& pLinker); 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao virtual void initObjectType(MCLinker& pLinker) = 0; 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // ----- capacity ----- // 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref Special Sections, Ch. 4.17, System V ABI, 4th edition. 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasNULLSection() const 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pNULLSection) && (0 != f_pNULLSection->size()); } 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasGOT() const 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pGOT) && (0 != f_pGOT->size()); } 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasPLT() const 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pPLT) && (0 != f_pPLT->size()); } 545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasRelDyn() const 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pRelDyn) && (0 != f_pRelDyn->size()); } 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasRelPlt() const 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pRelPlt) && (0 != f_pRelPlt->size()); } 605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasRelaDyn() const 625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pRelaDyn) && (0 != f_pRelaDyn->size()); } 635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasRelaPlt() const 655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pRelaPlt) && (0 != f_pRelaPlt->size()); } 665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref 10.3.1.1, ISO/IEC 23360, Part 1:2010(E), p. 21. 685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasComment() const 695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pComment) && (0 != f_pComment->size()); } 705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasData1() const 725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pData1) && (0 != f_pData1->size()); } 735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasDebug() const 755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pDebug) && (0 != f_pDebug->size()); } 765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasDynamic() const 785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pDynamic) && (0 != f_pDynamic->size()); } 795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasDynStrTab() const 815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pDynStrTab) && (0 != f_pDynStrTab->size()); } 825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasDynSymTab() const 845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pDynSymTab) && (0 != f_pDynSymTab->size()); } 855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasFini() const 875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pFini) && (0 != f_pFini->size()); } 885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasFiniArray() const 905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pFiniArray) && (0 != f_pFiniArray->size()); } 915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasHashTab() const 935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pHashTab) && (0 != f_pHashTab->size()); } 945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasInit() const 965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pInit) && (0 != f_pInit->size()); } 975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasInitArray() const 995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pInitArray) && (0 != f_pInitArray->size()); } 1005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasInterp() const 1025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pInterp) && (0 != f_pInterp->size()); } 1035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasLine() const 1055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pLine) && (0 != f_pLine->size()); } 1065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasNote() const 1085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pNote) && (0 != f_pNote->size()); } 1095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasPreInitArray() const 1115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pPreInitArray) && (0 != f_pPreInitArray->size()); } 1125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasROData1() const 1145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pROData1) && (0 != f_pROData1->size()); } 1155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasShStrTab() const 1175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pShStrTab) && (0 != f_pShStrTab->size()); } 1185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasStrTab() const 1205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pStrTab) && (0 != f_pStrTab->size()); } 1215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasSymTab() const 1235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pSymTab) && (0 != f_pSymTab->size()); } 1245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasTBSS() const 1265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pTBSS) && (0 != f_pTBSS->size()); } 1275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasTData() const 1295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pTData) && (0 != f_pTData->size()); } 1305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref 10.3.1.2, ISO/IEC 23360, Part 1:2010(E), p. 24. 1325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasCtors() const 1335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pCtors) && (0 != f_pCtors->size()); } 1345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasDataRelRo() const 1365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pDataRelRo) && (0 != f_pDataRelRo->size()); } 1375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasDtors() const 1395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pDtors) && (0 != f_pDtors->size()); } 1405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasEhFrame() const 1425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pEhFrame) && (0 != f_pEhFrame->size()); } 1435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasEhFrameHdr() const 1455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pEhFrameHdr) && (0 != f_pEhFrameHdr->size()); } 1465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasGCCExceptTable() const 1485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pGCCExceptTable) && (0 != f_pGCCExceptTable->size()); } 1495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasGNUVersion() const 1515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pGNUVersion) && (0 != f_pGNUVersion->size()); } 1525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasGNUVersionD() const 1545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pGNUVersionD) && (0 != f_pGNUVersionD->size()); } 1555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasGNUVersionR() const 1575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pGNUVersionR) && (0 != f_pGNUVersionR->size()); } 1585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasGOTPLT() const 1605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pGOTPLT) && (0 != f_pGOTPLT->size()); } 1615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasJCR() const 1635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pJCR) && (0 != f_pJCR->size()); } 1645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasNoteABITag() const 1665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pNoteABITag) && (0 != f_pNoteABITag->size()); } 1675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasStab() const 1695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pStab) && (0 != f_pStab->size()); } 1705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool hasStabStr() const 1725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return (NULL != f_pStabStr) && (0 != f_pStabStr->size()); } 1735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 174affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool hasStack() const 175affc150dc44fab1911775a49636d0ce85333b634Zonr Chang { return (NULL != f_pStack) && (0 != f_pStack->size()); } 176affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 1775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // ----- access functions ----- // 1785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref Special Sections, Ch. 4.17, System V ABI, 4th edition. 1795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getNULLSection() { 1805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNULLSection); 1815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNULLSection; 1825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 1835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getNULLSection() const { 1855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNULLSection); 1865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNULLSection; 1875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 1885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGOT() { 1905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGOT); 1915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGOT; 1925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 1935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGOT() const { 1955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGOT); 1965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGOT; 1975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 1985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getPLT() { 2005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pPLT); 2015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pPLT; 2025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getPLT() const { 2055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pPLT); 2065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pPLT; 2075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getRelDyn() { 2105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelDyn); 2115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelDyn; 2125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getRelDyn() const { 2155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelDyn); 2165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelDyn; 2175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getRelPlt() { 2205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelPlt); 2215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelPlt; 2225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getRelPlt() const { 2255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelPlt); 2265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelPlt; 2275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getRelaDyn() { 2305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelaDyn); 2315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelaDyn; 2325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getRelaDyn() const { 2355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelaDyn); 2365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelaDyn; 2375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getRelaPlt() { 2405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelaPlt); 2415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelaPlt; 2425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getRelaPlt() const { 2455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelaPlt); 2465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelaPlt; 2475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getComment() { 2505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pComment); 2515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pComment; 2525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref 10.3.1.1, ISO/IEC 23360, Part 1:2010(E), p. 21. 2555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getComment() const { 2565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pComment); 2575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pComment; 2585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getData1() { 2615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pData1); 2625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pData1; 2635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getData1() const { 2665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pData1); 2675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pData1; 2685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDebug() { 2715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDebug); 2725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDebug; 2735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDebug() const { 2765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDebug); 2775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDebug; 2785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDynamic() { 2815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynamic); 2825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynamic; 2835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDynamic() const { 2865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynamic); 2875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynamic; 2885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDynStrTab() { 2915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynStrTab); 2925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynStrTab; 2935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDynStrTab() const { 2965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynStrTab); 2975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynStrTab; 2985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDynSymTab() { 3015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynSymTab); 3025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynSymTab; 3035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDynSymTab() const { 3065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynSymTab); 3075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynSymTab; 3085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getFini() { 3115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pFini); 3125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pFini; 3135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getFini() const { 3165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pFini); 3175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pFini; 3185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getFiniArray() { 3215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pFiniArray); 3225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pFiniArray; 3235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getFiniArray() const { 3265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pFiniArray); 3275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pFiniArray; 3285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getHashTab() { 3315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pHashTab); 3325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pHashTab; 3335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getHashTab() const { 3365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pHashTab); 3375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pHashTab; 3385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getInit() { 3415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInit); 3425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInit; 3435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getInit() const { 3465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInit); 3475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInit; 3485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getInitArray() { 3515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInitArray); 3525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInitArray; 3535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getInitArray() const { 3565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInitArray); 3575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInitArray; 3585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getInterp() { 3615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInterp); 3625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInterp; 3635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getInterp() const { 3665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInterp); 3675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInterp; 3685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getLine() { 3715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pLine); 3725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pLine; 3735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getLine() const { 3765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pLine); 3775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pLine; 3785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getNote() { 3815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNote); 3825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNote; 3835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getNote() const { 3865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNote); 3875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNote; 3885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getPreInitArray() { 3915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pPreInitArray); 3925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pPreInitArray; 3935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getPreInitArray() const { 3965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pPreInitArray); 3975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pPreInitArray; 3985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getROData1() { 4015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pROData1); 4025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pROData1; 4035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getROData1() const { 4065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pROData1); 4075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pROData1; 4085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getShStrTab() { 4115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pShStrTab); 4125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pShStrTab; 4135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getShStrTab() const { 4165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pShStrTab); 4175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pShStrTab; 4185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getStrTab() { 4215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStrTab); 4225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStrTab; 4235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getStrTab() const { 4265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStrTab); 4275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStrTab; 4285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getSymTab() { 4315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pSymTab); 4325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pSymTab; 4335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getSymTab() const { 4365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pSymTab); 4375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pSymTab; 4385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getTBSS() { 4415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pTBSS); 4425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pTBSS; 4435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getTBSS() const { 4465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pTBSS); 4475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pTBSS; 4485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getTData() { 4515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pTData); 4525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pTData; 4535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getTData() const { 4565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pTData); 4575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pTData; 4585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref 10.3.1.2, ISO/IEC 23360, Part 1:2010(E), p. 24. 4615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getCtors() { 4625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pCtors); 4635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pCtors; 4645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getCtors() const { 4675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pCtors); 4685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pCtors; 4695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDataRelRo() { 4725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDataRelRo); 4735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDataRelRo; 4745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDataRelRo() const { 4775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDataRelRo); 4785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDataRelRo; 4795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDtors() { 4825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDtors); 4835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDtors; 4845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDtors() const { 4875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDtors); 4885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDtors; 4895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getEhFrame() { 4925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pEhFrame); 4935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pEhFrame; 4945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getEhFrame() const { 4975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pEhFrame); 4985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pEhFrame; 4995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getEhFrameHdr() { 5025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pEhFrameHdr); 5035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pEhFrameHdr; 5045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getEhFrameHdr() const { 5075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pEhFrameHdr); 5085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pEhFrameHdr; 5095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGCCExceptTable() { 5125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGCCExceptTable); 5135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGCCExceptTable; 5145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGCCExceptTable() const { 5175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGCCExceptTable); 5185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGCCExceptTable; 5195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGNUVersion() { 5225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersion); 5235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersion; 5245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGNUVersion() const { 5275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersion); 5285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersion; 5295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGNUVersionD() { 5325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersionD); 5335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersionD; 5345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGNUVersionD() const { 5375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersionD); 5385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersionD; 5395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGNUVersionR() { 5425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersionR); 5435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersionR; 5445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGNUVersionR() const { 5475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersionR); 5485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersionR; 5495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGOTPLT() { 5525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGOTPLT); 5535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGOTPLT; 5545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGOTPLT() const { 5575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGOTPLT); 5585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGOTPLT; 5595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getJCR() { 5625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pJCR); 5635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pJCR; 5645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getJCR() const { 5675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pJCR); 5685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pJCR; 5695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getNoteABITag() { 5725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNoteABITag); 5735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNoteABITag; 5745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getNoteABITag() const { 5775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNoteABITag); 5785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNoteABITag; 5795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getStab() { 5825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStab); 5835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStab; 5845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getStab() const { 5875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStab); 5885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStab; 5895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getStabStr() { 5925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStabStr); 5935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStabStr; 5945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getStabStr() const { 5975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStabStr); 5985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStabStr; 5995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 6005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 601affc150dc44fab1911775a49636d0ce85333b634Zonr Chang LDSection& getStack() { 602affc150dc44fab1911775a49636d0ce85333b634Zonr Chang assert(NULL != f_pStack); 603affc150dc44fab1911775a49636d0ce85333b634Zonr Chang return *f_pStack; 604affc150dc44fab1911775a49636d0ce85333b634Zonr Chang } 605affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 606affc150dc44fab1911775a49636d0ce85333b634Zonr Chang const LDSection& getStack() const { 607affc150dc44fab1911775a49636d0ce85333b634Zonr Chang assert(NULL != f_pStack); 608affc150dc44fab1911775a49636d0ce85333b634Zonr Chang return *f_pStack; 609affc150dc44fab1911775a49636d0ce85333b634Zonr Chang } 6105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoprotected: 6115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao GNULDBackend& f_Backend; 6125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 6135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // variable name : ELF 6145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref Special Sections, Ch. 4.17, System V ABI, 4th edition. 6155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pNULLSection; 6165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGOT; // .got 6175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pPLT; // .plt 6185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pRelDyn; // .rel.dyn 6195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pRelPlt; // .rel.plt 6205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pRelaDyn; // .rela.dyn 6215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pRelaPlt; // .rela.plt 6225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 6235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref 10.3.1.1, ISO/IEC 23360, Part 1:2010(E), p. 21. 6245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pComment; // .comment 6255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pData1; // .data1 6265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDebug; // .debug 6275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDynamic; // .dynamic 6285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDynStrTab; // .dynstr 6295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDynSymTab; // .dynsym 6305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pFini; // .fini 6315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pFiniArray; // .fini_array 6325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pHashTab; // .hash 6335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pInit; // .init 6345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pInitArray; // .init_array 6355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pInterp; // .interp 6365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pLine; // .line 6375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pNote; // .note 6385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pPreInitArray; // .preinit_array 6395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pROData1; // .rodata1 6405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pShStrTab; // .shstrtab 6415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pStrTab; // .strtab 6425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pSymTab; // .symtab 6435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pTBSS; // .tbss 6445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pTData; // .tdata 6455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 6465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref 10.3.1.2, ISO/IEC 23360, Part 1:2010(E), p. 24. 6475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pCtors; // .ctors 6485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDataRelRo; // .data.rel.ro 6495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDtors; // .dtors 6505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pEhFrame; // .eh_frame 6515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pEhFrameHdr; // .eh_frame_hdr 6525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGCCExceptTable; // .gcc_except_table 6535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGNUVersion; // .gnu.version 6545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGNUVersionD; // .gnu.version_d 6555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGNUVersionR; // .gnu.version_r 6565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGOTPLT; // .got.plt 6575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pJCR; // .jcr 6585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pNoteABITag; // .note.ABI-tag 6595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pStab; // .stab 6605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pStabStr; // .stabstr 661affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 662affc150dc44fab1911775a49636d0ce85333b634Zonr Chang /// practical 663affc150dc44fab1911775a49636d0ce85333b634Zonr Chang LDSection* f_pStack; // .stack 6645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}; 6655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 6665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of mcld 6675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 6685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 669affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 670