| From: ktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4> |
| Date: Fri, 8 May 2015 08:30:40 +0000 (+0000) |
| Subject: [PATCH 0/13] Add musl support to GCC |
| X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=f2d678afa5b8385d763b93772d73d6bf80a9739e |
| |
| [PATCH 0/13] Add musl support to GCC |
| |
| 2015-05-08 Szabolcs Nagy <szabolcs.nagy@arm.com> |
| |
| * config/glibc-stdint.h (OPTION_MUSL): Define. |
| (INT_FAST16_TYPE, INT_FAST32_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE): |
| Change the definition based on OPTION_MUSL for 64 bit targets. |
| * config/linux.h (OPTION_MUSL): Redefine. |
| * config/alpha/linux.h (OPTION_MUSL): Redefine. |
| * config/rs6000/linux.h (OPTION_MUSL): Redefine. |
| * config/rs6000/linux64.h (OPTION_MUSL): Redefine. |
| |
| |
| git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222905 138bc75d-0d04-0410-961f-82ee72b054a4 |
| --- |
| |
| Index: b/gcc/config/alpha/linux.h |
| =================================================================== |
| --- a/gcc/config/alpha/linux.h |
| +++ b/gcc/config/alpha/linux.h |
| @@ -61,10 +61,14 @@ |
| #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) |
| #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) |
| #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC) |
| +#undef OPTION_MUSL |
| +#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) |
| +#undef OPTION_MUSL |
| +#define OPTION_MUSL (linux_libc == LIBC_MUSL) |
| #endif |
| |
| /* Determine what functions are present at the runtime; |
| Index: b/gcc/config/glibc-stdint.h |
| =================================================================== |
| --- a/gcc/config/glibc-stdint.h |
| +++ b/gcc/config/glibc-stdint.h |
| @@ -22,6 +22,12 @@ |
| see the files COPYING3 and COPYING.RUNTIME respectively. If not, see |
| <http://www.gnu.org/licenses/>. */ |
| |
| +/* Systems using musl libc should use this header and make sure |
| + OPTION_MUSL is defined correctly before using the TYPE macros. */ |
| +#ifndef OPTION_MUSL |
| +#define OPTION_MUSL 0 |
| +#endif |
| + |
| #define SIG_ATOMIC_TYPE "int" |
| |
| #define INT8_TYPE "signed char" |
| @@ -43,12 +49,12 @@ |
| #define UINT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int") |
| |
| #define INT_FAST8_TYPE "signed char" |
| -#define INT_FAST16_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int") |
| -#define INT_FAST32_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int") |
| +#define INT_FAST16_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long int" : "int") |
| +#define INT_FAST32_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long int" : "int") |
| #define INT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int") |
| #define UINT_FAST8_TYPE "unsigned char" |
| -#define UINT_FAST16_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int") |
| -#define UINT_FAST32_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int") |
| +#define UINT_FAST16_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long unsigned int" : "unsigned int") |
| +#define UINT_FAST32_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long unsigned int" : "unsigned int") |
| #define UINT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int") |
| |
| #define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int") |
| Index: b/gcc/config/linux.h |
| =================================================================== |
| --- a/gcc/config/linux.h |
| +++ b/gcc/config/linux.h |
| @@ -32,11 +32,13 @@ |
| #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) |
| #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) |
| #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC) |
| +#undef OPTION_MUSL |
| #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) |
| +#undef OPTION_MUSL |
| #define OPTION_MUSL (linux_libc == LIBC_MUSL) |
| #endif |
| |
| Index: b/gcc/config/rs6000/linux.h |
| =================================================================== |
| --- a/gcc/config/rs6000/linux.h |
| +++ b/gcc/config/rs6000/linux.h |
| @@ -30,10 +30,14 @@ |
| #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) |
| #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) |
| #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC) |
| +#undef OPTION_MUSL |
| +#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) |
| +#undef OPTION_MUSL |
| +#define OPTION_MUSL (linux_libc == LIBC_MUSL) |
| #endif |
| |
| /* Determine what functions are present at the runtime; |
| Index: b/gcc/config/rs6000/linux64.h |
| =================================================================== |
| --- a/gcc/config/rs6000/linux64.h |
| +++ b/gcc/config/rs6000/linux64.h |
| @@ -299,10 +299,14 @@ |
| #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) |
| #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) |
| #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC) |
| +#undef OPTION_MUSL |
| +#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) |
| +#undef OPTION_MUSL |
| +#define OPTION_MUSL (linux_libc == LIBC_MUSL) |
| #endif |
| |
| /* Determine what functions are present at the runtime; |