aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/buildsym.c4
-rw-r--r--gdb/cli/cli-cmds.c12
-rw-r--r--gdb/jit.c2
-rw-r--r--gdb/source.c14
-rw-r--r--gdb/symmisc.c7
-rw-r--r--gdb/symtab.h1
7 files changed, 28 insertions, 17 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9d7a846..b9dd637 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2014-11-18 Doug Evans <xdje42@gmail.com>
+ * symtab.h (SYMTAB_DIRNAME): New macro. All uses of member
+ symtab.dirname updated to use it.
+
+2014-11-18 Doug Evans <xdje42@gmail.com>
+
* symtab.h (SYMTAB_OBJFILE): New macro. All uses of member
symtab.objfile updated to use it.
diff --git a/gdb/buildsym.c b/gdb/buildsym.c
index 3ea8ff0..d0f0ddc 100644
--- a/gdb/buildsym.c
+++ b/gdb/buildsym.c
@@ -1244,14 +1244,14 @@ end_symtab_with_blockvector (struct block *static_block,
if (subfile->dirname)
{
/* Reallocate the dirname on the symbol obstack. */
- symtab->dirname =
+ SYMTAB_DIRNAME (symtab) =
obstack_copy0 (&objfile->objfile_obstack,
subfile->dirname,
strlen (subfile->dirname));
}
else
{
- symtab->dirname = NULL;
+ SYMTAB_DIRNAME (symtab) = NULL;
}
/* Use whatever language we have been using for this
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index 0c3cfa7..79246ac 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -1486,21 +1486,23 @@ compare_symtabs (const void *a, const void *b)
{
const struct symtab_and_line *sala = a;
const struct symtab_and_line *salb = b;
+ const char *dira = SYMTAB_DIRNAME (sala->symtab);
+ const char *dirb = SYMTAB_DIRNAME (salb->symtab);
int r;
- if (!sala->symtab->dirname)
+ if (dira == NULL)
{
- if (salb->symtab->dirname)
+ if (dirb != NULL)
return -1;
}
- else if (!salb->symtab->dirname)
+ else if (dirb == NULL)
{
- if (sala->symtab->dirname)
+ if (dira != NULL)
return 1;
}
else
{
- r = filename_cmp (sala->symtab->dirname, salb->symtab->dirname);
+ r = filename_cmp (dira, dirb);
if (r)
return r;
}
diff --git a/gdb/jit.c b/gdb/jit.c
index c12a72f..4810018 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -645,7 +645,7 @@ finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
symtab = allocate_symtab (stab->file_name, objfile);
/* JIT compilers compile in memory. */
- symtab->dirname = NULL;
+ SYMTAB_DIRNAME (symtab) = NULL;
/* Copy over the linetable entry if one was provided. */
if (stab->linetable)
diff --git a/gdb/source.c b/gdb/source.c
index 894531a..0f69578 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -659,8 +659,8 @@ source_info (char *ignore, int from_tty)
return;
}
printf_filtered (_("Current source file is %s\n"), s->filename);
- if (s->dirname)
- printf_filtered (_("Compilation directory is %s\n"), s->dirname);
+ if (SYMTAB_DIRNAME (s) != NULL)
+ printf_filtered (_("Compilation directory is %s\n"), SYMTAB_DIRNAME (s));
if (s->fullname)
printf_filtered (_("Located in %s\n"), s->fullname);
if (s->nlines)
@@ -1105,7 +1105,7 @@ open_source_file (struct symtab *s)
if (!s)
return -1;
- return find_and_open_source (s->filename, s->dirname, &s->fullname);
+ return find_and_open_source (s->filename, SYMTAB_DIRNAME (s), &s->fullname);
}
/* Finds the fullname that a symtab represents.
@@ -1125,7 +1125,8 @@ symtab_to_fullname (struct symtab *s)
to handle cases like the file being moved. */
if (s->fullname == NULL)
{
- int fd = find_and_open_source (s->filename, s->dirname, &s->fullname);
+ int fd = find_and_open_source (s->filename, SYMTAB_DIRNAME (s),
+ &s->fullname);
if (fd >= 0)
close (fd);
@@ -1137,10 +1138,11 @@ symtab_to_fullname (struct symtab *s)
/* 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 (SYMTAB_DIRNAME (s) == NULL || IS_ABSOLUTE_PATH (s->filename))
fullname = xstrdup (s->filename);
else
- fullname = concat (s->dirname, SLASH_STRING, s->filename, NULL);
+ fullname = concat (SYMTAB_DIRNAME (s), SLASH_STRING, s->filename,
+ NULL);
back_to = make_cleanup (xfree, fullname);
s->fullname = rewrite_source_path (fullname);
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index 623bcb3..323ebd5 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -297,9 +297,9 @@ dump_symtab_1 (struct objfile *objfile, struct symtab *symtab,
fprintf_filtered (outfile, "\nSymtab for file %s\n",
symtab_to_filename_for_display (symtab));
- if (symtab->dirname)
+ if (SYMTAB_DIRNAME (symtab) != NULL)
fprintf_filtered (outfile, "Compilation directory is %s\n",
- symtab->dirname);
+ SYMTAB_DIRNAME (symtab));
fprintf_filtered (outfile, "Read from object file %s (",
objfile_name (objfile));
gdb_print_host_address (objfile, outfile);
@@ -753,7 +753,8 @@ maintenance_info_symtabs (char *regexp, int from_tty)
printf_filtered ("((struct symtab *) %s)\n",
host_address_to_string (symtab));
printf_filtered (" dirname %s\n",
- symtab->dirname ? symtab->dirname : "(null)");
+ SYMTAB_DIRNAME (symtab) != NULL
+ ? SYMTAB_DIRNAME (symtab) : "(null)");
printf_filtered (" fullname %s\n",
symtab->fullname ? symtab->fullname : "(null)");
printf_filtered (" "
diff --git a/gdb/symtab.h b/gdb/symtab.h
index fdedd59..e545506 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -984,6 +984,7 @@ struct symtab
#define LINETABLE(symtab) (symtab)->linetable
#define SYMTAB_OBJFILE(symtab) ((symtab)->objfile)
#define SYMTAB_PSPACE(symtab) (SYMTAB_OBJFILE (symtab)->pspace)
+#define SYMTAB_DIRNAME(symtab) ((symtab)->dirname)
/* Call this to set the "primary" field in struct symtab. */
extern void set_symtab_primary (struct symtab *, int primary);