This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[patch] Code cleanup: Do not check symtab->FILENAME for NULL
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Mon, 17 Dec 2012 14:54:37 +0100
- Subject: [patch] Code cleanup: Do not check symtab->FILENAME for NULL
Hi,
symtab->filename probably could be NULL in the past but it can never be now.
There is for example:
jv-lang.c: class_symtab = allocate_symtab ("<java-classes>", objfile);
partial_symtab->filename already has a comment:
debugging purposes, or "". It must not be NULL. */
Some code assumes it is never NULL but some code still checks for NULL, which
I find confusing.
No regressions on {x86_64,x86_64-m32,i686}-fedora18-linux-gnu.
I will check it in.
Thanks,
Jan
gdb/
2012-12-17 Jan Kratochvil <jan.kratochvil@redhat.com>
Code cleanup.
* dwarf2read.c (fixup_go_packaging): Do not check symtab->FILENAME for
NULL.
* linespec.c (add_sal_to_sals): Likewise.
* psympriv.h (allocate_psymtab): Add ATTRIBUTE_NONNULL.
* stack.c (print_frame): Do not check symtab->FILENAME for NULL.
* symfile.h (allocate_symtab): Add ATTRIBUTE_NONNULL.
* symtab.h (struct symtab): Add comment it is never NULL for filename.
* tracepoint.c (set_traceframe_context): Do not check symtab->FILENAME
for NULL.
* tui/tui-source.c (tui_set_source_content): Likewise.
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index beb2ea8..3f86985 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -6733,7 +6733,6 @@ fixup_go_packaging (struct dwarf2_cu *cu)
complaint (&symfile_complaints,
_("Symtab %s has objects from two different Go packages: %s and %s"),
(SYMBOL_SYMTAB (sym)
- && SYMBOL_SYMTAB (sym)->filename
? SYMBOL_SYMTAB (sym)->filename
: cu->objfile->name),
this_package_name, package_name);
diff --git a/gdb/linespec.c b/gdb/linespec.c
index e9918b1..c22ffe7 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -852,7 +852,7 @@ add_sal_to_sals (struct linespec_state *self,
self->canonical_names = xrealloc (self->canonical_names,
sals->nelts * sizeof (char *));
- if (!literal_canonical && sal->symtab && sal->symtab->filename)
+ if (!literal_canonical && sal->symtab)
{
char *filename = sal->symtab->filename;
diff --git a/gdb/psympriv.h b/gdb/psympriv.h
index ec9aa4a..21471c7 100644
--- a/gdb/psympriv.h
+++ b/gdb/psympriv.h
@@ -226,7 +226,8 @@ extern struct partial_symtab *start_psymtab_common (struct objfile *,
struct partial_symbol **);
extern struct partial_symtab *allocate_psymtab (const char *,
- struct objfile *);
+ struct objfile *)
+ ATTRIBUTE_NONNULL (1);
extern void discard_psymtab (struct objfile *, struct partial_symtab *);
diff --git a/gdb/stack.c b/gdb/stack.c
index b01c8f0..e246a68 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -1178,7 +1178,7 @@ print_frame (struct frame_info *frame, int print_level,
QUIT;
}
ui_out_text (uiout, ")");
- if (sal.symtab && sal.symtab->filename)
+ if (sal.symtab)
{
annotate_frame_source_begin ();
ui_out_wrap_hint (uiout, " ");
@@ -1199,7 +1199,7 @@ print_frame (struct frame_info *frame, int print_level,
annotate_frame_source_end ();
}
- if (pc_p && (!funname || (!sal.symtab || !sal.symtab->filename)))
+ if (pc_p && (funname == NULL || sal.symtab == NULL))
{
#ifdef PC_SOLIB
char *lib = PC_SOLIB (get_frame_pc (frame));
diff --git a/gdb/symfile.h b/gdb/symfile.h
index 223f874..ff7fc81 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -454,7 +454,8 @@ extern struct symfile_segment_data *default_symfile_segments (bfd *abfd);
extern bfd_byte *default_symfile_relocate (struct objfile *objfile,
asection *sectp, bfd_byte *buf);
-extern struct symtab *allocate_symtab (const char *, struct objfile *);
+extern struct symtab *allocate_symtab (const char *, struct objfile *)
+ ATTRIBUTE_NONNULL (1);
extern void add_symtab_fns (const struct sym_fns *);
diff --git a/gdb/symtab.h b/gdb/symtab.h
index ea39326..c5c07b5 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -815,7 +815,7 @@ struct symtab
all the symtabs in a given compilation unit. */
struct macro_table *macro_table;
- /* Name of this source file. */
+ /* Name of this source file. This pointer is never NULL. */
char *filename;
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index f61ede7..848179a 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -312,8 +312,7 @@ set_traceframe_context (struct frame_info *trace_frame)
/* Save file name as "$trace_file", a debugger variable visible to
users. */
- if (traceframe_sal.symtab == NULL
- || traceframe_sal.symtab->filename == NULL)
+ if (traceframe_sal.symtab == NULL)
clear_internalvar (lookup_internalvar ("trace_file"));
else
set_internalvar_string (lookup_internalvar ("trace_file"),
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
index 030653c..a0daac7 100644
--- a/gdb/tui/tui-source.c
+++ b/gdb/tui/tui-source.c
@@ -46,7 +46,7 @@ tui_set_source_content (struct symtab *s,
{
enum tui_status ret = TUI_FAILURE;
- if (s != (struct symtab *) NULL && s->filename != (char *) NULL)
+ if (s != (struct symtab *) NULL)
{
FILE *stream;
int i, desc, c, line_width, nlines;