From c6c2f71764cc17ec2a855b21f454449d4118720a Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Tue, 24 Sep 2013 14:03:43 +0000 Subject: Support .dwp with the name of symlinked binary file gdb/ 2013-09-24 Jan Kratochvil * dwarf2read.c (open_and_init_dwp_file): Try open_dwp_file also with objfile->original_name. gdb/testsuite/ 2013-09-24 Jan Kratochvil * gdb.dwarf2/dwp-symlink.c: New file. * gdb.dwarf2/dwp-symlink.exp: New file. --- gdb/testsuite/ChangeLog | 5 +++ gdb/testsuite/gdb.dwarf2/dwp-symlink.c | 22 +++++++++ gdb/testsuite/gdb.dwarf2/dwp-symlink.exp | 77 ++++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+) create mode 100644 gdb/testsuite/gdb.dwarf2/dwp-symlink.c create mode 100644 gdb/testsuite/gdb.dwarf2/dwp-symlink.exp (limited to 'gdb/testsuite') diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 7f91ee81cbd..86fedd0a617 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-09-24 Jan Kratochvil + + * gdb.dwarf2/dwp-symlink.c: New file. + * gdb.dwarf2/dwp-symlink.exp: New file. + 2013-09-20 Doug Evans * lib/dwarf.exp (build_executable_from_fission_assembler): New proc. diff --git a/gdb/testsuite/gdb.dwarf2/dwp-symlink.c b/gdb/testsuite/gdb.dwarf2/dwp-symlink.c new file mode 100644 index 00000000000..5be12fb6c5e --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dwp-symlink.c @@ -0,0 +1,22 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2013 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +int +main (int argc, char **argv) +{ + return 0; +} diff --git a/gdb/testsuite/gdb.dwarf2/dwp-symlink.exp b/gdb/testsuite/gdb.dwarf2/dwp-symlink.exp new file mode 100644 index 00000000000..ad0522b4839 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dwp-symlink.exp @@ -0,0 +1,77 @@ +# Copyright 2013 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +standard_testfile + +if [is_remote host] { + untested "remote host" + return 0 +} + +file delete [standard_output_file ${testfile}.dwp] +if [file exists [standard_output_file ${testfile}.dwp]] { + unsupported "dwp file cannot be deleted" + return 0 +} +if { [build_executable ${testfile}.exp ${testfile} ${srcfile}] == -1 } { + return -1 +} +if ![file exists [standard_output_file ${testfile}.dwp]] { + unsupported "testsuite run does not produce dwp files" + return 0 +} + +set thelink "${testfile}-thelink" + +file delete [standard_output_file ${thelink}] +file delete [standard_output_file ${thelink}.dwp] +# file link is only Tcl 8.4+. +exec "ln" "-sf" "${testfile}" "[standard_output_file $thelink]" +if ![file exists [standard_output_file $thelink]] { + unsupported "host does not support symbolic links (binary symlink is missing)" + return 0 +} +if [file exists [standard_output_file $thelink.dwp]] { + unsupported "host does not support symbolic links (we tried to delete a file and it is still there)" + return 0 +} + +clean_restart "$testfile" + +gdb_test "ptype main" {type = int \(int, char \*\*\)} "binary default, dwp default" + +clean_restart "$thelink" + +gdb_test "ptype main" {type = int \(int, char \*\*\)} "binary symlink, dwp default" + +gdb_exit +file rename [standard_output_file ${testfile}.dwp] [standard_output_file ${thelink}.dwp] +if [file exists [standard_output_file ${testfile}.dwp]] { + unsupported "host does not support symbolic links (binary symlink exists)" + return 0 +} +if ![file exists [standard_output_file ${thelink}.dwp]] { + unsupported "host does not support symbolic links (dwp symlink is missing)" + return 0 +} + +clean_restart "$testfile" + +# This case cannot work. +gdb_test "ptype main" {type = int \(\)} "binary default, dwp at symlink" + +clean_restart "$thelink" + +gdb_test "ptype main" {type = int \(int, char \*\*\)} "binary symlink, dwp at symlink" -- cgit v1.2.1