This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [rfc] More ``char *'' -> ``const char *'' symtab.c and source.c
- To: ac131313 at localhost dot cygnus dot com (Andrew Cagney)
- Subject: Re: [rfc] More ``char *'' -> ``const char *'' symtab.c and source.c
- From: Daniel Berlin <dan at cgsoftware dot com>
- Date: 11 Jun 2001 18:46:55 -0400
- Cc: gdb-patches at sources dot redhat dot com
- References: <20010611220051.3EEA93C5D@localhost.cygnus.com>
ac131313@localhost.cygnus.com (Andrew Cagney) writes:
If you really want to get them all, make name in struct symbol and
struct type, as well as tag_name in struct type, const char *.
It'll force you to change all of the places we *should* be using
const, but aren't (the names of symbols and types should never
change).
> Hello,
>
> This patch propogates another const-char-* down through several functions.
> It is actually fallout from looking at basename() which currently casts
> (const char *) -> (char *).
>
> thoughts?
>
> Andrew
>
> Mon Jun 11 17:26:43 2001 Andrew Cagney <cagney@b1.cygnus.com>
>
> * source.c (openp): Make parameters ``path'' and ``string''
> constant.
> (openp): Use alloca to safely duplicate ``string''. Make local
> variables ``p'' and ``p1'' constant. Delete char* casts.
> * defs.h: Update.
>
> * symtab.c (lookup_symtab_1): Make parameter ``name'' constant.
> (lookup_symtab, lookup_partial_symtab): Ditto.
> * symtab.h (lookup_symtab, lookup_partial_symtab): Update.
>
> Index: defs.h
> ===================================================================
> RCS file: /cvs/src/src/gdb/defs.h,v
> retrieving revision 1.52
> diff -p -r1.52 defs.h
> *** defs.h 2001/06/10 16:25:51 1.52
> --- defs.h 2001/06/11 21:55:18
> *************** extern void print_address (CORE_ADDR, st
> *** 698,704 ****
>
> /* From source.c */
>
> ! extern int openp (char *, int, char *, int, int, char **);
>
> extern int source_full_path_of (char *, char **);
>
> --- 698,704 ----
>
> /* From source.c */
>
> ! extern int openp (const char *, int, const char *, int, int, char **);
>
> extern int source_full_path_of (char *, char **);
>
> Index: source.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/source.c,v
> retrieving revision 1.15
> diff -p -r1.15 source.c
> *** source.c 2001/06/06 10:27:59 1.15
> --- source.c 2001/06/11 21:55:18
> *************** source_info (char *ignore, int from_tty)
> *** 515,526 ****
> /* >>>> This should only allow files of certain types,
> >>>> eg executable, non-directory */
> int
> ! openp (char *path, int try_cwd_first, char *string, int mode, int prot,
> char **filename_opened)
> {
> register int fd;
> register char *filename;
> ! register char *p, *p1;
> register int len;
> int alloclen;
>
> --- 515,528 ----
> /* >>>> This should only allow files of certain types,
> >>>> eg executable, non-directory */
> int
> ! openp (const char *path, int try_cwd_first, const char *string,
> ! int mode, int prot,
> char **filename_opened)
> {
> register int fd;
> register char *filename;
> ! const char *p;
> ! const char *p1;
> register int len;
> int alloclen;
>
> *************** openp (char *path, int try_cwd_first, ch
> *** 534,540 ****
> if (try_cwd_first || IS_ABSOLUTE_PATH (string))
> {
> int i;
> ! filename = string;
> fd = open (filename, mode, prot);
> if (fd >= 0)
> goto done;
> --- 536,543 ----
> if (try_cwd_first || IS_ABSOLUTE_PATH (string))
> {
> int i;
> ! filename = alloca (strlen (string) + 1);
> ! strcpy (filename, string);
> fd = open (filename, mode, prot);
> if (fd >= 0)
> goto done;
> *************** openp (char *path, int try_cwd_first, ch
> *** 548,558 ****
> string += 2;
>
> alloclen = strlen (path) + strlen (string) + 2;
> ! filename = (char *) alloca (alloclen);
> fd = -1;
> for (p = path; p; p = p1 ? p1 + 1 : 0)
> {
> ! p1 = (char *) strchr (p, DIRNAME_SEPARATOR);
> if (p1)
> len = p1 - p;
> else
> --- 551,561 ----
> string += 2;
>
> alloclen = strlen (path) + strlen (string) + 2;
> ! filename = alloca (alloclen);
> fd = -1;
> for (p = path; p; p = p1 ? p1 + 1 : 0)
> {
> ! p1 = strchr (p, DIRNAME_SEPARATOR);
> if (p1)
> len = p1 - p;
> else
> *************** openp (char *path, int try_cwd_first, ch
> *** 570,576 ****
> if (newlen > alloclen)
> {
> alloclen = newlen;
> ! filename = (char *) alloca (alloclen);
> }
> strcpy (filename, current_directory);
> }
> --- 573,579 ----
> if (newlen > alloclen)
> {
> alloclen = newlen;
> ! filename = alloca (alloclen);
> }
> strcpy (filename, current_directory);
> }
> *************** done:
> *** 597,603 ****
> if (filename_opened)
> {
> if (fd < 0)
> ! *filename_opened = (char *) 0;
> else if (IS_ABSOLUTE_PATH (filename))
> *filename_opened = savestring (filename, strlen (filename));
> else
> --- 600,606 ----
> if (filename_opened)
> {
> if (fd < 0)
> ! *filename_opened = NULL;
> else if (IS_ABSOLUTE_PATH (filename))
> *filename_opened = savestring (filename, strlen (filename));
> else
> Index: symtab.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/symtab.c,v
> retrieving revision 1.39
> diff -p -r1.39 symtab.c
> *** symtab.c 2001/06/11 16:05:24 1.39
> --- symtab.c 2001/06/11 21:55:19
> *************** static struct partial_symbol *lookup_par
> *** 79,85 ****
> const char *, int,
> namespace_enum);
>
> ! static struct symtab *lookup_symtab_1 (char *);
>
> static struct symbol *lookup_symbol_aux (const char *name, const
> struct block *block, const
> --- 79,85 ----
> const char *, int,
> namespace_enum);
>
> ! static struct symtab *lookup_symtab_1 (const char *);
>
> static struct symbol *lookup_symbol_aux (const char *name, const
> struct block *block, const
> *************** cplusplus_hint (char *name)
> *** 138,144 ****
> in the symtab filename will also work. */
>
> static struct symtab *
> ! lookup_symtab_1 (char *name)
> {
> register struct symtab *s;
> register struct partial_symtab *ps;
> --- 138,144 ----
> in the symtab filename will also work. */
>
> static struct symtab *
> ! lookup_symtab_1 (const char *name)
> {
> register struct symtab *s;
> register struct partial_symtab *ps;
> *************** got_symtab:
> *** 192,198 ****
> of variations if the first lookup doesn't work. */
>
> struct symtab *
> ! lookup_symtab (char *name)
> {
> register struct symtab *s;
> #if 0
> --- 192,198 ----
> of variations if the first lookup doesn't work. */
>
> struct symtab *
> ! lookup_symtab (const char *name)
> {
> register struct symtab *s;
> #if 0
> *************** lookup_symtab (char *name)
> *** 229,235 ****
> in the psymtab filename will also work. */
>
> struct partial_symtab *
> ! lookup_partial_symtab (char *name)
> {
> register struct partial_symtab *pst;
> register struct objfile *objfile;
> --- 229,235 ----
> in the psymtab filename will also work. */
>
> struct partial_symtab *
> ! lookup_partial_symtab (const char *name)
> {
> register struct partial_symtab *pst;
> register struct objfile *objfile;
> Index: symtab.h
> ===================================================================
> RCS file: /cvs/src/src/gdb/symtab.h,v
> retrieving revision 1.22
> diff -p -r1.22 symtab.h
> *** symtab.h 2001/06/11 16:05:24 1.22
> --- symtab.h 2001/06/11 21:55:19
> *************** extern int asm_demangle;
> *** 1072,1078 ****
>
> /* lookup a symbol table by source file name */
>
> ! extern struct symtab *lookup_symtab (char *);
>
> /* lookup a symbol by name (optional block, optional symtab) */
>
> --- 1072,1078 ----
>
> /* lookup a symbol table by source file name */
>
> ! extern struct symtab *lookup_symtab (const char *);
>
> /* lookup a symbol by name (optional block, optional symtab) */
>
> *************** find_pc_sect_partial_function (CORE_ADDR
> *** 1122,1128 ****
>
> /* lookup partial symbol table by filename */
>
> ! extern struct partial_symtab *lookup_partial_symtab (char *);
>
> /* lookup partial symbol table by address */
>
> --- 1122,1128 ----
>
> /* lookup partial symbol table by filename */
>
> ! extern struct partial_symtab *lookup_partial_symtab (const char *);
>
> /* lookup partial symbol table by address */
>
--
"I've never seen electricity, so I don't pay for it. I write
right on the bill, "I'm sorry, I haven't seen it all month."
"-Steven Wright