diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-11 08:21:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-11 08:21:29 +0000 |
commit | 29cd838eab01ed7110f3ccb2e8c6a35c8a31dbcc (patch) | |
tree | 63ef546b10a81d461e5cf5ed9e98a68cd7dee1aa /src/lib/kStuff/kDbg/kDbgDump.cpp | |
parent | Initial commit. (diff) | |
download | kbuild-29cd838eab01ed7110f3ccb2e8c6a35c8a31dbcc.tar.xz kbuild-29cd838eab01ed7110f3ccb2e8c6a35c8a31dbcc.zip |
Adding upstream version 1:0.1.9998svn3589+dfsg.upstream/1%0.1.9998svn3589+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/lib/kStuff/kDbg/kDbgDump.cpp')
-rw-r--r-- | src/lib/kStuff/kDbg/kDbgDump.cpp | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/src/lib/kStuff/kDbg/kDbgDump.cpp b/src/lib/kStuff/kDbg/kDbgDump.cpp new file mode 100644 index 0000000..83cb36b --- /dev/null +++ b/src/lib/kStuff/kDbg/kDbgDump.cpp @@ -0,0 +1,174 @@ +/* $Id: kDbgDump.cpp 29 2009-07-01 20:30:29Z bird $ */ +/** @file + * kDbgDump - Debug Info Dumper. + */ + +/* + * Copyright (c) 2006-2007 Knut St. Osmundsen <bird-kStuff-spamix@anduin.net> + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include <k/kDbg.h> +#include <string.h> +#include <stdio.h> + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** @name Options + * @{ */ +static int g_fGlobalSyms = 1; +static int g_fPrivateSyms = 1; +static int g_fLineNumbers = 0; +/** @} */ + + +/** + * Dumps one file. + * + * @returns main exit status. + * @param pszFile The file to dump (path to it). + */ +static int DumpFile(const char *pszFile) +{ + PKDBGMOD pDbgMod; + int rc = kDbgModuleOpen(&pDbgMod, pszFile, NULL); + if (rc) + { + printf("kDbgDump: error: kDbgModuleOpen('%s',) failed with rc=%d.\n", pszFile, rc); + return 1; + } + + + + return 0; +} + + +/** + * Prints the version number + * @return 0 + */ +static int ShowVersion() +{ + printf("kDbgDump v0.0.1\n"); + return 0; +} + + +/** + * Prints the program syntax. + * + * @returns 1 + * @param argv0 The program name. + */ +static int ShowSyntax(const char *argv0) +{ + ShowVersion(); + printf("syntax: %s [options] <files>\n" + "\n", + argv0); + return 1; +} + +int main(int argc, char **argv) +{ + int rcRet = 0; + + /* + * Parse arguments. + */ + int fArgsDone = 0; + for (int i = 1; i < argc; i++) + { + const char *psz = argv[i]; + + if (!fArgsDone && psz[0] == '-' && psz[1]) + { + /* convert long option to short. */ + if (*++psz == '-') + { + psz++; + if (!*psz) /* -- */ + { + fArgsDone = 1; + continue; + } + if (!strcmp(psz, "line-numbers")) + psz = "l"; + else if (!strcmp(psz, "no-line-numbers")) + psz = "L"; + else if (!strcmp(psz, "global-syms") || !strcmp(psz, "public-syms")) + psz = "g"; + else if (!strcmp(psz, "no-global-syms") || !strcmp(psz, "no-public-syms")) + psz = "G"; + else if (!strcmp(psz, "privat-syms") || !strcmp(psz, "local-syms")) + psz = "p"; + else if (!strcmp(psz, "no-privat-syms") || !strcmp(psz, "no-local-syms")) + psz = "P"; + else if (!strcmp(psz, "version")) + psz = "v"; + else if (!strcmp(psz, "help")) + psz = "h"; + else + { + fprintf(stderr, "%s: syntax error: unknown option '--%s'\n", argv[0], psz); + return 1; + } + } + + /* eat short options. */ + while (*psz) + switch (*psz++) + { + case 'l': g_fLineNumbers = 1; break; + case 'L': g_fLineNumbers = 0; break; + case 'p': g_fPrivateSyms = 1; break; + case 'P': g_fPrivateSyms = 0; break; + case 'g': g_fGlobalSyms = 1; break; + case 'G': g_fGlobalSyms = 0; break; + case '?': + case 'H': + case 'h': return ShowSyntax(argv[0]); + case 'v': return ShowVersion(); + default: + fprintf(stderr, "%s: syntax error: unknown option '-%c'.\n", argv[0], psz[-1]); + return 1; + } + } + else + { + /* Dump does it's own bitching if something goes wrong. */ + int rc = DumpFile(psz); + if (rc && !rcRet) + rc = rcRet; + } + } + + return rcRet; +} + |