Alexander Köplinger [Tue, 10 Feb 2015 18:54:29 +0000 (19:54 +0100)]
Correct casing of file paths in mscorlib
Some of the files had a different path/filename casing in the project reference than on disk.
Rich Lander [Tue, 10 Feb 2015 18:47:39 +0000 (10:47 -0800)]
Merge pull request #184 from richlander/master
Add BotR FAQ
Matt Mitchell [Tue, 10 Feb 2015 17:27:03 +0000 (17:27 +0000)]
Merge pull request #185 from mmitche/gitter-badger
Gitter badger
Matt Mitchell [Tue, 10 Feb 2015 17:26:17 +0000 (09:26 -0800)]
Make column bold
Matt Mitchell [Tue, 10 Feb 2015 17:23:58 +0000 (09:23 -0800)]
Add gitter badge
dotnet-bot [Tue, 10 Feb 2015 16:28:49 +0000 (08:28 -0800)]
Add BOTR FAQ
Wes Haggard [Tue, 10 Feb 2015 05:30:30 +0000 (21:30 -0800)]
Merge pull request #173 from AlexGhiondea/fixbuild
Provide defaults for the values that come from the build.cmd script.
Matt Mitchell [Mon, 9 Feb 2015 23:45:30 +0000 (23:45 +0000)]
Merge pull request #97 from mmitche/dev-package
Add development package to build
Rama krishnan Raghupathy [Mon, 9 Feb 2015 23:38:57 +0000 (15:38 -0800)]
Merge pull request #175 from nicodeslandes/fix_buildtest_error_message
Fixed error message when running tests\buildtest.cmd
Matt Mitchell [Wed, 4 Feb 2015 22:30:08 +0000 (14:30 -0800)]
Add new nuget package for development usage
Add new nuget package that can be developed against. Also modify the cmake lists of a few directories to add in missing PDBs.
alexghiondea [Mon, 9 Feb 2015 21:32:28 +0000 (13:32 -0800)]
Provide defaults for the values that come from the build.cmd script.
Sergiy Kuryata [Mon, 9 Feb 2015 18:56:09 +0000 (10:56 -0800)]
Merge pull request #160 from kangaroo/master
Set the mach exception default to MachException_SuppressDebugging
Nicolas Deslandes [Mon, 9 Feb 2015 18:37:25 +0000 (18:37 +0000)]
Removed an extra space in buildtest.cmd, causing it to display an error.
Jan Kotas [Mon, 9 Feb 2015 17:47:08 +0000 (09:47 -0800)]
Merge pull request #167 from dotnet-bot/from-tfs
Merge changes from TFS
Jan Kotas [Mon, 9 Feb 2015 17:21:18 +0000 (09:21 -0800)]
Fix build break with minimal Windows OS CRT
va_copy is not available in the minimal Windows OS CRT
[tfs-changeset: 1412529]
Jan Kotas [Mon, 9 Feb 2015 17:00:39 +0000 (09:00 -0800)]
Merge pull request #166 from richlander/master
Update mscorlib doc and add entry to readme
Richard Lander [Mon, 9 Feb 2015 16:23:41 +0000 (08:23 -0800)]
Update mscorlib doc and add entry to readme
Jan Kotas [Mon, 9 Feb 2015 15:04:56 +0000 (07:04 -0800)]
Merge pull request #163 from richlander/master
Add Mscorlib and Calling Into the Runtime document
Sergiy Kuryata [Mon, 9 Feb 2015 07:15:12 +0000 (23:15 -0800)]
Merge pull request #138 from kangaroo/va_list_safety
va_list safety
dotnet-bot [Mon, 9 Feb 2015 06:43:11 +0000 (22:43 -0800)]
Add Mscorlib and Calling Into the Runtime document
Matt Ellis [Mon, 9 Feb 2015 06:42:45 +0000 (22:42 -0800)]
Merge pull request #162 from dotnet-bot/from-tfs
Merge changes from TFS
Rahul Kumar [Mon, 9 Feb 2015 06:04:06 +0000 (22:04 -0800)]
precompile common headers to reduce build time for win builds. With this build time on my machine has reduced from 19mins to 10mins.
[tfs-changeset: 1412352]
Geoff Norton [Mon, 9 Feb 2015 04:36:28 +0000 (20:36 -0800)]
Set the mach exception default to MachException_SuppressDebugging for now, so that debugging with lldb isnt painful
Jan Kotas [Sun, 8 Feb 2015 19:06:12 +0000 (11:06 -0800)]
Merge pull request #155 from kangaroo/master
config.h.osx was debug generated, causing issues with release builds
Sergiy Kuryata [Sun, 8 Feb 2015 19:02:29 +0000 (11:02 -0800)]
Merge pull request #146 from poizan42/fix-writeable-strings
Fix writeable string warnings. Closes #139
Geoff Norton [Sun, 8 Feb 2015 18:12:12 +0000 (10:12 -0800)]
Minor code structure refactoring as requested by @jkotas in PR #138
Geoff Norton [Sun, 8 Feb 2015 18:04:55 +0000 (10:04 -0800)]
Merge remote-tracking branch 'origin/master' into va_list_safety
Geoff Norton [Sun, 8 Feb 2015 17:59:22 +0000 (09:59 -0800)]
Merge remote-tracking branch 'origin/master'
Geoff Norton [Sun, 8 Feb 2015 17:59:09 +0000 (09:59 -0800)]
Do not define _DEBUG on all builds.
Jan Kotas [Sun, 8 Feb 2015 14:29:44 +0000 (06:29 -0800)]
Merge pull request #69 from mathstuf/cmake-touchups
CMake touchups
Jan Kotas [Sun, 8 Feb 2015 06:19:15 +0000 (22:19 -0800)]
Merge pull request #149 from richlander/master
Update author format
Rich Lander [Sun, 8 Feb 2015 06:14:14 +0000 (22:14 -0800)]
Update author format
Kasper F. Brandt [Sun, 8 Feb 2015 02:39:59 +0000 (03:39 +0100)]
Fix writeable string warnings. Closes #139
Ben Boeckel [Wed, 4 Feb 2015 16:53:59 +0000 (11:53 -0500)]
Use list(APPEND) rather than set(var ${var} ...) in CMake
This avoids a variable expansion and avoids the chances of a typo being
introduced in variable names.
Ben Boeckel [Wed, 4 Feb 2015 16:41:05 +0000 (11:41 -0500)]
Simplify configuration-specific definitions in CMake
Factor out the configurations supported rather than duplicating the
logic three times.
Ben Boeckel [Wed, 4 Feb 2015 16:39:06 +0000 (11:39 -0500)]
Use foreach(IN LISTS) syntax in CMake code
It avoids extra separation on semicolons if there are any and skips a
variable expansion.
Ben Boeckel [Wed, 4 Feb 2015 16:34:34 +0000 (11:34 -0500)]
Remove excess arguments to endfunction() and else()
Arguments to else() are always confusing and endfunction only needs to
match the first argument.
Matt Ellis [Sun, 8 Feb 2015 01:35:26 +0000 (17:35 -0800)]
Merge pull request #142 from dotnet-bot/from-tfs
Merge changes from TFS
Matt Ellis [Sun, 8 Feb 2015 00:00:27 +0000 (16:00 -0800)]
Merge pull request #140 from dotnet-bot/from-tfs
Merge changes from TFS
Sergiy Kuryata [Sat, 7 Feb 2015 23:16:27 +0000 (15:16 -0800)]
Fix undefined symbols in release build of libcoreclr on Linux
When building a release version of libcoreclr.so on Linux the LLVM toolchain makes optimizations that result in undefined symbols in libcoreclr.so which causes dlopen(“libcoreclr.so”) to fail at runtime. There were three problematic functions:
1. CQuickMemoryBase<SIZE, INCREMENT>::ReSizeNoThrow(SIZE_T iItems)
2. FixupDispatcherContext(...)
3. CodeGen::inst_set_SV_var(GenTreePtr tree); - this function is marked as inline and has the entire body under “#ifdef DEBUG”.
To fix the problem with ReSizeNoThrow I added the “__attribute__((used))” attribute to the declaration of the function. This attribute is enabled for the llvm toolchain only. For the other two functions I have simply removed ‘inline’ since these functions are not performance critical.
[tfs-changeset: 1412107]
Matt Ellis [Sat, 7 Feb 2015 23:09:23 +0000 (15:09 -0800)]
Add missing .gitmirrorall file.
We mirror the newly created Documentation fully between TFS and Git.
[tfs-changeset: 1412105]
Geoff Norton [Sat, 7 Feb 2015 21:48:51 +0000 (13:48 -0800)]
va_copy exists on windows now as well as a define, so we can unify this code
Geoff Norton [Sat, 7 Feb 2015 20:09:33 +0000 (12:09 -0800)]
Ensure that every usage of va_start is complemented by a va_end
Geoff Norton [Sat, 7 Feb 2015 19:03:46 +0000 (11:03 -0800)]
va_arg can modify the va_list according to the specification
SString will attempt to use va_list multiple times in the scenario where the
target buffer is not large enough. On platforms like OSX, va_arg modifies
the va_list, making these re-attempts overread and fault. The solution is to
va_copy the va_list prior to use, to ensure the original is maintained for
future use.
Gaurav Khanna [Sat, 7 Feb 2015 17:15:45 +0000 (09:15 -0800)]
Merge pull request #108 from jkotas/master
Fix Windows x64 corerun.exe to run anycpu 32-bit preferred exe
Jan Kotas [Sat, 7 Feb 2015 17:15:06 +0000 (09:15 -0800)]
Merge pull request #130 from njy/patch-1
possible unresolved tension
Jan Kotas [Sat, 7 Feb 2015 16:58:04 +0000 (08:58 -0800)]
Merge pull request #119 from cwmiller/fix-linux-short-filenames
Fix std::out_of_range exception with short filenames (Linux)
njy [Sat, 7 Feb 2015 12:28:41 +0000 (13:28 +0100)]
possible unresolved tension
http://xkcd.com/859/
Jan Kotas [Sat, 7 Feb 2015 10:29:31 +0000 (02:29 -0800)]
Merge pull request #75 from PashaPash/resourceset_deadlock
Fixed deadlock in System.Resources.ResourceSet
Jan Kotas [Sat, 7 Feb 2015 10:14:47 +0000 (02:14 -0800)]
Merge pull request #125 from kangaroo/issue-120
-nostdinc++ is not recognized by apple clang, but its also not needed
Jan Kotas [Sat, 7 Feb 2015 10:03:18 +0000 (02:03 -0800)]
Merge pull request #126 from vkairys/documentation-links
Update intro-to-clr.md
vkairys [Sat, 7 Feb 2015 08:28:46 +0000 (10:28 +0200)]
Update intro-to-clr.md
Geoff Norton [Sat, 7 Feb 2015 06:41:41 +0000 (22:41 -0800)]
-nostdinc++ is not recognized by apple clang, but its also not needed
Jan Kotas [Sat, 7 Feb 2015 03:49:05 +0000 (19:49 -0800)]
Merge pull request #117 from kangaroo/osx
Initial Mac OSX Support
Geoff Norton [Sat, 7 Feb 2015 03:18:03 +0000 (19:18 -0800)]
Remove static casting in favor of a helper method so we retain type safety with the compiler
Chase Miller [Sat, 7 Feb 2015 03:04:39 +0000 (22:04 -0500)]
Fix std::out_of_range exception with short filenames (Linux)
An unsigned integer was being used while scanning the CLR path to locate assemblies. If a file existed in the directory with a name shorter than the longest extension being checked for (.ni.dll), then the variable would underflow and cause an exception when used as an index on the filename.
Geoff Norton [Sat, 7 Feb 2015 02:53:57 +0000 (18:53 -0800)]
Refactor to be explicit about the fact that there is no handler yet
Geoff Norton [Sat, 7 Feb 2015 02:51:55 +0000 (18:51 -0800)]
Remove PowerPC code, as its unused anymore
Geoff Norton [Sat, 7 Feb 2015 02:51:33 +0000 (18:51 -0800)]
Remove the old version of DBG_CheckStackAlignment and make sure the assembly version is guarded on _DEBUG like the original
Geoff Norton [Sat, 7 Feb 2015 02:48:29 +0000 (18:48 -0800)]
Remove dead NPROCS code now that we use getconf
Geoff Norton [Sat, 7 Feb 2015 02:40:15 +0000 (18:40 -0800)]
Remove cordbi from the OSX build, since its still missing some symbols
Geoff Norton [Sat, 7 Feb 2015 01:09:25 +0000 (17:09 -0800)]
Refactor the DBG_CheckStackAlignment support to be more consistent with the rest of the PAL
Geoff Norton [Sat, 7 Feb 2015 00:39:28 +0000 (16:39 -0800)]
Fixup a few changes missed when rebasing OSX support
Initially __LINUX__ was defined when building for OSX as well, bringing
in LONGDOUBLE_IS_DOUBLE 1, and some of the local SEH funcations.
Add a __APPLE__ guard around these as well, so they're properly included.
Geoff Norton [Wed, 4 Feb 2015 05:18:43 +0000 (21:18 -0800)]
Initial Mac OSX Support
Supports building up the VM, PAL and various components on Mac OSX 10.10
There are some oddities with the Apple assembler not generating short jumps
and not supporting 1 byte relocs.
Jan Kotas [Fri, 6 Feb 2015 23:14:47 +0000 (15:14 -0800)]
Merge pull request #100 from xyziemba/parallel_make
Use # of processors + 1 available to OS scheduler on Linux when building
Jan Vorlicek [Fri, 6 Feb 2015 22:57:10 +0000 (14:57 -0800)]
Fix PAL_Initialize error reporting
Ensure that when PAL_Initialize fails, the last error is always set. There were failure cases where it didn't set the last error.
Change assert for sizeof(CRITICAL_SECTION) < sizeof(PAL_CRITICAL_SECTION) in CriticalSectionSubSysInitialize to static assert and change the return type to void.
[tfs-changeset: 1411882]
Jan Kotas [Fri, 6 Feb 2015 22:42:56 +0000 (14:42 -0800)]
Merge pull request #115 from richlander/master
Initial commit of 'Introduction to the CLR'
Senthil [Fri, 6 Feb 2015 21:37:57 +0000 (13:37 -0800)]
Merge pull request #86 from maksqwe/assertion_search_fix
Fix non-null assertion search in assertion table
Vance Morrison [Fri, 6 Feb 2015 21:30:24 +0000 (13:30 -0800)]
Initial commit of 'Introduction to the CLR'
Pavel Pochobut [Wed, 4 Feb 2015 18:49:32 +0000 (21:49 +0300)]
Fixed deadlock in System.Resources.ResourceSet
ResourceSet internal enumerator uses the following lock order:
1. lock _resCache (as _reader._resCache)
in System.Resources.ResourceSet+ResourceEnumerator.Entry
2. lock reader (this)
in the body on of _reader.AllocateStringForNameIndex
RuntimeResourceSet.GetObject uses the following lock order:
1. Lock on reader
2. Lock on _resCache
(on the same instance as passed to the reader ctor)
That causes deadlock when one thread tries to enumerate the ResourceSet
while another thread reads a specific object from the same set.
Added lock in System.Resources.ResourceSet+ResourceEnumerator.Entry,
so both code paths locks on reader first.
Fix Connect Issue ID #580259
Jan Kotas [Fri, 6 Feb 2015 17:49:49 +0000 (09:49 -0800)]
Merge pull request #112 from kangaroo/drop-librt
Remote -lrt from the link as its not needed, and not cross platform
Geoff Norton [Wed, 4 Feb 2015 18:58:39 +0000 (10:58 -0800)]
lrt is not cross platform, lets put this back in when we verify this branch on linux
Jan Kotas [Fri, 6 Feb 2015 15:27:44 +0000 (07:27 -0800)]
Merge pull request #109 from dotnet-bot/from-tfs
Merge changes from TFS
Jan Vorlicek [Fri, 6 Feb 2015 14:48:20 +0000 (06:48 -0800)]
Fix missing CHAIN_SUCCESS_COUNTER symbol in libcoreclr.so
Certain versions of the clang toolchain build libcoreclr.so with this symbol undefined. This symbol is just an alias of g_dispatch_cache_chain_success_counter and the issue was probably caused by the fact that we pass the CHAIN_SUCCESS_COUNTER as a parameter to macro and that macro then appends the @GOTPCREL to the symbol. It seems that in the problematic case, the assembler appends the @GOTPCREL to the CHAIN_SUCCESS_COUNTER instead of the original g_dispatch_cache_chain_success_counter symbol.
Changing the
CHAIN_SUCCESS_COUNTER = g_dispatch_cache_chain_success_counter
to
#define CHAIN_SUCCESS_COUNTER g_dispatch_cache_chain_success_counter
fixes the issue.
[tfs-changeset: 1411600]
Jan Kotas [Fri, 6 Feb 2015 13:22:47 +0000 (05:22 -0800)]
Merge pull request #107 from dotnet-bot/from-tfs
Merge changes from TFS
Jan Kotas [Fri, 6 Feb 2015 13:21:41 +0000 (05:21 -0800)]
Fix Windows x64 corerun.exe to run anycpu 32-bit preferred exe
The bug was caused by call to LoadLibrary in Windows corerun and coreconsole hosts that refused to load 32-bit preferred exe.
I have removed the problematic call to LoadLibrary. The purpose of this call was to normalize the exe path. The exe path is already normalized and so this call was unnecessary.
Fixes #92
Jan Vorlicek [Fri, 6 Feb 2015 12:31:14 +0000 (04:31 -0800)]
Fix several warnings in Linux build
1) Usage of partially uninitialized variable when the compiler didn't know the condition is always true. This condition was calling a VolatileRead and only the VolatileRead actually matters so that right PDB annotation is generated and not optimized out in debug optimized builds. So I've removed the if.
2) Usage of nostdinc++ option as a general option - it complained when building C files
3) Usage of an unknown warning disabling compiler option with clang 3.5. The option was needed for clang 3.5.1 and later.
4) Usage of partially uninitialized variable in daccess.cpp - there is a code path that the compiler can see that doesn't initialize the status variable.
5) Empty body of a for loop warning in one or two PAL tests.
[tfs-changeset: 1411579]
Jan Kotas [Fri, 6 Feb 2015 04:42:23 +0000 (20:42 -0800)]
Merge pull request #104 from dotnet-bot/from-tfs
Merge changes from TFS
Xy Ziemba [Fri, 6 Feb 2015 03:22:51 +0000 (19:22 -0800)]
Use N+1 processors instead of N procs on Linux build
N+1 processors appears to perform 2-3% faster than using
just N processors. I've done an A/B test both locally and on
a cloud VM.
Fixes for this and the previous commit were reported by Sedar
Dilek <sedar.dilek@gmail.com>. Thanks!
Eugene Zemtsov [Fri, 6 Feb 2015 03:05:53 +0000 (19:05 -0800)]
Fix build on Linux by resolving case sensitivity issues in md/datasource
[tfs-changeset: 1411310]
Xy Ziemba [Fri, 6 Feb 2015 02:02:19 +0000 (18:02 -0800)]
Use # of processors availabe to OS scheduler on Linux
`getconf _NPROCESSORS_ONLN` provides the number of cores available to
the OS scheduler, while `nproc` provides the number of cores available
to `nproc` itself. We want to use the former value since make spawns
new processes instead of running compilation tasks in the same process.
(FWIW, the two values are usually the same, but `getconf` gets us the
value that we actually want.)
Additionally, `getconf` is available on Mac OSX while `nproc` is not.
I also fixed the printout of the `make` command that's actually
executed when we build.
Matt Mitchell [Fri, 6 Feb 2015 00:38:11 +0000 (00:38 +0000)]
Merge pull request #96 from mmitche/exe-pdbs
Enable PDB generation for corerun and coreconsole
Pat Gavlin [Fri, 6 Feb 2015 00:08:54 +0000 (16:08 -0800)]
Merge pull request #82 from pgavlin/master
Build fixes for clang3.7 and systems without stropt.h.
Matt Mitchell [Thu, 5 Feb 2015 22:42:03 +0000 (14:42 -0800)]
Enable PDB generation for corerun and coreconsole
Corerun and coreconsole are exes, so they don't share the same linker flags as the shared libraries. Set DEBUG on the EXE flags so that Release always gets debug info.
Don't pass incremental linking, incompatible with debug type
Eugene Zemtsov [Thu, 5 Feb 2015 22:19:32 +0000 (14:19 -0800)]
Make DBI build on Linux
- Compile DBI on Linux.
- Link DBI on Linux to the point when only symbols related to INativePipeline are missing.
In order to completely link DBI we'll have to do some development, and it will be addressed by a separate change.
[tfs-changeset: 1411066]
AlexGhiondea [Thu, 5 Feb 2015 22:09:34 +0000 (14:09 -0800)]
Merge pull request #93 from mmitche/fix-build-error-codes
Fix build.cmd return codes
Matt Mitchell [Thu, 5 Feb 2015 16:51:03 +0000 (08:51 -0800)]
Fix build.cmd return codes
Build script was accidentally wiping the return code of the first msbuild step, causing us to continue building even in failure. Fix this and do a little extra cleanup.
Xy Ziemba [Thu, 5 Feb 2015 19:30:07 +0000 (11:30 -0800)]
Merge pull request #50 from xyziemba/build_fix_1
Make build type and build.sh case insensitive
Xy Ziemba [Thu, 5 Feb 2015 18:56:49 +0000 (10:56 -0800)]
Fix Typo in messages within CMakeLists.txt
"DEBUG, RELEASE and RELWITHDEBINFO" becomes
"DEBUG, RELEASE, or RELWITHDEBINFO"
Xy Ziemba [Thu, 5 Feb 2015 18:09:33 +0000 (10:09 -0800)]
Modify else/endif statements to remove optional expressions
This change removes the expressions within the elseif and
endif blocks. This aligns my changes with pull #69 and should
prevent a merge conflict.
Matt Mitchell [Thu, 5 Feb 2015 16:05:42 +0000 (16:05 +0000)]
Merge pull request #66 from cwmiller/master
Fix build.sh variables
Pat Gavlin [Thu, 5 Feb 2015 00:59:45 +0000 (16:59 -0800)]
Build fixes for clang3.7 and systems without stropt.h.
- Fix setup-compiler-clang to detect binaries outside of /usr/bin
- Fix ambiguously-sized cmp instructions when comparing g_GCShadow and 0
- Remove references to stropt.h. None of the defiinitions in this header
are used by the product, and this header is not present on certain
systems.
Jan Kotas [Thu, 5 Feb 2015 07:44:16 +0000 (23:44 -0800)]
Merge pull request #42 from pborreli/typos
Fixed typos
Maks Naumov [Thu, 5 Feb 2015 07:07:22 +0000 (09:07 +0200)]
Fix non-null assertion search in assertion table
if (impAssertion->assertionKind != OAK_NOT_EQUAL ||
impAssertion->op1.kind != O1K_LCLVAR ||
impAssertion->op1.kind != O2K_CONST_INT ||
impAssertion->op1.vn != chkAssertion->op1.vn)
This condition is always true.
Jan Kotas [Thu, 5 Feb 2015 00:58:52 +0000 (16:58 -0800)]
Merge pull request #80 from sergiy-k/binplace-on-linux
Enable binplacing of native CoreCLR binaries on Linux
Xy Ziemba [Wed, 4 Feb 2015 23:11:50 +0000 (15:11 -0800)]
Add default values to CMAKE_BUILD_TYPE
This helps interactive CMake config tools populate the options
to display for the CMAKE_BUILD_TYPE variable.
Sergiy Kuryata [Wed, 4 Feb 2015 21:59:44 +0000 (13:59 -0800)]
Enable binplacing of native CoreCLR binaries on Linux
This change adds support for binplacing native CoreCLR binaries on Linux to "$__RootBinDir/Product/$__BuildArch/$__BuildType". It reuses the mechanism that we currently have in place for Windows. Similarly to binplace implementation for Windows, it sets an environment variable (__CMakeBinDir) in build.sh and then uses its value in clang-compiler-override.txt to set CMAKE_INSTALL_PREFIX to the desired target location.
Chase Miller [Wed, 4 Feb 2015 16:31:58 +0000 (16:31 +0000)]
Fixed variable issues in build.sh
The clean argument wasn't properly setting the __CleanBuild variable to trigger the clean build operation.
The current build target/type message was using CMD variable substitution syntax instead of BASH.
Jan Kotas [Wed, 4 Feb 2015 21:18:29 +0000 (13:18 -0800)]
Merge pull request #36 from benaadams/patch-1
Avoid unnecessary work for identical locations in Buffer.BlockCopy
Ben Adams [Tue, 3 Feb 2015 21:41:36 +0000 (21:41 +0000)]
Avoid unnecessary work for identical locations in Buffer.BlockCopy
Perform validity checks to ensure parameters are correct but short-circuit
out memmove when exactly the same data would be copied to the same location.
There are a number of occasions; which can be intentional or unintentional,
where the buffer being copied is the same place - e.g an internal buffer is
the same as the return buffer, and there is no need to call memmove's
overwrite safe copy.
Generally the call to BlockCopy will be in a library so it is more practical
to enable the check here rather than alter all the calling functions,
including 3rd party libraries to preform additional checks.