From b09aca3aa72db7e4cd8f301984b42bbe3cb319f8 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Fri, 11 May 2012 18:06:28 +0000 Subject: gdb/ Make auto-load handle multiple components of DEBUG_FILE_DIRECTORY. * auto-load.c (auto_load_objfile_script): Remove check for NULL DEBUG_FILE_DIRECTORY. Handle multiple components of DEBUG_FILE_DIRECTORY. --- gdb/auto-load.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'gdb/auto-load.c') diff --git a/gdb/auto-load.c b/gdb/auto-load.c index 9d4d0bc..254de3b 100644 --- a/gdb/auto-load.c +++ b/gdb/auto-load.c @@ -587,17 +587,29 @@ auto_load_objfile_script (struct objfile *objfile, input = fopen (filename, "r"); debugfile = filename; - if (!input && debug_file_directory) + if (!input) { - /* Also try the same file in the separate debug info directory. */ - debugfile = xmalloc (strlen (filename) - + strlen (debug_file_directory) + 1); - strcpy (debugfile, debug_file_directory); - /* FILENAME is absolute, so we don't need a "/" here. */ - strcat (debugfile, filename); + char *debugdir; + VEC (char_ptr) *debugdir_vec; + int ix; - make_cleanup (xfree, debugfile); - input = fopen (debugfile, "r"); + debugdir_vec = dirnames_to_char_ptr_vec (debug_file_directory); + make_cleanup_free_char_ptr_vec (debugdir_vec); + + for (ix = 0; VEC_iterate (char_ptr, debugdir_vec, ix, debugdir); ++ix) + { + /* Also try the same file in the separate debug info directory. */ + debugfile = xmalloc (strlen (debugdir) + strlen (filename) + 1); + strcpy (debugfile, debugdir); + + /* FILENAME is absolute, so we don't need a "/" here. */ + strcat (debugfile, filename); + + make_cleanup (xfree, debugfile); + input = fopen (debugfile, "r"); + if (input != NULL) + break; + } } if (!input && gdb_datadir) -- cgit v1.1