aboutsummaryrefslogtreecommitdiff
path: root/gdb/symfile.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2012-04-17 15:47:09 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2012-04-17 15:47:09 +0000
commite4ab2fad14aace768d2241c2595a29de08deabad (patch)
treecd2e2e7af1c89b6bc4f1e0f660576be30517b5ed /gdb/symfile.c
parent5ee4ed9f2eeafe7f0be32e0d197240e2b52c6d41 (diff)
downloadgdb-e4ab2fad14aace768d2241c2595a29de08deabad.zip
gdb-e4ab2fad14aace768d2241c2595a29de08deabad.tar.gz
gdb-e4ab2fad14aace768d2241c2595a29de08deabad.tar.bz2
gdb/
Code cleanup. * charset.c (find_charset_names): Remove variables ix and elt. Use free_char_ptr_vec. * elfread.c (build_id_to_debug_filename): New variables debugdir_vec, back_to and ix. Use dirnames_to_char_ptr_vec. Remove variable debugdir_end. New variable debugdir_len. * gdb_vecs.h (free_char_ptr_vec, make_cleanup_free_char_ptr_vec) (dirnames_to_char_ptr_vec_append, dirnames_to_char_ptr_vec): New declarations. * progspace.c (clear_program_space_solib_cache): Remove variables ix and elt. Use free_char_ptr_vec. * source.c (add_path): Remove variables argv, arg and argv_index. New variables dir_vec, back_to, ix and name. Use dirnames_to_char_ptr_vec_append. Use freeargv instead of make_cleanup_freeargv. Remove variable separator. Simplify the code no longer expecting DIRNAME_SEPARATOR. (openp): Remove variable p, p1 and len. New variables dir_vec, back_to, ix and dir. Use dirnames_to_char_ptr_vec. Simplify the code no longer expecting DIRNAME_SEPARATOR. * symfile.c (find_separate_debug_file): New variables debugdir_vec, back_to and ix. Use dirnames_to_char_ptr_vec. Remove variable debugdir_end. * utils.c (free_char_ptr_vec, do_free_char_ptr_vec) (make_cleanup_free_char_ptr_vec, dirnames_to_char_ptr_vec_append) (dirnames_to_char_ptr_vec): New functions.
Diffstat (limited to 'gdb/symfile.c')
-rw-r--r--gdb/symfile.c28
1 files changed, 10 insertions, 18 deletions
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 816b574..cbdaa25 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -1441,6 +1441,9 @@ find_separate_debug_file (const char *dir,
char *debugdir;
char *debugfile;
int i;
+ VEC (char_ptr) *debugdir_vec;
+ struct cleanup *back_to;
+ int ix;
/* Set I to max (strlen (canon_dir), strlen (dir)). */
i = strlen (dir);
@@ -1475,20 +1478,12 @@ find_separate_debug_file (const char *dir,
Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
cause "/..." lookups. */
- debugdir = debug_file_directory;
- do
- {
- char *debugdir_end;
-
- while (*debugdir == DIRNAME_SEPARATOR)
- debugdir++;
-
- debugdir_end = strchr (debugdir, DIRNAME_SEPARATOR);
- if (debugdir_end == NULL)
- debugdir_end = &debugdir[strlen (debugdir)];
+ debugdir_vec = dirnames_to_char_ptr_vec (debug_file_directory);
+ back_to = make_cleanup_free_char_ptr_vec (debugdir_vec);
- memcpy (debugfile, debugdir, debugdir_end - debugdir);
- debugfile[debugdir_end - debugdir] = 0;
+ for (ix = 0; VEC_iterate (char_ptr, debugdir_vec, ix, debugdir); ++ix)
+ {
+ strcpy (debugfile, debugdir);
strcat (debugfile, "/");
strcat (debugfile, dir);
strcat (debugfile, debuglink);
@@ -1503,8 +1498,7 @@ find_separate_debug_file (const char *dir,
strlen (gdb_sysroot)) == 0
&& IS_DIR_SEPARATOR (canon_dir[strlen (gdb_sysroot)]))
{
- memcpy (debugfile, debugdir, debugdir_end - debugdir);
- debugfile[debugdir_end - debugdir] = 0;
+ strcpy (debugfile, debugdir);
strcat (debugfile, canon_dir + strlen (gdb_sysroot));
strcat (debugfile, "/");
strcat (debugfile, debuglink);
@@ -1512,11 +1506,9 @@ find_separate_debug_file (const char *dir,
if (separate_debug_file_exists (debugfile, crc32, objfile))
return debugfile;
}
-
- debugdir = debugdir_end;
}
- while (*debugdir != 0);
+ do_cleanups (back_to);
xfree (debugfile);
return NULL;
}