Lines Matching defs:pMap

1203  * @param   pMap                The map file handle.
1207 static bool mapError(PBIOSMAP pMap, const char *pszFormat, ...)
1211 RTMsgError("%s:%d: %N", pMap->pszMapFile, pMap->iLine, pszFormat, va);
1221 * @param pMap The map file handle.
1223 static bool mapReadLine(PBIOSMAP pMap)
1225 int rc = RTStrmGetLine(pMap->hStrm, pMap->szLine, sizeof(pMap->szLine));
1230 pMap->fEof = true;
1231 pMap->cch = 0;
1232 pMap->offNW = 0;
1233 pMap->szLine[0] = '\0';
1236 RTMsgError("%s:%d: Read error %Rrc", pMap->pszMapFile, pMap->iLine + 1, rc);
1239 pMap->iLine++;
1240 pMap->cch = (uint32_t)strlen(pMap->szLine);
1243 if (!RT_C_IS_SPACE(pMap->szLine[0]))
1244 pMap->offNW = 0;
1248 while (RT_C_IS_SPACE(pMap->szLine[off]))
1250 pMap->offNW = off;
1260 * @param pMap The map file handle.
1262 static bool mapIsEmptyLine(PBIOSMAP pMap)
1264 Assert(pMap->offNW <= pMap->cch);
1265 return pMap->offNW == pMap->cch;
1273 * @param pMap The map file handle.
1275 static bool mapSkipEmptyLines(PBIOSMAP pMap)
1279 if (!mapReadLine(pMap))
1281 if (pMap->offNW < pMap->cch)
1291 * @param pMap The map file handle.
1293 static bool mapSkipNonEmptyLines(PBIOSMAP pMap)
1297 if (!mapReadLine(pMap))
1299 if (pMap->offNW == pMap->cch)
1311 * @param pMap The map file handle.
1315 static char *mapStripCurrentLine(PBIOSMAP pMap, size_t *pcch)
1317 char *psz = &pMap->szLine[pMap->offNW];
1318 char *pszEnd = &pMap->szLine[pMap->cch];
1323 pMap->cch--;
1336 * @param pMap The map file handle.
1340 static char *mapReadLineStripRight(PBIOSMAP pMap, size_t *pcch)
1342 if (!mapReadLine(pMap))
1344 mapStripCurrentLine(pMap, NULL);
1346 *pcch = pMap->cch;
1347 return pMap->szLine;
1356 * @param pMap The map file handle.
1360 static char *mapReadLineStrip(PBIOSMAP pMap, size_t *pcch)
1362 if (!mapReadLine(pMap))
1364 return mapStripCurrentLine(pMap, pcch);
1489 * @param pMap Map file handle.
1494 static bool mapSkipThruColumnHeadings(PBIOSMAP pMap, const char *pszSectionNm, uint32_t cColumns, ...)
1496 if ( mapIsEmptyLine(pMap)
1497 && !mapSkipEmptyLines(pMap))
1502 char *psz = mapStripCurrentLine(pMap, &cch);
1516 RTMsgError("%s:%d: Expected section box: +-----...", pMap->pszMapFile, pMap->iLine);
1521 psz = mapReadLineStrip(pMap, &cch);
1538 RTMsgError("%s:%d: Expected section box: | %s |", pMap->pszMapFile, pMap->iLine, pszSectionNm);
1543 psz = mapReadLineStrip(pMap, &cch);
1556 RTMsgError("%s:%d: Expected section box: +-----...", pMap->pszMapFile, pMap->iLine);
1563 psz = mapReadLineStripRight(pMap, &cch);
1585 RTMsgError("%s:%d: Expected column '%s' found '%s'", pMap->pszMapFile, pMap->iLine, pszColumn, psz);
1595 psz = mapReadLineStripRight(pMap, &cch);
1600 RTMsgError("%s:%d: Expected column header underlining", pMap->pszMapFile, pMap->iLine);
1605 psz = mapReadLineStripRight(pMap, &cch);
1610 RTMsgError("%s:%d: Expected blank line beneath the column headers", pMap->pszMapFile, pMap->iLine);
1622 * @param pMap The map file handle.
1624 static bool mapParseSegments(PBIOSMAP pMap)
1628 if (!mapReadLineStripRight(pMap, NULL))
1633 if (!pMap->szLine[0] || RT_C_IS_SPACE(pMap->szLine[0]))
1635 if (!pMap->szLine[0])
1637 RTMsgError("%s:%u: Malformed segment line", pMap->pszMapFile, pMap->iLine);
1645 RTMsgError("%s:%u: Too many segments", pMap->pszMapFile, pMap->iLine);
1649 char *psz = pMap->szLine;
1651 RTMsgError("%s:%u: Segment name parser error", pMap->pszMapFile, pMap->iLine);
1653 RTMsgError("%s:%u: Segment class parser error", pMap->pszMapFile, pMap->iLine);
1655 RTMsgError("%s:%u: Segment group parser error", pMap->pszMapFile, pMap->iLine);
1657 RTMsgError("%s:%u: Segment address parser error", pMap->pszMapFile, pMap->iLine);
1659 RTMsgError("%s:%u: Segment size parser error", pMap->pszMapFile, pMap->iLine);
1678 RTMsgError("%s:%u: Junk at end of line", pMap->pszMapFile, pMap->iLine);
1727 * @param pMap The map file handle.
1729 static bool mapParseSymbols(PBIOSMAP pMap)
1733 if (!mapReadLineStripRight(pMap, NULL))
1738 if (!pMap->szLine[0] || RT_C_IS_SPACE(pMap->szLine[0]))
1740 if (!pMap->szLine[0])
1742 return mapError(pMap, "Malformed symbol line");
1745 if (!strncmp(pMap->szLine, RT_STR_TUPLE("Module: ")))
1749 while (RT_C_IS_SPACE(pMap->szLine[offObj]))
1753 while ((ch = pMap->szLine[offSrc]) != '(' && ch != '\0')
1759 while ((ch = pMap->szLine[cchSrc]) != ')' && ch != '\0')
1763 return mapError(pMap, "Symbol/Module line parse error");
1767 return mapError(pMap, "Out of memory");
1770 memcpy(psz, &pMap->szLine[offObj], cchObj);
1774 memcpy(psz, &pMap->szLine[offSrc], cchSrc);
1782 char *psz = pMap->szLine;
1784 return mapError(pMap, "Symbol address parser error");
1788 return mapError(pMap, "Symbol name parser error");
1799 return mapError(pMap, "RTDbgModSymbolAdd failed: %Rrc", rc);
1807 return mapError(pMap, "Junk at end of line");
1820 * @param pMap The map file handle.
1822 static RTEXITCODE mapParseFile(PBIOSMAP pMap)
1831 if (!mapReadLine(pMap))
1833 if (strncmp(pMap->szLine, RT_STR_TUPLE("Open Watcom Linker Version")))
1834 return RTMsgErrorExit(RTEXITCODE_FAILURE, "Unexpected map-file header: '%s'", pMap->szLine);
1835 if ( !mapSkipNonEmptyLines(pMap)
1836 || !mapSkipEmptyLines(pMap))
1842 if (!mapSkipThruColumnHeadings(pMap, "Groups", 3, "Group", "Address", "Size", NULL))
1844 if (!mapSkipNonEmptyLines(pMap))
1850 if (!mapSkipThruColumnHeadings(pMap, "Segments", 5, "Segment", "Class", "Group", "Address", "Size"))
1852 if (!mapParseSegments(pMap))
1860 if (!mapSkipThruColumnHeadings(pMap, "Memory Map", 2, "Address", "Symbol"))
1862 if (!mapParseSymbols(pMap))