Test stepping within a runtime loader / dynamic linker
authorKevin Buettner <kevinb@redhat.com>
Thu, 20 Oct 2022 02:36:07 +0000 (19:36 -0700)
committerKevin Buettner <kevinb@redhat.com>
Thu, 20 Oct 2022 02:40:33 +0000 (19:40 -0700)
commit97df7412a183b73a1bfaeed55a4d951c2aede7d4
treef922b519f909bed3a3aa7781f0f8ad2f21f9de88
parentbe6276e0aed1f2df8f771d9823b6c8fea29e6a66
Test stepping within a runtime loader / dynamic linker

See the remarks in rtld-step.exp for a description of what this
test is about.

This test case has been tested using gcc on the following x86-64 Linux
distributions/releases:

    Fedora 28
    Fedora 32
    Fedora 33
    Fedora 34
    Fedora 35
    Fedora 36
    Fedora 37
    rawhide (f38)
    RHEL 9.1
    Ubuntu 22.04.1 LTS

It's also been tested (and found to be working) with
RUNTESTFLAGS="CC_FOR_TARGET=clang" on all of the above expect for
Fedora 28.  The (old) version of clang available on F28 did not
accept the -static-pie option.

I also tried to make this test work on FreeBSD 13.1.  While I think I
made significant progress, I was ultimately stymied by this message
which occurs when attempting to run the main program which has been
set to use the fake/pretend RTLD as the ELF interpreter:

ELF interpreter /path/to/rtld-step-rtld not found, error 22

I have left one of the flags (-static) in place which I believe
to be needed for FreeBSD (though since I never got it to work, I
don't know for sure.)  I've also left some declarations needed
for FreeBSD in rtld-step-rtld.c.  They're currently disabled via
a #if 0; you'll need to enable them if you want to try to make
it work on FreeBSD.
gdb/testsuite/gdb.base/rtld-step-main.c [new file with mode: 0644]
gdb/testsuite/gdb.base/rtld-step-rtld.c [new file with mode: 0644]
gdb/testsuite/gdb.base/rtld-step.exp [new file with mode: 0644]