Changeset 106073 in vbox for trunk/src/VBox/Debugger
- Timestamp:
- Sep 17, 2024 2:47:42 PM (7 months ago)
- svn:sync-xref-src-repo-rev:
- 164839
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Debugger/DBGCDumpImage.cpp
r106061 r106073 109 109 #define DUMPIMAGE_SELECT_DEFAULT DUMPIMAGE_SELECT_EVERYTHING 110 110 111 static struct 112 { 113 const char *psz; 114 size_t cch; 115 uint64_t fSel; 116 const char *pszSummary; 117 const char *pszDesc; 118 } const g_aMnemonics[] = 119 { 120 { RT_STR_TUPLE("h"), DUMPIMAGE_SELECT_HEADERS, "h[d[r]],header[s]", "File headers" }, 121 { RT_STR_TUPLE("hd"), DUMPIMAGE_SELECT_HEADERS, NULL, NULL }, 122 { RT_STR_TUPLE("hdr"), DUMPIMAGE_SELECT_HEADERS, NULL, NULL }, 123 { RT_STR_TUPLE("header"), DUMPIMAGE_SELECT_HEADERS, NULL, NULL }, 124 { RT_STR_TUPLE("headers"), DUMPIMAGE_SELECT_HEADERS, NULL, NULL }, 125 { RT_STR_TUPLE("s"), DUMPIMAGE_SELECT_SECTIONS, "s[e[ction[s]]]", "Section headers"}, 126 { RT_STR_TUPLE("se"), DUMPIMAGE_SELECT_SECTIONS, NULL, NULL }, 127 { RT_STR_TUPLE("sec"), DUMPIMAGE_SELECT_SECTIONS, NULL, NULL }, 128 { RT_STR_TUPLE("section"), DUMPIMAGE_SELECT_SECTIONS, NULL, NULL }, 129 { RT_STR_TUPLE("sections"), DUMPIMAGE_SELECT_SECTIONS, NULL, NULL }, 130 { RT_STR_TUPLE("d"), DUMPIMAGE_SELECT_DEBUG, "d[b[g[info]]],db,debug", "Debug info headers" }, 131 { RT_STR_TUPLE("db"), DUMPIMAGE_SELECT_DEBUG, NULL, NULL }, 132 { RT_STR_TUPLE("dg"), DUMPIMAGE_SELECT_DEBUG, NULL, NULL }, 133 { RT_STR_TUPLE("dbg"), DUMPIMAGE_SELECT_DEBUG, NULL, NULL }, 134 { RT_STR_TUPLE("dbginfo"), DUMPIMAGE_SELECT_DEBUG, NULL, NULL }, 135 { RT_STR_TUPLE("debug"), DUMPIMAGE_SELECT_DEBUG, NULL, NULL }, 136 { RT_STR_TUPLE("f"), DUMPIMAGE_SELECT_FIXUP, "f[x],fix[up[s]]", "Fixups" }, 137 { RT_STR_TUPLE("fx"), DUMPIMAGE_SELECT_FIXUP, NULL, NULL }, 138 { RT_STR_TUPLE("fix"), DUMPIMAGE_SELECT_FIXUP, NULL, NULL }, 139 { RT_STR_TUPLE("fixup"), DUMPIMAGE_SELECT_FIXUP, NULL, NULL }, 140 { RT_STR_TUPLE("fixups"), DUMPIMAGE_SELECT_FIXUP, NULL, NULL }, 141 { RT_STR_TUPLE("e"), DUMPIMAGE_SELECT_EXPORTS, "e[x[p[ort[s]]]]", "Exports" }, 142 { RT_STR_TUPLE("ex"), DUMPIMAGE_SELECT_EXPORTS, NULL, NULL }, 143 { RT_STR_TUPLE("exp"), DUMPIMAGE_SELECT_EXPORTS, NULL, NULL }, 144 { RT_STR_TUPLE("export"), DUMPIMAGE_SELECT_EXPORTS, NULL, NULL }, 145 { RT_STR_TUPLE("exports"), DUMPIMAGE_SELECT_EXPORTS, NULL, NULL }, 146 { RT_STR_TUPLE("i"), DUMPIMAGE_SELECT_IMPORTS, "i[m[p[ort[s]]]]", "Imports" }, 147 { RT_STR_TUPLE("im"), DUMPIMAGE_SELECT_IMPORTS, NULL, NULL }, 148 { RT_STR_TUPLE("imp"), DUMPIMAGE_SELECT_IMPORTS, NULL, NULL }, 149 { RT_STR_TUPLE("import"), DUMPIMAGE_SELECT_IMPORTS, NULL, NULL }, 150 { RT_STR_TUPLE("imports"), DUMPIMAGE_SELECT_IMPORTS, NULL, NULL }, 151 { RT_STR_TUPLE("l"), DUMPIMAGE_SELECT_LOAD_CONFIG, "l[c[fg],loadcfg", "Load configuration" }, 152 { RT_STR_TUPLE("lc"), DUMPIMAGE_SELECT_LOAD_CONFIG, NULL, NULL }, 153 { RT_STR_TUPLE("lcfg"), DUMPIMAGE_SELECT_LOAD_CONFIG, NULL, NULL }, 154 { RT_STR_TUPLE("loadcfg"), DUMPIMAGE_SELECT_LOAD_CONFIG, NULL, NULL }, 155 { RT_STR_TUPLE("rc"), DUMPIMAGE_SELECT_RESOURCES, "rc[s[rc]],resource[s]", "Resources" }, 156 { RT_STR_TUPLE("rcs"), DUMPIMAGE_SELECT_RESOURCES, NULL, NULL }, 157 { RT_STR_TUPLE("rcsrc"), DUMPIMAGE_SELECT_RESOURCES, NULL, NULL }, 158 { RT_STR_TUPLE("resource"), DUMPIMAGE_SELECT_RESOURCES, NULL, NULL }, 159 { RT_STR_TUPLE("resources"), DUMPIMAGE_SELECT_RESOURCES, NULL, NULL }, 160 { RT_STR_TUPLE("t"), DUMPIMAGE_SELECT_TLS, "t[ls]", "Thread local storage" }, 161 { RT_STR_TUPLE("tls"), DUMPIMAGE_SELECT_TLS, NULL, NULL }, 162 /* masks: */ 163 { RT_STR_TUPLE("all"), DUMPIMAGE_SELECT_EVERYTHING, "all,everything", "Everything" }, 164 { RT_STR_TUPLE("everything"), DUMPIMAGE_SELECT_EVERYTHING, NULL, NULL }, 165 { RT_STR_TUPLE("def"), DUMPIMAGE_SELECT_DEFAULT, "def[ault]", "Default selection" }, 166 { RT_STR_TUPLE("default"), DUMPIMAGE_SELECT_DEFAULT, NULL, NULL }, 167 }; 168 111 169 class DumpImageCmd 112 170 { … … 302 360 int parseSelection(const char *pszSelection, uint64_t *pfSel) 303 361 { 304 static const struct { const char *psz; size_t cch; uint64_t fSel; } s_aMnemonics[] =305 {306 { RT_STR_TUPLE("h"), DUMPIMAGE_SELECT_HEADERS },307 { RT_STR_TUPLE("hd"), DUMPIMAGE_SELECT_HEADERS },308 { RT_STR_TUPLE("hdr"), DUMPIMAGE_SELECT_HEADERS },309 { RT_STR_TUPLE("header"), DUMPIMAGE_SELECT_HEADERS },310 { RT_STR_TUPLE("headers"), DUMPIMAGE_SELECT_HEADERS },311 { RT_STR_TUPLE("s"), DUMPIMAGE_SELECT_SECTIONS },312 { RT_STR_TUPLE("se"), DUMPIMAGE_SELECT_SECTIONS },313 { RT_STR_TUPLE("sec"), DUMPIMAGE_SELECT_SECTIONS },314 { RT_STR_TUPLE("section"), DUMPIMAGE_SELECT_SECTIONS },315 { RT_STR_TUPLE("sections"), DUMPIMAGE_SELECT_SECTIONS },316 { RT_STR_TUPLE("d"), DUMPIMAGE_SELECT_DEBUG },317 { RT_STR_TUPLE("db"), DUMPIMAGE_SELECT_DEBUG },318 { RT_STR_TUPLE("dg"), DUMPIMAGE_SELECT_DEBUG },319 { RT_STR_TUPLE("dbg"), DUMPIMAGE_SELECT_DEBUG },320 { RT_STR_TUPLE("dbginfo"), DUMPIMAGE_SELECT_DEBUG },321 { RT_STR_TUPLE("debug"), DUMPIMAGE_SELECT_DEBUG },322 { RT_STR_TUPLE("f"), DUMPIMAGE_SELECT_FIXUP },323 { RT_STR_TUPLE("fx"), DUMPIMAGE_SELECT_FIXUP },324 { RT_STR_TUPLE("fix"), DUMPIMAGE_SELECT_FIXUP },325 { RT_STR_TUPLE("fixup"), DUMPIMAGE_SELECT_FIXUP },326 { RT_STR_TUPLE("fixups"), DUMPIMAGE_SELECT_FIXUP },327 { RT_STR_TUPLE("e"), DUMPIMAGE_SELECT_EXPORTS },328 { RT_STR_TUPLE("ex"), DUMPIMAGE_SELECT_EXPORTS },329 { RT_STR_TUPLE("exp"), DUMPIMAGE_SELECT_EXPORTS },330 { RT_STR_TUPLE("export"), DUMPIMAGE_SELECT_EXPORTS },331 { RT_STR_TUPLE("exports"), DUMPIMAGE_SELECT_EXPORTS },332 { RT_STR_TUPLE("i"), DUMPIMAGE_SELECT_IMPORTS },333 { RT_STR_TUPLE("im"), DUMPIMAGE_SELECT_IMPORTS },334 { RT_STR_TUPLE("imp"), DUMPIMAGE_SELECT_IMPORTS },335 { RT_STR_TUPLE("import"), DUMPIMAGE_SELECT_IMPORTS },336 { RT_STR_TUPLE("imports"), DUMPIMAGE_SELECT_IMPORTS },337 { RT_STR_TUPLE("l"), DUMPIMAGE_SELECT_LOAD_CONFIG },338 { RT_STR_TUPLE("lc"), DUMPIMAGE_SELECT_LOAD_CONFIG },339 { RT_STR_TUPLE("lcfg"), DUMPIMAGE_SELECT_LOAD_CONFIG },340 { RT_STR_TUPLE("loadcfg"), DUMPIMAGE_SELECT_LOAD_CONFIG },341 { RT_STR_TUPLE("rc"), DUMPIMAGE_SELECT_RESOURCES },342 { RT_STR_TUPLE("rcs"), DUMPIMAGE_SELECT_RESOURCES },343 { RT_STR_TUPLE("rcsrc"), DUMPIMAGE_SELECT_RESOURCES },344 { RT_STR_TUPLE("resource"), DUMPIMAGE_SELECT_RESOURCES },345 { RT_STR_TUPLE("resources"), DUMPIMAGE_SELECT_RESOURCES },346 { RT_STR_TUPLE("t"), DUMPIMAGE_SELECT_TLS },347 { RT_STR_TUPLE("tls"), DUMPIMAGE_SELECT_TLS },348 /* masks: */349 { RT_STR_TUPLE("all"), DUMPIMAGE_SELECT_EVERYTHING },350 { RT_STR_TUPLE("everything"), DUMPIMAGE_SELECT_EVERYTHING },351 { RT_STR_TUPLE("def"), DUMPIMAGE_SELECT_DEFAULT },352 { RT_STR_TUPLE("default"), DUMPIMAGE_SELECT_DEFAULT },353 };354 355 362 *pfSel = 0; 356 363 char ch; … … 375 382 /* Look it up. */ 376 383 uint32_t i; 377 for (i = 0; i < RT_ELEMENTS( s_aMnemonics); i++)378 if (cch == s_aMnemonics[i].cch && memcmp(s_aMnemonics[i].psz, pszSelection, cch) == 0)384 for (i = 0; i < RT_ELEMENTS(g_aMnemonics); i++) 385 if (cch == g_aMnemonics[i].cch && memcmp(g_aMnemonics[i].psz, pszSelection, cch) == 0) 379 386 { 380 *pfSel = s_aMnemonics[i].fSel;387 *pfSel = g_aMnemonics[i].fSel; 381 388 break; 382 389 } 383 if (i >= RT_ELEMENTS( s_aMnemonics))390 if (i >= RT_ELEMENTS(g_aMnemonics)) 384 391 { 385 392 mySyntax("Unknown selection '%.*s'", cch, pszSelection); … … 2099 2106 2100 2107 case 'h': 2101 RTPrintf("usage: %s [options] <file> [file2..]\n", RTProcShortName()); 2108 { 2109 RTPrintf("usage: %s [options] <file> [file2..]\n" 2110 "\n" 2111 "Options:\n" 2112 " -b<address>, --image-base=<address>\n" 2113 " Pretend load address for the image.\n" 2114 " -i/--include <sel>, -o/-O/--only <sel>, -s/-S/--skip <sel>\n" 2115 " Select what to display. The selection is a comma or space separated\n" 2116 " list of any of the following:\n" 2117 , RTProcShortName()); 2118 size_t cchWidth = 1; 2119 for (unsigned i = 0; i < RT_ELEMENTS(g_aMnemonics); i++) 2120 if (g_aMnemonics[i].pszSummary) 2121 { 2122 size_t cchSummary = strlen(g_aMnemonics[i].pszSummary); 2123 cchWidth = RT_MAX(cchWidth, cchSummary); 2124 } 2125 for (unsigned i = 0; i < RT_ELEMENTS(g_aMnemonics); i++) 2126 if (g_aMnemonics[i].pszSummary) 2127 RTPrintf(" %-*s - %s\n", cchWidth, g_aMnemonics[i].pszSummary, g_aMnemonics[i].pszDesc); 2102 2128 return RTEXITCODE_SUCCESS; 2129 } 2103 2130 2104 2131 case VINF_GETOPT_NOT_OPTION:
Note:
See TracChangeset
for help on using the changeset viewer.