SHA256
1
0
forked from pool/glibc

Accepting request 73973 from Base:System

Various cleanups

OBS-URL: https://build.opensuse.org/request/show/73973
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/glibc?expand=0&rev=49
This commit is contained in:
Sascha Peilicke 2011-06-17 09:13:35 +00:00 committed by Git OBS Bridge
parent 2a2a7be7ab
commit 170d79deda
4 changed files with 424 additions and 22 deletions

View File

@ -13,7 +13,16 @@ Index: sysdeps/posix/getaddrinfo.c
{ {
const struct gaih_typeproto *tp = gaih_inet_typeproto; const struct gaih_typeproto *tp = gaih_inet_typeproto;
struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv; struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
@@ -766,7 +766,7 @@ gaih_inet (const char *name, const struc @@ -706,7 +706,7 @@ gaih_inet (const char *name, const struc
no_data = 0;
nss_gethostbyname4_r fct4
= __nss_lookup_function (nip, "gethostbyname4_r");
- if (fct4 != NULL)
+ if (fct4 != NULL && usable_ipv6)
{
int herrno;
@@ -763,7 +763,7 @@ gaih_inet (const char *name, const struc
if (fct != NULL) if (fct != NULL)
{ {
if (req->ai_family == AF_INET6 if (req->ai_family == AF_INET6
@ -22,7 +31,7 @@ Index: sysdeps/posix/getaddrinfo.c
{ {
gethosts (AF_INET6, struct in6_addr); gethosts (AF_INET6, struct in6_addr);
no_inet6_data = no_data; no_inet6_data = no_data;
@@ -2157,7 +2157,7 @@ getaddrinfo (const char *name, const cha @@ -2156,7 +2156,7 @@ getaddrinfo (const char *name, const cha
if (hints->ai_family == AF_UNSPEC || hints->ai_family == AF_INET if (hints->ai_family == AF_UNSPEC || hints->ai_family == AF_INET
|| hints->ai_family == AF_INET6) || hints->ai_family == AF_INET6)
{ {

320
glibc-2.13-dl-load.patch Normal file
View File

@ -0,0 +1,320 @@
2011-05-11 Ulrich Drepper <drepper@gmail.com>
[BZ #12393]
* elf/dl-load.c (is_trusted_path): Remove unnecessary test.
(is_trusted_path_normalize): Skip initial colon. Append slash
to empty buffer. Duplicate is_trusted_path code but allow
constructed patch to be prefix.
(is_dst): Allow $ORIGIN followed by /.
(_dl_dst_substitute): Correct clearing of check_for_trusted.
Correct testing of result of is_trusted_path_normalize
(decompose_rpath): Fix warning.
2011-05-07 Petr Baudis <pasky@suse.cz>
Ulrich Drepper <drepper@gmail.com>
[BZ #12393]
* elf/dl-load.c (fillin_rpath): Move trusted path check...
(is_trusted_path): ...to here.
(is_trusted_path_normalize): Wrapper for /../ and /./ normalization.
(_dl_dst_substitute): Verify expanded $ORIGIN path elements
using is_trusted_path_normalize() in setuid scripts.
2011-03-14 Andreas Schwab <schwab@redhat.com>
* elf/dl-load.c (_dl_dst_substitute): When skipping the first
rpath element also skip the following colon.
(expand_dynamic_string_token): Add is_path parameter and pass
down to DL_DST_REQUIRED and _dl_dst_substitute.
(decompose_rpath): Call expand_dynamic_string_token with
non-zero is_path. Ignore empty rpaths.
(_dl_map_object_from_fd): Call expand_dynamic_string_token
with zero is_path.
2011-03-06 Ulrich Drepper <drepper@gmail.com>
* elf/dl-load.c (_dl_map_object): If we are looking for the first
to-be-loaded object along a path to loader is ld.so.
--- glibc-2.13/elf/dl-load.c 2011-05-20 21:53:43.766426054 +0200
+++ glibc-2.14/elf/dl-load.c 2011-05-31 09:59:16.781617374 +0200
@@ -1,5 +1,5 @@
/* Map in a shared object's segments from the file.
- Copyright (C) 1995-2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1995-2007, 2009, 2010, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -168,6 +168,87 @@ local_strdup (const char *s)
}
+static bool
+is_trusted_path (const char *path, size_t len)
+{
+ const char *trun = system_dirs;
+
+ for (size_t idx = 0; idx < nsystem_dirs_len; ++idx)
+ {
+ if (len == system_dirs_len[idx] && memcmp (trun, path, len) == 0)
+ /* Found it. */
+ return true;
+
+ trun += system_dirs_len[idx] + 1;
+ }
+
+ return false;
+}
+
+
+static bool
+is_trusted_path_normalize (const char *path, size_t len)
+{
+ if (len == 0)
+ return false;
+
+ if (*path == ':')
+ {
+ ++path;
+ --len;
+ }
+
+ char *npath = (char *) alloca (len + 2);
+ char *wnp = npath;
+ while (*path != '\0')
+ {
+ if (path[0] == '/')
+ {
+ if (path[1] == '.')
+ {
+ if (path[2] == '.' && (path[3] == '/' || path[3] == '\0'))
+ {
+ while (wnp > npath && *--wnp != '/')
+ ;
+ path += 3;
+ continue;
+ }
+ else if (path[2] == '/' || path[2] == '\0')
+ {
+ path += 2;
+ continue;
+ }
+ }
+
+ if (wnp > npath && wnp[-1] == '/')
+ {
+ ++path;
+ continue;
+ }
+ }
+
+ *wnp++ = *path++;
+ }
+
+ if (wnp == npath || wnp[-1] != '/')
+ *wnp++ = '/';
+
+ const char *trun = system_dirs;
+
+ for (size_t idx = 0; idx < nsystem_dirs_len; ++idx)
+ {
+ if (wnp - npath >= system_dirs_len[idx]
+ && memcmp (trun, npath, system_dirs_len[idx]) == 0)
+ /* Found it. */
+ return true;
+
+ trun += system_dirs_len[idx] + 1;
+ }
+
+ return false;
+}
+
+
static size_t
is_dst (const char *start, const char *name, const char *str,
int is_path, int secure)
@@ -200,7 +281,8 @@ is_dst (const char *start, const char *n
return 0;
if (__builtin_expect (secure, 0)
- && ((name[len] != '\0' && (!is_path || name[len] != ':'))
+ && ((name[len] != '\0' && name[len] != '/'
+ && (!is_path || name[len] != ':'))
|| (name != start + 1 && (!is_path || name[-2] != ':'))))
return 0;
@@ -240,13 +322,14 @@ _dl_dst_substitute (struct link_map *l,
int is_path)
{
const char *const start = name;
- char *last_elem, *wp;
/* Now fill the result path. While copying over the string we keep
track of the start of the last path element. When we come accross
a DST we copy over the value or (if the value is not available)
leave the entire path element out. */
- last_elem = wp = result;
+ char *wp = result;
+ char *last_elem = result;
+ bool check_for_trusted = false;
do
{
@@ -265,6 +348,9 @@ _dl_dst_substitute (struct link_map *l,
else
#endif
repl = l->l_origin;
+
+ check_for_trusted = (INTUSE(__libc_enable_secure)
+ && l->l_type == lt_executable);
}
else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0)
repl = GLRO(dl_platform);
@@ -284,6 +370,10 @@ _dl_dst_substitute (struct link_map *l,
name += len;
while (*name != '\0' && (!is_path || *name != ':'))
++name;
+ /* Also skip following colon if this is the first rpath
+ element, but keep an empty element at the end. */
+ if (wp == result && is_path && *name == ':' && name[1] != '\0')
+ ++name;
}
else
/* No DST we recognize. */
@@ -293,11 +383,28 @@ _dl_dst_substitute (struct link_map *l,
{
*wp++ = *name++;
if (is_path && *name == ':')
- last_elem = wp;
+ {
+ /* In SUID/SGID programs, after $ORIGIN expansion the
+ normalized path must be rooted in one of the trusted
+ directories. */
+ if (__builtin_expect (check_for_trusted, false)
+ && !is_trusted_path_normalize (last_elem, wp - last_elem))
+ wp = last_elem;
+ else
+ last_elem = wp;
+
+ check_for_trusted = false;
+ }
}
}
while (*name != '\0');
+ /* In SUID/SGID programs, after $ORIGIN expansion the normalized
+ path must be rooted in one of the trusted directories. */
+ if (__builtin_expect (check_for_trusted, false)
+ && !is_trusted_path_normalize (last_elem, wp - last_elem))
+ wp = last_elem;
+
*wp = '\0';
return result;
@@ -310,7 +417,7 @@ _dl_dst_substitute (struct link_map *l,
belonging to the map is loaded. In this case the path element
containing $ORIGIN is left out. */
static char *
-expand_dynamic_string_token (struct link_map *l, const char *s)
+expand_dynamic_string_token (struct link_map *l, const char *s, int is_path)
{
/* We make two runs over the string. First we determine how large the
resulting string is and then we copy it over. Since this is no
@@ -321,7 +428,7 @@ expand_dynamic_string_token (struct link
char *result;
/* Determine the number of DST elements. */
- cnt = DL_DST_COUNT (s, 1);
+ cnt = DL_DST_COUNT (s, is_path);
/* If we do not have to replace anything simply copy the string. */
if (__builtin_expect (cnt, 0) == 0)
@@ -335,7 +442,7 @@ expand_dynamic_string_token (struct link
if (result == NULL)
return NULL;
- return _dl_dst_substitute (l, s, result, 1);
+ return _dl_dst_substitute (l, s, result, is_path);
}
@@ -407,33 +514,8 @@ fillin_rpath (char *rpath, struct r_sear
cp[len++] = '/';
/* Make sure we don't use untrusted directories if we run SUID. */
- if (__builtin_expect (check_trusted, 0))
- {
- const char *trun = system_dirs;
- size_t idx;
- int unsecure = 1;
-
- /* All trusted directories must be complete names. */
- if (cp[0] == '/')
- {
- for (idx = 0; idx < nsystem_dirs_len; ++idx)
- {
- if (len == system_dirs_len[idx]
- && memcmp (trun, cp, len) == 0)
- {
- /* Found it. */
- unsecure = 0;
- break;
- }
-
- trun += system_dirs_len[idx] + 1;
- }
- }
-
- if (unsecure)
- /* Simply drop this directory. */
- continue;
- }
+ if (__builtin_expect (check_trusted, 0) && !is_trusted_path (cp, len))
+ continue;
/* See if this directory is already known. */
for (dirp = GL(dl_all_dirs); dirp != NULL; dirp = dirp->next)
@@ -551,13 +633,21 @@ decompose_rpath (struct r_search_path_st
/* Make a writable copy. At the same time expand possible dynamic
string tokens. */
- copy = expand_dynamic_string_token (l, rpath);
+ copy = expand_dynamic_string_token (l, rpath, 1);
if (copy == NULL)
{
errstring = N_("cannot create RUNPATH/RPATH copy");
goto signal_error;
}
+ /* Ignore empty rpaths. */
+ if (*copy == 0)
+ {
+ free (copy);
+ sps->dirs = (struct r_search_path_elem **) -1;
+ return false;
+ }
+
/* Count the number of necessary elements in the result array. */
nelems = 0;
for (cp = copy; *cp != '\0'; ++cp)
@@ -2109,7 +2201,9 @@ _dl_map_object (struct link_map *loader,
{
#ifdef SHARED
// XXX Correct to unconditionally default to namespace 0?
- l = loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded;
+ l = (loader
+ ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded
+ ?: &GL(dl_rtld_map));
#else
l = loader;
#endif
@@ -2175,7 +2269,7 @@ _dl_map_object (struct link_map *loader,
{
/* The path may contain dynamic string tokens. */
realname = (loader
- ? expand_dynamic_string_token (loader, name)
+ ? expand_dynamic_string_token (loader, name, 0)
: local_strdup (name));
if (realname == NULL)
fd = -1;

View File

@ -1,3 +1,25 @@
-------------------------------------------------------------------
Fri Jun 17 07:07:37 UTC 2011 - aj@suse.de
- Do not package memusage and memusagestat since they require
lib-gd and that grows the build cycle.
-------------------------------------------------------------------
Thu Jun 16 18:37:19 UTC 2011 - aj@suse.de
- Fix handling of shared library preloading.
-------------------------------------------------------------------
Thu Jun 16 13:33:23 UTC 2011 - aj@suse.de
- Fix getaddrinfo IPv6 code (bnc#684534).
- Split up glibc-devel-static subpackage (bnc#655261).
-------------------------------------------------------------------
Thu Jun 16 12:23:32 UTC 2011 - aj@suse.de
- Reorder ld.so.conf library list (bnc#671725).
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Jun 15 07:08:35 UTC 2011 - aj@suse.de Wed Jun 15 07:08:35 UTC 2011 - aj@suse.de

View File

@ -19,11 +19,8 @@
Name: glibc Name: glibc
BuildRequires: gcc-c++ BuildRequires: gcc-c++
BuildRequires: gd-devel
BuildRequires: libpng-devel
BuildRequires: libselinux-devel BuildRequires: libselinux-devel
BuildRequires: libstdc++-devel BuildRequires: libstdc++-devel
BuildRequires: zlib-devel
%define _filter_GLIBC_PRIVATE 1 %define _filter_GLIBC_PRIVATE 1
%define build_locales 1 %define build_locales 1
%define run_testsuite 0 %define run_testsuite 0
@ -149,7 +146,7 @@ Patch27: glibc-2.6-configure.diff
Patch28: glibc-2.2-sunrpc.diff Patch28: glibc-2.2-sunrpc.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch29: glibc-2.8-getconf.diff Patch29: glibc-2.8-getconf.diff
# PATCH-FIX-OPENSUSE only use ipv6 if real ipv6 address exists bnc#361697 # PATCH-FIX-OPENSUSE only use ipv6 if real ipv6 address exists bnc#361697, bnc#684534
Patch30: getaddrinfo-ipv6-sanity.diff Patch30: getaddrinfo-ipv6-sanity.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch31: ppc-atomic.diff Patch31: ppc-atomic.diff
@ -199,6 +196,8 @@ Patch55: glibc-bso-12454.diff
Patch56: glibc-static-memcpy.diff Patch56: glibc-static-memcpy.diff
# FIX-OPENSUSE compile some files with -fno-strict-aliasing # FIX-OPENSUSE compile some files with -fno-strict-aliasing
Patch58: glibc-strict-aliasing.diff Patch58: glibc-strict-aliasing.diff
# PATCH-FIX-UPSTREAM fix preloading of shared libs aj@suse.de
Patch59: glibc-2.13-dl-load.patch
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
@ -208,6 +207,7 @@ Patch502: ARM_glibc-2.10.1-local-lowlevellock.diff
# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines # PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch503: ARM_glibc-2.10.1-local-no-hwcap.diff Patch503: ARM_glibc-2.10.1-local-no-hwcap.diff
%description %description
The GNU C Library provides the most important standard libraries used The GNU C Library provides the most important standard libraries used
by nearly all programs: the standard C library, the standard math by nearly all programs: the standard C library, the standard math
@ -220,6 +220,7 @@ Summary: Info Files for the GNU C Library
Group: Documentation/Other Group: Documentation/Other
PreReq: %{install_info_prereq} PreReq: %{install_info_prereq}
%description info %description info
This package contains the documentation for the GNU C library stored as This package contains the documentation for the GNU C library stored as
info files. Due to a lack of resources, this documentation is not info files. Due to a lack of resources, this documentation is not
@ -230,6 +231,7 @@ License: GPLv2+ ; LGPLv2.1+
Summary: HTML Documentation for the GNU C Library Summary: HTML Documentation for the GNU C Library
Group: Documentation/HTML Group: Documentation/HTML
%description html %description html
This package contains the HTML documentation for the GNU C library. Due This package contains the HTML documentation for the GNU C library. Due
to a lack of resources, this documentation is not complete and is to a lack of resources, this documentation is not complete and is
@ -240,6 +242,7 @@ License: LGPLv2.1+
Summary: Database Sources for 'locale' Summary: Database Sources for 'locale'
Group: System/Libraries Group: System/Libraries
%description i18ndata %description i18ndata
This package contains the data needed to build the locale data files to This package contains the data needed to build the locale data files to
use the internationalization features of the GNU libc. It is normally use the internationalization features of the GNU libc. It is normally
@ -260,6 +263,7 @@ Obsoletes: glibc-locale-64bit
Obsoletes: glibc-locale-32bit Obsoletes: glibc-locale-32bit
%endif %endif
%description locale %description locale
Locale data for the internationalisation features of the GNU C library. Locale data for the internationalisation features of the GNU C library.
@ -271,6 +275,7 @@ Provides: aaa_base:/etc/init.d/nscd
Provides: glibc:/usr/sbin/nscd Provides: glibc:/usr/sbin/nscd
PreReq: %insserv_prereq PreReq: %insserv_prereq
%description -n nscd %description -n nscd
Nscd caches name service lookups and can dramatically improve Nscd caches name service lookups and can dramatically improve
performance with NIS, NIS+, and LDAP. performance with NIS, NIS+, and LDAP.
@ -288,6 +293,7 @@ Obsoletes: glibc-profile-64bit
Obsoletes: glibc-profile-32bit Obsoletes: glibc-profile-32bit
%endif %endif
%description profile %description profile
This package contains special versions of the GNU C library which are This package contains special versions of the GNU C library which are
necessary for profiling and debugging. necessary for profiling and debugging.
@ -308,16 +314,31 @@ Obsoletes: glibc-devel-32bit
PreReq: /bin/rm PreReq: /bin/rm
Requires: glibc = %{version}, linux-kernel-headers Requires: glibc = %{version}, linux-kernel-headers
%description devel %description devel
These libraries are needed to develop programs which use the standard C These libraries are needed to develop programs which use the standard C
library. library.
%package devel-static
Summary: C library static libraries for -static linking
Group: Development/Libraries/C and C++
Requires: %{name}-devel = %{version}
%description devel-static
The glibc-devel-static package contains the C library static libraries
for -static linking. You don't need these, unless you link statically,
which is highly discouraged.
%package utils %package utils
License: BSD3c(or similar) ; GPLv2+ ; LGPLv2.1+ License: BSD3c(or similar) ; GPLv2+ ; LGPLv2.1+
Summary: Development utilities from GNU C library Summary: Development utilities from GNU C library
Group: Development/Languages/C and C++ Group: Development/Languages/C and C++
Requires: glibc = %{version} Requires: glibc = %{version}
%description utils %description utils
The glibc-utils package contains memusage, a memory usage profiler, The glibc-utils package contains memusage, a memory usage profiler,
mtrace, a memory leak tracer and xtrace, a function call tracer mtrace, a memory leak tracer and xtrace, a function call tracer
@ -327,12 +348,14 @@ If you are unsure if you need this, don't install this package.
%ifarch %ix86 %ifarch %ix86
%package obsolete %package obsolete
License: BSD3c(or similar) ; GPLv2+ ; LGPLv2.1+ License: BSD3c(or similar) ; GPLv2+ ; LGPLv2.1+
Summary: Obsolete Shared Libraries from the GNU C Library Summary: Obsolete Shared Libraries from the GNU C Library
Group: System/Libraries Group: System/Libraries
Requires: glibc = %{version} Requires: glibc = %{version}
%description obsolete %description obsolete
This package provides some old libraries from the GNU C Library which This package provides some old libraries from the GNU C Library which
are no longer supported. Additional it provides a compatibility library are no longer supported. Additional it provides a compatibility library
@ -345,6 +368,7 @@ versions of your software.
%endif %endif
%prep %prep
%ifarch %arm armv5tel armv7l %ifarch %arm armv5tel armv7l
# add glibc-ports for arm # add glibc-ports for arm
@ -418,6 +442,7 @@ rm nscd/s-stamp
%patch55 -p1 %patch55 -p1
%patch56 -p1 %patch56 -p1
%patch58 %patch58
%patch59 -p1
%ifarch %arm armv5tel armv7l %ifarch %arm armv5tel armv7l
%patch500 %patch500
%patch501 %patch501
@ -450,6 +475,7 @@ find . -name configure | xargs touch
### ###
####################################################################### #######################################################################
%build %build
if [ -x /bin/uname.bin ]; then if [ -x /bin/uname.bin ]; then
/bin/uname.bin -a /bin/uname.bin -a
@ -625,6 +651,7 @@ $BuildCC -static $RPM_OPT_FLAGS -Os $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glib
### ###
####################################################################### #######################################################################
%check %check
%if %{run_testsuite} %if %{run_testsuite}
# Increase timeout # Increase timeout
@ -647,6 +674,7 @@ make -C cc-base check-abi || echo check-abi failed
### ###
####################################################################### #######################################################################
%install %install
# We don't want to strip the .symtab from our libraries in find-debuginfo.sh, # We don't want to strip the .symtab from our libraries in find-debuginfo.sh,
# certainly not from libpthread.so.* because it is used by libthread_db to find # certainly not from libpthread.so.* because it is used by libthread_db to find
@ -772,12 +800,8 @@ touch $RPM_BUILD_ROOT/var/run/nscd/{socket,nscd.pid}
# #
cat > $RPM_BUILD_ROOT/etc/ld.so.conf <<EOF cat > $RPM_BUILD_ROOT/etc/ld.so.conf <<EOF
%ifarch s390x sparc64 x86_64 ppc64 ppc %ifarch s390x sparc64 x86_64 ppc64 ppc
#/usr/X11R6/lib64/Xaw3d
#/usr/X11R6/lib64
/usr/lib64/Xaw3d /usr/lib64/Xaw3d
%endif %endif
#/usr/X11R6/lib/Xaw3d
#/usr/X11R6/lib
/usr/lib/Xaw3d /usr/lib/Xaw3d
%ifarch %x86 %ifarch %x86
/usr/i586-suse-linux/lib /usr/i586-suse-linux/lib
@ -789,16 +813,16 @@ cat > $RPM_BUILD_ROOT/etc/ld.so.conf <<EOF
/usr/$RPM_ARCH-suse-linux/lib /usr/$RPM_ARCH-suse-linux/lib
%endif %endif
%endif %endif
/usr/local/lib
/opt/kde3/lib
%ifarch s390x sparc64 x86_64 ppc64 ppc %ifarch s390x sparc64 x86_64 ppc64 ppc
/lib64 /lib64
/lib /lib
/usr/lib64 /usr/lib64
/usr/lib /usr/lib
/usr/local/lib64 /usr/local/lib64
/usr/local/lib
/opt/kde3/lib64 /opt/kde3/lib64
%endif %endif
/opt/kde3/lib
include /etc/ld.so.conf.d/*.conf include /etc/ld.so.conf.d/*.conf
EOF EOF
# Add ldconfig cache directory for directory ownership # Add ldconfig cache directory for directory ownership
@ -834,6 +858,7 @@ done
### ###
####################################################################### #######################################################################
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
@ -841,10 +866,13 @@ rm -rf $RPM_BUILD_ROOT
# %set_permissions %{_libdir}/pt_chown # %set_permissions %{_libdir}/pt_chown
# since we cannot do it in our own post section # since we cannot do it in our own post section
%post -p %{_sbindir}/glibc_post_upgrade %post -p %{_sbindir}/glibc_post_upgrade
%postun -p /sbin/ldconfig %postun -p /sbin/ldconfig
%post locale %post locale
for l in /usr/share/locale/locale.alias %{_libdir}/gconv/gconv-modules; do for l in /usr/share/locale/locale.alias %{_libdir}/gconv/gconv-modules; do
[ -d "$l.d" ] || continue [ -d "$l.d" ] || continue
@ -853,19 +881,24 @@ for l in /usr/share/locale/locale.alias %{_libdir}/gconv/gconv-modules; do
done done
/usr/sbin/iconvconfig /usr/sbin/iconvconfig
%post info %post info
%install_info --info-dir=%{_infodir} %{_infodir}/libc.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/libc.info.gz
%postun info %postun info
%install_info_delete --info-dir=%{_infodir} %{_infodir}/libc.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/libc.info.gz
%preun -n nscd %preun -n nscd
%stop_on_removal nscd %stop_on_removal nscd
%post -n nscd %post -n nscd
%{insserv_force_if_yast nscd} %{insserv_force_if_yast nscd}
mkdir -p /var/run/nscd mkdir -p /var/run/nscd
%postun -n nscd %postun -n nscd
%restart_on_update nscd %restart_on_update nscd
%insserv_cleanup %insserv_cleanup
@ -882,6 +915,7 @@ exit 0
# glibc # glibc
%files %files
%defattr(-,root,root) %defattr(-,root,root)
%doc LICENSES %doc LICENSES
@ -1009,6 +1043,7 @@ exit 0
%ifarch %ix86 %ifarch %ix86
%files obsolete %files obsolete
%defattr (755,root,root,755) %defattr (755,root,root,755)
%dir /%{_lib}/obsolete/ %dir /%{_lib}/obsolete/
@ -1017,6 +1052,7 @@ exit 0
/%{_lib}/obsolete/noversion/libNoVersion.so.1 /%{_lib}/obsolete/noversion/libNoVersion.so.1
%endif %endif
%files locale -f libc.lang %files locale -f libc.lang
%defattr(-,root,root) %defattr(-,root,root)
/usr/share/locale/locale.alias /usr/share/locale/locale.alias
@ -1025,6 +1061,7 @@ exit 0
%endif %endif
%{_libdir}/gconv %{_libdir}/gconv
%files devel %files devel
%defattr(-,root,root) %defattr(-,root,root)
%doc COPYING COPYING.LIB FAQ INSTALL NEWS NOTES README BUGS CONFORMANCE %doc COPYING COPYING.LIB FAQ INSTALL NEWS NOTES README BUGS CONFORMANCE
@ -1038,43 +1075,52 @@ exit 0
%{_prefix}/include/* %{_prefix}/include/*
%{_libdir}/*.o %{_libdir}/*.o
%{_libdir}/*.so %{_libdir}/*.so
%{_libdir}/libBrokenLocale.a # These static libraries are needed even for shared builds
%{_libdir}/libanl.a
%{_libdir}/libbsd-compat.a %{_libdir}/libbsd-compat.a
%{_libdir}/libc.a
%{_libdir}/libc_nonshared.a %{_libdir}/libc_nonshared.a
%{_libdir}/libcrypt.a
%{_libdir}/libdl.a
%{_libdir}/libg.a %{_libdir}/libg.a
%{_libdir}/libieee.a %{_libdir}/libieee.a
%ifarch ppc ppc64 s390 s390x sparc sparcv8 sparcv9 sparcv9v %ifarch ppc ppc64 s390 s390x sparc sparcv8 sparcv9 sparcv9v
# This is not built on sparc64. # This is not built on sparc64.
%{_libdir}/libnldbl_nonshared.a %{_libdir}/libnldbl_nonshared.a
%endif %endif
%{_libdir}/libm.a
%{_libdir}/libmcheck.a %{_libdir}/libmcheck.a
%{_libdir}/libpthread_nonshared.a
%{_libdir}/librpcsvc.a
%files devel-static
%defattr(-,root,root)
%{_libdir}/libBrokenLocale.a
%{_libdir}/libanl.a
%{_libdir}/libc.a
%{_libdir}/libcrypt.a
%{_libdir}/libdl.a
%{_libdir}/libm.a
%{_libdir}/libnsl.a %{_libdir}/libnsl.a
%{_libdir}/libpthread.a %{_libdir}/libpthread.a
%{_libdir}/libpthread_nonshared.a
%{_libdir}/libresolv.a %{_libdir}/libresolv.a
%{_libdir}/librpcsvc.a
%{_libdir}/librt.a %{_libdir}/librt.a
%{_libdir}/libutil.a %{_libdir}/libutil.a
%files info %files info
%defattr(-,root,root) %defattr(-,root,root)
%doc %{_infodir}/libc.info.gz %doc %{_infodir}/libc.info.gz
%doc %{_infodir}/libc.info-?.gz %doc %{_infodir}/libc.info-?.gz
%doc %{_infodir}/libc.info-??.gz %doc %{_infodir}/libc.info-??.gz
%files html %files html
%defattr(-,root,root) %defattr(-,root,root)
%doc %{_prefix}/share/doc/glibc %doc %{_prefix}/share/doc/glibc
%files i18ndata %files i18ndata
%defattr(-,root,root) %defattr(-,root,root)
%{_prefix}/share/i18n %{_prefix}/share/i18n
%files -n nscd %files -n nscd
%defattr(-,root,root) %defattr(-,root,root)
%config(noreplace) /etc/nscd.conf %config(noreplace) /etc/nscd.conf
@ -1090,6 +1136,7 @@ exit 0
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/group %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/group
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/hosts %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/hosts
%files profile %files profile
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/libc_p.a %{_libdir}/libc_p.a
@ -1105,14 +1152,18 @@ exit 0
%{_libdir}/libutil_p.a %{_libdir}/libutil_p.a
%{_libdir}/libdl_p.a %{_libdir}/libdl_p.a
%files utils %files utils
%defattr(-,root,root) %defattr(-,root,root)
/%{_lib}/libmemusage.so /%{_lib}/libmemusage.so
/%{_lib}/libpcprofile.so /%{_lib}/libpcprofile.so
%{_bindir}/memusage # These need gd-devel for building
%{_bindir}/memusagestat #%{_bindir}/memusage
#%{_bindir}/memusagestat
%{_bindir}/mtrace %{_bindir}/mtrace
%{_bindir}/pcprofiledump %{_bindir}/pcprofiledump
%{_bindir}/xtrace %{_bindir}/xtrace
%changelog %changelog