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#include <mcld/LD/LDFileFormat.h>
125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/LDSection.h>
135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaonamespace mcld {
155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass ObjectBuilder;
175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/** \class ELFFileFormat
195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *  \brief ELFFileFormat describes the common file formats in ELF.
205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *  LDFileFormats control the formats of the output file.
215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *
225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *  @ref "Object Files," Ch. 4, in System V Application Binary Interface,
235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *  Fourth Edition.
245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *
255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *  @ref "Object Format," Ch. 10, in ISO/IEC 23360 Part 1:2010(E), Linux
265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *  Standard Base Core Specification 4.1.
275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */
285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass ELFFileFormat : public LDFileFormat
295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
3022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoprivate:
3122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  /// initObjectFormat - initialize sections that are dependent on object
3222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  /// formats. (executable, shared objects or relocatable objects).
3322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  virtual void
3422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  initObjectFormat(ObjectBuilder& pBuilder, unsigned int pBitClass) = 0;
355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaopublic:
3722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  ELFFileFormat();
385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  void initStdSections(ObjectBuilder& pBuilder, unsigned int pBitClass);
405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // -----  capacity  ----- //
425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref Special Sections, Ch. 4.17, System V ABI, 4th edition.
435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasNULLSection() const
445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pNULLSection) && (0 != f_pNULLSection->size()); }
455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasGOT() const
475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pGOT) && (0 != f_pGOT->size()); }
485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasPLT() const
505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pPLT) && (0 != f_pPLT->size()); }
515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasRelDyn() const
535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pRelDyn) && (0 != f_pRelDyn->size()); }
545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasRelPlt() const
565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pRelPlt) && (0 != f_pRelPlt->size()); }
575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasRelaDyn() const
595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pRelaDyn) && (0 != f_pRelaDyn->size()); }
605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasRelaPlt() const
625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pRelaPlt) && (0 != f_pRelaPlt->size()); }
635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.1, ISO/IEC 23360, Part 1:2010(E), p. 21.
655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasComment() const
665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pComment) && (0 != f_pComment->size()); }
675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasData1() const
695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pData1) && (0 != f_pData1->size()); }
705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasDebug() const
725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pDebug) && (0 != f_pDebug->size()); }
735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasDynamic() const
755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pDynamic) && (0 != f_pDynamic->size()); }
765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasDynStrTab() const
785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pDynStrTab) && (0 != f_pDynStrTab->size()); }
795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasDynSymTab() const
815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pDynSymTab) && (0 != f_pDynSymTab->size()); }
825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasFini() const
845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pFini) && (0 != f_pFini->size()); }
855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasFiniArray() const
875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pFiniArray) && (0 != f_pFiniArray->size()); }
885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasHashTab() const
905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pHashTab) && (0 != f_pHashTab->size()); }
915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasInit() const
935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pInit) && (0 != f_pInit->size()); }
945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasInitArray() const
965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pInitArray) && (0 != f_pInitArray->size()); }
975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasInterp() const
995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pInterp) && (0 != f_pInterp->size()); }
1005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasLine() const
1025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pLine) && (0 != f_pLine->size()); }
1035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasNote() const
1055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pNote) && (0 != f_pNote->size()); }
1065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasPreInitArray() const
1085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pPreInitArray) && (0 != f_pPreInitArray->size()); }
1095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasROData1() const
1115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pROData1) && (0 != f_pROData1->size()); }
1125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasShStrTab() const
1145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pShStrTab) && (0 != f_pShStrTab->size()); }
1155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasStrTab() const
1175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pStrTab) && (0 != f_pStrTab->size()); }
1185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasSymTab() const
1205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pSymTab) && (0 != f_pSymTab->size()); }
1215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasTBSS() const
1235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pTBSS) && (0 != f_pTBSS->size()); }
1245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasTData() const
1265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pTData) && (0 != f_pTData->size()); }
1275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.2, ISO/IEC 23360, Part 1:2010(E), p. 24.
1295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasCtors() const
1305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pCtors) && (0 != f_pCtors->size()); }
1315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasDataRelRo() const
1335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pDataRelRo) && (0 != f_pDataRelRo->size()); }
1345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasDtors() const
1365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pDtors) && (0 != f_pDtors->size()); }
1375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasEhFrame() const
1395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pEhFrame) && (0 != f_pEhFrame->size()); }
1405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasEhFrameHdr() const
1425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pEhFrameHdr) && (0 != f_pEhFrameHdr->size()); }
1435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasGCCExceptTable() const
1455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pGCCExceptTable) && (0 != f_pGCCExceptTable->size()); }
1465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasGNUVersion() const
1485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pGNUVersion) && (0 != f_pGNUVersion->size()); }
1495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasGNUVersionD() const
1515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pGNUVersionD) && (0 != f_pGNUVersionD->size()); }
1525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasGNUVersionR() const
1545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pGNUVersionR) && (0 != f_pGNUVersionR->size()); }
1555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasGOTPLT() const
1575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pGOTPLT) && (0 != f_pGOTPLT->size()); }
1585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasJCR() const
1605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pJCR) && (0 != f_pJCR->size()); }
1615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasNoteABITag() const
1635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pNoteABITag) && (0 != f_pNoteABITag->size()); }
1645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasStab() const
1665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pStab) && (0 != f_pStab->size()); }
1675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  bool hasStabStr() const
1695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  { return (NULL != f_pStabStr) && (0 != f_pStabStr->size()); }
1705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
171affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  bool hasStack() const
172affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  { return (NULL != f_pStack) && (0 != f_pStack->size()); }
173affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
17422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  bool hasStackNote() const
17522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  { return (NULL != f_pStackNote); }
17622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
17722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  bool hasDataRelRoLocal() const
17822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  { return (NULL != f_pDataRelRoLocal) && (0 != f_pDataRelRoLocal->size()); }
17922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
1806f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  bool hasGNUHashTab() const
1816f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  { return (NULL != f_pGNUHashTab) && (0 != f_pGNUHashTab->size()); }
1826f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
1835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // -----  access functions  ----- //
1845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref Special Sections, Ch. 4.17, System V ABI, 4th edition.
1855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getNULLSection() {
1865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pNULLSection);
1875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNULLSection;
1885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
1895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getNULLSection() const {
1915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pNULLSection);
1925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNULLSection;
1935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
1945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGOT() {
1965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGOT);
1975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGOT;
1985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
1995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGOT() const {
2015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGOT);
2025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGOT;
2035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getPLT() {
2065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pPLT);
2075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pPLT;
2085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getPLT() const {
2115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pPLT);
2125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pPLT;
2135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getRelDyn() {
2165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pRelDyn);
2175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelDyn;
2185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getRelDyn() const {
2215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pRelDyn);
2225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelDyn;
2235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getRelPlt() {
2265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pRelPlt);
2275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelPlt;
2285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getRelPlt() const {
2315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pRelPlt);
2325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelPlt;
2335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getRelaDyn() {
2365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pRelaDyn);
2375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelaDyn;
2385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getRelaDyn() const {
2415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pRelaDyn);
2425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelaDyn;
2435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getRelaPlt() {
2465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pRelaPlt);
2475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelaPlt;
2485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getRelaPlt() const {
2515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pRelaPlt);
2525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelaPlt;
2535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getComment() {
2565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pComment);
2575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pComment;
2585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.1, ISO/IEC 23360, Part 1:2010(E), p. 21.
2615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getComment() const {
2625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pComment);
2635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pComment;
2645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getData1() {
2675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pData1);
2685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pData1;
2695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getData1() const {
2725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pData1);
2735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pData1;
2745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDebug() {
2775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDebug);
2785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDebug;
2795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDebug() const {
2825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDebug);
2835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDebug;
2845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDynamic() {
2875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDynamic);
2885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynamic;
2895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDynamic() const {
2925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDynamic);
2935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynamic;
2945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDynStrTab() {
2975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDynStrTab);
2985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynStrTab;
2995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDynStrTab() const {
3025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDynStrTab);
3035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynStrTab;
3045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDynSymTab() {
3075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDynSymTab);
3085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynSymTab;
3095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDynSymTab() const {
3125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDynSymTab);
3135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynSymTab;
3145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getFini() {
3175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pFini);
3185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pFini;
3195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getFini() const {
3225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pFini);
3235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pFini;
3245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getFiniArray() {
3275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pFiniArray);
3285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pFiniArray;
3295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getFiniArray() const {
3325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pFiniArray);
3335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pFiniArray;
3345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getHashTab() {
3375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pHashTab);
3385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pHashTab;
3395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getHashTab() const {
3425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pHashTab);
3435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pHashTab;
3445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getInit() {
3475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pInit);
3485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInit;
3495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getInit() const {
3525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pInit);
3535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInit;
3545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getInitArray() {
3575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pInitArray);
3585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInitArray;
3595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getInitArray() const {
3625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pInitArray);
3635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInitArray;
3645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getInterp() {
3675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pInterp);
3685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInterp;
3695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getInterp() const {
3725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pInterp);
3735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInterp;
3745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getLine() {
3775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pLine);
3785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pLine;
3795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getLine() const {
3825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pLine);
3835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pLine;
3845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getNote() {
3875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pNote);
3885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNote;
3895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getNote() const {
3925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pNote);
3935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNote;
3945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getPreInitArray() {
3975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pPreInitArray);
3985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pPreInitArray;
3995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getPreInitArray() const {
4025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pPreInitArray);
4035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pPreInitArray;
4045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getROData1() {
4075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pROData1);
4085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pROData1;
4095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getROData1() const {
4125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pROData1);
4135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pROData1;
4145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getShStrTab() {
4175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pShStrTab);
4185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pShStrTab;
4195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getShStrTab() const {
4225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pShStrTab);
4235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pShStrTab;
4245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getStrTab() {
4275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pStrTab);
4285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStrTab;
4295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getStrTab() const {
4325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pStrTab);
4335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStrTab;
4345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getSymTab() {
4375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pSymTab);
4385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pSymTab;
4395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getSymTab() const {
4425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pSymTab);
4435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pSymTab;
4445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getTBSS() {
4475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pTBSS);
4485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pTBSS;
4495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getTBSS() const {
4525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pTBSS);
4535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pTBSS;
4545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getTData() {
4575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pTData);
4585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pTData;
4595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getTData() const {
4625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pTData);
4635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pTData;
4645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.2, ISO/IEC 23360, Part 1:2010(E), p. 24.
4675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getCtors() {
4685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pCtors);
4695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pCtors;
4705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getCtors() const {
4735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pCtors);
4745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pCtors;
4755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDataRelRo() {
4785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDataRelRo);
4795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDataRelRo;
4805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDataRelRo() const {
4835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDataRelRo);
4845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDataRelRo;
4855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDtors() {
4885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDtors);
4895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDtors;
4905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDtors() const {
4935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pDtors);
4945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDtors;
4955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getEhFrame() {
4985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pEhFrame);
4995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pEhFrame;
5005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getEhFrame() const {
5035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pEhFrame);
5045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pEhFrame;
5055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getEhFrameHdr() {
5085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pEhFrameHdr);
5095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pEhFrameHdr;
5105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getEhFrameHdr() const {
5135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pEhFrameHdr);
5145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pEhFrameHdr;
5155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGCCExceptTable() {
5185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGCCExceptTable);
5195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGCCExceptTable;
5205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGCCExceptTable() const {
5235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGCCExceptTable);
5245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGCCExceptTable;
5255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGNUVersion() {
5285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGNUVersion);
5295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersion;
5305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGNUVersion() const {
5335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGNUVersion);
5345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersion;
5355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGNUVersionD() {
5385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGNUVersionD);
5395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersionD;
5405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGNUVersionD() const {
5435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGNUVersionD);
5445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersionD;
5455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGNUVersionR() {
5485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGNUVersionR);
5495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersionR;
5505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGNUVersionR() const {
5535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGNUVersionR);
5545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersionR;
5555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGOTPLT() {
5585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGOTPLT);
5595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGOTPLT;
5605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGOTPLT() const {
5635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pGOTPLT);
5645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGOTPLT;
5655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getJCR() {
5685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pJCR);
5695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pJCR;
5705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getJCR() const {
5735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pJCR);
5745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pJCR;
5755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getNoteABITag() {
5785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pNoteABITag);
5795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNoteABITag;
5805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getNoteABITag() const {
5835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pNoteABITag);
5845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNoteABITag;
5855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getStab() {
5885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pStab);
5895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStab;
5905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getStab() const {
5935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pStab);
5945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStab;
5955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getStabStr() {
5985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pStabStr);
5995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStabStr;
6005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
6015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getStabStr() const {
6035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    assert(NULL != f_pStabStr);
6045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStabStr;
6055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
6065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
607affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  LDSection& getStack() {
608affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    assert(NULL != f_pStack);
609affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    return *f_pStack;
610affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  }
611affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
612affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const LDSection& getStack() const {
613affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    assert(NULL != f_pStack);
614affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    return *f_pStack;
615affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  }
6165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
61722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection& getStackNote() {
61822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    assert(NULL != f_pStackNote);
61922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    return *f_pStackNote;
62022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
62122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
62222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  const LDSection& getStackNote() const {
62322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    assert(NULL != f_pStackNote);
62422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    return *f_pStackNote;
62522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
62622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
62722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection& getDataRelRoLocal() {
62822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    assert(NULL != f_pDataRelRoLocal);
62922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    return *f_pDataRelRoLocal;
63022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
63122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
63222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  const LDSection& getDataRelRoLocal() const {
63322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    assert(NULL != f_pDataRelRoLocal);
63422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    return *f_pDataRelRoLocal;
63522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
63622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
6376f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  LDSection& getGNUHashTab() {
6386f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines    assert(NULL != f_pGNUHashTab);
6396f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines    return *f_pGNUHashTab;
6406f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  }
6416f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
6426f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  const LDSection& getGNUHashTab() const {
6436f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines    assert(NULL != f_pGNUHashTab);
6446f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines    return *f_pGNUHashTab;
6456f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  }
6466f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
64722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoprotected:
6485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  //         variable name         :  ELF
6495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref Special Sections, Ch. 4.17, System V ABI, 4th edition.
6505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pNULLSection;
6515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pGOT;               // .got
6525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pPLT;               // .plt
6535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pRelDyn;            // .rel.dyn
6545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pRelPlt;            // .rel.plt
6555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pRelaDyn;           // .rela.dyn
6565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pRelaPlt;           // .rela.plt
6575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.1, ISO/IEC 23360, Part 1:2010(E), p. 21.
6595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pComment;           // .comment
6605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pData1;             // .data1
6615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pDebug;             // .debug
6625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pDynamic;           // .dynamic
6635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pDynStrTab;         // .dynstr
6645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pDynSymTab;         // .dynsym
6655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pFini;              // .fini
6665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pFiniArray;         // .fini_array
6675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pHashTab;           // .hash
6685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pInit;              // .init
6695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pInitArray;         // .init_array
6705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pInterp;            // .interp
6715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pLine;              // .line
6725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pNote;              // .note
6735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pPreInitArray;      // .preinit_array
6745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pROData1;           // .rodata1
6755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pShStrTab;          // .shstrtab
6765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pStrTab;            // .strtab
6775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pSymTab;            // .symtab
6785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pTBSS;              // .tbss
6795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pTData;             // .tdata
6805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.2, ISO/IEC 23360, Part 1:2010(E), p. 24.
6825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pCtors;             // .ctors
6835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pDataRelRo;         // .data.rel.ro
6845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pDtors;             // .dtors
6855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pEhFrame;           // .eh_frame
6865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pEhFrameHdr;        // .eh_frame_hdr
6875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pGCCExceptTable;    // .gcc_except_table
6885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pGNUVersion;        // .gnu.version
6895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pGNUVersionD;       // .gnu.version_d
6905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pGNUVersionR;       // .gnu.version_r
6915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pGOTPLT;            // .got.plt
6925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pJCR;               // .jcr
6935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pNoteABITag;        // .note.ABI-tag
6945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pStab;              // .stab
6955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pStabStr;           // .stabstr
696affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
697affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  /// practical
698affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  LDSection* f_pStack;             // .stack
69922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection* f_pStackNote;         // .note.GNU-stack
70022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection* f_pDataRelRoLocal;    // .data.rel.ro.local
7016f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  LDSection* f_pGNUHashTab;        // .gnu.hash
7025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao};
7035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
7045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of mcld
7055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
7065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif
707affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
708