eglibc: removed eglibc.
This commit is contained in:
parent
722d66e44f
commit
5b78d1f5b5
@ -1,57 +0,0 @@
|
|||||||
version=\
|
|
||||||
(
|
|
||||||
'2.15.17955'
|
|
||||||
)
|
|
||||||
|
|
||||||
url=\
|
|
||||||
(
|
|
||||||
"http://www.lsts.pt/glued/eglibc-$version.tar.bz2"
|
|
||||||
)
|
|
||||||
|
|
||||||
md5=\
|
|
||||||
(
|
|
||||||
'0694f304863e3c97562857388137a83e'
|
|
||||||
)
|
|
||||||
|
|
||||||
maintainer=\
|
|
||||||
(
|
|
||||||
'Ricardo Martins <rasm@fe.up.pt>'
|
|
||||||
)
|
|
||||||
|
|
||||||
build_dir=$pkg_var
|
|
||||||
|
|
||||||
post_unpack()
|
|
||||||
{
|
|
||||||
ln -fs ../ports ../eglibc-$version/libc/ports
|
|
||||||
|
|
||||||
patches=$(ls "$pkg_dir"/patches/*.patch)
|
|
||||||
|
|
||||||
cd ../eglibc-$version
|
|
||||||
if [ -n "$patches" ]; then
|
|
||||||
cat $patches | patch -p1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
configure()
|
|
||||||
{
|
|
||||||
export libc_cv_slibdir='/lib'
|
|
||||||
BUILD_CC=$cmd_host_cc \
|
|
||||||
AR="$cfg_dir_toolchain/bin/$cfg_target_canonical-ar" \
|
|
||||||
RANLIB="$cfg_dir_toolchain/bin/$cfg_target_canonical-ranlib" \
|
|
||||||
CC="$cfg_dir_toolchain/bin/$cfg_target_canonical-gcc" \
|
|
||||||
CXX="$cfg_dir_toolchain/bin/$cfg_target_canonical-g++" \
|
|
||||||
CFLAGS=$cfg_target_gcc_flags \
|
|
||||||
"../eglibc-$version/libc/configure" \
|
|
||||||
$cfg_target_eglibc_configure_flags \
|
|
||||||
--prefix=/usr \
|
|
||||||
--with-headers="$cfg_dir_toolchain_sysroot/usr/include" \
|
|
||||||
--build="$cfg_host_canonical" \
|
|
||||||
--host="$cfg_target_canonical" \
|
|
||||||
--disable-profile \
|
|
||||||
--without-gd \
|
|
||||||
--without-cvs \
|
|
||||||
--enable-add-ons \
|
|
||||||
--with-tls \
|
|
||||||
--enable-kernel=2.6.32 \
|
|
||||||
--disable-nls
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
source $pkg_common
|
|
||||||
|
|
||||||
requires=\
|
|
||||||
(
|
|
||||||
'gcc/cross_stage2'
|
|
||||||
)
|
|
||||||
|
|
||||||
build()
|
|
||||||
{
|
|
||||||
$cmd_make -j1
|
|
||||||
}
|
|
||||||
|
|
||||||
host_install()
|
|
||||||
{
|
|
||||||
$cmd_make install_root="$cfg_dir_toolchain_sysroot" -j1 install &&
|
|
||||||
cp "$pkg_dir"/files/timepps.h "$cfg_dir_toolchain_sysroot/usr/include"
|
|
||||||
}
|
|
||||||
|
|
||||||
target_install()
|
|
||||||
{
|
|
||||||
$cmd_mkdir \
|
|
||||||
"$cfg_dir_rootfs/sbin" \
|
|
||||||
"$cfg_dir_rootfs/usr/lib" &&
|
|
||||||
|
|
||||||
for f in "$cfg_dir_toolchain_sysroot/lib"/*; do
|
|
||||||
base="$(basename $f)"
|
|
||||||
if [ -L "$f" ]; then
|
|
||||||
cp -vd "$f" "$cfg_dir_rootfs/usr/lib/$base"
|
|
||||||
elif [ -f "$f" ]; then
|
|
||||||
$cmd_target_strip -v --strip-unneeded -o "$cfg_dir_rootfs/usr/lib/$base" "$f"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
$cmd_target_strip -v --strip-unneeded "elf/ldconfig" \
|
|
||||||
-o "$cfg_dir_rootfs/sbin/ldconfig" &&
|
|
||||||
tar -C "$pkg_dir/fs" --exclude .svn -c -f - . | tar -C "$cfg_dir_rootfs" -x -v -f -
|
|
||||||
}
|
|
@ -1,199 +0,0 @@
|
|||||||
/*
|
|
||||||
* timepps.h -- PPS API main header
|
|
||||||
*
|
|
||||||
* Copyright (C) 2005-2007 Rodolfo Giometti <giometti@linux.it>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _SYS_TIMEPPS_H_
|
|
||||||
#define _SYS_TIMEPPS_H_
|
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <linux/types.h>
|
|
||||||
#include <linux/pps.h>
|
|
||||||
|
|
||||||
#define LINUXPPS 1 /* signal we are using LinuxPPS */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* New data structures
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct ntp_fp {
|
|
||||||
unsigned int integral;
|
|
||||||
unsigned int fractional;
|
|
||||||
};
|
|
||||||
|
|
||||||
union pps_timeu {
|
|
||||||
struct timespec tspec;
|
|
||||||
struct ntp_fp ntpfp;
|
|
||||||
unsigned long longpad[3];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct pps_info {
|
|
||||||
unsigned long assert_sequence; /* seq. num. of assert event */
|
|
||||||
unsigned long clear_sequence; /* seq. num. of clear event */
|
|
||||||
union pps_timeu assert_tu; /* time of assert event */
|
|
||||||
union pps_timeu clear_tu; /* time of clear event */
|
|
||||||
int current_mode; /* current mode bits */
|
|
||||||
};
|
|
||||||
|
|
||||||
struct pps_params {
|
|
||||||
int api_version; /* API version # */
|
|
||||||
int mode; /* mode bits */
|
|
||||||
union pps_timeu assert_off_tu; /* offset compensation for assert */
|
|
||||||
union pps_timeu clear_off_tu; /* offset compensation for clear */
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef int pps_handle_t; /* represents a PPS source */
|
|
||||||
typedef unsigned long pps_seq_t; /* sequence number */
|
|
||||||
typedef struct ntp_fp ntp_fp_t; /* NTP-compatible time stamp */
|
|
||||||
typedef union pps_timeu pps_timeu_t; /* generic data type for time stamps */
|
|
||||||
typedef struct pps_info pps_info_t;
|
|
||||||
typedef struct pps_params pps_params_t;
|
|
||||||
|
|
||||||
#define assert_timestamp assert_tu.tspec
|
|
||||||
#define clear_timestamp clear_tu.tspec
|
|
||||||
|
|
||||||
#define assert_timestamp_ntpfp assert_tu.ntpfp
|
|
||||||
#define clear_timestamp_ntpfp clear_tu.ntpfp
|
|
||||||
|
|
||||||
#define assert_offset assert_off_tu.tspec
|
|
||||||
#define clear_offset clear_off_tu.tspec
|
|
||||||
|
|
||||||
#define assert_offset_ntpfp assert_off_tu.ntpfp
|
|
||||||
#define clear_offset_ntpfp clear_off_tu.ntpfp
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The PPS API
|
|
||||||
*/
|
|
||||||
|
|
||||||
static __inline int time_pps_create(int source, pps_handle_t *handle)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
struct pps_kparams dummy;
|
|
||||||
|
|
||||||
if (!handle) {
|
|
||||||
errno = EINVAL;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* First we check if current device is a valid PPS one by
|
|
||||||
* doing a dummy PPS_GETPARAMS...
|
|
||||||
*/
|
|
||||||
ret = ioctl(source, PPS_GETPARAMS, &dummy);
|
|
||||||
if (ret) {
|
|
||||||
errno = EOPNOTSUPP;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ... then since in LinuxPPS there are no differences between a
|
|
||||||
* "PPS source" and a "PPS handle", we simply return the same value.
|
|
||||||
*/
|
|
||||||
*handle = source;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline int time_pps_destroy(pps_handle_t handle)
|
|
||||||
{
|
|
||||||
return close(handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline int time_pps_getparams(pps_handle_t handle,
|
|
||||||
pps_params_t *ppsparams)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
struct pps_kparams __ppsparams;
|
|
||||||
|
|
||||||
ret = ioctl(handle, PPS_GETPARAMS, &__ppsparams);
|
|
||||||
|
|
||||||
ppsparams->api_version = __ppsparams.api_version;
|
|
||||||
ppsparams->mode = __ppsparams.mode;
|
|
||||||
ppsparams->assert_off_tu.tspec.tv_sec = __ppsparams.assert_off_tu.sec;
|
|
||||||
ppsparams->assert_off_tu.tspec.tv_nsec = __ppsparams.assert_off_tu.nsec;
|
|
||||||
ppsparams->clear_off_tu.tspec.tv_sec = __ppsparams.clear_off_tu.sec;
|
|
||||||
ppsparams->clear_off_tu.tspec.tv_nsec = __ppsparams.clear_off_tu.nsec;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline int time_pps_setparams(pps_handle_t handle,
|
|
||||||
const pps_params_t *ppsparams)
|
|
||||||
{
|
|
||||||
struct pps_kparams __ppsparams;
|
|
||||||
|
|
||||||
__ppsparams.api_version = ppsparams->api_version;
|
|
||||||
__ppsparams.mode = ppsparams->mode;
|
|
||||||
__ppsparams.assert_off_tu.sec = ppsparams->assert_off_tu.tspec.tv_sec;
|
|
||||||
__ppsparams.assert_off_tu.nsec = ppsparams->assert_off_tu.tspec.tv_nsec;
|
|
||||||
__ppsparams.clear_off_tu.sec = ppsparams->clear_off_tu.tspec.tv_sec;
|
|
||||||
__ppsparams.clear_off_tu.nsec = ppsparams->clear_off_tu.tspec.tv_nsec;
|
|
||||||
|
|
||||||
return ioctl(handle, PPS_SETPARAMS, &__ppsparams);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get capabilities for handle */
|
|
||||||
static __inline int time_pps_getcap(pps_handle_t handle, int *mode)
|
|
||||||
{
|
|
||||||
return ioctl(handle, PPS_GETCAP, mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline int time_pps_fetch(pps_handle_t handle, const int tsformat,
|
|
||||||
pps_info_t *ppsinfobuf,
|
|
||||||
const struct timespec *timeout)
|
|
||||||
{
|
|
||||||
struct pps_fdata __fdata;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Sanity checks */
|
|
||||||
if (tsformat != PPS_TSFMT_TSPEC) {
|
|
||||||
errno = EINVAL;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (timeout) {
|
|
||||||
__fdata.timeout.sec = timeout->tv_sec;
|
|
||||||
__fdata.timeout.nsec = timeout->tv_nsec;
|
|
||||||
__fdata.timeout.flags = ~PPS_TIME_INVALID;
|
|
||||||
} else
|
|
||||||
__fdata.timeout.flags = PPS_TIME_INVALID;
|
|
||||||
|
|
||||||
ret = ioctl(handle, PPS_FETCH, &__fdata);
|
|
||||||
|
|
||||||
ppsinfobuf->assert_sequence = __fdata.info.assert_sequence;
|
|
||||||
ppsinfobuf->clear_sequence = __fdata.info.clear_sequence;
|
|
||||||
ppsinfobuf->assert_tu.tspec.tv_sec = __fdata.info.assert_tu.sec;
|
|
||||||
ppsinfobuf->assert_tu.tspec.tv_nsec = __fdata.info.assert_tu.nsec;
|
|
||||||
ppsinfobuf->clear_tu.tspec.tv_sec = __fdata.info.clear_tu.sec;
|
|
||||||
ppsinfobuf->clear_tu.tspec.tv_nsec = __fdata.info.clear_tu.nsec;
|
|
||||||
ppsinfobuf->current_mode = __fdata.info.current_mode;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static __inline int time_pps_kcbind(pps_handle_t handle,
|
|
||||||
const int kernel_consumer,
|
|
||||||
const int edge, const int tsformat)
|
|
||||||
{
|
|
||||||
/* LinuxPPS doesn't implement kernel consumer feature */
|
|
||||||
errno = EOPNOTSUPP;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* _SYS_TIMEPPS_H_ */
|
|
@ -1 +0,0 @@
|
|||||||
127.0.0.1 localhost.localdomain localhost
|
|
@ -1 +0,0 @@
|
|||||||
/usr/lib
|
|
@ -1,15 +0,0 @@
|
|||||||
passwd: files
|
|
||||||
group: files
|
|
||||||
shadow: files
|
|
||||||
|
|
||||||
publickey: files
|
|
||||||
|
|
||||||
hosts: files dns
|
|
||||||
networks: files
|
|
||||||
|
|
||||||
protocols: files
|
|
||||||
services: files
|
|
||||||
ethers: files
|
|
||||||
rpc: files
|
|
||||||
|
|
||||||
netgroup: files
|
|
@ -1,24 +0,0 @@
|
|||||||
source $pkg_common
|
|
||||||
|
|
||||||
requires=\
|
|
||||||
(
|
|
||||||
'gcc/cross_stage1'
|
|
||||||
'linux-headers/cross'
|
|
||||||
)
|
|
||||||
|
|
||||||
host_install()
|
|
||||||
{
|
|
||||||
cat >> configparms << EOF
|
|
||||||
install-bootstrap-headers=yes
|
|
||||||
cross-compiling=yes
|
|
||||||
install_root="$cfg_dir_toolchain_sysroot"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
$cmd_make \
|
|
||||||
install_root="$cfg_dir_toolchain_sysroot" \
|
|
||||||
install-bootstrap-headers=yes install-headers &&
|
|
||||||
$cmd_mkdir "$cfg_dir_toolchain_sysroot/usr/lib" &&
|
|
||||||
$cmd_make csu/subdir_lib &&
|
|
||||||
cp csu/crt1.o csu/crti.o csu/crtn.o "$cfg_dir_toolchain_sysroot/usr/lib" &&
|
|
||||||
$cmd_target_cc -nostdlib -nostartfiles -shared -x c /dev/null -o "$cfg_dir_toolchain_sysroot/usr/lib/libc.so"
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
source $pkg_common
|
|
||||||
|
|
||||||
requires=\
|
|
||||||
(
|
|
||||||
'eglibc/cross'
|
|
||||||
)
|
|
||||||
|
|
||||||
configure()
|
|
||||||
{
|
|
||||||
"../eglibc-$version/localedef/configure" \
|
|
||||||
--prefix="$cfg_dir_toolchain_sysroot/usr" \
|
|
||||||
--with-glibc=."./eglibc-$version/libc"
|
|
||||||
}
|
|
||||||
|
|
||||||
build()
|
|
||||||
{
|
|
||||||
$cmd_make
|
|
||||||
}
|
|
||||||
|
|
||||||
host_install()
|
|
||||||
{
|
|
||||||
$cmd_mkdir "$cfg_dir_toolchain_sysroot/usr/lib/locale" &&
|
|
||||||
if [ -f "$cfg_dir_toolchain_sysroot/usr/share/i18n/charmaps/UTF-8.gz" ]; then
|
|
||||||
gunzip -f "$cfg_dir_toolchain_sysroot/usr/share/i18n/charmaps/UTF-8.gz"
|
|
||||||
fi &&
|
|
||||||
if [ -f "$cfg_dir_toolchain_sysroot/usr/share/i18n/charmaps/ISO-8859-1.gz" ]; then
|
|
||||||
gunzip -f "$cfg_dir_toolchain_sysroot/usr/share/i18n/charmaps/ISO-8859-1.gz"
|
|
||||||
fi &&
|
|
||||||
|
|
||||||
./localedef -v -c -i pt_PT -f UTF-8 pt_PT
|
|
||||||
./localedef -v -c -i ru_RU -f UTF-8 ru_RU
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
target_install()
|
|
||||||
{
|
|
||||||
$cmd_mkdir "$cfg_dir_rootfs/usr/lib/locale" &&
|
|
||||||
cp -v "$cfg_dir_toolchain_sysroot/usr/lib/locale/locale-archive" "$cfg_dir_rootfs/usr/lib/locale"
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
diff -Nru eglibc-2.15-16611/libc/include/libc-symbols.h eglibc-2.15-16611-rasm/libc/include/libc-symbols.h
|
|
||||||
--- eglibc-2.15-16611/libc/include/libc-symbols.h 2012-01-09 21:16:30.000000000 +0000
|
|
||||||
+++ eglibc-2.15-16611-rasm/libc/include/libc-symbols.h 2012-01-10 23:37:36.863616530 +0000
|
|
||||||
@@ -647,7 +647,7 @@
|
|
||||||
# define libc_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
|
|
||||||
# define libc_hidden_def(name) hidden_def (name)
|
|
||||||
# define libc_hidden_weak(name) hidden_weak (name)
|
|
||||||
-# define libc_hidden_nolink(name, version) hidden_nolink (name, libc, version)
|
|
||||||
+# define libc_hidden_nolink(name, version) hidden_def (name)
|
|
||||||
# define libc_hidden_ver(local, name) hidden_ver (local, name)
|
|
||||||
# define libc_hidden_data_def(name) hidden_data_def (name)
|
|
||||||
# define libc_hidden_data_weak(name) hidden_data_weak (name)
|
|
||||||
diff -Nru eglibc-2.15-16611/libc/sunrpc/Makefile eglibc-2.15-16611-rasm/libc/sunrpc/Makefile
|
|
||||||
--- eglibc-2.15-16611/libc/sunrpc/Makefile 2012-01-09 21:16:30.000000000 +0000
|
|
||||||
+++ eglibc-2.15-16611-rasm/libc/sunrpc/Makefile 2012-01-10 23:38:14.574076188 +0000
|
|
||||||
@@ -55,7 +55,7 @@
|
|
||||||
des_crypt.h)
|
|
||||||
headers-not-in-tirpc = $(addprefix rpc/,key_prot.h rpc_des.h) \
|
|
||||||
$(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h
|
|
||||||
-headers = rpc/netdb.h
|
|
||||||
+headers = rpc/netdb.h $(headers-in-tirpc) $(headers-not-in-tirpc)
|
|
||||||
generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \
|
|
||||||
$(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen
|
|
||||||
generated-dirs := rpcsvc
|
|
@ -1,15 +0,0 @@
|
|||||||
diff -Nru eglibc-2.15-16611/libc/nis/Makefile eglibc-2.15-16611-rasm/libc/nis/Makefile
|
|
||||||
--- eglibc-2.15-16611/libc/nis/Makefile 2012-01-09 21:16:30.000000000 +0000
|
|
||||||
+++ eglibc-2.15-16611-rasm/libc/nis/Makefile 2012-01-10 23:40:26.409018009 +0000
|
|
||||||
@@ -25,9 +25,9 @@
|
|
||||||
|
|
||||||
aux := nis_hash
|
|
||||||
|
|
||||||
+headers := $(wildcard rpcsvc/*.[hx])
|
|
||||||
distribute := nss-nis.h nss-nisplus.h nis_intern.h Banner \
|
|
||||||
- nisplus-parser.h nis_xdr.h nss \
|
|
||||||
- $(wildcard rpcsvc/*.[hx])
|
|
||||||
+ nisplus-parser.h nis_xdr.h nss
|
|
||||||
|
|
||||||
# These are the databases available for the nis (and perhaps later nisplus)
|
|
||||||
# service. This must be a superset of the services in nss.
|
|
@ -1,107 +0,0 @@
|
|||||||
diff -Nru eglibc-2.15.17955/libc/elf/dl-close.c eglibc-2.15.17955.rasm/libc/elf/dl-close.c
|
|
||||||
--- eglibc-2.15.17955/libc/elf/dl-close.c 2012-04-07 20:58:55.000000000 +0100
|
|
||||||
+++ eglibc-2.15.17955.rasm/libc/elf/dl-close.c 2012-10-23 22:33:33.351846745 +0100
|
|
||||||
@@ -119,17 +119,8 @@
|
|
||||||
if (map->l_direct_opencount > 0 || map->l_type != lt_loaded
|
|
||||||
|| dl_close_state != not_pending)
|
|
||||||
{
|
|
||||||
- if (map->l_direct_opencount == 0)
|
|
||||||
- {
|
|
||||||
- if (map->l_type == lt_loaded)
|
|
||||||
- dl_close_state = rerun;
|
|
||||||
- else if (map->l_type == lt_library)
|
|
||||||
- {
|
|
||||||
- struct link_map **oldp = map->l_initfini;
|
|
||||||
- map->l_initfini = map->l_orig_initfini;
|
|
||||||
- _dl_scope_free (oldp);
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
+ if (map->l_direct_opencount == 0 && map->l_type == lt_loaded)
|
|
||||||
+ dl_close_state = rerun;
|
|
||||||
|
|
||||||
/* There are still references to this object. Do nothing more. */
|
|
||||||
if (__builtin_expect (GLRO_dl_debug_mask & DL_DEBUG_FILES, 0))
|
|
||||||
diff -Nru eglibc-2.15.17955/libc/elf/dl-deps.c eglibc-2.15.17955.rasm/libc/elf/dl-deps.c
|
|
||||||
--- eglibc-2.15.17955/libc/elf/dl-deps.c 2012-04-07 20:58:55.000000000 +0100
|
|
||||||
+++ eglibc-2.15.17955.rasm/libc/elf/dl-deps.c 2012-10-23 22:38:17.124208092 +0100
|
|
||||||
@@ -689,6 +689,7 @@
|
|
||||||
l_initfini[nlist] = NULL;
|
|
||||||
atomic_write_barrier ();
|
|
||||||
map->l_initfini = l_initfini;
|
|
||||||
+ map->l_free_initfini = 1;
|
|
||||||
if (l_reldeps != NULL)
|
|
||||||
{
|
|
||||||
atomic_write_barrier ();
|
|
||||||
@@ -697,7 +698,7 @@
|
|
||||||
_dl_scope_free (old_l_reldeps);
|
|
||||||
}
|
|
||||||
if (old_l_initfini != NULL)
|
|
||||||
- map->l_orig_initfini = old_l_initfini;
|
|
||||||
+ _dl_scope_free (old_l_initfini);
|
|
||||||
|
|
||||||
if (errno_reason)
|
|
||||||
_dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname,
|
|
||||||
diff -Nru eglibc-2.15.17955/libc/elf/dl-libc.c eglibc-2.15.17955.rasm/libc/elf/dl-libc.c
|
|
||||||
--- eglibc-2.15.17955/libc/elf/dl-libc.c 2012-04-07 20:58:55.000000000 +0100
|
|
||||||
+++ eglibc-2.15.17955.rasm/libc/elf/dl-libc.c 2012-10-23 22:39:02.388449874 +0100
|
|
||||||
@@ -270,13 +270,13 @@
|
|
||||||
|
|
||||||
for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns)
|
|
||||||
{
|
|
||||||
- /* Remove all additional names added to the objects. */
|
|
||||||
for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next)
|
|
||||||
{
|
|
||||||
struct libname_list *lnp = l->l_libname->next;
|
|
||||||
|
|
||||||
l->l_libname->next = NULL;
|
|
||||||
|
|
||||||
+ /* Remove all additional names added to the objects. */
|
|
||||||
while (lnp != NULL)
|
|
||||||
{
|
|
||||||
struct libname_list *old = lnp;
|
|
||||||
@@ -284,6 +284,10 @@
|
|
||||||
if (! old->dont_free)
|
|
||||||
free (old);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ /* Free the initfini dependency list. */
|
|
||||||
+ if (l->l_free_initfini)
|
|
||||||
+ free (l->l_initfini);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (__builtin_expect (GL(dl_ns)[ns]._ns_global_scope_alloc, 0) != 0
|
|
||||||
diff -Nru eglibc-2.15.17955/libc/elf/rtld.c eglibc-2.15.17955.rasm/libc/elf/rtld.c
|
|
||||||
--- eglibc-2.15.17955/libc/elf/rtld.c 2012-04-07 20:58:55.000000000 +0100
|
|
||||||
+++ eglibc-2.15.17955.rasm/libc/elf/rtld.c 2012-10-23 22:39:30.692348894 +0100
|
|
||||||
@@ -2277,6 +2277,8 @@
|
|
||||||
lnp->dont_free = 1;
|
|
||||||
lnp = lnp->next;
|
|
||||||
}
|
|
||||||
+ /* Also allocated with the fake malloc(). */
|
|
||||||
+ l->l_free_initfini = 0;
|
|
||||||
|
|
||||||
if (l != &GL(dl_rtld_map))
|
|
||||||
_dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0,
|
|
||||||
diff -Nru eglibc-2.15.17955/libc/include/link.h eglibc-2.15.17955.rasm/libc/include/link.h
|
|
||||||
--- eglibc-2.15.17955/libc/include/link.h 2012-04-07 20:58:55.000000000 +0100
|
|
||||||
+++ eglibc-2.15.17955.rasm/libc/include/link.h 2012-10-23 22:40:31.526900046 +0100
|
|
||||||
@@ -192,6 +192,9 @@
|
|
||||||
during LD_TRACE_PRELINKING=1
|
|
||||||
contains any DT_SYMBOLIC
|
|
||||||
libraries. */
|
|
||||||
+ unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be
|
|
||||||
+ freed, ie. not allocated with
|
|
||||||
+ the dummy malloc in ld.so. */
|
|
||||||
|
|
||||||
/* Collected information about own RPATH directories. */
|
|
||||||
struct r_search_path_struct l_rpath_dirs;
|
|
||||||
@@ -240,9 +243,6 @@
|
|
||||||
|
|
||||||
/* List of object in order of the init and fini calls. */
|
|
||||||
struct link_map **l_initfini;
|
|
||||||
- /* The init and fini list generated at startup, saved when the
|
|
||||||
- object is also loaded dynamically. */
|
|
||||||
- struct link_map **l_orig_initfini;
|
|
||||||
|
|
||||||
/* List of the dependencies introduced through symbol binding. */
|
|
||||||
struct link_map_reldeps
|
|
@ -1,12 +0,0 @@
|
|||||||
diff -Naur eglibc-2.15-16526.orig/config.make.in eglibc-2.15-16526/config.make.in
|
|
||||||
--- eglibc-2.15-16526.orig/libc/config.make.in 2012-07-24 17:49:58.000000000 -0400
|
|
||||||
+++ eglibc-2.15-16526/libc/config.make.in 2012-07-24 17:51:01.000000000 -0400
|
|
||||||
@@ -5,7 +5,7 @@
|
|
||||||
release = @RELEASE@
|
|
||||||
|
|
||||||
# Installation prefixes.
|
|
||||||
-install_root = $(DESTDIR)
|
|
||||||
+install_root ?= $(DESTDIR)
|
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
datadir = @datadir@
|
|
Reference in New Issue
Block a user