From: Wilhelm Eger Date: Wed, 22 May 2013 20:33:03 +0000 (-0400) Subject: Backport fixes for BZ #15006 from master. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b863a1b2dcbe2589d27646447d9ef88f9beffa5;p=thirdparty%2Fglibc.git Backport fixes for BZ #15006 from master. Resolved backport request BZ #15122. Assume all unmarked objects are compatible with all ABI variants. Such objects may have been generated in a transitional period when ABI tags were not added to all objects. --- 2013-02-08 Carlos O'Donell [BZ #15006] * sysdeps/generic/ldconfig.h: Define FLAG_ARM_LIBSF. * elf/cache.c (print_entry): Add FLAG_ARM_LIBSF support. ports/ 2013-02-08 Carlos O'Donell [BZ #15006] * sysdeps/unix/sysv/linux/arm/dl-cache.h [__ARM_PCS_VFP] (_dl_cache_check_flags): Allow plain FLAG_ELF_LIBC6. [!__ARM_PCS_VFP] (_dl_cache_check_flags): Likewise. * sysdeps/unix/sysv/linux/arm/readelflib.c (process_elf_file): Set FLAG_ARM_LIBSF for soft-float ABI otherwise just FLAG_ELF_LIBC6. --- diff --git a/ChangeLog b/ChangeLog index a6e0d3004ef..b76e7dc06e5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2013-02-08 Carlos O'Donell + + [BZ #15006] + * sysdeps/generic/ldconfig.h: Define FLAG_ARM_LIBSF. + * elf/cache.c (print_entry): Add FLAG_ARM_LIBSF support. + 2013-03-30 David S. Miller * po/de.po: Update from translation team. diff --git a/NEWS b/NEWS index 63f465ac8c5..da0f31202a9 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,12 @@ See the end for copying conditions. Please send GNU C library bug reports via using `glibc' in the "product" field. + +Version 2.17.1 + +* The following bugs are resolved with this release: + 15003, 15006, 15122. + Version 2.17 @@ -23,7 +29,7 @@ Version 2.17 14767, 14783, 14784, 14785, 14793, 14796, 14797, 14801, 14803, 14805, 14807, 14811, 14815, 14821, 14822, 14824, 14828, 14831, 14833, 14835, 14838, 14856, 14863, 14865, 14866, 14868, 14869, 14871, 14872, 14879, - 14889, 14893, 14898, 14914, 15003. + 14889, 14893, 14898, 14914. * Optimization of memcpy for MIPS. diff --git a/elf/cache.c b/elf/cache.c index f5ed370e785..699550bb602 100644 --- a/elf/cache.c +++ b/elf/cache.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1999-2012 Free Software Foundation, Inc. +/* Copyright (C) 1999-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1999. @@ -100,6 +100,10 @@ print_entry (const char *lib, int flag, unsigned int osversion, case FLAG_AARCH64_LIB64: fputs (",AArch64", stdout); break; + /* Uses the ARM soft-float ABI. */ + case FLAG_ARM_LIBSF: + fputs (",soft-float", stdout); + break; case 0: break; default: diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm index d014581e977..75a88265fb9 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -1,3 +1,12 @@ +2013-02-08 Carlos O'Donell + + [BZ #15006] + * sysdeps/unix/sysv/linux/arm/dl-cache.h + [__ARM_PCS_VFP] (_dl_cache_check_flags): Allow plain FLAG_ELF_LIBC6. + [!__ARM_PCS_VFP] (_dl_cache_check_flags): Likewise. + * sysdeps/unix/sysv/linux/arm/readelflib.c (process_elf_file): + Set FLAG_ARM_LIBSF for soft-float ABI otherwise just FLAG_ELF_LIBC6. + 2012-12-04 Steve McIntyre * sysdeps/unix/sysv/linux/arm/dl-cache.h: New file. diff --git a/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h b/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h index 525caa2cbe8..504fecab585 100644 --- a/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h +++ b/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h @@ -1,5 +1,5 @@ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig. - Copyright (C) 2003-2012 Free Software Foundation, Inc. + Copyright (C) 2003-2013 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 @@ -18,12 +18,17 @@ #include +/* In order to support the transition from unmarked objects + to marked objects we must treat unmarked objects as + compatible with either FLAG_ARM_LIBHF or FLAG_ARM_LIBSF. */ #ifdef __ARM_PCS_VFP # define _dl_cache_check_flags(flags) \ - ((flags) == (FLAG_ARM_LIBHF | FLAG_ELF_LIBC6)) + ((flags) == (FLAG_ARM_LIBHF | FLAG_ELF_LIBC6) \ + || (flags) == FLAG_ELF_LIBC6) #else # define _dl_cache_check_flags(flags) \ - ((flags) == FLAG_ELF_LIBC6) + ((flags) == (FLAG_ARM_LIBSF | FLAG_ELF_LIBC6) \ + || (flags) == FLAG_ELF_LIBC6) #endif #include_next diff --git a/ports/sysdeps/unix/sysv/linux/arm/readelflib.c b/ports/sysdeps/unix/sysv/linux/arm/readelflib.c index e767f9e78f2..3efb6134c39 100644 --- a/ports/sysdeps/unix/sysv/linux/arm/readelflib.c +++ b/ports/sysdeps/unix/sysv/linux/arm/readelflib.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1999-2012 Free Software Foundation, Inc. +/* Copyright (C) 1999-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1999 and Jakub Jelinek , 1999. @@ -46,6 +46,12 @@ process_elf_file (const char *file_name, const char *lib, int *flag, if (elf32_header->e_flags & EF_ARM_ABI_FLOAT_HARD) *flag = FLAG_ARM_LIBHF|FLAG_ELF_LIBC6; else if (elf32_header->e_flags & EF_ARM_ABI_FLOAT_SOFT) + *flag = FLAG_ARM_LIBSF|FLAG_ELF_LIBC6; + else + /* We must assume the unmarked objects are compatible + with all ABI variants. Such objects may have been + generated in a transitional period when the ABI + tags were not added to all objects. */ *flag = FLAG_ELF_LIBC6; } } diff --git a/sysdeps/generic/ldconfig.h b/sysdeps/generic/ldconfig.h index 43cb9bdb0c0..91190aa0cd4 100644 --- a/sysdeps/generic/ldconfig.h +++ b/sysdeps/generic/ldconfig.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1999-2012 Free Software Foundation, Inc. +/* Copyright (C) 1999-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1999. @@ -36,6 +36,7 @@ #define FLAG_X8664_LIBX32 0x0800 #define FLAG_ARM_LIBHF 0x0900 #define FLAG_AARCH64_LIB64 0x0a00 +#define FLAG_ARM_LIBSF 0x0b00 /* Name of auxiliary cache. */ #define _PATH_LDCONFIG_AUX_CACHE "/var/cache/ldconfig/aux-cache"