mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-06-06 09:31:42 +00:00
Enable glibc to include support for kernel versions different than the version from the kernel headers.
Thanks to Nate CASE <ncase@xes-inc.com> for suggesting this use-case, and providing the patch. /trunk/scripts/build/libc_glibc.sh | 4 2 2 0 +- /trunk/scripts/build/libc_eglibc.sh | 2 1 1 0 +- /trunk/config/libc/glibc-eglibc-common.in | 44 44 0 0 +++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-)
This commit is contained in:
parent
477baecf46
commit
0a99eb0c77
@ -67,3 +67,47 @@ config LIBC_ADDONS_LIST
|
|||||||
earlier.
|
earlier.
|
||||||
|
|
||||||
Eg.: crypt (for very old libces)
|
Eg.: crypt (for very old libces)
|
||||||
|
|
||||||
|
config LIBC_GLIBC_USE_HEADERS_MIN_KERNEL
|
||||||
|
bool
|
||||||
|
prompt "Use headers version for minimum kernel version supported"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
If enabled, crosstool-ng will use the chosen version of kernel
|
||||||
|
headers for the glibc minimum kernel version supported, which is
|
||||||
|
what gets passed to "--enable-kernel=" when configuring glibc.
|
||||||
|
|
||||||
|
Enabling this will ensure that no legacy compatibility code for
|
||||||
|
older kernels is built into your C libraries, but it will
|
||||||
|
be unable to run on kernel versions older than whichever kernel
|
||||||
|
headers version you've built the toolchain for.
|
||||||
|
|
||||||
|
If you know for sure that your toolchain will never need to build
|
||||||
|
applications that will run under a kernel version older than your
|
||||||
|
chosen kernel headers version (CT_KERNEL_VERSION), you can choose
|
||||||
|
"y" here.
|
||||||
|
|
||||||
|
config LIBC_GLIBC_MIN_KERNEL_CHOSEN
|
||||||
|
string
|
||||||
|
prompt "Minimum kernel version supported"
|
||||||
|
default "2.6.9"
|
||||||
|
depends on ! LIBC_GLIBC_USE_HEADERS_MIN_KERNEL
|
||||||
|
help
|
||||||
|
Specify the earliest Linux kernel version you want glibc to
|
||||||
|
include support for. This does not have to match the kernel
|
||||||
|
headers version used for your toolchain. This controls what is
|
||||||
|
passed to the "--enable-kernel=" option to the glibc configure
|
||||||
|
script.
|
||||||
|
|
||||||
|
If you want to be able to statically link programs with your
|
||||||
|
toolchain's C library, make sure this kernel version is lower than
|
||||||
|
all kernels you wish to support to avoid "FATAL: kernel too old"
|
||||||
|
errors. The higher the version you specify, the less legacy code
|
||||||
|
will be built into libc.
|
||||||
|
|
||||||
|
Most people can leave this at the default value of "2.6.9".
|
||||||
|
|
||||||
|
config LIBC_GLIBC_MIN_KERNEL
|
||||||
|
string
|
||||||
|
default KERNEL_VERSION if LIBC_GLIBC_USE_HEADERS_MIN_KERNEL
|
||||||
|
default LIBC_GLIBC_MIN_KERNEL_CHOSEN if ! LIBC_GLIBC_USE_HEADERS_MIN_KERNEL
|
||||||
|
@ -198,7 +198,7 @@ do_libc() {
|
|||||||
# We don't need to be conditional on wether the user did set different
|
# We don't need to be conditional on wether the user did set different
|
||||||
# values, as they CT_LIBC_GLIBC_EXTRA_CONFIG is passed after extra_config
|
# values, as they CT_LIBC_GLIBC_EXTRA_CONFIG is passed after extra_config
|
||||||
|
|
||||||
extra_config="--enable-kernel=$(echo ${CT_KERNEL_VERSION} |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;')"
|
extra_config="--enable-kernel=$(echo ${CT_LIBC_GLIBC_MIN_KERNEL} |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;')"
|
||||||
|
|
||||||
case "${CT_THREADS}" in
|
case "${CT_THREADS}" in
|
||||||
nptl) extra_config="${extra_config} --with-__thread --with-tls";;
|
nptl) extra_config="${extra_config} --with-__thread --with-tls";;
|
||||||
|
@ -211,7 +211,7 @@ do_libc_start_files() {
|
|||||||
extra_config=""
|
extra_config=""
|
||||||
case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in
|
case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in
|
||||||
*enable-kernel*) ;;
|
*enable-kernel*) ;;
|
||||||
*) extra_config="${extra_config} --enable-kernel=$(echo ${CT_KERNEL_VERSION} |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;')"
|
*) extra_config="${extra_config} --enable-kernel=$(echo ${CT_LIBC_GLIBC_MIN_KERNEL} |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;')"
|
||||||
esac
|
esac
|
||||||
case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in
|
case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in
|
||||||
*-tls*) ;;
|
*-tls*) ;;
|
||||||
@ -314,7 +314,7 @@ do_libc() {
|
|||||||
# We don't need to be conditional on wether the user did set different
|
# We don't need to be conditional on wether the user did set different
|
||||||
# values, as they CT_LIBC_GLIBC_EXTRA_CONFIG is passed after extra_config
|
# values, as they CT_LIBC_GLIBC_EXTRA_CONFIG is passed after extra_config
|
||||||
|
|
||||||
extra_config="--enable-kernel=$(echo ${CT_KERNEL_VERSION} |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;')"
|
extra_config="--enable-kernel=$(echo ${CT_LIBC_GLIBC_MIN_KERNEL} |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;')"
|
||||||
|
|
||||||
case "${CT_THREADS}" in
|
case "${CT_THREADS}" in
|
||||||
nptl) extra_config="${extra_config} --with-__thread --with-tls";;
|
nptl) extra_config="${extra_config} --with-__thread --with-tls";;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user