mirror of https://github.com/mono/CppSharp.git
2 changed files with 0 additions and 291 deletions
@ -1,36 +0,0 @@
@@ -1,36 +0,0 @@
|
||||
From 03423a19f71a0d7d30ca26b1d3b0bfbf7d58c6e1 Mon Sep 17 00:00:00 2001 |
||||
From: Dimitar Dobrev <dpldobrev@yahoo.com> |
||||
Date: Wed, 30 Jul 2014 21:22:39 +0300 |
||||
Subject: [PATCH] Fixed the getting of names and look-up entries of DLL |
||||
imports. |
||||
|
||||
Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com> |
||||
---
|
||||
lib/Object/COFFObjectFile.cpp | 4 ++-- |
||||
1 file changed, 2 insertions(+), 2 deletions(-) |
||||
|
||||
diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp
|
||||
index 46ef87d..9b5e954 100644
|
||||
--- a/lib/Object/COFFObjectFile.cpp
|
||||
+++ b/lib/Object/COFFObjectFile.cpp
|
||||
@@ -1022,7 +1022,7 @@ std::error_code ImportDirectoryEntryRef::getImportTableEntry(
|
||||
std::error_code ImportDirectoryEntryRef::getName(StringRef &Result) const { |
||||
uintptr_t IntPtr = 0; |
||||
if (std::error_code EC = |
||||
- OwningObject->getRvaPtr(ImportTable->NameRVA, IntPtr))
|
||||
+ OwningObject->getRvaPtr((ImportTable + Index)->NameRVA, IntPtr))
|
||||
return EC; |
||||
Result = StringRef(reinterpret_cast<const char *>(IntPtr)); |
||||
return object_error::success; |
||||
@@ -1032,7 +1032,7 @@ std::error_code ImportDirectoryEntryRef::getImportLookupEntry(
|
||||
const import_lookup_table_entry32 *&Result) const { |
||||
uintptr_t IntPtr = 0; |
||||
if (std::error_code EC = |
||||
- OwningObject->getRvaPtr(ImportTable->ImportLookupTableRVA, IntPtr))
|
||||
+ OwningObject->getRvaPtr((ImportTable + Index)->ImportLookupTableRVA, IntPtr))
|
||||
return EC; |
||||
Result = reinterpret_cast<const import_lookup_table_entry32 *>(IntPtr); |
||||
return object_error::success; |
||||
--
|
||||
1.9.0.msysgit.0 |
||||
|
@ -1,255 +0,0 @@
@@ -1,255 +0,0 @@
|
||||
Index: include/clang/Basic/TokenKinds.def
|
||||
===================================================================
|
||||
--- include/clang/Basic/TokenKinds.def (revision 195759)
|
||||
+++ include/clang/Basic/TokenKinds.def (working copy)
|
||||
@@ -369,10 +369,15 @@
|
||||
KEYWORD(__is_abstract , KEYCXX) |
||||
KEYWORD(__is_base_of , KEYCXX) |
||||
KEYWORD(__is_class , KEYCXX) |
||||
+KEYWORD(__is_constructible , KEYCXX)
|
||||
KEYWORD(__is_convertible_to , KEYCXX) |
||||
+KEYWORD(__is_destructible , KEYCXX)
|
||||
KEYWORD(__is_empty , KEYCXX) |
||||
KEYWORD(__is_enum , KEYCXX) |
||||
KEYWORD(__is_final , KEYCXX) |
||||
+KEYWORD(__is_nothrow_assignable , KEYCXX)
|
||||
+KEYWORD(__is_nothrow_constructible , KEYCXX)
|
||||
+KEYWORD(__is_nothrow_destructible , KEYCXX)
|
||||
// Tentative name - there's no implementation of std::is_literal_type yet. |
||||
KEYWORD(__is_literal , KEYCXX) |
||||
// Name for GCC 4.6 compatibility - people have already written libraries using |
||||
Index: include/clang/Basic/TypeTraits.h
|
||||
===================================================================
|
||||
--- include/clang/Basic/TypeTraits.h (revision 195759)
|
||||
+++ include/clang/Basic/TypeTraits.h (working copy)
|
||||
@@ -37,6 +37,7 @@
|
||||
UTT_IsCompleteType, |
||||
UTT_IsCompound, |
||||
UTT_IsConst, |
||||
+ UTT_IsDestructible,
|
||||
UTT_IsEmpty, |
||||
UTT_IsEnum, |
||||
UTT_IsFinal, |
||||
@@ -50,6 +51,7 @@
|
||||
UTT_IsMemberFunctionPointer, |
||||
UTT_IsMemberObjectPointer, |
||||
UTT_IsMemberPointer, |
||||
+ UTT_IsNothrowDestructible,
|
||||
UTT_IsObject, |
||||
UTT_IsPOD, |
||||
UTT_IsPointer, |
||||
@@ -73,6 +75,7 @@
|
||||
BTT_IsBaseOf, |
||||
BTT_IsConvertible, |
||||
BTT_IsConvertibleTo, |
||||
+ BTT_IsNothrowAssignable,
|
||||
BTT_IsSame, |
||||
BTT_TypeCompatible, |
||||
BTT_IsTriviallyAssignable |
||||
@@ -93,6 +96,8 @@
|
||||
|
||||
/// \brief Names for type traits that operate specifically on types. |
||||
enum TypeTrait { |
||||
+ TT_IsConstructible,
|
||||
+ TT_IsNothrowConstructible,
|
||||
TT_IsTriviallyConstructible |
||||
}; |
||||
|
||||
Index: lib/AST/StmtPrinter.cpp
|
||||
===================================================================
|
||||
--- lib/AST/StmtPrinter.cpp (revision 195759)
|
||||
+++ lib/AST/StmtPrinter.cpp (working copy)
|
||||
@@ -1695,6 +1695,7 @@
|
||||
case UTT_IsCompleteType: return "__is_complete_type"; |
||||
case UTT_IsCompound: return "__is_compound"; |
||||
case UTT_IsConst: return "__is_const"; |
||||
+ case UTT_IsDestructible: return "__is_destructible";
|
||||
case UTT_IsEmpty: return "__is_empty"; |
||||
case UTT_IsEnum: return "__is_enum"; |
||||
case UTT_IsFinal: return "__is_final"; |
||||
@@ -1708,6 +1709,7 @@
|
||||
case UTT_IsMemberFunctionPointer: return "__is_member_function_pointer"; |
||||
case UTT_IsMemberObjectPointer: return "__is_member_object_pointer"; |
||||
case UTT_IsMemberPointer: return "__is_member_pointer"; |
||||
+ case UTT_IsNothrowDestructible: return "__is_nothrow_destructible";
|
||||
case UTT_IsObject: return "__is_object"; |
||||
case UTT_IsPOD: return "__is_pod"; |
||||
case UTT_IsPointer: return "__is_pointer"; |
||||
@@ -1735,6 +1737,7 @@
|
||||
case BTT_IsSame: return "__is_same"; |
||||
case BTT_TypeCompatible: return "__builtin_types_compatible_p"; |
||||
case BTT_IsConvertibleTo: return "__is_convertible_to"; |
||||
+ case BTT_IsNothrowAssignable: return "__is_nothrow_assignable";
|
||||
case BTT_IsTriviallyAssignable: return "__is_trivially_assignable"; |
||||
} |
||||
llvm_unreachable("Binary type trait not covered by switch"); |
||||
@@ -1742,6 +1745,8 @@
|
||||
|
||||
static const char *getTypeTraitName(TypeTrait TT) { |
||||
switch (TT) { |
||||
+ case clang::TT_IsConstructible: return "__is_constructible";
|
||||
+ case clang::TT_IsNothrowConstructible: return "__is_nothrow_constructible";
|
||||
case clang::TT_IsTriviallyConstructible:return "__is_trivially_constructible"; |
||||
} |
||||
llvm_unreachable("Type trait not covered by switch"); |
||||
Index: lib/Parse/ParseExpr.cpp
|
||||
===================================================================
|
||||
--- lib/Parse/ParseExpr.cpp (revision 195759)
|
||||
+++ lib/Parse/ParseExpr.cpp (working copy)
|
||||
@@ -1205,6 +1205,8 @@
|
||||
case tok::kw___is_union: |
||||
case tok::kw___is_final: |
||||
case tok::kw___is_sealed: |
||||
+ case tok::kw___is_destructible:
|
||||
+ case tok::kw___is_nothrow_destructible:
|
||||
case tok::kw___has_trivial_constructor: |
||||
case tok::kw___has_trivial_move_constructor: |
||||
case tok::kw___has_trivial_copy: |
||||
@@ -1223,9 +1225,12 @@
|
||||
case tok::kw___is_same: |
||||
case tok::kw___is_convertible: |
||||
case tok::kw___is_convertible_to: |
||||
+ case tok::kw___is_nothrow_assignable:
|
||||
case tok::kw___is_trivially_assignable: |
||||
return ParseBinaryTypeTrait(); |
||||
|
||||
+ case tok::kw___is_constructible:
|
||||
+ case tok::kw___is_nothrow_constructible:
|
||||
case tok::kw___is_trivially_constructible: |
||||
return ParseTypeTrait(); |
||||
|
||||
Index: lib/Parse/ParseExprCXX.cpp
|
||||
===================================================================
|
||||
--- lib/Parse/ParseExprCXX.cpp (revision 195759)
|
||||
+++ lib/Parse/ParseExprCXX.cpp (working copy)
|
||||
@@ -2648,6 +2648,7 @@
|
||||
case tok::kw___is_complete_type: return UTT_IsCompleteType; |
||||
case tok::kw___is_compound: return UTT_IsCompound; |
||||
case tok::kw___is_const: return UTT_IsConst; |
||||
+ case tok::kw___is_destructible: return UTT_IsDestructible;
|
||||
case tok::kw___is_empty: return UTT_IsEmpty; |
||||
case tok::kw___is_enum: return UTT_IsEnum; |
||||
case tok::kw___is_final: return UTT_IsFinal; |
||||
@@ -2660,6 +2661,7 @@
|
||||
case tok::kw___is_member_function_pointer: return UTT_IsMemberFunctionPointer; |
||||
case tok::kw___is_member_object_pointer: return UTT_IsMemberObjectPointer; |
||||
case tok::kw___is_member_pointer: return UTT_IsMemberPointer; |
||||
+ case tok::kw___is_nothrow_destructible: return UTT_IsNothrowDestructible;
|
||||
case tok::kw___is_object: return UTT_IsObject; |
||||
case tok::kw___is_literal: return UTT_IsLiteral; |
||||
case tok::kw___is_literal_type: return UTT_IsLiteral; |
||||
@@ -2689,6 +2691,7 @@
|
||||
case tok::kw___is_same: return BTT_IsSame; |
||||
case tok::kw___builtin_types_compatible_p: return BTT_TypeCompatible; |
||||
case tok::kw___is_convertible_to: return BTT_IsConvertibleTo; |
||||
+ case tok::kw___is_nothrow_assignable: return BTT_IsNothrowAssignable;
|
||||
case tok::kw___is_trivially_assignable: return BTT_IsTriviallyAssignable; |
||||
} |
||||
} |
||||
@@ -2696,6 +2699,10 @@
|
||||
static TypeTrait TypeTraitFromTokKind(tok::TokenKind kind) { |
||||
switch (kind) { |
||||
default: llvm_unreachable("Not a known type trait"); |
||||
+ case tok::kw___is_constructible:
|
||||
+ return TT_IsConstructible;
|
||||
+ case tok::kw___is_nothrow_constructible:
|
||||
+ return TT_IsNothrowConstructible;
|
||||
case tok::kw___is_trivially_constructible: |
||||
return TT_IsTriviallyConstructible; |
||||
} |
||||
Index: lib/Sema/SemaExprCXX.cpp
|
||||
===================================================================
|
||||
--- lib/Sema/SemaExprCXX.cpp (revision 195759)
|
||||
+++ lib/Sema/SemaExprCXX.cpp (working copy)
|
||||
@@ -3088,6 +3088,12 @@
|
||||
// these class templates. We also try to follow any GCC documented behavior |
||||
// in these expressions to ensure portability of standard libraries. |
||||
switch (UTT) { |
||||
+ case UTT_IsDestructible:
|
||||
+ // TODO: stubbed
|
||||
+ return true;
|
||||
+ case UTT_IsNothrowDestructible:
|
||||
+ // TODO: stubbed
|
||||
+ return true;
|
||||
// is_complete_type somewhat obviously cannot require a complete type. |
||||
case UTT_IsCompleteType: |
||||
// Fall-through |
||||
@@ -3219,6 +3225,12 @@
|
||||
|
||||
ASTContext &C = Self.Context; |
||||
switch(UTT) { |
||||
+ case UTT_IsDestructible:
|
||||
+ // TODO: stubbed
|
||||
+ return false;
|
||||
+ case UTT_IsNothrowDestructible:
|
||||
+ // TODO: stubbed
|
||||
+ return false;
|
||||
// Type trait expressions corresponding to the primary type category |
||||
// predicates in C++0x [meta.unary.cat]. |
||||
case UTT_IsVoid: |
||||
@@ -3610,6 +3622,14 @@
|
||||
ArrayRef<TypeSourceInfo *> Args, |
||||
SourceLocation RParenLoc) { |
||||
switch (Kind) { |
||||
+ case clang::TT_IsConstructible: {
|
||||
+ // TODO: stubbed
|
||||
+ return false;
|
||||
+ }
|
||||
+ case clang::TT_IsNothrowConstructible: {
|
||||
+ // TODO: stubbed
|
||||
+ return false;
|
||||
+ }
|
||||
case clang::TT_IsTriviallyConstructible: { |
||||
// C++11 [meta.unary.prop]: |
||||
// is_trivially_constructible is defined as: |
||||
@@ -3834,6 +3854,10 @@
|
||||
ExprResult Result = Init.Perform(Self, To, Kind, FromPtr); |
||||
return !Result.isInvalid() && !SFINAE.hasErrorOccurred(); |
||||
} |
||||
+ case BTT_IsNothrowAssignable: {
|
||||
+ // TODO: stubbed
|
||||
+ return false;
|
||||
+ }
|
||||
|
||||
case BTT_IsTriviallyAssignable: { |
||||
// C++11 [meta.unary.prop]p3: |
||||
@@ -3920,6 +3944,8 @@
|
||||
case BTT_IsSame: ResultType = Context.BoolTy; break; |
||||
case BTT_TypeCompatible: ResultType = Context.IntTy; break; |
||||
case BTT_IsConvertibleTo: ResultType = Context.BoolTy; break; |
||||
+ // TODO: stubbed
|
||||
+ case BTT_IsNothrowAssignable: ResultType = Context.BoolTy; break;
|
||||
case BTT_IsTriviallyAssignable: ResultType = Context.BoolTy; |
||||
} |
||||
|
||||
Index: test/SemaCXX/type-traits.cpp
|
||||
===================================================================
|
||||
--- test/SemaCXX/type-traits.cpp (revision 195759)
|
||||
+++ test/SemaCXX/type-traits.cpp (working copy)
|
||||
@@ -1594,7 +1594,26 @@
|
||||
{ int arr[F(__has_virtual_destructor(AllPrivate))]; } |
||||
} |
||||
|
||||
+void is_constructible() {
|
||||
+ // TODO: stubbed
|
||||
+}
|
||||
|
||||
+void is_destructible() {
|
||||
+ // TODO: stubbed
|
||||
+}
|
||||
+
|
||||
+void is_nothrow_assignable() {
|
||||
+ // TODO: stubbed
|
||||
+}
|
||||
+
|
||||
+void is_nothrow_constructible() {
|
||||
+ // TODO: stubbed
|
||||
+}
|
||||
+
|
||||
+void is_nothrow_destructible() {
|
||||
+ // TODO: stubbed
|
||||
+}
|
||||
+
|
||||
class Base {}; |
||||
class Derived : Base {}; |
||||
class Derived2a : Derived {}; |
Loading…
Reference in new issue