Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom Tromey <tromey@redhat.com>
To: gdb-patches@sourceware.org
Subject: FYI: make current_objfile local to symbol readers
Date: Tue, 14 Jun 2011 16:49:00 -0000	[thread overview]
Message-ID: <m3sjrcpdde.fsf@fleche.redhat.com> (raw)

I'm checking this in on the trunk.

The global 'current_objfile' is used by some symbol readers, but only in
a local way.  This patch removes makes this global be local to the
readers which use it.  I think this is clearer and also prevents new
(bad) uses of this global in the future.

Built and regtested on the buildbot.

Tom

2011-06-14  Tom Tromey  <tromey@redhat.com>

	* symtab.h (current_objfile): Don't declare.
	* objfiles.h (current_objfile): Don't declare.
	* objfiles.c (current_objfile): Remove.
	* mdebugread.c (current_objfile): New file-scope global.
	* dbxread.c (current_objfile): New file-scope global.
	* coffread.c (current_objfile): New file-scope global.

Index: coffread.c
===================================================================
RCS file: /cvs/src/src/gdb/coffread.c,v
retrieving revision 1.122
diff -u -r1.122 coffread.c
--- coffread.c	26 May 2011 07:47:10 -0000	1.122
+++ coffread.c	14 Jun 2011 16:46:16 -0000
@@ -49,6 +49,10 @@
 
 extern void _initialize_coffread (void);
 
+/* The objfile we are currently reading.  */
+
+static struct objfile *current_objfile;
+
 struct coff_symfile_info
   {
     file_ptr min_lineno_offset;	/* Where in file lowest line#s are.  */
Index: dbxread.c
===================================================================
RCS file: /cvs/src/src/gdb/dbxread.c,v
retrieving revision 1.127
diff -u -r1.127 dbxread.c
--- dbxread.c	23 Mar 2011 18:23:54 -0000	1.127
+++ dbxread.c	14 Jun 2011 16:46:17 -0000
@@ -1,6 +1,6 @@
 /* Read dbx symbol tables and convert to internal format, for GDB.
    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
-   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, 2010.
+   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, 2010, 2011.
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -105,6 +105,10 @@
 #define FILE_STRING_OFFSET(p) (SYMLOC(p)->file_string_offset)
 \f
 
+/* The objfile we are currently reading.  */
+
+static struct objfile *current_objfile;
+
 /* Remember what we deduced to be the source language of this psymtab.  */
 
 static enum language psymtab_language = language_unknown;
Index: mdebugread.c
===================================================================
RCS file: /cvs/src/src/gdb/mdebugread.c,v
retrieving revision 1.123
diff -u -r1.123 mdebugread.c
--- mdebugread.c	4 Apr 2011 15:11:19 -0000	1.123
+++ mdebugread.c	14 Jun 2011 16:46:17 -0000
@@ -78,6 +78,11 @@
    case the symbol's ELF section could not be represented in ECOFF.  */
 #define ECOFF_IN_ELF(bfd) (bfd_get_flavour (bfd) == bfd_target_elf_flavour \
 			   && bfd_get_section_by_name (bfd, ".mdebug") != NULL)
+
+/* The objfile we are currently reading.  */
+
+static struct objfile *current_objfile;
+
 \f
 
 /* We put a pointer to this structure in the read_symtab_private field
Index: objfiles.c
===================================================================
RCS file: /cvs/src/src/gdb/objfiles.c,v
retrieving revision 1.131
diff -u -r1.131 objfiles.c
--- objfiles.c	25 Apr 2011 19:38:15 -0000	1.131
+++ objfiles.c	14 Jun 2011 16:46:17 -0000
@@ -64,7 +64,6 @@
 /* Externally visible variables that are owned by this module.
    See declarations in objfile.h for more info.  */
 
-struct objfile *current_objfile;	/* For symbol file being read in */
 struct objfile *rt_common_objfile;	/* For runtime common symbols */
 
 struct objfile_pspace_info
Index: objfiles.h
===================================================================
RCS file: /cvs/src/src/gdb/objfiles.h,v
retrieving revision 1.84
diff -u -r1.84 objfiles.h
--- objfiles.h	1 Jun 2011 14:46:23 -0000	1.84
+++ objfiles.h	14 Jun 2011 16:46:24 -0000
@@ -439,21 +439,6 @@
 
 extern struct objfile *rt_common_objfile;
 
-/* When we need to allocate a new type, we need to know which objfile_obstack
-   to allocate the type on, since there is one for each objfile.  The places
-   where types are allocated are deeply buried in function call hierarchies
-   which know nothing about objfiles, so rather than trying to pass a
-   particular objfile down to them, we just do an end run around them and
-   set current_objfile to be whatever objfile we expect to be using at the
-   time types are being allocated.  For instance, when we start reading
-   symbols for a particular objfile, we set current_objfile to point to that
-   objfile, and when we are done, we set it back to NULL, to ensure that we
-   never put a type someplace other than where we are expecting to put it.
-   FIXME:  Maybe we should review the entire type handling system and
-   see if there is a better way to avoid this problem.  */
-
-extern struct objfile *current_objfile;
-
 /* Declarations for functions defined in objfiles.c */
 
 extern struct objfile *allocate_objfile (bfd *, int);
Index: symtab.h
===================================================================
RCS file: /cvs/src/src/gdb/symtab.h,v
retrieving revision 1.182
diff -u -r1.182 symtab.h
--- symtab.h	6 May 2011 15:06:48 -0000	1.182
+++ symtab.h	14 Jun 2011 16:46:25 -0000
@@ -847,10 +847,6 @@
 
 /* External variables and functions for the objects described above.  */
 
-/* See the comment in symfile.c about how current_objfile is used.  */
-
-extern struct objfile *current_objfile;
-
 /* True if we are nested inside psymtab_to_symtab.  */
 
 extern int currently_reading_symtab;


             reply	other threads:[~2011-06-14 16:49 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-14 16:49 Tom Tromey [this message]
2011-06-14 17:52 ` Mark Kettenis
2011-06-14 18:01   ` Joel Brobecker
2011-06-14 18:46     ` Tom Tromey
2011-06-14 18:53       ` Tom Tromey
2011-06-14 18:57         ` Mark Kettenis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m3sjrcpdde.fsf@fleche.redhat.com \
    --to=tromey@redhat.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox