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.
This commit is contained in:
Wilhelm Eger 2013-05-22 16:33:03 -04:00 committed by Carlos O'Donell
parent 1032040da2
commit 2b863a1b2d
7 changed files with 44 additions and 7 deletions

View File

@ -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.

8
NEWS
View File

@ -4,6 +4,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
@ -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.

View File

@ -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:

View File

@ -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.

View File

@ -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>

View File

@ -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;
}
}

View File

@ -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"