From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Berlin To: ac131313@localhost.cygnus.com (Andrew Cagney) Cc: gdb-patches@sources.redhat.com Subject: Re: [rfc] More ``char *'' -> ``const char *'' symtab.c and source.c Date: Mon, 11 Jun 2001 15:47:00 -0000 Message-id: <87lmmyab34.fsf@cgsoftware.com> References: <20010611220051.3EEA93C5D@localhost.cygnus.com> X-SW-Source: 2001-06/msg00220.html 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 > > * 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