eglibc: Remove older version 2.17

(From OE-Core rev: 14066651cd74724dcb59c10f994f5b2bf38a4745)

Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Saul Wold 2013-12-27 10:13:26 -08:00 committed by Richard Purdie
parent eae54224ab
commit b1f3da93bf
36 changed files with 0 additions and 14307 deletions

View File

@ -1,49 +0,0 @@
SUMMARY = "Cross locale generation tool for eglibc"
HOMEPAGE = "http://www.eglibc.org/home"
SECTION = "libs"
LICENSE = "LGPL-2.1"
LIC_DIR = "${WORKDIR}/eglibc-${PV}/libc"
LIC_FILES_CHKSUM = "file://${LIC_DIR}/LICENSES;md5=e9a558e243b36d3209f380deb394b213 \
file://${LIC_DIR}/COPYING;md5=393a5ca445f6965873eca0259a17f833 \
file://${LIC_DIR}/posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
file://${LIC_DIR}/COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff "
inherit native
inherit autotools
# pick up an eglibc patch
FILESPATH = "${FILE_DIRNAME}/eglibc-${PV}"
SRC_URI = "http://downloads.yoctoproject.org/releases/eglibc/eglibc-${PV}-svnr22064.tar.bz2 \
file://fix_for_centos_5.8.patch;patchdir=.. \
"
SRC_URI[md5sum] = "1464af54779c2c7d1078df9ce2e41791"
SRC_URI[sha256sum] = "97c3991a3772f513cf704841d20c275ac48895fad2e27802dda557c0196cba6b"
S = "${WORKDIR}/eglibc-${PV}/localedef"
do_unpack_append() {
bb.build.exec_func('do_move_ports', d)
}
do_move_ports() {
if test -d ${WORKDIR}/eglibc-${PV}/ports ; then
rm -rf ${WORKDIR}/libc/ports
mv ${WORKDIR}/eglibc-${PV}/ports ${WORKDIR}/libc/
fi
}
EXTRA_OECONF = "--with-glibc=${WORKDIR}/eglibc-${PV}/libc"
CFLAGS += "-DNOT_IN_libc=1"
do_configure () {
${S}/configure ${EXTRA_OECONF}
}
do_install() {
install -d ${D}${bindir}
install -m 0755 ${B}/localedef ${D}${bindir}/cross-localedef
}

View File

@ -1,56 +0,0 @@
Quote from bug 1443 which explains what the patch does :
We build some random program and link it with -lust. When we run it,
it dies with a SIGSEGV before reaching main().
Libust.so depends on liburcu-bp.so from the usermode-rcu package.
Although libust.so is not prelinked, liburcu-bp.so IS prelinked; this
is critical.
Libust.so uses a TLS / __thread variable that is defined in liburcu-
bp.so. There are special ARM-specific relocation types that allow two
shared libraries to share thread-specific data. This is critical too.
One more critical issue: although liburcu-bp.so is prelinked, we can't
load it at its prelinked address, because we also link against
librt.so, and librt.so uses that address.
The dynamic linker is forced to relink liburcu-bp.so at a different
address. In the course of relinking, it processes the special ARM
relocation record mentioned above. The prelinker has already filled
in the information, which is a short offset into a table of thread-
specific data that is allocated per-thread for each library that uses
TLS. Because the normal behavior of a relocation is to add the symbol
value to an addend stored at the address being relocated, we end up
adding the short offset to itself, doubling it.
Now we have an awkward situation. The libust.so library doesn't know
about the addend, so its TLS data for this element is correct. The
liburcu-bp.so library has a different offset for the element. When we
go to initialize the element for the first time in liburcu-bp.so, we
write the address of the result at the doubled (broken) offset.
Later, when we refer to the address from libust.so, we check the value
at the correct offset, but it's NULL, so we eat hot SIGSEGV.
Upstream-Status: Pending
Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com>
---
.../libc/ports/sysdeps/arm/dl-machine.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
ndex 8d905e8..dcfa71e 100644
--- libc.orig/ports/sysdeps/arm/dl-machine.h
+++ libc/ports/sysdeps/arm/dl-machine.h
@@ -503,7 +503,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
case R_ARM_TLS_DTPOFF32:
if (sym != NULL)
- *reloc_addr += sym->st_value;
+ *reloc_addr = sym->st_value;
break;
case R_ARM_TLS_TPOFF32:
--

View File

@ -1,36 +0,0 @@
From 713d822908d1b2ae8403af7f9375c7054ed3dd49 Mon Sep 17 00:00:00 2001
From: Ting Liu <b28495@freescale.com>
Date: Wed, 19 Dec 2012 04:39:57 -0600
Subject: [PATCH] eglibc: run libm-err-tab.pl with specific dirs in ${S}
libm-err-tab.pl will parse all the files named "libm-test-ulps"
in the given dir recursively. To avoid parsing the one in
${S}/.pc/ (it does exist after eglibc adds aarch64 support,
${S}/.pc/aarch64-0001-glibc-fsf-v1-eaf6f205.patch/ports/sysdeps/
aarch64/libm-test-ulps), run libm-err-tab.pl with specific dirs
in ${S}.
Upstream-Status: inappropriate [OE specific]
Signed-off-by: Ting Liu <b28495@freescale.com>
---
manual/Makefile | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/manual/Makefile b/manual/Makefile
index 6fddff0..7af242e 100644
--- a/manual/Makefile
+++ b/manual/Makefile
@@ -109,7 +109,8 @@ $(objpfx)libm-err.texi: $(objpfx)stamp-libm-err
$(objpfx)stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\
$(dir)/libm-test-ulps))
pwd=`pwd`; \
- $(PERL) $< $$pwd/.. > $(objpfx)libm-err-tmp
+ $(PERL) $< $$pwd/../ports > $(objpfx)libm-err-tmp
+ $(PERL) $< $$pwd/../sysdeps >> $(objpfx)libm-err-tmp
$(move-if-change) $(objpfx)libm-err-tmp $(objpfx)libm-err.texi
touch $@
--
1.7.9.7

View File

@ -1,169 +0,0 @@
pulled from
http://www.eglibc.org/archives/patches/msg01043.html
Upstream-Status: Pending
Signed-off-by: Khem
This patch builds on the menuconfig patch for EGLIBC.
There are a few options that have non-boolean types, that would benefit from the new 'make *config' support:
EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE (int)
EGLIBC_NSSWITCH_FIXED_CONFIG (string)
EGLIBC_NSSWITCH_FIXED_FUNCTIONS (string)
The patch converts these to real options in libc/option-groups.def. Also, libc/scripts/option-groups.awk is modified to output a '#define' line for int, hex, or string options encountered in the config file.
In the post-processing script config-postproc.pl, a small change is needed: for any boolean option FOO that is implicitly disabled in the kconfig output, make sure that option is indeed a boolean before printing the explicit OPTION_FOO=n.
Finally, libc/malloc/Makefile passes __OPTION_EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE as a CPPFLAGS, which is not necessary anymore because this macro will now be present in the generated header.
attached is the updated patch to address above issues.
Steve
--
Steve Longerbeam | Senior Embedded Engineer, ESD Services
Mentor Embedded(tm) | 46871 Bayside Parkway, Fremont, CA 94538
P 510.354.5838 | M 408.410.2735
Nucleus(r) | Linux(r) | Android(tm) | Services | UI | Multi-OS
Index: libc/malloc/Makefile
===================================================================
--- libc.orig/malloc/Makefile 2012-01-04 22:06:18.000000000 -0800
+++ libc/malloc/Makefile 2012-05-09 19:35:28.598682105 -0700
@@ -48,10 +48,6 @@
ifeq ($(OPTION_EGLIBC_MEMUSAGE),y)
extra-libs = libmemusage
extra-libs-others = $(extra-libs)
-
-ifdef OPTION_EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE
-CPPFLAGS-memusage += -D__OPTION_EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE=$(OPTION_EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE)
-endif
endif
libmemusage-routines = memusage
Index: libc/option-groups.def
===================================================================
--- libc.orig/option-groups.def 2012-05-09 19:33:48.398677256 -0700
+++ libc/option-groups.def 2012-05-09 19:35:28.610682107 -0700
@@ -513,8 +513,11 @@
the `memusage' and `memusagestat' utilities.
These components provide memory profiling functions.
- EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE
-
+config EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE
+ int "Memory profiling library buffer size"
+ depends on EGLIBC_MEMUSAGE
+ default "32768"
+ help
Libmemusage library buffers the profiling data in memory
before writing it out to disk. By default, the library
allocates 1.5M buffer, which can be substantial for some
@@ -553,8 +556,11 @@
'option-groups.config' file must set the following two
variables:
- EGLIBC_NSSWITCH_FIXED_CONFIG
-
+config EGLIBC_NSSWITCH_FIXED_CONFIG
+ string "Nsswitch fixed config filename"
+ depends on !EGLIBC_NSSWITCH
+ default ""
+ help
Set this to the name of a file whose contents observe the
same syntax as an ordinary '/etc/nsswitch.conf' file. The
EGLIBC build process parses this file just as EGLIBC would
@@ -576,8 +582,11 @@
you will probably want to delete references to databases not
needed on your system.
- EGLIBC_NSSWITCH_FIXED_FUNCTIONS
-
+config EGLIBC_NSSWITCH_FIXED_FUNCTIONS
+ string "Nsswitch fixed functions filename"
+ depends on !EGLIBC_NSSWITCH
+ default ""
+ help
The EGLIBC build process uses this file to decide which
functions to make available from which service libraries.
The file 'nss/fixed-nsswitch.functions' serves as a sample
Index: libc/options-config/config-postproc.pl
===================================================================
--- libc.orig/options-config/config-postproc.pl 2012-05-09 19:33:36.530676681 -0700
+++ libc/options-config/config-postproc.pl 2012-05-09 19:35:28.610682107 -0700
@@ -8,7 +8,7 @@
die "Could not open $ARGV[0]" unless -T $ARGV[0];
sub yank {
- @option = grep($_ ne $_[0], @option);
+ @option = grep(!($_ =~ /$_[0]\s*=/), @option);
}
open(DEFAULTS, $defaults) || die "Could not open $defaults\n";
@@ -16,7 +16,7 @@
# get the full list of available options using the default config file
$i = 0;
while (<DEFAULTS>) {
- if (/^\s*OPTION_(\w+)\s*=/) {
+ if (/^\s*OPTION_(\w+\s*=.*$)/) {
$option[$i++] = $1;
}
}
@@ -35,8 +35,9 @@
s/CONFIG_/OPTION_/g;
print;
} elsif (/^\s*#\s+CONFIG_(\w+) is not set/) {
- # this is a comment line, change CONFIG_ to OPTION_, remove this
- # option from option list, and convert to explicit OPTION_FOO=n
+ # this is a comment line for an unset boolean option, change CONFIG_
+ # to OPTION_, remove this option from option list, and convert to
+ # explicit OPTION_FOO=n
$opt = $1;
yank($opt);
s/CONFIG_/OPTION_/g;
@@ -46,9 +47,12 @@
}
}
-# any options left in @options, are options that were not mentioned in
+# any boolean options left in @options, are options that were not mentioned in
# the config file, and implicitly that means the option must be set =n,
# so do that here.
foreach $opt (@option) {
- print "OPTION_$opt=n\n";
+ if ($opt =~ /=\s*[yn]/) {
+ $opt =~ s/=\s*[yn]/=n/;
+ print "OPTION_$opt\n";
+ }
}
Index: libc/scripts/option-groups.awk
===================================================================
--- libc.orig/scripts/option-groups.awk 2012-01-04 22:06:00.000000000 -0800
+++ libc/scripts/option-groups.awk 2012-05-09 19:35:28.610682107 -0700
@@ -46,9 +46,15 @@
print "#define __" var " 1"
else if (vars[var] == "n")
print "/* #undef __" var " */"
- # Ignore variables that don't have boolean values.
- # Ideally, this would be driven by the types given in
- # option-groups.def.
+ else if (vars[var] ~ /^[0-9]+/ ||
+ vars[var] ~ /^0x[0-9aAbBcCdDeEfF]+/ ||
+ vars[var] ~ /^\"/)
+ print "#define __" var " " vars[var]
+ else
+ print "/* #undef __" var " */"
+ # Ignore variables that don't have boolean, int, hex, or
+ # string values. Ideally, this would be driven by the types
+ # given in option-groups.def.
}
}

View File

@ -1,176 +0,0 @@
Pulled from
http://www.eglibc.org/archives/patches/msg01035.html
Upstream-Status: Pending
Signed-off-by: Khem
As part of the menuconfig development, I encountered some outdated information in the cross-build instructions, libc/EGLIBC.cross-building. This patch updates the file with new (and tested) instructions. It is unrelated to the menuconfig support, but applies after.
My testing was done with an ARM target, and an x86_64 Linux host, so I converted the instructions to use those host/target types from the original i686/powerpc. Hope that's ok.
Thanks,
--
Steve Longerbeam | Senior Embedded Engineer, ESD Services
Mentor Embedded(tm) | 46871 Bayside Parkway, Fremont, CA 94538
P 510.354.5838 | M 408.410.2735
Nucleus(r) | Linux(r) | Android(tm) | Services | UI | Multi-OS
EGLIBC.cross-building | 59 +++++++++++++++++++++++++++++---------------------
1 file changed, 35 insertions(+), 24 deletions(-)
Index: libc/EGLIBC.cross-building
===================================================================
--- libc.orig/EGLIBC.cross-building 2012-05-09 19:33:36.522676681 -0700
+++ libc/EGLIBC.cross-building 2012-05-09 19:36:13.918684298 -0700
@@ -47,31 +47,34 @@
EGLIBC requires recent versions of the GNU binutils, GCC, and the
Linux kernel. The web page <http://www.eglibc.org/prerequisites>
documents the current requirements, and lists patches needed for
-certain target architectures. As of this writing, EGLIBC required
-binutils 2.17, GCC 4.1, and Linux 2.6.19.1.
+certain target architectures. As of this writing, these build
+instructions have been tested with binutils 2.22.51, GCC 4.6.2,
+and Linux 3.1.
First, let's set some variables, to simplify later commands. We'll
-build EGLIBC and GCC for a PowerPC target, known to the Linux kernel
-as 'powerpc', and we'll do the build on an Intel Linux box:
+build EGLIBC and GCC for an ARM target, known to the Linux kernel
+as 'arm', and we'll do the build on an Intel x86_64 Linux box:
- $ build=i686-pc-linux-gnu
+ $ build=x86_64-pc-linux-gnu
$ host=$build
- $ target=powerpc-none-linux-gnu
- $ linux_arch=powerpc
+ $ target=arm-none-linux-gnueabi
+ $ linux_arch=arm
We're using the aforementioned versions of Binutils, GCC, and Linux:
- $ binutilsv=binutils-2.17
- $ gccv=gcc-4.1.1
- $ linuxv=linux-2.6.20
+ $ binutilsv=binutils-2.22.51
+ $ gccv=gcc-4.6.2
+ $ linuxv=linux-3.1
We're carrying out the entire process under '~/cross-build', which
-contains unpacked source trees:
+contains unpacked source trees for binutils, gcc, and linux kernel,
+along with EGLIBC svn trunk (which can be checked-out with
+'svn co http://www.eglibc.org/svn/trunk eglibc'):
- $ top=$HOME/cross-build/ppc
+ $ top=$HOME/cross-build/$target
$ src=$HOME/cross-build/src
$ ls $src
- binutils-2.17 gcc-4.1.1 libc linux-2.6.20
+ binutils-2.22.51 eglibc gcc-4.6.2 linux-3.1
We're going to place our build directories in a subdirectory 'obj',
we'll install the cross-development toolchain in 'tools', and we'll
@@ -99,7 +102,7 @@
The First GCC
-For our work, we need a cross-compiler targeting a PowerPC Linux
+For our work, we need a cross-compiler targeting an ARM Linux
system. However, that configuration includes the shared library
'libgcc_s.so', which is compiled against the EGLIBC headers (which we
haven't installed yet) and linked against 'libc.so' (which we haven't
@@ -125,7 +128,8 @@
> --prefix=$tools \
> --without-headers --with-newlib \
> --disable-shared --disable-threads --disable-libssp \
- > --disable-libgomp --disable-libmudflap \
+ > --disable-libgomp --disable-libmudflap --disable-libquadmath \
+ > --disable-decimal-float --disable-libffi \
> --enable-languages=c
$ PATH=$tools/bin:$PATH make
$ PATH=$tools/bin:$PATH make install
@@ -162,12 +166,13 @@
> CXX=$tools/bin/$target-g++ \
> AR=$tools/bin/$target-ar \
> RANLIB=$tools/bin/$target-ranlib \
- > $src/libc/configure \
+ > $src/eglibc/libc/configure \
> --prefix=/usr \
> --with-headers=$sysroot/usr/include \
> --build=$build \
> --host=$target \
- > --disable-profile --without-gd --without-cvs --enable-add-ons
+ > --disable-profile --without-gd --without-cvs \
+ > --enable-add-ons=nptl,libidn,../ports
The option '--prefix=/usr' may look strange, but you should never
configure EGLIBC with a prefix other than '/usr': in various places,
@@ -181,6 +186,11 @@
The '--with-headers' option tells EGLIBC where the Linux headers have
been installed.
+The '--enable-add-ons=nptl,libidn,../ports' option tells EGLIBC to look
+for the listed glibc add-ons. Most notably the ports add-on (located
+just above the libc sources in the EGLIBC svn tree) is required to
+support ARM targets.
+
We can now use the 'install-headers' makefile target to install the
headers:
@@ -223,6 +233,7 @@
> --prefix=$tools \
> --with-sysroot=$sysroot \
> --disable-libssp --disable-libgomp --disable-libmudflap \
+ > --disable-libffi --disable-libquadmath \
> --enable-languages=c
$ PATH=$tools/bin:$PATH make
$ PATH=$tools/bin:$PATH make install
@@ -240,13 +251,14 @@
> CXX=$tools/bin/$target-g++ \
> AR=$tools/bin/$target-ar \
> RANLIB=$tools/bin/$target-ranlib \
- > $src/libc/configure \
+ > $src/eglibc/libc/configure \
> --prefix=/usr \
> --with-headers=$sysroot/usr/include \
> --with-kconfig=$obj/linux/scripts/kconfig \
> --build=$build \
> --host=$target \
- > --disable-profile --without-gd --without-cvs --enable-add-ons
+ > --disable-profile --without-gd --without-cvs \
+ > --enable-add-ons=nptl,libidn,../ports
Note the additional '--with-kconfig' option. This tells EGLIBC where to
find the host config tools used by the kernel 'make config' and 'make
@@ -337,15 +349,15 @@
ELF Header:
...
Type: EXEC (Executable file)
- Machine: PowerPC
+ Machine: ARM
...
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000034 0x10000034 0x10000034 0x00100 0x00100 R E 0x4
- INTERP 0x000134 0x10000134 0x10000134 0x0000d 0x0000d R 0x1
- [Requesting program interpreter: /lib/ld.so.1]
- LOAD 0x000000 0x10000000 0x10000000 0x008f0 0x008f0 R E 0x10000
+ INTERP 0x000134 0x00008134 0x00008134 0x00013 0x00013 R 0x1
+ [Requesting program interpreter: /lib/ld-linux.so.3]
+ LOAD 0x000000 0x00008000 0x00008000 0x0042c 0x0042c R E 0x8000
...
Looking at the dynamic section of the installed 'libgcc_s.so', we see
@@ -357,7 +369,6 @@
Dynamic section at offset 0x1083c contains 24 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libc.so.6]
- 0x00000001 (NEEDED) Shared library: [ld.so.1]
0x0000000e (SONAME) Library soname: [libgcc_s.so.1]
...

View File

@ -1,143 +0,0 @@
Its controlled by __OPTION_EGLIBC_RTLD_DEBUG
so we should use GLRO_dl_debug_mask
Singed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
Index: libc/elf/dl-open.c
===================================================================
--- libc.orig/elf/dl-open.c 2012-10-25 10:18:12.000000000 -0700
+++ libc/elf/dl-open.c 2013-01-09 11:49:02.635577870 -0800
@@ -155,7 +155,7 @@
ns->_ns_main_searchlist->r_list[new_nlist++] = map;
/* We modify the global scope. Report this. */
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES, 0))
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_SCOPES, 0))
_dl_debug_printf ("\nadd %s [%lu] to global scope\n",
map->l_name, map->l_ns);
}
@@ -298,7 +298,7 @@
LIBC_PROBE (map_complete, 3, args->nsid, r, new);
/* Print scope information. */
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES, 0))
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_SCOPES, 0))
_dl_show_scope (new, 0);
/* Only do lazy relocation if `LD_BIND_NOW' is not set. */
@@ -515,7 +515,7 @@
}
/* Print scope information. */
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES, 0))
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_SCOPES, 0))
_dl_show_scope (imap, from_scope);
}
Index: libc/ports/sysdeps/mips/dl-lookup.c
===================================================================
--- libc.orig/ports/sysdeps/mips/dl-lookup.c 2012-08-17 12:39:53.000000000 -0700
+++ libc/ports/sysdeps/mips/dl-lookup.c 2013-01-09 11:49:02.635577870 -0800
@@ -111,7 +111,7 @@
continue;
/* Print some debugging info if wanted. */
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SYMBOLS, 0))
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_SYMBOLS, 0))
_dl_debug_printf ("symbol=%s; lookup in file=%s [%lu]\n",
undef_name,
map->l_name[0] ? map->l_name : rtld_progname,
@@ -432,7 +432,7 @@
hash table. */
if (__builtin_expect (tab->size, 0))
{
- assert (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK);
+ assert (GLRO_dl_debug_mask & DL_DEBUG_PRELINK);
__rtld_lock_unlock_recursive (tab->lock);
goto success;
}
@@ -681,7 +681,7 @@
}
/* Display information if we are debugging. */
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0))
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_FILES, 0))
_dl_debug_printf ("\
\nfile=%s [%lu]; needed by %s [%lu] (relocation dependency)\n\n",
map->l_name[0] ? map->l_name : rtld_progname,
@@ -788,7 +788,7 @@
{
if ((*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK)
&& skip_map == NULL
- && !(GLRO(dl_debug_mask) & DL_DEBUG_UNUSED))
+ && !(GLRO_dl_debug_mask & DL_DEBUG_UNUSED))
{
/* We could find no value for a strong reference. */
const char *reference_name = undef_map ? undef_map->l_name : "";
@@ -861,7 +861,7 @@
if (__builtin_expect (current_value.m->l_used == 0, 0))
current_value.m->l_used = 1;
- if (__builtin_expect (GLRO(dl_debug_mask)
+ if (__builtin_expect (GLRO_dl_debug_mask
& (DL_DEBUG_BINDINGS|DL_DEBUG_PRELINK), 0))
_dl_debug_bindings (undef_name, undef_map, ref,
&current_value, version, type_class, protected);
@@ -926,7 +926,7 @@
{
const char *reference_name = undef_map->l_name;
- if (GLRO(dl_debug_mask) & DL_DEBUG_BINDINGS)
+ if (GLRO_dl_debug_mask & DL_DEBUG_BINDINGS)
{
_dl_debug_printf ("binding file %s [%lu] to %s [%lu]: %s symbol `%s'",
(reference_name[0]
@@ -942,7 +942,7 @@
_dl_debug_printf_c ("\n");
}
#ifdef SHARED
- if (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK)
+ if (GLRO_dl_debug_mask & DL_DEBUG_PRELINK)
{
int conflict = 0;
struct sym_val val = { NULL, NULL };
Index: libc/elf/rtld.c
===================================================================
--- libc.orig/elf/rtld.c 2012-10-10 08:35:46.000000000 -0700
+++ libc/elf/rtld.c 2013-01-09 11:49:02.635577870 -0800
@@ -2118,7 +2118,7 @@
GLRO(dl_init_all_dirs) = GL(dl_all_dirs);
/* Print scope information. */
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES, 0))
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_SCOPES, 0))
{
_dl_debug_printf ("\nInitial object scopes\n");
Index: libc/elf/dl-lookup.c
===================================================================
--- libc.orig/elf/dl-lookup.c 2012-08-17 12:39:53.000000000 -0700
+++ libc/elf/dl-lookup.c 2013-01-09 11:49:02.635577870 -0800
@@ -771,7 +771,7 @@
{
if ((*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK)
&& skip_map == NULL
- && !(GLRO(dl_debug_mask) & DL_DEBUG_UNUSED))
+ && !(GLRO_dl_debug_mask & DL_DEBUG_UNUSED))
{
/* We could find no value for a strong reference. */
const char *reference_name = undef_map ? undef_map->l_name : "";
Index: libc/elf/get-dynamic-info.h
===================================================================
--- libc.orig/elf/get-dynamic-info.h 2012-12-02 13:11:45.000000000 -0800
+++ libc/elf/get-dynamic-info.h 2013-01-09 12:53:51.015657653 -0800
@@ -157,7 +157,7 @@
them. Therefore to avoid breaking existing applications the
best we can do is add a warning during debugging with the
intent of notifying the user of the problem. */
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0)
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_FILES, 0)
&& l->l_flags_1 & ~DT_1_SUPPORTED_MASK)
_dl_debug_printf ("\nWARNING: Unsupported flag value(s) of 0x%x in DT_FLAGS_1.\n",
l->l_flags_1 & ~DT_1_SUPPORTED_MASK);

View File

@ -1,17 +0,0 @@
import http://sourceware.org/ml/libc-ports/2007-12/msg00000.html
Upstream-Status: Pending
Index: libc/bits/stdio-lock.h
===================================================================
--- libc.orig/bits/stdio-lock.h 2009-10-28 14:34:19.000000000 -0700
+++ libc/bits/stdio-lock.h 2009-10-28 14:34:54.000000000 -0700
@@ -50,6 +50,8 @@ __libc_lock_define_recursive (typedef, _
_IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \
_IO_flockfile (_fp)
+# define _IO_acquire_lock_clear_flags2(_fp) _IO_acquire_lock (_fp)
+
# define _IO_release_lock(_fp) \
_IO_funlockfile (_fp); \
_IO_cleanup_region_end (0)

View File

@ -1,20 +0,0 @@
The older versions of perf still require sys/resource.h to be
present in this header, the newer version of perf in 3.2 and
beyond directly include sys/resource.h
Upstream-Status: Inapproriate [older kernel/perf specific]
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Index: libc/posix/sys/wait.h
===================================================================
--- libc.orig/posix/sys/wait.h
+++ libc/posix/sys/wait.h
@@ -28,6 +28,7 @@
__BEGIN_DECLS
#include <signal.h>
+#include <sys/resource.h>
/* These macros could also be defined in <stdlib.h>. */
#if !defined _STDLIB_H || (!defined __USE_XOPEN && !defined __USE_XOPEN2K8)

View File

@ -1,207 +0,0 @@
Index: libc/NEWS
===================================================================
--- libc/NEWS (revision 22242)
+++ libc/NEWS (revision 22243)
@@ -23,7 +23,7 @@
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.
+ 14889, 14893, 14898, 14914, 15003.
* Optimization of memcpy for MIPS.
Index: libc/ChangeLog
===================================================================
--- libc/ChangeLog (revision 22242)
+++ libc/ChangeLog (revision 22243)
@@ -1,3 +1,29 @@
+2013-01-11 Andreas Jaeger <aj@suse.de>
+
+ [BZ #15003]
+ * sysdeps/unix/sysv/linux/bits/socket.h (MSG_FASTOPEN): New
+ value. Sync with Linux 3.7.
+
+2013-01-09 David S. Miller <davem@davemloft.net>
+
+ [BZ# 15003]
+ * sysdeps/gnu/netinet/tcp.h (TCP_COOKIE_TRANSACTIONS,
+ TCP_THIN_LINEAR_TIMEOUTS, TCP_THIN_DUPACK, TCP_USER_TIMEOUT,
+ TCP_REPAIR, TCP_REPAIR_QUEUE, TCP_QUEUE_SEQ, TCP_REPAIR_OPTIONS,
+ TCP_FASTOPEN): Define.
+ (tcp_repair_opt): New structure.
+ (TCP_NO_QUEUE, TCP_RECV_QUEUE, TCP_SEND_QUEUE, TCP_QUEUES_NR): New
+ enum values.
+ (TCP_COOKIE_MIN, TCP_COOKIE_MAX, TCP_COOKIE_PAIR_SIZE,
+ TCP_COOKIE_IN_ALWAYS, TCP_COOKIE_OUT_NEVER, TCP_S_DATA_IN,
+ TCP_S_DATA_OUT, TCP_MSS_DEFAULT, TCP_MSS_DESIRED): Define.
+ (tcp_cookie_transactions): New structure.
+
+2013-01-09 Andreas Jaeger <aj@suse.de>
+
+ * sysdeps/gnu/netinet/tcp.h (TCPI_OPT_SYN_DATA)
+ (TCPI_OPT_ECN_SEEN): Define. Sync with Linux 3.7.
+
2013-01-01 David S. Miller <davem@davemloft.net>
* po/fr.po: Update from translation team.
Index: libc/sysdeps/unix/sysv/linux/bits/socket.h
===================================================================
--- libc/sysdeps/unix/sysv/linux/bits/socket.h (revision 22242)
+++ libc/sysdeps/unix/sysv/linux/bits/socket.h (revision 22243)
@@ -1,6 +1,5 @@
/* System-specific socket constants and types. Linux version.
- Copyright (C) 1991, 1992, 1994-2001, 2004, 2006-2010, 2011, 2012
- Free Software Foundation, Inc.
+ Copyright (C) 1991-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
@@ -208,6 +207,8 @@
#define MSG_MORE MSG_MORE
MSG_WAITFORONE = 0x10000, /* Wait for at least one packet to return.*/
#define MSG_WAITFORONE MSG_WAITFORONE
+ MSG_FASTOPEN = 0x20000000, /* Send data in TCP SYN. */
+#define MSG_FASTOPEN MSG_FASTOPEN
MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file
descriptor received through
Index: libc/sysdeps/gnu/netinet/tcp.h
===================================================================
--- libc/sysdeps/gnu/netinet/tcp.h (revision 22242)
+++ libc/sysdeps/gnu/netinet/tcp.h (revision 22243)
@@ -37,20 +37,29 @@
/*
* User-settable options (used with setsockopt).
*/
-#define TCP_NODELAY 1 /* Don't delay send to coalesce packets */
-#define TCP_MAXSEG 2 /* Set maximum segment size */
-#define TCP_CORK 3 /* Control sending of partial frames */
-#define TCP_KEEPIDLE 4 /* Start keeplives after this period */
-#define TCP_KEEPINTVL 5 /* Interval between keepalives */
-#define TCP_KEEPCNT 6 /* Number of keepalives before death */
-#define TCP_SYNCNT 7 /* Number of SYN retransmits */
-#define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */
-#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */
-#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */
-#define TCP_INFO 11 /* Information about this connection. */
-#define TCP_QUICKACK 12 /* Bock/reenable quick ACKs. */
-#define TCP_CONGESTION 13 /* Congestion control algorithm. */
-#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */
+#define TCP_NODELAY 1 /* Don't delay send to coalesce packets */
+#define TCP_MAXSEG 2 /* Set maximum segment size */
+#define TCP_CORK 3 /* Control sending of partial frames */
+#define TCP_KEEPIDLE 4 /* Start keeplives after this period */
+#define TCP_KEEPINTVL 5 /* Interval between keepalives */
+#define TCP_KEEPCNT 6 /* Number of keepalives before death */
+#define TCP_SYNCNT 7 /* Number of SYN retransmits */
+#define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */
+#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */
+#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */
+#define TCP_INFO 11 /* Information about this connection. */
+#define TCP_QUICKACK 12 /* Bock/reenable quick ACKs. */
+#define TCP_CONGESTION 13 /* Congestion control algorithm. */
+#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */
+#define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */
+#define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/
+#define TCP_THIN_DUPACK 17 /* Fast retrans. after 1 dupack */
+#define TCP_USER_TIMEOUT 18 /* How long for loss retry before timeout */
+#define TCP_REPAIR 19 /* TCP sock is under repair right now */
+#define TCP_REPAIR_QUEUE 20 /* Set TCP queue to repair */
+#define TCP_QUEUE_SEQ 21 /* Set sequence number of repaired queue. */
+#define TCP_REPAIR_OPTIONS 22 /* Repair TCP connection options */
+#define TCP_FASTOPEN 23 /* Enable FastOpen on listeners */
#ifdef __USE_MISC
# include <sys/types.h>
@@ -173,7 +182,9 @@
# define TCPI_OPT_TIMESTAMPS 1
# define TCPI_OPT_SACK 2
# define TCPI_OPT_WSCALE 4
-# define TCPI_OPT_ECN 8
+# define TCPI_OPT_ECN 8 /* ECN was negociated at TCP session init */
+# define TCPI_OPT_ECN_SEEN 16 /* we received at least one packet with ECT */
+# define TCPI_OPT_SYN_DATA 32 /* SYN-ACK acked data in SYN sent or rcvd */
/* Values for tcpi_state. */
enum tcp_ca_state
@@ -241,6 +252,49 @@
u_int8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; /* Key (binary). */
};
+/* For socket repair options. */
+struct tcp_repair_opt
+{
+ u_int32_t opt_code;
+ u_int32_t opt_val;
+};
+
+/* Queue to repair, for TCP_REPAIR_QUEUE. */
+enum
+{
+ TCP_NO_QUEUE,
+ TCP_RECV_QUEUE,
+ TCP_SEND_QUEUE,
+ TCP_QUEUES_NR,
+};
+
+/* For cookie transactions socket options. */
+#define TCP_COOKIE_MIN 8 /* 64-bits */
+#define TCP_COOKIE_MAX 16 /* 128-bits */
+#define TCP_COOKIE_PAIR_SIZE (2*TCP_COOKIE_MAX)
+
+/* Flags for both getsockopt and setsockopt */
+#define TCP_COOKIE_IN_ALWAYS (1 << 0) /* Discard SYN without cookie */
+#define TCP_COOKIE_OUT_NEVER (1 << 1) /* Prohibit outgoing cookies,
+ * supercedes everything. */
+
+/* Flags for getsockopt */
+#define TCP_S_DATA_IN (1 << 2) /* Was data received? */
+#define TCP_S_DATA_OUT (1 << 3) /* Was data sent? */
+
+#define TCP_MSS_DEFAULT 536U /* IPv4 (RFC1122, RFC2581) */
+#define TCP_MSS_DESIRED 1220U /* IPv6 (tunneled), EDNS0 (RFC3226) */
+
+struct tcp_cookie_transactions
+{
+ u_int16_t tcpct_flags;
+ u_int8_t __tcpct_pad1;
+ u_int8_t tcpct_cookie_desired;
+ u_int16_t tcpct_s_data_desired;
+ u_int16_t tcpct_used;
+ u_int8_t tcpct_value[TCP_MSS_DEFAULT];
+};
+
#endif /* Misc. */
#endif /* netinet/tcp.h */
Property changes on: libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/c++-types.data
___________________________________________________________________
Modified: svn:mergeinfo
Merged /fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/c++-types.data:r22178-22242
Property changes on: libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/localplt.data
___________________________________________________________________
Modified: svn:mergeinfo
Merged /fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/single/nptl/localplt.data:r22178-22242
Property changes on: libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/c++-types.data
___________________________________________________________________
Modified: svn:mergeinfo
Merged /fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/c++-types.data:r22178-22242
Property changes on: libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/localplt.data
___________________________________________________________________
Modified: svn:mergeinfo
Merged /fsf/glibc-2_17-branch/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500/nptl/localplt.data:r22178-22242
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
Merged /fsf/glibc-2_17-branch:r22178-22242

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +0,0 @@
In file included from ../nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c:21:
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c: In function '__lll_lock_wait_private':
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:34: warning: implicit declaration of function 'THREAD_GETMEM'
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:34: error: 'THREAD_SELF' undeclared (first use in this function)
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:34: error: (Each undeclared identifier is reported only once
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:34: error: for each function it appears in.)
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:34: error: 'header' undeclared (first use in this function)
make[4]: *** [/var/tmp/portage/sys-libs/glibc-2.7-r1/work/build-default-armv4l-unknown-linux-gnu-nptl/nptl/rtld-libc-lowlevellock.os] Error 1
Upstream-Status: Pending
--- libc/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h.orig
+++ libc/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
@@ -25,6 +25,7 @@
#include <atomic.h>
#include <sysdep.h>
#include <kernel-features.h>
+#include <tls.h>
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1

View File

@ -1,38 +0,0 @@
Upstream-Status: backport
Imported patch from: http://www.eglibc.org/archives/patches/msg01124.html
Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
2012/05/09
Index: libc/posix/xregex.c
===================================================================
--- libc.orig/posix/xregex.c
+++ libc/posix/xregex.c
@@ -2943,7 +2943,7 @@ PREFIX(regex_compile) (const char *ARG_P
_NL_CURRENT (LC_COLLATE,
_NL_COLLATE_INDIRECTWC);
- idx = findidx ((const wint_t**)&cp);
+ idx = findidx ((const wint_t**)&cp, -1);
if (idx == 0 || cp < (wint_t*) str + c1)
/* This is no valid character. */
FREE_STACK_RETURN (REG_ECOLLATE);
@@ -3392,7 +3392,7 @@ PREFIX(regex_compile) (const char *ARG_P
indirect = (const int32_t *)
_NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB);
- idx = findidx (&cp);
+ idx = findidx (&cp, -1);
if (idx == 0 || cp < str + c1)
/* This is no valid character. */
FREE_STACK_RETURN (REG_ECOLLATE);
@@ -6363,7 +6363,7 @@ byte_re_match_2_internal (struct re_patt
}
str_buf[i] = TRANSLATE(*(d+i));
str_buf[i+1] = '\0'; /* sentinel */
- idx2 = findidx ((const wint_t**)&cp);
+ idx2 = findidx ((const wint_t**)&cp, -1);
}
/* Update d, however d will be incremented at

View File

@ -1,22 +0,0 @@
Fix error like
/home/kraj/work/angstrom/sources/openembedded-core/build/tmp-eglibc/work/mips64-oe-linux/eglibc-2.16-r2+svnr19383/build-mips64-oe-linux/libc_pic.os: In function `_IO_new_file_fopen':
/home/kraj/work/angstrom/sources/openembedded-core/build/tmp-eglibc/work/mips64-oe-linux/eglibc-2.16-r2+svnr19383/eglibc-2_16/libc/libio/fileops.c:431: undefined reference to `_IO_file_close_it_internal'
collect2: error: ld returned 1 exit status
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
Index: libc/libio/fileops.c
===================================================================
--- libc.orig/libio/fileops.c 2012-07-04 18:25:47.000000000 -0700
+++ libc/libio/fileops.c 2012-07-24 00:21:17.220322557 -0700
@@ -428,7 +428,7 @@
result->_mode = 1;
#else
/* Treat this as if we couldn't find the given character set. */
- (void) INTUSE(_IO_file_close_it) (fp);
+ (void) _IO_file_close_it (fp);
__set_errno (EINVAL);
return NULL;
#endif

View File

@ -1,38 +0,0 @@
cross localedef fails to compile these locales because name_fmt field is empty
It is not acceptable for cross localedef and it errors out
LC_NAME: field `name_fmt' not defined
We therefore give a dummy string to the format, the real fix needs some native
tibetian person to define proper name_fmt
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Index: libc/localedata/locales/bo_CN
===================================================================
--- libc.orig/localedata/locales/bo_CN 2012-11-17 09:50:14.000000000 -0800
+++ libc/localedata/locales/bo_CN 2013-01-04 08:55:15.593612288 -0800
@@ -145,7 +145,7 @@
LC_NAME
% FIXME
-name_fmt ""
+name_fmt "FIXME"
% name_gen "FIXME"
% name_miss "FIXME"
% name_mr "FIXME"
Index: libc/localedata/locales/bo_IN
===================================================================
--- libc.orig/localedata/locales/bo_IN 2012-11-17 09:50:14.000000000 -0800
+++ libc/localedata/locales/bo_IN 2013-01-04 08:54:12.345609028 -0800
@@ -70,7 +70,7 @@
LC_NAME
% FIXME
-name_fmt ""
+name_fmt "FIXME"
% name_gen "FIXME"
% name_miss "FIXME"
% name_mr "FIXME"

View File

@ -1,18 +0,0 @@
Upstream-Status: Inappropriate [other]
This is a hack to fix building the locale bits on an older
CentOs 5.X machine
Index: eglibc-2_16/libc/locale/programs/config.h
===================================================================
--- eglibc-2_16.orig/libc/locale/programs/config.h
+++ eglibc-2_16/libc/locale/programs/config.h
@@ -19,6 +19,8 @@
#ifndef _LD_CONFIG_H
#define _LD_CONFIG_H 1
+#define DUMMY_LOCALE_T
+
/* Use the internal textdomain used for libc messages. */
#define PACKAGE _libc_intl_domainname
#ifndef VERSION

View File

@ -1,100 +0,0 @@
Create e5500 specific math_private.h and let it include when compiling for e5500/64bit core
We prefefine __CPU_HAS_FSQRT to 0 and then in general ppc64 math_private.h we check if its
already defined before redefining it. This way we can ensure that on e5500 builds it wont
emit fsqrt intructions
-Khem
Upstream-Status: Pending
Index: libc/sysdeps/powerpc/fpu/math_private.h
===================================================================
--- libc.orig/sysdeps/powerpc/fpu/math_private.h
+++ libc/sysdeps/powerpc/fpu/math_private.h
@@ -25,10 +25,12 @@
#include <dl-procinfo.h>
#include_next <math_private.h>
-# if __WORDSIZE == 64 || defined _ARCH_PWR4
-# define __CPU_HAS_FSQRT 1
-# else
-# define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
+# ifndef __CPU_HAS_FSQRT
+# if __WORDSIZE == 64 || defined _ARCH_PWR4
+# define __CPU_HAS_FSQRT 1
+# else
+# define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
+# endif
# endif
extern double __slow_ieee754_sqrt (double);
Index: libc/ports/sysdeps/powerpc/powerpc64/e5500/fpu/math_private.h
===================================================================
--- /dev/null
+++ libc/ports/sysdeps/powerpc/powerpc64/e5500/fpu/math_private.h
@@ -0,0 +1,9 @@
+#ifndef _E5500_MATH_PRIVATE_H_
+#define _E5500_MATH_PRIVATE_H_ 1
+/* E5500 core FPU does not implement
+ fsqrt */
+
+#define __CPU_HAS_FSQRT 0
+#include_next <math_private.h>
+
+#endif /* _E5500_MATH_PRIVATE_H_ */
Index: libc/ports/sysdeps/powerpc/powerpc64/e6500/fpu/math_private.h
===================================================================
--- /dev/null
+++ libc/ports/sysdeps/powerpc/powerpc64/e6500/fpu/math_private.h
@@ -0,0 +1,9 @@
+#ifndef _E6500_MATH_PRIVATE_H_
+#define _E6500_MATH_PRIVATE_H_ 1
+/* E6500 core FPU does not implement
+ fsqrt */
+
+#define __CPU_HAS_FSQRT 0
+#include_next <math_private.h>
+
+#endif /* _E6500_MATH_PRIVATE_H_ */
Index: libc/ports/sysdeps/powerpc/powerpc32/e500mc/fpu/math_private.h
===================================================================
--- /dev/null
+++ libc/ports/sysdeps/powerpc/powerpc32/e500mc/fpu/math_private.h
@@ -0,0 +1,9 @@
+#ifndef _E500MC_MATH_PRIVATE_H_
+#define _E500MC_MATH_PRIVATE_H_ 1
+/* E500MC core FPU does not implement
+ fsqrt */
+
+#define __CPU_HAS_FSQRT 0
+#include_next <math_private.h>
+
+#endif /* _E500MC_MATH_PRIVATE_H_ */
Index: libc/ports/sysdeps/powerpc/powerpc32/e5500/fpu/math_private.h
===================================================================
--- /dev/null
+++ libc/ports/sysdeps/powerpc/powerpc32/e5500/fpu/math_private.h
@@ -0,0 +1,9 @@
+#ifndef _E5500_MATH_PRIVATE_H_
+#define _E5500_MATH_PRIVATE_H_ 1
+/* E5500 core FPU does not implement
+ fsqrt */
+
+#define __CPU_HAS_FSQRT 0
+#include_next <math_private.h>
+
+#endif /* _E5500_MATH_PRIVATE_H_ */
Index: libc/ports/sysdeps/powerpc/powerpc32/e6500/fpu/math_private.h
===================================================================
--- /dev/null
+++ libc/ports/sysdeps/powerpc/powerpc32/e6500/fpu/math_private.h
@@ -0,0 +1,9 @@
+#ifndef _E6500_MATH_PRIVATE_H_
+#define _E6500_MATH_PRIVATE_H_ 1
+/* E6500 core FPU does not implement
+ fsqrt */
+
+#define __CPU_HAS_FSQRT 0
+#include_next <math_private.h>
+
+#endif /* _E6500_MATH_PRIVATE_H_ */

View File

@ -1,11 +0,0 @@
#!/usr/bin/make
include $(IN)
all:
rm -f $(OUT)
touch $(OUT)
for locale in $(SUPPORTED-LOCALES); do \
[ $$locale = true ] && continue; \
echo $$locale | sed 's,/, ,' >> $(OUT); \
done

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +0,0 @@
This is needed since initgroups belongs to NET group
so when NET is disabled in eglibc build then it reports
as undefined symbol
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
Index: libc/nss/getent.c
===================================================================
--- libc.orig/nss/getent.c 2012-03-09 09:41:57.099581559 -0800
+++ libc/nss/getent.c 2012-03-09 09:42:13.095582334 -0800
@@ -898,7 +898,7 @@
D(group)
D(gshadow)
DN(hosts)
-D(initgroups)
+DN(initgroups)
DN(netgroup)
DN(networks)
D(passwd)

View File

@ -1,56 +0,0 @@
Upstream-Status: Inappropriate [embedded specific]
The default lib search path order is:
1) LD_LIBRARY_PATH
2) RPATH from the binary
3) ld.so.cache
4) default search paths embedded in the linker
For nativesdk binaries which are being used alongside binaries on a host system, we
need the search paths to firstly search the shipped nativesdk libs but then also
cover the host system. For example we want the host system's libGL and this may be
in a non-standard location like /usr/lib/mesa. The only place the location is know
about is in the ld.so.cache of the host system.
Since nativesdk has a simple structure and doesn't need to use a cache itself, we
repurpose the cache for use as a last resort in finding host system binaries. This
means we need to switch the order of 3 and 4 above to make this work effectively.
RP 14/10/2010
Index: libc/elf/dl-load.c
===================================================================
--- libc.orig/elf/dl-load.c 2012-12-02 13:11:45.000000000 -0800
+++ libc/elf/dl-load.c 2013-01-09 07:00:59.135223084 -0800
@@ -2215,7 +2215,14 @@
fd = open_path (name, namelen, mode & __RTLD_SECURE,
&loader->l_runpath_dirs, &realname, &fb, loader,
LA_SER_RUNPATH, &found_other_class);
-
+ /* try the default path. */
+ if (fd == -1
+ && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL
+ || __builtin_expect (!(l->l_flags_1 & DF_1_NODEFLIB), 1))
+ && rtld_search_dirs.dirs != (void *) -1)
+ fd = open_path (name, namelen, mode & __RTLD_SECURE, &rtld_search_dirs,
+ &realname, &fb, l, LA_SER_DEFAULT, &found_other_class);
+ /* Finally try ld.so.cache */
#ifdef USE_LDCONFIG
if (fd == -1
&& (__builtin_expect (! (mode & __RTLD_SECURE), 1)
@@ -2283,14 +2290,6 @@
}
#endif
- /* Finally, try the default path. */
- if (fd == -1
- && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL
- || __builtin_expect (!(l->l_flags_1 & DF_1_NODEFLIB), 1))
- && rtld_search_dirs.dirs != (void *) -1)
- fd = open_path (name, namelen, mode & __RTLD_SECURE, &rtld_search_dirs,
- &realname, &fb, l, LA_SER_DEFAULT, &found_other_class);
-
/* Add another newline when we are tracing the library loading. */
if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_LIBS, 0))
_dl_debug_printf ("\n");

View File

@ -1,31 +0,0 @@
Accept make versions 4.0 and greater
Backport of glibc 28d708c44bc47b56f6551ff285f78edcf61c208a.
Upstream-Status: Backport
Signed-off-by: Jonathan Liu <net147@gmail.com>
diff -Nur libc.orig/configure libc/configure
--- libc.orig/configure 2012-12-03 08:11:45.000000000 +1100
+++ libc/configure 2013-11-04 17:15:31.344984184 +1100
@@ -4995,7 +4995,7 @@
ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 3.79* | 3.[89]*)
+ 3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
diff -Nur libc.orig/configure.in libc/configure.in
--- libc.orig/configure.in 2012-12-03 08:11:45.000000000 +1100
+++ libc/configure.in 2013-11-04 17:15:31.351650849 +1100
@@ -958,7 +958,7 @@
critic_missing="$critic_missing gcc")
AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
[GNU Make[^0-9]*\([0-9][0-9.]*\)],
- [3.79* | 3.[89]*], critic_missing="$critic_missing make")
+ [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
[GNU gettext.* \([0-9]*\.[0-9.]*\)],

View File

@ -1,26 +0,0 @@
On mips target, binutils currently sets DT_MIPS_RLD_MAP to 0 in dynamic
section if a --version-script sets _RLD_MAP to local. This is apparently
a binutils bug, but libc shouldn't segfault in this case.
see also: http://sourceware.org/bugilla/show_bug.cgi?id=11615
Upstream-Status: Pending
9/19/2010 - added by Qing He <qing.he@intel.com>
---
diff -ru glibc-2.10.1.orig/ports/sysdeps/mips/dl-machine.h glibc-2.10.1/ports/sysdeps/mips/dl-machine.h
--- glibc-2.10.1.orig/ports/sysdeps/mips/dl-machine.h 2009-05-16 16:36:20.000000000 +0800
+++ glibc-2.10.1/ports/sysdeps/mips/dl-machine.h 2010-09-19 09:11:53.000000000 +0800
@@ -70,7 +70,8 @@
/* If there is a DT_MIPS_RLD_MAP entry in the dynamic section, fill it in
with the run-time address of the r_debug structure */
#define ELF_MACHINE_DEBUG_SETUP(l,r) \
-do { if ((l)->l_info[DT_MIPS (RLD_MAP)]) \
+do { if ((l)->l_info[DT_MIPS (RLD_MAP)] && \
+ (l)->l_info[DT_MIPS (RLD_MAP)]->d_un.d_ptr) \
*(ElfW(Addr) *)((l)->l_info[DT_MIPS (RLD_MAP)]->d_un.d_ptr) = \
(ElfW(Addr)) (r); \
} while (0)

View File

@ -1,17 +0,0 @@
Upstream-Status: Inappropriate [embedded specific]
Replace the OECORE_KNOWN_INTERPRETER_NAMES with the value of
variable EGLIBC_KNOWN_INTERPRETER_NAMES.
Lianhao Lu, 08/01/2011
--- libc/elf/readlib.c.orig 2011-08-12 17:05:51.864470837 +0800
+++ libc/elf/readlib.c 2011-08-12 17:06:39.346942074 +0800
@@ -52,6 +52,7 @@
#ifdef SYSDEP_KNOWN_INTERPRETER_NAMES
SYSDEP_KNOWN_INTERPRETER_NAMES
#endif
+ OECORE_KNOWN_INTERPRETER_NAMES
};
static struct known_names known_libs[] =

View File

@ -1,184 +0,0 @@
on ppc fixes the errors like below
| ./.libs/libpulsecore-1.1.so: undefined reference to `__sqrt_finite'
| collect2: ld returned 1 exit status
Upstream-Status: Pending
ChangeLog
2012-01-06 Khem Raj <raj.khem@gmail.com>
* sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c: Add __*_finite alias.
Remove cruft.
* sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c: Ditto.
* sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c: Ditto.
* sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c: Ditto.
Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
@@ -39,14 +39,8 @@ static const float half = 0.5;
We find the actual square root and half of its reciprocal
simultaneously. */
-#ifdef __STDC__
double
__ieee754_sqrt (double b)
-#else
-double
-__ieee754_sqrt (b)
- double b;
-#endif
{
if (__builtin_expect (b > 0, 1))
{
@@ -132,3 +126,4 @@ __ieee754_sqrt (b)
}
return f_wash (b);
}
+strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
@@ -37,14 +37,8 @@ static const float threehalf = 1.5;
We find the reciprocal square root and use that to compute the actual
square root. */
-#ifdef __STDC__
float
__ieee754_sqrtf (float b)
-#else
-float
-__ieee754_sqrtf (b)
- float b;
-#endif
{
if (__builtin_expect (b > 0, 1))
{
@@ -99,3 +93,4 @@ __ieee754_sqrtf (b)
}
return f_washf (b);
}
+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
@@ -39,14 +39,8 @@ static const float half = 0.5;
We find the actual square root and half of its reciprocal
simultaneously. */
-#ifdef __STDC__
double
__ieee754_sqrt (double b)
-#else
-double
-__ieee754_sqrt (b)
- double b;
-#endif
{
if (__builtin_expect (b > 0, 1))
{
@@ -132,3 +126,4 @@ __ieee754_sqrt (b)
}
return f_wash (b);
}
+strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
@@ -37,14 +37,8 @@ static const float threehalf = 1.5;
We find the reciprocal square root and use that to compute the actual
square root. */
-#ifdef __STDC__
float
__ieee754_sqrtf (float b)
-#else
-float
-__ieee754_sqrtf (b)
- float b;
-#endif
{
if (__builtin_expect (b > 0, 1))
{
@@ -99,3 +93,4 @@ __ieee754_sqrtf (b)
}
return f_washf (b);
}
+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
@@ -132,3 +132,4 @@ __ieee754_sqrt (b)
}
return f_wash (b);
}
+strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
@@ -99,3 +99,4 @@ __ieee754_sqrtf (b)
}
return f_washf (b);
}
+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
@@ -132,3 +132,4 @@ __ieee754_sqrt (b)
}
return f_wash (b);
}
+strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
@@ -99,3 +99,4 @@ __ieee754_sqrtf (b)
}
return f_washf (b);
}
+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
@@ -132,3 +132,4 @@ __ieee754_sqrt (b)
}
return f_wash (b);
}
+strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
@@ -99,3 +99,4 @@ __ieee754_sqrtf (b)
}
return f_washf (b);
}
+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
@@ -132,3 +132,4 @@ __ieee754_sqrt (b)
}
return f_wash (b);
}
+strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
@@ -99,3 +99,4 @@ __ieee754_sqrtf (b)
}
return f_washf (b);
}
+strong_alias (__ieee754_sqrtf, __sqrtf_finite)

View File

@ -1,365 +0,0 @@
__ieee754_sqrt{,f} are now inline functions and call out __slow versions
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
@@ -40,7 +40,7 @@ static const float half = 0.5;
simultaneously. */
double
-__ieee754_sqrt (double b)
+__slow_ieee754_sqrt (double b)
{
if (__builtin_expect (b > 0, 1))
{
@@ -77,7 +77,7 @@ __ieee754_sqrt (double b)
/* Handle small numbers by scaling. */
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
- return __ieee754_sqrt (b * two108) * twom54;
+ return __slow_ieee754_sqrt (b * two108) * twom54;
#define FMADD(a_, c_, b_) \
({ double __r; \
@@ -126,4 +126,12 @@ __ieee754_sqrt (double b)
}
return f_wash (b);
}
+
+#undef __ieee754_sqrt
+double
+__ieee754_sqrt (double x)
+{
+ return __slow_ieee754_sqrt (x);
+}
+
strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
@@ -38,7 +38,7 @@ static const float threehalf = 1.5;
square root. */
float
-__ieee754_sqrtf (float b)
+__slow_ieee754_sqrtf (float b)
{
if (__builtin_expect (b > 0, 1))
{
@@ -93,4 +93,10 @@ __ieee754_sqrtf (float b)
}
return f_washf (b);
}
+#undef __ieee754_sqrtf
+float
+__ieee754_sqrtf (float x)
+{
+ return __slow_ieee754_sqrtf (x);
+}
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
@@ -40,7 +40,7 @@ static const float half = 0.5;
simultaneously. */
double
-__ieee754_sqrt (double b)
+__slow_ieee754_sqrt (double b)
{
if (__builtin_expect (b > 0, 1))
{
@@ -77,7 +77,7 @@ __ieee754_sqrt (double b)
/* Handle small numbers by scaling. */
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
- return __ieee754_sqrt (b * two108) * twom54;
+ return __slow_ieee754_sqrt (b * two108) * twom54;
#define FMADD(a_, c_, b_) \
({ double __r; \
@@ -126,4 +126,12 @@ __ieee754_sqrt (double b)
}
return f_wash (b);
}
+
+#undef __ieee754_sqrt
+double
+__ieee754_sqrt (double x)
+{
+ return __slow_ieee754_sqrt (x);
+}
+
strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
@@ -38,7 +38,7 @@ static const float threehalf = 1.5;
square root. */
float
-__ieee754_sqrtf (float b)
+__slow_ieee754_sqrtf (float b)
{
if (__builtin_expect (b > 0, 1))
{
@@ -93,4 +93,11 @@ __ieee754_sqrtf (float b)
}
return f_washf (b);
}
+#undef __ieee754_sqrtf
+float
+__ieee754_sqrtf (float x)
+{
+ return __slow_ieee754_sqrtf (x);
+}
+
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
@@ -41,10 +41,10 @@ static const float half = 0.5;
#ifdef __STDC__
double
-__ieee754_sqrt (double b)
+__slow_ieee754_sqrt (double b)
#else
double
-__ieee754_sqrt (b)
+__slow_ieee754_sqrt (b)
double b;
#endif
{
@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
/* Handle small numbers by scaling. */
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
- return __ieee754_sqrt (b * two108) * twom54;
+ return __slow_ieee754_sqrt (b * two108) * twom54;
#define FMADD(a_, c_, b_) \
({ double __r; \
@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
}
return f_wash (b);
}
+
+#undef __ieee754_sqrt
+double
+__ieee754_sqrt (double x)
+{
+ return __slow_ieee754_sqrt (x);
+}
+
strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
@@ -39,10 +39,10 @@ static const float threehalf = 1.5;
#ifdef __STDC__
float
-__ieee754_sqrtf (float b)
+__slow_ieee754_sqrtf (float b)
#else
float
-__ieee754_sqrtf (b)
+__slow_ieee754_sqrtf (b)
float b;
#endif
{
@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
}
return f_washf (b);
}
+
+#undef __ieee754_sqrtf
+float
+__ieee754_sqrtf (float x)
+{
+ return __slow_ieee754_sqrtf (x);
+}
+
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
@@ -41,10 +41,10 @@ static const float half = 0.5;
#ifdef __STDC__
double
-__ieee754_sqrt (double b)
+__slow_ieee754_sqrt (double b)
#else
double
-__ieee754_sqrt (b)
+__slow_ieee754_sqrt (b)
double b;
#endif
{
@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
/* Handle small numbers by scaling. */
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
- return __ieee754_sqrt (b * two108) * twom54;
+ return __slow_ieee754_sqrt (b * two108) * twom54;
#define FMADD(a_, c_, b_) \
({ double __r; \
@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
}
return f_wash (b);
}
+
+#undef __ieee754_sqrt
+double
+__ieee754_sqrt (double x)
+{
+ return __slow_ieee754_sqrt (x);
+}
+
strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
@@ -39,10 +39,10 @@ static const float threehalf = 1.5;
#ifdef __STDC__
float
-__ieee754_sqrtf (float b)
+__slow_ieee754_sqrtf (float b)
#else
float
-__ieee754_sqrtf (b)
+__slow_ieee754_sqrtf (b)
float b;
#endif
{
@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
}
return f_washf (b);
}
+
+#undef __ieee754_sqrtf
+float
+__ieee754_sqrtf (float x)
+{
+ return __slow_ieee754_sqrtf (x);
+}
+
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
@@ -41,10 +41,10 @@ static const float half = 0.5;
#ifdef __STDC__
double
-__ieee754_sqrt (double b)
+__slow_ieee754_sqrt (double b)
#else
double
-__ieee754_sqrt (b)
+__slow_ieee754_sqrt (b)
double b;
#endif
{
@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
/* Handle small numbers by scaling. */
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
- return __ieee754_sqrt (b * two108) * twom54;
+ return __slow_ieee754_sqrt (b * two108) * twom54;
#define FMADD(a_, c_, b_) \
({ double __r; \
@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
}
return f_wash (b);
}
+
+#undef __ieee754_sqrt
+double
+__ieee754_sqrt (double x)
+{
+ return __slow_ieee754_sqrt (x);
+}
+
strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
@@ -39,10 +39,10 @@ static const float threehalf = 1.5;
#ifdef __STDC__
float
-__ieee754_sqrtf (float b)
+__slow_ieee754_sqrtf (float b)
#else
float
-__ieee754_sqrtf (b)
+__slow_ieee754_sqrtf (b)
float b;
#endif
{
@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
}
return f_washf (b);
}
+
+#undef __ieee754_sqrtf
+float
+__ieee754_sqrtf (float x)
+{
+ return __slow_ieee754_sqrtf (x);
+}
+
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
+++ libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
}
return f_wash (b);
}
+
+#undef __ieee754_sqrt
+double
+__ieee754_sqrt (double x)
+{
+ return __slow_ieee754_sqrt (x);
+}
+
strong_alias (__ieee754_sqrt, __sqrt_finite)
Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
===================================================================
--- libc.orig/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
+++ libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
}
return f_washf (b);
}
+
+#undef __ieee754_sqrtf
+float
+__ieee754_sqrtf (float x)
+{
+ return __slow_ieee754_sqrtf (x);
+}
+
strong_alias (__ieee754_sqrtf, __sqrtf_finite)

View File

@ -1,108 +0,0 @@
Upstream-Status: Inappropriate [SDK specific]
This patch puts the dynamic loader path in the binaries, SYSTEM_DIRS strings
and lengths as well as ld.so.cache path in the dynamic loader to specific
sections in memory. The sections that contain paths have been allocated a 4096
byte section, which is the maximum path length in linux. This will allow the
relocating script to parse the ELF binary, detect the section and easily replace
the strings in a certain path.
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
Index: libc/elf/interp.c
===================================================================
--- libc.orig/elf/interp.c
+++ libc/elf/interp.c
@@ -16,5 +16,5 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp")))
+const char __invoke_dynamic_linker__[4096] __attribute__ ((section (".interp")))
= RUNTIME_LINKER;
Index: libc/elf/dl-load.c
===================================================================
--- libc.orig/elf/dl-load.c
+++ libc/elf/dl-load.c
@@ -144,8 +144,8 @@ static size_t max_capstrlen attribute_re
/* Get the generated information about the trusted directories. */
#include "trusted-dirs.h"
-static const char system_dirs[] = SYSTEM_DIRS;
-static const size_t system_dirs_len[] =
+static const char system_dirs[4096] __attribute__ ((section (".sysdirs"))) = SYSTEM_DIRS;
+volatile static const size_t system_dirs_len[] __attribute__ ((section (".sysdirslen"))) =
{
SYSTEM_DIRS_LEN
};
Index: libc/elf/dl-cache.c
===================================================================
--- libc.orig/elf/dl-cache.c
+++ libc/elf/dl-cache.c
@@ -133,6 +133,10 @@ do \
while (0)
+const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache"))) =
+ SYSCONFDIR "/ld.so.cache";
+
+
int
internal_function
_dl_cache_libcmp (const char *p1, const char *p2)
Index: libc/elf/ldconfig.c
===================================================================
--- libc.orig/elf/ldconfig.c
+++ libc/elf/ldconfig.c
@@ -166,6 +166,9 @@ static struct argp argp =
options, parse_opt, NULL, doc, NULL, more_help, NULL
};
+
+extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache")));
+
/* Check if string corresponds to an important hardware capability or
a platform. */
static int
Index: libc/sysdeps/generic/dl-cache.h
===================================================================
--- libc.orig/sysdeps/generic/dl-cache.h
+++ libc/sysdeps/generic/dl-cache.h
@@ -27,10 +27,6 @@
((flags) == 1 || (flags) == _DL_CACHE_DEFAULT_ID)
#endif
-#ifndef LD_SO_CACHE
-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
-#endif
-
#ifndef add_system_dir
# define add_system_dir(dir) add_dir (dir)
#endif
Index: libc/elf/rtld.c
===================================================================
--- libc.orig/elf/rtld.c
+++ libc/elf/rtld.c
@@ -99,6 +99,7 @@ uintptr_t __pointer_chk_guard_local
strong_alias (__pointer_chk_guard_local, __pointer_chk_guard)
#endif
+extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache")));
/* List of auditing DSOs. */
static struct audit_list
@@ -1031,12 +1032,12 @@ of this helper program; chances are you
--list list all dependencies and how they are resolved\n\
--verify verify that given object really is a dynamically linked\n\
object we can handle\n\
- --inhibit-cache Do not use " LD_SO_CACHE "\n\
+ --inhibit-cache Do not use %s\n\
--library-path PATH use given PATH instead of content of the environment\n\
variable LD_LIBRARY_PATH\n\
--inhibit-rpath LIST ignore RUNPATH and RPATH information in object names\n\
in LIST\n\
- --audit LIST use objects named in LIST as auditors\n");
+ --audit LIST use objects named in LIST as auditors\n", LD_SO_CACHE);
++_dl_skip_args;
--_dl_argc;

View File

@ -1,41 +0,0 @@
Upstream-Status: Inappropriate [SDK specific]
eglibc-nativesdk: Fix buffer overrun with a relocated SDK
When ld-linux-*.so.2 is relocated to a path that is longer than the
original fixed location, the dynamic loader will crash in open_path
because it implicitly assumes that max_dirnamelen is a fixed size that
never changes.
The allocated buffer will not be large enough to contain the directory
path string which is larger than the fixed location provided at build
time.
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
---
elf/dl-load.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1919,7 +1919,19 @@ open_path (const char *name, size_t name
given on the command line when rtld is run directly. */
return -1;
+ do
+ {
+ struct r_search_path_elem *this_dir = *dirs;
+ if (this_dir->dirnamelen > max_dirnamelen)
+ {
+ max_dirnamelen = this_dir->dirnamelen;
+ }
+ }
+ while (*++dirs != NULL);
+
buf = alloca (max_dirnamelen + max_capstrlen + namelen);
+
+ dirs = sps->dirs;
do
{
struct r_search_path_elem *this_dir = *dirs;

View File

@ -1,42 +0,0 @@
tzselect: workaround bug in busybox awk
busybox's version of awk in version 1.20.2 and lower doesn't support
escape sequences in conjunction with the -F option. Use -v FS= instead
as a workaround until the bug is fixed.
Reference:
https://bugs.busybox.net/show_bug.cgi?id=5126
Upstream-Status: Inappropriate [other]
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
--- libc/timezone/tzselect.ksh
+++ libc/timezone/tzselect.ksh
@@ -208,7 +208,7 @@ while
TZ_for_date=$TZ;;
*)
# Get list of names of countries in the continent or ocean.
- countries=$($AWK -F'\t' \
+ countries=$($AWK -v FS="\t" \
-v continent="$continent" \
-v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \
'
@@ -252,7 +252,7 @@ while
# Get list of names of time zone rule regions in the country.
- regions=$($AWK -F'\t' \
+ regions=$($AWK -v FS="\t" \
-v country="$country" \
-v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \
'
@@ -289,7 +289,7 @@ while
esac
# Determine TZ from country and region.
- TZ=$($AWK -F'\t' \
+ TZ=$($AWK -v FS="\t" \
-v country="$country" \
-v region="$region" \
-v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \

View File

@ -1,156 +0,0 @@
tzselect: eliminate ksh-dependency
This is an adapted version of a patch originally
by Peter Seebach <peter.seebach@windriver.com> found here:
http://www.eglibc.org/archives/patches/msg00671.html
Upstream-Status: Pending
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Index: libc/timezone/tzselect.ksh
===================================================================
--- libc.orig/timezone/tzselect.ksh 2012-11-17 09:50:14.000000000 -0800
+++ libc/timezone/tzselect.ksh 2013-01-03 22:46:26.423844259 -0800
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
PKGVERSION='(tzcode) '
TZVERSION=see_Makefile
@@ -11,23 +11,80 @@
# Porting notes:
#
-# This script requires a Posix-like shell with the extension of a
-# 'select' statement. The 'select' statement was introduced in the
-# Korn shell and is available in Bash and other shell implementations.
-# If your host lacks both Bash and the Korn shell, you can get their
-# source from one of these locations:
+# func_select allows this script to run on shells (such as busybox ash)
+# which lack the ksh "select" builtin.
#
-# Bash <http://www.gnu.org/software/bash/bash.html>
-# Korn Shell <http://www.kornshell.com/>
-# Public Domain Korn Shell <http://www.cs.mun.ca/~michael/pdksh/>
-#
-# This script also uses several features of modern awk programs.
+# This script uses several features of modern awk programs.
# If your host lacks awk, or has an old awk that does not conform to Posix,
# you can use either of the following free programs instead:
#
# Gawk (GNU awk) <http://www.gnu.org/software/gawk/>
# mawk <http://invisible-island.net/mawk/>
+# Implement ksh-style select in POSIX shell
+
+# We need a mostly-portable echo-n.
+case `echo -n "foo\c"` in
+*n*c*) func_echo_n() { echo "$*"; } ;;
+*n*) func_echo_n() { echo "$*\c"; } ;;
+*) func_echo_n() { echo -n "$*"; } ;;
+esac
+
+# Synopsis: Replace "select foo in list" with "while func_select foo in list"
+# and this works just like ksh, so far as I know.
+func_select () {
+ func_select_args=0
+ if expr "$1" : "[_a-zA-Z][_a-zA-Z0-9]*$" > /dev/null; then
+ func_select_var=$1
+ else
+ echo >&2 "func_select: '$1' is not a valid variable name."
+ return 1
+ fi
+ shift 1
+ case $1 in
+ in) shift 1;;
+ *) echo >&2 "func_select: usage: func_select var in ... (you must provide
+arguments)"; return 1;;
+ esac
+ case $# in
+ 0) echo >&2 "func_select: usage: func_select var in ..."; return 1;;
+ esac
+ for func_select_arg
+ do
+ func_select_args=`expr $func_select_args + 1`
+ eval func_select_a_$func_select_args=\$func_select_arg
+ done
+ REPLY=""
+ while :
+ do
+ if test -z "$REPLY"; then
+ func_select_i=1
+ while test $func_select_i -le $func_select_args
+ do
+ eval echo "\"\$func_select_i) \$func_select_a_$func_select_i\""
+ func_select_i=`expr $func_select_i + 1`
+ done
+ fi
+ func_echo_n "${PS3-#? }" >&2
+ if read REPLY; then
+ if test -n "${REPLY}"; then
+ if expr "$REPLY" : '[1-9][0-9]*$' > /dev/null; then
+ if test "$REPLY" -ge 1 && test "$REPLY" -le $func_select_args; then
+ eval $func_select_var=\$func_select_a_$REPLY
+ else
+ eval $func_select_var=
+ fi
+ else
+ eval $func_select_var=
+ fi
+ return 0
+ fi
+ else
+ eval $func_select_var=
+ return 1
+ fi
+ done
+}
# Specify default values for environment variables if they are unset.
: ${AWK=awk}
@@ -72,7 +129,7 @@
# Work around a bug in bash 1.14.7 and earlier, where $PS3 is sent to stdout.
-case $(echo 1 | (select x in x; do break; done) 2>/dev/null) in
+case $(echo 1 | (while func_select x in x; do break; done) 2>/dev/null) in
?*) PS3=
esac
@@ -92,7 +149,7 @@
echo >&2 'Please select a continent or ocean.'
- select continent in \
+ while func_select continent in \
Africa \
Americas \
Antarctica \
@@ -172,7 +229,7 @@
case $countries in
*"$newline"*)
echo >&2 'Please select a country.'
- select country in $countries
+ while func_select country in $countries
do
case $country in
'') echo >&2 'Please enter a number in range.';;
@@ -211,7 +268,7 @@
*"$newline"*)
echo >&2 'Please select one of the following' \
'time zone regions.'
- select region in $regions
+ while func_select region in $regions
do
case $region in
'') echo >&2 'Please enter a number in range.';;
@@ -288,7 +345,7 @@
echo >&2 "Is the above information OK?"
ok=
- select ok in Yes No
+ while func_select ok in Yes No
do
case $ok in
'') echo >&2 'Please enter 1 for Yes, or 2 for No.';;

View File

@ -1,11 +0,0 @@
require eglibc_${PV}.bb
require eglibc-initial.inc
DEPENDS += "kconfig-frontends-native"
# main eglibc recipes muck with TARGET_CPPFLAGS to point into
# final target sysroot but we
# are not there when building eglibc-initial
# so reset it here
TARGET_CPPFLAGS = ""

View File

@ -1 +0,0 @@
require eglibc-locale.inc

View File

@ -1 +0,0 @@
require eglibc-mtrace.inc

View File

@ -1 +0,0 @@
require eglibc-scripts.inc

View File

@ -1,156 +0,0 @@
require eglibc.inc
PR = "r3"
DEPENDS += "gperf-native kconfig-frontends-native"
SRC_URI = "http://downloads.yoctoproject.org/releases/eglibc/eglibc-${PV}-svnr22064.tar.bz2 \
file://eglibc-svn-arm-lowlevellock-include-tls.patch \
file://IO-acquire-lock-fix.patch \
file://mips-rld-map-check.patch \
file://etc/ld.so.conf \
file://generate-supported.mk \
file://glibc.fix_sqrt2.patch \
file://multilib_readlib.patch \
file://ppc-sqrt_finite.patch \
file://GLRO_dl_debug_mask.patch \
file://initgroups_keys.patch \
file://eglibc_fix_findidx_parameters.patch \
file://ppc_slow_ieee754_sqrt.patch \
file://fileops-without-wchar-io.patch \
file://add_resource_h_to_wait_h.patch \
file://0001-eglibc-menuconfig-support.patch \
file://0002-eglibc-menuconfig-hex-string-options.patch \
file://0003-eglibc-menuconfig-build-instructions.patch \
file://fsl-ppc-no-fsqrt.patch \
file://0001-R_ARM_TLS_DTPOFF32.patch \
file://tzselect-sh.patch \
file://tzselect-awk.patch \
file://0001-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch \
file://fix-tibetian-locales.patch \
file://make-4.patch \
${BACKPORTS} \
"
BACKPORTS = "\
file://eglibc-2.17/eglibc-2.17-r22178.patch \
file://eglibc-2.17/eglibc-2.17-PR15003-r22243.patch \
"
SRC_URI[md5sum] = "1464af54779c2c7d1078df9ce2e41791"
SRC_URI[sha256sum] = "97c3991a3772f513cf704841d20c275ac48895fad2e27802dda557c0196cba6b"
LIC_FILES_CHKSUM = "file://LICENSES;md5=e9a558e243b36d3209f380deb394b213 \
file://COPYING;md5=393a5ca445f6965873eca0259a17f833 \
file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff "
SRC_URI_append_class-nativesdk = " file://ld-search-order.patch \
file://relocatable_sdk.patch \
file://relocatable_sdk_fix_openpath.patch \
"
S = "${WORKDIR}/eglibc-${PV}/libc"
B = "${WORKDIR}/build-${TARGET_SYS}"
PACKAGES_DYNAMIC = ""
# the -isystem in bitbake.conf screws up glibc do_stage
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir}"
GLIBC_BROKEN_LOCALES = " _ER _ET so_ET yn_ER sid_ET tr_TR mn_MN gez_ET gez_ER bn_BD te_IN es_CR.ISO-8859-1"
FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/eglibc-${PV}', '${FILE_DIRNAME}/eglibc', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
#
# For now, we will skip building of a gcc package if it is a uclibc one
# and our build is not a uclibc one, and we skip a glibc one if our build
# is a uclibc build.
#
# See the note in gcc/gcc_3.4.0.oe
#
python __anonymous () {
import re
uc_os = (re.match('.*uclibc$', d.getVar('TARGET_OS', True)) != None)
if uc_os:
raise bb.parse.SkipPackage("incompatible with target %s" %
d.getVar('TARGET_OS', True))
}
export libc_cv_slibdir = "${base_libdir}"
EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
--without-cvs --disable-profile \
--disable-debug --without-gd \
--enable-clocale=gnu \
--enable-add-ons \
--with-headers=${STAGING_INCDIR} \
--without-selinux \
--enable-obsolete-rpc \
--with-kconfig=${STAGING_BINDIR_NATIVE} \
${GLIBC_EXTRA_OECONF}"
EXTRA_OECONF += "${@get_libc_fpu_setting(bb, d)}"
do_patch_append() {
bb.build.exec_func('do_fix_readlib_c', d)
}
# for mips eglibc now builds syscall tables for all abi's
# so we make sure that we choose right march option which is
# compatible with o32,n32 and n64 abi's
# e.g. -march=mips32 is not compatible with n32 and n64 therefore
# we filter it out in such case -march=from-abi which will be
# mips1 when using o32 and mips3 when using n32/n64
TUNE_CCARGS_mips := "${@oe_filter_out('-march=mips32', '${TUNE_CCARGS}', d)}"
TUNE_CCARGS_mipsel := "${@oe_filter_out('-march=mips32', '${TUNE_CCARGS}', d)}"
do_fix_readlib_c () {
sed -i -e 's#OECORE_KNOWN_INTERPRETER_NAMES#${EGLIBC_KNOWN_INTERPRETER_NAMES}#' ${S}/elf/readlib.c
}
do_configure () {
# override this function to avoid the autoconf/automake/aclocal/autoheader
# calls for now
# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
# version check and doesn't really help with anything
if [ -z "`which rpcgen`" ]; then
echo "rpcgen not found. Install glibc-devel."
exit 1
fi
(cd ${S} && gnu-configize) || die "failure in running gnu-configize"
find ${S} -name "configure" | xargs touch
CPPFLAGS="" oe_runconf
}
rpcsvc = "bootparam_prot.x nlm_prot.x rstat.x \
yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
rusers.x spray.x nfs_prot.x rquota.x key_prot.x"
do_compile () {
# -Wl,-rpath-link <staging>/lib in LDFLAGS can cause breakage if another glibc is in staging
unset LDFLAGS
base_do_compile
(
cd ${S}/sunrpc/rpcsvc
for r in ${rpcsvc}; do
h=`echo $r|sed -e's,\.x$,.h,'`
rpcgen -h $r -o $h || bbwarn "unable to generate header for $r"
done
)
echo "Adjust ldd script"
if [ -n "${RTLDLIST}" ]
then
prevrtld=`cat ${B}/elf/ldd | grep "^RTLDLIST=" | sed 's#^RTLDLIST="\?\([^"]*\)"\?$#\1#'`
if [ "${prevrtld}" != "${RTLDLIST}" ]
then
sed -i ${B}/elf/ldd -e "s#^RTLDLIST=.*\$#RTLDLIST=\"${prevrtld} ${RTLDLIST}\"#"
fi
fi
}
require eglibc-package.inc
BBCLASSEXTEND = "nativesdk"