亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? elfiimpl.h

?? C++寫的,提供操作ELF格式文件的API
?? H
字號:
/*
ELFIImpl.h - ELF reader and producer implementation classes.
Copyright (C) 2001 Serge Lamikhov-Center <to_serge@users.sourceforge.net>

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

#ifndef ELFIIMPL_H
#define ELFIIMPL_H

#include <iostream>
#include <vector>
#include "ELFIO.h"

class ELFI : public IELFI
{
  public:
    ELFI();
    ~ELFI();

    // Creation / state / destroy functions
    virtual ELFIO_Err Load( const std::string& sFileName );
    virtual ELFIO_Err Load( std::istream* pStream, int startPos );
    virtual bool      IsInitialized() const;
    virtual int       AddRef()        const;
    virtual int       Release()       const;

    // ELF header functions
    virtual unsigned char GetClass()      const;
    virtual unsigned char GetEncoding()   const;
    virtual unsigned char GetELFVersion() const;
    virtual Elf32_Half    GetType()       const;
    virtual Elf32_Half    GetMachine()    const;
    virtual Elf32_Word    GetVersion()    const;
    virtual Elf32_Addr    GetEntry()      const;
    virtual Elf32_Word    GetFlags()      const;
    virtual Elf32_Half    GetSecStrNdx()  const;

    // Section provider functions
    virtual       Elf32_Half    GetSectionsNum()                      const;
    virtual const IELFISection* GetSection( Elf32_Half index )        const;
    virtual const IELFISection* GetSection( const std::string& name ) const;

    // Segment provider functions
    virtual       Elf32_Half    GetSegmentsNum()               const;
    virtual const IELFISegment* GetSegment( Elf32_Half index ) const;

    // Section's readers
    virtual ELFIO_Err CreateSectionReader( ReaderType type, const IELFISection* pSection,
                                           void** ppObj ) const;

  private:
    ELFIO_Err LoadSections();
    ELFIO_Err LoadSegments();

  private:
    mutable int                      m_nRefCnt;
    std::istream*                    m_pStream;
    int                              m_nFileOffset;
    bool                             m_bOwnStream;
    bool                             m_bInitialized;
    Elf32_Ehdr                       m_header;
    std::vector<const IELFISection*> m_sections;
    std::vector<const IELFISegment*> m_segments;
};


class ELFISection : public IELFISection
{
  public:
    ELFISection( IELFI* pIELFI, std::istream* pStream, int nFileOffset,
                 Elf32_Shdr* pHeader, Elf32_Half index );
    ~ELFISection();
    
    virtual int AddRef()  const;
    virtual int Release() const;

    // Section info functions
    virtual Elf32_Half  GetIndex()     const;
    virtual std::string GetName()      const;
    virtual Elf32_Word  GetType()      const;
    virtual Elf32_Word  GetFlags()     const;
    virtual Elf32_Addr  GetAddress()   const;
    virtual Elf32_Word  GetSize()      const;
    virtual Elf32_Word  GetLink()      const;
    virtual Elf32_Word  GetInfo()      const;
    virtual Elf32_Word  GetAddrAlign() const;
    virtual Elf32_Word  GetEntrySize() const;
    virtual const char* GetData()      const;

  private:
    Elf32_Half     m_index;
    mutable int    m_nRefCnt;
    IELFI*         m_pIELFI;
    std::istream*  m_pStream;
    int            m_nFileOffset;
    Elf32_Shdr     m_sh;
    mutable char*  m_data;
};


class ELFISegment : public IELFISegment
{
  public:
    ELFISegment( IELFI* pIELFI, std::istream* pStream, int nFileOffset,
                 Elf32_Phdr* pHeader, Elf32_Half index );
    ~ELFISegment();
    
    virtual int AddRef()  const;
    virtual int Release() const;

    // Section info functions
    virtual Elf32_Word  GetType()            const;
    virtual Elf32_Addr  GetVirtualAddress()  const;
    virtual Elf32_Addr  GetPhysicalAddress() const;
    virtual Elf32_Word  GetFileSize()        const;
    virtual Elf32_Word  GetMemSize()         const;
    virtual Elf32_Word  GetFlags()           const;
    virtual Elf32_Word  GetAlign()           const;
    virtual const char* GetData()            const;

  private:
    Elf32_Half     m_index;
    mutable int    m_nRefCnt;
    IELFI*         m_pIELFI;
    std::istream*  m_pStream;
    int            m_nFileOffset;
    Elf32_Phdr     m_sh;
    mutable char*  m_data;
};


class ELFIReaderImpl : virtual public IELFISection
{
  public:
    ELFIReaderImpl( const IELFI* pIELFI, const IELFISection* pSection );
    virtual ~ELFIReaderImpl();
    
    virtual int AddRef()  const;
    virtual int Release() const;

    // Section info functions
    virtual Elf32_Half  GetIndex()     const;
    virtual std::string GetName()      const;
    virtual Elf32_Word  GetType()      const;
    virtual Elf32_Word  GetFlags()     const;
    virtual Elf32_Addr  GetAddress()   const;
    virtual Elf32_Word  GetSize()      const;
    virtual Elf32_Word  GetLink()      const;
    virtual Elf32_Word  GetInfo()      const;
    virtual Elf32_Word  GetAddrAlign() const;
    virtual Elf32_Word  GetEntrySize() const;
    virtual const char* GetData()      const;

  protected:
    mutable int         m_nRefCnt;
    const IELFI*        m_pIELFI;
    const IELFISection* m_pSection;
};


class ELFIStringReader : public ELFIReaderImpl, public IELFIStringReader
{
  public:
    ELFIStringReader( const IELFI* pIELFI, const IELFISection* pSection );
    ~ELFIStringReader();

    // IELFIStringReader implementation
    virtual const char* GetString( Elf32_Word index ) const;
};


class ELFISymbolTable : public ELFIReaderImpl, public IELFISymbolTable
{
  public:
    ELFISymbolTable( const IELFI* pIELFI, const IELFISection* pSection );
    ~ELFISymbolTable();
    
    virtual int AddRef()  const;
    virtual int Release() const;

    virtual Elf32_Half GetStringTableIndex() const;
    virtual Elf32_Half GetHashTableIndex()   const;

    virtual Elf32_Word GetSymbolNum() const;
    virtual ELFIO_Err  GetSymbol( Elf32_Word index,
                                  std::string& name, Elf32_Addr& value, 
                                  Elf32_Word& size, 
                                  unsigned char& bind, unsigned char& type,
                                  Elf32_Half& section ) const;
    virtual ELFIO_Err  GetSymbol( const std::string& name, Elf32_Addr& value, 
                                  Elf32_Word& size, 
                                  unsigned char& bind, unsigned char& type,
                                  Elf32_Half& section ) const;

  private:
    const IELFIStringReader* m_pStrReader;
    Elf32_Half               m_nHashSection;
    const IELFISection*      m_pHashSection;
};


class ELFIRelocationTable : public ELFIReaderImpl, public IELFIRelocationTable
{
  public:
    ELFIRelocationTable( const IELFI* pIELFI, const IELFISection* pSection );
    ~ELFIRelocationTable();
    
    virtual int AddRef()  const;
    virtual int Release() const;

    virtual Elf32_Half GetSymbolTableIndex()   const;
    virtual Elf32_Half GetTargetSectionIndex() const;

    virtual Elf32_Word GetEntriesNum() const;
    virtual ELFIO_Err  GetEntry( Elf32_Word     index,
                                 Elf32_Addr&    offset, 
                                 Elf32_Word&    symbol,
                                 unsigned char& type,
                                 Elf32_Sword&   addend ) const;
    virtual ELFIO_Err  GetEntry( Elf32_Word     index,
                                 Elf32_Addr&    offset, 
                                 Elf32_Addr&    symbolValue,
                                 std::string&   symbolName,
                                 unsigned char& type,
                                 Elf32_Sword&   addend,
                                 Elf32_Sword&   calcValue ) const;

  private:
    const IELFISymbolTable* m_pSymTbl;
};


class ELFINoteReader : public ELFIReaderImpl, public IELFINoteReader
{
  public:
    ELFINoteReader( const IELFI* pIELFI, const IELFISection* pSection );
    ~ELFINoteReader();

    // Notes reader functions
    virtual Elf32_Word GetNotesNum() const;
    virtual ELFIO_Err  GetNote( Elf32_Word   index,
                                Elf32_Word&  type,
                                std::string& name,
                                void*& desc,
                                Elf32_Word& descSize ) const;

  private:
    void ProcessSection();

  private:
    std::vector<Elf32_Word> m_beginPtrs;
};


class ELFIDynamicReader : public ELFIReaderImpl, public IELFIDynamicReader
{
  public:
    ELFIDynamicReader( const IELFI* pIELFI, const IELFISection* pSection );
    ~ELFIDynamicReader();

    // Dynamic reader functions
    virtual Elf32_Word GetEntriesNum() const;
    virtual ELFIO_Err  GetEntry( Elf32_Word   index,
                                 Elf32_Sword& tag,
                                 Elf32_Word&  value ) const;
};

#endif // ELFIIMPL_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜亚洲另类欧美| 精品一区二区在线播放| 成a人片国产精品| 欧美精品一区二区久久久| 精品午夜一区二区三区在线观看| 日韩一区二区精品葵司在线| 日本不卡中文字幕| 精品国产91久久久久久久妲己| 加勒比av一区二区| 国产精品天天摸av网| 91一区二区在线| 一区二区三区小说| 欧美日韩在线亚洲一区蜜芽| 琪琪久久久久日韩精品| 精品美女一区二区| 丁香婷婷综合五月| 樱花影视一区二区| 日韩区在线观看| 成人性生交大合| 亚洲日本青草视频在线怡红院 | 色综合天天在线| 亚洲韩国一区二区三区| 日韩欧美中文字幕公布| 国产成人精品亚洲日本在线桃色| 亚洲伦理在线精品| 欧美xxxxxxxx| 成人高清伦理免费影院在线观看| 亚洲在线成人精品| 久久久久久影视| 欧美亚洲国产一区二区三区| 麻豆久久一区二区| 亚洲素人一区二区| 日韩一卡二卡三卡| 99久久精品免费看国产免费软件| 肉色丝袜一区二区| 国产农村妇女精品| 在线观看91精品国产麻豆| 国产经典欧美精品| 午夜欧美2019年伦理| 国产三级三级三级精品8ⅰ区| 久久久久久免费| 国产一区二区三区免费观看| 久久免费国产精品| 欧美自拍偷拍午夜视频| 精品伊人久久久久7777人| 亚洲精品国产无套在线观| 欧美电影免费提供在线观看| 91视频在线看| 国产老肥熟一区二区三区| 亚洲成av人综合在线观看| 国产精品情趣视频| 精品免费国产二区三区 | 欧美国产一区在线| 欧美美女激情18p| www.综合网.com| 精彩视频一区二区三区| 午夜精品久久久久久久蜜桃app | 国产欧美一二三区| 欧美一区午夜视频在线观看| 99国产精品99久久久久久| 专区另类欧美日韩| 欧美日韩色一区| 成人一区在线看| 美腿丝袜一区二区三区| 成人亚洲一区二区一| 久久99久久99精品免视看婷婷 | 久久久亚洲午夜电影| 欧美精品777| 在线观看成人免费视频| jvid福利写真一区二区三区| 国内精品嫩模私拍在线| 六月丁香综合在线视频| 日本午夜一本久久久综合| 亚洲激情欧美激情| 亚洲六月丁香色婷婷综合久久 | 老司机午夜精品| 91免费国产视频网站| 懂色av一区二区在线播放| 亚洲一二三区在线观看| 777亚洲妇女| 欧美日韩精品免费| 欧美日韩国产天堂| 欧美无砖砖区免费| 欧美日韩亚洲综合| 欧美一区中文字幕| 欧美成人性福生活免费看| 精品成人一区二区| 国产亚洲一区字幕| 国产精品视频线看| 国产精品久久久久久久第一福利| 亚洲国产精品t66y| 中文字幕一区二区三区不卡| 亚洲色图清纯唯美| 亚洲v中文字幕| 美女在线观看视频一区二区| 国产一区二区调教| 成人国产亚洲欧美成人综合网| 成人aaaa免费全部观看| 在线免费亚洲电影| 91精品国产91综合久久蜜臀| 日韩三级中文字幕| 国产三级精品三级在线专区| 国产精品美女一区二区三区| 亚洲欧美在线视频观看| 亚洲1区2区3区视频| 久久精品99国产精品| 免费日韩伦理电影| 激情图片小说一区| 成人av免费在线播放| 欧美亚洲一区二区在线| 日韩欧美一区二区三区在线| 国产三级欧美三级日产三级99| 亚洲精品老司机| 免费成人性网站| 成人小视频在线观看| 欧美在线影院一区二区| 日韩视频不卡中文| 日韩伦理av电影| 久久狠狠亚洲综合| 成人激情动漫在线观看| 欧美午夜精品免费| 久久久久久亚洲综合| 亚洲一区二区三区国产| 国产一区二区三区四区五区入口| av在线不卡电影| 欧美不卡视频一区| 亚洲伦理在线精品| 国产寡妇亲子伦一区二区| 欧美性感一类影片在线播放| 国产香蕉久久精品综合网| 午夜亚洲国产au精品一区二区| 岛国精品一区二区| 日韩欧美一区二区在线视频| 亚洲精品成人a在线观看| 国产精品亚洲一区二区三区妖精| 盗摄精品av一区二区三区| 欧美精品日韩精品| 亚洲欧洲99久久| 激情成人午夜视频| 欧美电影一区二区三区| 亚洲人一二三区| 国产精品一区二区免费不卡| 538在线一区二区精品国产| 中文字幕永久在线不卡| 国产综合色精品一区二区三区| 欧美日韩精品一区二区天天拍小说 | 日韩一区二区中文字幕| 亚洲欧美另类久久久精品2019| 国产一区二区按摩在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 久久久精品免费网站| 日韩av一级电影| 欧美日韩免费电影| 亚洲少妇30p| 成人av电影在线| 日本一区二区三区在线观看| 韩国成人在线视频| 欧美一区二区不卡视频| 日韩国产欧美在线播放| 欧美日韩在线不卡| 亚洲一二三区在线观看| 日本精品一区二区三区四区的功能| 中文字幕第一区第二区| 国产成人啪免费观看软件| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产精品网友自拍| 国产成人免费视频一区| 久久亚洲免费视频| 国产一区二区伦理片| 2021中文字幕一区亚洲| 精品一区二区三区香蕉蜜桃| 日韩天堂在线观看| 美美哒免费高清在线观看视频一区二区| 在线免费av一区| 亚洲免费在线播放| 欧美伊人久久大香线蕉综合69| 亚洲精品国产无套在线观| 欧美吻胸吃奶大尺度电影 | 欧美日韩成人在线| 色婷婷久久久久swag精品| 欧美一区二区三区四区五区| 视频一区免费在线观看| 欧美日韩亚洲综合| 日产国产高清一区二区三区| 欧美一区二区美女| 韩国成人福利片在线播放| 国产欧美一区二区精品性| 成人黄色软件下载| 亚洲综合久久av| 91精品国产欧美一区二区18| 麻豆精品久久精品色综合| 久久久午夜精品| 91伊人久久大香线蕉| 亚洲国产精品视频| 日韩免费在线观看| 成人免费观看视频| 亚洲综合另类小说| 亚洲精品一区二区三区福利| 成人禁用看黄a在线| 一区二区三区四区在线播放|