Changeset 40619 in vbox
- Timestamp:
- Mar 25, 2012 7:55:20 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 77034
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bldprogs/VBoxTpG.cpp
r40604 r40619 65 65 { 66 66 RTLISTNODE ListEntry; 67 const char *pszName; 67 char *pszMangledName; 68 const char *pszUnmangledName; 68 69 RTLISTANCHOR ArgHead; 69 70 uint32_t cArgs; … … 522 523 "VTG_GLOBAL g_fVTGProbeEnabled_%s_%s, data\n" 523 524 " db 0\n", 524 pProvider->pszName, pProbe->psz Name);525 pProvider->pszName, pProbe->pszMangledName); 525 526 cProbes++; 526 527 } … … 638 639 " dd 0 ; for the application\n" 639 640 , 640 pProvider->pszName, pProbe->psz Name, iProbe,641 strtabGetOff(pProbe->psz Name),641 pProvider->pszName, pProbe->pszMangledName, iProbe, 642 strtabGetOff(pProbe->pszUnmangledName), 642 643 pProbe->offArgList, 643 pProvider->pszName, pProbe->psz Name,644 pProvider->pszName, pProbe->pszMangledName, 644 645 iProvider); 645 646 pProbe->iProbe = iProbe; … … 707 708 "\n" 708 709 "VTG_GLOBAL VTGProbeStub_%s_%s, function; (VBOXTPGPROBELOC pVTGProbeLoc", 709 pProvider->pszName, pProbe->psz Name);710 pProvider->pszName, pProbe->pszMangledName); 710 711 RTListForEach(&pProbe->ArgHead, pArg, VTGARG, ListEntry) 711 712 { … … 889 890 "extern uint8_t g_VTGProbeData_%s_%s;\n" 890 891 "DECLASM(void) VTGProbeStub_%s_%s(PVTGPROBELOC", 891 pProv->pszName, pProbe->psz Name,892 pProv->pszName, pProbe->psz Name,893 pProv->pszName, pProbe->psz Name);892 pProv->pszName, pProbe->pszMangledName, 893 pProv->pszName, pProbe->pszMangledName, 894 pProv->pszName, pProbe->pszMangledName); 894 895 RTListForEach(&pProbe->ArgHead, pArg, VTGARG, ListEntry) 895 896 { 896 897 ScmStreamPrintf(pStrm, ", %s", pArg->pszType); 897 898 } 898 generateProbeDefineName(szTmp, sizeof(szTmp), pProv->pszName, pProbe->psz Name);899 generateProbeDefineName(szTmp, sizeof(szTmp), pProv->pszName, pProbe->pszMangledName); 899 900 ScmStreamPrintf(pStrm, 900 901 ");\n" … … 903 904 "# define %s(" 904 905 , szTmp, 905 pProv->pszName, pProbe->psz Name,906 pProv->pszName, pProbe->pszMangledName, 906 907 szTmp); 907 908 RTListForEach(&pProbe->ArgHead, pArg, VTGARG, ListEntry) … … 920 921 " { __LINE__, 0, UINT32_MAX, __PRETTY_FUNCTION__, __FILE__, &g_VTGProbeData_%s_%s }; \\\n" 921 922 " VTGProbeStub_%s_%s(&s_VTGProbeLoc", 922 pProv->pszName, pProbe->psz Name,923 pProv->pszName, pProbe->psz Name,924 pProv->pszName, pProbe->psz Name);923 pProv->pszName, pProbe->pszMangledName, 924 pProv->pszName, pProbe->pszMangledName, 925 pProv->pszName, pProbe->pszMangledName); 925 926 RTListForEach(&pProbe->ArgHead, pArg, VTGARG, ListEntry) 926 927 { … … 952 953 RTListForEach(&pProv->ProbeHead, pProbe, VTGPROBE, ListEntry) 953 954 { 954 generateProbeDefineName(szTmp, sizeof(szTmp), pProv->pszName, pProbe->psz Name);955 generateProbeDefineName(szTmp, sizeof(szTmp), pProv->pszName, pProbe->pszMangledName); 955 956 ScmStreamPrintf(pStrm, 956 957 "# define %s_ENABLED() (false)\n" … … 1514 1515 1515 1516 /** 1517 * Unmangles the probe name. 1518 * 1519 * This involves translating double underscore to dash. 1520 * 1521 * @returns Pointer to the unmangled name in the string table. 1522 * @param pszMangled The mangled name. 1523 */ 1524 static const char *parseUnmangleProbeName(const char *pszMangled) 1525 { 1526 size_t cchMangled = strlen(pszMangled); 1527 char *pszTmp = (char *)alloca(cchMangled + 2); 1528 const char *pszSrc = pszMangled; 1529 char *pszDst = pszTmp; 1530 1531 while (*pszSrc) 1532 { 1533 if (pszSrc[0] == '_' && pszSrc[1] == '_' && pszSrc[2] != '_') 1534 { 1535 *pszDst++ = '-'; 1536 pszSrc += 2; 1537 } 1538 else 1539 *pszDst++ = *pszSrc++; 1540 } 1541 *pszDst = '\0'; 1542 1543 return strtabInsertN(pszTmp, pszDst - pszTmp); 1544 } 1545 1546 1547 /** 1516 1548 * Parses a D probe statement. 1517 1549 * … … 1542 1574 RTListAppend(&pProv->ProbeHead, &pProbe->ListEntry); 1543 1575 pProbe->offArgList = UINT32_MAX; 1544 pProbe->psz Name = strtabInsertN(pszProbe, cchProbe);1545 if (!pProbe->psz Name)1576 pProbe->pszMangledName = RTStrDupN(pszProbe, cchProbe); 1577 if (!pProbe->pszMangledName) 1546 1578 return parseError(pStrm, 0, "Out of memory"); 1547 1579 pProbe->pszUnmangledName = parseUnmangleProbeName(pProbe->pszMangledName); 1580 if (!pProbe->pszUnmangledName) 1581 return parseError(pStrm, 0, "Out of memory"); 1582 1548 1583 /* 1549 1584 * Parse loop for the argument.
Note:
See TracChangeset
for help on using the changeset viewer.