mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-01-26 23:23:33 +00:00
Bug 1210154 - Part 1: Add the patches needed for rust-bindgen to the clang build; r=rail
This commit is contained in:
parent
5e39e259c1
commit
e7d8787503
@ -13,8 +13,20 @@
|
||||
"cc": "/home/worker/workspace/build/src/gcc/bin/gcc",
|
||||
"cxx": "/home/worker/workspace/build/src/gcc/bin/g++",
|
||||
"patches": {
|
||||
"macosx64": ["llvm-debug-frame.patch"],
|
||||
"linux64": ["llvm-debug-frame.patch"],
|
||||
"linux32": ["llvm-debug-frame.patch"]
|
||||
"macosx64": [
|
||||
"llvm-debug-frame.patch",
|
||||
"query-selector-visibility.patch",
|
||||
"return-empty-string-non-mangled.patch"
|
||||
],
|
||||
"linux64": [
|
||||
"llvm-debug-frame.patch",
|
||||
"query-selector-visibility.patch",
|
||||
"return-empty-string-non-mangled.patch"
|
||||
],
|
||||
"linux32": [
|
||||
"llvm-debug-frame.patch",
|
||||
"query-selector-visibility.patch",
|
||||
"return-empty-string-non-mangled.patch"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -13,8 +13,20 @@
|
||||
"cc": "/home/worker/workspace/build/src/gcc/bin/gcc",
|
||||
"cxx": "/home/worker/workspace/build/src/gcc/bin/g++",
|
||||
"patches": {
|
||||
"macosx64": ["llvm-debug-frame.patch"],
|
||||
"linux64": ["llvm-debug-frame.patch"],
|
||||
"linux32": ["llvm-debug-frame.patch"]
|
||||
"macosx64": [
|
||||
"llvm-debug-frame.patch",
|
||||
"query-selector-visibility.patch",
|
||||
"return-empty-string-non-mangled.patch"
|
||||
],
|
||||
"linux64": [
|
||||
"llvm-debug-frame.patch",
|
||||
"query-selector-visibility.patch",
|
||||
"return-empty-string-non-mangled.patch"
|
||||
],
|
||||
"linux32": [
|
||||
"llvm-debug-frame.patch",
|
||||
"query-selector-visibility.patch",
|
||||
"return-empty-string-non-mangled.patch"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -12,8 +12,20 @@
|
||||
"cc": "/usr/bin/clang",
|
||||
"cxx": "/usr/bin/clang++",
|
||||
"patches": {
|
||||
"macosx64": ["llvm-debug-frame.patch"],
|
||||
"linux64": ["llvm-debug-frame.patch"],
|
||||
"linux32": ["llvm-debug-frame.patch"]
|
||||
"macosx64": [
|
||||
"llvm-debug-frame.patch",
|
||||
"query-selector-visibility.patch",
|
||||
"return-empty-string-non-mangled.patch"
|
||||
],
|
||||
"linux64": [
|
||||
"llvm-debug-frame.patch",
|
||||
"query-selector-visibility.patch",
|
||||
"return-empty-string-non-mangled.patch"
|
||||
],
|
||||
"linux32": [
|
||||
"llvm-debug-frame.patch",
|
||||
"query-selector-visibility.patch",
|
||||
"return-empty-string-non-mangled.patch"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
79
build/unix/build-clang/query-selector-visibility.patch
Normal file
79
build/unix/build-clang/query-selector-visibility.patch
Normal file
@ -0,0 +1,79 @@
|
||||
commit 865b9340996f9f9d04b73b187248737dc6fd845e
|
||||
Author: Michael Wu <mwu@mozilla.com>
|
||||
Date: Mon Sep 14 17:47:21 2015 -0400
|
||||
|
||||
Add support for querying the visibility of a cursor
|
||||
|
||||
diff --git a/llvm/tools/clang/include/clang-c/Index.h b/llvm/tools/clang/include/clang-c/Index.h
|
||||
index fad9cfa..311bfcb 100644
|
||||
--- a/llvm/tools/clang/include/clang-c/Index.h
|
||||
+++ b/llvm/tools/clang/include/clang-c/Index.h
|
||||
@@ -2440,6 +2440,24 @@ enum CXLinkageKind {
|
||||
CINDEX_LINKAGE enum CXLinkageKind clang_getCursorLinkage(CXCursor cursor);
|
||||
|
||||
/**
|
||||
+ * \brief Describe the visibility of the entity referred to by a cursor.
|
||||
+ */
|
||||
+enum CXVisibilityKind {
|
||||
+ /** \brief This value indicates that no visibility information is available
|
||||
+ * for a provided CXCursor. */
|
||||
+ CXVisibility_Invalid,
|
||||
+
|
||||
+ /** \brief Symbol not seen by the linker. */
|
||||
+ CXVisibility_Hidden,
|
||||
+ /** \brief Symbol seen by the linker but resolves to a symbol inside this object. */
|
||||
+ CXVisibility_Protected,
|
||||
+ /** \brief Symbol seen by the linker and acts like a normal symbol. */
|
||||
+ CXVisibility_Default,
|
||||
+};
|
||||
+
|
||||
+CINDEX_LINKAGE enum CXVisibilityKind clang_getCursorVisibility(CXCursor cursor);
|
||||
+
|
||||
+/**
|
||||
* \brief Determine the availability of the entity that this cursor refers to,
|
||||
* taking the current target platform into account.
|
||||
*
|
||||
diff --git a/llvm/tools/clang/tools/libclang/CIndex.cpp b/llvm/tools/clang/tools/libclang/CIndex.cpp
|
||||
index 8225a6c..9fa18d3 100644
|
||||
--- a/llvm/tools/clang/tools/libclang/CIndex.cpp
|
||||
+++ b/llvm/tools/clang/tools/libclang/CIndex.cpp
|
||||
@@ -6361,6 +6361,27 @@ CXLinkageKind clang_getCursorLinkage(CXCursor cursor) {
|
||||
} // end: extern "C"
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
+// Operations for querying visibility of a cursor.
|
||||
+//===----------------------------------------------------------------------===//
|
||||
+
|
||||
+extern "C" {
|
||||
+CXVisibilityKind clang_getCursorVisibility(CXCursor cursor) {
|
||||
+ if (!clang_isDeclaration(cursor.kind))
|
||||
+ return CXVisibility_Invalid;
|
||||
+
|
||||
+ const Decl *D = cxcursor::getCursorDecl(cursor);
|
||||
+ if (const NamedDecl *ND = dyn_cast_or_null<NamedDecl>(D))
|
||||
+ switch (ND->getVisibility()) {
|
||||
+ case HiddenVisibility: return CXVisibility_Hidden;
|
||||
+ case ProtectedVisibility: return CXVisibility_Protected;
|
||||
+ case DefaultVisibility: return CXVisibility_Default;
|
||||
+ };
|
||||
+
|
||||
+ return CXVisibility_Invalid;
|
||||
+}
|
||||
+} // end: extern "C"
|
||||
+
|
||||
+//===----------------------------------------------------------------------===//
|
||||
// Operations for querying language of a cursor.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
diff --git a/llvm/tools/clang/tools/libclang/libclang.exports b/llvm/tools/clang/tools/libclang/libclang.exports
|
||||
index f6a7175..a919a8e 100644
|
||||
--- a/llvm/tools/clang/tools/libclang/libclang.exports
|
||||
+++ b/llvm/tools/clang/tools/libclang/libclang.exports
|
||||
@@ -173,6 +173,7 @@ clang_getCursorSemanticParent
|
||||
clang_getCursorSpelling
|
||||
clang_getCursorType
|
||||
clang_getCursorUSR
|
||||
+clang_getCursorVisibility
|
||||
clang_getDeclObjCTypeEncoding
|
||||
clang_getDefinitionSpellingAndExtent
|
||||
clang_getDiagnostic
|
21
build/unix/build-clang/return-empty-string-non-mangled.patch
Normal file
21
build/unix/build-clang/return-empty-string-non-mangled.patch
Normal file
@ -0,0 +1,21 @@
|
||||
commit 009de5ea7a1913f0b4619cf514787bd52af38c28
|
||||
Author: Michael Wu <mwu@mozilla.com>
|
||||
Date: Thu Sep 24 11:36:08 2015 -0400
|
||||
|
||||
Return an empty string when a symbol isn't mangled
|
||||
|
||||
diff --git a/llvm/tools/clang/tools/libclang/CIndex.cpp b/llvm/tools/clang/tools/libclang/CIndex.cpp
|
||||
index 9fa18d3..1253832 100644
|
||||
--- a/llvm/tools/clang/tools/libclang/CIndex.cpp
|
||||
+++ b/llvm/tools/clang/tools/libclang/CIndex.cpp
|
||||
@@ -3891,6 +3891,10 @@ CXString clang_Cursor_getMangling(CXCursor C) {
|
||||
ASTContext &Ctx = ND->getASTContext();
|
||||
std::unique_ptr<MangleContext> MC(Ctx.createMangleContext());
|
||||
|
||||
+ // Don't mangle if we don't need to.
|
||||
+ if (!MC->shouldMangleCXXName(ND))
|
||||
+ return cxstring::createEmpty();
|
||||
+
|
||||
std::string FrontendBuf;
|
||||
llvm::raw_string_ostream FrontendBufOS(FrontendBuf);
|
||||
MC->mangleName(ND, FrontendBufOS);
|
Loading…
x
Reference in New Issue
Block a user