[gdb/testsuite] Add target board cc-with-gnu-debuglink.exp

Add target board cc-with-gnu-debuglink.exp that splits off debuginfo into a
seperate .debug file and links to it using .gnu_debuglink.

Tested on x86_64-linux.

gdb/ChangeLog:

2021-05-21  Tom de Vries  <tdevries@suse.de>

	PR testsuite/25047
	* contrib/cc-with-tweaks.sh: Handle -l.

gdb/testsuite/ChangeLog:

2021-05-21  Tom de Vries  <tdevries@suse.de>

	PR testsuite/25047
	* boards/cc-with-gnu-debuglink.exp: New file.
This commit is contained in:
Tom de Vries
2021-05-21 18:11:12 +02:00
parent ca43e66033
commit 778ae9ccc8
4 changed files with 81 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2021-05-21 Tom de Vries <tdevries@suse.de>
PR testsuite/25047
* contrib/cc-with-tweaks.sh: Handle -l.
2021-05-21 Tom de Vries <tdevries@suse.de>
PR breakpoint/27889

View File

@ -45,6 +45,7 @@
# -i make an index (.gdb_index)
# -n make a dwarf5 index (.debug_names)
# -p create .dwp files (Fission), you need to also use gcc option -gsplit-dwarf
# -l creates separate debuginfo files linked to using .gnu_debuglink
# If nothing is given, no changes are made
myname=cc-with-tweaks.sh
@ -83,6 +84,7 @@ want_dwz=false
want_multi=false
want_dwp=false
want_objcopy_compress=false
want_gnu_debuglink=false
while [ $# -gt 0 ]; do
case "$1" in
@ -92,6 +94,7 @@ while [ $# -gt 0 ]; do
-n) want_index=true; index_options=-dwarf-5;;
-m) want_multi=true ;;
-p) want_dwp=true ;;
-l) want_gnu_debuglink=true ;;
*) break ;;
esac
shift
@ -158,7 +161,12 @@ fi
get_tmpdir ()
{
tmpdir=$(dirname "$output_file")/.tmp
subdir="$1"
if [ "$subdir" = "" ]; then
subdir=.tmp
fi
tmpdir=$(dirname "$output_file")/"$subdir"
mkdir -p "$tmpdir"
}
@ -234,4 +242,40 @@ if [ "$want_dwp" = true ]; then
fi
fi
if [ "$want_gnu_debuglink" = true ]; then
# Based on gdb_gnu_strip_debug.
# Gdb looks for the .gnu_debuglink file in the .debug subdirectory
# of the directory of the executable.
get_tmpdir .debug
stripped_file="$tmpdir"/$(basename "$output_file").stripped
debug_file="$tmpdir"/$(basename "$output_file").debug
# Create stripped and debug versions of output_file.
strip --strip-debug "${output_file}" \
-o "${stripped_file}"
rc=$?
[ $rc != 0 ] && exit $rc
strip --only-keep-debug "${output_file}" \
-o "${debug_file}"
rc=$?
[ $rc != 0 ] && exit $rc
# The .gnu_debuglink is supposed to contain no leading directories.
link=$(basename "${debug_file}")
(
# Temporarily cd to tmpdir to allow objcopy to find $link
cd "$tmpdir" || exit 1
# Overwrite output_file with stripped version containing
# .gnu_debuglink to debug_file.
objcopy --add-gnu-debuglink="$link" "${stripped_file}" \
"${output_file}"
rc=$?
[ $rc != 0 ] && exit $rc
)
fi
exit $rc

View File

@ -1,3 +1,8 @@
2021-05-21 Tom de Vries <tdevries@suse.de>
PR testsuite/25047
* boards/cc-with-gnu-debuglink.exp: New file.
2021-05-21 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
* gdb.dwarf2/dw2-inline-with-lexical-scope.c (func): Replace

View File

@ -0,0 +1,26 @@
# Copyright 2021 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 <http://www.gnu.org/licenses/>.
# This file is a dejagnu "board file" and is used to run the testsuite
# with contrib/cc-with-tweaks.sh -l.
#
# Example usage:
# bash$ cd $objdir
# bash$ make check-gdb \
# RUNTESTFLAGS='--target_board=cc-with-gnu-debuglink'
#
set CC_WITH_TWEAKS_FLAGS "-l"
load_board_description "cc-with-tweaks"