x86: rebuilt with gcc with cet support to fix 'ld-linux.so.2: corrupt GNU_PROPERTY_TYPE (5) size: 0' [release 2.30-5mamba;Thu Dec 05 2019]

This commit is contained in:
Silvan Calarco 2024-01-05 23:07:56 +01:00
parent 6af1975c30
commit 5df1886696
2 changed files with 229 additions and 305 deletions

View File

@ -5,4 +5,3 @@ In order to save disk space and memory, as well as to make upgrading easier, com
This particular package contains the most important sets of shared libraries: the standard C library and the standard math library. Without these two libraries, a Linux system will not function. This particular package contains the most important sets of shared libraries: the standard C library and the standard math library. Without these two libraries, a Linux system will not function.
The glibc package also contains national language (locale) support. The glibc package also contains national language (locale) support.

View File

@ -8,19 +8,13 @@
# example: build a arm cross-platform glibc package with soft floating point support: # example: build a arm cross-platform glibc package with soft floating point support:
#rpmbuild -ba --define='cross_target_cpu arm' --define='softfloat 1' glibc.spec #rpmbuild -ba --define='cross_target_cpu arm' --define='softfloat 1' glibc.spec
%define glibc_headers_dir %{_builddir}/%{name}-%{version}/linux-headers/include
%define majver %(echo %version | cut -d. -f1-2) %define majver %(echo %version | cut -d. -f1-2)
#%define minver %(echo %version | cut -d. -f3) #%define minver %(echo %version | cut -d. -f3)
%define enablekernel 2.6.16
%if "%{?build_doc}" == "" %if "%{?build_doc}" == ""
%define build_doc 1 %define build_doc 1
%endif %endif
%if "%{?build_profile}" == ""
%define build_profile 1
%endif
%if "%{?build_selinux}" == "" %if "%{?build_selinux}" == ""
%define build_selinux 1 %define build_selinux 1
%endif %endif
@ -39,7 +33,6 @@
%if "%{stage1}" == "1" %if "%{stage1}" == "1"
%define bootstrap_append -stage1 %define bootstrap_append -stage1
%define build_doc 0 %define build_doc 0
%define build_profile 0
%define build_selinux 0 %define build_selinux 0
%endif %endif
@ -47,17 +40,11 @@
%if "%{stage2}" == "1" %if "%{stage2}" == "1"
%define bootstrap_append -stage2 %define bootstrap_append -stage2
%define build_doc 0 %define build_doc 0
%define build_profile 0
%define build_selinux 0 %define build_selinux 0
%endif %endif
%define target_cpu %(echo %{_target_platform} | cut -d- -f1) %define target_cpu %(echo %{_target_platform} | cut -d- -f1)
%if "%{multilib}" == "1"
%define _host %{_build}
%define _target_platform %{_build}
%endif
%if "%{_target_platform}" != "%{_host}" %if "%{_target_platform}" != "%{_host}"
%define _as %{_target_platform}-as %define _as %{_target_platform}-as
%define _ld %{_target_platform}-ld %define _ld %{_target_platform}-ld
@ -71,7 +58,6 @@
%else %else
%define _as as %define _as as
%define _ld ld %define _ld ld
%if "%{multilib}" != "1"
%define glibc_prefix %{_prefix} %define glibc_prefix %{_prefix}
%define glibc_libdir %{_libdir} %define glibc_libdir %{_libdir}
%define glibc_datadir %{_datadir} %define glibc_datadir %{_datadir}
@ -79,22 +65,12 @@
%define glibc_includedir %{_includedir} %define glibc_includedir %{_includedir}
%define glibc_target_cpu %{_target_cpu} %define glibc_target_cpu %{_target_cpu}
%define slibdir /%{_lib} %define slibdir /%{_lib}
%else
%define glibc_prefix /usr
%define glibc_libdir /usr/lib
%define glibc_datadir %{_datadir}
%define glibc_libexecdir /usr/libexec
%define glibc_includedir /usr/include
%define slibdir /lib
%define glibc_target_cpu %{_build_cpu}
%endif
%endif %endif
%define buildcc %{_target_platform}-gcc %define buildcc %{_target_platform}-gcc
%define buildcxx %{_target_platform}-g++ %define buildcxx %{_target_platform}-g++
%if "%{_target_platform}" != "%{_build}" %if "%{_target_platform}" != "%{_build}"
%define build_doc 0 %define build_doc 0
%define build_profile 0
%define build_selinux 0 %define build_selinux 0
%endif %endif
@ -108,7 +84,7 @@
Name: glibc Name: glibc
Version: 2.30 Version: 2.30
Release: 2mamba Release: 5mamba
Summary: The GNU libc libraries Summary: The GNU libc libraries
Group: System/Libraries Group: System/Libraries
Vendor: openmamba Vendor: openmamba
@ -116,14 +92,6 @@ Distribution: openmamba
Packager: Silvan Calarco <silvan.calarco@mambasoft.it> Packager: Silvan Calarco <silvan.calarco@mambasoft.it>
URL: http://www.gnu.org/software/libc/ URL: http://www.gnu.org/software/libc/
Source0: http://ftp.gnu.org/gnu/glibc/glibc-%{version}.tar.xz Source0: http://ftp.gnu.org/gnu/glibc/glibc-%{version}.tar.xz
## glibc-ports got from head (release/2.12/master) here:
## http://sourceware.org/git/?p=glibc-ports.git
#Source1: http://ftp.gnu.org/gnu/glibc/glibc-ports-%{version}.tar.xz
#Source0: ftp://sources.redhat.com/pub/glibc/snapshots/glibc-%{majver}-%{minver}.tar.bz2
#Source1: ftp://sources.redhat.com/pub/glibc/snapshots/glibc-%{majver}-ports-latest.tar.bz2
#Source1: ftp://sources.redhat.com/pub/glibc/snapshots/glibc-%{majver}-ports-%{minver}.tar.bz2
#Source3: http://ftp.gnu.org/gnu/glibc/glibc-libidn-%{version}.tar.bz2
#Source3: ftp://sources.redhat.com/pub/glibc/snapshots/glibc-%{majver}-libidn-%{minver}.tar.bz2
Source4: nscd-logrotate Source4: nscd-logrotate
Source5: nscd-conf Source5: nscd-conf
Source6: nscd-initscript Source6: nscd-initscript
@ -148,6 +116,7 @@ Patch17: glibc-2.21-prevent-ehaustion-of-tls-slots.patch
Patch18: glibc-2.25-resolv-no-compat.patch Patch18: glibc-2.25-resolv-no-compat.patch
License: LGPL License: LGPL
## AUTOBUILDREQ-BEGIN ## AUTOBUILDREQ-BEGIN
BuildRequires: libaudit-devel
BuildRequires: libcap-devel BuildRequires: libcap-devel
BuildRequires: libgd-devel BuildRequires: libgd-devel
BuildRequires: libpng-devel BuildRequires: libpng-devel
@ -174,12 +143,15 @@ BuildRequires: libselinux-devel >= 1.22
BuildRequires: libcap-devel BuildRequires: libcap-devel
%endif %endif
BuildRequires: kernelsanitisedheaders BuildRequires: kernelsanitisedheaders
Provides: glibc-multilib
Obsoletes: glibc-multilib
Requires: ldconfig = %{?epoch:%epoch:}%{version}-%{release} Requires: ldconfig = %{?epoch:%epoch:}%{version}-%{release}
Requires: locales = %{?epoch:%epoch:}%{version}-%{release} Requires: locales = %{?epoch:%epoch:}%{version}-%{release}
Requires: glibc-utils = %{?epoch:%epoch:}%{version}-%{release} Requires: glibc-utils = %{?epoch:%epoch:}%{version}-%{release}
%systemd_requires %systemd_requires
%ifarch x86_64
Provides: glibc-multilib
Obsoletes: glibc-multilib
Obsoletes: glibc.i586
%endif
Prefix: %{_prefix} Prefix: %{_prefix}
BuildRoot: %{_tmppath}/%{name}-%{version}-root BuildRoot: %{_tmppath}/%{name}-%{version}-root
@ -194,31 +166,17 @@ In order to save disk space and memory, as well as to make upgrading easier, com
This particular package contains the most important sets of shared libraries: the standard C library and the standard math library. Without these two libraries, a Linux system will not function. This particular package contains the most important sets of shared libraries: the standard C library and the standard math library. Without these two libraries, a Linux system will not function.
The glibc package also contains national language (locale) support. The glibc package also contains national language (locale) support.
%package devel
%if "%{multilib}"
%package multilib
Summary: The GNU libc libraries (multilib)
Group: System/Libraries
Requires(post):%{__install_info}
%description multilib
The glibc package contains standard libraries which are used by multiple programs on the system.
In order to save disk space and memory, as well as to make upgrading easier, common system code is kept in one place and shared between programs.
This particular package contains the most important sets of shared libraries: the standard C library and the standard math library. Without these two libraries, a Linux system will not function.
The glibc package also contains national language (locale) support.
%endif
%package %{?multilib:multilib-}devel
Summary: Header and object files for development using standard C libraries. Summary: Header and object files for development using standard C libraries.
Group: Development/Libraries Group: Development/Libraries
Requires: %{name}%{?multilib:-multilib} = %{?epoch:%epoch:}%{version}-%{release} Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
Prereq: %{__install_info} Prereq: %{__install_info}
%if "%{multilib}" == "1" %ifarch x86_64
# non-multilib glibc-devel required for /usr/include headers Provides: glibc-multilib-devel
Requires: glibc-devel Obsoletes: glibc-multilib-devel
%endif %endif
%description %{?multilib:multilib-}devel %description devel
The glibc-devel package contains the header and object files necessary for developing programs which use the standard C libraries (which are used by nearly all programs). The glibc-devel package contains the header and object files necessary for developing programs which use the standard C libraries (which are used by nearly all programs).
If you are developing programs which will use the standard C libraries, your system needs to have these standard header and object files available in order to create the executables. If you are developing programs which will use the standard C libraries, your system needs to have these standard header and object files available in order to create the executables.
@ -228,85 +186,81 @@ The header files are also needed for rebuilding the kernel.
Install glibc-devel if you are going to develop programs which will use the standard C libraries. Install glibc-devel if you are going to develop programs which will use the standard C libraries.
%if "%{build_profile}" == "1"
%package %{?multilib:multilib-}profile
Summary: The GNU libc libraries, including support for gprof profiling
Group: Development/Libraries
Requires: %{name}%{?multilib:-multilib} = %{?epoch:%epoch:}%{version}-%{release}
%description %{?multilib:multilib-}profile
The glibc package contains standard libraries which are used by multiple programs on the system.
In order to save disk space and memory, as well as to make upgrading easier, common system code is kept in one place and shared between programs.
This particular package contains the most important sets of shared libraries: the standard C library and the standard math library.
Without these two libraries, a Linux system will not function.
The glibc package also contains national language (locale) support.
If you are going to use the gprof program to profile a program, you'll need to install the glibc-profile program.
%endif
%if %{build_doc} %if %{build_doc}
%package %{?multilib:multilib-}apidocs %package apidocs
Summary: GNU libc libraries API documentation Summary: GNU libc libraries API documentation
Group: Documentation Group: Documentation
Requires: glibc-%{?multilib:multilib-}devel = %{?epoch:%epoch:}%{version}-%{release} Requires: glibc-devel = %{?epoch:%epoch:}%{version}-%{release}
%ifarch x86_64
Provides: glibc-multilib-apidocs
Obsoletes: glibc-multilib-apidocs
%endif
%description %{?multilib:multilib-}apidocs %description apidocs
GNU libc libraries API documentation. GNU libc libraries API documentation.
%endif %endif
%package %{?multilib:multilib-}i18ndata %package i18ndata
Summary: Database sources for 'locale' Summary: Database sources for 'locale'
Group: System/Libraries Group: System/Libraries
Requires(pre): %{name}%{?multilib:-multilib} = %{?epoch:%epoch:}%{version}-%{release} Requires(pre): %{name} = %{?epoch:%epoch:}%{version}-%{release}
%ifarch x86_64
Provides: glibc-multilib-i18ndata
Obsoletes: glibc-multilib-i18ndata
%endif
%description %{?multilib:multilib-}i18ndata %description i18ndata
This package contains the data needed to build the locale data files to use the internationalization features of the GNU libc. This package contains the data needed to build the locale data files to use the internationalization features of the GNU libc.
%package %{?multilib:multilib-}utils %package utils
Summary: Development utilities from GNU C library Summary: Development utilities from GNU C library
Group: Development/Tools Group: Development/Tools
Requires: %{name}%{?multilib:-multilib} = %{?epoch:%epoch:}%{version}-%{release} Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%ifarch x86_64
Provides: glibc-multilib-utils
Obsoletes: glibc-multilib-utils
%endif
%description %{?multilib:multilib-}utils %description utils
The glibc-utils package contains memusage, a memory usage profiler, mtrace, a memory leak tracer and, a function call tracer which can be helpful during program debugging. The glibc-utils package contains memusage, a memory usage profiler, mtrace, a memory leak tracer and, a function call tracer which can be helpful during program debugging.
%package -n ldconfig%{?multilib:-multilib} %package -n ldconfig
Summary: Configure dynamic linker run time bindings Summary: Configure dynamic linker run time bindings
Group: System/Tools Group: System/Tools
# The dynamic linker supports DT_GNU_HASH # The dynamic linker supports DT_GNU_HASH
Provides: rtld(GNU_HASH) Provides: rtld(GNU_HASH)
Provides: rtld(GNU_UNIQUE) Provides: rtld(GNU_UNIQUE)
%description -n ldconfig%{?multilib:-multilib} %description -n ldconfig
ldconfig creates the necessary links and cache to the most recent shared libraries found in the directories specified on the command line, in the file /etc/ld.so.conf, and in the trusted directories (/lib and /usr/lib). ldconfig creates the necessary links and cache to the most recent shared libraries found in the directories specified on the command line, in the file /etc/ld.so.conf, and in the trusted directories (/lib and /usr/lib).
The cache is used by the run-time linker, ld.so or ld-linux.so. The cache is used by the run-time linker, ld.so or ld-linux.so.
ldconfig checks the header and file names of the libraries it encounters when determining which versions should have their links updated. ldconfig checks the header and file names of the libraries it encounters when determining which versions should have their links updated.
%package -n timezone%{?multilib:-multilib} %package -n timezone
Summary: Time zone descriptions Summary: Time zone descriptions
Group: System/Internationalization Group: System/Internationalization
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
Requires(post):tzdata Requires(post):tzdata
%description -n timezone%{?multilib:-multilib} %description -n timezone
These are configuration files that describe possible time zones. These are configuration files that describe possible time zones.
%package -n locales%{?multilib:-multilib} %package -n locales
Summary: Base files for localization Summary: Base files for localization
Group: System/Internationalization Group: System/Internationalization
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description -n locales%{?multilib:-multilib} %description -n locales
These are the base files for language localization. These are the base files for language localization.
You also need to install the specific locales-?? for the language(s) you want. You also need to install the specific locales-?? for the language(s) you want.
Then the user need to set the LANG variable to their preferred language in their ~/.profile configuration file. Then the user need to set the LANG variable to their preferred language in their ~/.profile configuration file.
%package -n nscd%{?multilib:-multilib} %package -n nscd
Summary: Name service cache daemon Summary: Name service cache daemon
Group: System/Servers Group: System/Servers
Requires: logrotate >= 3.6.8 Requires: logrotate >= 3.6.8
%description -n nscd%{?multilib:-multilib} %description -n nscd
Nscd is a daemon that provides a cache for the most common name service requests. Nscd is a daemon that provides a cache for the most common name service requests.
%package -n cross-%{_target_platform}-%{name}%{?bootstrap_append}%{?bigendian_append}%{?softfloat_append} %package -n cross-%{_target_platform}-%{name}%{?bootstrap_append}%{?bigendian_append}%{?softfloat_append}
@ -327,10 +281,8 @@ Obsoletes: cross-%{_target_platform}-%{name}-stage1%{?bigendian_append}%{?softfl
Cross Platform glibc for %{_target_platform}. Cross Platform glibc for %{_target_platform}.
%if "%{_target_platform}" == "%{_host}" %if "%{_target_platform}" == "%{_host}"
%if "%{multilib}" != "1"
%debug_package %debug_package
%endif %endif
%endif
%prep %prep
%setup -q %setup -q
@ -341,14 +293,6 @@ Cross Platform glibc for %{_target_platform}.
%patch17 -p1 %patch17 -p1
#%patch18 -p1 #%patch18 -p1
#cd glibc-ports-%{version}
#%patch15 -p2
#cd ..
#%patch16 -p1
## FIX build with make 3.82 (see http://comments.gmane.org/gmane.linux.lfs.support/31227)
#sed -i 's/ot \$/ot:\n\ttouch $@\n$/' manual/Makefile
%if "%{?stage2}" %if "%{?stage2}"
# link glibc without libgcc_eh, not available in stage1 cross compiler # link glibc without libgcc_eh, not available in stage1 cross compiler
# this is the reason why also a glibc rebuild is needed later # this is the reason why also a glibc rebuild is needed later
@ -386,187 +330,159 @@ case %{target_cpu} in
i*86|athlon*) i*86|athlon*)
platform_includes=asm-x86 platform_includes=asm-x86
buildflags="-mtune=pentiumpro -g -O3" buildflags="-mtune=pentiumpro -g -O3"
%if "%{cross_target_cpu}" != "" CONFIG_OPTS="--enable-targets=i586-%{_target_vendor}-linux --enable-cet"
buildflags="-mtune=pentiumpro -g -O3 -Wno-error=maybe-uninitialized"
%endif
;; ;;
ppc|powerpc) ppc|powerpc)
platform_includes=asm-powerpc platform_includes=asm-powerpc
buildflags="-g -O3" buildflags="-g -O3"
CONFIG_OPTS="--enable-targets=powerpc64-%{_target_vendor}-linux"
;; ;;
arm) arm)
platform_includes=asm-arm platform_includes=asm-arm
#abi=%{_target_platform} buildflags="-g -O3"
#abi=`echo ${abi/*-}` %if "%{?softfloat}" == "1"
#if [ "$abi" = "gnueabihf" ]; then CONFIG_LIBDIR_ADD="/soft-float"
# buildflags="-g -O3 -fgnu89-inline -mfloat-abi=hard" CONFIG_ADD="--without-fp"
#else CC_ADD="-msoft-float"
buildflags="-g -O3" %endif
#fi %if "%{?bigendian}" == "1"
;; CONFIG_LIBDIR_ADD="/be${CONFIG_LIBDIR_ADD}"
CC_ADD="-mbig-endian"
AS_ADD="-mbig-endian"
%endif
CONFIG_OPTS=""
;;
x86_64) x86_64)
platform_includes=asm-x86_64 platform_includes=asm-x86_64
buildflags="-g -O3" buildflags="-g -O3"
;; CONFIG_OPTS="--enable-targets=x86_64-%{_target_vendor}-linux --enable-multi-arch --enable-static-pie --enable-cet"
;;
*) *)
echo "Target CPU %{target_cpu} not supported. Aborting." echo "Target CPU %{target_cpu} not supported. Aborting."
exit 1 exit 1
;; ;;
esac esac
# prepare kernel headers for platform
mkdir -p %{glibc_headers_dir}
# set kernel headers for platform
if [ -e /usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include/linux/version.h ]; then if [ -e /usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include/linux/version.h ]; then
cp -af /usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include/* %{glibc_headers_dir} headers_dir=/usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include
elif [ -e /usr/src/linux-%{KERNEL_TARGET}/usr/include/linux/version.h ]; then elif [ -e /usr/src/linux-%{KERNEL_TARGET}/usr/include/linux/version.h ]; then
cp -af /usr/src/linux-%{KERNEL_TARGET}/usr/include/* %{glibc_headers_dir} headers_dir=/usr/src/linux-%{KERNEL_TARGET}/usr/include
elif [ -e /usr/src/linux/usr/include/linux/version.h ]; then elif [ -e /usr/src/linux/usr/include/linux/version.h ]; then
cp -af /usr/src/linux/usr/include/* %{glibc_headers_dir} headers_dir=/usr/src/linux/usr/include
else else
echo "ERROR: can't find suitable kernel headers; aborting." echo "ERROR: can't find suitable kernel headers; aborting."
exit 1 exit 1
fi fi
function build_glibc() {
local builddir="$1"; shift
case %{target_cpu} in
i*86|athlon*)
%if "%{?bigendian}" == "1"
echo "Error: bigendian build is not supported on i*86 architecture"
exit 1
%endif
%if "%{?softfloat}" == "1"
echo "Error: softfloat build is not supported for i*86 architecture"
exit 1
%endif
CONFIG_OPTS="--enable-targets=x86_64-%{_target_vendor}-linux"
;;
ppc|powerpc)
%if "%{?bigendian}" == "1"
echo "Error: bigendian build is not supported on ppc architecture"
exit 1
%endif
%if "%{?softfloat}" == "1"
echo "Error: softfloat build is not supported on ppc architecture"
exit 1
%endif
CONFIG_OPTS="--enable-targets=powerpc64-%{_target_vendor}-linux"
;;
arm)
%if "%{?softfloat}" == "1"
CONFIG_LIBDIR_ADD="/soft-float"
CONFIG_ADD="--without-fp"
CC_ADD="-msoft-float"
%else
CONFIG_OPTS=""
%endif
%if "%{?bigendian}" == "1"
CONFIG_LIBDIR_ADD="/be${CONFIG_LIBDIR_ADD}"
CC_ADD="-mbig-endian"
AS_ADD="-mbig-endian"
%endif
# PRECONFIG_OPTS="CC=\"arm-%{_target_vendor}-linux-gnu-gcc $CC_ADD -finline-limit=10000\"
# AS=\"arm-%{_target_vendor}-linux-gnu-as $AS_ADD\"
# LD=\"arm-%{_target_vendor}-linux-gnu-ld -EB\""
# SLIBDIR=/usr/arm-%{_target_vendor}-linux-gnu/lib${CONFIG_LIBDIR_ADD}
# CONFIG_OPTS="$CONFIG_ADD --libdir=$SLIBDIR"
CONFIG_OPTS=""
;;
x86_64)
%if "%{?bigendian}" == "1"
echo "Error: bigendian build is not supported on i*86 architecture"
exit 1
%endif
%if "%{?softfloat}" == "1"
echo "Error: softfloat build is not supported for i*86 architecture"
exit 1
%endif
CONFIG_OPTS="--enable-targets=i586-%{_target_vendor}-linux"
;;
*)
echo "Target CPU %{target_cpu} not supported.Aborting."
exit 1
;;
esac
rm -rf ../$builddir
mkdir ../$builddir
( cd ../$builddir
# %if "%{?_target_platform}" != "%{_host}"
# echo "libc_cv_forced_unwind=yes" > config.cache
# echo "libc_cv_c_cleanup=yes" >> config.cache
# %endif
%if "%{?stage2}" == "1"
# there is no --disable-ssp option
echo "libc_cv_ssp=no" > config.cache
%endif
eval $PRECONFIG_OPTS ../%{name}-%{version}/configure \
--prefix=%{glibc_prefix} \
--infodir=%{_infodir} \
--libexecdir=%{glibc_libexecdir} \
--with-headers=%{glibc_headers_dir} $@\
--enable-kernel=%{enablekernel} \
--without-cvs \
--enable-bind-now \
--build=%{_build} \
%if "%{?stage1}" != "1"
--host=%{_target_platform} \
%endif
%if "%{?stage2}"
--cache-file=config.cache \
%endif
$CONFIG_OPTS \
PYTHON_PROG=%{__python36} \
CFLAGS=\"$buildflags\ -Wl,--build-id\"
# --with-binutils=%{_prefix}/bin \
# CC=%{buildcc} \
# CXX=%{buildcxx} \
# %if "%{_target_platform}" != "%{_host}"
# --cache-file=config.cache \
# %endif
%if "%{?stage1}" != "1"
make %{_smp_mflags} -r %PARALLELMFLAGS=-s slibdir=%{slibdir} \
%if "%{_target_platform}" != "%{_host}"
%if "%{?stage2}" != "1"
LDLIBS-resolv.so+="-lssp" LDFLAGS-nscd+="-lssp"
%endif
%endif
#CFLAGS="$buildflags"
%endif
)
}
%if "%{?stage2}" %if "%{?stage2}"
# hack, diable nptl for bootstrap gcc # hack, diable nptl for bootstrap gcc
opt_tls="--enable-add-ons --with-tls --disable-sanity-checks" opt_tls="--enable-add-ons --with-tls --disable-sanity-checks"
%else %else
opt_tls="--enable-add-ons --with-tls" opt_tls="--enable-add-ons --with-tls"
%endif %endif
%if %{build_selinux} %if %{build_selinux}
opt_selinux="--with-selinux" opt_selinux="--with-selinux"
%else %else
opt_selinux="--without-selinux" opt_selinux="--without-selinux"
%endif %endif
%if "%{build_profile}" == "1" %if "%{?stage2}" == "1"
build_glibc glibc-build-profile --enable-profile $opt_tls $opt_selinux # there is no --disable-ssp option
echo "libc_cv_ssp=no" > config.cache
%endif %endif
build_glibc glibc-build $opt_tls $opt_selinux _configure_flags=(
--build=%{_build} \
%if "%{?stage1}" != "1"
--host=%{_target_platform} \
%endif
%if "%{?stage2}"
--cache-file=config.cache \
%endif
--prefix=%{glibc_prefix} \
--infodir=%{_infodir} \
--libexecdir=%{glibc_libexecdir} \
--with-headers=${headers_dir} \
--with-bugurl=https://bugs.openmamba.org/ \
${opt_tls} ${opt_selinux} \
--enable-lock-elision \
%if "%{_target_platform}" == "%{_host}"
--enable-stack-protector=strong \
--enable-stackguard-randomization \
%endif
--enable-bind-now \
--disable-profile \
--disable-werror \
PYTHON_PROG=%{__python3} \
$CONFIG_OPTS
)
#:<< __EOF
# Build
rm -rf ../glibc-build
mkdir ../glibc-build
cd ../glibc-build
#CFLAGS="$buildflags -Wl,--build-id"
../%{name}-%{version}/configure \
${_configure_flags[@]}
%if "%{?stage1}" != "1"
make %{_smp_mflags} -r %PARALLELMFLAGS=-s slibdir=%{slibdir} \
%if "%{_target_platform}" != "%{_host}"
%if "%{?stage2}" != "1"
LDLIBS-resolv.so+="-lssp" LDFLAGS-nscd+="-lssp"
%else
CXX=
%endif
%endif
# build documentation (pdf and html formats) # build documentation (pdf and html formats)
%if %{build_doc} %if %{build_doc}
make pdf html -C ../glibc-build make pdf html
%endif %endif
%endif
#__EOF
%if "%{_target_platform}" == "%{_host}"
%ifarch x86_64
%if "%{?stage1}" != "1"
%if "%{?stage2}" != "1"
# Multilib
rm -rf ../glibc-multilib-build
mkdir ../glibc-multilib-build
cd ../glibc-multilib-build
export CC="gcc -m32 -mstackrealign"
export CXX="g++ -m32 -mstackrealign"
CFLAGS="-mtune=pentiumpro -g -O3 -Wl,--build-id"
../%{name}-%{version}/configure \
${_configure_flags[@]} \
--host=i586-openmamba-linux-gnu \
--libdir=/usr/lib32 \
--libexecdir=/usr/lib32 \
--without-selinux
# Disable building programs
echo "build-programs=no" >> configparms
echo "slibdir=/usr/lib32" >> configparms
echo "rtlddir=/usr/lib32" >> configparms
make %{_smp_mflags} -r %PARALLELMFLAGS=-s
%endif
%endif
%endif
%endif
#___EOF #___EOF
%install %install
@ -579,10 +495,19 @@ cat > %{buildroot}%{_sysconfdir}/ld.so.conf << _EOF
include %{_sysconfdir}/ld.so.conf.d/*.conf include %{_sysconfdir}/ld.so.conf.d/*.conf
_EOF _EOF
%if "%{build_profile}" == "1" %if "%{_target_platform}" == "%{_host}"
make install -C ../glibc-build-profile install_root=%{buildroot} # Multilib
%ifarch x86_64
make install -C ../glibc-multilib-build install_root=%{buildroot}
cat > %{buildroot}%{_sysconfdir}/ld.so.conf.d/lib32-glibc.conf << _EOF
/usr/lib32
_EOF
# Symlink /usr/lib32/locale to /usr/lib/locale
ln -s ../lib/locale %{buildroot}/usr/lib32/locale
%endif %endif
make install -C ../glibc-build install_root=%{buildroot} %endif
make install -C ../glibc-build install_root=%{buildroot}
# install openmamba default supported locales # install openmamba default supported locales
mv localedata/SUPPORTED localedata/SUPPORTED.orig mv localedata/SUPPORTED localedata/SUPPORTED.orig
@ -612,8 +537,18 @@ _EOF
rm -f %{buildroot}%{_sysconfdir}/localtime rm -f %{buildroot}%{_sysconfdir}/localtime
# install kernel headers # install kernel headers
install -d %{buildroot}%{glibc_includedir} if [ -e /usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include/linux/version.h ]; then
cp -avrf %{glibc_headers_dir}/* %{buildroot}%{glibc_includedir} headers_dir=/usr/src/linux-%{KERNEL_VERSION}%{KERNEL_TARGET}/usr/include
elif [ -e /usr/src/linux-%{KERNEL_TARGET}/usr/include/linux/version.h ]; then
headers_dir=/usr/src/linux-%{KERNEL_TARGET}/usr/include
elif [ -e /usr/src/linux/usr/include/linux/version.h ]; then
headers_dir=/usr/src/linux/usr/include
else
echo "ERROR: can't find suitable kernel headers; aborting."
exit 1
fi
cp -avrf ${headers_dir}/* %{buildroot}%{glibc_includedir}
%if "%{_target_platform}" == "%{_host}" %if "%{_target_platform}" == "%{_host}"
# install/create nscd service dirs and configuration files # install/create nscd service dirs and configuration files
@ -635,24 +570,6 @@ rm -f %{buildroot}%{_prefix}/%{_target_platform}/%{_sysconfdir}/ld.so.cache
#chmod -x %{buildroot}/%{glibc_libdir}/libthread_db-1.0.so #chmod -x %{buildroot}/%{glibc_libdir}/libthread_db-1.0.so
#%endif #%endif
%if "%{multilib}" == "1"
cp %{buildroot}%{glibc_includedir}/gnu/stubs-32.h %{buildroot}/
rm -rf %{buildroot}%{glibc_includedir}
install -d -m0755 %{buildroot}%{glibc_includedir}/gnu/
mv %{buildroot}/stubs-32.h %{buildroot}%{glibc_includedir}/gnu/stubs-32.h
# multilib: remove unuseful files depending on other 32bit libraries
rm -f %{buildroot}%{_bindir}/memusagestat
rm -f %{buildroot}%{_bindir}/makedb
rm -f %{buildroot}%{_sbindir}/nscd
%endif
# install rpc headers removed since glibc 2.14 but required by e.g. samba and libtirpc
#install -d -m0755 %{buildroot}%{glibc_includedir}/rpc
#cp -v ../glibc-%{version}/sunrpc/rpc/*.h %{buildroot}%{glibc_includedir}/rpc/
#install -d -m0755 %{buildroot}%{glibc_includedir}/rpcsvc
#cp -v ../glibc-%{version}/sunrpc/rpcsvc/*.h %{buildroot}%{glibc_includedir}/rpcsvc/
#cp -v ../glibc-%{version}/nis/rpcsvc/*.h %{buildroot}%{glibc_includedir}/rpcsvc/
rm -f %{buildroot}%{_libdir}/libnsl.* rm -f %{buildroot}%{_libdir}/libnsl.*
%if "%{_target_platform}" == "%{_host}" %if "%{_target_platform}" == "%{_host}"
@ -697,10 +614,10 @@ rm -rf %{buildroot}%{glibc_datadir}/zoneinfo
#fi #fi
#exit 0 #exit 0
%post %{?multilib:multilib} -p /sbin/ldconfig %post -p /sbin/ldconfig
%postun %{?multilib:multilib} -p /sbin/ldconfig %postun -p /sbin/ldconfig
%pre %{?multilib:multilib-}devel %pre devel
[ -L %{_includedir}/asm ] && rm -f %{_includedir}/asm [ -L %{_includedir}/asm ] && rm -f %{_includedir}/asm
# Remove old directory asm-<arch> # Remove old directory asm-<arch>
@ -726,15 +643,15 @@ fi
exit 0 exit 0
%post %{?multilib:multilib-}devel %post devel
%install_info libc.info %install_info libc.info
: :
%postun %{?multilib:multilib-}devel %postun devel
%uninstall_info libc.info %uninstall_info libc.info
: :
%posttrans %{?multilib:multilib-}i18ndata %posttrans i18ndata
# update locale-archive for current language settings # update locale-archive for current language settings
LOCALES=(`grep ${LANG:0:5} %{glibc_datadir}/i18n/locales/SUPPORTED | awk '{ print $1 }'`); LOCALES=(`grep ${LANG:0:5} %{glibc_datadir}/i18n/locales/SUPPORTED | awk '{ print $1 }'`);
for l in ${LOCALES[*]}; do for l in ${LOCALES[*]}; do
@ -745,7 +662,7 @@ for l in ${LOCALES[*]}; do
done done
: :
%pre -n nscd%{?multilib:-multilib} %pre -n nscd
if [ $1 -ge 1 ]; then if [ $1 -ge 1 ]; then
/usr/sbin/groupadd -g 65001 nscd &>/dev/null || true /usr/sbin/groupadd -g 65001 nscd &>/dev/null || true
/usr/sbin/useradd -u 65001 -g nscd -d /dev/null nscd -s /bin/false &>/dev/null || true /usr/sbin/useradd -u 65001 -g nscd -d /dev/null nscd -s /bin/false &>/dev/null || true
@ -753,23 +670,23 @@ fi
%systemd_pre nscd %systemd_pre nscd
: :
%post -n nscd%{?multilib:-multilib} %post -n nscd
%systemd_post nscd %systemd_post nscd
: :
%preun -n nscd%{?multilib:-multilib} %preun -n nscd
%systemd_preun nscd %systemd_preun nscd
if [ $1 -eq 0 ]; then if [ $1 -eq 0 ]; then
/usr/sbin/userdel nscd /usr/sbin/userdel nscd
fi fi
: :
%postun -n nscd%{?multilib:-multilib} %postun -n nscd
%systemd_postun_with_restart nscd %systemd_postun_with_restart nscd
: :
%if "%{_target_platform}" == "%{_host}" %if "%{_target_platform}" == "%{_host}"
%files %{?multilib:multilib} %files
%defattr(-,root,root) %defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/rpc %config(noreplace) %{_sysconfdir}/rpc
/%{slibdir}/* /%{slibdir}/*
@ -787,28 +704,24 @@ fi
%{glibc_libexecdir}/getconf/XBS5_ILP32_OFFBIG %{glibc_libexecdir}/getconf/XBS5_ILP32_OFFBIG
%endif %endif
%ifarch x86_64 %ifarch x86_64
%if "%{multilib}" != "1"
%{glibc_libexecdir}/getconf/POSIX_V6_LP64_OFF64 %{glibc_libexecdir}/getconf/POSIX_V6_LP64_OFF64
%{glibc_libexecdir}/getconf/POSIX_V7_LP64_OFF64 %{glibc_libexecdir}/getconf/POSIX_V7_LP64_OFF64
%{glibc_libexecdir}/getconf/XBS5_LP64_OFF64 %{glibc_libexecdir}/getconf/XBS5_LP64_OFF64
%else # Multilib
%{glibc_libexecdir}/getconf/POSIX_V6_ILP32_OFF32 %{_sysconfdir}/ld.so.conf.d/lib32-glibc.conf
%{glibc_libexecdir}/getconf/POSIX_V6_ILP32_OFFBIG* %{_prefix}/lib32/lib*-%{version}.so
%{glibc_libexecdir}/getconf/POSIX_V7_ILP32_OFF32 %{_prefix}/lib32/lib*.so.*
%{glibc_libexecdir}/getconf/POSIX_V7_ILP32_OFFBIG* %dir %{_prefix}/lib32/audit
%{glibc_libexecdir}/getconf/XBS5_ILP32_OFF32 %{_prefix}/lib32/audit/sotruss-lib.so
%{glibc_libexecdir}/getconf/XBS5_ILP32_OFFBIG* %{_prefix}/lib32/ld-%{version}.so
%endif %{_prefix}/lib32/ld-linux.so.*
%dir %{_prefix}/lib32/gconv
%{_prefix}/lib32/gconv/*
%{_prefix}/lib32/locale
%endif %endif
%doc COPYING* LICENSES %doc COPYING* LICENSES
%if "%{build_profile}" == "1" %files devel
%files %{?multilib:multilib-}profile
%defattr(-,root,root)
%{glibc_libdir}/lib*_p.a
%endif
%files %{?multilib:multilib-}devel
%defattr(-,root,root) %defattr(-,root,root)
%{glibc_includedir}/* %{glibc_includedir}/*
%{glibc_libdir}/*.o %{glibc_libdir}/*.o
@ -817,24 +730,32 @@ fi
%if "%{build_profile}" == "1" %if "%{build_profile}" == "1"
%exclude %{glibc_libdir}/lib*_p.a %exclude %{glibc_libdir}/lib*_p.a
%endif %endif
%ifarch x86_64
# Multilib
%{_prefix}/lib32/*.o
%{_prefix}/lib32/lib*.a
%{_prefix}/lib32/lib*.so
%exclude %{_prefix}/lib32/lib*-%{version}.so
%endif
%{_infodir}/* %{_infodir}/*
%{_localstatedir}/db/Makefile %{_localstatedir}/db/Makefile
%doc ChangeLog %doc ChangeLog
%doc NEWS README* %doc NEWS README*
%if %{build_doc} %if %{build_doc}
%files %{?multilib:multilib-}apidocs %files apidocs
%defattr(-,root,root) %defattr(-,root,root)
%dir %{_docdir}/libc/ %dir %{_docdir}/libc/
%{_docdir}/libc/* %{_docdir}/libc/*
%endif %endif
%files %{?multilib:multilib-}i18ndata %files i18ndata
%defattr(-,root,root) %defattr(-,root,root)
%dir %{glibc_datadir}/i18n %dir %{glibc_datadir}/i18n
%{glibc_datadir}/i18n/* %{glibc_datadir}/i18n/*
%files %{?multilib:multilib-}utils %files utils
%defattr(-,root,root) %defattr(-,root,root)
%{_sbindir}/iconvconfig %{_sbindir}/iconvconfig
%{_bindir}/catchsegv %{_bindir}/catchsegv
@ -859,20 +780,15 @@ fi
%{_bindir}/xtrace %{_bindir}/xtrace
%if "%{glibc_target_cpu}" == "%{_build_cpu}" %if "%{glibc_target_cpu}" == "%{_build_cpu}"
%{_bindir}/memusage %{_bindir}/memusage
%if "%{multilib}" == "1"
%{_bindir}/lddlibc4
%endif
%if "%{multilib}" != "1"
%{_bindir}/memusagestat %{_bindir}/memusagestat
%{_bindir}/makedb %{_bindir}/makedb
%endif %endif
%endif
%{glibc_libdir}/audit/sotruss-lib.so %{glibc_libdir}/audit/sotruss-lib.so
#%{glibc_libexecdir}/pt_chown #%{glibc_libexecdir}/pt_chown
%{slibdir}/libmemusage.so %{slibdir}/libmemusage.so
%{slibdir}/libpcprofile.so %{slibdir}/libpcprofile.so
%files -n ldconfig%{?multilib:-multilib} %files -n ldconfig
%defattr(-,root,root) %defattr(-,root,root)
/sbin/ldconfig /sbin/ldconfig
%config(noreplace) %{_sysconfdir}/ld.so.conf %config(noreplace) %{_sysconfdir}/ld.so.conf
@ -881,7 +797,7 @@ fi
#%config(noreplace) %{_sysconfdir}/ld.so.cache #%config(noreplace) %{_sysconfdir}/ld.so.cache
#%endif #%endif
%files -n locales%{?multilib:-multilib} -f libc.lang %files -n locales -f libc.lang
%defattr(-,root,root) %defattr(-,root,root)
%{glibc_datadir}/locale/locale.alias %{glibc_datadir}/locale/locale.alias
%ifnarch x86_64 %ifnarch x86_64
@ -891,17 +807,15 @@ fi
%{_prefix}/lib/locale/locale-archive %{_prefix}/lib/locale/locale-archive
%endif %endif
%files -n nscd%{?multilib:-multilib} %files -n nscd
%defattr(-,root,root) %defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/logrotate.d/nscd %config(noreplace) %{_sysconfdir}/logrotate.d/nscd
%config(noreplace) %{_sysconfdir}/nscd.conf %config(noreplace) %{_sysconfdir}/nscd.conf
%{_unitdir}/nscd.service %{_unitdir}/nscd.service
%if "%{multilib}" != "1"
%{_sbindir}/nscd %{_sbindir}/nscd
%endif
%attr(0755,nscd,nscd) /var/log/nscd %attr(0755,nscd,nscd) /var/log/nscd
%files -n timezone%{?multilib:-multilib} %files -n timezone
%defattr(-,root,root) %defattr(-,root,root)
%{_sbindir}/zdump %{_sbindir}/zdump
%{_sbindir}/zic %{_sbindir}/zic
@ -922,6 +836,17 @@ fi
%endif %endif
%changelog %changelog
* Thu Dec 05 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 2.30-5mamba
- x86: rebuilt with gcc with cet support to fix 'ld-linux.so.2: corrupt GNU_PROPERTY_TYPE (5) size: 0'
* Sat Nov 23 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 2.30-4mamba
- x86_64: build 32 bit multilib library in unique build
* Fri Nov 22 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 2.30-3mamba
- specfile simplification
- removed profile static target support
- added --enable-cet --enable-lock-elision --enable-stack-protector=strong --enable-stackguard-randomization
* Sat Oct 26 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 2.30-2mamba * Sat Oct 26 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 2.30-2mamba
- remove workaround to not strip libthread_db.so to fix provides (check later if debugging works) - remove workaround to not strip libthread_db.so to fix provides (check later if debugging works)