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 1745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // ----- access functions ----- // 1755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref Special Sections, Ch. 4.17, System V ABI, 4th edition. 1765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getNULLSection() { 1775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNULLSection); 1785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNULLSection; 1795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 1805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getNULLSection() const { 1825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNULLSection); 1835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNULLSection; 1845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 1855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGOT() { 1875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGOT); 1885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGOT; 1895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 1905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGOT() const { 1925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGOT); 1935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGOT; 1945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 1955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getPLT() { 1975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pPLT); 1985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pPLT; 1995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getPLT() const { 2025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pPLT); 2035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pPLT; 2045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getRelDyn() { 2075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelDyn); 2085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelDyn; 2095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getRelDyn() const { 2125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelDyn); 2135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelDyn; 2145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getRelPlt() { 2175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelPlt); 2185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelPlt; 2195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getRelPlt() const { 2225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelPlt); 2235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelPlt; 2245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getRelaDyn() { 2275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelaDyn); 2285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelaDyn; 2295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getRelaDyn() const { 2325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelaDyn); 2335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelaDyn; 2345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getRelaPlt() { 2375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelaPlt); 2385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelaPlt; 2395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getRelaPlt() const { 2425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pRelaPlt); 2435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pRelaPlt; 2445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getComment() { 2475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pComment); 2485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pComment; 2495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref 10.3.1.1, ISO/IEC 23360, Part 1:2010(E), p. 21. 2525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getComment() const { 2535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pComment); 2545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pComment; 2555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getData1() { 2585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pData1); 2595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pData1; 2605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getData1() const { 2635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pData1); 2645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pData1; 2655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDebug() { 2685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDebug); 2695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDebug; 2705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDebug() const { 2735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDebug); 2745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDebug; 2755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDynamic() { 2785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynamic); 2795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynamic; 2805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDynamic() const { 2835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynamic); 2845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynamic; 2855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDynStrTab() { 2885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynStrTab); 2895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynStrTab; 2905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDynStrTab() const { 2935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynStrTab); 2945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynStrTab; 2955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 2965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDynSymTab() { 2985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynSymTab); 2995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynSymTab; 3005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDynSymTab() const { 3035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDynSymTab); 3045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDynSymTab; 3055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getFini() { 3085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pFini); 3095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pFini; 3105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getFini() const { 3135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pFini); 3145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pFini; 3155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getFiniArray() { 3185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pFiniArray); 3195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pFiniArray; 3205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getFiniArray() const { 3235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pFiniArray); 3245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pFiniArray; 3255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getHashTab() { 3285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pHashTab); 3295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pHashTab; 3305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getHashTab() const { 3335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pHashTab); 3345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pHashTab; 3355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getInit() { 3385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInit); 3395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInit; 3405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getInit() const { 3435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInit); 3445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInit; 3455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getInitArray() { 3485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInitArray); 3495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInitArray; 3505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getInitArray() const { 3535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInitArray); 3545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInitArray; 3555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getInterp() { 3585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInterp); 3595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInterp; 3605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getInterp() const { 3635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pInterp); 3645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pInterp; 3655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getLine() { 3685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pLine); 3695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pLine; 3705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getLine() const { 3735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pLine); 3745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pLine; 3755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getNote() { 3785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNote); 3795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNote; 3805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getNote() const { 3835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNote); 3845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNote; 3855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getPreInitArray() { 3885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pPreInitArray); 3895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pPreInitArray; 3905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getPreInitArray() const { 3935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pPreInitArray); 3945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pPreInitArray; 3955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 3965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getROData1() { 3985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pROData1); 3995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pROData1; 4005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getROData1() const { 4035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pROData1); 4045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pROData1; 4055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getShStrTab() { 4085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pShStrTab); 4095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pShStrTab; 4105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getShStrTab() const { 4135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pShStrTab); 4145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pShStrTab; 4155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getStrTab() { 4185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStrTab); 4195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStrTab; 4205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getStrTab() const { 4235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStrTab); 4245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStrTab; 4255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getSymTab() { 4285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pSymTab); 4295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pSymTab; 4305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getSymTab() const { 4335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pSymTab); 4345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pSymTab; 4355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getTBSS() { 4385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pTBSS); 4395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pTBSS; 4405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getTBSS() const { 4435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pTBSS); 4445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pTBSS; 4455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getTData() { 4485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pTData); 4495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pTData; 4505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getTData() const { 4535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pTData); 4545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pTData; 4555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref 10.3.1.2, ISO/IEC 23360, Part 1:2010(E), p. 24. 4585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getCtors() { 4595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pCtors); 4605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pCtors; 4615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getCtors() const { 4645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pCtors); 4655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pCtors; 4665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDataRelRo() { 4695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDataRelRo); 4705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDataRelRo; 4715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDataRelRo() const { 4745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDataRelRo); 4755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDataRelRo; 4765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getDtors() { 4795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDtors); 4805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDtors; 4815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getDtors() const { 4845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pDtors); 4855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pDtors; 4865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getEhFrame() { 4895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pEhFrame); 4905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pEhFrame; 4915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getEhFrame() const { 4945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pEhFrame); 4955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pEhFrame; 4965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 4975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getEhFrameHdr() { 4995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pEhFrameHdr); 5005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pEhFrameHdr; 5015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getEhFrameHdr() const { 5045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pEhFrameHdr); 5055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pEhFrameHdr; 5065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGCCExceptTable() { 5095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGCCExceptTable); 5105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGCCExceptTable; 5115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGCCExceptTable() const { 5145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGCCExceptTable); 5155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGCCExceptTable; 5165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGNUVersion() { 5195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersion); 5205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersion; 5215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGNUVersion() const { 5245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersion); 5255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersion; 5265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGNUVersionD() { 5295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersionD); 5305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersionD; 5315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGNUVersionD() const { 5345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersionD); 5355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersionD; 5365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGNUVersionR() { 5395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersionR); 5405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersionR; 5415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGNUVersionR() const { 5445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGNUVersionR); 5455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGNUVersionR; 5465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getGOTPLT() { 5495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGOTPLT); 5505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGOTPLT; 5515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getGOTPLT() const { 5545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pGOTPLT); 5555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pGOTPLT; 5565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getJCR() { 5595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pJCR); 5605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pJCR; 5615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getJCR() const { 5645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pJCR); 5655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pJCR; 5665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getNoteABITag() { 5695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNoteABITag); 5705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNoteABITag; 5715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getNoteABITag() const { 5745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pNoteABITag); 5755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pNoteABITag; 5765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getStab() { 5795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStab); 5805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStab; 5815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getStab() const { 5845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStab); 5855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStab; 5865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection& getStabStr() { 5895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStabStr); 5905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStabStr; 5915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const LDSection& getStabStr() const { 5945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert(NULL != f_pStabStr); 5955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *f_pStabStr; 5965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 5975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoprotected: 5995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao GNULDBackend& f_Backend; 6005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 6015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // variable name : ELF 6025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref Special Sections, Ch. 4.17, System V ABI, 4th edition. 6035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pNULLSection; 6045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGOT; // .got 6055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pPLT; // .plt 6065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pRelDyn; // .rel.dyn 6075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pRelPlt; // .rel.plt 6085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pRelaDyn; // .rela.dyn 6095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pRelaPlt; // .rela.plt 6105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 6115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref 10.3.1.1, ISO/IEC 23360, Part 1:2010(E), p. 21. 6125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pComment; // .comment 6135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pData1; // .data1 6145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDebug; // .debug 6155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDynamic; // .dynamic 6165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDynStrTab; // .dynstr 6175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDynSymTab; // .dynsym 6185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pFini; // .fini 6195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pFiniArray; // .fini_array 6205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pHashTab; // .hash 6215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pInit; // .init 6225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pInitArray; // .init_array 6235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pInterp; // .interp 6245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pLine; // .line 6255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pNote; // .note 6265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pPreInitArray; // .preinit_array 6275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pROData1; // .rodata1 6285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pShStrTab; // .shstrtab 6295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pStrTab; // .strtab 6305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pSymTab; // .symtab 6315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pTBSS; // .tbss 6325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pTData; // .tdata 6335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 6345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao /// @ref 10.3.1.2, ISO/IEC 23360, Part 1:2010(E), p. 24. 6355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pCtors; // .ctors 6365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDataRelRo; // .data.rel.ro 6375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pDtors; // .dtors 6385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pEhFrame; // .eh_frame 6395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pEhFrameHdr; // .eh_frame_hdr 6405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGCCExceptTable; // .gcc_except_table 6415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGNUVersion; // .gnu.version 6425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGNUVersionD; // .gnu.version_d 6435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGNUVersionR; // .gnu.version_r 6445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pGOTPLT; // .got.plt 6455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pJCR; // .jcr 6465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pNoteABITag; // .note.ABI-tag 6475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pStab; // .stab 6485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDSection* f_pStabStr; // .stabstr 6495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}; 6505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 6515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of mcld 6525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 6535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 654