From ee6f8984bbdbf340816a7f2aebe736f100601b22 Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Tue, 18 Nov 2014 09:28:32 -0800 Subject: [PATCH] SYMTAB_DIRNAME: New macro. gdb/ChangeLog: * symtab.h (SYMTAB_DIRNAME): New macro. All uses of member symtab.dirname updated to use it. --- gdb/ChangeLog | 5 +++++ gdb/buildsym.c | 4 ++-- gdb/cli/cli-cmds.c | 12 +++++++----- gdb/jit.c | 2 +- gdb/source.c | 14 ++++++++------ gdb/symmisc.c | 7 ++++--- gdb/symtab.h | 1 + 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 + * symtab.h (SYMTAB_DIRNAME): New macro. All uses of member + symtab.dirname updated to use it. + +2014-11-18 Doug Evans + * 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); -- 2.7.4