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//===----------------------------------------------------------------------===//
937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#ifndef MCLD_LD_ELFFILEFORMAT_H_
1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define MCLD_LD_ELFFILEFORMAT_H_
1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/LDFileFormat.h"
1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#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 */
2837b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass ELFFileFormat : public LDFileFormat {
2937b74a387bb3993387029859c2d9d051c41c724eStephen Hines private:
3022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  /// initObjectFormat - initialize sections that are dependent on object
3122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  /// formats. (executable, shared objects or relocatable objects).
3237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  virtual void initObjectFormat(ObjectBuilder& pBuilder,
3337b74a387bb3993387029859c2d9d051c41c724eStephen Hines                                unsigned int pBitClass) = 0;
345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3537b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
3622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  ELFFileFormat();
375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  void initStdSections(ObjectBuilder& pBuilder, unsigned int pBitClass);
395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // -----  capacity  ----- //
415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref Special Sections, Ch. 4.17, System V ABI, 4th edition.
4237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasNULLSection() const {
4337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pNULLSection != NULL) && (f_pNULLSection->size() != 0);
4437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasGOT() const { return (f_pGOT != NULL) && (f_pGOT->size() != 0); }
475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasPLT() const { return (f_pPLT != NULL) && (f_pPLT->size() != 0); }
495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasRelDyn() const {
5137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pRelDyn != NULL) && (f_pRelDyn->size() != 0);
5237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasRelPlt() const {
5537b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pRelPlt != NULL) && (f_pRelPlt->size() != 0);
5637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasRelaDyn() const {
5937b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pRelaDyn != NULL) && (f_pRelaDyn->size() != 0);
6037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasRelaPlt() const {
6337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pRelaPlt != NULL) && (f_pRelaPlt->size() != 0);
6437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.1, ISO/IEC 23360, Part 1:2010(E), p. 21.
6737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasComment() const {
6837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pComment != NULL) && (f_pComment->size() != 0);
6937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
7137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasData1() const {
7237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pData1 != NULL) && (f_pData1->size() != 0);
7337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
7537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasDebug() const {
7637b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pDebug != NULL) && (f_pDebug->size() != 0);
7737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
7937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasDynamic() const {
8037b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pDynamic != NULL) && (f_pDynamic->size() != 0);
8137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
8337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasDynStrTab() const {
8437b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pDynStrTab != NULL) && (f_pDynStrTab->size() != 0);
8537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
8737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasDynSymTab() const {
8837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pDynSymTab != NULL) && (f_pDynSymTab->size() != 0);
8937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
9137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasFini() const { return (f_pFini != NULL) && (f_pFini->size() != 0); }
925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
9337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasFiniArray() const {
9437b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pFiniArray != NULL) && (f_pFiniArray->size() != 0);
9537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
9737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasHashTab() const {
9837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pHashTab != NULL) && (f_pHashTab->size() != 0);
9937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
10137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasInit() const { return (f_pInit != NULL) && (f_pInit->size() != 0); }
1025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
10337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasInitArray() const {
10437b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pInitArray != NULL) && (f_pInitArray->size() != 0);
10537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
10737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasInterp() const {
10837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pInterp != NULL) && (f_pInterp->size() != 0);
10937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
11137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasLine() const { return (f_pLine != NULL) && (f_pLine->size() != 0); }
1125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
11337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasNote() const { return (f_pNote != NULL) && (f_pNote->size() != 0); }
1145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
11537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasPreInitArray() const {
11637b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pPreInitArray != NULL) && (f_pPreInitArray->size() != 0);
11737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
11937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasROData1() const {
12037b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pROData1 != NULL) && (f_pROData1->size() != 0);
12137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
12337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasShStrTab() const {
12437b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pShStrTab != NULL) && (f_pShStrTab->size() != 0);
12537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
12737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasStrTab() const {
12837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pStrTab != NULL) && (f_pStrTab->size() != 0);
12937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
13137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasSymTab() const {
13237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pSymTab != NULL) && (f_pSymTab->size() != 0);
13337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
13537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasTBSS() const { return (f_pTBSS != NULL) && (f_pTBSS->size() != 0); }
1365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
13737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasTData() const {
13837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pTData != NULL) && (f_pTData->size() != 0);
13937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.2, ISO/IEC 23360, Part 1:2010(E), p. 24.
14237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasCtors() const {
14337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pCtors != NULL) && (f_pCtors->size() != 0);
14437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
14637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasDataRelRo() const {
14737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pDataRelRo != NULL) && (f_pDataRelRo->size() != 0);
14837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
15037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasDtors() const {
15137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pDtors != NULL) && (f_pDtors->size() != 0);
15237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
15437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasEhFrame() const {
15537b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pEhFrame != NULL) && (f_pEhFrame->size() != 0);
15637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
15837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasEhFrameHdr() const {
15937b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pEhFrameHdr != NULL) && (f_pEhFrameHdr->size() != 0);
16037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
16237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasGCCExceptTable() const {
16337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pGCCExceptTable != NULL) && (f_pGCCExceptTable->size() != 0);
16437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
16637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasGNUVersion() const {
16737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pGNUVersion != NULL) && (f_pGNUVersion->size() != 0);
16837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
17037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasGNUVersionD() const {
17137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pGNUVersionD != NULL) && (f_pGNUVersionD->size() != 0);
17237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
17437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasGNUVersionR() const {
17537b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pGNUVersionR != NULL) && (f_pGNUVersionR->size() != 0);
17637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
17837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasGOTPLT() const {
17937b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pGOTPLT != NULL) && (f_pGOTPLT->size() != 0);
18037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
18237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasJCR() const { return (f_pJCR != NULL) && (f_pJCR->size() != 0); }
1835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
18437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasNoteABITag() const {
18537b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pNoteABITag != NULL) && (f_pNoteABITag->size() != 0);
18637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
18837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasStab() const { return (f_pStab != NULL) && (f_pStab->size() != 0); }
1895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
19037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasStabStr() const {
19137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pStabStr != NULL) && (f_pStabStr->size() != 0);
19237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
1935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
19437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasStack() const {
19537b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pStack != NULL) && (f_pStack->size() != 0);
19637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
197affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
19837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasStackNote() const { return (f_pStackNote != NULL); }
19922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
20037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasDataRelRoLocal() const {
20137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pDataRelRoLocal != NULL) && (f_pDataRelRoLocal->size() != 0);
20237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
20322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
20437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  bool hasGNUHashTab() const {
20537b74a387bb3993387029859c2d9d051c41c724eStephen Hines    return (f_pGNUHashTab != NULL) && (f_pGNUHashTab->size() != 0);
20637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  }
2076f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
2085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  // -----  access functions  ----- //
2095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref Special Sections, Ch. 4.17, System V ABI, 4th edition.
2105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getNULLSection() {
21137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pNULLSection != NULL);
2125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNULLSection;
2135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getNULLSection() const {
21637b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pNULLSection != NULL);
2175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNULLSection;
2185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGOT() {
22137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGOT != NULL);
2225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGOT;
2235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGOT() const {
22637b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGOT != NULL);
2275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGOT;
2285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getPLT() {
23137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pPLT != NULL);
2325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pPLT;
2335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getPLT() const {
23637b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pPLT != NULL);
2375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pPLT;
2385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getRelDyn() {
24137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pRelDyn != NULL);
2425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelDyn;
2435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getRelDyn() const {
24637b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pRelDyn != NULL);
2475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelDyn;
2485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getRelPlt() {
25137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pRelPlt != NULL);
2525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelPlt;
2535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getRelPlt() const {
25637b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pRelPlt != NULL);
2575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelPlt;
2585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getRelaDyn() {
26137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pRelaDyn != NULL);
2625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelaDyn;
2635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getRelaDyn() const {
26637b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pRelaDyn != NULL);
2675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelaDyn;
2685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getRelaPlt() {
27137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pRelaPlt != NULL);
2725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelaPlt;
2735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getRelaPlt() const {
27637b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pRelaPlt != NULL);
2775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pRelaPlt;
2785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getComment() {
28137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pComment != NULL);
2825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pComment;
2835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.1, ISO/IEC 23360, Part 1:2010(E), p. 21.
2865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getComment() const {
28737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pComment != NULL);
2885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pComment;
2895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getData1() {
29237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pData1 != NULL);
2935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pData1;
2945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
2955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getData1() const {
29737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pData1 != NULL);
2985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pData1;
2995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDebug() {
30237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDebug != NULL);
3035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDebug;
3045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDebug() const {
30737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDebug != NULL);
3085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDebug;
3095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDynamic() {
31237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDynamic != NULL);
3135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynamic;
3145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDynamic() const {
31737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDynamic != NULL);
3185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynamic;
3195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDynStrTab() {
32237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDynStrTab != NULL);
3235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynStrTab;
3245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDynStrTab() const {
32737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDynStrTab != NULL);
3285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynStrTab;
3295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDynSymTab() {
33237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDynSymTab != NULL);
3335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynSymTab;
3345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDynSymTab() const {
33737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDynSymTab != NULL);
3385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDynSymTab;
3395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getFini() {
34237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pFini != NULL);
3435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pFini;
3445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getFini() const {
34737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pFini != NULL);
3485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pFini;
3495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getFiniArray() {
35237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pFiniArray != NULL);
3535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pFiniArray;
3545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getFiniArray() const {
35737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pFiniArray != NULL);
3585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pFiniArray;
3595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getHashTab() {
36237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pHashTab != NULL);
3635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pHashTab;
3645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getHashTab() const {
36737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pHashTab != NULL);
3685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pHashTab;
3695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getInit() {
37237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pInit != NULL);
3735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInit;
3745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getInit() const {
37737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pInit != NULL);
3785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInit;
3795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getInitArray() {
38237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pInitArray != NULL);
3835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInitArray;
3845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getInitArray() const {
38737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pInitArray != NULL);
3885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInitArray;
3895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getInterp() {
39237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pInterp != NULL);
3935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInterp;
3945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
3955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getInterp() const {
39737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pInterp != NULL);
3985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pInterp;
3995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getLine() {
40237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pLine != NULL);
4035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pLine;
4045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getLine() const {
40737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pLine != NULL);
4085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pLine;
4095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getNote() {
41237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pNote != NULL);
4135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNote;
4145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getNote() const {
41737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pNote != NULL);
4185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNote;
4195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getPreInitArray() {
42237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pPreInitArray != NULL);
4235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pPreInitArray;
4245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getPreInitArray() const {
42737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pPreInitArray != NULL);
4285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pPreInitArray;
4295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getROData1() {
43237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pROData1 != NULL);
4335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pROData1;
4345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getROData1() const {
43737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pROData1 != NULL);
4385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pROData1;
4395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getShStrTab() {
44237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pShStrTab != NULL);
4435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pShStrTab;
4445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getShStrTab() const {
44737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pShStrTab != NULL);
4485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pShStrTab;
4495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getStrTab() {
45237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pStrTab != NULL);
4535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStrTab;
4545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getStrTab() const {
45737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pStrTab != NULL);
4585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStrTab;
4595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getSymTab() {
46237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pSymTab != NULL);
4635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pSymTab;
4645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getSymTab() const {
46737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pSymTab != NULL);
4685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pSymTab;
4695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getTBSS() {
47237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pTBSS != NULL);
4735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pTBSS;
4745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getTBSS() const {
47737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pTBSS != NULL);
4785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pTBSS;
4795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getTData() {
48237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pTData != NULL);
4835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pTData;
4845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getTData() const {
48737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pTData != NULL);
4885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pTData;
4895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.2, ISO/IEC 23360, Part 1:2010(E), p. 24.
4925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getCtors() {
49337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pCtors != NULL);
4945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pCtors;
4955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
4965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getCtors() const {
49837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pCtors != NULL);
4995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pCtors;
5005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDataRelRo() {
50337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDataRelRo != NULL);
5045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDataRelRo;
5055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDataRelRo() const {
50837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDataRelRo != NULL);
5095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDataRelRo;
5105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getDtors() {
51337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDtors != NULL);
5145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDtors;
5155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getDtors() const {
51837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDtors != NULL);
5195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pDtors;
5205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getEhFrame() {
52337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pEhFrame != NULL);
5245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pEhFrame;
5255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getEhFrame() const {
52837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pEhFrame != NULL);
5295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pEhFrame;
5305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getEhFrameHdr() {
53337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pEhFrameHdr != NULL);
5345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pEhFrameHdr;
5355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getEhFrameHdr() const {
53837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pEhFrameHdr != NULL);
5395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pEhFrameHdr;
5405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGCCExceptTable() {
54337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGCCExceptTable != NULL);
5445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGCCExceptTable;
5455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGCCExceptTable() const {
54837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGCCExceptTable != NULL);
5495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGCCExceptTable;
5505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGNUVersion() {
55337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGNUVersion != NULL);
5545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersion;
5555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGNUVersion() const {
55837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGNUVersion != NULL);
5595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersion;
5605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGNUVersionD() {
56337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGNUVersionD != NULL);
5645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersionD;
5655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGNUVersionD() const {
56837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGNUVersionD != NULL);
5695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersionD;
5705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGNUVersionR() {
57337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGNUVersionR != NULL);
5745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersionR;
5755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGNUVersionR() const {
57837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGNUVersionR != NULL);
5795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGNUVersionR;
5805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getGOTPLT() {
58337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGOTPLT != NULL);
5845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGOTPLT;
5855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getGOTPLT() const {
58837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGOTPLT != NULL);
5895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pGOTPLT;
5905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getJCR() {
59337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pJCR != NULL);
5945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pJCR;
5955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
5965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getJCR() const {
59837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pJCR != NULL);
5995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pJCR;
6005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
6015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getNoteABITag() {
60337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pNoteABITag != NULL);
6045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNoteABITag;
6055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
6065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getNoteABITag() const {
60837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pNoteABITag != NULL);
6095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pNoteABITag;
6105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
6115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getStab() {
61337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pStab != NULL);
6145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStab;
6155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
6165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getStab() const {
61837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pStab != NULL);
6195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStab;
6205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
6215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection& getStabStr() {
62337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pStabStr != NULL);
6245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStabStr;
6255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
6265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  const LDSection& getStabStr() const {
62837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pStabStr != NULL);
6295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    return *f_pStabStr;
6305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  }
6315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
632affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  LDSection& getStack() {
63337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pStack != NULL);
634affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    return *f_pStack;
635affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  }
636affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
637affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const LDSection& getStack() const {
63837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pStack != NULL);
639affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    return *f_pStack;
640affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  }
6415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
64222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection& getStackNote() {
64337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pStackNote != NULL);
64422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    return *f_pStackNote;
64522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
64622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
64722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  const LDSection& getStackNote() const {
64837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pStackNote != NULL);
64922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    return *f_pStackNote;
65022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
65122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
65222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  LDSection& getDataRelRoLocal() {
65337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDataRelRoLocal != NULL);
65422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    return *f_pDataRelRoLocal;
65522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
65622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
65722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  const LDSection& getDataRelRoLocal() const {
65837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pDataRelRoLocal != NULL);
65922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    return *f_pDataRelRoLocal;
66022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
66122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
6626f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  LDSection& getGNUHashTab() {
66337b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGNUHashTab != NULL);
6646f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines    return *f_pGNUHashTab;
6656f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  }
6666f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
6676f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  const LDSection& getGNUHashTab() const {
66837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    assert(f_pGNUHashTab != NULL);
6696f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines    return *f_pGNUHashTab;
6706f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  }
6716f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
67237b74a387bb3993387029859c2d9d051c41c724eStephen Hines protected:
6735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  //         variable name         :  ELF
6745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref Special Sections, Ch. 4.17, System V ABI, 4th edition.
6755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  LDSection* f_pNULLSection;
67637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pGOT;      // .got
67737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pPLT;      // .plt
67837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pRelDyn;   // .rel.dyn
67937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pRelPlt;   // .rel.plt
68037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pRelaDyn;  // .rela.dyn
68137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pRelaPlt;  // .rela.plt
6825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.1, ISO/IEC 23360, Part 1:2010(E), p. 21.
68437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pComment;       // .comment
68537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pData1;         // .data1
68637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pDebug;         // .debug
68737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pDynamic;       // .dynamic
68837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pDynStrTab;     // .dynstr
68937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pDynSymTab;     // .dynsym
69037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pFini;          // .fini
69137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pFiniArray;     // .fini_array
69237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pHashTab;       // .hash
69337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pInit;          // .init
69437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pInitArray;     // .init_array
69537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pInterp;        // .interp
69637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pLine;          // .line
69737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pNote;          // .note
69837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pPreInitArray;  // .preinit_array
69937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pROData1;       // .rodata1
70037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pShStrTab;      // .shstrtab
70137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pStrTab;        // .strtab
70237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pSymTab;        // .symtab
70337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pTBSS;          // .tbss
70437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pTData;         // .tdata
7055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
7065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  /// @ref 10.3.1.2, ISO/IEC 23360, Part 1:2010(E), p. 24.
70737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pCtors;           // .ctors
70837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pDataRelRo;       // .data.rel.ro
70937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pDtors;           // .dtors
71037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pEhFrame;         // .eh_frame
71137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pEhFrameHdr;      // .eh_frame_hdr
71237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pGCCExceptTable;  // .gcc_except_table
71337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pGNUVersion;      // .gnu.version
71437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pGNUVersionD;     // .gnu.version_d
71537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pGNUVersionR;     // .gnu.version_r
71637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pGOTPLT;          // .got.plt
71737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pJCR;             // .jcr
71837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pNoteABITag;      // .note.ABI-tag
71937b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pStab;            // .stab
72037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pStabStr;         // .stabstr
721affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
722affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  /// practical
72337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pStack;           // .stack
72437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pStackNote;       // .note.GNU-stack
72537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pDataRelRoLocal;  // .data.rel.ro.local
72637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  LDSection* f_pGNUHashTab;      // .gnu.hash
7275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao};
7285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
72937b74a387bb3993387029859c2d9d051c41c724eStephen Hines}  // namespace mcld
730affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
73137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif  // MCLD_LD_ELFFILEFORMAT_H_
732