summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2008-08-26 21:37:46 (GMT)
committerYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2008-08-26 21:37:46 (GMT)
commit0a99eb0c77d25d34e97571a10352247b9d251653 (patch)
tree7e5c66cdcd6ce5e1a949e2d8c5b61b516b0f07bf
parent477baecf46f8025e303f97c6508608610961d5c6 (diff)
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(-)
-rw-r--r--config/libc/glibc-eglibc-common.in44
-rw-r--r--scripts/build/libc_eglibc.sh2
-rw-r--r--scripts/build/libc_glibc.sh4
3 files changed, 47 insertions, 3 deletions
diff --git a/config/libc/glibc-eglibc-common.in b/config/libc/glibc-eglibc-common.in
index cba9715..6037fad 100644
--- a/config/libc/glibc-eglibc-common.in
+++ b/config/libc/glibc-eglibc-common.in
@@ -67,3 +67,47 @@ config LIBC_ADDONS_LIST
earlier.
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
diff --git a/scripts/build/libc_eglibc.sh b/scripts/build/libc_eglibc.sh
index e713cb4..6b6e718 100644
--- a/scripts/build/libc_eglibc.sh
+++ b/scripts/build/libc_eglibc.sh
@@ -198,7 +198,7 @@ do_libc() {
# 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
- 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
nptl) extra_config="${extra_config} --with-__thread --with-tls";;
diff --git a/scripts/build/libc_glibc.sh b/scripts/build/libc_glibc.sh
index 63ff398..b864a5b 100644
--- a/scripts/build/libc_glibc.sh
+++ b/scripts/build/libc_glibc.sh
@@ -211,7 +211,7 @@ do_libc_start_files() {
extra_config=""
case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in
*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
case "${CT_LIBC_GLIBC_EXTRA_CONFIG}" in
*-tls*) ;;
@@ -314,7 +314,7 @@ do_libc() {
# 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
- 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
nptl) extra_config="${extra_config} --with-__thread --with-tls";;