commit:     ee52140d054d1c8b65b864c1357075707891869a
Author:     Nexie Kind <nexion.hellborn <AT> gmail <DOT> com>
AuthorDate: Mon May  1 17:23:17 2017 +0000
Commit:     Mikhail Pukhlikov <cynede <AT> gentoo <DOT> org>
CommitDate: Mon May  1 17:23:17 2017 +0000
URL:        https://gitweb.gentoo.org/proj/dotnet.git/commit/?id=ee52140d

Compatibility with gcc6 / clang3.9

 dev-dotnet/dotnet-cli/dotnet-cli-1.1.1-r1.ebuild   |   4 +
 .../coreclr-1.0.6-clang39-commit-9db7fb1.patch     | 115 +++++++++++++++++++++
 .../files/coreclr-1.0.6-gcc6-clang39.patch         |  26 +++++
 .../coreclr-1.1.1-clang39-commit-9db7fb1.patch     | 115 +++++++++++++++++++++
 .../files/coreclr-1.1.1-exceptionhandling.patch    |  11 ++
 5 files changed, 271 insertions(+)

diff --git a/dev-dotnet/dotnet-cli/dotnet-cli-1.1.1-r1.ebuild 
b/dev-dotnet/dotnet-cli/dotnet-cli-1.1.1-r1.ebuild
index abcb719..b4bb750 100644
--- a/dev-dotnet/dotnet-cli/dotnet-cli-1.1.1-r1.ebuild
+++ b/dev-dotnet/dotnet-cli/dotnet-cli-1.1.1-r1.ebuild
@@ -46,7 +46,11 @@ DEPEND="${RDEPEND}
        >=sys-devel/gettext-0.19.7"
 
 PATCHES=(
+       "${FILESDIR}/coreclr-${CORECLR_V1_0}-gcc6-clang39.patch"
+       "${FILESDIR}/coreclr-${CORECLR_V1_0}-clang39-commit-9db7fb1.patch"
        "${FILESDIR}/coreclr-${CORECLR_V1_0}-icu57-commit-352df35.patch"
+       "${FILESDIR}/coreclr-${PV}-clang39-commit-9db7fb1.patch"
+       "${FILESDIR}/coreclr-${PV}-exceptionhandling.patch"
        "${FILESDIR}/corefx-${PV}-init-tools-script.patch"
        "${FILESDIR}/corefx-${PV}-run-script.patch"
 )

diff --git 
a/dev-dotnet/dotnet-cli/files/coreclr-1.0.6-clang39-commit-9db7fb1.patch 
b/dev-dotnet/dotnet-cli/files/coreclr-1.0.6-clang39-commit-9db7fb1.patch
new file mode 100644
index 0000000..5f243bb
--- /dev/null
+++ b/dev-dotnet/dotnet-cli/files/coreclr-1.0.6-clang39-commit-9db7fb1.patch
@@ -0,0 +1,115 @@
+diff --git a/coreclr-1.0.6/src/debug/daccess/dacdbiimpl.cpp 
b/coreclr-1.0.6/src/debug/daccess/dacdbiimpl.cpp
+index 26e3d6c..59f217c 100644
+--- a/coreclr-1.0.6/src/debug/daccess/dacdbiimpl.cpp
++++ b/coreclr-1.0.6/src/debug/daccess/dacdbiimpl.cpp
+@@ -90,7 +90,6 @@ IDacDbiInterface::IAllocator * g_pAllocator = NULL;
+ //
+ 
+ // Need a class to serve as a tag that we can use to overload New/Delete.
+-#define forDbi (*(forDbiWorker *)NULL)
+ 
+ void * operator new(size_t lenBytes, const forDbiWorker &)
+ {
+diff --git a/coreclr-1.0.6/src/debug/ee/debugger.h 
b/coreclr-1.0.6/src/debug/ee/debugger.h
+index 6368647..59d1e66 100644
+--- a/coreclr-1.0.6/src/debug/ee/debugger.h
++++ b/coreclr-1.0.6/src/debug/ee/debugger.h
+@@ -3512,10 +3512,10 @@ class DebuggerEval
+  * ------------------------------------------------------------------------ */
+ 
+ class InteropSafe {};
+-#define interopsafe (*(InteropSafe*)NULL)
++SELECTANY InteropSafe interopsafe;
+ 
+ class InteropSafeExecutable {};
+-#define interopsafeEXEC (*(InteropSafeExecutable*)NULL)
++SELECTANY InteropSafeExecutable interopsafeEXEC;
+ 
+ #ifndef DACCESS_COMPILE
+ inline void * __cdecl operator new(size_t n, const InteropSafe&)
+diff --git a/coreclr-1.0.6/src/debug/ildbsymlib/symwrite.h 
b/coreclr-1.0.6/src/debug/ildbsymlib/symwrite.h
+index 055b8ec..54ab11a 100644
+--- a/coreclr-1.0.6/src/debug/ildbsymlib/symwrite.h
++++ b/coreclr-1.0.6/src/debug/ildbsymlib/symwrite.h
+@@ -839,7 +839,8 @@ class ArrayStorage
+         {
+             // Help mitigate the impact of buffer overflow
+             // Fail fast with a null-reference AV
+-            return *(static_cast<T*>(0)) ;
++            volatile char* nullPointer = nullptr;
++            *nullPointer;
+         }
+         return m_array[ i ];
+     }
+diff --git a/coreclr-1.0.6/src/debug/inc/dacdbiinterface.h 
b/coreclr-1.0.6/src/debug/inc/dacdbiinterface.h
+index e61e240..24c3e24 100644
+--- a/coreclr-1.0.6/src/debug/inc/dacdbiinterface.h
++++ b/coreclr-1.0.6/src/debug/inc/dacdbiinterface.h
+@@ -32,7 +32,7 @@
+ template<class T> void DeleteDbiMemory(T *p);
+ // Need a class to serve as a tag that we can use to overload New/Delete.
+ class forDbiWorker {};
+-#define forDbi (*(forDbiWorker *)NULL)
++SELECTANY forDbiWorker forDbi;
+ extern void * operator new(size_t lenBytes, const forDbiWorker &);
+ extern void * operator new[](size_t lenBytes, const forDbiWorker &);
+ extern void operator delete(void *p, const forDbiWorker &);
+diff --git a/coreclr-1.0.6/src/pal/src/exception/seh.cpp 
b/coreclr-1.0.6/src/pal/src/exception/seh.cpp
+index 473c490..ad09e02 100644
+--- a/coreclr-1.0.6/src/pal/src/exception/seh.cpp
++++ b/coreclr-1.0.6/src/pal/src/exception/seh.cpp
+@@ -274,7 +274,7 @@ SEHProcessException(PAL_SEHException* exception)
+                     {
+                         // The exception happened in the page right below the 
stack limit,
+                         // so it is a stack overflow
+-                        write(STDERR_FILENO, StackOverflowMessage, 
sizeof(StackOverflowMessage) - 1);
++                        (void)write(STDERR_FILENO, StackOverflowMessage, 
sizeof(StackOverflowMessage) - 1);
+                         PROCAbort();
+                     }
+                 }
+diff --git a/coreclr-1.0.6/tests/src/Common/Platform/platformdefines.cpp 
b/coreclr-1.0.6/tests/src/Common/Platform/platformdefines.cpp
+index 4bef170..82061ac 100644
+--- a/coreclr-1.0.6/tests/src/Common/Platform/platformdefines.cpp
++++ b/coreclr-1.0.6/tests/src/Common/Platform/platformdefines.cpp
+@@ -277,7 +277,7 @@ DWORD TP_GetFullPathName(LPWSTR fileName, DWORD 
nBufferLength, LPWSTR lpBuffer)
+       return GetFullPathNameW(fileName, nBufferLength, lpBuffer, NULL);
+ #else
+       char nativeFullPath[MAX_PATH];
+-      realpath(HackyConvertToSTR(fileName), nativeFullPath);
++      (void)realpath(HackyConvertToSTR(fileName), nativeFullPath);
+       LPWSTR fullPathForCLR = HackyConvertToWSTR(nativeFullPath);
+       wcscpy_s(lpBuffer, MAX_PATH, fullPathForCLR);
+       return wcslen(lpBuffer);
+diff --git a/coreclr-1.0.6/tests/src/Common/Platform/platformdefines.h 
b/coreclr-1.0.6/tests/src/Common/Platform/platformdefines.h
+index 49e8f88..c196b0c 100644
+--- a/coreclr-1.0.6/tests/src/Common/Platform/platformdefines.h
++++ b/coreclr-1.0.6/tests/src/Common/Platform/platformdefines.h
+@@ -87,7 +87,7 @@ typedef void* HMODULE;
+ typedef void* ULONG_PTR;
+ typedef unsigned error_t;
+ typedef void* LPVOID;
+-typedef char BYTE;
++typedef unsigned char BYTE;
+ typedef WCHAR OLECHAR;
+ #endif
+ 
+diff --git a/coreclr-1.0.6/tests/src/Interop/common/types.h 
b/coreclr-1.0.6/tests/src/Interop/common/types.h
+index 7d7f776..cb59c42 100755
+--- a/coreclr-1.0.6/tests/src/Interop/common/types.h
++++ b/coreclr-1.0.6/tests/src/Interop/common/types.h
+@@ -28,7 +28,7 @@ typedef void* HMODULE;
+ typedef void* ULONG_PTR;
+ typedef unsigned error_t;
+ typedef void* LPVOID;
+-typedef char BYTE;
++typedef unsigned char BYTE;
+ typedef WCHAR OLECHAR;
+ 
+ typedef unsigned int UINT_PTR;
+@@ -54,4 +54,4 @@ typedef int*  DWORD_PTR;
+ #define FALSE 0
+ #endif
+ 
+-#endif //_INTEROP_TYPES__H
+\ No newline at end of file
++#endif //_INTEROP_TYPES__H

diff --git a/dev-dotnet/dotnet-cli/files/coreclr-1.0.6-gcc6-clang39.patch 
b/dev-dotnet/dotnet-cli/files/coreclr-1.0.6-gcc6-clang39.patch
new file mode 100644
index 0000000..d921dc3
--- /dev/null
+++ b/dev-dotnet/dotnet-cli/files/coreclr-1.0.6-gcc6-clang39.patch
@@ -0,0 +1,26 @@
+diff -rupN a/coreclr-1.0.6/src/pal/src/include/pal/palinternal.h 
b/coreclr-1.0.6/src/pal/src/include/pal/palinternal.h
+--- a/coreclr-1.0.6/src/pal/src/include/pal/palinternal.h      2017-04-27 
21:06:55.268009100 +0300
++++ b/coreclr-1.0.6/src/pal/src/include/pal/palinternal.h      2017-04-27 
21:08:23.705175087 +0300
+@@ -567,6 +567,8 @@ function_name() to call the system's imp
+ #endif
+ #include <ctype.h>
+ 
++#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS 1
++
+ #define _WITH_GETLINE
+ #include <stdio.h>
+ #include <stdlib.h>
+diff -rupN a/coreclr-1.0.6/src/pal/src/include/pal/sharedmemory.h 
b/coreclr-1.0.6/src/pal/src/include/pal/sharedmemory.h
+--- a/coreclr-1.0.6/src/pal/src/include/pal/sharedmemory.h     2017-04-27 
21:06:55.268009100 +0300
++++ b/coreclr-1.0.6/src/pal/src/include/pal/sharedmemory.h     2017-04-27 
21:07:44.351101225 +0300
+@@ -182,6 +182,10 @@ public:
+     virtual void Close(bool isAbruptShutdown, bool releaseSharedData)
+     {
+     }
++
++      virtual ~SharedMemoryProcessDataBase()
++      {
++      }
+ };
+ 
+ class SharedMemoryProcessDataHeader

diff --git 
a/dev-dotnet/dotnet-cli/files/coreclr-1.1.1-clang39-commit-9db7fb1.patch 
b/dev-dotnet/dotnet-cli/files/coreclr-1.1.1-clang39-commit-9db7fb1.patch
new file mode 100644
index 0000000..9c95b85
--- /dev/null
+++ b/dev-dotnet/dotnet-cli/files/coreclr-1.1.1-clang39-commit-9db7fb1.patch
@@ -0,0 +1,115 @@
+diff --git a/coreclr-1.1.1/src/debug/daccess/dacdbiimpl.cpp 
b/coreclr-1.1.1/src/debug/daccess/dacdbiimpl.cpp
+index 26e3d6c..59f217c 100644
+--- a/coreclr-1.1.1/src/debug/daccess/dacdbiimpl.cpp
++++ b/coreclr-1.1.1/src/debug/daccess/dacdbiimpl.cpp
+@@ -90,7 +90,6 @@ IDacDbiInterface::IAllocator * g_pAllocator = NULL;
+ //
+ 
+ // Need a class to serve as a tag that we can use to overload New/Delete.
+-#define forDbi (*(forDbiWorker *)NULL)
+ 
+ void * operator new(size_t lenBytes, const forDbiWorker &)
+ {
+diff --git a/coreclr-1.1.1/src/debug/ee/debugger.h 
b/coreclr-1.1.1/src/debug/ee/debugger.h
+index 6368647..59d1e66 100644
+--- a/coreclr-1.1.1/src/debug/ee/debugger.h
++++ b/coreclr-1.1.1/src/debug/ee/debugger.h
+@@ -3512,10 +3512,10 @@ class DebuggerEval
+  * ------------------------------------------------------------------------ */
+ 
+ class InteropSafe {};
+-#define interopsafe (*(InteropSafe*)NULL)
++SELECTANY InteropSafe interopsafe;
+ 
+ class InteropSafeExecutable {};
+-#define interopsafeEXEC (*(InteropSafeExecutable*)NULL)
++SELECTANY InteropSafeExecutable interopsafeEXEC;
+ 
+ #ifndef DACCESS_COMPILE
+ inline void * __cdecl operator new(size_t n, const InteropSafe&)
+diff --git a/coreclr-1.1.1/src/debug/ildbsymlib/symwrite.h 
b/coreclr-1.1.1/src/debug/ildbsymlib/symwrite.h
+index 055b8ec..54ab11a 100644
+--- a/coreclr-1.1.1/src/debug/ildbsymlib/symwrite.h
++++ b/coreclr-1.1.1/src/debug/ildbsymlib/symwrite.h
+@@ -839,7 +839,8 @@ class ArrayStorage
+         {
+             // Help mitigate the impact of buffer overflow
+             // Fail fast with a null-reference AV
+-            return *(static_cast<T*>(0)) ;
++            volatile char* nullPointer = nullptr;
++            *nullPointer;
+         }
+         return m_array[ i ];
+     }
+diff --git a/coreclr-1.1.1/src/debug/inc/dacdbiinterface.h 
b/coreclr-1.1.1/src/debug/inc/dacdbiinterface.h
+index e61e240..24c3e24 100644
+--- a/coreclr-1.1.1/src/debug/inc/dacdbiinterface.h
++++ b/coreclr-1.1.1/src/debug/inc/dacdbiinterface.h
+@@ -32,7 +32,7 @@
+ template<class T> void DeleteDbiMemory(T *p);
+ // Need a class to serve as a tag that we can use to overload New/Delete.
+ class forDbiWorker {};
+-#define forDbi (*(forDbiWorker *)NULL)
++SELECTANY forDbiWorker forDbi;
+ extern void * operator new(size_t lenBytes, const forDbiWorker &);
+ extern void * operator new[](size_t lenBytes, const forDbiWorker &);
+ extern void operator delete(void *p, const forDbiWorker &);
+diff --git a/coreclr-1.1.1/src/pal/src/exception/seh.cpp 
b/coreclr-1.1.1/src/pal/src/exception/seh.cpp
+index 473c490..ad09e02 100644
+--- a/coreclr-1.1.1/src/pal/src/exception/seh.cpp
++++ b/coreclr-1.1.1/src/pal/src/exception/seh.cpp
+@@ -274,7 +274,7 @@ SEHProcessException(PAL_SEHException* exception)
+                     {
+                         // The exception happened in the page right below the 
stack limit,
+                         // so it is a stack overflow
+-                        write(STDERR_FILENO, StackOverflowMessage, 
sizeof(StackOverflowMessage) - 1);
++                        (void)write(STDERR_FILENO, StackOverflowMessage, 
sizeof(StackOverflowMessage) - 1);
+                         PROCAbort();
+                     }
+                 }
+diff --git a/coreclr-1.1.1/tests/src/Common/Platform/platformdefines.cpp 
b/coreclr-1.1.1/tests/src/Common/Platform/platformdefines.cpp
+index 4bef170..82061ac 100644
+--- a/coreclr-1.1.1/tests/src/Common/Platform/platformdefines.cpp
++++ b/coreclr-1.1.1/tests/src/Common/Platform/platformdefines.cpp
+@@ -277,7 +277,7 @@ DWORD TP_GetFullPathName(LPWSTR fileName, DWORD 
nBufferLength, LPWSTR lpBuffer)
+       return GetFullPathNameW(fileName, nBufferLength, lpBuffer, NULL);
+ #else
+       char nativeFullPath[MAX_PATH];
+-      realpath(HackyConvertToSTR(fileName), nativeFullPath);
++      (void)realpath(HackyConvertToSTR(fileName), nativeFullPath);
+       LPWSTR fullPathForCLR = HackyConvertToWSTR(nativeFullPath);
+       wcscpy_s(lpBuffer, MAX_PATH, fullPathForCLR);
+       return wcslen(lpBuffer);
+diff --git a/coreclr-1.1.1/tests/src/Common/Platform/platformdefines.h 
b/coreclr-1.1.1/tests/src/Common/Platform/platformdefines.h
+index 49e8f88..c196b0c 100644
+--- a/coreclr-1.1.1/tests/src/Common/Platform/platformdefines.h
++++ b/coreclr-1.1.1/tests/src/Common/Platform/platformdefines.h
+@@ -87,7 +87,7 @@ typedef void* HMODULE;
+ typedef void* ULONG_PTR;
+ typedef unsigned error_t;
+ typedef void* LPVOID;
+-typedef char BYTE;
++typedef unsigned char BYTE;
+ typedef WCHAR OLECHAR;
+ #endif
+ 
+diff --git a/coreclr-1.1.1/tests/src/Interop/common/types.h 
b/coreclr-1.1.1/tests/src/Interop/common/types.h
+index 7d7f776..cb59c42 100755
+--- a/coreclr-1.1.1/tests/src/Interop/common/types.h
++++ b/coreclr-1.1.1/tests/src/Interop/common/types.h
+@@ -28,7 +28,7 @@ typedef void* HMODULE;
+ typedef void* ULONG_PTR;
+ typedef unsigned error_t;
+ typedef void* LPVOID;
+-typedef char BYTE;
++typedef unsigned char BYTE;
+ typedef WCHAR OLECHAR;
+ 
+ typedef unsigned int UINT_PTR;
+@@ -54,4 +54,4 @@ typedef int*  DWORD_PTR;
+ #define FALSE 0
+ #endif
+ 
+-#endif //_INTEROP_TYPES__H
+\ No newline at end of file
++#endif //_INTEROP_TYPES__H

diff --git a/dev-dotnet/dotnet-cli/files/coreclr-1.1.1-exceptionhandling.patch 
b/dev-dotnet/dotnet-cli/files/coreclr-1.1.1-exceptionhandling.patch
new file mode 100644
index 0000000..0fd56af
--- /dev/null
+++ b/dev-dotnet/dotnet-cli/files/coreclr-1.1.1-exceptionhandling.patch
@@ -0,0 +1,11 @@
+--- a/coreclr-1.1.1/src/vm/exceptionhandling.cpp.orig  2017-04-28 
01:48:48.153258383 +0300
++++ a/coreclr-1.1.1/src/vm/exceptionhandling.cpp       2017-04-28 
01:50:38.150431673 +0300
+@@ -4730,7 +4730,7 @@
+         }
+     }
+ 
+-    throw ex;
++    throw std::move(ex);
+ }
+ 
+ #ifdef _AMD64_

Reply via email to