VirtualBox

vbox的更動 56337 路徑 trunk/src/bldprogs


忽略:
時間撮記:
2015-6-10 下午12:05:22 (9 年 以前)
作者:
vboxsync
訊息:

Workaround for stupid gcc visbility non-sense.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/bldprogs/scmsubversion.cpp

    r56336 r56337  
    697697             * Try load the svn_client library ...
    698698             */
    699             struct
    700             {
    701                 const char *pszBaseName;
    702                 RTLDRMOD    hMod;
    703             } aLibraries[] =
    704             {
    705                 { "svn_client", NIL_RTLDRMOD },
    706                 { "svn_subr",   NIL_RTLDRMOD },
    707                 { "apr",        NIL_RTLDRMOD },
    708             };
     699            static const char * const s_apszLibraries[]   = { "svn_client", "svn_subr",   "apr" };
     700            RTLDRMOD ahMods[RT_ELEMENTS(s_apszLibraries)] = { NIL_RTLDRMOD, NIL_RTLDRMOD, NIL_RTLDRMOD };
     701
    709702            rc = VINF_SUCCESS;
    710703            unsigned iLib;
    711             for (iLib = 0; iLib < RT_ELEMENTS(aLibraries) && RT_SUCCESS(rc); iLib++)
     704            for (iLib = 0; iLib < RT_ELEMENTS(s_apszLibraries) && RT_SUCCESS(rc); iLib++)
    712705            {
    713706                *pszEndPath = '\0';
    714707                rc = RTPathAppend(szPath, sizeof(szPath), s_aVariations[iVar].pszPrefix);
    715708                if (RT_SUCCESS(rc))
    716                     rc = RTStrCat(szPath, sizeof(szPath), aLibraries[iLib].pszBaseName);
     709                    rc = RTStrCat(szPath, sizeof(szPath), s_apszLibraries[iLib]);
    717710                if (RT_SUCCESS(rc))
    718711                    rc = RTStrCat(szPath, sizeof(szPath), s_aVariations[iVar].pszSuffix);
     
    722715                    RTPathChangeToDosSlashes(pszEndPath, false);
    723716# endif
    724                     rc = RTLdrLoadEx(szPath, &aLibraries[iLib].hMod, RTLDRLOAD_FLAGS_NT_SEARCH_DLL_LOAD_DIR , NULL);
     717                    rc = RTLdrLoadEx(szPath, &ahMods[iLib], RTLDRLOAD_FLAGS_NT_SEARCH_DLL_LOAD_DIR , NULL);
    725718                }
    726719            }
    727             if (iLib == RT_ELEMENTS(aLibraries) && RT_SUCCESS(rc))
     720            if (iLib == RT_ELEMENTS(s_apszLibraries) && RT_SUCCESS(rc))
    728721            {
    729722                static const struct
     
    746739                for (unsigned i = 0; i < RT_ELEMENTS(s_aSymbols); i++)
    747740                {
    748                     rc = RTLdrGetSymbol(aLibraries[s_aSymbols[i].iLib].hMod, s_aSymbols[i].pszSymbol,
     741                    rc = RTLdrGetSymbol(ahMods[s_aSymbols[i].iLib], s_aSymbols[i].pszSymbol,
    749742                                        (void **)(uintptr_t)s_aSymbols[i].ppfn);
    750743                    if (RT_FAILURE(rc))
    751744                    {
    752745                        ScmVerbose(NULL, 0, "Failed to resolve '%s' in '%s'",
    753                                    s_aSymbols[i].pszSymbol, aLibraries[s_aSymbols[i].iLib].pszBaseName);
     746                                   s_aSymbols[i].pszSymbol, s_apszLibraries[s_aSymbols[i].iLib]);
    754747                        break;
    755748                    }
     
    773766
    774767            while (iLib-- > 0)
    775                 RTLdrClose(aLibraries[iLib].hMod);
     768                RTLdrClose(ahMods[iLib]);
    776769        }
    777770    }
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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