summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2014-11-14 21:52:31 +0000
committeremaste <emaste@FreeBSD.org>2014-11-14 21:52:31 +0000
commitb81b7af08d5a7e79b1cba290e2f9eeddeca21f30 (patch)
tree13005874e06791b045e978139d69f58545efa9aa
parentcc923c43ad1c7310f403fd5844557ced50917882 (diff)
downloadFreeBSD-src-b81b7af08d5a7e79b1cba290e2f9eeddeca21f30.zip
FreeBSD-src-b81b7af08d5a7e79b1cba290e2f9eeddeca21f30.tar.gz
Always return pathname in dl_iterate_phdr's dlpi_name, as Linux does
Linux LD_ITERATE_PHDR(3): The dlpi_name field is a null-terminated string giving the pathname from which the shared object was loaded. That functionality is much more useful than returning just the short name. Update dl_iterate_phdr(3) to follow r272842 MFC of r272842 and r272848
-rw-r--r--lib/libc/gen/dl_iterate_phdr.34
-rw-r--r--libexec/rtld-elf/rtld.c3
2 files changed, 3 insertions, 4 deletions
diff --git a/lib/libc/gen/dl_iterate_phdr.3 b/lib/libc/gen/dl_iterate_phdr.3
index 5b8afc6..6e952dc 100644
--- a/lib/libc/gen/dl_iterate_phdr.3
+++ b/lib/libc/gen/dl_iterate_phdr.3
@@ -15,7 +15,7 @@
.\"
.\" $OpenBSD: dl_iterate_phdr.3,v 1.3 2007/05/31 19:19:48 jmc Exp $
.\" $FreeBSD$
-.Dd February 15, 2012
+.Dd October 9, 2014
.Dt DL_ITERATE_PHDR 3
.Os
.Sh NAME
@@ -68,7 +68,7 @@ have the following meaning:
The base address at which the object is mapped into the address
space of the calling process.
.It Fa dlpi_name
-The name of the ELF object.
+The pathname of the ELF object.
.It Fa dlpi_phdr
A pointer to the object's program headers.
.It Fa dlpi_phnum
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index 06eecb7..9398209 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -3252,8 +3252,7 @@ rtld_fill_dl_phdr_info(const Obj_Entry *obj, struct dl_phdr_info *phdr_info)
{
phdr_info->dlpi_addr = (Elf_Addr)obj->relocbase;
- phdr_info->dlpi_name = STAILQ_FIRST(&obj->names) ?
- STAILQ_FIRST(&obj->names)->name : obj->path;
+ phdr_info->dlpi_name = obj->path;
phdr_info->dlpi_phdr = obj->phdr;
phdr_info->dlpi_phnum = obj->phsize / sizeof(obj->phdr[0]);
phdr_info->dlpi_tls_modid = obj->tlsindex;
OpenPOWER on IntegriCloud