VirtualBox

Changeset 34959 in vbox for trunk/src/VBox/Runtime/r3


Ignore:
Timestamp:
Dec 10, 2010 3:17:31 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
68779
Message:

Added RTLdrLoadEx for exposing dlerror info.

Location:
trunk/src/VBox/Runtime/r3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/posix/ldrNative-posix.cpp

    r28800 r34959  
    4141
    4242
    43 int rtldrNativeLoad(const char *pszFilename, uintptr_t *phHandle)
     43int rtldrNativeLoad(const char *pszFilename, uintptr_t *phHandle, char *pszError, size_t cbError)
    4444{
    4545    /*
     
    6969     * Attempt load.
    7070     */
    71 
    7271    void *pvMod = dlopen(pszFilename, RTLD_NOW | RTLD_LOCAL);
    7372    if (pvMod)
     
    7675        return VINF_SUCCESS;
    7776    }
    78     LogRel(("rtldrNativeLoad: dlopen('%s', RTLD_NOW | RTLD_LOCAL) failed: %s\n", pszFilename, dlerror()));
     77
     78    const char *pszDlError = dlerror();
     79    if (pszError)
     80        RTStrCopy(pszError, cbError, pszDlError);
     81    LogRel(("rtldrNativeLoad: dlopen('%s', RTLD_NOW | RTLD_LOCAL) failed: %s\n", pszFilename, pszDlError));
    7982    return VERR_FILE_NOT_FOUND;
    8083}
  • trunk/src/VBox/Runtime/r3/win/ldrNative-win.cpp

    r28800 r34959  
    3939
    4040
    41 int rtldrNativeLoad(const char *pszFilename, uintptr_t *phHandle)
     41int rtldrNativeLoad(const char *pszFilename, uintptr_t *phHandle, char *pszError, size_t cbError)
    4242{
    4343    Assert(sizeof(*phHandle) >= sizeof(HMODULE));
     
    6767    }
    6868
    69     return RTErrConvertFromWin32(GetLastError());
     69    /*
     70     * Try figure why it failed to load.
     71     */
     72    DWORD dwErr = GetLastError(dwErr);
     73    int   rc    = RTErrConvertFromWin32(dwErr);
     74    if (cbError)
     75        RTStrPrintf(pszError, cbError, "GetLastError=%u", dwErr);
     76    return rc;
    7077}
    7178
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