Print this page
2676 'mdb -f vmdump.0' ignores the -f
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Richard Lowe <richlowe@richlowe.net>
Reviewed by: Gary Mills <gary_mills@fastmail.fm>

*** 19,28 **** --- 19,29 ---- * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + * Copyright 2012, Josef 'Jeff' Sipek <jeffpc@31bits.net>. All rights reserved. */ #include <sys/types.h> #include <sys/mman.h> #include <sys/priocntl.h>
*** 801,810 **** --- 802,814 ---- bcopy(&tgt_argv[c], tgt_argv, sizeof (const char *) * (tgt_argc - c)); tgt_argc -= c; } + if (fflag) + goto tcreate; /* skip re-exec and just create target */ + /* * If we just have an object file name, and that file doesn't * exist, and it's a string of digits, infer it to be a * sequence number referring to a pair of crash dump files. */
*** 864,875 **** * If the target is unknown or is not the rawfile target, do * a gelf_check to determine if the file is an ELF file. If * it is not and the target is unknown, use the rawfile tgt. * Otherwise an ELF-based target is needed, so we must abort. */ ! if (tgt_ctor != mdb_rawfile_tgt_create && ! mdb_gelf_check(io, &ehdr, ET_NONE) == -1) { if (tgt_ctor != NULL) { (void) mdb_gelf_check(io, &ehdr, ET_EXEC); mdb_io_destroy(io); terminate(1); } else --- 868,878 ---- * If the target is unknown or is not the rawfile target, do * a gelf_check to determine if the file is an ELF file. If * it is not and the target is unknown, use the rawfile tgt. * Otherwise an ELF-based target is needed, so we must abort. */ ! if (mdb_gelf_check(io, &ehdr, ET_NONE) == -1) { if (tgt_ctor != NULL) { (void) mdb_gelf_check(io, &ehdr, ET_EXEC); mdb_io_destroy(io); terminate(1); } else
*** 876,887 **** tgt_ctor = mdb_rawfile_tgt_create; } mdb_io_destroy(io); ! if (identify_xvm_file(tgt_argv[0], &longmode) == 1 && ! !fflag) { #ifdef _LP64 if (!longmode) goto reexec; #else if (longmode) --- 879,889 ---- tgt_ctor = mdb_rawfile_tgt_create; } mdb_io_destroy(io); ! if (identify_xvm_file(tgt_argv[0], &longmode) == 1) { #ifdef _LP64 if (!longmode) goto reexec; #else if (longmode)
*** 889,901 **** #endif tgt_ctor = mdb_kvm_tgt_create; goto tcreate; } - if (tgt_ctor == mdb_rawfile_tgt_create) - goto tcreate; /* skip re-exec and just create target */ - /* * The object file turned out to be a user core file (ET_CORE), * and no other arguments were specified, swap 0 and 1. The * proc target will infer the executable for us. */ --- 891,900 ----