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/elfread.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/elfread.c')
-rw-r--r-- | gdb/elfread.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/gdb/elfread.c b/gdb/elfread.c index 9f8a7e8..117e674 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -1123,6 +1123,9 @@ static char * build_id_to_debug_filename (struct build_id *build_id) { char *link, *debugdir, *retval = NULL; + VEC (char_ptr) *debugdir_vec; + struct cleanup *back_to; + int ix; /* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */ link = alloca (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 @@ -1131,22 +1134,18 @@ build_id_to_debug_filename (struct build_id *build_id) /* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will cause "/.build-id/..." lookups. */ - debugdir = debug_file_directory; - do + debugdir_vec = dirnames_to_char_ptr_vec (debug_file_directory); + back_to = make_cleanup_free_char_ptr_vec (debugdir_vec); + + for (ix = 0; VEC_iterate (char_ptr, debugdir_vec, ix, debugdir); ++ix) { - char *s, *debugdir_end; + size_t debugdir_len = strlen (debugdir); gdb_byte *data = build_id->data; size_t size = build_id->size; + char *s; - while (*debugdir == DIRNAME_SEPARATOR) - debugdir++; - - debugdir_end = strchr (debugdir, DIRNAME_SEPARATOR); - if (debugdir_end == NULL) - debugdir_end = &debugdir[strlen (debugdir)]; - - memcpy (link, debugdir, debugdir_end - debugdir); - s = &link[debugdir_end - debugdir]; + memcpy (link, debugdir, debugdir_len); + s = &link[debugdir_len]; s += sprintf (s, "/.build-id/"); if (size > 0) { @@ -1171,11 +1170,9 @@ build_id_to_debug_filename (struct build_id *build_id) if (retval != NULL) break; - - debugdir = debugdir_end; } - while (*debugdir != 0); + do_cleanups (back_to); return retval; } |