VirtualBox

Ignore:
Timestamp:
Jul 5, 2019 3:42:51 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
131847
Message:

IPRT/process-creation-posix.cpp: Try to dynamically resolve crypt_r on linux. [adjustments] ticketref:18682

File:
1 edited

Legend:

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

    r79003 r79559  
    179179RTDECL(int) RTLdrLoadSystem(const char *pszFilename, bool fNoUnload, PRTLDRMOD phLdrMod)
    180180{
    181     LogFlow(("RTLdrLoadSystem: pszFilename=%p:{%s} fNoUnload=%RTbool phLdrMod=%p\n",
    182              pszFilename, pszFilename, fNoUnload, phLdrMod));
     181    return RTLdrLoadSystemEx(pszFilename, fNoUnload ? RTLDRLOAD_FLAGS_NO_UNLOAD : 0, phLdrMod);
     182}
     183
     184
     185RTDECL(int) RTLdrLoadSystemEx(const char *pszFilename, uint32_t fFlags, PRTLDRMOD phLdrMod)
     186{
     187    LogFlow(("RTLdrLoadSystemEx: pszFilename=%p:{%s} fFlags=%#RX32 phLdrMod=%p\n", pszFilename, pszFilename, fFlags, phLdrMod));
    183188
    184189    /*
     
    189194    AssertPtrReturn(pszFilename, VERR_INVALID_PARAMETER);
    190195    AssertMsgReturn(!RTPathHasPath(pszFilename), ("%s\n", pszFilename), VERR_INVALID_PARAMETER);
     196    AssertMsgReturn(!(fFlags & ~(RTLDRLOAD_FLAGS_VALID_MASK | RTLDRLOAD_FLAGS_SO_VER_BEGIN_MASK | RTLDRLOAD_FLAGS_SO_VER_END_MASK)),
     197                    ("fFlags=%#RX32\n", fFlags), VERR_INVALID_FLAGS);
    191198
    192199    /*
     
    203210     * Let the platform specific code do the rest.
    204211     */
    205     int rc = rtldrNativeLoadSystem(pszFilename, pszSuffix, fNoUnload ? RTLDRLOAD_FLAGS_NO_UNLOAD : 0, phLdrMod);
     212    int rc = rtldrNativeLoadSystem(pszFilename, pszSuffix, fFlags, phLdrMod);
    206213    LogFlow(("RTLdrLoadSystem: returns %Rrc\n", rc));
    207214    return rc;
     
    211218RTDECL(void *) RTLdrGetSystemSymbol(const char *pszFilename, const char *pszSymbol)
    212219{
     220    return RTLdrGetSystemSymbolEx(pszFilename, pszSymbol, RTLDRLOAD_FLAGS_NO_UNLOAD);
     221}
     222
     223
     224RTDECL(void *) RTLdrGetSystemSymbolEx(const char *pszFilename, const char *pszSymbol, uint32_t fFlags)
     225{
    213226    void    *pvRet = NULL;
    214227    RTLDRMOD hLdrMod;
    215     int rc = RTLdrLoadSystem(pszFilename, true /*fNoUnload*/, &hLdrMod);
     228    int rc = RTLdrLoadSystemEx(pszFilename, fFlags | RTLDRLOAD_FLAGS_NO_UNLOAD, &hLdrMod);
    216229    if (RT_SUCCESS(rc))
    217230    {
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