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 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") addFilter("glibc\..*: permissions-missing-requires")
# We will not rename glibc to follow the shlib policy # We will not rename glibc to follow the shlib policy
addFilter("shlib-policy-missing-suffix") 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: gcc-c++
BuildRequires: libselinux-devel BuildRequires: libselinux-devel
BuildRequires: libstdc++-devel BuildRequires: libstdc++-devel
%define _filter_GLIBC_PRIVATE 1 %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_locales 1
%define build_html 1
%endif
# Enable testsuite runs for local builds # Enable testsuite runs for local builds
%if %{with glibc_run_testsuite} %if %{with glibc_run_testsuite}
%define run_testsuite 1 %define run_testsuite 1
@ -233,6 +244,8 @@ Patch100: glibc-sw13618-2.patch
Patch101: glibc-2.16-fix-check-abi.patch Patch101: glibc-2.16-fix-check-abi.patch
# PATCH-FIX-UPSTREAM Fix check-localelfplt - aj@suse.de # PATCH-FIX-UPSTREAM Fix check-localelfplt - aj@suse.de
Patch102: glibc-2.16-fix-check-localplt.patch 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 %description
The GNU C Library provides the most important standard libraries used 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 info files. Due to a lack of resources, this documentation is not
complete and is partially out of date. complete and is partially out of date.
%if %{build_html}
%package html %package html
Summary: HTML Documentation for the GNU C Library Summary: HTML Documentation for the GNU C Library
License: GFDL-1.1 License: GFDL-1.1
@ -263,6 +277,7 @@ BuildArch: noarch
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
partially out of date. partially out of date.
%endif
%package i18ndata %package i18ndata
Summary: Database Sources for 'locale' Summary: Database Sources for 'locale'
@ -308,6 +323,7 @@ Requires(postun): %insserv_prereq
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.
%if %{build_profile}
%package profile %package profile
Summary: Libc Profiling and Debugging Versions Summary: Libc Profiling and Debugging Versions
License: LGPL-2.1+ and SUSE-LGPL-2.1+-with-GCC-exception and GPL-2.0+ 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 %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.
%endif
%package devel %package devel
Summary: Include Files and Libraries Mandatory for Development Summary: Include Files and Libraries Mandatory for Development
@ -482,6 +499,9 @@ rm nscd/s-stamp
%patch100 -p1 %patch100 -p1
%patch101 -p1 %patch101 -p1
%patch102 -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! # 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 \ CFLAGS="$conf_cflags" CC="$BuildCC" CXX="$BuildCCplus" ../configure \
--prefix=%{_prefix} \ --prefix=%{_prefix} \
--libexecdir=%{_libdir} --infodir=%{_infodir} \ --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} %if %{enable_stackguard_randomization}
--enable-stackguard-randomization \ --enable-stackguard-randomization \
@ -679,7 +702,9 @@ configure_and_build_glibc() {
# #
# Build html documentation # Build html documentation
# #
%if %{build_html}
make -C cc-base html make -C cc-base html
%endif
# #
# Build glibc_post_upgrade binary # Build glibc_post_upgrade binary
@ -732,9 +757,13 @@ export SUSE_ASNEEDED=0
%endif %endif
# File was not created as empty file by patch 101 # File was not created as empty file by patch 101
touch abilist/libnss_dns.abilist abilist/libnss_db.abilist touch abilist/libnss_dns.abilist abilist/libnss_db.abilist
# XXX This has to pass # This has to pass. Exceptions:
#make -C cc-base check-abi || echo check-abi failed # ARM: There's no check-abi data for arm
%ifnarch %arm
make -C cc-base check-abi 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/mapv4v6addr.h %{buildroot}%{_includedir}/resolv/
install -m 0644 resolv/mapv4v6hostent.h %{buildroot}%{_includedir}/resolv/ install -m 0644 resolv/mapv4v6hostent.h %{buildroot}%{_includedir}/resolv/
%if %{build_html}
mkdir -p %{buildroot}%{_datadir}/doc/glibc mkdir -p %{buildroot}%{_datadir}/doc/glibc
cp -p manual/libc/*.html %{buildroot}%{_datadir}/doc/glibc cp -p manual/libc/*.html %{buildroot}%{_datadir}/doc/glibc
%endif
cd manpages; make install_root=%{buildroot} install; cd .. 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 %{SOURCE21} %{buildroot}/lib/systemd/system
install -m 644 %{SOURCE22} %{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}/man1/localedef.1.gz
%doc %{_mandir}/man5/* %doc %{_mandir}/man5/*
/%{_lib}/ld-%{version}.so /%{_lib}/ld-%{version}.so
%ifarch ppc s390 mips hppa
/%{_lib}/ld.so.1 # Each architecture has a different name for the dynamic linker:
%else %ifarch %arm
%ifarch ia64 %ifarch armv7l
/%{_lib}/ld-linux-ia64.so.2 /%{_lib}/ld-linux-armhf.so.3
%else # Keep compatibility link
%ifarch s390x ppc64 /%{_lib}/ld-linux.so.3
/%{_lib}/ld64.so.1
%ifarch s390x
/lib/ld64.so.1
%endif
%else
%ifarch x86_64
/%{_lib}/ld-linux-x86-64.so.2
%else
%ifarch %arm
/%{_lib}/ld-linux.so.3
%else
/%{_lib}/ld-linux.so.2
%endif
%endif
%endif
%endif
%endif %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-%{version}.so
/%{_lib}/libBrokenLocale.so.1 /%{_lib}/libBrokenLocale.so.1
/%{_lib}/libSegFault.so /%{_lib}/libSegFault.so
@ -1183,9 +1226,11 @@ exit 0
%doc %{_infodir}/libc.info-?.gz %doc %{_infodir}/libc.info-?.gz
%doc %{_infodir}/libc.info-??.gz %doc %{_infodir}/libc.info-??.gz
%if %{build_html}
%files html %files html
%defattr(-,root,root) %defattr(-,root,root)
%doc %{_prefix}/share/doc/glibc %doc %{_prefix}/share/doc/glibc
%endif
%files i18ndata %files i18ndata
%defattr(-,root,root) %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/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
%if %{build_profile}
%files profile %files profile
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/libc_p.a %{_libdir}/libc_p.a
@ -1222,6 +1268,7 @@ exit 0
%{_libdir}/librpcsvc_p.a %{_libdir}/librpcsvc_p.a
%{_libdir}/libutil_p.a %{_libdir}/libutil_p.a
%{_libdir}/libdl_p.a %{_libdir}/libdl_p.a
%endif
%files utils %files utils
%defattr(-,root,root) %defattr(-,root,root)