/* Trace file TFILE format support in GDB.
- Copyright (C) 1997-2019 Free Software Foundation, Inc.
+ Copyright (C) 1997-2020 Free Software Foundation, Inc.
This file is part of GDB.
#include "defs.h"
#include "tracefile.h"
#include "readline/tilde.h"
-#include "filestuff.h"
-#include "rsp-low.h" /* bin2hex */
+#include "gdbsupport/filestuff.h"
+#include "gdbsupport/rsp-low.h" /* bin2hex */
#include "regcache.h"
#include "inferior.h"
#include "gdbthread.h"
#include "remote.h"
#include "xml-tdesc.h"
#include "target-descriptions.h"
-#include "buffer.h"
+#include "gdbsupport/buffer.h"
+#include "gdbsupport/pathstuff.h"
#include <algorithm>
#ifndef O_LARGEFILE
static const target_info tfile_target_info = {
"tfile",
N_("Local trace dump file"),
- N_("Use a trace file as a target. Specify the filename of the trace file.")
+ N_("Use a trace file as a target.\n\
+Specify the filename of the trace file.")
};
class tfile_target final : public tracefile_target
gdb::unique_xmalloc_ptr<char> filename (tilde_expand (arg));
if (!IS_ABSOLUTE_PATH (filename.get ()))
- filename.reset (concat (current_directory, "/", filename.get (),
- (char *) NULL));
+ filename = gdb_abspath (filename.get ());
flags = O_BINARY | O_LARGEFILE;
flags |= O_RDONLY;
ts->disconnected_tracing = 0;
ts->circular_buffer = 0;
- TRY
+ try
{
/* Read through a section of newline-terminated lines that
define things like tracepoints. */
if (trace_regblock_size == 0)
error (_("No register block size recorded in trace file"));
}
- CATCH (ex, RETURN_MASK_ALL)
+ catch (const gdb_exception &ex)
{
/* Remove the partially set up target. */
unpush_target (&tfile_ops);
- throw_exception (ex);
+ throw;
}
- END_CATCH
inferior_appeared (current_inferior (), TFILE_PID);
inferior_ptid = ptid_t (TFILE_PID);
- add_thread_silent (inferior_ptid);
+ add_thread_silent (&tfile_ops, inferior_ptid);
if (ts->traceframe_count <= 0)
warning (_("No traceframes present in this file."));
void
tfile_target::close ()
{
- if (trace_fd < 0)
- return;
+ gdb_assert (trace_fd != -1);
inferior_ptid = null_ptid; /* Avoid confusion from thread stuff. */
exit_inferior_silent (current_inferior ());