mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-02 01:18:08 +01:00
Ever since an old patch version, it has (for reasonable security reasons) not supported patched with ../ in the filename. Many of our patches have been relying on this behaviour being OK, because we start off with an ancient patch version that didn't perform such checks. As soon as we need this behaviour after we build a newer patch though, we will have problems. So, let's change the policy. Patches are relative to where tarballs are extracted, rather than the "working directory" - e.g. have patches for `coreutils-9.4/src/cp.c` instead of `src/cp.c`. Keeping this consistent has a few implications; - patches are applied from the build/ directory in bash era now, with `-p0` - when patches are manually applied in the bash era, use `-p` as required, usually `-p1` - in kaem era where patches are always manually applied, `-p1` is used
281 lines
10 KiB
Diff
281 lines
10 KiB
Diff
SPDX-FileCopyrightText: 2022 Dor Askayo <dor.askayo@gmail.com>
|
|
SPDX-FileCopyrightText: 2015 Gregor Richards <gregor.richards@uwaterloo.ca>
|
|
SPDX-FileCopyrightText: 2015 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
|
|
|
SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
Backported from upstream commit 755658a56b57beca14b5fb70afdf1e588a058f7f
|
|
|
|
musl libc config
|
|
|
|
2015-05-08 Gregor Richards <gregor.richards@uwaterloo.ca>
|
|
Szabolcs Nagy <szabolcs.nagy@arm.com>
|
|
|
|
* config.gcc (LIBC_MUSL): New tm_defines macro.
|
|
* config/linux.h (OPTION_MUSL): Define.
|
|
(MUSL_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER32,)
|
|
(MUSL_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKERX32,)
|
|
(INCLUDE_DEFAULTS_MUSL_GPP, INCLUDE_DEFAULTS_MUSL_LOCAL,)
|
|
(INCLUDE_DEFAULTS_MUSL_PREFIX, INCLUDE_DEFAULTS_MUSL_CROSS,)
|
|
(INCLUDE_DEFAULTS_MUSL_TOOL, INCLUDE_DEFAULTS_MUSL_NATIVE): Define.
|
|
* config/linux.opt (mmusl): New option.
|
|
* doc/invoke.texi (GNU/Linux Options): Document -mmusl.
|
|
* configure.ac (gcc_cv_libc_provides_ssp): Add *-*-musl*.
|
|
(gcc_cv_target_dl_iterate_phdr): Add *-linux-musl*.
|
|
* configure: Regenerate.
|
|
|
|
Co-Authored-By: Szabolcs Nagy <szabolcs.nagy@arm.com>
|
|
|
|
From-SVN: r222904
|
|
|
|
--- gcc-4.7.4/gcc/config.gcc
|
|
+++ gcc-4.7.4/gcc/config.gcc
|
|
@@ -522,7 +522,7 @@ case ${target} in
|
|
esac
|
|
|
|
# Common C libraries.
|
|
-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
|
|
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
|
|
|
|
# Common parts for widely ported systems.
|
|
case ${target} in
|
|
@@ -625,6 +625,9 @@ case ${target} in
|
|
*-*-*uclibc*)
|
|
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
|
|
;;
|
|
+ *-*-*musl*)
|
|
+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
|
|
+ ;;
|
|
*)
|
|
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
|
|
;;
|
|
--- gcc-4.7.4/gcc/config/linux.h
|
|
+++ gcc-4.7.4/gcc/config/linux.h
|
|
@@ -33,10 +33,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
#define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
|
|
#define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
|
|
#define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
|
|
+#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
|
|
#else
|
|
#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
|
|
#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
|
|
#define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
|
|
+#define OPTION_MUSL (linux_libc == LIBC_MUSL)
|
|
#endif
|
|
|
|
#define GNU_USER_TARGET_OS_CPP_BUILTINS() \
|
|
@@ -51,21 +53,25 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
} while (0)
|
|
|
|
/* Determine which dynamic linker to use depending on whether GLIBC or
|
|
- uClibc or Bionic is the default C library and whether
|
|
- -muclibc or -mglibc or -mbionic has been passed to change the default. */
|
|
+ uClibc or Bionic or musl is the default C library and whether
|
|
+ -muclibc or -mglibc or -mbionic or -mmusl has been passed to change
|
|
+ the default. */
|
|
|
|
-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
|
|
- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
|
|
+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
|
|
+ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
|
|
|
|
#if DEFAULT_LIBC == LIBC_GLIBC
|
|
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
|
|
- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
|
|
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
|
+ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
|
|
#elif DEFAULT_LIBC == LIBC_UCLIBC
|
|
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
|
|
- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
|
|
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
|
+ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
|
|
#elif DEFAULT_LIBC == LIBC_BIONIC
|
|
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
|
|
- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
|
|
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
|
+ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
|
|
+#elif DEFAULT_LIBC == LIBC_MUSL
|
|
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
|
+ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
|
|
#else
|
|
#error "Unsupported DEFAULT_LIBC"
|
|
#endif /* DEFAULT_LIBC */
|
|
@@ -82,19 +88,24 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
#define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
|
|
#define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
|
|
#define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
|
|
+/* Should be redefined for each target that supports musl. */
|
|
+#define MUSL_DYNAMIC_LINKER "/dev/null"
|
|
+#define MUSL_DYNAMIC_LINKER32 "/dev/null"
|
|
+#define MUSL_DYNAMIC_LINKER64 "/dev/null"
|
|
+#define MUSL_DYNAMIC_LINKERX32 "/dev/null"
|
|
|
|
#define GNU_USER_DYNAMIC_LINKER \
|
|
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
|
|
- BIONIC_DYNAMIC_LINKER)
|
|
+ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
|
|
#define GNU_USER_DYNAMIC_LINKER32 \
|
|
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
|
|
- BIONIC_DYNAMIC_LINKER32)
|
|
+ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
|
|
#define GNU_USER_DYNAMIC_LINKER64 \
|
|
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
|
|
- BIONIC_DYNAMIC_LINKER64)
|
|
+ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
|
|
#define GNU_USER_DYNAMIC_LINKERX32 \
|
|
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
|
|
- BIONIC_DYNAMIC_LINKERX32)
|
|
+ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
|
|
|
|
/* Determine whether the entire c99 runtime
|
|
is present in the runtime library. */
|
|
@@ -108,3 +119,74 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
/* Whether we have Bionic libc runtime */
|
|
#undef TARGET_HAS_BIONIC
|
|
#define TARGET_HAS_BIONIC (OPTION_BIONIC)
|
|
+
|
|
+/* musl avoids problematic includes by rearranging the include directories.
|
|
+ * Unfortunately, this is mostly duplicated from cppdefault.c */
|
|
+#if DEFAULT_LIBC == LIBC_MUSL
|
|
+#define INCLUDE_DEFAULTS_MUSL_GPP \
|
|
+ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \
|
|
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \
|
|
+ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \
|
|
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \
|
|
+ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \
|
|
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
|
|
+
|
|
+#ifdef LOCAL_INCLUDE_DIR
|
|
+#define INCLUDE_DEFAULTS_MUSL_LOCAL \
|
|
+ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \
|
|
+ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
|
|
+#else
|
|
+#define INCLUDE_DEFAULTS_MUSL_LOCAL
|
|
+#endif
|
|
+
|
|
+#ifdef PREFIX_INCLUDE_DIR
|
|
+#define INCLUDE_DEFAULTS_MUSL_PREFIX \
|
|
+ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
|
|
+#else
|
|
+#define INCLUDE_DEFAULTS_MUSL_PREFIX
|
|
+#endif
|
|
+
|
|
+#ifdef CROSS_INCLUDE_DIR
|
|
+#define INCLUDE_DEFAULTS_MUSL_CROSS \
|
|
+ { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
|
|
+#else
|
|
+#define INCLUDE_DEFAULTS_MUSL_CROSS
|
|
+#endif
|
|
+
|
|
+#ifdef TOOL_INCLUDE_DIR
|
|
+#define INCLUDE_DEFAULTS_MUSL_TOOL \
|
|
+ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
|
|
+#else
|
|
+#define INCLUDE_DEFAULTS_MUSL_TOOL
|
|
+#endif
|
|
+
|
|
+#ifdef NATIVE_SYSTEM_HEADER_DIR
|
|
+#define INCLUDE_DEFAULTS_MUSL_NATIVE \
|
|
+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
|
|
+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
|
|
+#else
|
|
+#define INCLUDE_DEFAULTS_MUSL_NATIVE
|
|
+#endif
|
|
+
|
|
+#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
|
|
+# undef INCLUDE_DEFAULTS_MUSL_LOCAL
|
|
+# define INCLUDE_DEFAULTS_MUSL_LOCAL
|
|
+# undef INCLUDE_DEFAULTS_MUSL_NATIVE
|
|
+# define INCLUDE_DEFAULTS_MUSL_NATIVE
|
|
+#else
|
|
+# undef INCLUDE_DEFAULTS_MUSL_CROSS
|
|
+# define INCLUDE_DEFAULTS_MUSL_CROSS
|
|
+#endif
|
|
+
|
|
+#undef INCLUDE_DEFAULTS
|
|
+#define INCLUDE_DEFAULTS \
|
|
+ { \
|
|
+ INCLUDE_DEFAULTS_MUSL_GPP \
|
|
+ INCLUDE_DEFAULTS_MUSL_PREFIX \
|
|
+ INCLUDE_DEFAULTS_MUSL_CROSS \
|
|
+ INCLUDE_DEFAULTS_MUSL_TOOL \
|
|
+ INCLUDE_DEFAULTS_MUSL_NATIVE \
|
|
+ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
|
|
+ { 0, 0, 0, 0, 0, 0 } \
|
|
+ }
|
|
+#endif
|
|
--- gcc-4.7.4/gcc/config/linux.opt
|
|
+++ gcc-4.7.4/gcc/config/linux.opt
|
|
@@ -28,5 +28,9 @@ Target Report RejectNegative Var(linux_libc,LIBC_GLIBC) Negative(muclibc)
|
|
Use GNU C library
|
|
|
|
muclibc
|
|
-Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
|
|
+Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mmusl)
|
|
Use uClibc C library
|
|
+
|
|
+mmusl
|
|
+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mbionic)
|
|
+Use musl C library
|
|
--- gcc-4.7.4/gcc/configure.ac
|
|
+++ gcc-4.7.4/gcc/configure.ac
|
|
@@ -4669,6 +4669,9 @@ AC_CACHE_CHECK(__stack_chk_fail in target C library,
|
|
gcc_cv_libc_provides_ssp,
|
|
[gcc_cv_libc_provides_ssp=no
|
|
case "$target" in
|
|
+ *-*-musl*)
|
|
+ # All versions of musl provide stack protector
|
|
+ gcc_cv_libc_provides_ssp=yes;;
|
|
*-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
|
|
[# glibc 2.4 and later provides __stack_chk_fail and
|
|
# either __stack_chk_guard, or TLS access to stack guard canary.
|
|
@@ -4702,6 +4705,7 @@ AC_CACHE_CHECK(__stack_chk_fail in target C library,
|
|
# <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
|
|
# simply assert that glibc does provide this, which is true for all
|
|
# realistically usable GNU/Hurd configurations.
|
|
+ # All supported versions of musl provide it as well
|
|
gcc_cv_libc_provides_ssp=yes;;
|
|
*-*-darwin* | *-*-freebsd*)
|
|
AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
|
|
@@ -4767,6 +4771,9 @@ case "$target" in
|
|
gcc_cv_target_dl_iterate_phdr=no
|
|
fi
|
|
;;
|
|
+ *-linux-musl*)
|
|
+ gcc_cv_target_dl_iterate_phdr=yes
|
|
+ ;;
|
|
esac
|
|
GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
|
|
if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
|
|
--- gcc-4.7.4/gcc/doc/invoke.texi
|
|
+++ gcc-4.7.4/gcc/doc/invoke.texi
|
|
@@ -595,7 +595,7 @@ Objective-C and Objective-C++ Dialects}.
|
|
-mcpu=@var{cpu}}
|
|
|
|
@emph{GNU/Linux Options}
|
|
-@gccoptlist{-mglibc -muclibc -mbionic -mandroid @gol
|
|
+@gccoptlist{-mglibc -muclibc -mmusl -mbionic -mandroid @gol
|
|
-tno-android-cc -tno-android-ld}
|
|
|
|
@emph{H8/300 Options}
|
|
@@ -12879,13 +12879,19 @@ These @samp{-m} options are defined for GNU/Linux targets:
|
|
@item -mglibc
|
|
@opindex mglibc
|
|
Use the GNU C library. This is the default except
|
|
-on @samp{*-*-linux-*uclibc*} and @samp{*-*-linux-*android*} targets.
|
|
+on @samp{*-*-linux-*uclibc*}, @samp{*-*-linux-*musl*} and
|
|
+@samp{*-*-linux-*android*} targets.
|
|
|
|
@item -muclibc
|
|
@opindex muclibc
|
|
Use uClibc C library. This is the default on
|
|
@samp{*-*-linux-*uclibc*} targets.
|
|
|
|
+@item -mmusl
|
|
+@opindex mmusl
|
|
+Use the musl C library. This is the default on
|
|
+@samp{*-*-linux-*musl*} targets.
|
|
+
|
|
@item -mbionic
|
|
@opindex mbionic
|
|
Use Bionic C library. This is the default on
|