summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2016-05-21 00:37:53 +0000
committerKhem Raj <raj.khem@gmail.com>2016-05-21 00:37:53 +0000
commitf5916043bd99cdfe5d435b9763e222faee99d064 (patch)
tree6a54f203425f1880d59f0ddbbe5fdd8fc895c503
parent058623aaf01284151501167548cfbd0f85fe02ae (diff)
downloadmeta-clang-f5916043bd99cdfe5d435b9763e222faee99d064.tar.gz
clang: Fix build with musl
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--recipes-devtools/clang/clang/0004-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch61
-rw-r--r--recipes-devtools/clang/clang/0004-llvm-remove-fopen64-fseeko64-ftello64-tmpfile64-on-m.patch126
-rw-r--r--recipes-devtools/clang/clang_git.bb4
3 files changed, 63 insertions, 128 deletions
diff --git a/recipes-devtools/clang/clang/0004-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch b/recipes-devtools/clang/clang/0004-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch
new file mode 100644
index 0000000..949a1ea
--- /dev/null
+++ b/recipes-devtools/clang/clang/0004-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch
@@ -0,0 +1,61 @@
1From b1b73874dc3b81e6dd5e05b9f00b2010c9ab18fb Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 21 May 2016 00:33:20 +0000
4Subject: [PATCH] llvm: TargetLibraryInfo: Undefine libc functions if they are
5 macros
6
7musl defines some functions as macros and not inline functions
8if this is the case then make sure to undefine them
9
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11---
12 include/llvm/Analysis/TargetLibraryInfo.def | 12 ++++++++++++
13 1 file changed, 12 insertions(+)
14
15diff --git a/include/llvm/Analysis/TargetLibraryInfo.def b/include/llvm/Analysis/TargetLibraryInfo.def
16index b2a593d..834f257 100644
17--- a/include/llvm/Analysis/TargetLibraryInfo.def
18+++ b/include/llvm/Analysis/TargetLibraryInfo.def
19@@ -531,6 +531,9 @@ TLI_DEFINE_STRING_INTERNAL("fmodl")
20 TLI_DEFINE_ENUM_INTERNAL(fopen)
21 TLI_DEFINE_STRING_INTERNAL("fopen")
22 /// FILE *fopen64(const char *filename, const char *opentype)
23+#ifdef fopen64
24+#undef fopen64
25+#endif
26 TLI_DEFINE_ENUM_INTERNAL(fopen64)
27 TLI_DEFINE_STRING_INTERNAL("fopen64")
28 /// int fprintf(FILE *stream, const char *format, ...);
29@@ -566,6 +569,9 @@ TLI_DEFINE_STRING_INTERNAL("fseek")
30 /// int fseeko(FILE *stream, off_t offset, int whence);
31 TLI_DEFINE_ENUM_INTERNAL(fseeko)
32 TLI_DEFINE_STRING_INTERNAL("fseeko")
33+#ifdef fseeko64
34+#undef fseeko64
35+#endif
36 /// int fseeko64(FILE *stream, off64_t offset, int whence)
37 TLI_DEFINE_ENUM_INTERNAL(fseeko64)
38 TLI_DEFINE_STRING_INTERNAL("fseeko64")
39@@ -591,6 +597,9 @@ TLI_DEFINE_STRING_INTERNAL("ftell")
40 TLI_DEFINE_ENUM_INTERNAL(ftello)
41 TLI_DEFINE_STRING_INTERNAL("ftello")
42 /// off64_t ftello64(FILE *stream)
43+#ifdef ftello64
44+#undef ftello64
45+#endif
46 TLI_DEFINE_ENUM_INTERNAL(ftello64)
47 TLI_DEFINE_STRING_INTERNAL("ftello64")
48 /// int ftrylockfile(FILE *file);
49@@ -1056,6 +1065,9 @@ TLI_DEFINE_STRING_INTERNAL("times")
50 TLI_DEFINE_ENUM_INTERNAL(tmpfile)
51 TLI_DEFINE_STRING_INTERNAL("tmpfile")
52 /// FILE *tmpfile64(void)
53+#ifdef tmpfile64
54+#undef tmpfile64
55+#endif
56 TLI_DEFINE_ENUM_INTERNAL(tmpfile64)
57 TLI_DEFINE_STRING_INTERNAL("tmpfile64")
58 /// int toascii(int c);
59--
601.8.3.1
61
diff --git a/recipes-devtools/clang/clang/0004-llvm-remove-fopen64-fseeko64-ftello64-tmpfile64-on-m.patch b/recipes-devtools/clang/clang/0004-llvm-remove-fopen64-fseeko64-ftello64-tmpfile64-on-m.patch
deleted file mode 100644
index 7c78e21..0000000
--- a/recipes-devtools/clang/clang/0004-llvm-remove-fopen64-fseeko64-ftello64-tmpfile64-on-m.patch
+++ /dev/null
@@ -1,126 +0,0 @@
1From bc8a39484dc4db80baa846438a6908e2f9572572 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Thu, 19 May 2016 22:52:05 -0700
4Subject: [PATCH 4/4] llvm: remove fopen64/fseeko64/ftello64/tmpfile64 on musl
5
6They are not available
7
8Signed-off-by: Khem Raj <raj.khem@gmail.com>
9---
10 include/llvm/Analysis/TargetLibraryInfo.def | 12 ------------
11 lib/Analysis/TargetLibraryInfo.cpp | 13 -------------
12 lib/Transforms/Utils/BuildLibCalls.cpp | 17 -----------------
13 3 files changed, 42 deletions(-)
14
15diff --git a/include/llvm/Analysis/TargetLibraryInfo.def b/include/llvm/Analysis/TargetLibraryInfo.def
16index b2a593d..7bfafcc 100644
17--- a/include/llvm/Analysis/TargetLibraryInfo.def
18+++ b/include/llvm/Analysis/TargetLibraryInfo.def
19@@ -530,9 +530,6 @@ TLI_DEFINE_STRING_INTERNAL("fmodl")
20 /// FILE *fopen(const char *filename, const char *mode);
21 TLI_DEFINE_ENUM_INTERNAL(fopen)
22 TLI_DEFINE_STRING_INTERNAL("fopen")
23-/// FILE *fopen64(const char *filename, const char *opentype)
24-TLI_DEFINE_ENUM_INTERNAL(fopen64)
25-TLI_DEFINE_STRING_INTERNAL("fopen64")
26 /// int fprintf(FILE *stream, const char *format, ...);
27 TLI_DEFINE_ENUM_INTERNAL(fprintf)
28 TLI_DEFINE_STRING_INTERNAL("fprintf")
29@@ -566,9 +563,6 @@ TLI_DEFINE_STRING_INTERNAL("fseek")
30 /// int fseeko(FILE *stream, off_t offset, int whence);
31 TLI_DEFINE_ENUM_INTERNAL(fseeko)
32 TLI_DEFINE_STRING_INTERNAL("fseeko")
33-/// int fseeko64(FILE *stream, off64_t offset, int whence)
34-TLI_DEFINE_ENUM_INTERNAL(fseeko64)
35-TLI_DEFINE_STRING_INTERNAL("fseeko64")
36 /// int fsetpos(FILE *stream, const fpos_t *pos);
37 TLI_DEFINE_ENUM_INTERNAL(fsetpos)
38 TLI_DEFINE_STRING_INTERNAL("fsetpos")
39@@ -590,9 +584,6 @@ TLI_DEFINE_STRING_INTERNAL("ftell")
40 /// off_t ftello(FILE *stream);
41 TLI_DEFINE_ENUM_INTERNAL(ftello)
42 TLI_DEFINE_STRING_INTERNAL("ftello")
43-/// off64_t ftello64(FILE *stream)
44-TLI_DEFINE_ENUM_INTERNAL(ftello64)
45-TLI_DEFINE_STRING_INTERNAL("ftello64")
46 /// int ftrylockfile(FILE *file);
47 TLI_DEFINE_ENUM_INTERNAL(ftrylockfile)
48 TLI_DEFINE_STRING_INTERNAL("ftrylockfile")
49@@ -1055,9 +1046,6 @@ TLI_DEFINE_STRING_INTERNAL("times")
50 /// FILE *tmpfile(void);
51 TLI_DEFINE_ENUM_INTERNAL(tmpfile)
52 TLI_DEFINE_STRING_INTERNAL("tmpfile")
53-/// FILE *tmpfile64(void)
54-TLI_DEFINE_ENUM_INTERNAL(tmpfile64)
55-TLI_DEFINE_STRING_INTERNAL("tmpfile64")
56 /// int toascii(int c);
57 TLI_DEFINE_ENUM_INTERNAL(toascii)
58 TLI_DEFINE_STRING_INTERNAL("toascii")
59diff --git a/lib/Analysis/TargetLibraryInfo.cpp b/lib/Analysis/TargetLibraryInfo.cpp
60index 71f15b15..6d98f06 100644
61--- a/lib/Analysis/TargetLibraryInfo.cpp
62+++ b/lib/Analysis/TargetLibraryInfo.cpp
63@@ -375,16 +375,12 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T,
64 TLI.setUnavailable(LibFunc::under_IO_getc);
65 TLI.setUnavailable(LibFunc::under_IO_putc);
66 TLI.setUnavailable(LibFunc::memalign);
67- TLI.setUnavailable(LibFunc::fopen64);
68- TLI.setUnavailable(LibFunc::fseeko64);
69 TLI.setUnavailable(LibFunc::fstat64);
70 TLI.setUnavailable(LibFunc::fstatvfs64);
71- TLI.setUnavailable(LibFunc::ftello64);
72 TLI.setUnavailable(LibFunc::lstat64);
73 TLI.setUnavailable(LibFunc::open64);
74 TLI.setUnavailable(LibFunc::stat64);
75 TLI.setUnavailable(LibFunc::statvfs64);
76- TLI.setUnavailable(LibFunc::tmpfile64);
77 }
78
79 // As currently implemented in clang, NVPTX code has no standard library to
80@@ -861,15 +857,6 @@ bool TargetLibraryInfoImpl::isValidProtoForLibFunc(const FunctionType &FTy,
81 case LibFunc::dunder_isoc99_sscanf:
82 return (NumParams >= 1 && FTy.getParamType(0)->isPointerTy() &&
83 FTy.getParamType(1)->isPointerTy());
84- case LibFunc::fopen64:
85- return (NumParams == 2 && FTy.getReturnType()->isPointerTy() &&
86- FTy.getParamType(0)->isPointerTy() &&
87- FTy.getParamType(1)->isPointerTy());
88- case LibFunc::fseeko64:
89- case LibFunc::ftello64:
90- return (NumParams == 0 && FTy.getParamType(0)->isPointerTy());
91- case LibFunc::tmpfile64:
92- return (FTy.getReturnType()->isPointerTy());
93 case LibFunc::fstat64:
94 case LibFunc::fstatvfs64:
95 return (NumParams == 2 && FTy.getParamType(1)->isPointerTy());
96diff --git a/lib/Transforms/Utils/BuildLibCalls.cpp b/lib/Transforms/Utils/BuildLibCalls.cpp
97index f4260a9..a9e673f 100644
98--- a/lib/Transforms/Utils/BuildLibCalls.cpp
99+++ b/lib/Transforms/Utils/BuildLibCalls.cpp
100@@ -638,23 +638,6 @@ bool llvm::inferLibFuncAttributes(Function &F, const TargetLibraryInfo &TLI) {
101 Changed |= setOnlyReadsMemory(F, 1);
102 Changed |= setOnlyReadsMemory(F, 2);
103 return Changed;
104- case LibFunc::fopen64:
105- Changed |= setDoesNotThrow(F);
106- Changed |= setDoesNotAlias(F, 0);
107- Changed |= setDoesNotCapture(F, 1);
108- Changed |= setDoesNotCapture(F, 2);
109- Changed |= setOnlyReadsMemory(F, 1);
110- Changed |= setOnlyReadsMemory(F, 2);
111- return Changed;
112- case LibFunc::fseeko64:
113- case LibFunc::ftello64:
114- Changed |= setDoesNotThrow(F);
115- Changed |= setDoesNotCapture(F, 1);
116- return Changed;
117- case LibFunc::tmpfile64:
118- Changed |= setDoesNotThrow(F);
119- Changed |= setDoesNotAlias(F, 0);
120- return Changed;
121 case LibFunc::fstat64:
122 case LibFunc::fstatvfs64:
123 Changed |= setDoesNotThrow(F);
124--
1252.8.2
126
diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb
index b6804ac..5809478 100644
--- a/recipes-devtools/clang/clang_git.bb
+++ b/recipes-devtools/clang/clang_git.bb
@@ -18,7 +18,7 @@ SRC_URI = "${LLVM_GIT}/llvm.git;protocol=${LLVM_GIT_PROTOCOL};branch=${BRANCH};n
18 file://0001-llvm-triplet-Add-musl-support.patch \ 18 file://0001-llvm-triplet-Add-musl-support.patch \
19 file://0002-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch \ 19 file://0002-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch \
20 file://0003-llvm-Do-not-assume-linux-glibc.patch \ 20 file://0003-llvm-Do-not-assume-linux-glibc.patch \
21 file://0004-llvm-remove-fopen64-fseeko64-ftello64-tmpfile64-on-m.patch \ 21 file://0004-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch \
22 file://0001-clang-driver-Add-musl-ldso-support.patch;patchdir=tools/clang \ 22 file://0001-clang-driver-Add-musl-ldso-support.patch;patchdir=tools/clang \
23 file://0002-clang-driver-Use-lib-for-ldso-on-OE.patch;patchdir=tools/clang \ 23 file://0002-clang-driver-Use-lib-for-ldso-on-OE.patch;patchdir=tools/clang \
24 file://0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch;patchdir=tools/clang \ 24 file://0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch;patchdir=tools/clang \
@@ -86,7 +86,7 @@ EXTRA_OEMAKE += "REQUIRES_RTTI=1 VERBOSE=1"
86DEPENDS = "zlib libffi libxml2 binutils" 86DEPENDS = "zlib libffi libxml2 binutils"
87DEPENDS_remove_class-nativesdk = "nativesdk-binutils" 87DEPENDS_remove_class-nativesdk = "nativesdk-binutils"
88DEPENDS_append_class-nativesdk = " clang-native " 88DEPENDS_append_class-nativesdk = " clang-native "
89DEPENDS_append_class-target = " clang-native " 89DEPENDS_append_class-target = " clang-cross-${TARGET_ARCH} "
90 90
91do_configure_prepend() { 91do_configure_prepend() {
92 # Remove RPATHs 92 # Remove RPATHs