Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon TURNEY <jon.turney@dronecode.org.uk>2014-05-13 14:24:16 +0400
committerJon TURNEY <jon.turney@dronecode.org.uk>2014-05-13 14:24:16 +0400
commit8f8e7757cffb236383d043d9ef2a5d2b7087feb5 (patch)
tree115cc9905a6393b5bb0b6e413f1a7fc7e4109339
parentc57ccec64901ac5b90b89ff10073dc4207d47766 (diff)
* Makefile.in (minidumper.exe): Link directly with dbghelp.
* minidumper.cc (minidump): Ditto.
-rw-r--r--winsup/utils/ChangeLog5
-rw-r--r--winsup/utils/Makefile.in1
-rw-r--r--winsup/utils/minidumper.cc47
3 files changed, 16 insertions, 37 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index d87c2aaed..9ca783c1a 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,5 +1,10 @@
2014-04-21 Jon TURNEY <jon.turney@dronecode.org.uk>
+ * Makefile.in (minidumper.exe): Link directly with dbghelp.
+ * minidumper.cc (minidump): Ditto.
+
+2014-04-21 Jon TURNEY <jon.turney@dronecode.org.uk>
+
* minidumper.cc (minidump): Fix copy and paste error in checking
result of OpenProcess().
diff --git a/winsup/utils/Makefile.in b/winsup/utils/Makefile.in
index 80e074a4b..28d730652 100644
--- a/winsup/utils/Makefile.in
+++ b/winsup/utils/Makefile.in
@@ -96,6 +96,7 @@ strace.exe: MINGW_LDFLAGS += -lntdll
ldd.exe:CYGWIN_LDFLAGS += -lpsapi
pldd.exe: CYGWIN_LDFLAGS += -lpsapi
+minidumper.exe: CYGWIN_LDFLAGS += -ldbghelp
ldh.exe: MINGW_LDFLAGS += -nostdlib -lkernel32
diff --git a/winsup/utils/minidumper.cc b/winsup/utils/minidumper.cc
index e8cb36a37..ea1e193c2 100644
--- a/winsup/utils/minidumper.cc
+++ b/winsup/utils/minidumper.cc
@@ -26,42 +26,16 @@
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
+#include <dbghelp.h>
BOOL verbose = FALSE;
BOOL nokill = FALSE;
-typedef DWORD MINIDUMP_TYPE;
-
-typedef BOOL (WINAPI *MiniDumpWriteDump_type)(
- HANDLE hProcess,
- DWORD dwPid,
- HANDLE hFile,
- MINIDUMP_TYPE DumpType,
- CONST void *ExceptionParam,
- CONST void *UserStreamParam,
- CONST void *allbackParam);
-
static void
minidump(DWORD pid, MINIDUMP_TYPE dump_type, const char *minidump_file)
{
HANDLE dump_file;
HANDLE process;
- MiniDumpWriteDump_type MiniDumpWriteDump_fp;
- HMODULE module;
-
- module = LoadLibrary("dbghelp.dll");
- if (!module)
- {
- fprintf (stderr, "error loading DbgHelp\n");
- return;
- }
-
- MiniDumpWriteDump_fp = (MiniDumpWriteDump_type)GetProcAddress(module, "MiniDumpWriteDump");
- if (!MiniDumpWriteDump_fp)
- {
- fprintf (stderr, "error getting the address of MiniDumpWriteDump\n");
- return;
- }
dump_file = CreateFile(minidump_file,
GENERIC_READ | GENERIC_WRITE,
@@ -85,13 +59,13 @@ minidump(DWORD pid, MINIDUMP_TYPE dump_type, const char *minidump_file)
return;
}
- BOOL success = (*MiniDumpWriteDump_fp)(process,
- pid,
- dump_file,
- dump_type,
- NULL,
- NULL,
- NULL);
+ BOOL success = MiniDumpWriteDump(process,
+ pid,
+ dump_file,
+ dump_type,
+ NULL,
+ NULL,
+ NULL);
if (success)
{
if (verbose)
@@ -112,7 +86,6 @@ minidump(DWORD pid, MINIDUMP_TYPE dump_type, const char *minidump_file)
CloseHandle(process);
CloseHandle(dump_file);
- FreeLibrary(module);
}
static void
@@ -164,7 +137,7 @@ main (int argc, char **argv)
int opt;
const char *p = "";
DWORD pid;
- MINIDUMP_TYPE dump_type = 0; // MINIDUMP_NORMAL
+ MINIDUMP_TYPE dump_type = MiniDumpNormal;
while ((opt = getopt_long (argc, argv, opts, longopts, NULL) ) != EOF)
switch (opt)
@@ -172,7 +145,7 @@ main (int argc, char **argv)
case 't':
{
char *endptr;
- dump_type = strtoul(optarg, &endptr, 0);
+ dump_type = (MINIDUMP_TYPE)strtoul(optarg, &endptr, 0);
if (*endptr != '\0')
{
fprintf (stderr, "syntax error in minidump type \"%s\" near character #%d.\n", optarg, (int) (endptr - optarg));