diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-04-17 15:47:09 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-04-17 15:47:09 +0000 |
commit | e4ab2fad14aace768d2241c2595a29de08deabad (patch) | |
tree | cd2e2e7af1c89b6bc4f1e0f660576be30517b5ed /gdb/symfile.c | |
parent | 5ee4ed9f2eeafe7f0be32e0d197240e2b52c6d41 (diff) | |
download | gdb-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.c | 28 |
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; } |