elf: Add _dl_audit_pltexit
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 22 Jul 2021 21:02:42 +0000 (18:02 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 28 Dec 2021 11:40:38 +0000 (08:40 -0300)
It consolidates the code required to call la_pltexit audit
callback.

Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu.

Reviewed-by: Florian Weimer <fweimer@redhat.com>
27 files changed:
elf/dl-audit.c
elf/dl-runtime.c
elf/dl-support.c
sysdeps/aarch64/dl-trampoline.S
sysdeps/alpha/dl-trampoline.S
sysdeps/arm/dl-machine-rel.h
sysdeps/arm/dl-trampoline.S
sysdeps/generic/dl-fixup-attribute.h [new file with mode: 0644]
sysdeps/generic/dl-machine-rel.h
sysdeps/generic/ldsodefs.h
sysdeps/hppa/dl-runtime.c
sysdeps/hppa/dl-trampoline.S
sysdeps/i386/dl-fixup-attribute.h [new file with mode: 0644]
sysdeps/i386/dl-machine-rel.h
sysdeps/i386/dl-machine.h
sysdeps/i386/dl-trampoline.S
sysdeps/ia64/dl-trampoline.S
sysdeps/m68k/dl-trampoline.S
sysdeps/mips/dl-machine-rel.h
sysdeps/powerpc/powerpc64/dl-trampoline.S
sysdeps/s390/s390-32/dl-trampoline.h
sysdeps/s390/s390-64/dl-trampoline.h
sysdeps/sh/dl-trampoline.S
sysdeps/sparc/sparc32/dl-trampoline.S
sysdeps/sparc/sparc64/dl-trampoline.S
sysdeps/x86_64/dl-runtime.h
sysdeps/x86_64/dl-trampoline.h

index 15250c67e8ac1658e2886911c95240946e94c035..152712b12fed6de25cc5a55fce547d33282951e6 100644 (file)
@@ -20,6 +20,8 @@
 #include <link.h>
 #include <ldsodefs.h>
 #include <dl-machine.h>
+#include <dl-runtime.h>
+#include <dl-fixup-attribute.h>
 
 void
 _dl_audit_activity_map (struct link_map *l, int action)
@@ -320,3 +322,48 @@ _dl_audit_pltenter (struct link_map *l, struct reloc_result *reloc_result,
 
   *value = DL_FIXUP_ADDR_VALUE (sym.st_value);
 }
+
+void
+DL_ARCH_FIXUP_ATTRIBUTE
+_dl_audit_pltexit (struct link_map *l, ElfW(Word) reloc_arg,
+                  const void *inregs, void *outregs)
+{
+  const uintptr_t pltgot = (uintptr_t) D_PTR (l, l_info[DT_PLTGOT]);
+
+  /* This is the address in the array where we store the result of previous
+     relocations.  */
+  // XXX Maybe the bound information must be stored on the stack since
+  // XXX with bind_not a new value could have been stored in the meantime.
+  struct reloc_result *reloc_result =
+    &l->l_reloc_result[reloc_index (pltgot, reloc_arg, sizeof (PLTREL))];
+  ElfW(Sym) *defsym = ((ElfW(Sym) *) D_PTR (reloc_result->bound,
+                                           l_info[DT_SYMTAB])
+                      + reloc_result->boundndx);
+
+  /* Set up the sym parameter.  */
+  ElfW(Sym) sym = *defsym;
+  sym.st_value = DL_FIXUP_VALUE_ADDR (reloc_result->addr);
+
+  /* Get the symbol name.  */
+  const char *strtab = (const void *) D_PTR (reloc_result->bound,
+                                            l_info[DT_STRTAB]);
+  const char *symname = strtab + sym.st_name;
+
+  struct audit_ifaces *afct = GLRO(dl_audit);
+  for (unsigned int cnt = 0; cnt < GLRO(dl_naudit); ++cnt)
+    {
+      if (afct->ARCH_LA_PLTEXIT != NULL
+         && (reloc_result->enterexit
+             & (LA_SYMB_NOPLTEXIT >> (2 * cnt))) == 0)
+       {
+         struct auditstate *l_state = link_map_audit_state (l, cnt);
+         struct auditstate *bound_state
+           = link_map_audit_state (reloc_result->bound, cnt);
+         afct->ARCH_LA_PLTEXIT (&sym, reloc_result->boundndx,
+                                &l_state->cookie, &bound_state->cookie,
+                                inregs, outregs, symname);
+       }
+
+      afct = afct->next;
+    }
+}
index dfedeaf2dd1c725303f9322f5fca214519c2e378..e42f6e8b8dfca08e913c0a1bd840140e0d2b0f43 100644 (file)
@@ -16,8 +16,6 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#define IN_DL_RUNTIME 1                /* This can be tested in dl-machine.h.  */
-
 #include <alloca.h>
 #include <assert.h>
 #include <stdlib.h>
 #include <dl-runtime.h>
 
 
-#if (!ELF_MACHINE_NO_RELA && !defined ELF_MACHINE_PLT_REL) \
-    || ELF_MACHINE_NO_REL
-# define PLTREL  ElfW(Rela)
-#else
-# define PLTREL  ElfW(Rel)
-#endif
-
-/* The fixup functions might have need special attributes.  If none
-   are provided define the macro as empty.  */
-#ifndef ARCH_FIXUP_ATTRIBUTE
-# define ARCH_FIXUP_ATTRIBUTE
-#endif
-
 /* This function is called through a special trampoline from the PLT the
    first time each PLT entry is called.  We must perform the relocation
    specified in the PLT of the given shared object, and return the resolved
@@ -52,7 +37,7 @@
    function.  */
 
 DL_FIXUP_VALUE_TYPE
-attribute_hidden __attribute ((noinline)) ARCH_FIXUP_ATTRIBUTE
+attribute_hidden __attribute ((noinline)) DL_ARCH_FIXUP_ATTRIBUTE
 _dl_fixup (
 # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
           ELF_MACHINE_RUNTIME_FIXUP_ARGS,
@@ -148,7 +133,8 @@ _dl_fixup (
 
 #ifndef PROF
 DL_FIXUP_VALUE_TYPE
-__attribute ((noinline)) ARCH_FIXUP_ATTRIBUTE
+__attribute ((noinline))
+DL_ARCH_FIXUP_ATTRIBUTE
 _dl_profile_fixup (
 #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
                   ELF_MACHINE_RUNTIME_FIXUP_ARGS,
@@ -332,52 +318,3 @@ _dl_profile_fixup (
 }
 
 #endif /* PROF */
-
-
-#include <stdio.h>
-void
-ARCH_FIXUP_ATTRIBUTE
-_dl_call_pltexit (struct link_map *l, ElfW(Word) reloc_arg,
-                 const void *inregs, void *outregs)
-{
-#ifdef SHARED
-  const uintptr_t pltgot = (uintptr_t) D_PTR (l, l_info[DT_PLTGOT]);
-
-  /* This is the address in the array where we store the result of previous
-     relocations.  */
-  // XXX Maybe the bound information must be stored on the stack since
-  // XXX with bind_not a new value could have been stored in the meantime.
-  struct reloc_result *reloc_result =
-    &l->l_reloc_result[reloc_index (pltgot, reloc_arg, sizeof (PLTREL))];
-  ElfW(Sym) *defsym = ((ElfW(Sym) *) D_PTR (reloc_result->bound,
-                                           l_info[DT_SYMTAB])
-                      + reloc_result->boundndx);
-
-  /* Set up the sym parameter.  */
-  ElfW(Sym) sym = *defsym;
-  sym.st_value = DL_FIXUP_VALUE_ADDR (reloc_result->addr);
-
-  /* Get the symbol name.  */
-  const char *strtab = (const void *) D_PTR (reloc_result->bound,
-                                            l_info[DT_STRTAB]);
-  const char *symname = strtab + sym.st_name;
-
-  struct audit_ifaces *afct = GLRO(dl_audit);
-  for (unsigned int cnt = 0; cnt < GLRO(dl_naudit); ++cnt)
-    {
-      if (afct->ARCH_LA_PLTEXIT != NULL
-         && (reloc_result->enterexit
-             & (LA_SYMB_NOPLTEXIT >> (2 * cnt))) == 0)
-       {
-         struct auditstate *l_state = link_map_audit_state (l, cnt);
-         struct auditstate *bound_state
-           = link_map_audit_state (reloc_result->bound, cnt);
-         afct->ARCH_LA_PLTEXIT (&sym, reloc_result->boundndx,
-                                &l_state->cookie, &bound_state->cookie,
-                                inregs, outregs, symname);
-       }
-
-      afct = afct->next;
-    }
-#endif
-}
index 98d5d8db5c6efdfda3a7c2935801b44fb198d5a0..d2aa52d78ae2ced5cfc6fa616d730bc4904fef5c 100644 (file)
@@ -436,3 +436,11 @@ _dl_get_dl_main_map (void)
   return &_dl_main_map;
 }
 #endif
+
+/* This is used by _dl_runtime_profile, not used on static code.  */
+void
+DL_ARCH_FIXUP_ATTRIBUTE
+_dl_audit_pltexit (struct link_map *l, ElfW(Word) reloc_arg,
+                  const void *inregs, void *outregs)
+{
+}
index a7e9267c1c6a4863d030533a42866285c6f5c718..9b352b1d0f7d62e7dffe05198e4a78aee284ab11 100644 (file)
@@ -293,7 +293,7 @@ _dl_runtime_profile:
        ldp     x0, x1, [x29, #OFFSET_SAVED_CALL_X0]
        add     x2, x29, #OFFSET_RG
        add     x3, x29, #OFFSET_RV
-       bl      _dl_call_pltexit
+       bl      _dl_audit_pltexit
 
        ldp     x0, x1, [x29, #OFFSET_RV + DL_OFFSET_RV_X0]
        ldp     d0, d1, [x29, #OFFSET_RV + DL_OFFSET_RV_D0 + 16*0]
index 9dfce5b0839dc122f415eca4044cec0198f7be42..55380d48ad8536eeb05f762719078597aac42e0a 100644 (file)
@@ -187,7 +187,7 @@ _dl_runtime_profile_new:
        jsr     $26, ($27), 0
        ldgp    $29, 0($26)
 
-       /* Set up for call to _dl_call_pltexit.  */
+       /* Set up for call to _dl_audit_pltexit.  */
        ldq     $16, 16*8($15)
        ldq     $17, 17*8($15)
        stq     $0, 16*8($15)
@@ -196,7 +196,7 @@ _dl_runtime_profile_new:
        lda     $19, 16*8($15)
        stt     $f0, 18*8($15)
        stt     $f1, 19*8($15)
-       bsr     $26, _dl_call_pltexit   !samegp
+       bsr     $26, _dl_audit_pltexit  !samegp
 
        mov     $15, $30
        cfi_def_cfa_register (30)
@@ -518,7 +518,7 @@ _dl_runtime_profile_old:
        jsr     $26, ($27), 0
        ldgp    $29, 0($26)
 
-       /* Set up for call to _dl_call_pltexit.  */
+       /* Set up for call to _dl_audit_pltexit.  */
        ldq     $16, 48*8($15)
        ldq     $17, 49*8($15)
        stq     $0, 46*8($15)
@@ -527,7 +527,7 @@ _dl_runtime_profile_old:
        lda     $19, 46*8($15)
        stt     $f0, 48*8($15)
        stt     $f1, 49*8($15)
-       bsr     $26, _dl_call_pltexit   !samegp
+       bsr     $26, _dl_audit_pltexit  !samegp
 
        mov     $15, $30
        cfi_def_cfa_register (30)
index bec114706cd027a441a814ba4881983bbfd25ccd..a9ee25a6b1d381ac550e9ee0b0ac707819726854 100644 (file)
@@ -28,4 +28,6 @@
    Prelinked libraries may use Elf32_Rela though.  */
 #define ELF_MACHINE_PLT_REL 1
 
+#define PLTREL ElfW(Rel)
+
 #endif
index 70105308ca7df934509b83b5e690839d77df23cb..a2d322706db77981cb35ebc5b893495de75ac411 100644 (file)
@@ -194,7 +194,7 @@ _dl_runtime_profile:
        ldmia   ip, {r0,r1}
        add     r2, r7, #72
        add     r3, r7, #0
-       bl      _dl_call_pltexit
+       bl      _dl_audit_pltexit
 
        @ Return to caller.
        ldmia   r7, {r0-r3}
diff --git a/sysdeps/generic/dl-fixup-attribute.h b/sysdeps/generic/dl-fixup-attribute.h
new file mode 100644 (file)
index 0000000..aa92169
--- /dev/null
@@ -0,0 +1,24 @@
+/* ABI specifics for lazy resolution functions.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _DL_FIXUP_ATTRIBUTE_H
+#define _DL_FIXUP_ATTRIBUTE_H
+
+#define DL_ARCH_FIXUP_ATTRIBUTE
+
+#endif
index 9167a1dffc71570468e42a19969e2af54a5c6294..9d5b7bb749e69e632b55c131ed47603c77820696 100644 (file)
@@ -23,5 +23,7 @@
 #define ELF_MACHINE_NO_REL 1
 /* Defined if the architecture supports Elf{32,64}_Rela relocations.  */
 #define ELF_MACHINE_NO_RELA 0
+/* Used to calculate the index of link_map l_reloc_result.  */
+#define PLTREL ElfW(Rela)
 
 #endif
index cf9f58d6f548af0337bb32c763ade06a2504b2da..d0004a3111b7e7b8a6222c6a2ef2cef743866f6d 100644 (file)
@@ -35,6 +35,7 @@
 #include <link.h>
 #include <dl-lookupcfg.h>
 #include <dl-sysdep.h>
+#include <dl-fixup-attribute.h>
 #include <libc-lock.h>
 #include <hp-timing.h>
 #include <tls.h>
@@ -1438,6 +1439,11 @@ void _dl_audit_pltenter (struct link_map *l, struct reloc_result *reloc_result,
                         DL_FIXUP_VALUE_TYPE *value, void *regs,
                         long int *framesize)
   attribute_hidden;
+void DL_ARCH_FIXUP_ATTRIBUTE _dl_audit_pltexit (struct link_map *l,
+                                               ElfW(Word) reloc_arg,
+                                               const void *inregs,
+                                               void *outregs)
+  attribute_hidden;
 #endif /* SHARED */
 
 #if PTHREAD_IN_LIBC && defined SHARED
index e7fbb7417d866bb0af7a41accaf9fefd55bc5f6d..b60a6b53909476ac14ac96ce6ec7e933d544ca59 100644 (file)
@@ -26,7 +26,7 @@
    _dl_fixup with the relocation offset.  */
 
 ElfW(Word)
-attribute_hidden __attribute ((noinline)) ARCH_FIXUP_ATTRIBUTE
+attribute_hidden __attribute ((noinline)) DL_ARCH_FIXUP_ATTRIBUTE
 _dl_fix_reloc_arg (struct fdesc *fptr, struct link_map *l)
 {
   Elf32_Addr l_addr, iplt, jmprel, end_jmprel, r_type;
index cb18ea7eabba41ed00bcfc0fbdc22cda60e58743..c54879bae014801264479e3daa674493a940340f 100644 (file)
@@ -300,7 +300,7 @@ L(cont):
        ldw     -4(%sp),%r1
        copy    %r1, %sp
 
-       /* Arguments to _dl_call_pltexit */
+       /* Arguments to _dl_audit_pltexit */
        ldw     -116(%sp), %r26         /* (1) got[1] == struct link_map */
        ldw     -120(%sp), %r25         /* (2) reloc offsets */
        ldo     -56(%sp), %r24          /* (3) *La_hppa_regs */
@@ -312,8 +312,8 @@ L(cont):
        ldo     -128(%sp), %r1
        fstd    %fr4,0(%r1)
 
-       /* Call _dl_call_pltexit */
-       bl      _dl_call_pltexit,%rp
+       /* Call _dl_audit_pltexit */
+       bl      _dl_audit_pltexit,%rp
        nop
 
        /* Restore *La_hppa_retval */
diff --git a/sysdeps/i386/dl-fixup-attribute.h b/sysdeps/i386/dl-fixup-attribute.h
new file mode 100644 (file)
index 0000000..c10e993
--- /dev/null
@@ -0,0 +1,30 @@
+/* ABI specifics for lazy resolution functions.  i386 version.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _DL_FIXUP_ATTRIBUTE_H
+#define _DL_FIXUP_ATTRIBUTE_H
+
+/* We cannot use this scheme for profiling because the _mcount call destroys
+   the passed register information.  */
+#ifndef PROF
+# define DL_ARCH_FIXUP_ATTRIBUTE __attribute__ ((regparm (3), stdcall, unused))
+#else
+# define DL_ARCH_FIXUP_ATTRIBUTE
+#endif
+
+#endif
index 7ac46f78a69fbf98ff4120d8d4193486604cea5a..bb3480d45415d76121288980b90e36eebe9d0edc 100644 (file)
@@ -28,4 +28,6 @@
    Prelinked libraries may use Elf32_Rela though.  */
 #define ELF_MACHINE_PLT_REL 1
 
+#define PLTREL ElfW(Rel)
+
 #endif
index 169bed50ff5ceaeecb5ebc379e34a163c110071e..2f0dbc27a96181e101bd5db77f7cfbcf6672b2fb 100644 (file)
@@ -115,29 +115,6 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
   return lazy;
 }
 
-#ifdef IN_DL_RUNTIME
-
-# ifndef PROF
-/* We add a declaration of this function here so that in dl-runtime.c
-   the ELF_MACHINE_RUNTIME_TRAMPOLINE macro really can pass the parameters
-   in registers.
-
-   We cannot use this scheme for profiling because the _mcount call
-   destroys the passed register information.  */
-#define ARCH_FIXUP_ATTRIBUTE __attribute__ ((regparm (3), stdcall, unused))
-
-extern ElfW(Addr) _dl_fixup (struct link_map *l,
-                            ElfW(Word) reloc_offset)
-     ARCH_FIXUP_ATTRIBUTE;
-extern ElfW(Addr) _dl_profile_fixup (struct link_map *l,
-                                    ElfW(Word) reloc_offset,
-                                    ElfW(Addr) retaddr, void *regs,
-                                    long int *framesizep)
-     ARCH_FIXUP_ATTRIBUTE;
-# endif
-
-#endif
-
 /* Mask identifying addresses reserved for the user program,
    where the dynamic linker should not map anything.  */
 #define ELF_MACHINE_USER_ADDRESS_MASK  0xf0000000UL
index 5669ab18f5622b6474d5940e0fab103223afb269..1e555de32e1f9f4dd98b52984b682ded90f9676b 100644 (file)
@@ -252,7 +252,7 @@ _dl_runtime_profile:
        movl (LRV_SIZE + 4 + LR_SIZE)(%esp), %eax
        # PLT1
        movl (LRV_SIZE + 4 + LR_SIZE + 4)(%esp), %edx
-       call _dl_call_pltexit
+       call _dl_audit_pltexit
        movl LRV_EAX_OFFSET(%esp), %eax
        movl LRV_EDX_OFFSET(%esp), %edx
        fldt LRV_ST1_OFFSET(%esp)
index 3053405a3a21d62e3474f0e59562b9e0e28a6a09..11e86932c75d5b6b57d6158fa93e75a751a64e69 100644 (file)
@@ -133,7 +133,7 @@ END(_dl_runtime_resolve)
 
 
 /* The fourth argument to _dl_profile_fixup and the third one to
-   _dl_call_pltexit are a pointer to La_ia64_regs:
+   _dl_audit_pltexit are a pointer to La_ia64_regs:
 
    8byte r8
    8byte r9
@@ -159,7 +159,7 @@ END(_dl_runtime_resolve)
    8byte sp
 
    The fifth argument to _dl_profile_fixup is a pointer to long int.
-   The fourth argument to _dl_call_pltexit is a pointer to
+   The fourth argument to _dl_audit_pltexit is a pointer to
    La_ia64_retval:
 
    8byte r8
@@ -261,7 +261,7 @@ ENTRY(_dl_runtime_profile)
        }
        { .mii
          mov r18 = ar.unat     /* save it in La_ia64_regs */
-         mov loc7 = out3       /* save it for _dl_call_pltexit */
+         mov loc7 = out3       /* save it for _dl_audit_pltexit */
          mov loc5 = r11        /* preserve language specific register */
        }
        { .mmi
@@ -272,7 +272,7 @@ ENTRY(_dl_runtime_profile)
        }
        { .mii
          mov ar.unat = r17     /* restore it for function call */
-         mov loc8 = r16        /* save it for _dl_call_pltexit */
+         mov loc8 = r16        /* save it for _dl_audit_pltexit */
          nop.i 0x0
        }
        { .mmi
@@ -291,7 +291,7 @@ ENTRY(_dl_runtime_profile)
        { .mmi
          stf.spill [r2] = f14, 32
          stf.spill [r3] = f15, 24
-         mov loc9 = out1       /* save it for _dl_call_pltexit */
+         mov loc9 = out1       /* save it for _dl_audit_pltexit */
          ;;
        }
        { .mmb
@@ -426,7 +426,7 @@ ENTRY(_dl_runtime_profile)
          br.call.sptk.many b0 = b6
        }
        { .mii
-         /* Prepare stack for _dl_call_pltexit. Loc10 has the original
+         /* Prepare stack for _dl_audit_pltexit. Loc10 has the original
             stack pointer.  */
          adds r12 = -PLTEXIT_FRAME_SIZE, loc10
          adds r2 = -(PLTEXIT_FRAME_SIZE - 16), loc10
@@ -461,14 +461,14 @@ ENTRY(_dl_runtime_profile)
        { .mmi
          stf.spill [r2] = f12, 32
          stf.spill [r3] = f13, 32
-         /* We need to restore gp for _dl_call_pltexit. */
+         /* We need to restore gp for _dl_audit_pltexit. */
          mov gp = loc11
          ;;
        }
        { .mmb
          stf.spill [r2] = f14
          stf.spill [r3] = f15
-         br.call.sptk.many b0 = _dl_call_pltexit
+         br.call.sptk.many b0 = _dl_audit_pltexit
        }
        { .mmi
          /* Load all the non-floating and floating return values. Skip
index a51a5f7f573c6330a9441437c088c74e3dd6ca0c..72bde664c31c425646331ecc9c44775e2ebc29a9 100644 (file)
@@ -202,7 +202,7 @@ _dl_runtime_profile:
        cfi_adjust_cfa_offset (4)
        move.l (32+FPSPACE)(%sp), -(%sp)
        cfi_adjust_cfa_offset (4)
-       jbsr _dl_call_pltexit
+       jbsr _dl_audit_pltexit
        lea 16(%sp), %sp
        cfi_adjust_cfa_offset (-16)
        move.l (%sp)+, %d0
index ed396180412bc723ea2cd87c0f80df19715a9f5e..3d0dfec01f6b193e490d24d00bf84acb88982aad 100644 (file)
@@ -22,5 +22,6 @@
 #define ELF_MACHINE_PLT_REL 1
 #define ELF_MACHINE_NO_REL 0
 #define ELF_MACHINE_NO_RELA 0
+#define PLTREL ElfW(Rel)
 
 #endif
index 61bd8571fcc93caaf682ffa9c14224b223f77871..97f0105ce780514e842b8ee523fc022d8b8347b9 100644 (file)
@@ -197,7 +197,7 @@ END(_dl_runtime_resolve)
 #ifndef PROF
 ENTRY (_dl_profile_resolve, 4)
 /* Spill r30, r31 to preserve the link_map* and reloc_addr, in case we
-   need to call _dl_call_pltexit.  */
+   need to call _dl_audit_pltexit.  */
        std     r31,-8(r1)
        std     r30,-16(r1)
 /* We need to save the registers used to pass parameters, ie. r3 thru
@@ -452,7 +452,7 @@ L(restoreFXR2):
 L(callpltexit):
        addi    r5,r1,INT_PARMS
        addi    r6,r1,INT_RTN
-       bl      JUMPTARGET(_dl_call_pltexit)
+       bl      JUMPTARGET(_dl_audit_pltexit)
 #ifndef SHARED
        nop
 #endif
index c224a2b92832af9b4d73f1524d3b500f05300d52..9e4cd1055fe6ab2005859ca2247e9b4f181ec09b 100644 (file)
@@ -282,7 +282,7 @@ _dl_runtime_profile:
        basr   %r1,0
 5:     l      %r14,7f-5b(%r1)
        la     %r5,CFA_OFF+RETVAL_OFF(%r12)     # struct La_s390_32_retval *
-       bas    %r14,0(%r14,%r1)                 # call _dl_call_pltexit
+       bas    %r14,0(%r14,%r1)                 # call _dl_audit_pltexit
 
        lr     %r15,%r12                        # remove stack frame
 # undef FRAME_SIZE
@@ -301,7 +301,7 @@ _dl_runtime_profile:
        br     %r14
 
 6:     .long  _dl_profile_fixup - 0b
-7:     .long  _dl_call_pltexit - 5b
+7:     .long  _dl_audit_pltexit - 5b
        cfi_endproc
        .size _dl_runtime_profile, .-_dl_runtime_profile
 # undef SIZEOF_STRUCT_LA_S390_32_REGS
index ae741a3bad5ec77e1739d5d1fcbc638cf292d5f8..6e5bad40459ec76552f6ab3e68bfb5da852fd650 100644 (file)
@@ -284,7 +284,7 @@ _dl_runtime_profile:
        lmg    %r2,%r4,CFA_OFF+PLT1_OFF(%r12)   # r2, r3: args saved by PLT
                                                # r4: struct La_s390_64_regs *
        la     %r5,CFA_OFF+RETVAL_OFF(%r12)     # struct La_s390_64_retval *
-       brasl  %r14,_dl_call_pltexit
+       brasl  %r14,_dl_audit_pltexit
 
        lgr    %r15,%r12                        # remove stack frame
 # undef FRAME_SIZE
index 824ac84ba1830ce56dd4a11d0caa8aae85065fd9..f9038cd10ed5286ff1af299caf44d4d7d56a2c0b 100644 (file)
@@ -423,8 +423,8 @@ _dl_runtime_profile:
        .align 2
 #ifdef SHARED
 7:     .long _GLOBAL_OFFSET_TABLE_
-8:     .long _dl_call_pltexit@GOTOFF
+8:     .long _dl_audit_pltexit@GOTOFF
 #else
-8:     .long _dl_call_pltexit
+8:     .long _dl_audit_pltexit
 #endif
        .size _dl_runtime_profile, .-_dl_runtime_profile
index 426f90c99a7ed369aa503c7058fdff1799452332..2f64809731c865a299e7b601aa673147c8441d0b 100644 (file)
@@ -127,7 +127,7 @@ _dl_profile_invoke:
        mov     %l5, %o0
        mov     %l6, %o1
        add     %sp, (11 * 8), %o2
-       call    _dl_call_pltexit
+       call    _dl_audit_pltexit
         add    %sp, ( 9 * 8), %o3
 
        ldd     [%sp + ( 9 * 8)], %i0
index 8d59fa67209cd8ab57c0a18690f5fcd7f4d52789..86605e37acd929fd3af5f52ea28c5753ae3d973e 100644 (file)
@@ -196,7 +196,7 @@ _dl_profile_invoke:
        mov     %l5, %o0
        mov     %l6, %o1
        add     %sp, STACK_BIAS + (24 * 8), %o2
-       call    _dl_call_pltexit
+       call    _dl_audit_pltexit
         add    %sp, STACK_BIAS + (16 * 8), %o3
 
        ldx     [%sp + STACK_BIAS + (16 * 8)], %i0
index 9c8d3977eee270697b63ca3c049390d60edf5499..19ba33ef30970c20c1e70a99d0af2c37c7bb964a 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307 USA.  */
 
 /* The ABI calls for the PLT stubs to pass the index of the relocation
-   and not its offset.  In _dl_profile_fixup and _dl_call_pltexit we
+   and not its offset.  In _dl_profile_fixup and _dl_audit_pltexit we
    also use the index.  Therefore it is wasteful to compute the offset
    in the trampoline just to reverse the operation immediately
    afterwards.  */
index dfbfefbd4af657bfd788f268b91e7356fb6f484d..812f67f23d6887a613a15fc139c26c511aae69e6 100644 (file)
@@ -357,7 +357,7 @@ _dl_runtime_profile:
        jns 3f
 
        /* There's nothing in the frame size, so there
-          will be no call to the _dl_call_pltexit. */
+          will be no call to the _dl_audit_pltexit. */
 
        /* Get back registers content.  */
        movq LR_RCX_OFFSET(%rsp), %rcx
@@ -403,7 +403,7 @@ _dl_runtime_profile:
        mov 24(%rbx), %RSP_LP   # Drop the copied stack content
 
        /* Now we have to prepare the La_x86_64_retval structure for the
-          _dl_call_pltexit.  The La_x86_64_regs is being pointed by rsp now,
+          _dl_audit_pltexit.  The La_x86_64_regs is being pointed by rsp now,
           so we just need to allocate the sizeof(La_x86_64_retval) space on
           the stack, since the alignment has already been taken care of. */
 # ifdef RESTORE_AVX
@@ -448,7 +448,7 @@ _dl_runtime_profile:
        movq 24(%rbx), %rdx     # La_x86_64_regs argument to %rdx.
        movq 40(%rbx), %rsi     # Copy args pushed by PLT in register.
        movq 32(%rbx), %rdi     # %rdi: link_map, %rsi: reloc_index
-       call _dl_call_pltexit
+       call _dl_audit_pltexit
 
        /* Restore return registers.  */
        movq LRV_RAX_OFFSET(%rsp), %rax