VirtualBox

Ignore:
Timestamp:
Nov 2, 2018 9:01:36 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
126333
Message:

IPRT: Starting to get somewhere with DWARF unwinding. bugref:3897

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/ldr/ldrELFRelocatable.cpp.h

    r73531 r75235  
    14191419    int rc;
    14201420    RTLDRADDR uRva = off;
    1421     if (iSeg == RTDBGSEGIDX_RVA)
     1421    if (iSeg == UINT32_MAX)
    14221422        rc = RTLDRELF_NAME(RvaToSegOffset)(pMod, uRva, &iSeg, &off);
    14231423    else
     
    14541454                && pszName[8] == 'e')
    14551455            {
    1456                 if (pszName[8] == '\0')
     1456                if (pszName[9] == '\0')
    14571457                    pThis->iShEhFrame = iShdr;
    1458                 else if (   pszName[8] == '_'
    1459                          && pszName[9] == 'h'
    1460                          && pszName[10] == 'd'
    1461                          && pszName[11] == 'r'
    1462                          && pszName[12] == '\0')
     1458                else if (   pszName[9] == '_'
     1459                         && pszName[10] == 'h'
     1460                         && pszName[11] == 'd'
     1461                         && pszName[12] == 'r'
     1462                         && pszName[13] == '\0')
    14631463                    pThis->iShEhFrameHdr = iShdr;
    14641464                else
     
    14791479        if (pThis->paShdrs[iShdr].sh_flags & SHF_ALLOC)
    14801480            return rtDwarfUnwind_EhData((uint8_t const *)pThis->pvBits + pThis->paShdrs[iShdr].sh_addr,
    1481                                         pThis->paShdrs[iShdr].sh_size, iSeg, off, uRva, pState, pThis->Core.enmArch);
     1481                                        pThis->paShdrs[iShdr].sh_size, pThis->paShdrs[iShdr].sh_addr,
     1482                                        iSeg, off, uRva, pState, pThis->Core.enmArch);
    14821483    }
    14831484    return VERR_DBG_NO_UNWIND_INFO;
    14841485}
    1485 
    1486 
    14871486
    14881487
     
    19801979                        rc = VERR_LDR_GENERAL_FAILURE;
    19811980                    }
     1981                    if (pModElf->Ehdr.e_type == ET_DYN && pModElf->LinkAddress < 0x1000)
     1982                        pModElf->LinkAddress = 0;
    19821983                }
    19831984
Note: See TracChangeset for help on using the changeset viewer.

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