PR python/18938: source -s foo.py with foo.py a symlink to foo.notpy fails

gdb/ChangeLog:

	PR python/18938
	* cli/cli-cmds (source_script_fron_sctream): New arg file_to_open.
	All callers updated.

gdb/testsuite/ChangeLog:

	* gdb.python/python.exp: Add test for symlink from .py file to .notpy
	file.
This commit is contained in:
Doug Evans 2015-10-26 14:33:19 -07:00
parent 372405a5e8
commit 1a70ae976b
4 changed files with 35 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2015-10-26 Doug Evans <dje@google.com>
PR python/18938
* cli/cli-cmds (source_script_fron_sctream): New arg file_to_open.
All callers updated.
2015-10-26 Doug Evans <dje@google.com>
* psymtab.c (struct dump_psymtab_addrmap_data): Define.

View File

@ -538,10 +538,16 @@ find_and_open_script (const char *script_file, int search_path,
return 1;
}
/* Load script FILE, which has already been opened as STREAM. */
/* Load script FILE, which has already been opened as STREAM.
FILE_TO_OPEN is the form of FILE to use if one needs to open the file.
This is provided as FILE may have been found via the source search path.
An important thing to note here is that FILE may be a symlink to a file
with a different or non-existing suffix, and thus one cannot infer the
extension language from FILE_TO_OPEN. */
static void
source_script_from_stream (FILE *stream, const char *file)
source_script_from_stream (FILE *stream, const char *file,
const char *file_to_open)
{
if (script_ext_mode != script_ext_off)
{
@ -556,7 +562,7 @@ source_script_from_stream (FILE *stream, const char *file)
= ext_lang_script_sourcer (extlang);
gdb_assert (sourcer != NULL);
sourcer (extlang, stream, file);
sourcer (extlang, stream, file_to_open);
return;
}
else if (script_ext_mode == script_ext_soft)
@ -609,7 +615,7 @@ source_script_with_search (const char *file, int from_tty, int search_path)
anyway so that error messages show the actual file used. But only do
this if we (may have) used search_path, as printing the full path in
errors for the non-search case can be more noise than signal. */
source_script_from_stream (stream, search_path ? full_path : file);
source_script_from_stream (stream, file, search_path ? full_path : file);
do_cleanups (old_cleanups);
}

View File

@ -1,3 +1,9 @@
2015-10-26 Doug Evans <dje@google.com>
PR python/18938
* gdb.python/python.exp: Add test for symlink from .py file to .notpy
file.
2015-10-25 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.compile/compile.exp (compile code globalvar): Update expectation

View File

@ -96,6 +96,19 @@ gdb_test "source $remote_source2_py" "yes" "source source2.py"
gdb_test "source -s source2.py" "yes" "source -s source2.py"
set remote_source2_symlink_notpy \
[gdb_remote_download host ${srcdir}/${subdir}/source2.py \
[standard_output_file "source2-symlink.notpy"]]
set remote_source2_symlink_py [standard_output_file "source2-symlink.py"]
remote_file host delete $remote_source2_symlink_py
set status [remote_exec host "ln -sf $remote_source2_symlink_notpy $remote_source2_symlink_py"]
set test "source -s source2-symlink.py"
if {[lindex $status 0] == 0} {
gdb_test "source -s $remote_source2_symlink_py" "yes" $test
} else {
unsupported "$test (host does not support symbolic links)"
}
gdb_test "python print (gdb.current_objfile())" "None"
gdb_test "python print (gdb.objfiles())" "\\\[\\\]"