SHA256
1
0
forked from pool/glibc

Accepting request 113956 from home:a_jaeger:my-factory-packages

Fix for ARM dynamic linker

OBS-URL: https://build.opensuse.org/request/show/113956
OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=165
This commit is contained in:
Andreas Jaeger 2012-04-16 20:11:08 +00:00 committed by Git OBS Bridge
parent 84ce9e0d13
commit b10e9555ad
4 changed files with 93 additions and 26 deletions

10
armhf-ld-so.patch Normal file
View File

@ -0,0 +1,10 @@
diff --git a/sysdeps/arm/shlib-versions b/sysdeps/arm/shlib-versions
index 491dd0a..5464959 100644
--- a/glibc-ports-2.15/sysdeps/arm/shlib-versions
+++ b/glibc-ports-2.15/sysdeps/arm/shlib-versions
@@ -1,4 +1,4 @@
arm.*-.*-linux-gnueabi.* DEFAULT GLIBC_2.4
-arm.*-.*-linux-gnueabi.* ld=ld-linux.so.3
+arm.*-.*-linux-gnueabi.* ld=ld-linux-armhf.so.3
arm.*-.*-linux.* ld=ld-linux.so.2

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Mon Apr 16 14:31:38 UTC 2012 - aj@suse.de
- The dynamic linker for armv7 hardware float is called
/lib/ld-linux-armhf.so.3. Provide compatibility symlink.
- Do not build locales and profile for i686 since we only ship
the base and glibc-devel packages.
-------------------------------------------------------------------
Fri Apr 13 09:35:49 UTC 2012 - aj@suse.de

View File

@ -14,3 +14,5 @@ addFilter(".*permissions-missing-postin missing %set_permissions /usr/.*pt_chown
addFilter("glibc\..*: permissions-missing-requires")
# We will not rename glibc to follow the shlib policy
addFilter("shlib-policy-missing-suffix")
# The dynamic linker and libnsl call exit - this is fine
addFilter(".*shared-lib-calls-exit.*")

View File

@ -27,8 +27,19 @@ Group: System/Libraries
BuildRequires: gcc-c++
BuildRequires: libselinux-devel
BuildRequires: libstdc++-devel
%define _filter_GLIBC_PRIVATE 1
%if %_target_cpu == "i686"
# For i686 we ship only glibc and glibc-devel, so
# let's not build everything
%define build_profile 0
%define build_locales 0
%define build_html 0
%else
%define build_profile 1
%define build_locales 1
%define build_html 1
%endif
# Enable testsuite runs for local builds
%if %{with glibc_run_testsuite}
%define run_testsuite 1
@ -233,6 +244,8 @@ Patch100: glibc-sw13618-2.patch
Patch101: glibc-2.16-fix-check-abi.patch
# PATCH-FIX-UPSTREAM Fix check-localelfplt - aj@suse.de
Patch102: glibc-2.16-fix-check-localplt.patch
# PATCH-FIX-OPENSUSE Use new common path for ARMv7 hardware float linker - aj@suse.de
Patch103: armhf-ld-so.patch
%description
The GNU C Library provides the most important standard libraries used
@ -253,6 +266,7 @@ This package contains the documentation for the GNU C library stored as
info files. Due to a lack of resources, this documentation is not
complete and is partially out of date.
%if %{build_html}
%package html
Summary: HTML Documentation for the GNU C Library
License: GFDL-1.1
@ -263,6 +277,7 @@ BuildArch: noarch
This package contains the HTML documentation for the GNU C library. Due
to a lack of resources, this documentation is not complete and is
partially out of date.
%endif
%package i18ndata
Summary: Database Sources for 'locale'
@ -308,6 +323,7 @@ Requires(postun): %insserv_prereq
Nscd caches name service lookups and can dramatically improve
performance with NIS, NIS+, and LDAP.
%if %{build_profile}
%package profile
Summary: Libc Profiling and Debugging Versions
License: LGPL-2.1+ and SUSE-LGPL-2.1+-with-GCC-exception and GPL-2.0+
@ -324,6 +340,7 @@ Obsoletes: glibc-profile-32bit
%description profile
This package contains special versions of the GNU C library which are
necessary for profiling and debugging.
%endif
%package devel
Summary: Include Files and Libraries Mandatory for Development
@ -482,6 +499,9 @@ rm nscd/s-stamp
%patch100 -p1
%patch101 -p1
%patch102 -p1
%ifarch armv7l
%patch103 -p1
%endif
#
# Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed!
@ -615,7 +635,10 @@ configure_and_build_glibc() {
CFLAGS="$conf_cflags" CC="$BuildCC" CXX="$BuildCCplus" ../configure \
--prefix=%{_prefix} \
--libexecdir=%{_libdir} --infodir=%{_infodir} \
--enable-add-ons=nptl$addons --enable-profile \
--enable-add-ons=nptl$addons \
%if %{build_profile}
--enable-profile \
%endif
"$@" \
%if %{enable_stackguard_randomization}
--enable-stackguard-randomization \
@ -679,7 +702,9 @@ configure_and_build_glibc() {
#
# Build html documentation
#
%if %{build_html}
make -C cc-base html
%endif
#
# Build glibc_post_upgrade binary
@ -732,9 +757,13 @@ export SUSE_ASNEEDED=0
%endif
# File was not created as empty file by patch 101
touch abilist/libnss_dns.abilist abilist/libnss_db.abilist
# XXX This has to pass
#make -C cc-base check-abi || echo check-abi failed
# This has to pass. Exceptions:
# ARM: There's no check-abi data for arm
%ifnarch %arm
make -C cc-base check-abi
#%else
#make -C cc-base check-abi || echo check-abi failed
%endif
#######################################################################
###
@ -864,8 +893,10 @@ mkdir -p %{buildroot}%{_includedir}/resolv
install -m 0644 resolv/mapv4v6addr.h %{buildroot}%{_includedir}/resolv/
install -m 0644 resolv/mapv4v6hostent.h %{buildroot}%{_includedir}/resolv/
%if %{build_html}
mkdir -p %{buildroot}%{_datadir}/doc/glibc
cp -p manual/libc/*.html %{buildroot}%{_datadir}/doc/glibc
%endif
cd manpages; make install_root=%{buildroot} install; cd ..
@ -931,6 +962,11 @@ mkdir -p %{buildroot}/lib/systemd/system
install -m 644 %{SOURCE21} %{buildroot}/lib/systemd/system
install -m 644 %{SOURCE22} %{buildroot}/lib/systemd/system
%ifarch armv7l
# Provide compatibility link
ln -s ld-%{version}.so %{buildroot}/lib/ld-linux.so.3
%endif
#######################################################################
###
### ...
@ -1003,30 +1039,37 @@ exit 0
%doc %{_mandir}/man1/localedef.1.gz
%doc %{_mandir}/man5/*
/%{_lib}/ld-%{version}.so
%ifarch ppc s390 mips hppa
/%{_lib}/ld.so.1
%else
%ifarch ia64
/%{_lib}/ld-linux-ia64.so.2
%else
%ifarch s390x ppc64
/%{_lib}/ld64.so.1
%ifarch s390x
/lib/ld64.so.1
%endif
%else
%ifarch x86_64
/%{_lib}/ld-linux-x86-64.so.2
%else
# Each architecture has a different name for the dynamic linker:
%ifarch %arm
%ifarch armv7l
/%{_lib}/ld-linux-armhf.so.3
# Keep compatibility link
/%{_lib}/ld-linux.so.3
%endif
%else
/%{_lib}/ld-linux.so.2
%endif
%ifarch ia64
/%{_lib}/ld-linux-ia64.so.2
%endif
%ifarch ppc s390 mips hppa
/%{_lib}/ld.so.1
%endif
%ifarch ppc64
/%{_lib}/ld64.so.1
%endif
%ifarch s390x
/lib/ld64.so.1
/%{_lib}/ld64.so.1
%endif
%ifarch x86_64
/%{_lib}/ld-linux-x86-64.so.2
%endif
%ifarch %ix86
/%{_lib}/ld-linux.so.2
%endif
/%{_lib}/libBrokenLocale-%{version}.so
/%{_lib}/libBrokenLocale.so.1
/%{_lib}/libSegFault.so
@ -1183,9 +1226,11 @@ exit 0
%doc %{_infodir}/libc.info-?.gz
%doc %{_infodir}/libc.info-??.gz
%if %{build_html}
%files html
%defattr(-,root,root)
%doc %{_prefix}/share/doc/glibc
%endif
%files i18ndata
%defattr(-,root,root)
@ -1208,6 +1253,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/hosts
%if %{build_profile}
%files profile
%defattr(-,root,root)
%{_libdir}/libc_p.a
@ -1222,6 +1268,7 @@ exit 0
%{_libdir}/librpcsvc_p.a
%{_libdir}/libutil_p.a
%{_libdir}/libdl_p.a
%endif
%files utils
%defattr(-,root,root)