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

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

?? elfirelocation.cpp

?? C++寫的,提供操作ELF格式文件的API
?? CPP
字號:
/*
ELFIRelocation.cpp - ELF relocation table reader implementation.
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
*/


#include "ELFIImpl.h"
#include "ELFIOUtils.h"


ELFIRelocationTable::ELFIRelocationTable( const IELFI* pIELFI, const IELFISection* pSection ) :
    ELFIReaderImpl( pIELFI, pSection )
{
    const IELFISection* pSymSection = m_pIELFI->GetSection( GetSymbolTableIndex() );
    m_pIELFI->CreateSectionReader( IELFI::ELFI_SYMBOL, pSymSection,
                                   (void**)&m_pSymTbl );
    pSymSection->Release();
}


ELFIRelocationTable::~ELFIRelocationTable()
{
}


int
ELFIRelocationTable::AddRef() const
{
    m_pSymTbl->AddRef();

    return ELFIReaderImpl::AddRef();
}


int
ELFIRelocationTable::Release() const
{
    m_pSymTbl->Release();

    return ELFIReaderImpl::Release();
}


Elf32_Half
ELFIRelocationTable::GetSymbolTableIndex() const
{
    return m_pSection->GetLink();
}


Elf32_Half
ELFIRelocationTable::GetTargetSectionIndex() const
{
    return m_pSection->GetInfo();
}


Elf32_Word
ELFIRelocationTable::GetEntriesNum() const
{
    Elf32_Word nRet = 0;
    if ( 0 != m_pSection->GetEntrySize() ) {
        nRet = m_pSection->GetSize() / m_pSection->GetEntrySize();
    }
    
    return nRet;
}


ELFIO_Err
ELFIRelocationTable::GetEntry( Elf32_Word     index,
                               Elf32_Addr&    offset, 
                               Elf32_Word&    symbol,
                               unsigned char& type,
                               Elf32_Sword&   addend ) const
{
    ELFIO_Err nRet = ERR_ELFIO_INDEX_ERROR;
    
    if ( index < GetEntriesNum() ) {    // Is index valid
        if ( SHT_REL == m_pSection->GetType() ) {
            const Elf32_Rel* pEntry = reinterpret_cast<const Elf32_Rel*>(
                    m_pSection->GetData() + index * m_pSection->GetEntrySize() );
            offset = Convert32Addr2Host( pEntry->r_offset, m_pIELFI->GetEncoding() );
            Elf32_Word tmp = Convert32Word2Host( pEntry->r_info, m_pIELFI->GetEncoding() );
            symbol = tmp >> 8;
            type   = (unsigned char)tmp;
            addend = 0;

            nRet = ERR_ELFIO_NO_ERROR;
        } else if ( SHT_RELA == m_pSection->GetType() ) {
            const Elf32_Rela* pEntry = reinterpret_cast<const Elf32_Rela*>(
                    m_pSection->GetData() + index * m_pSection->GetEntrySize() );
            offset = Convert32Addr2Host( pEntry->r_offset, m_pIELFI->GetEncoding() );
            Elf32_Word tmp = Convert32Word2Host( pEntry->r_info, m_pIELFI->GetEncoding() );
            symbol = tmp >> 8;
            type   = (unsigned char)tmp;
            addend = pEntry->r_addend;

            nRet = ERR_ELFIO_NO_ERROR;
        }
    }    

    return nRet;
}


ELFIO_Err
ELFIRelocationTable::GetEntry( Elf32_Word     index,
                               Elf32_Addr&    offset, 
                               Elf32_Addr&    symbolValue,
                               std::string&   symbolName,
                               unsigned char& type,
                               Elf32_Sword&   addend,
                               Elf32_Sword&   calcValue ) const
{
    // Do regular job
    Elf32_Word symbol;
    ELFIO_Err nRet = GetEntry( index, offset, symbol, type, addend );
    
    // Find the symbol
    Elf32_Word    size;
    unsigned char bind;
    unsigned char symbolType;
    Elf32_Half    section;
    nRet = m_pSymTbl->GetSymbol( symbol, symbolName, symbolValue, 
                                 size, bind, symbolType, section );
    
    if ( ERR_ELFIO_NO_ERROR == nRet ) { // Was it successfull?
        switch ( type ) {
        case R_386_NONE:        // none
            calcValue = 0;
            break;
        case R_386_32:          // S + A
            calcValue = symbolValue + addend;
            break;
        case R_386_PC32:        // S + A - P
            calcValue = symbolValue + addend - offset;
            break;
        case R_386_GOT32:       // G + A - P
            calcValue = 0;
            break;
        case R_386_PLT32:       // L + A - P
            calcValue = 0;
            break;
        case R_386_COPY:        // none
            calcValue = 0;
            break;
        case R_386_GLOB_DAT:    // S
        case R_386_JMP_SLOT:    // S
            calcValue = symbolValue;
            break;
        case R_386_RELATIVE:    // B + A
            calcValue = addend;
            break;
        case R_386_GOTOFF:      // S + A - GOT
            calcValue = 0;
            break;
        case R_386_GOTPC:       // GOT + A - P 
            calcValue = 0;
            break;
        default:                // Not recognized symbol!
            calcValue = 0;
            nRet = ERR_ELFIO_SYMBOL_ERROR;
            break;
        }
    }
    
    return nRet;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷久久99综合精品jk白丝 | 色婷婷久久综合| 欧美日韩免费在线视频| 久久免费视频色| 亚洲精品乱码久久久久久久久| 久久精品99国产精品| 91丝袜美腿高跟国产极品老师 | 日韩成人伦理电影在线观看| av在线播放成人| 欧美精品一区二区久久久| 亚洲高清免费视频| 91原创在线视频| 国产三级精品三级| 免费在线视频一区| 欧美日韩在线播放三区四区| 中文字幕一区二区5566日韩| 极品瑜伽女神91| 91精品在线免费观看| 亚洲午夜精品在线| 91视视频在线直接观看在线看网页在线看 | 日韩国产在线观看一区| 一本一道综合狠狠老| 亚洲国产精品成人综合| 精品亚洲欧美一区| 日韩精品一区二区在线| 丝袜国产日韩另类美女| 欧美日韩国产一区| 一区二区不卡在线播放| 在线观看国产一区二区| 一区二区三区四区蜜桃| 91激情五月电影| 一级精品视频在线观看宜春院| 91老司机福利 在线| 国产精品久久久一本精品| 丁香六月综合激情| 国产精品素人一区二区| 91尤物视频在线观看| 亚洲特级片在线| 91极品视觉盛宴| 亚洲一区二区三区四区的| 日韩精品一区二区在线观看| 午夜精品一区二区三区免费视频| 欧美日韩综合在线| 日韩激情一二三区| 欧美成人精品高清在线播放| 久久成人久久爱| 国产视频一区二区在线观看| av在线播放不卡| 亚洲永久免费av| 6080日韩午夜伦伦午夜伦| 精品在线视频一区| 国产日韩欧美在线一区| 色一情一伦一子一伦一区| 亚洲五月六月丁香激情| 欧美成人精品1314www| 高清在线成人网| 一区二区三区成人在线视频| 日韩午夜中文字幕| 国产精品综合一区二区| 一区二区三区自拍| 精品噜噜噜噜久久久久久久久试看| 高清视频一区二区| 午夜视黄欧洲亚洲| 国产午夜亚洲精品不卡| 欧美视频日韩视频在线观看| 麻豆91小视频| 亚洲免费电影在线| 欧美第一区第二区| 91在线视频18| 麻豆精品久久久| 亚洲精品成人精品456| 日韩免费在线观看| 色综合天天性综合| 狠狠色丁香久久婷婷综| 亚洲精品伦理在线| 国产亚洲一二三区| 欧美老女人在线| 成人免费视频国产在线观看| 视频一区二区三区中文字幕| 中文字幕不卡的av| 日韩一区二区精品在线观看| 色综合一区二区| 国产精品一区二区久久不卡| 婷婷夜色潮精品综合在线| 国产精品三级久久久久三级| 日韩一区二区三区免费看 | 亚洲国产电影在线观看| 欧美精品黑人性xxxx| av电影天堂一区二区在线| 激情另类小说区图片区视频区| 一区二区三区**美女毛片| 中文字幕乱码久久午夜不卡 | 欧美日韩激情一区| av一区二区三区四区| 国产精品一区在线观看乱码| 首页亚洲欧美制服丝腿| 樱花影视一区二区| 一区二区中文视频| 国产亚洲精品7777| 精品国一区二区三区| 91精品久久久久久蜜臀| 欧美视频第二页| 在线观看一区日韩| 在线精品观看国产| 91免费小视频| 一本大道久久a久久精二百| 成人av午夜影院| 国产成人精品网址| 成人午夜短视频| 国产成a人亚洲| 国产1区2区3区精品美女| 国产成人综合自拍| 高清免费成人av| www.欧美亚洲| 99久久精品国产导航| 91丨porny丨国产入口| 一本久久综合亚洲鲁鲁五月天| jlzzjlzz国产精品久久| 91在线播放网址| 一本色道久久综合精品竹菊| 色婷婷精品大视频在线蜜桃视频| 色婷婷av一区二区三区软件| 色综合夜色一区| 欧美三级视频在线观看| 制服视频三区第一页精品| 日韩欧美不卡在线观看视频| 2023国产精品视频| 国产午夜亚洲精品羞羞网站| 国产精品久久福利| 久久99这里只有精品| 麻豆91小视频| 国产成人av电影| 色婷婷久久综合| 7777精品伊人久久久大香线蕉超级流畅| 欧美日本一区二区在线观看| 欧美一级二级在线观看| 欧美精品一区二区久久婷婷| 欧美国产日韩一二三区| 一区二区三区中文免费| 日韩和欧美一区二区三区| 国产自产视频一区二区三区| 成人小视频在线| 欧美色倩网站大全免费| 久久众筹精品私拍模特| 1000部国产精品成人观看| 亚洲 欧美综合在线网络| 免费av成人在线| 国产suv精品一区二区883| 91久久精品日日躁夜夜躁欧美| 日韩一级二级三级| 中文字幕一区二区三中文字幕| 天天免费综合色| 成人精品gif动图一区| 欧美日韩国产综合视频在线观看| 久久综合九色综合欧美就去吻| 亚洲色图制服诱惑 | 国产精品网友自拍| 亚洲成人av电影| 成人性生交大片免费看视频在线| 欧美色网一区二区| 欧美激情一区二区在线| 日韩精品亚洲专区| 91在线精品一区二区三区| 日韩免费视频一区| 亚洲一区二区综合| 成人污视频在线观看| 日韩免费高清av| 亚洲成人综合在线| 99视频国产精品| 久久精品视频网| 蜜臀av国产精品久久久久| 在线观看精品一区| 国产精品麻豆视频| 国产揄拍国内精品对白| 欧美伦理视频网站| 亚洲激情图片qvod| 99久久综合99久久综合网站| 欧美精品一区二区在线播放| 午夜不卡av免费| 色综合一区二区| 亚洲视频电影在线| 成人丝袜高跟foot| 久久九九国产精品| 激情亚洲综合在线| 日韩欧美一卡二卡| 日本女人一区二区三区| 欧美色图在线观看| 一区二区三区小说| 91丨porny丨蝌蚪视频| 中文字幕精品三区| 韩日欧美一区二区三区| 欧美一级黄色录像| 麻豆精品在线看| 91精品国产综合久久久久 | 国产精品麻豆久久久| 国产高清视频一区| 久久久久久夜精品精品免费| 九九精品视频在线看| 欧美变态凌虐bdsm| 狠狠色狠狠色综合系列|