VirtualBox

vbox的更動 39389 路徑 trunk/src/VBox/Runtime/common


忽略:
時間撮記:
2011-11-21 下午04:59:27 (13 年 以前)
作者:
vboxsync
訊息:

dbgmodnm.cpp: Made it grok linux 2.4 /proc/ksyms (dsl).

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Runtime/common/dbg/dbgmodnm.cpp

    r39083 r39389  
    207207    RTUINTPTR   SegZeroRva = fAddSymbols ? RTDbgModSegmentRva(pThis->hCnt, 0/*iSeg*/) : 0;
    208208    char        szSym[RTDBG_SYMBOL_NAME_LENGTH] = "";
    209     size_t      cchMod  = 0;
    210     size_t      offSym  = 0;
    211     unsigned    cchAddr = 0;
    212     uint64_t    u64Low  = UINT64_MAX;
    213     uint64_t    u64High = 0;
     209    size_t      cchMod    = 0;
     210    size_t      offSym    = 0;
     211    unsigned    cchAddr   = 0;
     212    uint64_t    u64Low    = UINT64_MAX;
     213    uint64_t    u64High   = 0;
     214    int         fWithType = -1;
    214215    char        szLine[512];
    215216    int         rc;
     
    236237
    237238            /* Get the type and check for single space before symbol. */
    238             chType = szLine[cchAddr + 1];
    239             if (    RT_C_IS_BLANK(chType)
    240                 ||  !RT_C_IS_BLANK(szLine[cchAddr + 2])
    241                 ||  RT_C_IS_BLANK(szLine[cchAddr + 3]))
    242                 return VERR_DBG_NOT_NM_MAP_FILE;
     239            char *pszName;
     240            if (fWithType < 0)
     241                fWithType = RT_C_IS_BLANK(szLine[cchAddr + 2]) ? 1 : 0; /* have type? Linux 2.4 /proc/ksyms doesn't. */
     242            if (fWithType)
     243            {
     244                chType  = szLine[cchAddr + 1];
     245                pszName = &szLine[cchAddr + 3];
     246                if (    RT_C_IS_BLANK(chType)
     247                    ||  !RT_C_IS_BLANK(szLine[cchAddr + 2])
     248                    ||  RT_C_IS_BLANK(szLine[cchAddr + 3]))
     249                    return VERR_DBG_NOT_NM_MAP_FILE;
     250            }
     251            else
     252            {
     253                chType = 'T';
     254                pszName = &szLine[cchAddr + 1];
     255            }
    243256
    244257            /* Find the end of the symbol name. */
    245             char *pszName    = &szLine[cchAddr + 3];
    246258            char *pszNameEnd = pszName;
    247259            char ch;
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette