Blame tests/debug-info-data/README.md

Packit Service b8cde7
debug-info-data
Packit Service b8cde7
==============
Packit Service b8cde7
Packit Service b8cde7
This directory contains pre-generated ELF and DWARF files used to test
Packit Service b8cde7
the debug info analysis feature, including lookup of DWARF debugging
Packit Service b8cde7
information via build ID and debug link methods, as well as the source
Packit Service b8cde7
files used to generate them.
Packit Service b8cde7
Packit Service b8cde7
The generated files are:
Packit Service b8cde7
Packit Service b8cde7
* `libhello_so` (ELF and DWARF)
Packit Service b8cde7
* `libhello_elf_so` (ELF only)
Packit Service b8cde7
* `libhello_build_id_so` (ELF with separate DWARF via build ID)
Packit Service b8cde7
* `libhello_debug_link_so` (ELF with separate DWARF via debug link)
Packit Service b8cde7
* `libhello_debug_link_so.debug` (DWARF for debug link)
Packit Service b8cde7
* `.build-id/cd/d98cdd87f7fe64c13b6daad553987eafd40cbb.debug` (DWARF for build ID)
Packit Service b8cde7
Packit Service b8cde7
We use a suffix of "_so" instead of ".so" since some distributions
Packit Service b8cde7
build systems will consider ".so" files as artifacts from a previous
Packit Service b8cde7
build that were "left-over" and will remove them prior to the build.
Packit Service b8cde7
Packit Service b8cde7
All files are generated from the four (4) following source files:
Packit Service b8cde7
Packit Service b8cde7
* libhello.c
Packit Service b8cde7
* libhello.h
Packit Service b8cde7
* tp.c
Packit Service b8cde7
* tp.h
Packit Service b8cde7
Packit Service b8cde7
The generated executables were built using a GNU toolchain on an
Packit Service b8cde7
x86_64 machine.
Packit Service b8cde7
Packit Service b8cde7
To regenerate them, you can use follow these steps:
Packit Service b8cde7
Packit Service b8cde7
## ELF and DWARF
Packit Service b8cde7
Packit Service b8cde7
    $ gcc -g -fPIC -c -I. tp.c libhello.c
Packit Service b8cde7
    $ gcc -shared -g -llttng-ust -ldl -Wl,-soname,libhello.so -o libhello_so tp.o libhello.o
Packit Service b8cde7
Packit Service b8cde7
## ELF only
Packit Service b8cde7
Packit Service b8cde7
    $ gcc -fPIC -c -I. tp.c libhello.c
Packit Service b8cde7
    $ gcc -shared -llttng-ust -ldl -Wl,-soname,libhello_elf.so -o libhello_elf_so tp.o libhello.o
Packit Service b8cde7
Packit Service b8cde7
## ELF and DWARF with Build ID
Packit Service b8cde7
Packit Service b8cde7
    $ gcc -g -fPIC -c -I. tp.c libhello.c
Packit Service b8cde7
    $ gcc -shared -g -llttng-ust -ldl -Wl,-soname,libhello_build_id.so -Wl,--build-id=sha1 -o libhello_build_id_so tp.o libhello.o
Packit Service b8cde7
    $ mkdir -p .build-id/cd/
Packit Service b8cde7
    $ objcopy --only-keep-debug libhello_build_id_so .build-id/cd/d98cdd87f7fe64c13b6daad553987eafd40cbb.debug
Packit Service b8cde7
    $ strip -g libhello_build_id_so
Packit Service b8cde7
Packit Service b8cde7
The build ID might not be the same once the executable is regenerated
Packit Service b8cde7
on your system, so adjust the values in the directory and file names
Packit Service b8cde7
accordingly. Refer to the GDB documentation for more information:
Packit Service b8cde7
https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html
Packit Service b8cde7
Packit Service b8cde7
##  ELF and DWARF with Debug Link
Packit Service b8cde7
Packit Service b8cde7
    $ gcc -g -fPIC -c -I. tp.c libhello.c
Packit Service b8cde7
    $ gcc -shared -g -llttng-ust -ldl -Wl,-soname,libhello_debug_link.so -o libhello_debug_link_so tp.o libhello.o
Packit Service b8cde7
Packit Service b8cde7
    $ objcopy --only-keep-debug libhello_debug_link_so libhello_debug_link_so.debug
Packit Service b8cde7
    $ strip -g libhello_debug_link_so
Packit Service b8cde7
    $ objcopy --add-gnu-debuglink=libhello_debug_link_so.debug libhello_debug_link_so