glibc: Migrate eglibc 2.19 -> glibc 2.20
- This is a big swoop change where we switch to using glibc - option-groups are forward ported - cross-localedef is extracted out from eglibc and hosted at github.com/kraj/localedef, its used for cross-localedef recipe - Other non ported patches from eglibc are forward ported ppc8xx cache line workaround SH fpcr values dynamic resolver installing PIC archives is there but is not applied libc header bootstrap - Delete eglibc recipes we moved back to using glibc now - Fix ppc/e500 build - Fix crypt module build when options are used - Fix fnmatch build when options OPTION_EGLIBC_LOCALE_CODE is unset HAVE_MBSTATE_T and HAVE_MBSRTOWCS should be defined conditionally based upon OPTION_EGLIBC_LOCALE_CODE being set/unset - Move the ports/ patches to relevant files now that ports is gone (From OE-Core rev: 1027c535ea753e63d9ffe469a423e04467cf8940) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
954e45bc74
commit
54a3375a10
|
@ -1,48 +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=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||
file://${LIC_DIR}/posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
|
||||
file://${LIC_DIR}/COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
|
||||
|
||||
|
||||
inherit native
|
||||
inherit autotools
|
||||
|
||||
FILESEXTRAPATHS =. "${FILE_DIRNAME}/${P}:"
|
||||
|
||||
SRC_URI = "http://downloads.yoctoproject.org/releases/eglibc/eglibc-${PV}-svnr25243.tar.bz2 \
|
||||
file://fix_for_centos_5.8.patch;patchdir=.. \
|
||||
"
|
||||
SRC_URI[md5sum] = "197836c2ba42fb146e971222647198dd"
|
||||
SRC_URI[sha256sum] = "baaa030531fc308f7820c46acdf8e1b2f8e3c1f40bcd28b6e440d1c95d170d4c"
|
||||
|
||||
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
|
||||
}
|
|
@ -1,912 +0,0 @@
|
|||
Pulled from
|
||||
http://www.eglibc.org/archives/patches/msg01042.html
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem
|
||||
|
||||
Hi,
|
||||
|
||||
This patch adds 'make menuconfig' support to EGLIBC.
|
||||
|
||||
|
||||
EGLIBC can re-use the Linux kernel kconfig host tools ('conf' and 'mconf') unmodified, by passing appropriate environment variables and with some pre- and post-processing on the input/output config files.
|
||||
|
||||
There are three new make targets supported, which all are defined in the new libc/options-config/Makefile, which is included by the top-level libc/Makefile:
|
||||
|
||||
- 'make defconfig'. This passes 'libc/option-groups.defaults' to 'conf' as a default config, and outputs 'option-groups.config' to the top-level build directory, which will be the same as the default config.
|
||||
|
||||
- 'make config'. This is the same line-oriented interface as in the Linux kernel. Input and output is 'option-groups.config' in the top-level build directory.
|
||||
|
||||
- 'make menuconfig'. This is the same menu-based interface as in the Linux kernel. Input and output is 'option-groups.config' in the top-level build directory.
|
||||
|
||||
|
||||
Pre-Processing:
|
||||
|
||||
|
||||
The Linux kernel kconfig tools expect a prefix of "CONFIG_" on all config option names, but EGLIBC expects a prefix of "OPTION_". The pre-processing script, libc/options-config/config-preproc.pl, simply replaces "CONFIG_ with "OPTION_" in the given config file. The libc/options-config/Makefile passes the script output to a temporary config file, which is then passed to 'conf' or 'mconf'.
|
||||
|
||||
Post-Processing (libc/options-config/config-postproc.pl):
|
||||
|
||||
|
||||
- Disabled options are output as a comment line of the form "# CONFIG_FOO is not set". This needs to be changed to an explicit "CONFIG_FOO=n" in order to be compatible with 'option-groups.awk' which generates the option-groups.h header.
|
||||
|
||||
- "CONFIG_" prefix is changed back to "OPTION_".
|
||||
|
||||
|
||||
- The kconfig tools will not output anything for options that depend on a parent option, when the parent option is disabled. This implicit disable must be converted to an explicit "CONFIG_FOO=n" in order to be compatible with the way EGLIBC overrides the default option settings in 'libc/option-groups.defaults' with those in 'option-groups.config'.
|
||||
|
||||
|
||||
A new configure option, '--with-kconfig=<PATH>', tells EGLIBC where to find the pre-built 'conf' and 'mconf' host tools from Linux kernel builds.
|
||||
|
||||
libc/EGLIBC.cross-building is updated to include instructions for using '--with-kconfig' for the final EGLIBC build, and shows how and when to run 'make *config'.
|
||||
|
||||
libc/EGLIBC.option-groups is updated to include new information on the menuconfig support.
|
||||
|
||||
Thanks,
|
||||
|
||||
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/EGLIBC.cross-building
|
||||
===================================================================
|
||||
--- libc.orig/EGLIBC.cross-building
|
||||
+++ libc/EGLIBC.cross-building
|
||||
@@ -243,9 +243,29 @@ full EGLIBC build:
|
||||
> $src/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
|
||||
+
|
||||
+Note the additional '--with-kconfig' option. This tells EGLIBC where to
|
||||
+find the host config tools used by the kernel 'make config' and 'make
|
||||
+menuconfig'. These tools can be re-used by EGLIBC for its own 'make
|
||||
+*config' support, which will create 'option-groups.config' for you.
|
||||
+But first make sure those tools have been built by running some
|
||||
+dummy 'make *config' calls in the kernel directory:
|
||||
+
|
||||
+ $ cd $obj/linux
|
||||
+ $ PATH=$tools/bin:$PATH make config \
|
||||
+ > ARCH=$linux_arch CROSS_COMPILE=$target- \
|
||||
+ $ PATH=$tools/bin:$PATH make menuconfig \
|
||||
+ > ARCH=$linux_arch CROSS_COMPILE=$target- \
|
||||
+
|
||||
+Now we can configure and build the full EGLIBC:
|
||||
+
|
||||
+ $ cd $obj/eglibc
|
||||
+ $ PATH=$tools/bin:$PATH make defconfig
|
||||
+ $ PATH=$tools/bin:$PATH make menuconfig
|
||||
$ PATH=$tools/bin:$PATH make
|
||||
$ PATH=$tools/bin:$PATH make install install_root=$sysroot
|
||||
|
||||
Index: libc/configure.ac
|
||||
===================================================================
|
||||
--- libc.orig/configure.ac
|
||||
+++ libc/configure.ac
|
||||
@@ -127,6 +127,16 @@ AC_ARG_WITH([headers],
|
||||
[sysheaders=''])
|
||||
AC_SUBST(sysheaders)
|
||||
|
||||
+AC_ARG_WITH([kconfig],
|
||||
+ AC_HELP_STRING([--with-kconfig=PATH],
|
||||
+ [location of kconfig tools to use (from Linux
|
||||
+ kernel builds) to re-use for configuring EGLIBC
|
||||
+ option groups]),
|
||||
+ [KCONFIG_TOOLS=$withval],
|
||||
+ [KCONFIG_TOOLS=''])
|
||||
+AC_SUBST(KCONFIG_TOOLS)
|
||||
+
|
||||
+
|
||||
AC_SUBST(use_default_link)
|
||||
AC_ARG_WITH([default-link],
|
||||
AC_HELP_STRING([--with-default-link],
|
||||
Index: libc/config.make.in
|
||||
===================================================================
|
||||
--- libc.orig/config.make.in
|
||||
+++ libc/config.make.in
|
||||
@@ -45,6 +45,8 @@ sysincludes = @SYSINCLUDES@
|
||||
c++-sysincludes = @CXX_SYSINCLUDES@
|
||||
all-warnings = @all_warnings@
|
||||
|
||||
+kconfig_tools = @KCONFIG_TOOLS@
|
||||
+
|
||||
have-z-combreloc = @libc_cv_z_combreloc@
|
||||
have-z-execstack = @libc_cv_z_execstack@
|
||||
have-Bgroup = @libc_cv_Bgroup@
|
||||
Index: libc/options-config/config-postproc.pl
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/options-config/config-postproc.pl
|
||||
@@ -0,0 +1,54 @@
|
||||
+#!/usr/bin/perl
|
||||
+
|
||||
+$usage = "usage: $0 <default config file> <config file>\n";
|
||||
+
|
||||
+die "$usage" unless @ARGV;
|
||||
+$defaults = shift @ARGV;
|
||||
+die "$usage" unless @ARGV;
|
||||
+die "Could not open $ARGV[0]" unless -T $ARGV[0];
|
||||
+
|
||||
+sub yank {
|
||||
+ @option = grep($_ ne $_[0], @option);
|
||||
+}
|
||||
+
|
||||
+open(DEFAULTS, $defaults) || die "Could not open $defaults\n";
|
||||
+
|
||||
+# get the full list of available options using the default config file
|
||||
+$i = 0;
|
||||
+while (<DEFAULTS>) {
|
||||
+ if (/^\s*OPTION_(\w+)\s*=/) {
|
||||
+ $option[$i++] = $1;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+# now go through the config file, making the necessary changes
|
||||
+while (<>) {
|
||||
+ if (/Linux Kernel Configuration/) {
|
||||
+ # change title
|
||||
+ s/Linux Kernel/Option Groups/;
|
||||
+ print;
|
||||
+ } elsif (/^\s*CONFIG_(\w+)\s*=/) {
|
||||
+ # this is an explicit option set line, change CONFIG_ to OPTION_
|
||||
+ # before printing and remove this option from option list
|
||||
+ $opt = $1;
|
||||
+ yank($opt);
|
||||
+ 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
|
||||
+ $opt = $1;
|
||||
+ yank($opt);
|
||||
+ s/CONFIG_/OPTION_/g;
|
||||
+ print "OPTION_$opt=n\n";
|
||||
+ } else {
|
||||
+ print;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+# any 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";
|
||||
+}
|
||||
Index: libc/options-config/config-preproc.pl
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/options-config/config-preproc.pl
|
||||
@@ -0,0 +1,8 @@
|
||||
+#!/usr/bin/perl
|
||||
+
|
||||
+if (@ARGV) {
|
||||
+ while (<>) {
|
||||
+ s/OPTION_/CONFIG_/g;
|
||||
+ print;
|
||||
+ }
|
||||
+}
|
||||
Index: libc/options-config/Makefile
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/options-config/Makefile
|
||||
@@ -0,0 +1,55 @@
|
||||
+# ===========================================================================
|
||||
+# EGLIBC option-groups configuration targets
|
||||
+# These targets are included from top-level makefile
|
||||
+
|
||||
+ifneq ($(kconfig_tools),)
|
||||
+ifneq (no,$(PERL))
|
||||
+
|
||||
+ocdir := options-config
|
||||
+
|
||||
+OconfigDefaults := option-groups.defaults
|
||||
+OconfigDefaults_tmp := $(common-objpfx).tmp.defconfig
|
||||
+OconfigDef := option-groups.def
|
||||
+Oconfig := $(common-objpfx)option-groups.config
|
||||
+Oconfig_tmp := $(common-objpfx).tmp.config
|
||||
+
|
||||
+conf := $(kconfig_tools)/conf
|
||||
+mconf := $(kconfig_tools)/mconf
|
||||
+
|
||||
+preproc := $(PERL) $(ocdir)/config-preproc.pl
|
||||
+postproc := $(PERL) $(ocdir)/config-postproc.pl
|
||||
+
|
||||
+PHONY += defconfig config menuconfig
|
||||
+
|
||||
+defconfig: $(conf) $(OconfigDefaults) $(OconfigDef)
|
||||
+ rm -f $(OconfigDefaults_tmp)
|
||||
+ rm -f $(Oconfig_tmp)
|
||||
+ $(preproc) $(OconfigDefaults) > $(OconfigDefaults_tmp)
|
||||
+ KCONFIG_CONFIG=$(Oconfig_tmp) $< --defconfig=$(OconfigDefaults_tmp) \
|
||||
+ $(OconfigDef)
|
||||
+ $(postproc) $(OconfigDefaults) $(Oconfig_tmp) > $(Oconfig)
|
||||
+ rm $(Oconfig_tmp)
|
||||
+ rm $(OconfigDefaults_tmp)
|
||||
+
|
||||
+config: $(conf) $(OconfigDefaults) $(OconfigDef)
|
||||
+ rm -f $(Oconfig_tmp)
|
||||
+ $(preproc) $(wildcard $(Oconfig)) > $(Oconfig_tmp)
|
||||
+ KCONFIG_CONFIG=$(Oconfig_tmp) $< --oldaskconfig $(OconfigDef)
|
||||
+ $(postproc) $(OconfigDefaults) $(Oconfig_tmp) > $(Oconfig)
|
||||
+ rm $(Oconfig_tmp)
|
||||
+
|
||||
+menuconfig: $(mconf) $(OconfigDefaults) $(OconfigDef)
|
||||
+ rm -f $(Oconfig_tmp)
|
||||
+ $(preproc) $(wildcard $(Oconfig)) > $(Oconfig_tmp)
|
||||
+ KCONFIG_CONFIG=$(Oconfig_tmp) $< $(OconfigDef)
|
||||
+ $(postproc) $(OconfigDefaults) $(Oconfig_tmp) > $(Oconfig)
|
||||
+ rm $(Oconfig_tmp)
|
||||
+
|
||||
+# Help text used by make help
|
||||
+help:
|
||||
+ @echo ' defconfig - New config with default from default config'
|
||||
+ @echo ' config - Update current config utilising a line-oriented program'
|
||||
+ @echo ' menuconfig - Update current config utilising a menu based program'
|
||||
+
|
||||
+endif
|
||||
+endif
|
||||
Index: libc/option-groups.def
|
||||
===================================================================
|
||||
--- libc.orig/option-groups.def
|
||||
+++ libc/option-groups.def
|
||||
@@ -4,19 +4,19 @@
|
||||
#
|
||||
# An entry of the form:
|
||||
#
|
||||
-# config OPTION_GROUP_NAME
|
||||
+# config GROUP_NAME
|
||||
# bool "one-line explanation of what this option group controls"
|
||||
# help
|
||||
# Multi-line help explaining the option group's meaning in
|
||||
# some detail, terminated by indentation level.
|
||||
#
|
||||
-# defines an option group whose variable is OPTION_GROUP_NAME, with
|
||||
+# defines an option group whose variable is GROUP_NAME, with
|
||||
# meaningful values 'y' (enabled) and 'n' (disabled). The
|
||||
# documentation is formatted to be consumed by some sort of
|
||||
# interactive configuration interface, but EGLIBC doesn't have such an
|
||||
# interface yet.
|
||||
#
|
||||
-# An option may have a 'depends' line, indicating which other options
|
||||
+# An option may have a 'depends on' line, indicating which other options
|
||||
# must also be enabled if this option is. At present, EGLIBC doesn't
|
||||
# check that these dependencies are satisfied.
|
||||
#
|
||||
@@ -41,9 +41,9 @@
|
||||
# although this simply reestablishes the value already set by
|
||||
# 'option-groups.defaults'.
|
||||
|
||||
-config OPTION_EGLIBC_ADVANCED_INET6
|
||||
+config EGLIBC_ADVANCED_INET6
|
||||
bool "IPv6 Advanced Sockets API support (RFC3542)"
|
||||
- depends OPTION_EGLIBC_INET
|
||||
+ depends on EGLIBC_INET
|
||||
help
|
||||
This option group includes the functions specified by RFC 3542,
|
||||
"Advanced Sockets Application Program Interface (API) for
|
||||
@@ -71,7 +71,7 @@ config OPTION_EGLIBC_ADVANCED_INET6
|
||||
inet6_rth_segments
|
||||
inet6_rth_space
|
||||
|
||||
-config OPTION_EGLIBC_BACKTRACE
|
||||
+config EGLIBC_BACKTRACE
|
||||
bool "Functions for producing backtraces"
|
||||
help
|
||||
This option group includes functions for producing a list of
|
||||
@@ -85,7 +85,7 @@ config OPTION_EGLIBC_BACKTRACE
|
||||
backtrace_symbols
|
||||
backtrace_symbols_fd
|
||||
|
||||
-config OPTION_EGLIBC_BIG_MACROS
|
||||
+config EGLIBC_BIG_MACROS
|
||||
bool "Use extensive inline code"
|
||||
help
|
||||
This option group specifies whether certain pieces of code
|
||||
@@ -93,7 +93,7 @@ config OPTION_EGLIBC_BIG_MACROS
|
||||
group is not selected, function calls will be used instead,
|
||||
hence reducing the library footprint.
|
||||
|
||||
-config OPTION_EGLIBC_BSD
|
||||
+config EGLIBC_BSD
|
||||
bool "BSD-specific functions, and their compatibility stubs"
|
||||
help
|
||||
This option group includes functions specific to BSD kernels.
|
||||
@@ -109,10 +109,9 @@ config OPTION_EGLIBC_BSD
|
||||
revoke
|
||||
setlogin
|
||||
|
||||
-config OPTION_EGLIBC_CXX_TESTS
|
||||
+config EGLIBC_CXX_TESTS
|
||||
bool "Tests that link against the standard C++ library."
|
||||
- depends OPTION_POSIX_WIDE_CHAR_DEVICE_IO
|
||||
- depends OPTION_EGLIBC_LIBM
|
||||
+ depends on POSIX_WIDE_CHAR_DEVICE_IO && EGLIBC_LIBM
|
||||
help
|
||||
This option group does not include any C library functions;
|
||||
instead, it controls which EGLIBC tests an ordinary 'make
|
||||
@@ -121,23 +120,22 @@ config OPTION_EGLIBC_CXX_TESTS
|
||||
run.
|
||||
|
||||
The standard C++ library depends on the math library 'libm' and
|
||||
- the wide character I/O functions included in EGLIBC. If those
|
||||
- option groups are disabled, this test must also be disabled.
|
||||
+ the wide character I/O functions included in EGLIBC. So those
|
||||
+ option groups must be enabled if this test is enabled.
|
||||
|
||||
-config OPTION_EGLIBC_CATGETS
|
||||
+config EGLIBC_CATGETS
|
||||
bool "Functions for accessing message catalogs"
|
||||
- depends OPTION_EGLIBC_LOCALE_CODE
|
||||
+ depends on EGLIBC_LOCALE_CODE
|
||||
help
|
||||
This option group includes functions for accessing message
|
||||
catalogs: catopen, catclose, and catgets.
|
||||
|
||||
- This option group depends on the OPTION_EGLIBC_LOCALE_CODE
|
||||
- option group; if you disable that, you must also disable this.
|
||||
+ This option group depends on the EGLIBC_LOCALE_CODE
|
||||
+ option group.
|
||||
|
||||
-config OPTION_EGLIBC_CHARSETS
|
||||
+config EGLIBC_CHARSETS
|
||||
bool "iconv/gconv character set conversion libraries"
|
||||
help
|
||||
-
|
||||
This option group includes support for character sets other
|
||||
than ASCII (ANSI_X3.4-1968) and Unicode and ISO-10646 in their
|
||||
various encodings. This affects both the character sets
|
||||
@@ -198,16 +196,16 @@ config OPTION_EGLIBC_CHARSETS
|
||||
WCHAR_T - EGLIBC's internal form (target-endian,
|
||||
32-bit ISO 10646)
|
||||
|
||||
-config OPTION_EGLIBC_CRYPT
|
||||
+config EGLIBC_CRYPT
|
||||
bool "Encryption library"
|
||||
help
|
||||
This option group includes the `libcrypt' library which
|
||||
provides functions for one-way encryption. Supported
|
||||
encryption algorithms include MD5, SHA-256, SHA-512 and DES.
|
||||
|
||||
-config OPTION_EGLIBC_CRYPT_UFC
|
||||
+config EGLIBC_CRYPT_UFC
|
||||
bool "Ultra fast `crypt' implementation"
|
||||
- depends OPTION_EGLIBC_CRYPT
|
||||
+ depends on EGLIBC_CRYPT
|
||||
help
|
||||
This option group provides ultra fast DES-based implementation of
|
||||
the `crypt' function. When this option group is disabled,
|
||||
@@ -216,7 +214,7 @@ config OPTION_EGLIBC_CRYPT_UFC
|
||||
errno to ENOSYS if /salt/ passed does not correspond to either MD5,
|
||||
SHA-256 or SHA-512 algorithm.
|
||||
|
||||
-config OPTION_EGLIBC_DB_ALIASES
|
||||
+config EGLIBC_DB_ALIASES
|
||||
bool "Functions for accessing the mail aliases database"
|
||||
help
|
||||
This option group includues functions for looking up mail
|
||||
@@ -233,7 +231,7 @@ config OPTION_EGLIBC_DB_ALIASES
|
||||
When this option group is disabled, the NSS service libraries
|
||||
also lack support for querying their mail alias tables.
|
||||
|
||||
-config OPTION_EGLIBC_ENVZ
|
||||
+config EGLIBC_ENVZ
|
||||
bool "Functions for handling envz-style environment vectors."
|
||||
help
|
||||
This option group contains functions for creating and operating
|
||||
@@ -248,7 +246,7 @@ config OPTION_EGLIBC_ENVZ
|
||||
envz_entry envz_remove
|
||||
envz_get envz_strip
|
||||
|
||||
-config OPTION_EGLIBC_FCVT
|
||||
+config EGLIBC_FCVT
|
||||
bool "Functions for converting floating-point numbers to strings"
|
||||
help
|
||||
This option group includes functions for converting
|
||||
@@ -262,14 +260,14 @@ config OPTION_EGLIBC_FCVT
|
||||
fcvt_r qfcvt_r
|
||||
gcvt qgcvt
|
||||
|
||||
-config OPTION_EGLIBC_FMTMSG
|
||||
+config EGLIBC_FMTMSG
|
||||
bool "Functions for formatting messages"
|
||||
help
|
||||
This option group includes the following functions:
|
||||
|
||||
addseverity fmtmsg
|
||||
|
||||
-config OPTION_EGLIBC_FSTAB
|
||||
+config EGLIBC_FSTAB
|
||||
bool "Access functions for 'fstab'"
|
||||
help
|
||||
This option group includes functions for reading the mount
|
||||
@@ -283,7 +281,7 @@ config OPTION_EGLIBC_FSTAB
|
||||
getfsent setfsent
|
||||
getfsfile
|
||||
|
||||
-config OPTION_EGLIBC_FTRAVERSE
|
||||
+config EGLIBC_FTRAVERSE
|
||||
bool "Functions for traversing file hierarchies"
|
||||
help
|
||||
This option group includes functions for traversing file
|
||||
@@ -297,9 +295,9 @@ config OPTION_EGLIBC_FTRAVERSE
|
||||
fts_set nftw64
|
||||
fts_close
|
||||
|
||||
-config OPTION_EGLIBC_GETLOGIN
|
||||
+config EGLIBC_GETLOGIN
|
||||
bool "The getlogin function"
|
||||
- depends OPTION_EGLIBC_UTMP
|
||||
+ depends on EGLIBC_UTMP
|
||||
help
|
||||
This function group includes the 'getlogin' and 'getlogin_r'
|
||||
functions, which return the user name associated by the login
|
||||
@@ -309,17 +307,17 @@ config OPTION_EGLIBC_GETLOGIN
|
||||
fall back on 'getlogin' to find the user's login name for tilde
|
||||
expansion when the 'HOME' environment variable is not set.
|
||||
|
||||
-config OPTION_EGLIBC_IDN
|
||||
+config EGLIBC_IDN
|
||||
bool "International domain names support"
|
||||
help
|
||||
This option group includes the `libcidn' library which
|
||||
provides support for international domain names.
|
||||
|
||||
-config OPTION_EGLIBC_INET
|
||||
+config EGLIBC_INET
|
||||
bool "Networking support"
|
||||
help
|
||||
This option group includes networking-specific functions and
|
||||
- data. With OPTION_EGLIBC_INET disabled, the EGLIBC
|
||||
+ data. With EGLIBC_INET disabled, the EGLIBC
|
||||
installation and API changes as follows:
|
||||
|
||||
- The following libraries are not installed:
|
||||
@@ -439,14 +437,14 @@ config OPTION_EGLIBC_INET
|
||||
use Unix-domain sockets to communicate with the syslog daemon;
|
||||
syslog is valuable in non-networked contexts.
|
||||
|
||||
-config OPTION_EGLIBC_INET_ANL
|
||||
+config EGLIBC_INET_ANL
|
||||
bool "Asynchronous name lookup"
|
||||
- depends OPTION_EGLIBC_INET
|
||||
+ depends on EGLIBC_INET
|
||||
help
|
||||
This option group includes the `libanl' library which
|
||||
provides support for asynchronous name lookup.
|
||||
|
||||
-config OPTION_EGLIBC_LIBM
|
||||
+config EGLIBC_LIBM
|
||||
bool "libm (math library)"
|
||||
help
|
||||
This option group includes the 'libm' library, containing
|
||||
@@ -464,7 +462,7 @@ config OPTION_EGLIBC_LIBM
|
||||
group, you will not be able to build 'libstdc++' against the
|
||||
resulting EGLIBC installation.
|
||||
|
||||
-config OPTION_EGLIBC_LOCALES
|
||||
+config EGLIBC_LOCALES
|
||||
bool "Locale definitions"
|
||||
help
|
||||
This option group includes all locale definitions other than
|
||||
@@ -472,17 +470,17 @@ config OPTION_EGLIBC_LOCALES
|
||||
only the "C" locale is supported.
|
||||
|
||||
|
||||
-config OPTION_EGLIBC_LOCALE_CODE
|
||||
+config EGLIBC_LOCALE_CODE
|
||||
bool "Locale functions"
|
||||
- depends OPTION_POSIX_C_LANG_WIDE_CHAR
|
||||
+ depends on POSIX_C_LANG_WIDE_CHAR
|
||||
help
|
||||
This option group includes locale support functions, programs,
|
||||
- and libraries. With OPTION_EGLIBC_LOCALE_FUNCTIONS disabled,
|
||||
+ and libraries. With EGLIBC_LOCALE_CODE disabled,
|
||||
EGLIBC supports only the 'C' locale (also known as 'POSIX'),
|
||||
and ignores the settings of the 'LANG' and 'LC_*' environment
|
||||
variables.
|
||||
|
||||
- With OPTION_EGLIBC_LOCALE_CODE disabled, the following
|
||||
+ With EGLIBC_LOCALE_CODE disabled, the following
|
||||
functions are omitted from libc:
|
||||
|
||||
duplocale localeconv nl_langinfo rpmatch strfmon_l
|
||||
@@ -491,46 +489,43 @@ config OPTION_EGLIBC_LOCALE_CODE
|
||||
Furthermore, only the LC_CTYPE and LC_TIME categories of the
|
||||
standard "C" locale are available.
|
||||
|
||||
- The OPTION_EGLIBC_CATGETS option group depends on this option
|
||||
- group; if you disable OPTION_EGLIBC_LOCALE_CODE, you must also
|
||||
- disable OPTION_EGLIBC_CATGETS.
|
||||
+ The EGLIBC_CATGETS option group depends on this option group.
|
||||
+
|
||||
|
||||
-config OPTION_EGLIBC_MEMUSAGE
|
||||
+config EGLIBC_MEMUSAGE
|
||||
bool "Memory profiling library"
|
||||
help
|
||||
This option group includes the `libmemusage' library and
|
||||
the `memusage' and `memusagestat' utilities.
|
||||
These components provide memory profiling functions.
|
||||
|
||||
- OPTION_EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE
|
||||
+ EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE
|
||||
|
||||
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
|
||||
- systems. OPTION_EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE option
|
||||
+ systems. EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE option
|
||||
allows to change the default buffer size. It specifies
|
||||
the number of entries the buffer should have.
|
||||
On most architectures one buffer entry amounts to 48 bytes,
|
||||
so setting this option to the value of 512 will reduce the size of
|
||||
the memory buffer to 24K.
|
||||
|
||||
-config OPTION_EGLIBC_NIS
|
||||
+config EGLIBC_NIS
|
||||
bool "Support for NIS, NIS+, and the special 'compat' services."
|
||||
- depends OPTION_EGLIBC_INET
|
||||
- depends OPTION_EGLIBC_SUNRPC
|
||||
+ depends on EGLIBC_INET && EGLIBC_SUNRPC
|
||||
help
|
||||
This option group includes the NIS, NIS+, and 'compat' Name
|
||||
Service Switch service libraries. When it is disabled, those
|
||||
services libraries are not installed; you should remove any
|
||||
references to them from your 'nsswitch.conf' file.
|
||||
|
||||
- This option group depends on the OPTION_EGLIBC_INET option
|
||||
+ This option group depends on the EGLIBC_INET option
|
||||
group; you must enable that to enable this option group.
|
||||
|
||||
-config OPTION_EGLIBC_NSSWITCH
|
||||
+config EGLIBC_NSSWITCH
|
||||
bool "Name service switch (nsswitch) support"
|
||||
help
|
||||
-
|
||||
This option group includes support for the 'nsswitch' facility.
|
||||
With this option group enabled, all EGLIBC functions for
|
||||
accessing various system databases (passwords and groups;
|
||||
@@ -544,12 +539,12 @@ config OPTION_EGLIBC_NSSWITCH
|
||||
'option-groups.config' file must set the following two
|
||||
variables:
|
||||
|
||||
- OPTION_EGLIBC_NSSWITCH_FIXED_CONFIG
|
||||
+ EGLIBC_NSSWITCH_FIXED_CONFIG
|
||||
|
||||
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
|
||||
- at run time if OPTION_EGLIBC_NSSWITCH were enabled, and
|
||||
+ at run time if EGLIBC_NSSWITCH were enabled, and
|
||||
produces a C library that uses the nsswitch service
|
||||
libraries to search for database entries as this file
|
||||
specifies, instead of consulting '/etc/nsswitch.conf' at run
|
||||
@@ -567,7 +562,7 @@ config OPTION_EGLIBC_NSSWITCH
|
||||
you will probably want to delete references to databases not
|
||||
needed on your system.
|
||||
|
||||
- OPTION_EGLIBC_NSSWITCH_FIXED_FUNCTIONS
|
||||
+ EGLIBC_NSSWITCH_FIXED_FUNCTIONS
|
||||
|
||||
The EGLIBC build process uses this file to decide which
|
||||
functions to make available from which service libraries.
|
||||
@@ -585,28 +580,28 @@ config OPTION_EGLIBC_NSSWITCH
|
||||
Be sure to mention each function in each service you wish to
|
||||
use. If you do not mention a service's function here, the
|
||||
EGLIBC database access functions will not find it, even if
|
||||
- it is listed in the OPTION_EGLIBC_NSSWITCH_FIXED_CONFIG
|
||||
+ it is listed in the EGLIBC_NSSWITCH_FIXED_CONFIG
|
||||
file.
|
||||
|
||||
- In this arrangement, EGLIBC will not use the 'dlopen' and
|
||||
- 'dlsym' functions to find database access functions. Instead,
|
||||
- libc hard-codes references to the service libraries' database
|
||||
- access functions. You must explicitly link your program
|
||||
- against the name service libraries (those whose names start
|
||||
- with 'libnss_', in the sysroot's '/lib' directory) whose
|
||||
- functions you intend to use. This arrangement helps
|
||||
- system-wide static analysis tools decide which functions a
|
||||
- system actually uses.
|
||||
-
|
||||
- Note that some nsswitch service libraries require other option
|
||||
- groups to be enabled; for example, the OPTION_EGLIBC_INET
|
||||
- option group must be enabled to use the 'libnss_dns.so.2'
|
||||
- service library, which uses the Domain Name System network
|
||||
- protocol to answer queries.
|
||||
+ In this arrangement, EGLIBC will not use the 'dlopen' and
|
||||
+ 'dlsym' functions to find database access functions. Instead,
|
||||
+ libc hard-codes references to the service libraries' database
|
||||
+ access functions. You must explicitly link your program
|
||||
+ against the name service libraries (those whose names start
|
||||
+ with 'libnss_', in the sysroot's '/lib' directory) whose
|
||||
+ functions you intend to use. This arrangement helps
|
||||
+ system-wide static analysis tools decide which functions a
|
||||
+ system actually uses.
|
||||
+
|
||||
+ Note that some nsswitch service libraries require other option
|
||||
+ groups to be enabled; for example, the EGLIBC_INET
|
||||
+ option group must be enabled to use the 'libnss_dns.so.2'
|
||||
+ service library, which uses the Domain Name System network
|
||||
+ protocol to answer queries.
|
||||
|
||||
-config OPTION_EGLIBC_RCMD
|
||||
+config EGLIBC_RCMD
|
||||
bool "Support for 'rcmd' and related library functions"
|
||||
- depends OPTION_EGLIBC_INET
|
||||
+ depends on EGLIBC_INET
|
||||
help
|
||||
This option group includes functions for running commands on
|
||||
remote machines via the 'rsh' protocol, and doing authentication
|
||||
@@ -622,7 +617,7 @@ config OPTION_EGLIBC_RCMD
|
||||
rresvport ruserpass
|
||||
rresvport_af
|
||||
|
||||
-config OPTION_EGLIBC_RTLD_DEBUG
|
||||
+config EGLIBC_RTLD_DEBUG
|
||||
bool "Runtime linker debug print outs"
|
||||
help
|
||||
This option group enables debug output of the runtime linker
|
||||
@@ -633,7 +628,7 @@ config OPTION_EGLIBC_RTLD_DEBUG
|
||||
the `ldd' utility which may also be used by the prelinker.
|
||||
In particular, the `--unused' ldd option will not work correctly.
|
||||
|
||||
-config OPTION_EGLIBC_SPAWN
|
||||
+config EGLIBC_SPAWN
|
||||
bool "Support for POSIX posix_spawn functions"
|
||||
help
|
||||
This option group includes the POSIX functions for executing
|
||||
@@ -669,7 +664,7 @@ config OPTION_EGLIBC_SPAWN
|
||||
disabled, those programs will only operate on uncompressed
|
||||
charmap files.
|
||||
|
||||
-config OPTION_EGLIBC_STREAMS
|
||||
+config EGLIBC_STREAMS
|
||||
bool "Support for accessing STREAMS."
|
||||
help
|
||||
This option group includes functions for reading and writing
|
||||
@@ -685,14 +680,14 @@ config OPTION_EGLIBC_STREAMS
|
||||
isastream fdetach
|
||||
putmsg
|
||||
|
||||
-config OPTION_EGLIBC_SUNRPC
|
||||
+config EGLIBC_SUNRPC
|
||||
bool "Support for the Sun 'RPC' protocol."
|
||||
- depends OPTION_EGLIBC_INET
|
||||
+ depends on EGLIBC_INET
|
||||
help
|
||||
This option group includes support for the Sun RPC protocols,
|
||||
including the 'rpcgen' and 'rpcinfo' programs.
|
||||
|
||||
-config OPTION_EGLIBC_UTMP
|
||||
+config EGLIBC_UTMP
|
||||
bool "Older access functions for 'utmp' login records"
|
||||
help
|
||||
This option group includes the older 'utent' family of
|
||||
@@ -719,9 +714,9 @@ config OPTION_EGLIBC_UTMP
|
||||
|
||||
libutil.so (and libutil.a)
|
||||
|
||||
-config OPTION_EGLIBC_UTMPX
|
||||
+config EGLIBC_UTMPX
|
||||
bool "POSIX access functions for 'utmp' login records"
|
||||
- depends OPTION_EGLIBC_UTMP
|
||||
+ depends on EGLIBC_UTMP
|
||||
help
|
||||
This option group includes the POSIX functions for reading and
|
||||
writing user login records in the 'utmp' file (usually
|
||||
@@ -742,21 +737,21 @@ config OPTION_EGLIBC_UTMPX
|
||||
updwtmpx
|
||||
utmpxname
|
||||
|
||||
-config OPTION_EGLIBC_WORDEXP
|
||||
+config EGLIBC_WORDEXP
|
||||
bool "Shell-style word expansion"
|
||||
help
|
||||
This option group includes the 'wordexp' function for
|
||||
performing word expansion in the manner of the shell, and the
|
||||
accompanying 'wordfree' function.
|
||||
|
||||
-config OPTION_POSIX_C_LANG_WIDE_CHAR
|
||||
+config POSIX_C_LANG_WIDE_CHAR
|
||||
bool "ISO C library wide character functions, excluding I/O"
|
||||
help
|
||||
This option group includes the functions defined by the ISO C
|
||||
standard for working with wide and multibyte characters in
|
||||
memory. Functions for reading and writing wide and multibyte
|
||||
characters from and to files call in the
|
||||
- OPTION_POSIX_WIDE_CHAR_DEVICE_IO option group.
|
||||
+ POSIX_WIDE_CHAR_DEVICE_IO option group.
|
||||
|
||||
This option group includes the following functions:
|
||||
|
||||
@@ -778,14 +773,14 @@ config OPTION_POSIX_C_LANG_WIDE_CHAR
|
||||
mbrlen wcscoll wcstol
|
||||
mbrtowc wcscpy wcstold
|
||||
|
||||
-config OPTION_POSIX_REGEXP
|
||||
+config POSIX_REGEXP
|
||||
bool "Regular expressions"
|
||||
help
|
||||
This option group includes the POSIX regular expression
|
||||
functions, and the associated non-POSIX extensions and
|
||||
compatibility functions.
|
||||
|
||||
- With OPTION_POSIX_REGEXP disabled, the following functions are
|
||||
+ With POSIX_REGEXP disabled, the following functions are
|
||||
omitted from libc:
|
||||
|
||||
re_comp re_max_failures regcomp
|
||||
@@ -799,9 +794,9 @@ config OPTION_POSIX_REGEXP
|
||||
<regexp.h> header file, 'compile', 'step', and 'advance', is
|
||||
omitted.
|
||||
|
||||
-config OPTION_POSIX_REGEXP_GLIBC
|
||||
+config POSIX_REGEXP_GLIBC
|
||||
bool "Regular expressions from GLIBC"
|
||||
- depends OPTION_POSIX_REGEXP
|
||||
+ depends on POSIX_REGEXP
|
||||
help
|
||||
This option group specifies which regular expression
|
||||
library to use. The choice is between regex
|
||||
@@ -810,9 +805,9 @@ config OPTION_POSIX_REGEXP_GLIBC
|
||||
optimized for speed; regex from libiberty is more than twice
|
||||
as small while still is enough for most practical purposes.
|
||||
|
||||
-config OPTION_POSIX_WIDE_CHAR_DEVICE_IO
|
||||
+config POSIX_WIDE_CHAR_DEVICE_IO
|
||||
bool "Input and output functions for wide characters"
|
||||
- depends OPTION_POSIX_C_LANG_WIDE_CHAR
|
||||
+ depends on POSIX_C_LANG_WIDE_CHAR
|
||||
help
|
||||
This option group includes functions for reading and writing
|
||||
wide characters to and from <stdio.h> streams.
|
||||
Index: libc/Makefile
|
||||
===================================================================
|
||||
--- libc.orig/Makefile
|
||||
+++ libc/Makefile
|
||||
@@ -24,6 +24,7 @@ endif
|
||||
|
||||
include Makeconfig
|
||||
|
||||
+include options-config/Makefile
|
||||
|
||||
# This is the default target; it makes everything except the tests.
|
||||
.PHONY: all
|
||||
Index: libc/configure
|
||||
===================================================================
|
||||
--- libc.orig/configure
|
||||
+++ libc/configure
|
||||
@@ -621,6 +621,7 @@ KSH
|
||||
libc_cv_have_bash2
|
||||
BASH_SHELL
|
||||
libc_cv_gcc_static_libgcc
|
||||
+KCONFIG_TOOLS
|
||||
CXX_SYSINCLUDES
|
||||
SYSINCLUDES
|
||||
AUTOCONF
|
||||
@@ -734,6 +735,7 @@ with_fp
|
||||
with_binutils
|
||||
with_selinux
|
||||
with_headers
|
||||
+with_kconfig
|
||||
with_default_link
|
||||
enable_sanity_checks
|
||||
enable_shared
|
||||
@@ -1438,6 +1440,9 @@ Optional Packages:
|
||||
--with-selinux if building with SELinux support
|
||||
--with-headers=PATH location of system headers to use (for example
|
||||
/usr/src/linux/include) [default=compiler default]
|
||||
+ --with-kconfig=PATH location of kconfig tools to use (from Linux kernel
|
||||
+ builds) to re-use for configuring EGLIBC option
|
||||
+ groups
|
||||
--with-default-link do not use explicit linker scripts
|
||||
--with-cpu=CPU select code for CPU variant
|
||||
|
||||
@@ -3401,6 +3406,14 @@ fi
|
||||
|
||||
|
||||
|
||||
+# Check whether --with-kconfig was given.
|
||||
+if test "${with_kconfig+set}" = set; then
|
||||
+ withval=$with_kconfig; KCONFIG_TOOLS=$withval
|
||||
+else
|
||||
+ KCONFIG_TOOLS=''
|
||||
+fi
|
||||
+
|
||||
+
|
||||
|
||||
# Check whether --with-default-link was given.
|
||||
if test "${with_default_link+set}" = set; then :
|
||||
Index: libc/EGLIBC.option-groups
|
||||
===================================================================
|
||||
--- libc.orig/EGLIBC.option-groups
|
||||
+++ libc/EGLIBC.option-groups
|
||||
@@ -56,33 +56,9 @@ disable option groups one by one, until
|
||||
|
||||
The Option Groups
|
||||
|
||||
-EGLIBC currently implements the following option groups, also
|
||||
-documented in the file 'option-groups.def':
|
||||
-
|
||||
-OPTION_EGLIBC_CATGETS
|
||||
- This option group includes functions for accessing message
|
||||
- catalogs: catopen, catclose, and catgets.
|
||||
-
|
||||
-OPTION_EGLIBC_LOCALES
|
||||
- This option group includes all locale definitions other than
|
||||
- those for the "C" locale. If this option group is omitted, then
|
||||
- only the "C" locale is supported.
|
||||
-
|
||||
-OPTION_EGLIBC_LIBM
|
||||
- This option group includes the 'libm' library, containing
|
||||
- mathematical functions. If this option group is omitted, then
|
||||
- an EGLIBC installation does not include shared or unshared versions
|
||||
- of the math library.
|
||||
-
|
||||
- Note that this does not remove all floating-point related
|
||||
- functionality from EGLIBC; for example, 'printf' and 'scanf'
|
||||
- can still print and read floating-point values with this option
|
||||
- group disabled.
|
||||
-
|
||||
- Note that the ISO Standard C++ library 'libstdc++' depends on
|
||||
- EGLIBC's math library 'libm'. If you disable this option
|
||||
- group, you will not be able to build 'libstdc++' against the
|
||||
- resulting EGLIBC installation.
|
||||
+To see the current full list of implemented option groups, refer to the
|
||||
+file 'option-groups.def' at the top of the source tree, or run
|
||||
+'make menuconfig' from the top-level build directory.
|
||||
|
||||
The POSIX.1-2001 specification includes a suggested partition of all
|
||||
the functions in the POSIX C API into option groups: math functions
|
||||
@@ -110,6 +86,18 @@ data, but include mathematical functions
|
||||
OPTION_EGLIBC_LOCALES = n
|
||||
OPTION_EGLIBC_LIBM = y
|
||||
|
||||
+Like the Linux kernel, EGLIBC supports a similar set of '*config' make
|
||||
+targets to make it easier to create 'option-groups.config', with all
|
||||
+dependencies between option groups automatically satisfied. Run
|
||||
+'make help' to see the list of supported make config targets. For
|
||||
+example, 'make menuconfig' will update the current config utilising a
|
||||
+menu based program.
|
||||
+
|
||||
+The option group names and their type (boolean, int, hex, string), help
|
||||
+description, and dependencies with other option groups, are described by
|
||||
+'option-groups.def' at the top of the source tree, analogous to the
|
||||
+'Kconfig' files in the Linux kernel.
|
||||
+
|
||||
In general, each option group variable controls whether a given set of
|
||||
object files in EGLIBC is compiled and included in the final
|
||||
libraries, or omitted from the build.
|
||||
@@ -132,22 +120,3 @@ under development.
|
||||
|
||||
We have used the system to subset some portions of EGLIBC's
|
||||
functionality. It needs to be extended to cover more of the library.
|
||||
-
|
||||
-At the moment, EGLIBC performs no sanity checks on the contents of
|
||||
-'option-groups.config'; if an option group's name is mistyped, the
|
||||
-option group is silently included in the build. EGLIBC should check
|
||||
-that all variables set in 'option-groups.config' are proper option
|
||||
-group names, and that their values are appropriate.
|
||||
-
|
||||
-Some portions of EGLIBC depend on others; for example, the Sun Remote
|
||||
-Procedure Call functions in 'sunrpc' depend on the networking
|
||||
-functions in 'inet'. The sanity checking described above should check
|
||||
-that the selection configuration satisfies dependencies within EGLIBC,
|
||||
-and produce a legible error message if it does not. At the moment,
|
||||
-inconsistent configurations produce link errors late in the build
|
||||
-process.
|
||||
-
|
||||
-The Linux kernel's configuration system provides interactive
|
||||
-interfaces for creating and modifying configuration files (which also
|
||||
-perform the sanity checking and dependency tracking described above).
|
||||
-EGLIBC should provide similar interfaces.
|
|
@ -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.
|
||||
}
|
||||
}
|
||||
|
|
@ -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]
|
||||
...
|
||||
|
|
@ -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,
|
||||
¤t_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);
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -1,32 +0,0 @@
|
|||
sysdeps/gnu/configure.ac: handle correctly $libc_cv_rootsbindir
|
||||
|
||||
Upstream-Status:Pending
|
||||
Signed-off-by: Matthieu Crapet <Matthieu.Crapet@ingenico.com>
|
||||
|
||||
diff --git a/libc/sysdeps/gnu/configure b/libc/sysdeps/gnu/configure
|
||||
index e7f0e43..687beab 100644
|
||||
--- a/libc/sysdeps/gnu/configure
|
||||
+++ b/libc/sysdeps/gnu/configure
|
||||
@@ -42,6 +42,6 @@ case "$prefix" in
|
||||
else
|
||||
libc_cv_localstatedir=$localstatedir
|
||||
fi
|
||||
- libc_cv_rootsbindir=/sbin
|
||||
+ test -n "$libc_cv_rootsbindir" || libc_cv_rootsbindir=/sbin
|
||||
;;
|
||||
esac
|
||||
diff --git a/libc/sysdeps/gnu/configure.ac b/libc/sysdeps/gnu/configure.ac
|
||||
index ce251df..57c1e77 100644
|
||||
--- a/libc/sysdeps/gnu/configure.ac
|
||||
+++ b/libc/sysdeps/gnu/configure.ac
|
||||
@@ -42,6 +42,6 @@ case "$prefix" in
|
||||
else
|
||||
libc_cv_localstatedir=$localstatedir
|
||||
fi
|
||||
- libc_cv_rootsbindir=/sbin
|
||||
+ test -n "$libc_cv_rootsbindir" || libc_cv_rootsbindir=/sbin
|
||||
;;
|
||||
esac
|
||||
--
|
||||
2.0.0
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
SUMMARY = "Embedded GLIBC (GNU C Library)"
|
||||
DESCRIPTION = "Embedded GLIBC (EGLIBC) is a variant of the GNU C Library (GLIBC) that is designed to work well on embedded systems. EGLIBC strives to be source and binary compatible with GLIBC. EGLIBC's goals include reduced footprint, configurable components, better support for cross-compilation and cross-testing."
|
||||
HOMEPAGE = "http://www.eglibc.org/home"
|
||||
SECTION = "libs"
|
||||
LICENSE = "GPLv2 & LGPLv2.1"
|
||||
LIC_FILES_CHKSUM ?= "file://LICENSES;md5=07a394b26e0902b9ffdec03765209770 \
|
||||
file://COPYING;md5=393a5ca445f6965873eca0259a17f833 \
|
||||
file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
|
||||
file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff "
|
|
@ -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 = ""
|
|
@ -1 +0,0 @@
|
|||
require eglibc-locale.inc
|
|
@ -1,13 +0,0 @@
|
|||
include eglibc-collateral.inc
|
||||
|
||||
SUMMARY = "mtrace utility provided by eglibc"
|
||||
DESCRIPTION = "mtrace utility provided by eglibc"
|
||||
RDEPENDS_${PN} = "perl"
|
||||
RPROVIDES_${PN} = "libc-mtrace"
|
||||
|
||||
SRC = "${STAGING_INCDIR}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}"
|
||||
|
||||
do_install() {
|
||||
install -d -m 0755 ${D}${bindir}
|
||||
install -m 0755 ${SRC}/mtrace ${D}${bindir}/
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
require eglibc-mtrace.inc
|
|
@ -1,16 +0,0 @@
|
|||
include eglibc-collateral.inc
|
||||
|
||||
SUMMARY = "utility scripts provided by eglibc"
|
||||
DESCRIPTION = "utility scripts provided by eglibc"
|
||||
RDEPENDS_${PN} = "bash eglibc-mtrace"
|
||||
|
||||
SRC = "${STAGING_INCDIR}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}"
|
||||
|
||||
bashscripts = "sotruss xtrace"
|
||||
|
||||
do_install() {
|
||||
install -d -m 0755 ${D}${bindir}
|
||||
for i in ${bashscripts}; do
|
||||
install -m 0755 ${SRC}/$i ${D}${bindir}/
|
||||
done
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
require eglibc-scripts.inc
|
|
@ -3,10 +3,10 @@ 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
|
||||
Index: git/locale/programs/config.h
|
||||
===================================================================
|
||||
--- eglibc-2_16.orig/libc/locale/programs/config.h
|
||||
+++ eglibc-2_16/libc/locale/programs/config.h
|
||||
--- git/locale/programs/config.h
|
||||
+++ git.orig/locale/programs/config.h
|
||||
@@ -19,6 +19,8 @@
|
||||
#ifndef _LD_CONFIG_H
|
||||
#define _LD_CONFIG_H 1
|
|
@ -0,0 +1,52 @@
|
|||
SUMMARY = "Cross locale generation tool for glibc"
|
||||
HOMEPAGE = "http://www.gnu.org/software/libc/libc.html"
|
||||
SECTION = "libs"
|
||||
LICENSE = "LGPL-2.1"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://LICENSES;md5=e9a558e243b36d3209f380deb394b213 \
|
||||
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||
file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
|
||||
file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
|
||||
|
||||
|
||||
inherit native
|
||||
inherit autotools
|
||||
|
||||
FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:${FILE_DIRNAME}/glibc:"
|
||||
|
||||
PV = "2.20"
|
||||
|
||||
SRC_URI = "git://sourceware.org/git/glibc.git;branch=master;name=glibc \
|
||||
git://github.com/kraj/localedef;branch=master;name=localedef;destsuffix=git/localedef \
|
||||
file://fix_for_centos_5.8.patch \
|
||||
${EGLIBCPATCHES} \
|
||||
"
|
||||
EGLIBCPATCHES = "\
|
||||
file://timezone-re-written-tzselect-as-posix-sh.patch \
|
||||
file://eglibc.patch \
|
||||
file://option-groups.patch \
|
||||
file://GLRO_dl_debug_mask.patch \
|
||||
file://eglibc-header-bootstrap.patch \
|
||||
file://eglibc-resolv-dynamic.patch \
|
||||
file://eglibc-ppc8xx-cache-line-workaround.patch \
|
||||
file://eglibc-sh4-fpscr_values.patch \
|
||||
file://eglibc-use-option-groups.patch \
|
||||
"
|
||||
|
||||
SRCREV_glibc = "529bf51595fffbe80023e7d895b671391991bb1b"
|
||||
SRCREV_localedef = "c833367348d39dad7ba018990bfdaffaec8e9ed3"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
EXTRA_OECONF = "--with-glibc=${S}"
|
||||
CFLAGS += "-DNOT_IN_libc=1"
|
||||
|
||||
do_configure () {
|
||||
${S}/localedef/configure ${EXTRA_OECONF}
|
||||
}
|
||||
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}
|
||||
install -m 0755 ${B}/localedef ${D}${bindir}/cross-localedef
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
INHIBIT_DEFAULT_DEPS = "1"
|
||||
LICENSE = "GPLv2 & LGPLv2.1"
|
||||
HOMEPAGE = "http://www.eglibc.org/"
|
||||
HOMEPAGE = "http://www.gnu.org/software/libc/index.html"
|
||||
|
||||
do_fetch[noexec] = "1"
|
||||
do_unpack[noexec] = "1"
|
|
@ -0,0 +1,9 @@
|
|||
SUMMARY = "GLIBC (GNU C Library)"
|
||||
DESCRIPTION = "The GNU C Library is used as the system C library in most systems with the Linux kernel."
|
||||
HOMEPAGE = "http://www.gnu.org/software/libc/libc.html"
|
||||
SECTION = "libs"
|
||||
LICENSE = "GPLv2 & LGPLv2.1"
|
||||
LIC_FILES_CHKSUM ?= "file://LICENSES;md5=07a394b26e0902b9ffdec03765209770 \
|
||||
file://COPYING;md5=393a5ca445f6965873eca0259a17f833 \
|
||||
file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
|
||||
file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff "
|
|
@ -11,8 +11,8 @@ TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}"
|
|||
do_configure () {
|
||||
sed -ie 's,{ (exit 1); exit 1; }; },{ (exit 0); }; },g' ${S}/configure
|
||||
chmod +x ${S}/configure
|
||||
(cd ${S} && gnu-configize) || die "failure in running gnu-configize"
|
||||
find ${S} -name "configure" | xargs touch
|
||||
(cd ${S} && gnu-configize) || die "failure in running gnu-configize"
|
||||
find ${S} -name "configure" | xargs touch
|
||||
${S}/configure --host=${TARGET_SYS} --build=${BUILD_SYS} \
|
||||
--prefix=/usr \
|
||||
--without-cvs --disable-sanity-checks \
|
||||
|
@ -26,28 +26,28 @@ do_compile () {
|
|||
}
|
||||
|
||||
do_install () {
|
||||
oe_runmake cross-compiling=yes install_root=${D} \
|
||||
includedir='${includedir}' prefix='${prefix}' \
|
||||
install-bootstrap-headers=yes install-headers
|
||||
oe_runmake cross-compiling=yes install_root=${D} \
|
||||
includedir='${includedir}' prefix='${prefix}' \
|
||||
install-bootstrap-headers=yes install-headers
|
||||
|
||||
oe_runmake csu/subdir_lib
|
||||
mkdir -p ${D}${libdir}/
|
||||
install -m 644 csu/crt[1in].o ${D}${libdir}
|
||||
oe_runmake csu/subdir_lib
|
||||
mkdir -p ${D}${libdir}/
|
||||
install -m 644 csu/crt[1in].o ${D}${libdir}
|
||||
|
||||
# Two headers -- stubs.h and features.h -- aren't installed by install-headers,
|
||||
# so do them by hand. We can tolerate an empty stubs.h for the moment.
|
||||
# See e.g. http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html
|
||||
mkdir -p ${D}${includedir}/gnu/
|
||||
touch ${D}${includedir}/gnu/stubs.h
|
||||
cp ${S}/include/features.h ${D}${includedir}/features.h
|
||||
# Two headers -- stubs.h and features.h -- aren't installed by install-headers,
|
||||
# so do them by hand. We can tolerate an empty stubs.h for the moment.
|
||||
# See e.g. http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html
|
||||
mkdir -p ${D}${includedir}/gnu/
|
||||
touch ${D}${includedir}/gnu/stubs.h
|
||||
cp ${S}/include/features.h ${D}${includedir}/features.h
|
||||
|
||||
if [ -e ${B}/bits/stdio_lim.h ]; then
|
||||
cp ${B}/bits/stdio_lim.h ${D}${includedir}/bits/
|
||||
fi
|
||||
# add links to linux-libc-headers: final eglibc build need this.
|
||||
for t in linux asm asm-generic; do
|
||||
ln -s ${STAGING_DIR_TARGET}${includedir}/$t ${D}${includedir}/
|
||||
done
|
||||
if [ -e ${B}/bits/stdio_lim.h ]; then
|
||||
cp ${B}/bits/stdio_lim.h ${D}${includedir}/bits/
|
||||
fi
|
||||
# add links to linux-libc-headers: final glibc build need this.
|
||||
for t in linux asm asm-generic; do
|
||||
ln -s ${STAGING_DIR_TARGET}${includedir}/$t ${D}${includedir}/
|
||||
done
|
||||
}
|
||||
|
||||
do_install_locale() {
|
||||
|
@ -58,8 +58,8 @@ do_siteconfig () {
|
|||
:
|
||||
}
|
||||
|
||||
SSTATEPOSTINSTFUNCS += "eglibcinitial_sstate_postinst"
|
||||
eglibcinitial_sstate_postinst() {
|
||||
SSTATEPOSTINSTFUNCS += "glibcinitial_sstate_postinst"
|
||||
glibcinitial_sstate_postinst() {
|
||||
if [ "${BB_CURRENTTASK}" = "populate_sysroot" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]
|
||||
then
|
||||
# Recreate the symlinks to ensure they point to the correct location
|
|
@ -0,0 +1,11 @@
|
|||
require glibc_${PV}.bb
|
||||
require glibc-initial.inc
|
||||
|
||||
DEPENDS += "kconfig-frontends-native"
|
||||
|
||||
# main glibc recipes muck with TARGET_CPPFLAGS to point into
|
||||
# final target sysroot but we
|
||||
# are not there when building glibc-initial
|
||||
# so reset it here
|
||||
|
||||
TARGET_CPPFLAGS = ""
|
|
@ -5,7 +5,7 @@ def ld_append_if_tune_exists(d, infos, dict):
|
|||
infos['ldconfig'].add('{"' + libdir + '/' + dict[tune][0] + '",' + dict[tune][1] + ' }')
|
||||
infos['lddrewrite'].add(libdir+'/'+dict[tune][0])
|
||||
|
||||
def eglibc_dl_info(d):
|
||||
def glibc_dl_info(d):
|
||||
ld_info_all = {
|
||||
"mips": ["ld.so.1", "FLAG_ELF_LIBC6"],
|
||||
"mips64-n32": ["ld.so.1", "FLAG_ELF_LIBC6"],
|
||||
|
@ -52,5 +52,5 @@ def eglibc_dl_info(d):
|
|||
infos['lddrewrite'] = ' '.join(infos['lddrewrite'])
|
||||
return infos
|
||||
|
||||
EGLIBC_KNOWN_INTERPRETER_NAMES = "${@eglibc_dl_info(d)['ldconfig']}"
|
||||
RTLDLIST = "${@eglibc_dl_info(d)['lddrewrite']}"
|
||||
EGLIBC_KNOWN_INTERPRETER_NAMES = "${@glibc_dl_info(d)['ldconfig']}"
|
||||
RTLDLIST = "${@glibc_dl_info(d)['lddrewrite']}"
|
|
@ -1,12 +1,12 @@
|
|||
include eglibc-collateral.inc
|
||||
include glibc-collateral.inc
|
||||
|
||||
SUMMARY = "Locale data from eglibc"
|
||||
SUMMARY = "Locale data from glibc"
|
||||
|
||||
BPN = "eglibc"
|
||||
LOCALEBASEPN = "${MLPREFIX}eglibc"
|
||||
BPN = "glibc"
|
||||
LOCALEBASEPN = "${MLPREFIX}glibc"
|
||||
|
||||
# eglibc-collateral.inc inhibits all default deps, but do_package needs objcopy
|
||||
# ERROR: objcopy failed with exit code 127 (cmd was 'i586-webos-linux-objcopy' --only-keep-debug 'eglibc-locale/2.17-r0/package/usr/lib/gconv/IBM1166.so' 'eglibc-locale/2.17-r0/package/usr/lib/gconv/.debug/IBM1166.so')
|
||||
# glibc-collateral.inc inhibits all default deps, but do_package needs objcopy
|
||||
# ERROR: objcopy failed with exit code 127 (cmd was 'i586-webos-linux-objcopy' --only-keep-debug 'glibc-locale/2.17-r0/package/usr/lib/gconv/IBM1166.so' 'glibc-locale/2.17-r0/package/usr/lib/gconv/.debug/IBM1166.so')
|
||||
# ERROR: Function failed: split_and_strip_files
|
||||
BINUTILSDEP = "virtual/${MLPREFIX}${TARGET_PREFIX}binutils:do_populate_sysroot"
|
||||
BINUTILSDEP_class-nativesdk = "virtual/${TARGET_PREFIX}binutils-crosssdk:do_populate_sysroot"
|
||||
|
@ -19,7 +19,7 @@ do_package[depends] += "${BINUTILSDEP}"
|
|||
|
||||
# default to disabled
|
||||
ENABLE_BINARY_LOCALE_GENERATION ?= "0"
|
||||
ENABLE_BINARY_LOCALE_GENERATION_pn-nativesdk-eglibc-locale = "0"
|
||||
ENABLE_BINARY_LOCALE_GENERATION_pn-nativesdk-glibc-locale = "0"
|
||||
|
||||
#enable locale generation on these arches
|
||||
# BINARY_LOCALE_ARCHES is a space separated list of regular expressions
|
||||
|
@ -34,40 +34,40 @@ PROVIDES = "virtual/libc-locale"
|
|||
PACKAGES = "localedef ${PN}-dbg"
|
||||
|
||||
PACKAGES_DYNAMIC = "^locale-base-.* \
|
||||
^eglibc-gconv-.* ^eglibc-charmap-.* ^eglibc-localedata-.* ^eglibc-binary-localedata-.* \
|
||||
^glibc-gconv-.* ^glibc-charmap-.* ^glibc-localedata-.* ^glibc-binary-localedata-.* \
|
||||
^glibc-gconv-.* ^glibc-charmap-.* ^glibc-localedata-.* ^glibc-binary-localedata-.* \
|
||||
^${MLPREFIX}eglibc-gconv$"
|
||||
^${MLPREFIX}glibc-gconv$"
|
||||
|
||||
# Create a eglibc-binaries package
|
||||
# Create a glibc-binaries package
|
||||
ALLOW_EMPTY_${BPN}-binaries = "1"
|
||||
PACKAGES += "${BPN}-binaries"
|
||||
RRECOMMENDS_${BPN}-binaries = "${@" ".join([p for p in d.getVar('PACKAGES', True).split() if p.find("eglibc-binary") != -1])}"
|
||||
RRECOMMENDS_${BPN}-binaries = "${@" ".join([p for p in d.getVar('PACKAGES', True).split() if p.find("glibc-binary") != -1])}"
|
||||
|
||||
# Create a eglibc-charmaps package
|
||||
# Create a glibc-charmaps package
|
||||
ALLOW_EMPTY_${BPN}-charmaps = "1"
|
||||
PACKAGES += "${BPN}-charmaps"
|
||||
RRECOMMENDS_${BPN}-charmaps = "${@" ".join([p for p in d.getVar('PACKAGES', True).split() if p.find("eglibc-charmap") != -1])}"
|
||||
RRECOMMENDS_${BPN}-charmaps = "${@" ".join([p for p in d.getVar('PACKAGES', True).split() if p.find("glibc-charmap") != -1])}"
|
||||
|
||||
# Create a eglibc-gconvs package
|
||||
# Create a glibc-gconvs package
|
||||
ALLOW_EMPTY_${BPN}-gconvs = "1"
|
||||
PACKAGES += "${BPN}-gconvs"
|
||||
RRECOMMENDS_${BPN}-gconvs = "${@" ".join([p for p in d.getVar('PACKAGES', True).split() if p.find("eglibc-gconv") != -1])}"
|
||||
RRECOMMENDS_${BPN}-gconvs = "${@" ".join([p for p in d.getVar('PACKAGES', True).split() if p.find("glibc-gconv") != -1])}"
|
||||
|
||||
# Create a eglibc-localedatas package
|
||||
# Create a glibc-localedatas package
|
||||
ALLOW_EMPTY_${BPN}-localedatas = "1"
|
||||
PACKAGES += "${BPN}-localedatas"
|
||||
RRECOMMENDS_${BPN}-localedatas = "${@" ".join([p for p in d.getVar('PACKAGES', True).split() if p.find("eglibc-localedata") != -1])}"
|
||||
RRECOMMENDS_${BPN}-localedatas = "${@" ".join([p for p in d.getVar('PACKAGES', True).split() if p.find("glibc-localedata") != -1])}"
|
||||
|
||||
DESCRIPTION_localedef = "eglibc: compile locale definition files"
|
||||
DESCRIPTION_localedef = "glibc: compile locale definition files"
|
||||
|
||||
# eglibc-gconv is dynamically added into PACKAGES, thus
|
||||
# FILES_eglibc-gconv will not be automatically extended in multilib.
|
||||
# Explicitly add ${MLPREFIX} for FILES_eglibc-gconv.
|
||||
FILES_${MLPREFIX}eglibc-gconv = "${libdir}/gconv/*"
|
||||
# glibc-gconv is dynamically added into PACKAGES, thus
|
||||
# FILES_glibc-gconv will not be automatically extended in multilib.
|
||||
# Explicitly add ${MLPREFIX} for FILES_glibc-gconv.
|
||||
FILES_${MLPREFIX}glibc-gconv = "${libdir}/gconv/*"
|
||||
FILES_${PN}-dbg += "${libdir}/gconv/.debug/*"
|
||||
FILES_localedef = "${bindir}/localedef"
|
||||
|
||||
LOCALETREESRC = "${STAGING_INCDIR}/eglibc-locale-internal-${MULTIMACH_TARGET_SYS}"
|
||||
LOCALETREESRC = "${STAGING_INCDIR}/glibc-locale-internal-${MULTIMACH_TARGET_SYS}"
|
||||
|
||||
do_install () {
|
||||
mkdir -p ${D}${bindir} ${D}${datadir} ${D}${libdir}
|
|
@ -0,0 +1 @@
|
|||
require glibc-locale.inc
|
|
@ -0,0 +1,13 @@
|
|||
include glibc-collateral.inc
|
||||
|
||||
SUMMARY = "mtrace utility provided by glibc"
|
||||
DESCRIPTION = "mtrace utility provided by glibc"
|
||||
RDEPENDS_${PN} = "perl"
|
||||
RPROVIDES_${PN} = "libc-mtrace"
|
||||
|
||||
SRC = "${STAGING_INCDIR}/glibc-scripts-internal-${MULTIMACH_TARGET_SYS}"
|
||||
|
||||
do_install() {
|
||||
install -d -m 0755 ${D}${bindir}
|
||||
install -m 0755 ${SRC}/mtrace ${D}${bindir}/
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
require glibc-mtrace.inc
|
|
@ -1,4 +1,4 @@
|
|||
def eglibc_cfg(feature, tokens, cnf):
|
||||
def glibc_cfg(feature, tokens, cnf):
|
||||
if type(tokens) == type(""):
|
||||
tokens = [tokens]
|
||||
if feature:
|
||||
|
@ -10,8 +10,8 @@ def eglibc_cfg(feature, tokens, cnf):
|
|||
cnf.extend(["OPTION_EGLIBC_NSSWITCH_FIXED_CONFIG=\"${S}/nss/nsswitch.conf\""])
|
||||
cnf.extend(["OPTION_EGLIBC_NSSWITCH_FIXED_FUNCTIONS=\"${S}/nss/fixed-nsswitch.functions\""])
|
||||
|
||||
# Map distro features to eglibc options settings
|
||||
def features_to_eglibc_settings(d):
|
||||
# Map distro features to glibc options settings
|
||||
def features_to_glibc_settings(d):
|
||||
cnf = ([])
|
||||
|
||||
ipv4 = bb.utils.contains('DISTRO_FEATURES', 'ipv4', True, False, d)
|
||||
|
@ -52,7 +52,7 @@ def features_to_eglibc_settings(d):
|
|||
libc_posix_regexp_glibc = bb.utils.contains('DISTRO_FEATURES', 'libc-posix-regexp-glibc', True, False, d)
|
||||
libc_posix_wchar_io = bb.utils.contains('DISTRO_FEATURES', 'libc-posix-wchar-io', True, False, d)
|
||||
|
||||
# arrange the dependencies among eglibc configuable options according to file option-groups.def from eglibc source code
|
||||
# arrange the dependencies among glibc configuable options according to file option-groups.def from glibc source code
|
||||
new_dep = True
|
||||
while new_dep:
|
||||
new_dep = False
|
||||
|
@ -121,42 +121,42 @@ def features_to_eglibc_settings(d):
|
|||
new_dep = True
|
||||
libc_posix_clang_wchar = True
|
||||
|
||||
eglibc_cfg(ipv6, 'OPTION_EGLIBC_ADVANCED_INET6', cnf)
|
||||
eglibc_cfg(libc_backtrace, 'OPTION_EGLIBC_BACKTRACE', cnf)
|
||||
eglibc_cfg(libc_big_macros, 'OPTION_EGLIBC_BIG_MACROS', cnf)
|
||||
eglibc_cfg(libc_bsd, 'OPTION_EGLIBC_BSD', cnf)
|
||||
eglibc_cfg(libc_cxx_tests, 'OPTION_EGLIBC_CXX_TESTS', cnf)
|
||||
eglibc_cfg(libc_catgets, 'OPTION_EGLIBC_CATGETS', cnf)
|
||||
eglibc_cfg(libc_charsets, 'OPTION_EGLIBC_CHARSETS', cnf)
|
||||
eglibc_cfg(libc_crypt, 'OPTION_EGLIBC_CRYPT', cnf)
|
||||
eglibc_cfg(libc_crypt_ufc, 'OPTION_EGLIBC_CRYPT_UFC', cnf)
|
||||
eglibc_cfg(libc_db_aliases, 'OPTION_EGLIBC_DB_ALIASES', cnf)
|
||||
eglibc_cfg(libc_envz, 'OPTION_EGLIBC_ENVZ', cnf)
|
||||
eglibc_cfg(libc_fcvt, 'OPTION_EGLIBC_FCVT', cnf)
|
||||
eglibc_cfg(libc_fmtmsg, 'OPTION_EGLIBC_FMTMSG', cnf)
|
||||
eglibc_cfg(libc_fstab, 'OPTION_EGLIBC_FSTAB', cnf)
|
||||
eglibc_cfg(libc_ftraverse, 'OPTION_EGLIBC_FTRAVERSE', cnf)
|
||||
eglibc_cfg(libc_getlogin, 'OPTION_EGLIBC_GETLOGIN', cnf)
|
||||
eglibc_cfg(libc_idn, 'OPTION_EGLIBC_IDN', cnf)
|
||||
eglibc_cfg(ipv4, 'OPTION_EGLIBC_INET', cnf)
|
||||
eglibc_cfg(libc_inet_anl, 'OPTION_EGLIBC_INET_ANL', cnf)
|
||||
eglibc_cfg(libc_libm, 'OPTION_EGLIBC_LIBM', cnf)
|
||||
eglibc_cfg(libc_locales, 'OPTION_EGLIBC_LOCALES', cnf)
|
||||
eglibc_cfg(libc_locale_code, 'OPTION_EGLIBC_LOCALE_CODE', cnf)
|
||||
eglibc_cfg(libc_memusage, 'OPTION_EGLIBC_MEMUSAGE', cnf)
|
||||
eglibc_cfg(libc_nis, 'OPTION_EGLIBC_NIS', cnf)
|
||||
eglibc_cfg(libc_nsswitch, 'OPTION_EGLIBC_NSSWITCH', cnf)
|
||||
eglibc_cfg(libc_rcmd, 'OPTION_EGLIBC_RCMD', cnf)
|
||||
eglibc_cfg(libc_rtld_debug, 'OPTION_EGLIBC_RTLD_DEBUG', cnf)
|
||||
eglibc_cfg(libc_spawn, 'OPTION_EGLIBC_SPAWN', cnf)
|
||||
eglibc_cfg(libc_streams, 'OPTION_EGLIBC_STREAMS', cnf)
|
||||
eglibc_cfg(libc_sunrpc, 'OPTION_EGLIBC_SUNRPC', cnf)
|
||||
eglibc_cfg(libc_utmp, 'OPTION_EGLIBC_UTMP', cnf)
|
||||
eglibc_cfg(libc_utmpx, 'OPTION_EGLIBC_UTMPX', cnf)
|
||||
eglibc_cfg(libc_wordexp, 'OPTION_EGLIBC_WORDEXP', cnf)
|
||||
eglibc_cfg(libc_posix_clang_wchar, 'OPTION_POSIX_C_LANG_WIDE_CHAR', cnf)
|
||||
eglibc_cfg(libc_posix_regexp, 'OPTION_POSIX_REGEXP', cnf)
|
||||
eglibc_cfg(libc_posix_regexp_glibc, 'OPTION_POSIX_REGEXP_GLIBC', cnf)
|
||||
eglibc_cfg(libc_posix_wchar_io, 'OPTION_POSIX_WIDE_CHAR_DEVICE_IO', cnf)
|
||||
glibc_cfg(ipv6, 'OPTION_EGLIBC_ADVANCED_INET6', cnf)
|
||||
glibc_cfg(libc_backtrace, 'OPTION_EGLIBC_BACKTRACE', cnf)
|
||||
glibc_cfg(libc_big_macros, 'OPTION_EGLIBC_BIG_MACROS', cnf)
|
||||
glibc_cfg(libc_bsd, 'OPTION_EGLIBC_BSD', cnf)
|
||||
glibc_cfg(libc_cxx_tests, 'OPTION_EGLIBC_CXX_TESTS', cnf)
|
||||
glibc_cfg(libc_catgets, 'OPTION_EGLIBC_CATGETS', cnf)
|
||||
glibc_cfg(libc_charsets, 'OPTION_EGLIBC_CHARSETS', cnf)
|
||||
glibc_cfg(libc_crypt, 'OPTION_EGLIBC_CRYPT', cnf)
|
||||
glibc_cfg(libc_crypt_ufc, 'OPTION_EGLIBC_CRYPT_UFC', cnf)
|
||||
glibc_cfg(libc_db_aliases, 'OPTION_EGLIBC_DB_ALIASES', cnf)
|
||||
glibc_cfg(libc_envz, 'OPTION_EGLIBC_ENVZ', cnf)
|
||||
glibc_cfg(libc_fcvt, 'OPTION_EGLIBC_FCVT', cnf)
|
||||
glibc_cfg(libc_fmtmsg, 'OPTION_EGLIBC_FMTMSG', cnf)
|
||||
glibc_cfg(libc_fstab, 'OPTION_EGLIBC_FSTAB', cnf)
|
||||
glibc_cfg(libc_ftraverse, 'OPTION_EGLIBC_FTRAVERSE', cnf)
|
||||
glibc_cfg(libc_getlogin, 'OPTION_EGLIBC_GETLOGIN', cnf)
|
||||
glibc_cfg(libc_idn, 'OPTION_EGLIBC_IDN', cnf)
|
||||
glibc_cfg(ipv4, 'OPTION_EGLIBC_INET', cnf)
|
||||
glibc_cfg(libc_inet_anl, 'OPTION_EGLIBC_INET_ANL', cnf)
|
||||
glibc_cfg(libc_libm, 'OPTION_EGLIBC_LIBM', cnf)
|
||||
glibc_cfg(libc_locales, 'OPTION_EGLIBC_LOCALES', cnf)
|
||||
glibc_cfg(libc_locale_code, 'OPTION_EGLIBC_LOCALE_CODE', cnf)
|
||||
glibc_cfg(libc_memusage, 'OPTION_EGLIBC_MEMUSAGE', cnf)
|
||||
glibc_cfg(libc_nis, 'OPTION_EGLIBC_NIS', cnf)
|
||||
glibc_cfg(libc_nsswitch, 'OPTION_EGLIBC_NSSWITCH', cnf)
|
||||
glibc_cfg(libc_rcmd, 'OPTION_EGLIBC_RCMD', cnf)
|
||||
glibc_cfg(libc_rtld_debug, 'OPTION_EGLIBC_RTLD_DEBUG', cnf)
|
||||
glibc_cfg(libc_spawn, 'OPTION_EGLIBC_SPAWN', cnf)
|
||||
glibc_cfg(libc_streams, 'OPTION_EGLIBC_STREAMS', cnf)
|
||||
glibc_cfg(libc_sunrpc, 'OPTION_EGLIBC_SUNRPC', cnf)
|
||||
glibc_cfg(libc_utmp, 'OPTION_EGLIBC_UTMP', cnf)
|
||||
glibc_cfg(libc_utmpx, 'OPTION_EGLIBC_UTMPX', cnf)
|
||||
glibc_cfg(libc_wordexp, 'OPTION_EGLIBC_WORDEXP', cnf)
|
||||
glibc_cfg(libc_posix_clang_wchar, 'OPTION_POSIX_C_LANG_WIDE_CHAR', cnf)
|
||||
glibc_cfg(libc_posix_regexp, 'OPTION_POSIX_REGEXP', cnf)
|
||||
glibc_cfg(libc_posix_regexp_glibc, 'OPTION_POSIX_REGEXP_GLIBC', cnf)
|
||||
glibc_cfg(libc_posix_wchar_io, 'OPTION_POSIX_WIDE_CHAR_DEVICE_IO', cnf)
|
||||
|
||||
return "\n".join(cnf)
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# 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 eglibc one if our build
|
||||
# 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
|
||||
|
@ -17,20 +17,20 @@ python __anonymous () {
|
|||
# Set this to zero if you don't want ldconfig in the output package
|
||||
USE_LDCONFIG ?= "1"
|
||||
|
||||
PACKAGES = "${PN}-dbg catchsegv sln nscd ldd tzcode ${PN}-utils eglibc-thread-db ${PN}-pic libcidn libmemusage libsegfault ${PN}-pcprofile libsotruss ${PN} eglibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc"
|
||||
PACKAGES = "${PN}-dbg catchsegv sln nscd ldd tzcode ${PN}-utils glibc-thread-db ${PN}-pic libcidn libmemusage libsegfault ${PN}-pcprofile libsotruss ${PN} glibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc"
|
||||
|
||||
# The ld.so in this eglibc supports the GNU_HASH
|
||||
RPROVIDES_${PN} = "glibc rtld(GNU_HASH)"
|
||||
RPROVIDES_${PN}-utils = "glibc-utils"
|
||||
RPROVIDES_${PN}-mtrace = "glibc-mtrace libc-mtrace"
|
||||
RPROVIDES_${PN}-pic = "glibc-pic"
|
||||
RPROVIDES_${PN}-dev = "glibc-dev libc6-dev virtual-libc-dev"
|
||||
RPROVIDES_${PN}-staticdev = "glibc-staticdev"
|
||||
RPROVIDES_${PN}-doc = "glibc-doc"
|
||||
RPROVIDES_eglibc-extra-nss = "glibc-extra-nss"
|
||||
RPROVIDES_eglibc-thread-db = "glibc-thread-db"
|
||||
RPROVIDES_${PN}-pcprofile = "glibc-pcprofile"
|
||||
RPROVIDES_${PN}-dbg = "glibc-dbg"
|
||||
# The ld.so in this glibc supports the GNU_HASH
|
||||
RPROVIDES_${PN} = "eglibc rtld(GNU_HASH)"
|
||||
RPROVIDES_${PN}-utils = "eglibc-utils"
|
||||
RPROVIDES_${PN}-mtrace = "eglibc-mtrace libc-mtrace"
|
||||
RPROVIDES_${PN}-pic = "eglibc-pic"
|
||||
RPROVIDES_${PN}-dev = "eglibc-dev libc6-dev virtual-libc-dev"
|
||||
RPROVIDES_${PN}-staticdev = "eglibc-staticdev"
|
||||
RPROVIDES_${PN}-doc = "eglibc-doc"
|
||||
RPROVIDES_glibc-extra-nss = "eglibc-extra-nss"
|
||||
RPROVIDES_glibc-thread-db = "eglibc-thread-db"
|
||||
RPROVIDES_${PN}-pcprofile = "eglibc-pcprofile"
|
||||
RPROVIDES_${PN}-dbg = "eglibc-dbg"
|
||||
libc_baselibs = "${base_libdir}/libcrypt*.so.* ${base_libdir}/libcrypt-*.so ${base_libdir}/libc.so.* ${base_libdir}/libc-*.so ${base_libdir}/libm*.so.* ${base_libdir}/libm-*.so ${base_libdir}/ld*.so.* ${base_libdir}/ld-*.so ${base_libdir}/libpthread*.so.* ${base_libdir}/libpthread-*.so ${base_libdir}/libresolv*.so.* ${base_libdir}/libresolv-*.so ${base_libdir}/librt*.so.* ${base_libdir}/librt-*.so ${base_libdir}/libutil*.so.* ${base_libdir}/libutil-*.so ${base_libdir}/libnsl*.so.* ${base_libdir}/libnsl-*.so ${base_libdir}/libnss_files*.so.* ${base_libdir}/libnss_files-*.so ${base_libdir}/libnss_compat*.so.* ${base_libdir}/libnss_compat-*.so ${base_libdir}/libnss_dns*.so.* ${base_libdir}/libnss_dns-*.so ${base_libdir}/libdl*.so.* ${base_libdir}/libdl-*.so ${base_libdir}/libanl*.so.* ${base_libdir}/libanl-*.so ${base_libdir}/libBrokenLocale*.so.* ${base_libdir}/libBrokenLocale-*.so"
|
||||
|
||||
FILES_${PN} = "${libc_baselibs} ${libexecdir}/* ${@base_conditional('USE_LDCONFIG', '1', '${base_sbindir}/ldconfig ${sysconfdir}/ld.so.conf', '', d)}"
|
||||
|
@ -38,7 +38,7 @@ FILES_ldd = "${bindir}/ldd"
|
|||
FILES_libsegfault = "${base_libdir}/libSegFault*"
|
||||
FILES_libcidn = "${base_libdir}/libcidn-*.so ${base_libdir}/libcidn.so.*"
|
||||
FILES_libmemusage = "${base_libdir}/libmemusage.so"
|
||||
FILES_eglibc-extra-nss = "${base_libdir}/libnss_*-*.so ${base_libdir}/libnss_*.so.*"
|
||||
FILES_glibc-extra-nss = "${base_libdir}/libnss_*-*.so ${base_libdir}/libnss_*.so.*"
|
||||
FILES_sln = "${base_sbindir}/sln"
|
||||
FILES_${PN}-pic = "${libdir}/*_pic.a ${libdir}/*_pic.map ${libdir}/libc_pic/*.o"
|
||||
FILES_libsotruss = "${libdir}/audit/sotruss-lib.so"
|
||||
|
@ -53,7 +53,7 @@ FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/audit/.debug"
|
|||
FILES_catchsegv = "${bindir}/catchsegv"
|
||||
RDEPENDS_catchsegv = "libsegfault"
|
||||
FILES_${PN}-pcprofile = "${base_libdir}/libpcprofile.so"
|
||||
FILES_eglibc-thread-db = "${base_libdir}/libthread_db.so.* ${base_libdir}/libthread_db-*.so"
|
||||
FILES_glibc-thread-db = "${base_libdir}/libthread_db.so.* ${base_libdir}/libthread_db-*.so"
|
||||
RPROVIDES_${PN}-dev += "libc-dev"
|
||||
RPROVIDES_${PN}-staticdev += "libc-staticdev"
|
||||
|
||||
|
@ -61,11 +61,11 @@ SUMMARY_sln = "The static ln"
|
|||
DESCRIPTION_sln = "Similar to the 'ln' utility, but statically linked. sln is useful to make symbolic links to dynamic libraries if the dynamic linking system, for some reason, is not functional."
|
||||
SUMMARY_nscd = "Name service cache daemon"
|
||||
DESCRIPTION_nscd = "nscd, name service cache daemon, caches name service lookups for the passwd, group and hosts information. It can damatically improvide performance with remote, such as NIS or NIS+, name services."
|
||||
SUMMARY_eglibc-extra-nss = "hesiod, NIS and NIS+ nss libraries"
|
||||
DESCRIPTION_eglibc-extra-nss = "eglibc: nis, nisplus and hesiod search services."
|
||||
SUMMARY_glibc-extra-nss = "hesiod, NIS and NIS+ nss libraries"
|
||||
DESCRIPTION_glibc-extra-nss = "glibc: nis, nisplus and hesiod search services."
|
||||
SUMMARY_ldd = "print shared library dependencies"
|
||||
DESCRIPTION_ldd = "${bindir}/ldd prints shared library dependencies for each program or shared library specified on the command line."
|
||||
SUMMARY_${PN}-utils = "Miscellaneous utilities provided by eglibc"
|
||||
SUMMARY_${PN}-utils = "Miscellaneous utilities provided by glibc"
|
||||
DESCRIPTION_${PN}-utils = "Miscellaneous utilities including getconf, iconv, locale, gencat, rpcgen, ..."
|
||||
DESCRIPTION_libsotruss = "Library to support sotruss which traces calls through PLTs"
|
||||
DESCRIPTION_tzcode = "tzcode, timezone zoneinfo utils -- zic, zdump, tzselect"
|
||||
|
@ -76,9 +76,9 @@ do_install_append () {
|
|||
rm -f ${D}${sysconfdir}/localtime
|
||||
rm -rf ${D}${localstatedir}
|
||||
|
||||
# remove empty eglibc dir
|
||||
if [ -d ${D}${libdir}/eglibc -a ! -e ${D}${libdir}/eglibc/pt_chown ]; then
|
||||
rmdir ${D}${libdir}/eglibc
|
||||
# remove empty glibc dir
|
||||
if [ -d ${D}${libdir}/glibc -a ! -e ${D}${libdir}/glibc/pt_chown ]; then
|
||||
rmdir ${D}${libdir}/glibc
|
||||
fi
|
||||
oe_multilib_header bits/syscall.h
|
||||
|
||||
|
@ -95,7 +95,7 @@ do_install_append () {
|
|||
# We won't ship this file (see FILES above) so let's not install it
|
||||
rm -f ${D}${sysconfdir}/ld.so.conf
|
||||
# This directory will be empty now so remove it too.
|
||||
# But check whether it exists first, since it won't for eglibc-initial.
|
||||
# But check whether it exists first, since it won't for glibc-initial.
|
||||
if [ -d ${D}${sysconfdir} ]; then
|
||||
rmdir ${D}${sysconfdir}
|
||||
fi
|
||||
|
@ -103,7 +103,7 @@ do_install_append () {
|
|||
}
|
||||
|
||||
do_install_locale () {
|
||||
dest=${D}/${includedir}/eglibc-locale-internal-${MULTIMACH_TARGET_SYS}
|
||||
dest=${D}/${includedir}/glibc-locale-internal-${MULTIMACH_TARGET_SYS}
|
||||
install -d ${dest}${base_libdir} ${dest}${bindir} ${dest}${libdir} ${dest}${datadir}
|
||||
if [ "${base_libdir}" != "${libdir}" ]; then
|
||||
cp -fpPR ${D}${base_libdir}/* ${dest}${base_libdir}
|
||||
|
@ -130,7 +130,7 @@ addtask do_install_locale after do_install before do_populate_sysroot do_package
|
|||
bashscripts = "mtrace sotruss xtrace"
|
||||
|
||||
do_evacuate_scripts () {
|
||||
target=${D}${includedir}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}
|
||||
target=${D}${includedir}/glibc-scripts-internal-${MULTIMACH_TARGET_SYS}
|
||||
mkdir -p $target
|
||||
for i in ${bashscripts}; do
|
||||
if [ -f ${D}${bindir}/$i ]; then
|
||||
|
@ -141,11 +141,11 @@ do_evacuate_scripts () {
|
|||
|
||||
addtask evacuate_scripts after do_install before do_populate_sysroot do_package
|
||||
|
||||
PACKAGE_PREPROCESS_FUNCS += "eglibc_package_preprocess"
|
||||
PACKAGE_PREPROCESS_FUNCS += "glibc_package_preprocess"
|
||||
|
||||
eglibc_package_preprocess () {
|
||||
rm -rf ${PKGD}/${includedir}/eglibc-locale-internal-${MULTIMACH_TARGET_SYS}
|
||||
rm -rf ${PKGD}/${includedir}/eglibc-scripts-internal-${MULTIMACH_TARGET_SYS}
|
||||
glibc_package_preprocess () {
|
||||
rm -rf ${PKGD}/${includedir}/glibc-locale-internal-${MULTIMACH_TARGET_SYS}
|
||||
rm -rf ${PKGD}/${includedir}/glibc-scripts-internal-${MULTIMACH_TARGET_SYS}
|
||||
for i in ${bashscripts}; do
|
||||
rm -f ${PKGD}${bindir}/$i
|
||||
done
|
|
@ -0,0 +1,16 @@
|
|||
include glibc-collateral.inc
|
||||
|
||||
SUMMARY = "utility scripts provided by glibc"
|
||||
DESCRIPTION = "utility scripts provided by glibc"
|
||||
RDEPENDS_${PN} = "bash glibc-mtrace"
|
||||
|
||||
SRC = "${STAGING_INCDIR}/glibc-scripts-internal-${MULTIMACH_TARGET_SYS}"
|
||||
|
||||
bashscripts = "sotruss xtrace"
|
||||
|
||||
do_install() {
|
||||
install -d -m 0755 ${D}${bindir}
|
||||
for i in ${bashscripts}; do
|
||||
install -m 0755 ${SRC}/$i ${D}${bindir}/
|
||||
done
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
require glibc-scripts.inc
|
|
@ -1,46 +1,46 @@
|
|||
do_compile_append () {
|
||||
# now generate script to drive testing
|
||||
echo "#!/usr/bin/env sh" >${B}/${HOST_PREFIX}testeglibc
|
||||
set >> ${B}/${HOST_PREFIX}testeglibc
|
||||
echo "#!/usr/bin/env sh" >${B}/${HOST_PREFIX}testglibc
|
||||
set >> ${B}/${HOST_PREFIX}testglibc
|
||||
# prune out the unneeded vars
|
||||
sed -i -e "/^BASH/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^USER/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^OPT/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^DIRSTACK/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^EUID/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^FUNCNAME/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^GROUPS/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^HOST/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^HOME/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^IFS/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^LC_ALL/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^LOGNAME/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^MACHTYPE/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^OSTYPE/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^PIPE/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^SHELL/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^'/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^UID/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^TERM/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^PATCH_GET/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^PKG_/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^POSIXLY_/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^PPID/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^PS4/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^Q/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^SHLVL/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^STAGING/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^LD_LIBRARY_PATH/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^PSEUDO/d" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "/^BASH/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^USER/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^OPT/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^DIRSTACK/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^EUID/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^FUNCNAME/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^GROUPS/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^HOST/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^HOME/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^IFS/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^LC_ALL/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^LOGNAME/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^MACHTYPE/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^OSTYPE/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^PIPE/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^SHELL/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^'/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^UID/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^TERM/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^PATCH_GET/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^PKG_/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^POSIXLY_/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^PPID/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^PS4/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^Q/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^SHLVL/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^STAGING/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^LD_LIBRARY_PATH/d" ${B}/${HOST_PREFIX}testglibc
|
||||
sed -i -e "/^PSEUDO/d" ${B}/${HOST_PREFIX}testglibc
|
||||
|
||||
# point to real sysroot not the toolchain bootstrap sysroot
|
||||
sed -i -e "s/\-tcbootstrap//g" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "s/\-tcbootstrap//g" ${B}/${HOST_PREFIX}testglibc
|
||||
|
||||
# use the final cross-gcc to test since some tests need libstdc++
|
||||
sed -i -e "s/^PATH=.*\.gcc-cross-initial\:/PATH=/g" ${B}/${HOST_PREFIX}testeglibc
|
||||
sed -i -e "s/^PATH=.*\.gcc-cross-initial\:/PATH=/g" ${B}/${HOST_PREFIX}testglibc
|
||||
|
||||
# append execution part script
|
||||
cat >> ${B}/${HOST_PREFIX}testeglibc << STOP
|
||||
cat >> ${B}/${HOST_PREFIX}testglibc << STOP
|
||||
target="\$1"
|
||||
if [ "x\$target" = "x" ]
|
||||
then
|
||||
|
@ -59,7 +59,7 @@ then
|
|||
echo " Please make sure that you have 'no_root_squash' added in /etc/exports if you want"
|
||||
echo " to test as root user on target (usually its recommended to create a non"
|
||||
echo " root user."
|
||||
echo " As a sanity check make sure that target can read/write to the eglibc build tree"
|
||||
echo " As a sanity check make sure that target can read/write to the glibc build tree"
|
||||
echo " Please refer to ${S}/EGLIBC.cross-testing for further instructions on setup"
|
||||
exit 1
|
||||
fi
|
||||
|
@ -75,5 +75,5 @@ make cross-localedef="\$localedef" cross-test-wrapper="\$wrapper" -k check
|
|||
rm -rf ${B}/configparms
|
||||
STOP
|
||||
|
||||
chmod +x ${B}/${HOST_PREFIX}testeglibc
|
||||
chmod +x ${B}/${HOST_PREFIX}testglibc
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
require eglibc-common.inc
|
||||
require eglibc-ld.inc
|
||||
require eglibc-testing.inc
|
||||
require glibc-common.inc
|
||||
require glibc-ld.inc
|
||||
require glibc-testing.inc
|
||||
|
||||
STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
|
||||
STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${TARGET_ARCH}"
|
||||
|
@ -8,12 +8,12 @@ PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
|
|||
|
||||
TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TCBOOTSTRAP}"
|
||||
|
||||
# eglibc can't be built without optimization, if someone tries to compile an
|
||||
# glibc can't be built without optimization, if someone tries to compile an
|
||||
# entire image as -O0, we override it with -O2 here and give a note about it.
|
||||
def get_optimization(d):
|
||||
selected_optimization = d.getVar("SELECTED_OPTIMIZATION", True)
|
||||
if bb.utils.contains("SELECTED_OPTIMIZATION", "-O0", "x", "", d) == "x":
|
||||
bb.note("eglibc can't be built with -O0, -O2 will be used instead.")
|
||||
bb.note("glibc can't be built with -O0, -O2 will be used instead.")
|
||||
return selected_optimization.replace("-O0", "-O2")
|
||||
return selected_optimization
|
||||
|
||||
|
@ -39,7 +39,7 @@ DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial libgcc-initial linux-libc-headers
|
|||
PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc"
|
||||
PROVIDES += "virtual/libintl virtual/libiconv"
|
||||
inherit autotools texinfo distro_features_check
|
||||
require eglibc-options.inc
|
||||
require glibc-options.inc
|
||||
|
||||
# The main purpose of setting this variable is to prevent users from accidently
|
||||
# overriding DISTRO_FEATRUES, causing obscure build failures because of lack
|
||||
|
@ -63,19 +63,19 @@ INHIBIT_DEFAULT_DEPS = "1"
|
|||
|
||||
ARM_INSTRUCTION_SET = "arm"
|
||||
|
||||
# eglibc uses PARALLELMFLAGS variable to pass parallel build info so transfer
|
||||
# glibc uses PARALLELMFLAGS variable to pass parallel build info so transfer
|
||||
# PARALLEL_MAKE into PARALLELMFLAGS and empty out PARALLEL_MAKE
|
||||
EGLIBCPARALLELISM := "PARALLELMFLAGS="${PARALLEL_MAKE}""
|
||||
EXTRA_OEMAKE[vardepsexclude] += "EGLIBCPARALLELISM"
|
||||
EXTRA_OEMAKE += "${EGLIBCPARALLELISM}"
|
||||
PARALLEL_MAKE = ""
|
||||
|
||||
# eglibc make-syscalls.sh has a number of issues with /bin/dash and
|
||||
# glibc make-syscalls.sh has a number of issues with /bin/dash and
|
||||
# it's output which make calls via the SHELL also has issues, so
|
||||
# ensure make uses /bin/bash
|
||||
EXTRA_OEMAKE += "SHELL=/bin/bash"
|
||||
|
||||
OE_FEATURES = "${@features_to_eglibc_settings(d)}"
|
||||
OE_FEATURES = "${@features_to_glibc_settings(d)}"
|
||||
do_configure_prepend() {
|
||||
sed -e "s#@BASH@#/bin/sh#" -i ${S}/elf/ldd.bash.in
|
||||
echo '${OE_FEATURES}' > ${B}/option-groups.config
|
||||
|
@ -89,4 +89,4 @@ do_configure_append() {
|
|||
sed -i 's/^OPTION_EGLIBC_NSSWITCH_FIXED_\(.*\)="\(.*\)"$/OPTION_EGLIBC_NSSWITCH_FIXED_\1=\2/' option-groups.config
|
||||
}
|
||||
|
||||
GLIBC_ADDONS ?= "ports,nptl,libidn"
|
||||
GLIBC_ADDONS ?= "nptl,libidn"
|
|
@ -0,0 +1,45 @@
|
|||
From 07299d036672c86b278256e55ae0cbdae8f751fd Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Aug 2014 16:46:14 -0700
|
||||
Subject: [PATCH] Define __GI_fegetenv for e500 libm
|
||||
|
||||
generic HAVE_RM_CTX implementation which is used for ppc/e500 as well
|
||||
has introduced calls to fegetenv which should be resolved internally
|
||||
with in libm
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Submitted
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c | 1 +
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 6261ed4..629ea8e 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2014-08-29 Khem Raj <raj.khem@gmail.com>
|
||||
+
|
||||
+ * sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c (fegetenv): Add
|
||||
+ libm_hidden_ver.
|
||||
+
|
||||
2014-08-27 Allan McRae <allan@archlinux.org>
|
||||
|
||||
* sysdeps/i386/fpu/libm-test-ulps: Update ULPs.
|
||||
diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c
|
||||
index 2ae06b8..5faabe8 100644
|
||||
--- a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c
|
||||
+++ b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c
|
||||
@@ -43,5 +43,6 @@ __fegetenv (fenv_t *envp)
|
||||
strong_alias (__fegetenv, __old_fegetenv)
|
||||
compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1);
|
||||
#endif
|
||||
+libm_hidden_ver (__fegetenv, fegetenv)
|
||||
|
||||
versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2);
|
||||
--
|
||||
2.1.0
|
||||
|
|
@ -41,9 +41,11 @@ Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com>
|
|||
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,
|
||||
Index: git/sysdeps/arm/dl-machine.h
|
||||
===================================================================
|
||||
--- git.orig/sysdeps/arm/dl-machine.h 2014-08-27 05:30:47.748070587 +0000
|
||||
+++ git/sysdeps/arm/dl-machine.h 2014-08-27 05:30:47.740070587 +0000
|
||||
@@ -495,7 +495,7 @@
|
||||
|
||||
case R_ARM_TLS_DTPOFF32:
|
||||
if (sym != NULL)
|
||||
|
@ -52,5 +54,3 @@ ndex 8d905e8..dcfa71e 100644
|
|||
break;
|
||||
|
||||
case R_ARM_TLS_TPOFF32:
|
||||
--
|
||||
|
|
@ -17,11 +17,11 @@ 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
|
||||
Index: git/manual/Makefile
|
||||
===================================================================
|
||||
--- git.orig/manual/Makefile 2014-08-29 10:35:18.728070587 -0700
|
||||
+++ git/manual/Makefile 2014-08-29 10:35:18.720070587 -0700
|
||||
@@ -105,7 +105,8 @@
|
||||
$(objpfx)stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\
|
||||
$(dir)/libm-test-ulps))
|
||||
pwd=`pwd`; \
|
||||
|
@ -31,6 +31,3 @@ index 6fddff0..7af242e 100644
|
|||
$(move-if-change) $(objpfx)libm-err-tmp $(objpfx)libm-err.texi
|
||||
touch $@
|
||||
|
||||
--
|
||||
1.7.9.7
|
||||
|
|
@ -0,0 +1,529 @@
|
|||
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: git/elf/dl-open.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-open.c 2014-08-27 05:03:59.732070587 +0000
|
||||
+++ git/elf/dl-open.c 2014-08-27 05:05:25.656070587 +0000
|
||||
@@ -147,7 +147,7 @@
|
||||
ns->_ns_main_searchlist->r_list[new_nlist++] = map;
|
||||
|
||||
/* We modify the global scope. Report this. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_SCOPES))
|
||||
_dl_debug_printf ("\nadd %s [%lu] to global scope\n",
|
||||
map->l_name, map->l_ns);
|
||||
}
|
||||
@@ -243,7 +243,7 @@
|
||||
if (__glibc_unlikely (new->l_searchlist.r_list != NULL))
|
||||
{
|
||||
/* Let the user know about the opencount. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_FILES))
|
||||
_dl_debug_printf ("opening file=%s [%lu]; direct_opencount=%u\n\n",
|
||||
new->l_name, new->l_ns, new->l_direct_opencount);
|
||||
|
||||
@@ -294,7 +294,7 @@
|
||||
LIBC_PROBE (map_complete, 3, args->nsid, r, new);
|
||||
|
||||
/* Print scope information. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_SCOPES))
|
||||
_dl_show_scope (new, 0);
|
||||
|
||||
/* Only do lazy relocation if `LD_BIND_NOW' is not set. */
|
||||
@@ -511,7 +511,7 @@
|
||||
}
|
||||
|
||||
/* Print scope information. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_SCOPES))
|
||||
_dl_show_scope (imap, from_scope);
|
||||
}
|
||||
|
||||
@@ -584,7 +584,7 @@
|
||||
#endif
|
||||
|
||||
/* Let the user know about the opencount. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_FILES))
|
||||
_dl_debug_printf ("opening file=%s [%lu]; direct_opencount=%u\n\n",
|
||||
new->l_name, new->l_ns, new->l_direct_opencount);
|
||||
}
|
||||
Index: git/elf/rtld.c
|
||||
===================================================================
|
||||
--- git.orig/elf/rtld.c 2014-08-27 05:03:59.732070587 +0000
|
||||
+++ git/elf/rtld.c 2014-08-27 05:12:33.812070587 +0000
|
||||
@@ -321,7 +321,7 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_STATISTICS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_STATISTICS))
|
||||
{
|
||||
#ifndef HP_TIMING_NONAVAIL
|
||||
print_statistics (&rtld_total_time);
|
||||
@@ -1699,7 +1699,7 @@
|
||||
after relocation. */
|
||||
struct link_map *l;
|
||||
|
||||
- if (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK)
|
||||
+ if (GLRO_dl_debug_mask & DL_DEBUG_PRELINK)
|
||||
{
|
||||
struct r_scope_elem *scope = &main_map->l_searchlist;
|
||||
|
||||
@@ -1729,7 +1729,7 @@
|
||||
_dl_printf ("\n");
|
||||
}
|
||||
}
|
||||
- else if (GLRO(dl_debug_mask) & DL_DEBUG_UNUSED)
|
||||
+ else if (GLRO_dl_debug_mask & DL_DEBUG_UNUSED)
|
||||
{
|
||||
/* Look through the dependencies of the main executable
|
||||
and determine which of them is not actually
|
||||
@@ -1837,7 +1837,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if ((GLRO(dl_debug_mask) & DL_DEBUG_PRELINK)
|
||||
+ if ((GLRO_dl_debug_mask & DL_DEBUG_PRELINK)
|
||||
&& rtld_multiple_ref)
|
||||
{
|
||||
/* Mark the link map as not yet relocated again. */
|
||||
@@ -1970,7 +1970,7 @@
|
||||
if (r_list == r_listend && liblist == liblistend)
|
||||
prelinked = true;
|
||||
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_LIBS))
|
||||
_dl_debug_printf ("\nprelink checking: %s\n",
|
||||
prelinked ? "ok" : "failed");
|
||||
}
|
||||
@@ -1988,7 +1988,7 @@
|
||||
GLRO(dl_init_all_dirs) = GL(dl_all_dirs);
|
||||
|
||||
/* Print scope information. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_SCOPES))
|
||||
{
|
||||
_dl_debug_printf ("\nInitial object scopes\n");
|
||||
|
||||
@@ -2262,7 +2262,7 @@
|
||||
if (debopts[cnt].len == len
|
||||
&& memcmp (dl_debug, debopts[cnt].name, len) == 0)
|
||||
{
|
||||
- GLRO(dl_debug_mask) |= debopts[cnt].mask;
|
||||
+ GLRO_dl_debug_mask |= debopts[cnt].mask;
|
||||
any_debug = 1;
|
||||
break;
|
||||
}
|
||||
@@ -2283,7 +2283,7 @@
|
||||
++dl_debug;
|
||||
}
|
||||
|
||||
- if (GLRO(dl_debug_mask) & DL_DEBUG_UNUSED)
|
||||
+ if (GLRO_dl_debug_mask & DL_DEBUG_UNUSED)
|
||||
{
|
||||
/* In order to get an accurate picture of whether a particular
|
||||
DT_NEEDED entry is actually used we have to process both
|
||||
@@ -2291,7 +2291,7 @@
|
||||
GLRO(dl_lazy) = 0;
|
||||
}
|
||||
|
||||
- if (GLRO(dl_debug_mask) & DL_DEBUG_HELP)
|
||||
+ if (GLRO_dl_debug_mask & DL_DEBUG_HELP)
|
||||
{
|
||||
size_t cnt;
|
||||
|
||||
@@ -2490,7 +2490,7 @@
|
||||
{
|
||||
mode = trace;
|
||||
GLRO(dl_verbose) = 1;
|
||||
- GLRO(dl_debug_mask) |= DL_DEBUG_PRELINK;
|
||||
+ GLRO_dl_debug_mask |= DL_DEBUG_PRELINK;
|
||||
GLRO(dl_trace_prelink) = &envline[17];
|
||||
}
|
||||
break;
|
||||
@@ -2537,7 +2537,7 @@
|
||||
if (__access ("/etc/suid-debug", F_OK) != 0)
|
||||
{
|
||||
unsetenv ("MALLOC_CHECK_");
|
||||
- GLRO(dl_debug_mask) = 0;
|
||||
+ GLRO_dl_debug_mask = 0;
|
||||
}
|
||||
|
||||
if (mode != normal)
|
||||
Index: git/elf/dl-lookup.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-lookup.c 2014-08-27 05:03:59.732070587 +0000
|
||||
+++ git/elf/dl-lookup.c 2014-08-27 05:13:07.644070587 +0000
|
||||
@@ -300,7 +300,7 @@
|
||||
hash table. */
|
||||
if (__glibc_unlikely (tab->size))
|
||||
{
|
||||
- assert (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK);
|
||||
+ assert (GLRO_dl_debug_mask & DL_DEBUG_PRELINK);
|
||||
goto success;
|
||||
}
|
||||
#endif
|
||||
@@ -375,7 +375,7 @@
|
||||
continue;
|
||||
|
||||
/* Print some debugging info if wanted. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_SYMBOLS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_SYMBOLS))
|
||||
_dl_debug_printf ("symbol=%s; lookup in file=%s [%lu]\n",
|
||||
undef_name, DSO_FILENAME (map->l_name),
|
||||
map->l_ns);
|
||||
@@ -698,7 +698,7 @@
|
||||
}
|
||||
|
||||
/* Display information if we are debugging. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_FILES))
|
||||
_dl_debug_printf ("\
|
||||
\nfile=%s [%lu]; needed by %s [%lu] (relocation dependency)\n\n",
|
||||
DSO_FILENAME (map->l_name),
|
||||
@@ -802,7 +802,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 : "";
|
||||
@@ -873,7 +873,7 @@
|
||||
if (__glibc_unlikely (current_value.m->l_used == 0))
|
||||
current_value.m->l_used = 1;
|
||||
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask)
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask
|
||||
& (DL_DEBUG_BINDINGS|DL_DEBUG_PRELINK)))
|
||||
_dl_debug_bindings (undef_name, undef_map, ref,
|
||||
¤t_value, version, type_class, protected);
|
||||
@@ -938,7 +938,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'",
|
||||
DSO_FILENAME (reference_name),
|
||||
@@ -952,7 +952,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: git/elf/get-dynamic-info.h
|
||||
===================================================================
|
||||
--- git.orig/elf/get-dynamic-info.h 2014-08-27 05:03:59.732070587 +0000
|
||||
+++ git/elf/get-dynamic-info.h 2014-08-27 05:03:59.728070587 +0000
|
||||
@@ -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);
|
||||
Index: git/csu/libc-start.c
|
||||
===================================================================
|
||||
--- git.orig/csu/libc-start.c 2014-08-27 04:59:01.412070587 +0000
|
||||
+++ git/csu/libc-start.c 2014-08-27 05:09:28.936070587 +0000
|
||||
@@ -238,7 +238,7 @@
|
||||
|
||||
/* Call the initializer of the program, if any. */
|
||||
#ifdef SHARED
|
||||
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
|
||||
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_IMPCALLS, 0))
|
||||
GLRO(dl_debug_printf) ("\ninitialize program: %s\n\n", argv[0]);
|
||||
#endif
|
||||
if (init)
|
||||
@@ -261,7 +261,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef SHARED
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_IMPCALLS))
|
||||
GLRO(dl_debug_printf) ("\ntransferring control: %s\n\n", argv[0]);
|
||||
#endif
|
||||
|
||||
Index: git/elf/dl-cache.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-cache.c 2014-08-27 04:59:01.568070587 +0000
|
||||
+++ git/elf/dl-cache.c 2014-08-27 05:10:14.384070587 +0000
|
||||
@@ -187,7 +187,7 @@
|
||||
const char *best;
|
||||
|
||||
/* Print a message if the loading of libs is traced. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_LIBS))
|
||||
_dl_debug_printf (" search cache=%s\n", LD_SO_CACHE);
|
||||
|
||||
if (cache == NULL)
|
||||
@@ -285,7 +285,7 @@
|
||||
}
|
||||
|
||||
/* Print our result if wanted. */
|
||||
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS, 0)
|
||||
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_LIBS, 0)
|
||||
&& best != NULL)
|
||||
_dl_debug_printf (" trying file=%s\n", best);
|
||||
|
||||
Index: git/elf/dl-close.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-close.c 2014-08-27 04:59:01.568070587 +0000
|
||||
+++ git/elf/dl-close.c 2014-08-27 05:10:26.456070587 +0000
|
||||
@@ -125,7 +125,7 @@
|
||||
dl_close_state = rerun;
|
||||
|
||||
/* There are still references to this object. Do nothing more. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_FILES))
|
||||
_dl_debug_printf ("\nclosing file=%s; direct_opencount=%u\n",
|
||||
map->l_name, map->l_direct_opencount);
|
||||
|
||||
@@ -257,7 +257,7 @@
|
||||
if (imap->l_init_called)
|
||||
{
|
||||
/* When debugging print a message first. */
|
||||
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS,
|
||||
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_IMPCALLS,
|
||||
0))
|
||||
_dl_debug_printf ("\ncalling fini: %s [%lu]\n\n",
|
||||
imap->l_name, nsid);
|
||||
@@ -664,7 +664,7 @@
|
||||
free (imap->l_reldeps);
|
||||
|
||||
/* Print debugging message. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_FILES))
|
||||
_dl_debug_printf ("\nfile=%s [%lu]; destroying link map\n",
|
||||
imap->l_name, imap->l_ns);
|
||||
|
||||
Index: git/elf/dl-conflict.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-conflict.c 2014-08-27 04:59:01.568070587 +0000
|
||||
+++ git/elf/dl-conflict.c 2014-08-27 05:10:37.652070587 +0000
|
||||
@@ -32,7 +32,7 @@
|
||||
ElfW(Rela) *conflictend)
|
||||
{
|
||||
#if ! ELF_MACHINE_NO_RELA
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_RELOC))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_RELOC))
|
||||
_dl_debug_printf ("\nconflict processing: %s\n", DSO_FILENAME (l->l_name));
|
||||
|
||||
{
|
||||
Index: git/elf/dl-deps.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-deps.c 2014-08-27 04:59:01.568070587 +0000
|
||||
+++ git/elf/dl-deps.c 2014-08-27 05:10:48.260070587 +0000
|
||||
@@ -127,7 +127,7 @@
|
||||
else \
|
||||
{ \
|
||||
/* This is for DT_AUXILIARY. */ \
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS)) \
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_LIBS)) \
|
||||
_dl_debug_printf (N_("\
|
||||
cannot load auxiliary `%s' because of empty dynamic string token " \
|
||||
"substitution\n"), __str); \
|
||||
@@ -303,7 +303,7 @@
|
||||
args.name = name;
|
||||
|
||||
/* Say that we are about to load an auxiliary library. */
|
||||
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_LIBS,
|
||||
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_LIBS,
|
||||
0))
|
||||
_dl_debug_printf ("load auxiliary object=%s"
|
||||
" requested by file=%s\n",
|
||||
@@ -520,7 +520,7 @@
|
||||
runp->map->l_reserved = 0;
|
||||
}
|
||||
|
||||
- if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK, 0) != 0
|
||||
+ if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_PRELINK, 0) != 0
|
||||
&& map == GL(dl_ns)[LM_ID_BASE]._ns_loaded)
|
||||
{
|
||||
/* If we are to compute conflicts, we have to build local scope
|
||||
Index: git/elf/dl-error.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-error.c 2014-08-27 04:59:01.568070587 +0000
|
||||
+++ git/elf/dl-error.c 2014-08-27 05:11:06.752070587 +0000
|
||||
@@ -139,7 +139,7 @@
|
||||
_dl_signal_cerror (int errcode, const char *objname, const char *occation,
|
||||
const char *errstring)
|
||||
{
|
||||
- if (__builtin_expect (GLRO(dl_debug_mask)
|
||||
+ if (__builtin_expect (GLRO_dl_debug_mask
|
||||
& ~(DL_DEBUG_STATISTICS|DL_DEBUG_PRELINK), 0))
|
||||
_dl_debug_printf ("%s: error: %s: %s (%s)\n", objname, occation,
|
||||
errstring, receiver ? "continued" : "fatal");
|
||||
Index: git/elf/dl-fini.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-fini.c 2014-08-27 04:59:01.568070587 +0000
|
||||
+++ git/elf/dl-fini.c 2014-08-27 05:11:17.544070587 +0000
|
||||
@@ -234,7 +234,7 @@
|
||||
|| l->l_info[DT_FINI] != NULL)
|
||||
{
|
||||
/* When debugging print a message first. */
|
||||
- if (__builtin_expect (GLRO(dl_debug_mask)
|
||||
+ if (__builtin_expect (GLRO_dl_debug_mask
|
||||
& DL_DEBUG_IMPCALLS, 0))
|
||||
_dl_debug_printf ("\ncalling fini: %s [%lu]\n\n",
|
||||
DSO_FILENAME (l->l_name),
|
||||
@@ -286,7 +286,7 @@
|
||||
goto again;
|
||||
}
|
||||
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_STATISTICS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_STATISTICS))
|
||||
_dl_debug_printf ("\nruntime linker statistics:\n"
|
||||
" final number of relocations: %lu\n"
|
||||
"final number of relocations from cache: %lu\n",
|
||||
Index: git/elf/dl-init.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-init.c 2014-08-27 04:59:01.568070587 +0000
|
||||
+++ git/elf/dl-init.c 2014-08-27 05:11:28.372070587 +0000
|
||||
@@ -52,7 +52,7 @@
|
||||
return;
|
||||
|
||||
/* Print a debug message if wanted. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_IMPCALLS))
|
||||
_dl_debug_printf ("\ncalling init: %s\n\n",
|
||||
DSO_FILENAME (l->l_name));
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
ElfW(Addr) *addrs;
|
||||
unsigned int cnt;
|
||||
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_IMPCALLS))
|
||||
_dl_debug_printf ("\ncalling preinit: %s\n\n",
|
||||
DSO_FILENAME (main_map->l_name));
|
||||
|
||||
Index: git/elf/dl-load.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-load.c 2014-08-27 04:59:01.572070587 +0000
|
||||
+++ git/elf/dl-load.c 2014-08-27 05:11:41.156070587 +0000
|
||||
@@ -957,7 +957,7 @@
|
||||
}
|
||||
|
||||
/* Print debugging message. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_FILES))
|
||||
_dl_debug_printf ("file=%s [%lu]; generating link map\n", name, nsid);
|
||||
|
||||
/* This is the ELF header. We read it in `open_verify'. */
|
||||
@@ -1361,7 +1361,7 @@
|
||||
|
||||
l->l_entry += l->l_addr;
|
||||
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_FILES))
|
||||
_dl_debug_printf ("\
|
||||
dynamic: 0x%0*lx base: 0x%0*lx size: 0x%0*Zx\n\
|
||||
entry: 0x%0*lx phdr: 0x%0*lx phnum: %*u\n\n",
|
||||
@@ -1787,7 +1787,7 @@
|
||||
|
||||
/* If we are debugging the search for libraries print the path
|
||||
now if it hasn't happened now. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS)
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_LIBS)
|
||||
&& current_what != this_dir->what)
|
||||
{
|
||||
current_what = this_dir->what;
|
||||
@@ -1808,7 +1808,7 @@
|
||||
- buf);
|
||||
|
||||
/* Print name we try if this is wanted. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_LIBS))
|
||||
_dl_debug_printf (" trying file=%s\n", buf);
|
||||
|
||||
fd = open_verify (buf, fbp, loader, whatcode, mode,
|
||||
@@ -1953,7 +1953,7 @@
|
||||
}
|
||||
|
||||
/* Display information if we are debugging. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_FILES)
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_FILES)
|
||||
&& loader != NULL)
|
||||
_dl_debug_printf ((mode & __RTLD_CALLMAP) == 0
|
||||
? "\nfile=%s [%lu]; needed by %s [%lu]\n"
|
||||
@@ -1995,7 +1995,7 @@
|
||||
|
||||
size_t namelen = strlen (name) + 1;
|
||||
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_LIBS))
|
||||
_dl_debug_printf ("find library=%s [%lu]; searching\n", name, nsid);
|
||||
|
||||
fd = -1;
|
||||
@@ -2122,7 +2122,7 @@
|
||||
&realname, &fb, l, LA_SER_DEFAULT, &found_other_class);
|
||||
|
||||
/* Add another newline when we are tracing the library loading. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_LIBS))
|
||||
_dl_debug_printf ("\n");
|
||||
}
|
||||
else
|
||||
@@ -2155,7 +2155,7 @@
|
||||
if (__glibc_unlikely (fd == -1))
|
||||
{
|
||||
if (trace_mode
|
||||
- && __glibc_likely ((GLRO(dl_debug_mask) & DL_DEBUG_PRELINK) == 0))
|
||||
+ && __glibc_likely ((GLRO_dl_debug_mask & DL_DEBUG_PRELINK) == 0))
|
||||
{
|
||||
/* We haven't found an appropriate library. But since we
|
||||
are only interested in the list of libraries this isn't
|
||||
Index: git/elf/dl-object.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-object.c 2014-08-27 04:59:01.572070587 +0000
|
||||
+++ git/elf/dl-object.c 2014-08-27 05:11:51.756070587 +0000
|
||||
@@ -98,7 +98,7 @@
|
||||
new->l_type = type;
|
||||
/* If we set the bit now since we know it is never used we avoid
|
||||
dirtying the cache line later. */
|
||||
- if ((GLRO(dl_debug_mask) & DL_DEBUG_UNUSED) == 0)
|
||||
+ if ((GLRO_dl_debug_mask & DL_DEBUG_UNUSED) == 0)
|
||||
new->l_used = 1;
|
||||
new->l_loader = loader;
|
||||
#if NO_TLS_OFFSET != 0
|
||||
Index: git/elf/dl-reloc.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-reloc.c 2014-08-27 04:59:01.572070587 +0000
|
||||
+++ git/elf/dl-reloc.c 2014-08-27 05:12:07.056070587 +0000
|
||||
@@ -183,7 +183,7 @@
|
||||
&& __builtin_expect (l->l_info[DT_BIND_NOW] != NULL, 0))
|
||||
lazy = 0;
|
||||
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_RELOC))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_RELOC))
|
||||
_dl_debug_printf ("\nrelocation processing: %s%s\n",
|
||||
DSO_FILENAME (l->l_name), lazy ? " (lazy)" : "");
|
||||
|
||||
Index: git/elf/dl-version.c
|
||||
===================================================================
|
||||
--- git.orig/elf/dl-version.c 2014-08-27 04:59:01.608070587 +0000
|
||||
+++ git/elf/dl-version.c 2014-08-27 05:12:19.568070587 +0000
|
||||
@@ -82,7 +82,7 @@
|
||||
int result = 0;
|
||||
|
||||
/* Display information about what we are doing while debugging. */
|
||||
- if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_VERSIONS))
|
||||
+ if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_VERSIONS))
|
||||
_dl_debug_printf ("\
|
||||
checking for version `%s' in file %s [%lu] required by file %s [%lu]\n",
|
||||
string, DSO_FILENAME (map->l_name),
|
|
@ -2,11 +2,11 @@ import http://sourceware.org/ml/libc-ports/2007-12/msg00000.html
|
|||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Index: libc/bits/stdio-lock.h
|
||||
Index: git/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, _
|
||||
--- git.orig/bits/stdio-lock.h 2014-08-29 10:33:57.960070587 -0700
|
||||
+++ git/bits/stdio-lock.h 2014-08-29 10:33:57.952070587 -0700
|
||||
@@ -49,6 +49,8 @@
|
||||
_IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \
|
||||
_IO_flockfile (_fp)
|
||||
|
|
@ -6,11 +6,11 @@ Upstream-Status: Inapproriate [older kernel/perf specific]
|
|||
|
||||
Signed-off-by: Saul Wold <sgw@linux.intel.com>
|
||||
|
||||
Index: libc/posix/sys/wait.h
|
||||
Index: git/posix/sys/wait.h
|
||||
===================================================================
|
||||
--- libc.orig/posix/sys/wait.h
|
||||
+++ libc/posix/sys/wait.h
|
||||
@@ -28,6 +28,7 @@
|
||||
--- git.orig/posix/sys/wait.h 2014-08-29 10:35:10.432070587 -0700
|
||||
+++ git/posix/sys/wait.h 2014-08-29 10:35:10.424070587 -0700
|
||||
@@ -27,6 +27,7 @@
|
||||
__BEGIN_DECLS
|
||||
|
||||
#include <signal.h>
|
|
@ -0,0 +1,85 @@
|
|||
Taken from EGLIBC, r1484 + r1525
|
||||
|
||||
2007-02-20 Jim Blandy <jimb@codesourcery.com>
|
||||
|
||||
* Makefile (install-headers): Preserve old behavior: depend on
|
||||
$(inst_includedir)/gnu/stubs.h only if install-bootstrap-headers
|
||||
is set; otherwise, place gnu/stubs.h on the 'install-others' list.
|
||||
|
||||
2007-02-16 Jim Blandy <jimb@codesourcery.com>
|
||||
|
||||
* Makefile: Amend make install-headers to install everything
|
||||
necessary for building a cross-compiler. Install gnu/stubs.h as
|
||||
part of 'install-headers', not 'install-others'.
|
||||
If install-bootstrap-headers is 'yes', install a dummy copy of
|
||||
gnu/stubs.h, instead of computing the real thing.
|
||||
* include/stubs-bootstrap.h: New file.
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Index: git/Makefile
|
||||
===================================================================
|
||||
--- git.orig/Makefile 2014-08-27 18:35:18.908070587 +0000
|
||||
+++ git/Makefile 2014-08-27 18:35:19.340070587 +0000
|
||||
@@ -69,9 +69,18 @@
|
||||
vpath %.h $(subdir-dirs)
|
||||
|
||||
# What to install.
|
||||
-install-others = $(inst_includedir)/gnu/stubs.h
|
||||
install-bin-script =
|
||||
|
||||
+# If we're bootstrapping, install a dummy gnu/stubs.h along with the
|
||||
+# other headers, so 'make install-headers' produces a useable include
|
||||
+# tree. Otherwise, install gnu/stubs.h later, after the rest of the
|
||||
+# build is done.
|
||||
+ifeq ($(install-bootstrap-headers),yes)
|
||||
+install-headers: $(inst_includedir)/gnu/stubs.h
|
||||
+else
|
||||
+install-others = $(inst_includedir)/gnu/stubs.h
|
||||
+endif
|
||||
+
|
||||
ifeq (yes,$(build-shared))
|
||||
headers += gnu/lib-names.h
|
||||
endif
|
||||
@@ -151,6 +160,16 @@
|
||||
|
||||
subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)$(dir)/stubs)
|
||||
|
||||
+# gnu/stubs.h depends (via the subdir 'stubs' targets) on all the .o
|
||||
+# files in EGLIBC. For bootstrapping a GCC/EGLIBC pair, an empty
|
||||
+# gnu/stubs.h is good enough.
|
||||
+ifeq ($(install-bootstrap-headers),yes)
|
||||
+$(inst_includedir)/gnu/stubs.h: include/stubs-bootstrap.h $(+force)
|
||||
+ $(make-target-directory)
|
||||
+ $(INSTALL_DATA) $< $@
|
||||
+
|
||||
+installed-stubs =
|
||||
+else
|
||||
ifndef abi-variants
|
||||
installed-stubs = $(inst_includedir)/gnu/stubs.h
|
||||
else
|
||||
@@ -177,6 +196,7 @@
|
||||
|
||||
install-others-nosubdir: $(installed-stubs)
|
||||
endif
|
||||
+endif
|
||||
|
||||
|
||||
# Since stubs.h is never needed when building the library, we simplify the
|
||||
Index: git/include/stubs-bootstrap.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/include/stubs-bootstrap.h 2014-08-27 18:35:19.340070587 +0000
|
||||
@@ -0,0 +1,12 @@
|
||||
+/* Placeholder stubs.h file for bootstrapping.
|
||||
+
|
||||
+ When bootstrapping a GCC/EGLIBC pair, GCC requires that the EGLIBC
|
||||
+ headers be installed, but we can't fully build EGLIBC without that
|
||||
+ GCC. So we run the command:
|
||||
+
|
||||
+ make install-headers install-bootstrap-headers=yes
|
||||
+
|
||||
+ to install the headers GCC needs, but avoid building certain
|
||||
+ difficult headers. The <gnu/stubs.h> header depends, via the
|
||||
+ EGLIBC subdir 'stubs' make targets, on every .o file in EGLIBC, but
|
||||
+ an empty stubs.h like this will do fine for GCC. */
|
|
@ -0,0 +1,109 @@
|
|||
2008-02-07 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* Makerules (install-extras, install-map): New variables.
|
||||
(installed-libcs): Add libc_pic.a.
|
||||
(install-lib): Include _pic.a files for versioned shared
|
||||
libraries.
|
||||
(install-map-nosubdir, install-extras-nosubdir): Add rules for
|
||||
installing extra files.
|
||||
(install-no-libc.a-nosubdir): Depend on install-map-nosubdir and
|
||||
install-extras-nosubdir.
|
||||
|
||||
|
||||
2008-04-01 Maxim Kuvyrkov <maxim@codesourcery.com>
|
||||
|
||||
* Makerules (install-lib): Don't install libpthread_pic.a.
|
||||
(install-map): Don't install libpthread_pic.map.
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Index: git/Makerules
|
||||
===================================================================
|
||||
--- git.orig/Makerules 2014-08-27 18:49:22.552070587 +0000
|
||||
+++ git/Makerules 2014-08-27 18:49:27.308070587 +0000
|
||||
@@ -612,6 +631,9 @@
|
||||
$(common-objpfx)libc.so: $(common-objpfx)libc.map
|
||||
endif
|
||||
common-generated += libc.so libc_pic.os
|
||||
+ifndef subdir
|
||||
+install-extras := soinit.o sofini.o
|
||||
+endif
|
||||
ifdef libc.so-version
|
||||
$(common-objpfx)libc.so$(libc.so-version): $(common-objpfx)libc.so
|
||||
$(make-link)
|
||||
@@ -834,6 +856,7 @@
|
||||
installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\
|
||||
$(inst_libdir)/$(patsubst %,$(libtype$o),\
|
||||
$(libprefix)$(libc-name)))
|
||||
+installed-libcs := $(installed-libcs) $(inst_libdir)/libc_pic.a
|
||||
install: $(installed-libcs)
|
||||
$(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force)
|
||||
$(make-target-directory)
|
||||
@@ -862,6 +885,22 @@
|
||||
install-lib.so-versioned := $(filter $(versioned), $(install-lib.so))
|
||||
install-lib.so-unversioned := $(filter-out $(versioned), $(install-lib.so))
|
||||
|
||||
+# Install the _pic.a files for versioned libraries, and corresponding
|
||||
+# .map files.
|
||||
+# libpthread_pic.a breaks mklibs, so don't install it and its map.
|
||||
+install-lib := $(install-lib) $(install-lib.so-versioned:%.so=%_pic.a)
|
||||
+install-lib := $(filter-out libpthread_pic.a,$(install-lib))
|
||||
+# Despite having a soname libhurduser and libmachuser do not use symbol
|
||||
+# versioning, so don't install the corresponding .map files.
|
||||
+ifeq ($(build-shared),yes)
|
||||
+install-map := $(patsubst %.so,%.map,\
|
||||
+ $(foreach L,$(install-lib.so-versioned),$(notdir $L)))
|
||||
+install-map := $(filter-out libhurduser.map libmachuser.map libpthread.map,$(install-map))
|
||||
+ifndef subdir
|
||||
+install-map := $(install-map) libc.map
|
||||
+endif
|
||||
+endif
|
||||
+
|
||||
# For versioned libraries, we install three files:
|
||||
# $(inst_libdir)/libfoo.so -- for linking, symlink or ld script
|
||||
# $(inst_slibdir)/libfoo.so.NN -- for loading by SONAME, symlink
|
||||
@@ -1103,9 +1142,22 @@
|
||||
endif # headers-nonh
|
||||
endif # headers
|
||||
|
||||
+ifdef install-map
|
||||
+$(addprefix $(inst_libdir)/,$(patsubst lib%.map,lib%_pic.map,$(install-map))): \
|
||||
+ $(inst_libdir)/lib%_pic.map: $(common-objpfx)lib%.map $(+force)
|
||||
+ $(do-install)
|
||||
+endif
|
||||
+
|
||||
+ifdef install-extras
|
||||
+$(addprefix $(inst_libdir)/libc_pic/,$(install-extras)): \
|
||||
+ $(inst_libdir)/libc_pic/%.o: $(elfobjdir)/%.os $(+force)
|
||||
+ $(do-install)
|
||||
+endif
|
||||
+
|
||||
.PHONY: install-bin-nosubdir install-bin-script-nosubdir \
|
||||
install-rootsbin-nosubdir install-sbin-nosubdir install-lib-nosubdir \
|
||||
- install-data-nosubdir install-headers-nosubdir
|
||||
+ install-data-nosubdir install-headers-nosubdir install-map-nosubdir \
|
||||
+ install-extras-nosubdir
|
||||
install-bin-nosubdir: $(addprefix $(inst_bindir)/,$(install-bin))
|
||||
install-bin-script-nosubdir: $(addprefix $(inst_bindir)/,$(install-bin-script))
|
||||
install-rootsbin-nosubdir: \
|
||||
@@ -1118,6 +1170,10 @@
|
||||
install-headers-nosubdir: $(addprefix $(inst_includedir)/,$(headers))
|
||||
install-others-nosubdir: $(install-others)
|
||||
install-others-programs-nosubdir: $(install-others-programs)
|
||||
+install-map-nosubdir: $(addprefix $(inst_libdir)/,\
|
||||
+ $(patsubst lib%.map,lib%_pic.map,$(install-map)))
|
||||
+install-extras-nosubdir: $(addprefix $(inst_libdir)/libc_pic/,\
|
||||
+ $(install-extras))
|
||||
|
||||
# We need all the `-nosubdir' targets so that `install' in the parent
|
||||
# doesn't depend on several things which each iterate over the subdirs.
|
||||
@@ -1127,7 +1183,8 @@
|
||||
|
||||
.PHONY: install install-no-libc.a-nosubdir
|
||||
install-no-libc.a-nosubdir: install-headers-nosubdir install-data-nosubdir \
|
||||
- install-lib-nosubdir install-others-nosubdir
|
||||
+ install-lib-nosubdir install-others-nosubdir \
|
||||
+ install-map-nosubdir install-extras-nosubdir
|
||||
ifeq ($(build-programs),yes)
|
||||
install-no-libc.a-nosubdir: install-bin-nosubdir install-bin-script-nosubdir \
|
||||
install-rootsbin-nosubdir install-sbin-nosubdir \
|
|
@ -0,0 +1,68 @@
|
|||
2007-06-13 Nathan Sidwell <nathan@codesourcery.com>
|
||||
Mark Shinwell <shinwell@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/libc-start.c
|
||||
(__libc_start_main): Detect 8xx parts and clear
|
||||
__cache_line_size if detected.
|
||||
* sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
|
||||
(DL_PLATFORM_AUXV): Likewise.
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Index: git/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
|
||||
===================================================================
|
||||
--- git.orig/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c 2014-08-27 18:49:23.996070587 +0000
|
||||
+++ git/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c 2014-08-27 18:49:27.332070587 +0000
|
||||
@@ -24,9 +24,21 @@
|
||||
/* Scan the Aux Vector for the "Data Cache Block Size" entry. If found
|
||||
verify that the static extern __cache_line_size is defined by checking
|
||||
for not NULL. If it is defined then assign the cache block size
|
||||
- value to __cache_line_size. */
|
||||
+ value to __cache_line_size. This is used by memset to
|
||||
+ optimize setting to zero. We have to detect 8xx processors, which
|
||||
+ have buggy dcbz implementations that cannot report page faults
|
||||
+ correctly. That requires reading SPR, which is a privileged
|
||||
+ operation. Fortunately 2.2.18 and later emulates PowerPC mfspr
|
||||
+ reads from the PVR register. */
|
||||
#define DL_PLATFORM_AUXV \
|
||||
case AT_DCACHEBSIZE: \
|
||||
+ if (__LINUX_KERNEL_VERSION >= 0x020218) \
|
||||
+ { \
|
||||
+ unsigned pvr = 0; \
|
||||
+ asm ("mfspr %0, 287" : "=r" (pvr)); \
|
||||
+ if ((pvr & 0xffff0000) == 0x00500000) \
|
||||
+ break; \
|
||||
+ } \
|
||||
__cache_line_size = av->a_un.a_val; \
|
||||
break;
|
||||
|
||||
Index: git/sysdeps/unix/sysv/linux/powerpc/libc-start.c
|
||||
===================================================================
|
||||
--- git.orig/sysdeps/unix/sysv/linux/powerpc/libc-start.c 2014-08-27 18:49:23.996070587 +0000
|
||||
+++ git/sysdeps/unix/sysv/linux/powerpc/libc-start.c 2014-08-27 18:49:27.332070587 +0000
|
||||
@@ -68,11 +68,24 @@
|
||||
rtld_fini = NULL;
|
||||
}
|
||||
|
||||
- /* Initialize the __cache_line_size variable from the aux vector. */
|
||||
+ /* Initialize the __cache_line_size variable from the aux vector.
|
||||
+ This is used by memset to optimize setting to zero. We have to
|
||||
+ detect 8xx processors, which have buggy dcbz implementations that
|
||||
+ cannot report page faults correctly. That requires reading SPR,
|
||||
+ which is a privileged operation. Fortunately 2.2.18 and later
|
||||
+ emulates PowerPC mfspr reads from the PVR register. */
|
||||
for (ElfW (auxv_t) * av = auxvec; av->a_type != AT_NULL; ++av)
|
||||
switch (av->a_type)
|
||||
{
|
||||
case AT_DCACHEBSIZE:
|
||||
+ if (__LINUX_KERNEL_VERSION >= 0x020218)
|
||||
+ {
|
||||
+ unsigned pvr = 0;
|
||||
+
|
||||
+ asm ("mfspr %0, 287" : "=r" (pvr) :);
|
||||
+ if ((pvr & 0xffff0000) == 0x00500000)
|
||||
+ break;
|
||||
+ }
|
||||
__cache_line_size = av->a_un.a_val;
|
||||
break;
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
cherry-picked from http://www.eglibc.org/archives/patches/msg00772.html
|
||||
|
||||
It hasnt yet been merged into glibc
|
||||
|
||||
Signed-off-by: Khem Raj
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Index: git/resolv/res_libc.c
|
||||
===================================================================
|
||||
--- git.orig/resolv/res_libc.c 2014-08-27 18:35:15.492070587 +0000
|
||||
+++ git/resolv/res_libc.c 2014-08-27 18:35:19.204070587 +0000
|
||||
@@ -22,12 +22,13 @@
|
||||
#include <arpa/nameser.h>
|
||||
#include <resolv.h>
|
||||
#include <bits/libc-lock.h>
|
||||
-
|
||||
+#include <sys/stat.h>
|
||||
|
||||
/* The following bit is copied from res_data.c (where it is #ifdef'ed
|
||||
out) since res_init() should go into libc.so but the rest of that
|
||||
file should not. */
|
||||
|
||||
+__libc_lock_define_initialized (static, lock);
|
||||
extern unsigned long long int __res_initstamp attribute_hidden;
|
||||
/* We have atomic increment operations on 64-bit platforms. */
|
||||
#if __WORDSIZE == 64
|
||||
@@ -35,7 +36,6 @@
|
||||
# define atomicincunlock(lock) (void) 0
|
||||
# define atomicinc(var) catomic_increment (&(var))
|
||||
#else
|
||||
-__libc_lock_define_initialized (static, lock);
|
||||
# define atomicinclock(lock) __libc_lock_lock (lock)
|
||||
# define atomicincunlock(lock) __libc_lock_unlock (lock)
|
||||
# define atomicinc(var) ++var
|
||||
@@ -94,7 +94,18 @@
|
||||
int
|
||||
__res_maybe_init (res_state resp, int preinit)
|
||||
{
|
||||
+ static time_t last_mtime;
|
||||
+ struct stat statbuf;
|
||||
+ int ret;
|
||||
+
|
||||
if (resp->options & RES_INIT) {
|
||||
+ ret = stat (_PATH_RESCONF, &statbuf);
|
||||
+ __libc_lock_lock (lock);
|
||||
+ if ((ret == 0) && (last_mtime != statbuf.st_mtime)) {
|
||||
+ last_mtime = statbuf.st_mtime;
|
||||
+ atomicinc (__res_initstamp);
|
||||
+ }
|
||||
+ __libc_lock_unlock (lock);
|
||||
if (__res_initstamp != resp->_u._ext.initstamp) {
|
||||
if (resp->nscount > 0)
|
||||
__res_iclose (resp, true);
|
|
@ -0,0 +1,42 @@
|
|||
2010-09-29 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
|
||||
Andrew Stubbs <ams@codesourcery.com>
|
||||
|
||||
Resolve SH's __fpscr_values to symbol in libc.so.
|
||||
|
||||
* sysdeps/sh/sh4/fpu/fpu_control.h: Add C++ __set_fpscr prototype.
|
||||
* sysdeps/unix/sysv/linux/sh/Versions (GLIBC_2.2): Add __fpscr_values.
|
||||
* sysdeps/unix/sysv/linux/sh/sysdep.S (___fpscr_values): New constant.
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Index: git/sysdeps/unix/sysv/linux/sh/sysdep.S
|
||||
===================================================================
|
||||
--- git.orig/sysdeps/unix/sysv/linux/sh/sysdep.S 2014-08-27 18:49:24.036070587 +0000
|
||||
+++ git/sysdeps/unix/sysv/linux/sh/sysdep.S 2014-08-27 18:49:27.332070587 +0000
|
||||
@@ -30,3 +30,14 @@
|
||||
|
||||
#define __syscall_error __syscall_error_1
|
||||
#include <sysdeps/unix/sh/sysdep.S>
|
||||
+
|
||||
+ .data
|
||||
+ .align 3
|
||||
+ .globl ___fpscr_values
|
||||
+ .type ___fpscr_values, @object
|
||||
+ .size ___fpscr_values, 8
|
||||
+___fpscr_values:
|
||||
+ .long 0
|
||||
+ .long 0x80000
|
||||
+weak_alias (___fpscr_values, __fpscr_values)
|
||||
+
|
||||
Index: git/sysdeps/unix/sysv/linux/sh/Versions
|
||||
===================================================================
|
||||
--- git.orig/sysdeps/unix/sysv/linux/sh/Versions 2014-08-27 18:49:24.028070587 +0000
|
||||
+++ git/sysdeps/unix/sysv/linux/sh/Versions 2014-08-27 18:49:27.332070587 +0000
|
||||
@@ -2,6 +2,7 @@
|
||||
GLIBC_2.2 {
|
||||
# functions used in other libraries
|
||||
__xstat64; __fxstat64; __lxstat64;
|
||||
+ __fpscr_values;
|
||||
|
||||
# a*
|
||||
alphasort64;
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,602 @@
|
|||
Instruction documents from eglibc
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Index: git/EGLIBC.cross-building
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/EGLIBC.cross-building 2014-08-27 07:27:25.580070587 +0000
|
||||
@@ -0,0 +1,383 @@
|
||||
+ -*- mode: text -*-
|
||||
+
|
||||
+ Cross-Compiling EGLIBC
|
||||
+ Jim Blandy <jimb@codesourcery.com>
|
||||
+
|
||||
+
|
||||
+Introduction
|
||||
+
|
||||
+Most GNU tools have a simple build procedure: you run their
|
||||
+'configure' script, and then you run 'make'. Unfortunately, the
|
||||
+process of cross-compiling the GNU C library is quite a bit more
|
||||
+involved:
|
||||
+
|
||||
+1) Build a cross-compiler, with certain facilities disabled.
|
||||
+
|
||||
+2) Configure the C library using the compiler you built in step 1).
|
||||
+ Build a few of the C run-time object files, but not the rest of the
|
||||
+ library. Install the library's header files and the run-time
|
||||
+ object files, and create a dummy libc.so.
|
||||
+
|
||||
+3) Build a second cross-compiler, using the header files and object
|
||||
+ files you installed in step 2.
|
||||
+
|
||||
+4) Configure, build, and install a fresh C library, using the compiler
|
||||
+ built in step 3.
|
||||
+
|
||||
+5) Build a third cross-compiler, based on the C library built in step 4.
|
||||
+
|
||||
+The reason for this complexity is that, although GCC and the GNU C
|
||||
+library are distributed separately, they are not actually independent
|
||||
+of each other: GCC requires the C library's headers and some object
|
||||
+files to compile its own libraries, while the C library depends on
|
||||
+GCC's libraries. EGLIBC includes features and bug fixes to the stock
|
||||
+GNU C library that simplify this process, but the fundamental
|
||||
+interdependency stands.
|
||||
+
|
||||
+In this document, we explain how to cross-compile an EGLIBC/GCC pair
|
||||
+from source. Our intended audience is developers who are already
|
||||
+familiar with the GNU toolchain and comfortable working with
|
||||
+cross-development tools. While we do present a worked example to
|
||||
+accompany the explanation, for clarity's sake we do not cover many of
|
||||
+the options available to cross-toolchain users.
|
||||
+
|
||||
+
|
||||
+Preparation
|
||||
+
|
||||
+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, 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 an ARM target, known to the Linux kernel
|
||||
+as 'arm', and we'll do the build on an Intel x86_64 Linux box:
|
||||
+
|
||||
+ $ build=x86_64-pc-linux-gnu
|
||||
+ $ host=$build
|
||||
+ $ target=arm-none-linux-gnueabi
|
||||
+ $ linux_arch=arm
|
||||
+
|
||||
+We're using the aforementioned versions of Binutils, GCC, and Linux:
|
||||
+
|
||||
+ $ 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 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/$target
|
||||
+ $ src=$HOME/cross-build/src
|
||||
+ $ ls $src
|
||||
+ 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
|
||||
+place our sysroot (containing files to be installed on the target
|
||||
+system) in 'sysroot':
|
||||
+
|
||||
+ $ obj=$top/obj
|
||||
+ $ tools=$top/tools
|
||||
+ $ sysroot=$top/sysroot
|
||||
+
|
||||
+
|
||||
+Binutils
|
||||
+
|
||||
+Configuring and building binutils for the target is straightforward:
|
||||
+
|
||||
+ $ mkdir -p $obj/binutils
|
||||
+ $ cd $obj/binutils
|
||||
+ $ $src/$binutilsv/configure \
|
||||
+ > --target=$target \
|
||||
+ > --prefix=$tools \
|
||||
+ > --with-sysroot=$sysroot
|
||||
+ $ make
|
||||
+ $ make install
|
||||
+
|
||||
+
|
||||
+The First GCC
|
||||
+
|
||||
+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
|
||||
+built yet).
|
||||
+
|
||||
+Fortunately, there are configuration options for GCC which tell it not
|
||||
+to build 'libgcc_s.so'. The '--without-headers' option is supposed to
|
||||
+take care of this, but its implementation is incomplete, so you must
|
||||
+also configure with the '--with-newlib' option. While '--with-newlib'
|
||||
+appears to mean "Use the Newlib C library", its effect is to tell the
|
||||
+GCC build machinery, "Don't assume there is a C library available."
|
||||
+
|
||||
+We also need to disable some of the libraries that would normally be
|
||||
+built along with GCC, and specify that only the compiler for the C
|
||||
+language is needed.
|
||||
+
|
||||
+So, we create a build directory, configure, make, and install.
|
||||
+
|
||||
+ $ mkdir -p $obj/gcc1
|
||||
+ $ cd $obj/gcc1
|
||||
+ $ $src/$gccv/configure \
|
||||
+ > --target=$target \
|
||||
+ > --prefix=$tools \
|
||||
+ > --without-headers --with-newlib \
|
||||
+ > --disable-shared --disable-threads --disable-libssp \
|
||||
+ > --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
|
||||
+
|
||||
+
|
||||
+Linux Kernel Headers
|
||||
+
|
||||
+To configure EGLIBC, we also need Linux kernel headers in place.
|
||||
+Fortunately, the Linux makefiles have a target that installs them for
|
||||
+us. Since the process does modify the source tree a bit, we make a
|
||||
+copy first:
|
||||
+
|
||||
+ $ cp -r $src/$linuxv $obj/linux
|
||||
+ $ cd $obj/linux
|
||||
+
|
||||
+Now we're ready to install the headers into the sysroot:
|
||||
+
|
||||
+ $ PATH=$tools/bin:$PATH \
|
||||
+ > make headers_install \
|
||||
+ > ARCH=$linux_arch CROSS_COMPILE=$target- \
|
||||
+ > INSTALL_HDR_PATH=$sysroot/usr
|
||||
+
|
||||
+
|
||||
+EGLIBC Headers and Preliminary Objects
|
||||
+
|
||||
+Using the cross-compiler we've just built, we can now configure EGLIBC
|
||||
+well enough to install the headers and build the object files that the
|
||||
+full cross-compiler will need:
|
||||
+
|
||||
+ $ mkdir -p $obj/eglibc-headers
|
||||
+ $ cd $obj/eglibc-headers
|
||||
+ $ BUILD_CC=gcc \
|
||||
+ > CC=$tools/bin/$target-gcc \
|
||||
+ > CXX=$tools/bin/$target-g++ \
|
||||
+ > AR=$tools/bin/$target-ar \
|
||||
+ > RANLIB=$tools/bin/$target-ranlib \
|
||||
+ > $src/eglibc/libc/configure \
|
||||
+ > --prefix=/usr \
|
||||
+ > --with-headers=$sysroot/usr/include \
|
||||
+ > --build=$build \
|
||||
+ > --host=$target \
|
||||
+ > --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,
|
||||
+EGLIBC's build system checks whether the prefix is '/usr', and does
|
||||
+special handling only if that is the case. Unless you use this
|
||||
+prefix, you will get a sysroot that does not use the standard Linux
|
||||
+directory layouts and cannot be used as a basis for the root
|
||||
+filesystem on your target system compatibly with normal GLIBC
|
||||
+installations.
|
||||
+
|
||||
+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:
|
||||
+
|
||||
+ $ make install-headers install_root=$sysroot \
|
||||
+ > install-bootstrap-headers=yes
|
||||
+
|
||||
+The 'install_root' variable indicates where the files should actually
|
||||
+be installed; its value is treated as the parent of the '--prefix'
|
||||
+directory we passed to the configure script, so the headers will go in
|
||||
+'$sysroot/usr/include'. The 'install-bootstrap-headers' variable
|
||||
+requests special handling for certain tricky header files.
|
||||
+
|
||||
+Next, there are a few object files needed to link shared libraries,
|
||||
+which we build and install by hand:
|
||||
+
|
||||
+ $ mkdir -p $sysroot/usr/lib
|
||||
+ $ make csu/subdir_lib
|
||||
+ $ cp csu/crt1.o csu/crti.o csu/crtn.o $sysroot/usr/lib
|
||||
+
|
||||
+Finally, 'libgcc_s.so' requires a 'libc.so' to link against. However,
|
||||
+since we will never actually execute its code, it doesn't matter what
|
||||
+it contains. So, treating '/dev/null' as a C source file, we produce
|
||||
+a dummy 'libc.so' in one step:
|
||||
+
|
||||
+ $ $tools/bin/$target-gcc -nostdlib -nostartfiles -shared -x c /dev/null \
|
||||
+ > -o $sysroot/usr/lib/libc.so
|
||||
+
|
||||
+
|
||||
+The Second GCC
|
||||
+
|
||||
+With the EGLIBC headers and selected object files installed, we can
|
||||
+now build a GCC that is capable of compiling EGLIBC. We configure,
|
||||
+build, and install the second GCC, again building only the C compiler,
|
||||
+and avoiding libraries we won't use:
|
||||
+
|
||||
+ $ mkdir -p $obj/gcc2
|
||||
+ $ cd $obj/gcc2
|
||||
+ $ $src/$gccv/configure \
|
||||
+ > --target=$target \
|
||||
+ > --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
|
||||
+
|
||||
+
|
||||
+EGLIBC, Complete
|
||||
+
|
||||
+With the second compiler built and installed, we're now ready for the
|
||||
+full EGLIBC build:
|
||||
+
|
||||
+ $ mkdir -p $obj/eglibc
|
||||
+ $ cd $obj/eglibc
|
||||
+ $ BUILD_CC=gcc \
|
||||
+ > CC=$tools/bin/$target-gcc \
|
||||
+ > CXX=$tools/bin/$target-g++ \
|
||||
+ > AR=$tools/bin/$target-ar \
|
||||
+ > RANLIB=$tools/bin/$target-ranlib \
|
||||
+ > $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=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
|
||||
+menuconfig'. These tools can be re-used by EGLIBC for its own 'make
|
||||
+*config' support, which will create 'option-groups.config' for you.
|
||||
+But first make sure those tools have been built by running some
|
||||
+dummy 'make *config' calls in the kernel directory:
|
||||
+
|
||||
+ $ cd $obj/linux
|
||||
+ $ PATH=$tools/bin:$PATH make config \
|
||||
+ > ARCH=$linux_arch CROSS_COMPILE=$target- \
|
||||
+ $ PATH=$tools/bin:$PATH make menuconfig \
|
||||
+ > ARCH=$linux_arch CROSS_COMPILE=$target- \
|
||||
+
|
||||
+Now we can configure and build the full EGLIBC:
|
||||
+
|
||||
+ $ cd $obj/eglibc
|
||||
+ $ PATH=$tools/bin:$PATH make defconfig
|
||||
+ $ PATH=$tools/bin:$PATH make menuconfig
|
||||
+ $ PATH=$tools/bin:$PATH make
|
||||
+ $ PATH=$tools/bin:$PATH make install install_root=$sysroot
|
||||
+
|
||||
+At this point, we have a complete EGLIBC installation in '$sysroot',
|
||||
+with header files, library files, and most of the C runtime startup
|
||||
+files in place.
|
||||
+
|
||||
+
|
||||
+The Third GCC
|
||||
+
|
||||
+Finally, we recompile GCC against this full installation, enabling
|
||||
+whatever languages and libraries we would like to use:
|
||||
+
|
||||
+ $ mkdir -p $obj/gcc3
|
||||
+ $ cd $obj/gcc3
|
||||
+ $ $src/$gccv/configure \
|
||||
+ > --target=$target \
|
||||
+ > --prefix=$tools \
|
||||
+ > --with-sysroot=$sysroot \
|
||||
+ > --enable-__cxa_atexit \
|
||||
+ > --disable-libssp --disable-libgomp --disable-libmudflap \
|
||||
+ > --enable-languages=c,c++
|
||||
+ $ PATH=$tools/bin:$PATH make
|
||||
+ $ PATH=$tools/bin:$PATH make install
|
||||
+
|
||||
+The '--enable-__cxa_atexit' option tells GCC what sort of C++
|
||||
+destructor support to expect from the C library; it's required with
|
||||
+EGLIBC.
|
||||
+
|
||||
+And since GCC's installation process isn't designed to help construct
|
||||
+sysroot trees, we must manually copy certain libraries into place in
|
||||
+the sysroot.
|
||||
+
|
||||
+ $ cp -d $tools/$target/lib/libgcc_s.so* $sysroot/lib
|
||||
+ $ cp -d $tools/$target/lib/libstdc++.so* $sysroot/usr/lib
|
||||
+
|
||||
+
|
||||
+Trying Things Out
|
||||
+
|
||||
+At this point, '$tools' contains a cross toolchain ready to use
|
||||
+the EGLIBC installation in '$sysroot':
|
||||
+
|
||||
+ $ cat > hello.c <<EOF
|
||||
+ > #include <stdio.h>
|
||||
+ > int
|
||||
+ > main (int argc, char **argv)
|
||||
+ > {
|
||||
+ > puts ("Hello, world!");
|
||||
+ > return 0;
|
||||
+ > }
|
||||
+ > EOF
|
||||
+ $ $tools/bin/$target-gcc -Wall hello.c -o hello
|
||||
+ $ cat > c++-hello.cc <<EOF
|
||||
+ > #include <iostream>
|
||||
+ > int
|
||||
+ > main (int argc, char **argv)
|
||||
+ > {
|
||||
+ > std::cout << "Hello, C++ world!" << std::endl;
|
||||
+ > return 0;
|
||||
+ > }
|
||||
+ > EOF
|
||||
+ $ $tools/bin/$target-g++ -Wall c++-hello.cc -o c++-hello
|
||||
+
|
||||
+
|
||||
+We can use 'readelf' to verify that these are indeed executables for
|
||||
+our target, using our dynamic linker:
|
||||
+
|
||||
+ $ $tools/bin/$target-readelf -hl hello
|
||||
+ ELF Header:
|
||||
+ ...
|
||||
+ Type: EXEC (Executable file)
|
||||
+ Machine: ARM
|
||||
+
|
||||
+ ...
|
||||
+ Program Headers:
|
||||
+ Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
|
||||
+ PHDR 0x000034 0x10000034 0x10000034 0x00100 0x00100 R E 0x4
|
||||
+ 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
|
||||
+that the 'NEEDED' entry for the C library does include the '.6'
|
||||
+suffix, indicating that was linked against our fully build EGLIBC, and
|
||||
+not our dummy 'libc.so':
|
||||
+
|
||||
+ $ $tools/bin/$target-readelf -d $sysroot/lib/libgcc_s.so.1
|
||||
+ Dynamic section at offset 0x1083c contains 24 entries:
|
||||
+ Tag Type Name/Value
|
||||
+ 0x00000001 (NEEDED) Shared library: [libc.so.6]
|
||||
+ 0x0000000e (SONAME) Library soname: [libgcc_s.so.1]
|
||||
+ ...
|
||||
+
|
||||
+
|
||||
+And on the target machine, we can run our programs:
|
||||
+
|
||||
+ $ $sysroot/lib/ld.so.1 --library-path $sysroot/lib:$sysroot/usr/lib \
|
||||
+ > ./hello
|
||||
+ Hello, world!
|
||||
+ $ $sysroot/lib/ld.so.1 --library-path $sysroot/lib:$sysroot/usr/lib \
|
||||
+ > ./c++-hello
|
||||
+ Hello, C++ world!
|
||||
Index: git/EGLIBC.cross-testing
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/EGLIBC.cross-testing 2014-08-27 07:24:41.532070587 +0000
|
||||
@@ -0,0 +1,205 @@
|
||||
+ -*- mode: text -*-
|
||||
+
|
||||
+ Cross-Testing With EGLIBC
|
||||
+ Jim Blandy <jimb@codesourcery.com>
|
||||
+
|
||||
+
|
||||
+Introduction
|
||||
+
|
||||
+Developers writing software for embedded systems often use a desktop
|
||||
+or other similarly capable computer for development, but need to run
|
||||
+tests on the embedded system, or perhaps on a simulator. When
|
||||
+configured for cross-compilation, the stock GNU C library simply
|
||||
+disables running tests altogether: the command 'make tests' builds
|
||||
+test programs, but does not run them. EGLIBC, however, provides
|
||||
+facilities for compiling tests and generating data files on the build
|
||||
+system, but running the test programs themselves on a remote system or
|
||||
+simulator.
|
||||
+
|
||||
+
|
||||
+Test environment requirements
|
||||
+
|
||||
+The test environment must meet certain conditions for EGLIBC's
|
||||
+cross-testing facilities to work:
|
||||
+
|
||||
+- Shared filesystems. The 'build' system, on which you configure and
|
||||
+ compile EGLIBC, and the 'host' system, on which you intend to run
|
||||
+ EGLIBC, must share a filesystem containing the EGLIBC build and
|
||||
+ source trees. Files must appear at the same paths on both systems.
|
||||
+
|
||||
+- Remote-shell like invocation. There must be a way to run a program
|
||||
+ on the host system from the build system, passing it properly quoted
|
||||
+ command-line arguments, setting environment variables, and
|
||||
+ inheriting the caller's standard input and output.
|
||||
+
|
||||
+
|
||||
+Usage
|
||||
+
|
||||
+To use EGLIBC's cross-testing support, provide values for the
|
||||
+following Make variables when you invoke 'make':
|
||||
+
|
||||
+- cross-test-wrapper
|
||||
+
|
||||
+ This should be the name of the cross-testing wrapper command, along
|
||||
+ with any arguments.
|
||||
+
|
||||
+- cross-localedef
|
||||
+
|
||||
+ This should be the name of a cross-capable localedef program, like
|
||||
+ that included in the EGLIBC 'localedef' module, along with any
|
||||
+ arguments needed.
|
||||
+
|
||||
+These are each explained in detail below.
|
||||
+
|
||||
+
|
||||
+The Cross-Testing Wrapper
|
||||
+
|
||||
+To run test programs reliably, the stock GNU C library takes care to
|
||||
+ensure that test programs use the newly compiled dynamic linker and
|
||||
+shared libraries, and never the host system's installed libraries. To
|
||||
+accomplish this, it runs the tests by explicitly invoking the dynamic
|
||||
+linker from the build tree, passing it a list of build tree
|
||||
+directories to search for shared libraries, followed by the name of
|
||||
+the executable to run and its arguments.
|
||||
+
|
||||
+For example, where one might normally run a test program like this:
|
||||
+
|
||||
+ $ ./tst-foo arg1 arg2
|
||||
+
|
||||
+the GNU C library might run that program like this:
|
||||
+
|
||||
+ $ $objdir/elf/ld-linux.so.3 --library-path $objdir \
|
||||
+ ./tst-foo arg1 arg2
|
||||
+
|
||||
+(where $objdir is the path to the top of the build tree, and the
|
||||
+trailing backslash indicates a continuation of the command). In other
|
||||
+words, each test program invocation is 'wrapped up' inside an explicit
|
||||
+invocation of the dynamic linker, which must itself execute the test
|
||||
+program, having loaded shared libraries from the appropriate
|
||||
+directories.
|
||||
+
|
||||
+To support cross-testing, EGLIBC allows the developer to optionally
|
||||
+set the 'cross-test-wrapper' Make variable to another wrapper command,
|
||||
+to which it passes the entire dynamic linker invocation shown above as
|
||||
+arguments. For example, if the developer supplies a wrapper of
|
||||
+'my-wrapper hostname', then EGLIBC would run the test above as
|
||||
+follows:
|
||||
+
|
||||
+ $ my-wrapper hostname \
|
||||
+ $objdir/elf/ld-linux.so.3 --library-path $objdir \
|
||||
+ ./tst-foo arg1 arg2
|
||||
+
|
||||
+The 'my-wrapper' command is responsible for executing the command
|
||||
+given on the host system.
|
||||
+
|
||||
+Since tests are run in varying directories, the wrapper should either
|
||||
+be in your command search path, or 'cross-test-wrapper' should give an
|
||||
+absolute path for the wrapper.
|
||||
+
|
||||
+The wrapper must meet several requirements:
|
||||
+
|
||||
+- It must preserve the current directory. As explained above, the
|
||||
+ build directory tree must be visible on both the build and host
|
||||
+ systems, at the same path. The test wrapper must ensure that the
|
||||
+ current directory it inherits is also inherited by the dynamic
|
||||
+ linker (and thus the test program itself).
|
||||
+
|
||||
+- It must preserve environment variables' values. Many EGLIBC tests
|
||||
+ set environment variables for test runs; in native testing, it
|
||||
+ invokes programs like this:
|
||||
+
|
||||
+ $ GCONV_PATH=$objdir/iconvdata \
|
||||
+ $objdir/elf/ld-linux.so.3 --library-path $objdir \
|
||||
+ ./tst-foo arg1 arg2
|
||||
+
|
||||
+ With the cross-testing wrapper, that invocation becomes:
|
||||
+
|
||||
+ $ GCONV_PATH=$objdir/iconvdata \
|
||||
+ my-wrapper hostname \
|
||||
+ $objdir/elf/ld-linux.so.3 --library-path $objdir \
|
||||
+ ./tst-foo arg1 arg2
|
||||
+
|
||||
+ Here, 'my-wrapper' must ensure that the value it sees for
|
||||
+ 'GCONV_PATH' will be seen by the dynamic linker, and thus 'tst-foo'
|
||||
+ itself. (The wrapper supplied with GLIBC simply preserves the
|
||||
+ values of *all* enviroment variables, with a fixed set of
|
||||
+ exceptions.)
|
||||
+
|
||||
+ If your wrapper is a shell script, take care to correctly propagate
|
||||
+ environment variables whose values contain spaces and shell
|
||||
+ metacharacters.
|
||||
+
|
||||
+- It must pass the command's arguments, unmodified. The arguments
|
||||
+ seen by the test program should be exactly those seen by the wrapper
|
||||
+ (after whatever arguments are given to the wrapper itself). The
|
||||
+ EGLIBC test framework performs all needed shell word splitting and
|
||||
+ expansion (wildcard expansion, parameter substitution, and so on)
|
||||
+ before invoking the wrapper; further expansion may break the tests.
|
||||
+
|
||||
+
|
||||
+The 'cross-test-ssh.sh' script
|
||||
+
|
||||
+If you want to use 'ssh' (or something sufficiently similar) to run
|
||||
+test programs on your host system, EGLIBC includes a shell script,
|
||||
+'scripts/cross-test-ssh.sh', which you can use as your wrapper
|
||||
+command. This script takes care of setting the test command's current
|
||||
+directory, propagating environment variable values, and carrying
|
||||
+command-line arguments, all across an 'ssh' connection. You may even
|
||||
+supply an alternative to 'ssh' on the command line, if needed.
|
||||
+
|
||||
+For more details, pass 'cross-test-ssh.sh' the '--help' option.
|
||||
+
|
||||
+
|
||||
+The Cross-Compiling Locale Definition Command
|
||||
+
|
||||
+Some EGLIBC tests rely on locales generated especially for the test
|
||||
+process. In a native configuration, these tests simply run the
|
||||
+'localedef' command built by the normal EGLIBC build process,
|
||||
+'locale/localedef', to process and install their locales. However, in
|
||||
+a cross-compiling configuration, this 'localedef' is built for the
|
||||
+host system, not the build system, and since it requires quite a bit
|
||||
+of memory to run (we have seen it fail on systems with 64MiB of
|
||||
+memory), it may not be practical to run it on the host system.
|
||||
+
|
||||
+If set, EGLIBC uses the 'cross-localedef' Make variable as the command
|
||||
+to run on the build system to process and install locales. The
|
||||
+localedef program built from the EGLIBC 'localedef' module is
|
||||
+suitable.
|
||||
+
|
||||
+The value of 'cross-localedef' may also include command-line arguments
|
||||
+to be passed to the program; if you are using EGLIBC's 'localedef',
|
||||
+you may include endianness and 'uint32_t' alignment arguments here.
|
||||
+
|
||||
+
|
||||
+Example
|
||||
+
|
||||
+In developing EGLIBC's cross-testing facility, we invoked 'make' with
|
||||
+the following script:
|
||||
+
|
||||
+ #!/bin/sh
|
||||
+
|
||||
+ srcdir=...
|
||||
+ test_hostname=...
|
||||
+ localedefdir=...
|
||||
+ cross_gxx=...-g++
|
||||
+
|
||||
+ wrapper="$srcdir/scripts/cross-test-ssh.sh $test_hostname"
|
||||
+ localedef="$localedefdir/localedef --little-endian --uint32-align=4"
|
||||
+
|
||||
+ make cross-test-wrapper="$wrapper" \
|
||||
+ cross-localedef="$localedef" \
|
||||
+ CXX="$cross_gxx" \
|
||||
+ "$@"
|
||||
+
|
||||
+
|
||||
+Other Cross-Testing Concerns
|
||||
+
|
||||
+Here are notes on some other issues which you may encounter in running
|
||||
+the EGLIBC tests in a cross-compiling environment:
|
||||
+
|
||||
+- Some tests require a C++ cross-compiler; you should set the 'CXX'
|
||||
+ Make variable to the name of an appropriate cross-compiler.
|
||||
+
|
||||
+- Some tests require access to libstdc++.so.6 and libgcc_s.so.1; we
|
||||
+ simply place copies of these libraries in the top EGLIBC build
|
||||
+ directory.
|
|
@ -10,11 +10,11 @@ Upstream-Status: Pending
|
|||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Index: libc/localedata/locales/bo_CN
|
||||
Index: git/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 @@
|
||||
--- git.orig/localedata/locales/bo_CN 2014-08-29 10:35:22.464070587 -0700
|
||||
+++ git/localedata/locales/bo_CN 2014-08-29 10:35:22.456070587 -0700
|
||||
@@ -146,7 +146,7 @@
|
||||
LC_NAME
|
||||
% FIXME
|
||||
|
||||
|
@ -23,11 +23,11 @@ Index: libc/localedata/locales/bo_CN
|
|||
% name_gen "FIXME"
|
||||
% name_miss "FIXME"
|
||||
% name_mr "FIXME"
|
||||
Index: libc/localedata/locales/bo_IN
|
||||
Index: git/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 @@
|
||||
--- git.orig/localedata/locales/bo_IN 2014-08-29 10:35:22.464070587 -0700
|
||||
+++ git/localedata/locales/bo_IN 2014-08-29 10:35:22.456070587 -0700
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
LC_NAME
|
||||
% FIXME
|
|
@ -0,0 +1,29 @@
|
|||
sysdeps/gnu/configure.ac: handle correctly $libc_cv_rootsbindir
|
||||
|
||||
Upstream-Status:Pending
|
||||
Signed-off-by: Matthieu Crapet <Matthieu.Crapet@ingenico.com>
|
||||
|
||||
Index: git/sysdeps/gnu/configure
|
||||
===================================================================
|
||||
--- git.orig/sysdeps/gnu/configure 2014-08-27 07:24:38.572070587 +0000
|
||||
+++ git/sysdeps/gnu/configure 2014-08-27 07:24:41.308070587 +0000
|
||||
@@ -32,6 +32,6 @@
|
||||
else
|
||||
libc_cv_localstatedir=$localstatedir
|
||||
fi
|
||||
- libc_cv_rootsbindir=/sbin
|
||||
+ test -n "$libc_cv_rootsbindir" || libc_cv_rootsbindir=/sbin
|
||||
;;
|
||||
esac
|
||||
Index: git/sysdeps/gnu/configure.ac
|
||||
===================================================================
|
||||
--- git.orig/sysdeps/gnu/configure.ac 2014-08-27 07:24:38.572070587 +0000
|
||||
+++ git/sysdeps/gnu/configure.ac 2014-08-27 07:24:41.308070587 +0000
|
||||
@@ -21,6 +21,6 @@
|
||||
else
|
||||
libc_cv_localstatedir=$localstatedir
|
||||
fi
|
||||
- libc_cv_rootsbindir=/sbin
|
||||
+ test -n "$libc_cv_rootsbindir" || libc_cv_rootsbindir=/sbin
|
||||
;;
|
||||
esac
|
|
@ -7,12 +7,12 @@ emit fsqrt intructions
|
|||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Index: libc/sysdeps/powerpc/fpu/math_private.h
|
||||
Index: git/sysdeps/powerpc/fpu/math_private.h
|
||||
===================================================================
|
||||
--- libc.orig/sysdeps/powerpc/fpu/math_private.h
|
||||
+++ libc/sysdeps/powerpc/fpu/math_private.h
|
||||
--- git.orig/sysdeps/powerpc/fpu/math_private.h 2014-08-29 10:31:30.224070587 -0700
|
||||
+++ git/sysdeps/powerpc/fpu/math_private.h 2014-08-29 10:31:30.212070587 -0700
|
||||
@@ -25,10 +25,12 @@
|
||||
#include <dl-procinfo.h>
|
||||
#include <fenv_private.h>
|
||||
#include_next <math_private.h>
|
||||
|
||||
-# if __WORDSIZE == 64 || defined _ARCH_PWR4
|
||||
|
@ -28,10 +28,10 @@ Index: libc/sysdeps/powerpc/fpu/math_private.h
|
|||
# endif
|
||||
|
||||
extern double __slow_ieee754_sqrt (double);
|
||||
Index: libc/ports/sysdeps/powerpc/powerpc64/e5500/fpu/math_private.h
|
||||
Index: git/sysdeps/powerpc/powerpc64/e5500/fpu/math_private.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/ports/sysdeps/powerpc/powerpc64/e5500/fpu/math_private.h
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc64/e5500/fpu/math_private.h 2014-08-29 10:31:30.212070587 -0700
|
||||
@@ -0,0 +1,9 @@
|
||||
+#ifndef _E5500_MATH_PRIVATE_H_
|
||||
+#define _E5500_MATH_PRIVATE_H_ 1
|
||||
|
@ -42,10 +42,10 @@ Index: libc/ports/sysdeps/powerpc/powerpc64/e5500/fpu/math_private.h
|
|||
+#include_next <math_private.h>
|
||||
+
|
||||
+#endif /* _E5500_MATH_PRIVATE_H_ */
|
||||
Index: libc/ports/sysdeps/powerpc/powerpc64/e6500/fpu/math_private.h
|
||||
Index: git/sysdeps/powerpc/powerpc64/e6500/fpu/math_private.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/ports/sysdeps/powerpc/powerpc64/e6500/fpu/math_private.h
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc64/e6500/fpu/math_private.h 2014-08-29 10:31:30.212070587 -0700
|
||||
@@ -0,0 +1,9 @@
|
||||
+#ifndef _E6500_MATH_PRIVATE_H_
|
||||
+#define _E6500_MATH_PRIVATE_H_ 1
|
||||
|
@ -56,10 +56,10 @@ Index: libc/ports/sysdeps/powerpc/powerpc64/e6500/fpu/math_private.h
|
|||
+#include_next <math_private.h>
|
||||
+
|
||||
+#endif /* _E6500_MATH_PRIVATE_H_ */
|
||||
Index: libc/ports/sysdeps/powerpc/powerpc32/e500mc/fpu/math_private.h
|
||||
Index: git/sysdeps/powerpc/powerpc32/e500mc/fpu/math_private.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/ports/sysdeps/powerpc/powerpc32/e500mc/fpu/math_private.h
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc32/e500mc/fpu/math_private.h 2014-08-29 10:31:30.212070587 -0700
|
||||
@@ -0,0 +1,9 @@
|
||||
+#ifndef _E500MC_MATH_PRIVATE_H_
|
||||
+#define _E500MC_MATH_PRIVATE_H_ 1
|
||||
|
@ -70,10 +70,10 @@ Index: libc/ports/sysdeps/powerpc/powerpc32/e500mc/fpu/math_private.h
|
|||
+#include_next <math_private.h>
|
||||
+
|
||||
+#endif /* _E500MC_MATH_PRIVATE_H_ */
|
||||
Index: libc/ports/sysdeps/powerpc/powerpc32/e5500/fpu/math_private.h
|
||||
Index: git/sysdeps/powerpc/powerpc32/e5500/fpu/math_private.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/ports/sysdeps/powerpc/powerpc32/e5500/fpu/math_private.h
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc32/e5500/fpu/math_private.h 2014-08-29 10:31:30.216070587 -0700
|
||||
@@ -0,0 +1,9 @@
|
||||
+#ifndef _E5500_MATH_PRIVATE_H_
|
||||
+#define _E5500_MATH_PRIVATE_H_ 1
|
||||
|
@ -84,10 +84,10 @@ Index: libc/ports/sysdeps/powerpc/powerpc32/e5500/fpu/math_private.h
|
|||
+#include_next <math_private.h>
|
||||
+
|
||||
+#endif /* _E5500_MATH_PRIVATE_H_ */
|
||||
Index: libc/ports/sysdeps/powerpc/powerpc32/e6500/fpu/math_private.h
|
||||
Index: git/sysdeps/powerpc/powerpc32/e6500/fpu/math_private.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/ports/sysdeps/powerpc/powerpc32/e6500/fpu/math_private.h
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc32/e6500/fpu/math_private.h 2014-08-29 10:31:30.216070587 -0700
|
||||
@@ -0,0 +1,9 @@
|
||||
+#ifndef _E6500_MATH_PRIVATE_H_
|
||||
+#define _E6500_MATH_PRIVATE_H_ 1
|
|
@ -1,10 +1,10 @@
|
|||
Signed-of-by: Edmar Wienskoski <edmar@freescale.com>
|
||||
Upstream-Status: Pending
|
||||
|
||||
Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
|
||||
Index: git/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c 2014-08-29 10:34:07.768070587 -0700
|
||||
@@ -0,0 +1,134 @@
|
||||
+/* Double-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -140,10 +140,10 @@ Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
|
|||
+ }
|
||||
+ return f_wash (b);
|
||||
+}
|
||||
Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
|
||||
Index: git/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c 2014-08-29 10:34:07.768070587 -0700
|
||||
@@ -0,0 +1,101 @@
|
||||
+/* Single-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -246,10 +246,10 @@ Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
|
|||
+ }
|
||||
+ return f_washf (b);
|
||||
+}
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
|
||||
Index: git/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c 2014-08-29 10:34:07.768070587 -0700
|
||||
@@ -0,0 +1,134 @@
|
||||
+/* Double-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -385,10 +385,10 @@ Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
|
|||
+ }
|
||||
+ return f_wash (b);
|
||||
+}
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
|
||||
Index: git/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c 2014-08-29 10:34:07.772070587 -0700
|
||||
@@ -0,0 +1,101 @@
|
||||
+/* Single-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -491,10 +491,10 @@ Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
|
|||
+ }
|
||||
+ return f_washf (b);
|
||||
+}
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
|
||||
Index: git/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c 2014-08-29 10:34:07.772070587 -0700
|
||||
@@ -0,0 +1,134 @@
|
||||
+/* Double-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -630,10 +630,10 @@ Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
|
|||
+ }
|
||||
+ return f_wash (b);
|
||||
+}
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
|
||||
Index: git/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c 2014-08-29 10:34:07.772070587 -0700
|
||||
@@ -0,0 +1,101 @@
|
||||
+/* Single-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -736,10 +736,10 @@ Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
|
|||
+ }
|
||||
+ return f_washf (b);
|
||||
+}
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
|
||||
Index: git/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c 2014-08-29 10:34:07.772070587 -0700
|
||||
@@ -0,0 +1,134 @@
|
||||
+/* Double-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -875,10 +875,10 @@ Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
|
|||
+ }
|
||||
+ return f_wash (b);
|
||||
+}
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
|
||||
Index: git/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c 2014-08-29 10:34:07.772070587 -0700
|
||||
@@ -0,0 +1,101 @@
|
||||
+/* Single-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -981,10 +981,10 @@ Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
|
|||
+ }
|
||||
+ return f_washf (b);
|
||||
+}
|
||||
Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
|
||||
Index: git/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c 2014-08-29 10:34:07.772070587 -0700
|
||||
@@ -0,0 +1,134 @@
|
||||
+/* Double-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -1120,10 +1120,10 @@ Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
|
|||
+ }
|
||||
+ return f_wash (b);
|
||||
+}
|
||||
Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
|
||||
Index: git/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c 2014-08-29 10:34:07.772070587 -0700
|
||||
@@ -0,0 +1,101 @@
|
||||
+/* Single-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -1226,10 +1226,10 @@ Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
|
|||
+ }
|
||||
+ return f_washf (b);
|
||||
+}
|
||||
Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
|
||||
Index: git/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c 2014-08-29 10:34:07.772070587 -0700
|
||||
@@ -0,0 +1,134 @@
|
||||
+/* Double-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -1365,10 +1365,10 @@ Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
|
|||
+ }
|
||||
+ return f_wash (b);
|
||||
+}
|
||||
Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
|
||||
Index: git/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c 2014-08-29 10:34:07.776070587 -0700
|
||||
@@ -0,0 +1,101 @@
|
||||
+/* Single-precision floating point square root.
|
||||
+ Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -1471,46 +1471,46 @@ Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
|
|||
+ }
|
||||
+ return f_washf (b);
|
||||
+}
|
||||
Index: libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/603e/fpu/Implies
|
||||
Index: git/sysdeps/unix/sysv/linux/powerpc/powerpc32/603e/fpu/Implies
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/603e/fpu/Implies
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/unix/sysv/linux/powerpc/powerpc32/603e/fpu/Implies 2014-08-29 10:34:07.776070587 -0700
|
||||
@@ -0,0 +1 @@
|
||||
+powerpc/powerpc32/603e/fpu
|
||||
Index: libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/e300c3/fpu/Implies
|
||||
Index: git/sysdeps/unix/sysv/linux/powerpc/powerpc32/e300c3/fpu/Implies
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/e300c3/fpu/Implies
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/unix/sysv/linux/powerpc/powerpc32/e300c3/fpu/Implies 2014-08-29 10:34:07.776070587 -0700
|
||||
@@ -0,0 +1,2 @@
|
||||
+# e300c3 is a variant of 603e so use the same optimizations for sqrt
|
||||
+powerpc/powerpc32/603e/fpu
|
||||
Index: libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500mc/fpu/Implies
|
||||
Index: git/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500mc/fpu/Implies
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500mc/fpu/Implies
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500mc/fpu/Implies 2014-08-29 10:34:07.776070587 -0700
|
||||
@@ -0,0 +1 @@
|
||||
+powerpc/powerpc32/e500mc/fpu
|
||||
Index: libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/e5500/fpu/Implies
|
||||
Index: git/sysdeps/unix/sysv/linux/powerpc/powerpc32/e5500/fpu/Implies
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/e5500/fpu/Implies
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/unix/sysv/linux/powerpc/powerpc32/e5500/fpu/Implies 2014-08-29 10:34:07.776070587 -0700
|
||||
@@ -0,0 +1 @@
|
||||
+powerpc/powerpc32/e5500/fpu
|
||||
Index: libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/e6500/fpu/Implies
|
||||
Index: git/sysdeps/unix/sysv/linux/powerpc/powerpc32/e6500/fpu/Implies
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/e6500/fpu/Implies
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/unix/sysv/linux/powerpc/powerpc32/e6500/fpu/Implies 2014-08-29 10:34:07.776070587 -0700
|
||||
@@ -0,0 +1 @@
|
||||
+powerpc/powerpc32/e6500/fpu
|
||||
Index: libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/e5500/fpu/Implies
|
||||
Index: git/sysdeps/unix/sysv/linux/powerpc/powerpc64/e5500/fpu/Implies
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/e5500/fpu/Implies
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/unix/sysv/linux/powerpc/powerpc64/e5500/fpu/Implies 2014-08-29 10:34:07.780070587 -0700
|
||||
@@ -0,0 +1 @@
|
||||
+powerpc/powerpc64/e5500/fpu
|
||||
Index: libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/e6500/fpu/Implies
|
||||
Index: git/sysdeps/unix/sysv/linux/powerpc/powerpc64/e6500/fpu/Implies
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/e6500/fpu/Implies
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ git/sysdeps/unix/sysv/linux/powerpc/powerpc64/e6500/fpu/Implies 2014-08-29 10:34:07.780070587 -0700
|
||||
@@ -0,0 +1 @@
|
||||
+powerpc/powerpc64/e6500/fpu
|
|
@ -6,11 +6,11 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|||
Upstream-Status: Backport
|
||||
|
||||
|
||||
Index: libc/configure
|
||||
Index: git/configure
|
||||
===================================================================
|
||||
--- libc.orig/configure
|
||||
+++ libc/configure
|
||||
@@ -4654,7 +4654,7 @@ else
|
||||
--- git.orig/configure 2014-08-29 10:32:34.464070587 -0700
|
||||
+++ git/configure 2014-08-29 10:32:34.456070587 -0700
|
||||
@@ -4592,7 +4592,7 @@
|
||||
# Found it, now check the version.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
|
||||
$as_echo_n "checking version of $LD... " >&6; }
|
||||
|
@ -19,11 +19,11 @@ Index: libc/configure
|
|||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*)
|
||||
Index: libc/configure.ac
|
||||
Index: git/configure.ac
|
||||
===================================================================
|
||||
--- libc.orig/configure.ac
|
||||
+++ libc/configure.ac
|
||||
@@ -990,7 +990,7 @@ AC_CHECK_PROG_VER(AS, $AS, --version,
|
||||
--- git.orig/configure.ac 2014-08-29 10:32:34.464070587 -0700
|
||||
+++ git/configure.ac 2014-08-29 10:32:34.460070587 -0700
|
||||
@@ -930,7 +930,7 @@
|
||||
[GNU assembler.* \([0-9]*\.[0-9.]*\)],
|
||||
[2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
|
||||
AC_CHECK_PROG_VER(LD, $LD, --version,
|
|
@ -5,16 +5,16 @@ as undefined symbol
|
|||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
Upstream-Status: Pending
|
||||
|
||||
Index: libc/nss/getent.c
|
||||
Index: git/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 @@
|
||||
--- git.orig/nss/getent.c 2014-08-27 05:15:25.996070587 +0000
|
||||
+++ git/nss/getent.c 2014-08-27 05:16:00.048070587 +0000
|
||||
@@ -879,7 +879,7 @@
|
||||
D(group)
|
||||
D(gshadow)
|
||||
DN(hosts)
|
||||
D(hosts)
|
||||
-D(initgroups)
|
||||
+DN(initgroups)
|
||||
DN(netgroup)
|
||||
DN(networks)
|
||||
D(netgroup)
|
||||
D(networks)
|
||||
D(passwd)
|
|
@ -19,12 +19,12 @@ 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
|
||||
Index: git/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,
|
||||
--- git.orig/elf/dl-load.c 2014-08-28 17:32:46.292070587 -0700
|
||||
+++ git/elf/dl-load.c 2014-08-28 17:33:56.048070587 -0700
|
||||
@@ -2050,7 +2050,14 @@
|
||||
fd = open_path (name, namelen, mode,
|
||||
&loader->l_runpath_dirs, &realname, &fb, loader,
|
||||
LA_SER_RUNPATH, &found_other_class);
|
||||
-
|
||||
|
@ -38,19 +38,19 @@ Index: libc/elf/dl-load.c
|
|||
+ /* Finally try ld.so.cache */
|
||||
#ifdef USE_LDCONFIG
|
||||
if (fd == -1
|
||||
&& (__builtin_expect (! (mode & __RTLD_SECURE), 1)
|
||||
@@ -2283,14 +2290,6 @@
|
||||
&& (__glibc_likely ((mode & __RTLD_SECURE) == 0)
|
||||
@@ -2113,14 +2120,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))
|
||||
- || __glibc_likely (!(l->l_flags_1 & DF_1_NODEFLIB)))
|
||||
- && rtld_search_dirs.dirs != (void *) -1)
|
||||
- fd = open_path (name, namelen, mode & __RTLD_SECURE, &rtld_search_dirs,
|
||||
- fd = open_path (name, namelen, mode, &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))
|
||||
if (__glibc_unlikely (GLRO_dl_debug_mask & DL_DEBUG_LIBS))
|
||||
_dl_debug_printf ("\n");
|
|
@ -11,9 +11,10 @@ Upstream-Status: Pending
|
|||
|
||||
|
||||
---
|
||||
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
|
||||
Index: git/sysdeps/mips/dl-machine.h
|
||||
===================================================================
|
||||
--- git.orig/sysdeps/mips/dl-machine.h 2014-08-27 04:58:11.840070587 +0000
|
||||
+++ git/sysdeps/mips/dl-machine.h 2014-08-27 04:58:11.832070587 +0000
|
||||
@@ -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 */
|
|
@ -5,9 +5,11 @@ 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 @@
|
||||
Index: git/elf/readlib.c
|
||||
===================================================================
|
||||
--- git.orig/elf/readlib.c 2014-08-29 10:34:16.824070587 -0700
|
||||
+++ git/elf/readlib.c 2014-08-29 10:34:16.816070587 -0700
|
||||
@@ -51,6 +51,7 @@
|
||||
#ifdef SYSDEP_KNOWN_INTERPRETER_NAMES
|
||||
SYSDEP_KNOWN_INTERPRETER_NAMES
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -3,11 +3,11 @@
|
|||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
Upstream-Status: Pending
|
||||
Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
|
||||
Index: git/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;
|
||||
--- git.orig/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c 2014-08-29 10:35:02.604070587 -0700
|
||||
@@ -40,7 +40,7 @@
|
||||
simultaneously. */
|
||||
|
||||
double
|
||||
|
@ -16,7 +16,7 @@ Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
|
|||
{
|
||||
if (__builtin_expect (b > 0, 1))
|
||||
{
|
||||
@@ -77,7 +77,7 @@ __ieee754_sqrt (double b)
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
/* Handle small numbers by scaling. */
|
||||
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
|
||||
|
@ -25,7 +25,7 @@ Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
|
|||
|
||||
#define FMADD(a_, c_, b_) \
|
||||
({ double __r; \
|
||||
@@ -126,4 +126,12 @@ __ieee754_sqrt (double b)
|
||||
@@ -126,4 +126,12 @@
|
||||
}
|
||||
return f_wash (b);
|
||||
}
|
||||
|
@ -38,11 +38,11 @@ Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
|
|||
+}
|
||||
+
|
||||
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
||||
Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
|
||||
Index: git/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;
|
||||
--- git.orig/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c 2014-08-29 10:35:02.604070587 -0700
|
||||
@@ -38,7 +38,7 @@
|
||||
square root. */
|
||||
|
||||
float
|
||||
|
@ -51,7 +51,7 @@ Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
|
|||
{
|
||||
if (__builtin_expect (b > 0, 1))
|
||||
{
|
||||
@@ -93,4 +93,10 @@ __ieee754_sqrtf (float b)
|
||||
@@ -93,4 +93,10 @@
|
||||
}
|
||||
return f_washf (b);
|
||||
}
|
||||
|
@ -62,11 +62,11 @@ Index: libc/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
|
|||
+ return __slow_ieee754_sqrtf (x);
|
||||
+}
|
||||
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
|
||||
Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
|
||||
Index: git/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;
|
||||
--- git.orig/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c 2014-08-29 10:35:02.604070587 -0700
|
||||
@@ -40,7 +40,7 @@
|
||||
simultaneously. */
|
||||
|
||||
double
|
||||
|
@ -75,7 +75,7 @@ Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
|
|||
{
|
||||
if (__builtin_expect (b > 0, 1))
|
||||
{
|
||||
@@ -77,7 +77,7 @@ __ieee754_sqrt (double b)
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
/* Handle small numbers by scaling. */
|
||||
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
|
||||
|
@ -84,7 +84,7 @@ Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
|
|||
|
||||
#define FMADD(a_, c_, b_) \
|
||||
({ double __r; \
|
||||
@@ -126,4 +126,12 @@ __ieee754_sqrt (double b)
|
||||
@@ -126,4 +126,12 @@
|
||||
}
|
||||
return f_wash (b);
|
||||
}
|
||||
|
@ -97,11 +97,11 @@ Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
|
|||
+}
|
||||
+
|
||||
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
||||
Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
|
||||
Index: git/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;
|
||||
--- git.orig/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c 2014-08-29 10:35:02.604070587 -0700
|
||||
@@ -38,7 +38,7 @@
|
||||
square root. */
|
||||
|
||||
float
|
||||
|
@ -110,7 +110,7 @@ Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
|
|||
{
|
||||
if (__builtin_expect (b > 0, 1))
|
||||
{
|
||||
@@ -93,4 +93,11 @@ __ieee754_sqrtf (float b)
|
||||
@@ -93,4 +93,11 @@
|
||||
}
|
||||
return f_washf (b);
|
||||
}
|
||||
|
@ -122,11 +122,11 @@ Index: libc/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
|
|||
+}
|
||||
+
|
||||
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
|
||||
Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
|
||||
Index: git/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;
|
||||
--- git.orig/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c 2014-08-29 10:35:02.604070587 -0700
|
||||
@@ -41,10 +41,10 @@
|
||||
|
||||
#ifdef __STDC__
|
||||
double
|
||||
|
@ -139,7 +139,7 @@ Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
|
|||
double b;
|
||||
#endif
|
||||
{
|
||||
@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
/* Handle small numbers by scaling. */
|
||||
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
|
||||
|
@ -148,7 +148,7 @@ Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
|
|||
|
||||
#define FMADD(a_, c_, b_) \
|
||||
({ double __r; \
|
||||
@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
|
||||
@@ -132,4 +132,12 @@
|
||||
}
|
||||
return f_wash (b);
|
||||
}
|
||||
|
@ -161,11 +161,11 @@ Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
|
|||
+}
|
||||
+
|
||||
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
||||
Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
|
||||
Index: git/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;
|
||||
--- git.orig/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c 2014-08-29 10:35:02.604070587 -0700
|
||||
@@ -39,10 +39,10 @@
|
||||
|
||||
#ifdef __STDC__
|
||||
float
|
||||
|
@ -178,7 +178,7 @@ Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
|
|||
float b;
|
||||
#endif
|
||||
{
|
||||
@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
|
||||
@@ -99,4 +99,12 @@
|
||||
}
|
||||
return f_washf (b);
|
||||
}
|
||||
|
@ -191,11 +191,11 @@ Index: libc/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
|
|||
+}
|
||||
+
|
||||
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
|
||||
Index: git/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;
|
||||
--- git.orig/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c 2014-08-29 10:35:02.608070587 -0700
|
||||
@@ -41,10 +41,10 @@
|
||||
|
||||
#ifdef __STDC__
|
||||
double
|
||||
|
@ -208,7 +208,7 @@ Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
|
|||
double b;
|
||||
#endif
|
||||
{
|
||||
@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
/* Handle small numbers by scaling. */
|
||||
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
|
||||
|
@ -217,7 +217,7 @@ Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
|
|||
|
||||
#define FMADD(a_, c_, b_) \
|
||||
({ double __r; \
|
||||
@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
|
||||
@@ -132,4 +132,12 @@
|
||||
}
|
||||
return f_wash (b);
|
||||
}
|
||||
|
@ -230,11 +230,11 @@ Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
|
|||
+}
|
||||
+
|
||||
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
|
||||
Index: git/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;
|
||||
--- git.orig/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c 2014-08-29 10:35:02.608070587 -0700
|
||||
@@ -39,10 +39,10 @@
|
||||
|
||||
#ifdef __STDC__
|
||||
float
|
||||
|
@ -247,7 +247,7 @@ Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
|
|||
float b;
|
||||
#endif
|
||||
{
|
||||
@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
|
||||
@@ -99,4 +99,12 @@
|
||||
}
|
||||
return f_washf (b);
|
||||
}
|
||||
|
@ -260,11 +260,11 @@ Index: libc/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
|
|||
+}
|
||||
+
|
||||
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
|
||||
Index: git/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;
|
||||
--- git.orig/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c 2014-08-29 10:35:02.608070587 -0700
|
||||
@@ -41,10 +41,10 @@
|
||||
|
||||
#ifdef __STDC__
|
||||
double
|
||||
|
@ -277,7 +277,7 @@ Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
|
|||
double b;
|
||||
#endif
|
||||
{
|
||||
@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
/* Handle small numbers by scaling. */
|
||||
if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
|
||||
|
@ -286,7 +286,7 @@ Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
|
|||
|
||||
#define FMADD(a_, c_, b_) \
|
||||
({ double __r; \
|
||||
@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
|
||||
@@ -132,4 +132,12 @@
|
||||
}
|
||||
return f_wash (b);
|
||||
}
|
||||
|
@ -299,11 +299,11 @@ Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
|
|||
+}
|
||||
+
|
||||
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
|
||||
Index: git/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;
|
||||
--- git.orig/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c 2014-08-29 10:35:02.608070587 -0700
|
||||
@@ -39,10 +39,10 @@
|
||||
|
||||
#ifdef __STDC__
|
||||
float
|
||||
|
@ -316,7 +316,7 @@ Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
|
|||
float b;
|
||||
#endif
|
||||
{
|
||||
@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
|
||||
@@ -99,4 +99,12 @@
|
||||
}
|
||||
return f_washf (b);
|
||||
}
|
||||
|
@ -329,11 +329,11 @@ Index: libc/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
|
|||
+}
|
||||
+
|
||||
strong_alias (__ieee754_sqrtf, __sqrtf_finite)
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
|
||||
Index: git/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)
|
||||
--- git.orig/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c 2014-08-29 10:35:02.608070587 -0700
|
||||
@@ -132,4 +132,12 @@
|
||||
}
|
||||
return f_wash (b);
|
||||
}
|
||||
|
@ -346,11 +346,11 @@ Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
|
|||
+}
|
||||
+
|
||||
strong_alias (__ieee754_sqrt, __sqrt_finite)
|
||||
Index: libc/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
|
||||
Index: git/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)
|
||||
--- git.orig/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c 2014-08-29 10:35:02.616070587 -0700
|
||||
+++ git/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c 2014-08-29 10:35:02.608070587 -0700
|
||||
@@ -99,4 +99,12 @@
|
||||
}
|
||||
return f_washf (b);
|
||||
}
|
|
@ -10,23 +10,24 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
|||
timezone/tzselect.ksh | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/timezone/Makefile b/timezone/Makefile
|
||||
--- a/timezone/Makefile
|
||||
+++ b/timezone/Makefile
|
||||
@@ -113,7 +113,7 @@ $(testdata)/Asia/Tokyo: asia $(zic-deps)
|
||||
Index: git/timezone/Makefile
|
||||
===================================================================
|
||||
--- git.orig/timezone/Makefile 2014-08-27 05:35:58.008070587 +0000
|
||||
+++ git/timezone/Makefile 2014-08-27 05:36:37.908070587 +0000
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
|
||||
$(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
|
||||
- sed -e 's|/bin/bash|$(KSH)|g' \
|
||||
+ sed -e 's|/bin/bash|/bin/sh|g' \
|
||||
-e '/TZDIR=/s|\$$(pwd)|$(zonedir)|' \
|
||||
- sed -e 's|/bin/bash|$(BASH)|' \
|
||||
+ sed -e 's|/bin/bash|/bin/sh|' \
|
||||
-e 's|TZDIR=[^}]*|TZDIR=$(zonedir)|' \
|
||||
-e '/TZVERSION=/s|see_Makefile|"$(version)"|' \
|
||||
-e '/PKGVERSION=/s|=.*|="$(PKGVERSION)"|' \
|
||||
diff --git a/timezone/tzselect.ksh b/timezone/tzselect.ksh
|
||||
index 9d70691..25f45a8 100644
|
||||
--- a/timezone/tzselect.ksh
|
||||
+++ b/timezone/tzselect.ksh
|
||||
@@ -35,7 +35,7 @@ REPORT_BUGS_TO=tz@iana.org
|
||||
Index: git/timezone/tzselect.ksh
|
||||
===================================================================
|
||||
--- git.orig/timezone/tzselect.ksh 2014-08-27 05:35:58.008070587 +0000
|
||||
+++ git/timezone/tzselect.ksh 2014-08-27 05:35:58.000070587 +0000
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
# Specify default values for environment variables if they are unset.
|
||||
: ${AWK=awk}
|
||||
|
@ -35,6 +36,3 @@ index 9d70691..25f45a8 100644
|
|||
|
||||
# Check for awk Posix compliance.
|
||||
($AWK -v x=y 'BEGIN { exit 123 }') </dev/null >/dev/null 2>&1
|
||||
--
|
||||
1.8.1.2
|
||||
|
|
@ -1,9 +1,12 @@
|
|||
require eglibc.inc
|
||||
require glibc.inc
|
||||
|
||||
DEPENDS += "gperf-native kconfig-frontends-native"
|
||||
|
||||
SRC_URI = "http://downloads.yoctoproject.org/releases/eglibc/eglibc-${PV}-svnr25243.tar.bz2 \
|
||||
file://eglibc-svn-arm-lowlevellock-include-tls.patch \
|
||||
PV = "2.20"
|
||||
|
||||
SRCREV = "529bf51595fffbe80023e7d895b671391991bb1b"
|
||||
|
||||
SRC_URI = "git://sourceware.org/git/glibc.git;branch=master \
|
||||
file://IO-acquire-lock-fix.patch \
|
||||
file://mips-rld-map-check.patch \
|
||||
file://etc/ld.so.conf \
|
||||
|
@ -11,26 +14,32 @@ SRC_URI = "http://downloads.yoctoproject.org/releases/eglibc/eglibc-${PV}-svnr25
|
|||
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://0001-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch \
|
||||
file://fix-tibetian-locales.patch \
|
||||
file://ppce6500-32b_slow_ieee754_sqrt.patch \
|
||||
file://grok_gold.patch \
|
||||
file://fix_am_rootsbindir.patch;striplevel=2 \
|
||||
file://timezone-re-written-tzselect-as-posix-sh.patch \
|
||||
file://fix_am_rootsbindir.patch \
|
||||
file://0001-Define-__GI_fegetenv-for-e500-libm.patch \
|
||||
${EGLIBCPATCHES} \
|
||||
"
|
||||
SRC_URI[md5sum] = "197836c2ba42fb146e971222647198dd"
|
||||
SRC_URI[sha256sum] = "baaa030531fc308f7820c46acdf8e1b2f8e3c1f40bcd28b6e440d1c95d170d4c"
|
||||
EGLIBCPATCHES = "\
|
||||
file://timezone-re-written-tzselect-as-posix-sh.patch \
|
||||
file://eglibc.patch \
|
||||
file://option-groups.patch \
|
||||
file://GLRO_dl_debug_mask.patch \
|
||||
file://eglibc-header-bootstrap.patch \
|
||||
file://eglibc-resolv-dynamic.patch \
|
||||
file://eglibc-ppc8xx-cache-line-workaround.patch \
|
||||
file://eglibc-sh4-fpscr_values.patch \
|
||||
file://eglibc-use-option-groups.patch \
|
||||
"
|
||||
# file://eglibc-install-pic-archives.patch \
|
||||
# file://initgroups_keys.patch \
|
||||
#
|
||||
|
||||
LIC_FILES_CHKSUM = "file://LICENSES;md5=e9a558e243b36d3209f380deb394b213 \
|
||||
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||
|
@ -41,7 +50,7 @@ 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"
|
||||
S = "${WORKDIR}/git"
|
||||
B = "${WORKDIR}/build-${TARGET_SYS}"
|
||||
|
||||
PACKAGES_DYNAMIC = ""
|
||||
|
@ -85,7 +94,7 @@ do_patch_append() {
|
|||
bb.build.exec_func('do_fix_readlib_c', d)
|
||||
}
|
||||
|
||||
# for mips eglibc now builds syscall tables for all abi's
|
||||
# for mips glibc 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
|
||||
|
@ -140,6 +149,6 @@ do_compile () {
|
|||
|
||||
}
|
||||
|
||||
require eglibc-package.inc
|
||||
require glibc-package.inc
|
||||
|
||||
BBCLASSEXTEND = "nativesdk"
|
Loading…
Reference in New Issue