SHA256
1
0
forked from pool/gdb

Accepting request 726802 from home:tomdevries:branches:devel:gcc-librpm

- Enable librpm for version > librpm.so.3 [bsc#1145692]:
  * Allow any librpm.so.x
  * Fix unused variables in HAVE_LIBRPM code in
    gdb-6.6-buildid-locate-rpm-suse.patch
  * Add %build test to check for "zypper install <rpm-packagename>"
    message

OBS-URL: https://build.opensuse.org/request/show/726802
OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gdb?expand=0&rev=221
This commit is contained in:
Michael Matz 2019-09-10 15:34:12 +00:00 committed by Git OBS Bridge
parent 27ab902d16
commit d9daa262a4
3 changed files with 106 additions and 9 deletions

View File

@ -110,3 +110,19 @@ Index: gdb-7.12.1/gdb/build-id.c
}
}
diff --git a/gdb/build-id.c b/gdb/build-id.c
index b9ff15a..75d501a 100644
--- a/gdb/build-id.c
+++ b/gdb/build-id.c
@@ -864,10 +864,8 @@ missing_rpm_enlist_1 (const char *filename, int verify_vendor)
#endif
{
Header h;
- char *debuginfo, **slot, *s, *s2;
+ char *debuginfo, **slot;
errmsg_t err;
- size_t srcrpmlen = sizeof (".src.rpm") - 1;
- size_t debuginfolen = sizeof ("-debuginfo") - 1;
rpmdbMatchIterator mi_debuginfo;
h = rpmdbNextIterator_p (mi);

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Fri Aug 23 16:00:18 UTC 2019 - Tom de Vries <tdevries@suse.com>
- Enable librpm for version > librpm.so.3 [bsc#1145692]:
* Allow any librpm.so.x
* Fix unused variables in HAVE_LIBRPM code in
gdb-6.6-buildid-locate-rpm-suse.patch
* Add %build test to check for "zypper install <rpm-packagename>"
message
-------------------------------------------------------------------
Tue Aug 6 21:36:49 UTC 2019 - Tom de Vries <tdevries@suse.de>

View File

@ -18,6 +18,7 @@
%if 0%{?qemu_user_space_build}
# In a qemu_user_space_build ptrace is not supported, so we can't test gdb.
%global _without_testsuite 1
%endif
%bcond_without testsuite
@ -275,6 +276,7 @@ BuildRequires: makeinfo
%else
BuildRequires: texinfo
%endif
BuildRequires: expect
BuildRequires: mpfr-devel
BuildRequires: ncurses-devel
BuildRequires: pkg-config
@ -664,16 +666,17 @@ LDFLAGS="$LDFLAGS -L$PWD/processor-trace-%{libipt_version}-root%{_libdir}"
export CXXFLAGS="$CFLAGS"
export LIBRPM=no
if test -f /usr/%{_lib}/librpm.so.1; then
export LIBRPM=librpm.so.1
fi
if test -f /usr/%{_lib}/librpm.so.2; then
export LIBRPM=librpm.so.2
fi
if test -f /usr/%{_lib}/librpm.so.3; then
export LIBRPM=librpm.so.3
export LIBRPM=$(ls -1 /usr/%{_lib}/ \
| grep '^librpm.so.[0-9][0-9]*$' \
| sort -V -r \
| head -n 1)
if [ "$LIBRPM" != "" ]; then
export LIBRPM="/usr/%{_lib}/$LIBRPM"
[ -f "$LIBRPM" ]
else
export LIBRPM=no
fi
%ifarch %ix86 ia64 ppc ppc64 ppc64le s390 s390x x86_64 aarch64 riscv64
%define build_multitarget 1
%else
@ -814,6 +817,74 @@ then
cd ..
fi
# This is a build-time test, but still a test. So, skip if we don't do tests.
# This is relevant for %qemu_user_space_build == 1 builds, which atm is
# the case for riscv64.
%if %{with testsuite}
if [ "$LIBRPM" != "no" ]; then
cd gdb
cat \
> hello.c \
<<EOF
#include <stdio.h>
int
main (void)
{
printf ("hello\n");
return 0;
}
EOF
$CC hello.c
libc=$(ldd a.out \
| grep libc.so \
| awk '{print $3}')
if readelf -SW $libc \
| grep -q "\.gnu_debuglink"; then
cat \
> test.exp \
<<EOF
expect {
"(gdb) " {
puts "\nPASS: first prompt"
send "start\n"
}
default {
puts "\nFAIL: first prompt (eof or timeout)"
exit 1
}
}
expect {
-re {Missing separate debuginfos, use: zypper install glibc-debuginfo-.*\(gdb\) } {
puts "\nPASS: zypper install message"
send "quit\n"
exit 0
}
"(gdb) " {
puts "\nFAIL: zypper install message"
send "quit\n"
exit 1
}
default {
puts "\nFAIL: zypper install message (eof or timeout)"
exit 1
}
}
EOF
gdb="./gdb -q -nw -nx -data-directory $(pwd -P)/data-directory"
# Due to bsc#1146899 "gdb's zypper install message disappears with
# -batch", we need to use an expect test.
expect -c "spawn $gdb ./a.out" -f test.exp
rm ./test.exp
else
# If packages are not build with debuginfo, we cannot expect a zypper
# install message.
echo "UNSUPPORTED: zypper install message"
fi
rm ./hello.c ./a.out
cd ..
fi
%endif
cd ..
done # fprofile