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] [BZ #19007] FAIL: elf/check-localplt with -z now and binutuls 2.26


On Fri, Sep 25, 2015 at 2:17 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:
> On linker in binutils 2.26 and newer generate GOT references instead
> PLT references when -z now is passed to linker.  We need to extend
> scripts/localplt.awk to allow PLT or GOT references.
>
> Tested on x86 and x86-64.  OK for master?
>
> H.J.
> --
>         [BZ #19007]
>         * scripts/localplt.awk: Also allow GOT references.
>         * sysdeps/unix/sysv/linux/i386/localplt.data: Mark
>         _Unwind_Find_FDE, calloc, memalign, realloc and __libc_memalign
>         with "+ REL R_386_GLOB_DAT".
>         * sysdeps/x86_64/localplt.data: Mark calloc, memalign, realloc
>         and __libc_memalign with "+ RELA R_X86_64_GLOB_DAT".
> ---
>  scripts/localplt.awk                       |  2 +-
>  sysdeps/unix/sysv/linux/i386/localplt.data | 16 ++++++++--------
>  sysdeps/x86_64/localplt.data               | 14 +++++++-------
>  3 files changed, 16 insertions(+), 16 deletions(-)
>
> diff --git a/scripts/localplt.awk b/scripts/localplt.awk
> index f75b3b4..beaa342 100644
> --- a/scripts/localplt.awk
> +++ b/scripts/localplt.awk
> @@ -7,7 +7,7 @@
>  BEGIN { result = 0 }
>
>  FILENAME != lastfile {
> -  if (lastfile && jmprel_offset == 0) {
> +  if (lastfile && jmprel_offset == 0 && rela_offset == 0 && rel_offset == 0) {
>      print FILENAME ": *** failed to find expected output (readelf -WSdr)";
>      result = 2;
>    }
> diff --git a/sysdeps/unix/sysv/linux/i386/localplt.data b/sysdeps/unix/sysv/linux/i386/localplt.data
> index 2e03821..4ce8447 100644
> --- a/sysdeps/unix/sysv/linux/i386/localplt.data
> +++ b/sysdeps/unix/sysv/linux/i386/localplt.data
> @@ -1,17 +1,17 @@
>  # Linker in binutils 2.26 and newer consolidates R_X86_64_JUMP_SLOT
>  # relocation with R_386_GLOB_DAT relocation against the same symbol.
> -libc.so: _Unwind_Find_FDE
> -libc.so: calloc
> +libc.so: _Unwind_Find_FDE + REL R_386_GLOB_DAT
> +libc.so: calloc + REL R_386_GLOB_DAT
>  libc.so: free + REL R_386_GLOB_DAT
>  libc.so: malloc + REL R_386_GLOB_DAT
> -libc.so: memalign
> -libc.so: realloc
> +libc.so: memalign + REL R_386_GLOB_DAT
> +libc.so: realloc + REL R_386_GLOB_DAT
>  libm.so: matherr
>  # The dynamic loader uses __libc_memalign internally to allocate aligned
>  # TLS storage. The other malloc family of functions are expected to allow
>  # user symbol interposition.
> -ld.so: __libc_memalign
> -ld.so: malloc
> -ld.so: calloc
> -ld.so: realloc
> +ld.so: __libc_memalign + REL R_386_GLOB_DAT
> +ld.so: malloc + REL R_386_GLOB_DAT
> +ld.so: calloc + REL R_386_GLOB_DAT
> +ld.so: realloc + REL R_386_GLOB_DAT
>  ld.so: free + REL R_386_GLOB_DAT
> diff --git a/sysdeps/x86_64/localplt.data b/sysdeps/x86_64/localplt.data
> index d140476..f168b14 100644
> --- a/sysdeps/x86_64/localplt.data
> +++ b/sysdeps/x86_64/localplt.data
> @@ -3,17 +3,17 @@
>  # users can define their own functions and have library internals call them.
>  # Linker in binutils 2.26 and newer consolidates R_X86_64_JUMP_SLOT
>  # relocation with R_X86_64_GLOB_DAT relocation against the same symbol.
> -libc.so: calloc
> +libc.so: calloc + RELA R_X86_64_GLOB_DAT
>  libc.so: free + RELA R_X86_64_GLOB_DAT
>  libc.so: malloc + RELA R_X86_64_GLOB_DAT
> -libc.so: memalign
> -libc.so: realloc
> +libc.so: memalign + RELA R_X86_64_GLOB_DAT
> +libc.so: realloc + RELA R_X86_64_GLOB_DAT
>  libm.so: matherr
>  # The dynamic loader uses __libc_memalign internally to allocate aligned
>  # TLS storage. The other malloc family of functions are expected to allow
>  # user symbol interposition.
> -ld.so: __libc_memalign
> -ld.so: malloc
> -ld.so: calloc
> -ld.so: realloc
> +ld.so: __libc_memalign + RELA R_X86_64_GLOB_DAT
> +ld.so: malloc + RELA R_X86_64_GLOB_DAT
> +ld.so: calloc + RELA R_X86_64_GLOB_DAT
> +ld.so: realloc + RELA R_X86_64_GLOB_DAT
>  ld.so: free + RELA R_X86_64_GLOB_DAT
> --
> 2.4.3
>

PING.


-- 
H.J.


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