if (s)
{
current_source_location *loc
- = get_source_location (s->pspace ());
+ = get_source_location (s->compunit ()->objfile ()->pspace);
loc->set (s, 1);
return;
}
if (sal.symtab == NULL)
/* We couldn't find the location of `main', possibly due to missing
line number info, fall back to line 1 in the corresponding file. */
- loc->set (symbol_symtab (bsym.symbol), 1);
+ loc->set (bsym.symbol->symtab (), 1);
else
loc->set (sal.symtab, std::max (sal.line - (lines_to_list - 1), 1));
return;
for (const gdb::unique_xmalloc_ptr<char> &name_up : dir_vec)
{
- char *name = name_up.get ();
+ const char *name = name_up.get ();
char *p;
struct stat st;
- gdb::unique_xmalloc_ptr<char> new_name_holder;
+ std::string new_name_holder;
/* Spaces and tabs will have been removed by buildargv().
NAME is the start of the directory.
P is the '\0' following the end. */
- p = name + strlen (name);
+ p = name_up.get () + strlen (name);
while (!(IS_DIR_SEPARATOR (*name) && p <= name + 1) /* "/" */
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
if (name[0] == '\0')
goto skip_dup;
if (name[0] == '~')
- new_name_holder.reset (tilde_expand (name));
+ new_name_holder
+ = gdb::unique_xmalloc_ptr<char[]> (tilde_expand (name)).get ();
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
else if (IS_ABSOLUTE_PATH (name) && p == name + 2) /* "d:" => "d:." */
- new_name_holder.reset (concat (name, ".", (char *) NULL));
+ new_name_holder = std::string (name) + ".";
#endif
else if (!IS_ABSOLUTE_PATH (name) && name[0] != '$')
new_name_holder = gdb_abspath (name);
else
- new_name_holder.reset (savestring (name, p - name));
- name = new_name_holder.get ();
+ new_name_holder = std::string (name, p - name);
+
+ name = new_name_holder.c_str ();
/* Unless it's a variable, check existence. */
if (name[0] != '$')
cust = s->compunit ();
gdb_printf (_("Current source file is %s\n"), s->filename);
- if (s->dirname () != NULL)
- gdb_printf (_("Compilation directory is %s\n"), s->dirname ());
+ if (s->compunit ()->dirname () != NULL)
+ gdb_printf (_("Compilation directory is %s\n"), s->compunit ()->dirname ());
if (s->fullname)
gdb_printf (_("Located in %s\n"), s->fullname);
const std::vector<off_t> *offsets;
else if ((opts & OPF_RETURN_REALPATH) != 0)
*filename_opened = gdb_realpath (filename);
else
- *filename_opened = gdb_abspath (filename);
+ *filename_opened
+ = make_unique_xstrdup (gdb_abspath (filename).c_str ());
}
errno = last_errno;
gdb::unique_xmalloc_ptr<char> fullname (s->fullname);
s->fullname = NULL;
- scoped_fd fd = find_and_open_source (s->filename, s->dirname (),
+ scoped_fd fd = find_and_open_source (s->filename, s->compunit ()->dirname (),
&fullname);
if (fd.get () < 0)
std::string srcpath;
if (IS_ABSOLUTE_PATH (s->filename))
srcpath = s->filename;
- else if (s->dirname () != nullptr)
+ else if (s->compunit ()->dirname () != nullptr)
{
- srcpath = s->dirname ();
+ srcpath = s->compunit ()->dirname ();
srcpath += SLASH_STRING;
srcpath += s->filename;
}
/* rewrite_source_path would be applied by find_and_open_source, we
should report the pathname where GDB tried to find the file. */
- if (s->dirname () == NULL || IS_ABSOLUTE_PATH (s->filename))
+ if (s->compunit ()->dirname () == nullptr
+ || IS_ABSOLUTE_PATH (s->filename))
fullname.reset (xstrdup (s->filename));
else
- fullname.reset (concat (s->dirname (), SLASH_STRING,
+ fullname.reset (concat (s->compunit ()->dirname (), SLASH_STRING,
s->filename, (char *) NULL));
s->fullname = rewrite_source_path (fullname.get ()).release ();
else if (sal.line > 0
&& find_line_pc_range (sal, &start_pc, &end_pc))
{
- struct gdbarch *gdbarch = sal.symtab->objfile ()->arch ();
+ gdbarch *gdbarch = sal.symtab->compunit ()->objfile ()->arch ();
if (start_pc == end_pc)
{