This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 03/12] s390: Enable VDSO for static linking


On 8/2/19 2:34 PM, Adhemerval Zanella wrote:
Ping.

On 14/06/2019 12:28, Adhemerval Zanella wrote:
Although s390 explicit does not enable vDSO for binaries without
(arch/s390/kernel/vdso.c:217), there is no indication in the code
the rationale for disabling it.  In fact, I rebuilt a kernel with the
check removed and the vDSO does work for static build for supplied
symbols.

Hi Adhemerval,

Sorry, I haven't recognized this patch as it was hidden behind the email-thread starting with "[PATCH 01/12] m68k: Remove vDSO support". Please cc me if I'm not responding for s390 patches.

I've just had a look into the kernel arch/s390/kernel/vdso.c file
and I'm a little bit confused regarding the line number 217 (see my excerpt below). Just to be sure, have you removed the "if (!uses_interp)" or the "if (!vdso_enabled)"?

/*
 * This is called from binfmt_elf, we create the special vma for the
 * vDSO and insert it into the mm struct tree
 */
int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
{
	struct mm_struct *mm = current->mm;
	struct vm_area_struct *vma;
	unsigned long vdso_pages;
	unsigned long vdso_base;
	int rc;

217:	if (!vdso_enabled)
		return 0;
	/*
	 * Only map the vdso for dynamically linked elf binaries.
	 */
222:	if (!uses_interp)
		return 0;


As far as I know, vdso was disabled for statically linked binaries as glibc had not supported it and thus nothing "useless" was mapped (especially on 31bit). I've also cc'ed Heiko. Perhaps he can also enable it on s390 for statically linked binaries.

Nevertheless this patch breaks s390. I've just committed the attached fix which adds the removed VDSO_SETUP macro definition.

Bye.
Stefan
commit cf6ac72fdd2026e91c0672ccf0eefd2e58920bdc
Author: Stefan Liebler <stli@linux.ibm.com>
Date:   Tue Aug 6 14:15:09 2019 +0200

    s390: Fix Enable VDSO for static linking
    
    The commit 5e855c8954014bca7b0d6f07312ec09553695ffd
    "s390: Enable VDSO for static linking" removed the definition of VDSO_SETUP
    which leads to not setup the vdso symbols.
    Instead it jumps to false addresses.
    
    This patch just re adds the removed VDSO_SETUP macro definition.
    
    ChangeLog:
    
            * sysdeps/unix/sysv/linux/s390/init-first.c (VDSO_SETUP): New define.

diff --git a/sysdeps/unix/sysv/linux/s390/init-first.c b/sysdeps/unix/sysv/linux/s390/init-first.c
index 8c54d13935..a1ad9458e3 100644
--- a/sysdeps/unix/sysv/linux/s390/init-first.c
+++ b/sysdeps/unix/sysv/linux/s390/init-first.c
@@ -53,4 +53,6 @@ _libc_vdso_platform_setup (void)
   VDSO_SYMBOL (getcpu) = p;
 }
 
+#define VDSO_SETUP _libc_vdso_platform_setup
+
 #include <csu/init-first.c>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]