mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 03:29:47 +08:00
[binutils] Handle absolute DW_AT_dwo_name
With an exec: ... $ pwd /home/vries/tmp $ gcc /home/vries/tmp/src/hello.c -gsplit-dwarf -c \ -o /home/vries/tmp/obj/hello.o ... I get: ... $ readelf -w obj/hello.o > READELF readelf: Warning: Unable to load dwo file: \ /home/vries/tmp//home/vries/tmp/obj/hello.dwo ... The dwo file name is listed here: ... <20> DW_AT_GNU_dwo_name: /home/vries/tmp/obj/hello.dwo <24> DW_AT_comp_dir : /home/vries/tmp ... The standard states about the DW_AT_dwo_name attribute: ... value is a null-terminated string containing the full or relative path name (relative to the value of the DW_AT_comp_dir attribute, see below) of the object file that contains the full compilation unit. ... So, readelf shouldn't try to prefix an absolute path with DW_AT_comp_dir. Fix this in load_dwo_file by handling the absolute path case. binutils/ChangeLog: 2021-02-10 Tom de Vries <tdevries@suse.de> PR binutils/27391 * dwarf.c (load_dwo_file): Handle case that name is absolute path.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2021-02-10 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
PR binutils/27391
|
||||
* dwarf.c (load_dwo_file): Handle case that name is absolute path.
|
||||
|
||||
2021-02-10 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
PR binutils/27371
|
||||
|
@ -11092,8 +11092,11 @@ load_dwo_file (const char * main_filename, const char * name, const char * dir,
|
||||
char * separate_filename;
|
||||
void * separate_handle;
|
||||
|
||||
/* FIXME: Skip adding / if dwo_dir ends in /. */
|
||||
separate_filename = concat (dir, "/", name, NULL);
|
||||
if (IS_ABSOLUTE_PATH (name))
|
||||
separate_filename = strdup (name);
|
||||
else
|
||||
/* FIXME: Skip adding / if dwo_dir ends in /. */
|
||||
separate_filename = concat (dir, "/", name, NULL);
|
||||
if (separate_filename == NULL)
|
||||
{
|
||||
warn (_("Out of memory allocating dwo filename\n"));
|
||||
|
Reference in New Issue
Block a user