From: Jan Kratochvil Date: Mon, 11 Nov 2013 17:03:58 +0000 (+0100) Subject: Fix vDSO l_name for GDB's: Can't read pathname for load map: Input/output error. X-Git-Tag: upstream/2.30~8439 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9182aa67994f4e8db378a949812176453e06cb34;p=external%2Fglibc.git Fix vDSO l_name for GDB's: Can't read pathname for load map: Input/output error. --- diff --git a/ChangeLog b/ChangeLog index d330b58..2d9785b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2013-11-11 Jan Kratochvil + + [BZ #387] + * elf/dl-object.c (_dl_new_object): Initialize L_NAME from NEWNAME if + it is empty. + 2013-11-11 Adhemerval Zanella * benchtests/Makefile: Add bench-strtod. diff --git a/elf/dl-object.c b/elf/dl-object.c index 0f594d2..26d4f44 100644 --- a/elf/dl-object.c +++ b/elf/dl-object.c @@ -88,7 +88,13 @@ _dl_new_object (char *realname, const char *libname, int type, /* newname->next = NULL; We use calloc therefore not necessary. */ newname->dont_free = 1; - new->l_name = realname; + /* When we create the executable link map, or a VDSO link map, we start + with "" for the l_name. In these cases "" points to ld.so rodata + and won't get dumped during core file generation. Therefore to assist + gdb and to create more self-contained core files we adjust l_name to + point at the newly allocated copy (which will get dumped) instead of + the ld.so rodata copy. */ + new->l_name = *realname ? realname : (char *) newname->name + libname_len - 1; new->l_type = type; /* If we set the bit now since we know it is never used we avoid dirtying the cache line later. */