[Bug tools/26043] eu-addr2line debuginfo-path option with relative path doesn't find file:line information
mark at klomp dot org
sourceware-bugzilla@sourceware.org
Tue May 26 10:11:46 GMT 2020
https://sourceware.org/bugzilla/show_bug.cgi?id=26043
Mark Wielaard <mark at klomp dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |mark at klomp dot org
--- Comment #1 from Mark Wielaard <mark at klomp dot org> ---
Could you show what is under the demo/build directory?
I am trying to understand where the DWARF debug data is.
Is it in the main binaries, in separate .debug files in the directory of the
main binary, in a separate file in a separate directory, are the main binaries
using build-ids and/or .gnu.debuglink sections?
--debuginfo-path (for utilities using dwfl_standard_argp) will set the
.debuginfo_path of the Dwfl_callbacks. This is then used to find debug files.
The way these paths are used is as follows (from libdwfl.h):
/* These standard find_elf and find_debuginfo callbacks are
controlled by a string specifying directories to look in.
If `debuginfo_path' is set in the Dwfl_Callbacks structure
and the char * it points to is not null, that supplies the
string. Otherwise a default path is used.
If the first character of the string is + or - that enables or
disables CRC32 checksum validation when it's necessary. The
remainder of the string is composed of elements separated by
colons. Each element can start with + or - to override the
global checksum behavior. This flag is never relevant when
working with build IDs, but it's always parsed in the path
string. The remainder of the element indicates a directory.
Searches by build ID consult only the elements naming absolute
directory paths. They look under those directories for a link
named ".build-id/xx/yy" or ".build-id/xx/yy.debug", where "xxyy"
is the lower-case hexadecimal representation of the ID bytes.
In searches for debuginfo by name, if the remainder of the
element is empty, the directory containing the main file is
tried; if it's an absolute path name, the absolute directory path
(and any subdirectory of that path) containing the main file is
taken as a subdirectory of this path; a relative path name is taken
as a subdirectory of the directory containing the main file.
Hence for /usr/bin/ls, the default string ":.debug:/usr/lib/debug"
says to look in /usr/bin, then /usr/bin/.debug, then the path subdirs
under /usr/lib/debug, in the order /usr/lib/debug/usr/bin, then
/usr/lib/debug/bin, and finally /usr/lib/debug, for the file name in
the .gnu_debuglink section (or "ls.debug" if none was found). */
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the Elfutils-devel
mailing list