diff options
author | Wilhelm Eger <wilhelm.eger@googlemail.com> | 2013-05-22 16:33:03 -0400 |
---|---|---|
committer | Carlos O'Donell <carlos@redhat.com> | 2013-05-22 16:33:03 -0400 |
commit | 2b863a1b2dcbe2589d27646447d9ef88f9beffa5 (patch) | |
tree | b78ecc20215f535774184f8e0e80cae9acdd4b34 | |
parent | 1032040da284af3b9fe5870c54b0dae246bc0c02 (diff) | |
download | glibc-2b863a1b2dcbe2589d27646447d9ef88f9beffa5.tar.gz glibc-2b863a1b2dcbe2589d27646447d9ef88f9beffa5.tar.xz glibc-2b863a1b2dcbe2589d27646447d9ef88f9beffa5.zip |
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 <carlos@redhat.com> [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 <carlos@redhat.com> [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.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | NEWS | 8 | ||||
-rw-r--r-- | elf/cache.c | 6 | ||||
-rw-r--r-- | ports/ChangeLog.arm | 9 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/arm/dl-cache.h | 11 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/arm/readelflib.c | 8 | ||||
-rw-r--r-- | sysdeps/generic/ldconfig.h | 3 |
7 files changed, 44 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog index a6e0d3004e..b76e7dc06e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2013-02-08 Carlos O'Donell <carlos@redhat.com> + + [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 <davem@davemloft.net> * po/de.po: Update from translation team. diff --git a/NEWS b/NEWS index 63f465ac8c..da0f31202a 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,12 @@ See the end for copying conditions. Please send GNU C library bug reports via <http://sourceware.org/bugzilla/> using `glibc' in the "product" field. +Version 2.17.1 + +* The following bugs are resolved with this release: + 15003, 15006, 15122. + + Version 2.17 * The following bugs are resolved with this release: @@ -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 f5ed370e78..699550bb60 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 <aj@suse.de>, 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 d014581e97..75a88265fb 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -1,3 +1,12 @@ +2013-02-08 Carlos O'Donell <carlos@redhat.com> + + [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 <steve.mcintyre@linaro.org> * 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 525caa2cbe..504fecab58 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 <ldconfig.h> +/* 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 <dl-cache.h> diff --git a/ports/sysdeps/unix/sysv/linux/arm/readelflib.c b/ports/sysdeps/unix/sysv/linux/arm/readelflib.c index e767f9e78f..3efb6134c3 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 <aj@suse.de>, 1999 and Jakub Jelinek <jakub@redhat.com>, 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 43cb9bdb0c..91190aa0cd 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 <aj@suse.de>, 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" |