Officially supported architectures:
-| debian-amd64 | debian-i386 | debian-armel | debian-armhf | windows-amd64 |
-|-------------------------|------------------------|-------------------------|-------------------------|---------------------------|
-| [![debian-amd64][1]][2] | [![debian-i386][3]][4] | [![debian-armel][5]][6] | [![debian-armhf][7]][8] | [![windows-amd64][9]][10] |
+| ubuntu-1404-amd64 | ubuntu-1404-i386 | debian-8-armel | debian-8-armhf | debian-8-arm64 | windows-amd64 |
+|------------------------------|-----------------------------|---------------------------|---------------------------|-----------------------------|----------------------------|
+| [![ubuntu-1404-amd64][1]][2] | [![ubuntu-1404-i386][3]][4] | [![debian-8-armel][5]][6] | [![debian-8-armhf][7]][8] | [![debian-8-arm64][9]][10] | [![windows-amd64][11]][12] |
Community supported architectures:
| centos-s390x |
|---------------------------|
-| [![centos-s390x][11]][12] |
-
-[1]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-amd64/badge/icon
-[2]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-amd64/
-[3]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-i386/badge/icon
-[4]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-i386/
-[5]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-armel/badge/icon
-[6]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-armel/
-[7]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-armhf/badge/icon
-[8]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-armhf/
-[9]: https://ci.appveyor.com/api/projects/status/1e61ebdfpbiei58v/branch/master?svg=true
-[10]: https://ci.appveyor.com/project/ajlennon/mono-817/branch/master
-[11]: https://jenkins.mono-project.com/job/z/label=centos-s390x/badge/icon
-[12]: https://jenkins.mono-project.com/job/z/label=centos-s390x
+| [![centos-s390x][13]][14] |
+
+[1]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=ubuntu-1404-amd64/badge/icon
+[2]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=ubuntu-1404-amd64
+[3]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=ubuntu-1404-i386/badge/icon
+[4]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=ubuntu-1404-i386/
+[5]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-armel/badge/icon
+[6]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-armel/
+[7]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-armhf/badge/icon
+[8]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-armhf/
+[9]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-arm64/badge/icon
+[10]: https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-arm64/
+[11]: https://ci.appveyor.com/api/projects/status/1e61ebdfpbiei58v/branch/master?svg=true
+[12]: https://ci.appveyor.com/project/ajlennon/mono-817/branch/master
+[13]: https://jenkins.mono-project.com/job/z/label=centos-s390x/badge/icon
+[14]: https://jenkins.mono-project.com/job/z/label=centos-s390x
Compilation and Installation
============================
@echo off
cd mcs\jay
vcbuild jay.vcxproj
+cd msvc\scripts
+csc prepare.cs
+prepare.exe ..\..\mcs core
msbuild net_4_x.sln
#!/bin/sh
(cd mcs/jay; make)
+(cd msvc/scripts/; make prepare.exe; mono prepare.exe ../../mcs core)
msbuild net_4_x.sln
# Process this file with autoconf to produce a configure script.
#AC_PREREQ([2.62])
-AC_INIT(mono, [4.5.1],
+# when bumping version number below, keep it in sync with man/mono.1 too
+AC_INIT(mono, [4.5.2],
[http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
AC_CONFIG_SRCDIR([README.md])
-Subproject commit 00252c18fc0a4a206e45461736a890acb785a9d8
+Subproject commit 163b37483c08b5310c4e3d4c2e22a1ed59b1e6e0
#ifdef __GNUC__
__inline__
#endif
-LONG GC_get_max_thread_index()
+static LONG GC_get_max_thread_index()
{
LONG my_max = GC_max_thread_index;
.\" Author:
.\" Miguel de Icaza (miguel@gnu.org)
.\"
-.TH Mono "Mono 3.0"
+.TH Mono "Mono 4.5.2"
.SH NAME
mono \- Mono's ECMA-CLI native code generator (Just-in-Time and Ahead-of-Time)
.SH SYNOPSIS
endif
test_lib = $(PROFILE)_$(ASSEMBLY:$(ASSEMBLY_EXT)=_test.dll)
-test_sourcefile_excludes = $(test_lib).excludes
+test_sourcefile_excludes = $(test_lib).exclude.sources
test_pdb = $(test_lib:.dll=.pdb)
test_response = $(depsdir)/$(test_lib).response
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-$(ProjectDir)\..\..\jay\jay.exe -ct < $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Commons.Xml.Relaxng.Rnc\RncParser.jay > $(ProjectDir)\Commons.Xml.Relaxng.Rnc\RncParser.cs
+$(ProjectDir)\..\..\jay\jay -ct < $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Commons.Xml.Relaxng.Rnc\RncParser.jay > $(ProjectDir)\Commons.Xml.Relaxng.Rnc\RncParser.cs
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventOpcode))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventSource))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventSourceAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventSourceSettings))]
//[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventSourceException))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventTask))]
//[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Tracing.EventWrittenEventArgs))]
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
-->\r
<PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+$(ProjectDir)\..\..\jay\jay -ct < $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.jay > $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.cs
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+$(ProjectDir)\..\..\jay\jay -ct < $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.jay > $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.cs
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
cp $* $@
$(RESX_RESOURCES): %.resources: %.resx
- $(RESGEN) $< || cp $@.prebuilt $@
+ $(RESGEN) -useSourcePath $< || cp $@.prebuilt $@
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<Folder Include="Properties\" />\r
</ItemGroup>\r
<ItemGroup>\r
- <EmbeddedResource Include="resources/SR.resx">\r
+ <EmbeddedResource Include="resources/SR.resources.prebuilt">\r
<LogicalName>SR.resources</LogicalName>\r
</EmbeddedResource>\r
<EmbeddedResource Include="resources/SQLiteCommand.bmp">\r
}
}
- void AddParameter (System.Data.Common.DbCommand cm, string name, object value)
+ void AddParameter (global::System.Data.Common.DbCommand cm, string name, object value)
{
var param = cm.CreateParameter ();
param.ParameterName = ":" + name;
textP.Value=builder.ToString();
floatP.Value=Convert.ToInt64(random.Next(999));
integerP.Value=random.Next(999);
- blobP.Value=System.Text.Encoding.UTF8.GetBytes("\u05D0\u05D1\u05D2" + builder.ToString());
+ blobP.Value=global::System.Text.Encoding.UTF8.GetBytes("\u05D0\u05D1\u05D2" + builder.ToString());
SqliteCommand selectCmd = new SqliteCommand("SELECT * from t1", _conn);
object compareValue;
if (blobP.Value is byte[])
- compareValue = System.Text.Encoding.UTF8.GetString ((byte[])blobP.Value);
+ compareValue = global::System.Text.Encoding.UTF8.GetString ((byte[])blobP.Value);
else
compareValue = blobP.Value;
Assert.AreEqual(reader["b"], compareValue);
--- /dev/null
+#include monodroid_Mono.Data.Sqlite_test.dll.new-exclude.sources
--- /dev/null
+SqliteDataReaderTest.cs
+SqliteParameterUnitTests.cs
--- /dev/null
+#include Mono.Data.Sqlite_test.dll.sources
</resheader>\r
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />\r
<data name="DataTypes" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
- <value>resources/DataTypes.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>\r
+ <value>DataTypes.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>\r
</data>\r
<data name="Keywords" xml:space="preserve">\r
<value>ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE</value>\r
</data>\r
<data name="MetaDataCollections" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
- <value>resources/MetaDataCollections.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>\r
+ <value>MetaDataCollections.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>\r
</data>\r
-</root>
\ No newline at end of file
+</root>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
TypeMirror t = o.Type;
- Assert.AreEqual ("MonoType", t.GetTypeObject ().Type.Name);
+ Assert.AreEqual ("RuntimeType", t.GetTypeObject ().Type.Name);
}
[Test]
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
Assert.AreEqual (end.Length, bytes.Length, prefix + ": byte length");
- for (int i = 0; i < Math.Min (bytes.Length, end.Length); ++i)
+ for (int i = 0; i < global::System.Math.Min (bytes.Length, end.Length); ++i)
Assert.AreEqual (end [i], bytes [i], prefix + ": byte " + i);
int cc = unix.GetCharCount (end, 0, end.Length);
Assert.AreEqual (start.Length, r, prefix + ": chars length");
- for (int i = 0; i < Math.Min (r, start.Length); ++i) {
+ for (int i = 0; i < global::System.Math.Min (r, start.Length); ++i) {
Assert.AreEqual (start [i], chars [i], prefix + ": char " + i);
}
}
--- /dev/null
+#include monodroid_Mono.Posix_test.dll.new-exclude.sources
+Mono.Unix.Android/TestHelper.cs
--- /dev/null
+Mono.Unix.Native/SocketTest.cs
+Mono.Unix/UnixEndPointTest.cs
+Mono.Unix/UnixListenerTest.cs
--- /dev/null
+#include Mono.Posix_test.dll.sources
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
--- /dev/null
+# These fail because of reliance on full NUnit framework
+Mono.Math/ArithmeticBigTest.cs
+Mono.Math/BigIntegerSetTest.cs
+Mono.Math/BitwiseTest.cs
+Mono.Math/GcdBigTest.cs
+Mono.Math/ModInverseBigTest.cs
+Mono.Math/ModRingTest.cs
+Mono.Math/PrimeGenerationTest.cs
+Mono.Math/PrimeTestingTest.cs
+Mono.Math/SearchGeneratorTest.cs
+Mono.Security.Authenticode/PrivateKeyTest.cs
+Mono.Security.Cryptography/CryptoConvertTest.cs
+Mono.Security.Cryptography/DiffieHellmanManagedTest.cs
+Mono.Security.Cryptography/PKCS8Test.cs
+Mono.Security.Protocol.Ntlm/ChallengeResponseTest.cs
+Mono.Security.Protocol.Ntlm/MessageBaseTest.cs
+Mono.Security.Protocol.Ntlm/Type1MessageTest.cs
+Mono.Security.Protocol.Ntlm/Type2MessageTest.cs
+Mono.Security.Protocol.Ntlm/Type3MessageTest.cs
+Mono.Security/StrongNameTest.cs
--- /dev/null
+#include monodroid_Mono.Security_test.dll.build-failure-exclude.sources
+#include monodroid_Mono.Data.Sqlite_test.dll.new-exclude.sources
--- /dev/null
+Mono.Security.Authenticode/AuthenticodeDeformatterTest.cs
+Mono.Security.Authenticode/SoftwarePublisherCertificateTest.cs
+Mono.Security/PKCS7Test.cs
+Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs
+Mono.Security.X509.Extensions/BasicConstraintsExtensionTest.cs
+Mono.Security.X509.Extensions/ExtendedKeyUsageExtensionTest.cs
+Mono.Security.X509.Extensions/KeyUsageExtensionTest.cs
+Mono.Security.X509.Extensions/SubjectAltNameExtensionTest.cs
+Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs
+Mono.Security.X509/PKCS12Test.cs
+Mono.Security.X509/X501NameTest.cs
+Mono.Security.X509/X509CertificateTest.cs
+Mono.Security.X509/X509CrlTest.cs
+Mono.Security.X509/X520AttributesTest.cs
--- /dev/null
+#include Mono.Security_test.dll.sources
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
m_primitiveTypeFlagMap[amqpType] = isReference;
}
- public void HandleOption(string opt) {
+ public bool HandleOption(string opt) {
if (opt.StartsWith("/n:")) {
m_framingSubnamespace = opt.Substring(3);
} else if (opt.StartsWith("/apiName:")) {
} else if (opt == "/c") {
m_emitComments = true;
} else {
- Console.Error.WriteLine("Unsupported command-line option: " + opt);
- Usage();
+ return false;
}
+ return true;
}
public void Usage() {
public Apigen(ArrayList args) {
while (args.Count > 0 && ((string) args[0]).StartsWith("/")) {
- HandleOption((string) args[0]);
+ if (!HandleOption((string) args[0]))
+ break;
args.RemoveAt(0);
}
if ((args.Count < 2)
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+mono RabbitMQ.Client.Apigen.exe /n:v0_9 "/apiName:AMQP_0_9" $(ProjectDir)..\..\docs\specs\amqp0-9.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-9.cs
+mono RabbitMQ.Client.Apigen.exe /n:v0_8 "/apiName:AMQP_0_8" $(ProjectDir)..\..\docs\specs\amqp0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-8.cs
+mono RabbitMQ.Client.Apigen.exe /n:v0_8qpid "/apiName:AMQP_0_8_QPID" $(ProjectDir)..\..\docs\specs\qpid-amqp.0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-qpid-0-8.cs
+
+
+
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+mono RabbitMQ.Client.Apigen.exe /n:v0_9 "/apiName:AMQP_0_9" $(ProjectDir)..\..\docs\specs\amqp0-9.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-9.cs
+mono RabbitMQ.Client.Apigen.exe /n:v0_8 "/apiName:AMQP_0_8" $(ProjectDir)..\..\docs\specs\amqp0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-8.cs
+mono RabbitMQ.Client.Apigen.exe /n:v0_8qpid "/apiName:AMQP_0_8_QPID" $(ProjectDir)..\..\docs\specs\qpid-amqp.0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-qpid-0-8.cs
+
+
+
\r
</PostBuildEvent>\r
</PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
-->\r
<PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
+resgen $(ProjectDir)\src\ComponentModel\Strings.resx $(ProjectDir)\Microsoft.Internal.Strings.resx
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
+resgen $(ProjectDir)\src\ComponentModel\Strings.resx $(ProjectDir)\Microsoft.Internal.Strings.resx\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
--- /dev/null
+#include monodroid_System.ComponentModel.DataAnnotations_test.dll.new-exclude.sources
+../../System.Web.DynamicData/Test/Common/AssertExtensions.cs
--- /dev/null
+System.ComponentModel.DataAnnotations/AssociatedMetadataTypeTypeDescriptionProviderTests.cs
+System.ComponentModel.DataAnnotations/CompareAttributeTest.cs
+System.ComponentModel.DataAnnotations/CreditCardAttributeTest.cs
+System.ComponentModel.DataAnnotations/EmailAddressAttributeTest.cs
+System.ComponentModel.DataAnnotations/FileExtensionsAttributeTest.cs
+System.ComponentModel.DataAnnotations/PhoneAttributeTest.cs
--- /dev/null
+#include System.ComponentModel.DataAnnotations_test.dll.sources
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
--- /dev/null
+System.IO.Pipes/PipeSecurityTest.cs
+++ /dev/null
-System.IO.Pipes/PipeSecurityTest.cs
--- /dev/null
+#include mobile_static_System.Core_test.dll.exclude.sources
+#include monodroid_System.Core_test.dll.new-exclude.sources
--- /dev/null
+../../corlib/Test/System.Security.Cryptography/HashAlgorithmTest.cs
+../../corlib/Test/System.Security.Cryptography/SHA1Test.cs
+../../corlib/Test/System.Security.Cryptography/SHA256Test.cs
+../../corlib/Test/System.Security.Cryptography/SHA384Test.cs
+../../corlib/Test/System.Security.Cryptography/SHA512Test.cs
--- /dev/null
+#include System.Core_test.dll.sources
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
-->\r
<PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
+resgen $(ProjectDir)\Client\System.Data.Services.Client.txt $(ProjectDir)\Client\System.Data.Services.Client.resx
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
+resgen $(ProjectDir)\Client\System.Data.Services.Client.txt $(ProjectDir)\Client\System.Data.Services.Client.resx\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
--- /dev/null
+System.Data.Odbc/OdbcCommandBuilderTest.cs
+System.Data.Odbc/OdbcCommandTest.cs
+System.Data.Odbc/OdbcConnectionStringBuilderTest.cs
+System.Data.Odbc/OdbcConnectionTest.cs
+System.Data.Odbc/OdbcDataAdapterTest.cs
+System.Data.Odbc/OdbcDataReaderTest.cs
+System.Data.Odbc/OdbcMetaDataCollectionNamesTest.cs
+System.Data.Odbc/OdbcParameterCollectionTest.cs
+System.Data.Odbc/OdbcParameterTest.cs
+System.Data.Odbc/OdbcPermissionAttributeTest.cs
+System.Data.Odbc/OdbcPermissionTest.cs
+System.Data.OleDb/OleDbCommandTest.cs
+System.Data.OleDb/OleDbConnectionTest.cs
+System.Data.OleDb/OleDbDataAdapterTest.cs
+System.Data.OleDb/OleDbMetaDataCollectionNamesTest.cs
+System.Data.OleDb/OleDbParameterCollectionTest.cs
+System.Data.OleDb/OleDbPermissionAttributeTest.cs
+System.Data.OleDb/OleDbPermissionTest.cs
+++ /dev/null
-System.Data.Odbc/OdbcCommandBuilderTest.cs
-System.Data.Odbc/OdbcCommandTest.cs
-System.Data.Odbc/OdbcConnectionStringBuilderTest.cs
-System.Data.Odbc/OdbcConnectionTest.cs
-System.Data.Odbc/OdbcDataAdapterTest.cs
-System.Data.Odbc/OdbcDataReaderTest.cs
-System.Data.Odbc/OdbcMetaDataCollectionNamesTest.cs
-System.Data.Odbc/OdbcParameterCollectionTest.cs
-System.Data.Odbc/OdbcParameterTest.cs
-System.Data.Odbc/OdbcPermissionAttributeTest.cs
-System.Data.Odbc/OdbcPermissionTest.cs
-System.Data.OleDb/OleDbCommandTest.cs
-System.Data.OleDb/OleDbConnectionTest.cs
-System.Data.OleDb/OleDbDataAdapterTest.cs
-System.Data.OleDb/OleDbMetaDataCollectionNamesTest.cs
-System.Data.OleDb/OleDbParameterCollectionTest.cs
-System.Data.OleDb/OleDbPermissionAttributeTest.cs
-System.Data.OleDb/OleDbPermissionTest.cs
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
Directory.Delete ("extract", true);
}
+
+ [Test]
+ public void ZipCreateFromEntryChangeTimestamp()
+ {
+ if (File.Exists ("foo.zip"))
+ File.Delete ("foo.zip");
+
+ var file = "foo/foo.txt";
+ using (var archive = new ZipArchive(File.Open("foo.zip", FileMode.Create),
+ ZipArchiveMode.Update))
+ {
+ archive.CreateEntryFromFile(file, file);
+ }
+
+ var date = File.GetLastWriteTimeUtc(file);
+
+ using (var archive = new ZipArchive (File.Open ("foo.zip", FileMode.Open),
+ ZipArchiveMode.Read))
+ {
+ var entry = archive.GetEntry (file);
+ Assert.IsNotNull (entry);
+ Assert.AreEqual(entry.LastWriteTime.Year, date.Year);
+ Assert.AreEqual(entry.LastWriteTime.Month, date.Month);
+ Assert.AreEqual(entry.LastWriteTime.Day, date.Day);
+ }
+ }
}
}
FileAccess.Read, FileShare.Read))
{
var zipArchiveEntry = destination.CreateEntry (entryName, compressionLevel);
+ zipArchiveEntry.LastWriteTime = File.GetLastWriteTimeUtc(sourceFileName);
using (Stream entryStream = zipArchiveEntry.Open ())
stream.CopyTo (entryStream);
{
private readonly string path;
private readonly long size;
- private readonly DateTime? lastModified;
private readonly bool closeStream;
private readonly Stream stream;
private bool isDisposed;
this.stream = stream;
this.path = path;
this.size = size;
- this.lastModified = lastModified;
+ this.LastModifiedTime = lastModified;
this.closeStream = closeStream;
}
get { return size; }
}
- public override DateTime? LastModifiedTime
- {
- get { return lastModified; }
- }
-
public override DateTime? CreatedTime
{
get { return null; }
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
File.Delete ("create.zip");
}
+ [Test]
+ public void ZipEnumerateEntriesModifiedTime()
+ {
+ File.Copy("archive.zip", "test.zip", overwrite: true);
+ var date = DateTimeOffset.Now;
+ using (var archive = new ZipArchive(File.Open("test.zip", FileMode.Open),
+ ZipArchiveMode.Update))
+ {
+ var entry = archive.GetEntry("foo.txt");
+ entry.LastWriteTime = date;
+ }
+
+ using (var archive = new ZipArchive(File.Open("test.zip", FileMode.Open),
+ ZipArchiveMode.Read))
+ {
+ var entry = archive.GetEntry("foo.txt");
+ Assert.AreEqual(entry.LastWriteTime.Year, date.Year);
+ Assert.AreEqual(entry.LastWriteTime.Month, date.Month);
+ Assert.AreEqual(entry.LastWriteTime.Day, date.Day);
+
+ }
+
+ File.Delete ("test.zip");
+ }
+
[Test]
public void ZipEnumerateEntriesReadMode()
{
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
SUBDIRS =
include ../../build/rules.make
-System.Json.Properties.Resources.resources: System.Json/Properties/Resources.resx
+System.Json/Properties/Resources.resources: System.Json/Properties/Resources.resx
$(RESGEN) "$<" "$@"
LIBRARY = System.Json.Microsoft.dll
LIB_REFS = System System.Xml System.Core System.Runtime.Serialization
LIB_MCS_FLAGS = /d:ASPNETMVC -keyfile:../winfx.pub -delaysign \
- /resource:System.Json.Properties.Resources.resources
+ /resource:System.Json/Properties/Resources.resources,System.Json.Properties.Resources.resources
EXTRA_DISTFILES = System.Json/Properties/Resources.resx
include ../../build/library.make
-$(the_lib): System.Json.Properties.Resources.resources
+$(the_lib): System.Json/Properties/Resources.resources
<SchemaVersion>2.0</SchemaVersion>\r
<ProjectGuid>{E6A6B9F7-BD0C-4F8D-8AFE-2EF76A2FB3AD}</ProjectGuid>\r
<OutputType>Library</OutputType>\r
- <NoWarn>1699</NoWarn>\r
+ <NoWarn>1699,1699</NoWarn>\r
<OutputPath>./../../class/lib/net_4_x</OutputPath>\r
<IntermediateOutputPath>obj-net_4_x</IntermediateOutputPath>\r
<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>\r
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
<DebugSymbols>true</DebugSymbols>\r
<DebugType>full</DebugType>\r
- <NoWarn>1699</NoWarn>\r
+ <NoWarn>1699,1699</NoWarn>\r
<Optimize>false</Optimize>\r
- <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;ASPNETMVC;FEATURE_DYNAMIC</DefineConstants>\r
+ <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;ASPNETMVC;FEATURE_DYNAMIC;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;ASPNETMVC;FEATURE_DYNAMIC</DefineConstants>\r
<ErrorReport>prompt</ErrorReport>\r
<WarningLevel>4</WarningLevel>\r
</PropertyGroup>\r
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
<DebugType>pdbonly</DebugType>\r
- <NoWarn>1699</NoWarn>\r
+ <NoWarn>1699,1699</NoWarn>\r
<Optimize>true</Optimize>\r
- <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;ASPNETMVC;FEATURE_DYNAMIC</DefineConstants>\r
+ <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;ASPNETMVC;FEATURE_DYNAMIC;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;ASPNETMVC;FEATURE_DYNAMIC</DefineConstants>\r
<ErrorReport>prompt</ErrorReport>\r
<WarningLevel>4</WarningLevel>\r
</PropertyGroup>\r
-->\r
<PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
+cp $(ProjectDir)\System.Json\Properties\Resources.resx System.Json.Properties.Resources.resx
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
+cp $(ProjectDir)\System.Json\Properties\Resources.resx System.Json.Properties.Resources.resx\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<Folder Include="Properties\" />\r
</ItemGroup>\r
<ItemGroup>\r
- <EmbeddedResource Include="System.Json.Properties.Resources.resx">\r
+ <EmbeddedResource Include="System.Json/Properties/Resources.resx">\r
<LogicalName>System.Json.Properties.Resources.resources</LogicalName>\r
</EmbeddedResource>\r
</ItemGroup>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
-->\r
<PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+cp $(ProjectDir)/../../../external/aspnetwebstack/src/Common/CommonWebApiResources.resx $(ProjectDir)/System.Net.Http.Properties.CommonWebApiResources.resx
+cp $(ProjectDir)/../../../external/aspnetwebstack/src/System.Net.Http.Formatting/Properties/Resources.resx $(ProjectDir)/System.Net.Http.Properties.Resources.resx
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+cp $(ProjectDir)/../../../external/aspnetwebstack/src/Common/CommonWebApiResources.resx $(ProjectDir)/System.Net.Http.Properties.CommonWebApiResources.resx
+cp $(ProjectDir)/../../../external/aspnetwebstack/src/System.Net.Http.Formatting/Properties/Resources.resx $(ProjectDir)/System.Net.Http.Properties.Resources.resx
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<Folder Include="Properties\" />\r
</ItemGroup>\r
<ItemGroup>\r
- <EmbeddedResource Include="Strings_Core.resx">\r
+ <EmbeddedResource Include="Strings_Core.resources.prebuilt">\r
<LogicalName>System.Reactive.Strings_Core.resources</LogicalName>\r
</EmbeddedResource>\r
</ItemGroup>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<Folder Include="Properties\" />\r
</ItemGroup>\r
<ItemGroup>\r
- <EmbeddedResource Include="Strings_Linq.resx">\r
+ <EmbeddedResource Include="Strings_Linq.resources.prebuilt">\r
<LogicalName>System.Reactive.Strings_Linq.resources</LogicalName>\r
</EmbeddedResource>\r
</ItemGroup>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<Folder Include="Properties\" />\r
</ItemGroup>\r
<ItemGroup>\r
- <EmbeddedResource Include="Strings_PlatformServices.resx">\r
+ <EmbeddedResource Include="Strings_PlatformServices.resources.prebuilt">\r
<LogicalName>System.Reactive.Strings_PlatformServices.resources</LogicalName>\r
</EmbeddedResource>\r
</ItemGroup>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<Folder Include="Properties\" />\r
</ItemGroup>\r
<ItemGroup>\r
- <EmbeddedResource Include="Strings_Providers.resx">\r
+ <EmbeddedResource Include="Strings_Providers.resources.prebuilt">\r
<LogicalName>System.Reactive.Strings_Providers.resources</LogicalName>\r
</EmbeddedResource>\r
</ItemGroup>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<Folder Include="Properties\" />\r
</ItemGroup>\r
<ItemGroup>\r
- <EmbeddedResource Include="Strings_WindowsThreading.resx">\r
+ <EmbeddedResource Include="Strings_WindowsThreading.resources.prebuilt">\r
<LogicalName>System.Reactive.Strings_WindowsThreading.resources</LogicalName>\r
</EmbeddedResource>\r
</ItemGroup>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<Compile Include="System.Transactions\TransactionOptions.cs" />\r
<Compile Include="System.Transactions\TransactionPromotionException.cs" />\r
<Compile Include="System.Transactions\TransactionScope.cs" />\r
+ <Compile Include="System.Transactions\TransactionScopeAsyncFlowOption.cs" />\r
<Compile Include="System.Transactions\TransactionScopeOption.cs" />\r
<Compile Include="System.Transactions\TransactionStatus.cs" />\r </ItemGroup>\r
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
System.Transactions/TransactionOptions.cs
System.Transactions/TransactionPromotionException.cs
System.Transactions/TransactionScope.cs
+System.Transactions/TransactionScopeAsyncFlowOption.cs
System.Transactions/TransactionScopeOption.cs
System.Transactions/TransactionStatus.cs
System.Transactions/Configuration/DefaultSettingsSection.cs
bool completed;
bool isRoot;
+ bool asyncFlowEnabled;
+
public TransactionScope ()
: this (TransactionScopeOption.Required,
TransactionManager.DefaultTimeout)
{
}
+ public TransactionScope(TransactionScopeAsyncFlowOption asyncFlow)
+ : this(TransactionScopeOption.Required,
+ TransactionManager.DefaultTimeout, asyncFlow)
+ {
+ }
+
public TransactionScope (Transaction transaction)
: this (transaction, TransactionManager.DefaultTimeout)
{
TimeSpan timeout, DTCOption opt)
{
Initialize (TransactionScopeOption.Required,
- transaction, defaultOptions, opt, timeout);
+ transaction, defaultOptions, opt, timeout, TransactionScopeAsyncFlowOption.Suppress);
}
public TransactionScope (TransactionScopeOption option)
}
public TransactionScope (TransactionScopeOption option,
- TimeSpan timeout)
+ TimeSpan timeout)
+ : this (option, timeout, TransactionScopeAsyncFlowOption.Suppress)
+ {
+ }
+
+ public TransactionScope(TransactionScopeOption option, TransactionScopeAsyncFlowOption asyncFlow)
+ : this(option, TransactionManager.DefaultTimeout, asyncFlow)
+ {
+ }
+
+ public TransactionScope (TransactionScopeOption option,
+ TimeSpan timeout, TransactionScopeAsyncFlowOption asyncFlow)
{
Initialize (option, null, defaultOptions,
- DTCOption.None, timeout);
+ DTCOption.None, timeout, asyncFlow);
}
public TransactionScope (TransactionScopeOption scopeOption,
DTCOption opt)
{
Initialize (scopeOption, null, options, opt,
- TransactionManager.DefaultTimeout);
+ TransactionManager.DefaultTimeout, TransactionScopeAsyncFlowOption.Suppress);
}
void Initialize (TransactionScopeOption scopeOption,
Transaction tx, TransactionOptions options,
- DTCOption interop, TimeSpan timeout)
+ DTCOption interop, TimeSpan timeout, TransactionScopeAsyncFlowOption asyncFlow)
{
completed = false;
isRoot = false;
nested = 0;
+ asyncFlowEnabled = asyncFlow == TransactionScopeAsyncFlowOption.Enabled;
if (timeout < TimeSpan.Zero)
throw new ArgumentOutOfRangeException ("timeout");
throw new InvalidOperationException ("TransactionScope nested incorrectly");
}
- if (Transaction.CurrentInternal != transaction) {
+ if (Transaction.CurrentInternal != transaction && !asyncFlowEnabled) {
if (transaction != null)
transaction.Rollback ();
if (Transaction.CurrentInternal != null)
Transaction.CurrentInternal.Rollback ();
throw new InvalidOperationException ("Transaction.Current has changed inside of the TransactionScope");
- }
+ }
- if (Transaction.CurrentInternal == oldTransaction && oldTransaction != null)
- oldTransaction.Scope = parentScope;
+ if (asyncFlowEnabled) {
+ if (oldTransaction != null)
+ oldTransaction.Scope = parentScope;
- Transaction.CurrentInternal = oldTransaction;
+ var variedTransaction = Transaction.CurrentInternal;
- if (transaction == null)
- /* scope was not in a transaction, (Suppress) */
- return;
+ if (transaction == null && variedTransaction == null)
+ /* scope was not in a transaction, (Suppress) */
+ return;
- transaction.Scope = null;
+ variedTransaction.Scope = parentScope;
+ Transaction.CurrentInternal = oldTransaction;
- if (!IsComplete) {
- transaction.Rollback ();
- return;
- }
+ transaction.Scope = null;
- if (!isRoot)
- /* Non-root scope has completed+ended */
- return;
+ if (!IsComplete) {
+ transaction.Rollback ();
+ variedTransaction.Rollback();
+ return;
+ }
+
+ if (!isRoot)
+ /* Non-root scope has completed+ended */
+ return;
+
+ variedTransaction.CommitInternal();
+ transaction.CommitInternal();
+ } else {
+ if (Transaction.CurrentInternal == oldTransaction && oldTransaction != null)
+ oldTransaction.Scope = parentScope;
+
+ Transaction.CurrentInternal = oldTransaction;
- transaction.CommitInternal ();
+ if (transaction == null)
+ /* scope was not in a transaction, (Suppress) */
+ return;
+
+ transaction.Scope = null;
+
+ if (!IsComplete)
+ {
+ transaction.Rollback();
+ return;
+ }
+
+ if (!isRoot)
+ /* Non-root scope has completed+ended */
+ return;
+
+ transaction.CommitInternal();
+
+ }
}
--- /dev/null
+
+namespace System.Transactions
+{
+ public enum TransactionScopeAsyncFlowOption
+ {
+ Suppress,
+ Enabled
+ }
+}
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
-->\r
<PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\CommonResources.resx $(ProjectDir)\System.Web.Razor.Common.CommonResources.resx
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\System.Web.Razor\Resources\RazorResources.resx $(ProjectDir)\System.Web.Razor.Resources.RazorResources.resx
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-\r
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\CommonResources.resx $(ProjectDir)\System.Web.Razor.Common.CommonResources.resx
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\System.Web.Razor\Resources\RazorResources.resx $(ProjectDir)\System.Web.Razor.Resources.RazorResources.resx\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
--- /dev/null
+System.Web.Services/Test/System.Web.Services.Configuration/DiagnosticsElementTest.cs
+System.Web.Services/Test/System.Web.Services.Configuration/ProtocolElementTest.cs
+System.Web.Services/Test/System.Web.Services.Configuration/SoapEnvelopeProcessingElementTest.cs
+System.Web.Services/Test/System.Web.Services.Configuration/SoapExtensionTypeElementTest.cs
+System.Web.Services/Test/System.Web.Services.Configuration/TypeElementTest.cs
+System.Web.Services/Test/System.Web.Services.Configuration/WsdlHelpGeneratorElementTest.cs
+System.Web.Services/Test/System.Web.Services.Configuration/WsiProfilesElementTest.cs
+System.Web.Services/Test/System.Web.Services.Configuration/XmlFormatExtensionAttributeTest.cs
+++ /dev/null
-System.Web.Services/Test/System.Web.Services.Configuration/DiagnosticsElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/ProtocolElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/SoapEnvelopeProcessingElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/SoapExtensionTypeElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/TypeElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/WsdlHelpGeneratorElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/WsiProfilesElementTest.cs
-System.Web.Services/Test/System.Web.Services.Configuration/XmlFormatExtensionAttributeTest.cs
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
-->\r
<PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+mono $(ProjectDir)\..\lib\net_4_x\culevel.exe -o $(ProjectDir)\System.Web\UplevelHelper.cs $(ProjectDir)\UplevelHelperDefinitions.xml
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+mono $(ProjectDir)\..\lib\net_4_x\culevel.exe -o $(ProjectDir)\System.Web\UplevelHelper.cs $(ProjectDir)\UplevelHelperDefinitions.xml
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
-->\r
<PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+mono $(ProjectDir)\..\lib\net_4_x\culevel.exe -o $(ProjectDir)\System.Web\UplevelHelper.cs $(ProjectDir)\UplevelHelperDefinitions.xml
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+mono $(ProjectDir)\..\lib\net_4_x\culevel.exe -o $(ProjectDir)\System.Web\UplevelHelper.cs $(ProjectDir)\UplevelHelperDefinitions.xml
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<EmbeddedResource Include="resources/DnDMove.cur">\r
<LogicalName>System.Windows.Forms.DnDMove.cur</LogicalName>\r
</EmbeddedResource>\r
- <EmbeddedResource Include="resources/keyboards.resx">\r
+ <EmbeddedResource Include="resources/keyboards.resources.prebuilt">\r
<LogicalName>keyboards.resources</LogicalName>\r
</EmbeddedResource>\r
<EmbeddedResource Include="resources/16_computer.png">\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
TEST_MCS_FLAGS += -d:MONO_FEATURE_THREAD_SUSPEND_RESUME
endif
+ifndef NO_MULTIPLE_APPDOMAINS
+REFERENCE_SOURCES_FLAGS += -d:MONO_FEATURE_MULTIPLE_APPDOMAINS
+TEST_MCS_FLAGS += -d:MONO_FEATURE_MULTIPLE_APPDOMAINS
+endif
+
TXT_RESOURCE_STRINGS = ../referencesource/System/System.txt
#
--- /dev/null
+using System.Collections;
+using System.Collections.Generic;
+using System.Text.RegularExpressions;
+using Mono.Net;
+
+namespace System.Net
+{
+ class AutoWebProxyScriptEngine
+ {
+ public AutoWebProxyScriptEngine (WebProxy proxy, bool useRegistry)
+ {
+ }
+
+ public Uri AutomaticConfigurationScript { get; set; }
+ public bool AutomaticallyDetectSettings { get; set; }
+
+ public bool GetProxies (Uri destination, out IList<string> proxyList)
+ {
+ int i = 0;
+ return GetProxies (destination, out proxyList, ref i);
+ }
+
+ public bool GetProxies(Uri destination, out IList<string> proxyList, ref int syncStatus)
+ {
+ proxyList = null;
+ return false;
+ }
+
+ public void Close ()
+ {
+ }
+
+ public void Abort (ref int syncStatus)
+ {
+ }
+
+ public void CheckForChanges ()
+ {
+ }
+
+#if !MOBILE
+ public WebProxyData GetWebProxyData ()
+ {
+ WebProxyData data;
+
+ // TODO: Could re-use some pieces from _AutoWebProxyScriptEngine.cs
+ if (IsWindows ()) {
+ data = InitializeRegistryGlobalProxy ();
+ if (data != null)
+ return data;
+ }
+
+ data = ReadEnvVariables ();
+ return data ?? new WebProxyData ();
+ }
+
+ WebProxyData ReadEnvVariables ()
+ {
+ string address = Environment.GetEnvironmentVariable ("http_proxy") ?? Environment.GetEnvironmentVariable ("HTTP_PROXY");
+
+ if (address != null) {
+ try {
+ if (!address.StartsWith ("http://"))
+ address = "http://" + address;
+
+ Uri uri = new Uri (address);
+ IPAddress ip;
+
+ if (IPAddress.TryParse (uri.Host, out ip)) {
+ if (IPAddress.Any.Equals (ip)) {
+ UriBuilder builder = new UriBuilder (uri);
+ builder.Host = "127.0.0.1";
+ uri = builder.Uri;
+ } else if (IPAddress.IPv6Any.Equals (ip)) {
+ UriBuilder builder = new UriBuilder (uri);
+ builder.Host = "[::1]";
+ uri = builder.Uri;
+ }
+ }
+
+ bool bBypassOnLocal = false;
+ ArrayList al = new ArrayList ();
+ string bypass = Environment.GetEnvironmentVariable ("no_proxy") ?? Environment.GetEnvironmentVariable ("NO_PROXY");
+
+ if (bypass != null) {
+ string[] bypassList = bypass.Split (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
+
+ foreach (string str in bypassList) {
+ if (str != "*.local")
+ al.Add (str);
+ else
+ bBypassOnLocal = true;
+ }
+ }
+
+ return new WebProxyData {
+ proxyAddress = uri,
+ bypassOnLocal = bBypassOnLocal,
+ bypassList = CreateBypassList (al)
+ };
+ } catch (UriFormatException) {
+ }
+ }
+
+ return null;
+ }
+
+ static bool IsWindows ()
+ {
+ return (int) Environment.OSVersion.Platform < 4;
+ }
+
+ WebProxyData InitializeRegistryGlobalProxy ()
+ {
+ int iProxyEnable = (int)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyEnable", 0);
+
+ if (iProxyEnable > 0) {
+ string strHttpProxy = "";
+ bool bBypassOnLocal = false;
+ ArrayList al = new ArrayList ();
+
+ string strProxyServer = (string)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyServer", null);
+ string strProxyOverrride = (string)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyOverride", null);
+
+ if (strProxyServer.Contains ("=")) {
+ foreach (string strEntry in strProxyServer.Split (new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries))
+ if (strEntry.StartsWith ("http=")) {
+ strHttpProxy = strEntry.Substring (5);
+ break;
+ }
+ } else strHttpProxy = strProxyServer;
+
+ if (strProxyOverrride != null) {
+ string[] bypassList = strProxyOverrride.Split (new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
+
+ foreach (string str in bypassList) {
+ if (str != "<local>")
+ al.Add (str);
+ else
+ bBypassOnLocal = true;
+ }
+ }
+
+ return new WebProxyData {
+ proxyAddress = ToUri (strHttpProxy),
+ bypassOnLocal = bBypassOnLocal,
+ bypassList = CreateBypassList (al)
+ };
+ }
+
+ return null;
+ }
+
+ static Uri ToUri (string address)
+ {
+ if (address == null)
+ return null;
+
+ if (address.IndexOf ("://", StringComparison.Ordinal) == -1)
+ address = "http://" + address;
+
+ return new Uri (address);
+ }
+
+ // Takes an ArrayList of fileglob-formatted strings and returns an array of Regex-formatted strings
+ static ArrayList CreateBypassList (ArrayList al)
+ {
+ string[] result = al.ToArray (typeof (string)) as string[];
+ for (int c = 0; c < result.Length; c++)
+ {
+ result [c] = "^" +
+ Regex.Escape (result [c]).Replace (@"\*", ".*").Replace (@"\?", ".") +
+ "$";
+ }
+ return new ArrayList (result);
+ }
+#endif
+ }
+}
\ No newline at end of file
internal static void Enter(TraceSource traceSource, object obj, string method, object paramObject) {
}
+ [Conditional ("TRACE")]
+ internal static void Enter(TraceSource traceSource, string msg) {
+ }
+
[Conditional ("TRACE")]
internal static void Exception(TraceSource traceSource, object obj, string method, Exception e) {
}
internal static void Exit(TraceSource traceSource, object obj, string method, object retObject) {
}
+ [Conditional ("TRACE")]
+ internal static void Exit(TraceSource traceSource, string msg) {
+ }
+
[Conditional ("TRACE")]
internal static void PrintInfo(TraceSource traceSource, object obj, string method, string msg) {
}
+ [Conditional ("TRACE")]
+ internal static void PrintInfo(TraceSource traceSource, object obj, string msg) {
+ }
+
+ [Conditional ("TRACE")]
+ internal static void PrintInfo(TraceSource traceSource, string msg) {
+ }
+
[Conditional ("TRACE")]
internal static void PrintWarning(TraceSource traceSource, object obj, string method, string msg) {
}
[Conditional ("TRACE")]
internal static void PrintWarning(TraceSource traceSource, string msg) {
}
+
+ [Conditional ("TRACE")]
+ internal static void PrintError(TraceSource traceSource, string msg) {
+ }
}
#if MOBILE
--- /dev/null
+namespace System.Net.Cache
+{
+ class RequestCacheProtocol
+ {
+ public RequestCacheProtocol (object arg1, object arg2)
+ {
+ throw new NotImplementedException ();
+ }
+ }
+}
\ No newline at end of file
//
// Copyright 2014 Xamarin Inc
//
-// Mono-specific additions, which are not in SR.cs.
+// Mono-specific additions, which are not in SR.cs or missing in referencesource
//
partial class SR
{
public const string mono_net_io_shutdown = "mono_net_io_shutdown";
public const string mono_net_io_renegotiate = "mono_net_io_renegotiate";
+
+ public const string net_log_set_socketoption_reuseport_default_on = "net_log_set_socketoption_reuseport_default_on";
}
+using System.Net.Security;
+
namespace System.Net.Configuration {
sealed class SettingsSectionInternal
{
#endif
internal bool HttpListenerUnescapeRequestUrl = true;
+
+
+ internal bool UseNagleAlgorithm { get; set; }
+ internal bool Expect100Continue { get; set; }
+ internal bool CheckCertificateName { get; private set; }
+ internal int DnsRefreshTimeout { get; set; }
+ internal bool EnableDnsRoundRobin { get; set; }
+ internal bool CheckCertificateRevocationList { get; set; }
+ internal EncryptionPolicy EncryptionPolicy { get; private set; }
}
}
+++ /dev/null
-namespace System.Net {
- //
- // Object representing default credentials
- //
- internal class SystemNetworkCredential : NetworkCredential {
- internal static readonly SystemNetworkCredential defaultCredential = new SystemNetworkCredential();
-
- // We want reference equality to work. Making this private is a good way to guarantee that.
- private SystemNetworkCredential() :
- base(string.Empty, string.Empty, string.Empty) {
- }
- }
-}
\ No newline at end of file
<DebugType>full</DebugType>\r
<NoWarn>1699,618</NoWarn>\r
<Optimize>false</Optimize>\r
- <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME</DefineConstants>\r
+ <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS</DefineConstants>\r
<ErrorReport>prompt</ErrorReport>\r
<WarningLevel>4</WarningLevel>\r
</PropertyGroup>\r
<DebugType>pdbonly</DebugType>\r
<NoWarn>1699,618</NoWarn>\r
<Optimize>true</Optimize>\r
- <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME</DefineConstants>\r
+ <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS</DefineConstants>\r
<ErrorReport>prompt</ErrorReport>\r
<WarningLevel>4</WarningLevel>\r
</PropertyGroup>\r
<Compile Include="..\referencesource\System\net\System\IriHelper.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_BufferOffsetSize.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_Connection.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_emptywebproxy.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_HeaderInfo.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_HeaderInfoTable.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_HTTPDateParse.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_NetRes.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_ProxyChain.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_TimerThread.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_WebProxyDataBuilder.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\AuthenticationScheme.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\AuthenticationSchemeSelector.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\Authorization.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCache.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheEntry.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheManager.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCachePolicy.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Configuration\DefaultProxySection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookie.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookiecollection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookieexception.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\CredentialCache.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\DnsEndPoint.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\EndPoint.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\filewebrequest.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\filewebresponse.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\FtpStatusCode.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\GlobalProxySelection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\HttpListenerException.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\HttpListenerRequestUriBuilder.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\HttpRequestHeader.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\IPEndPoint.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\IPHostEntry.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\iwebproxy.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\IWebProxyFinder.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\IWebRequestCreate.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\mail\Base64Stream.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\mail\Base64WriteStateInfo.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebExceptionStatus.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebHeaderCollection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebPermission.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\webproxy.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\WebRequest.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebRequestMethods.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebResponse.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebUtility.cs" />\r
<Compile Include="ReferenceSources\_SslState.cs" />\r
<Compile Include="ReferenceSources\_SslStream.cs" />\r
<Compile Include="ReferenceSources\AssertWrapper.cs" />\r
+ <Compile Include="ReferenceSources\AutoWebProxyScriptEngine.cs" />\r
<Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
<Compile Include="ReferenceSources\CAPI.cs" />\r
<Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
<Compile Include="ReferenceSources\Internal.cs" />\r
<Compile Include="ReferenceSources\Logging.cs" />\r
<Compile Include="ReferenceSources\NativeMethods.cs" />\r
+ <Compile Include="ReferenceSources\RequestCacheProtocol.cs" />\r
<Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
<Compile Include="ReferenceSources\Socket.cs" />\r
<Compile Include="ReferenceSources\SR.cs" />\r
<Compile Include="ReferenceSources\SSPIConfiguration.cs" />\r
<Compile Include="ReferenceSources\SSPISafeHandles.cs" />\r
<Compile Include="ReferenceSources\SSPIWrapper.cs" />\r
- <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
<Compile Include="ReferenceSources\Win32Exception.cs" />\r
<Compile Include="System.CodeDom.Compiler\CodeCompiler.cs" />\r
<Compile Include="System.CodeDom.Compiler\CodeDomConfigurationHandler.cs" />\r
<Compile Include="System.Net\BindIPEndPoint.cs" />\r
<Compile Include="System.Net\ChunkedInputStream.cs" />\r
<Compile Include="System.Net\ChunkStream.cs" />\r
- <Compile Include="System.Net\CredentialCache.cs" />\r
<Compile Include="System.Net\DecompressionMethods.cs" />\r
<Compile Include="System.Net\DefaultCertificatePolicy.cs" />\r
<Compile Include="System.Net\DigestClient.cs" />\r
<Compile Include="System.Net\FtpStatus.cs" />\r
<Compile Include="System.Net\FtpWebRequest.cs" />\r
<Compile Include="System.Net\FtpWebResponse.cs" />\r
- <Compile Include="System.Net\GlobalProxySelection.cs" />\r
<Compile Include="System.Net\HttpConnection.cs" />\r
<Compile Include="System.Net\HttpListener.cs" />\r
<Compile Include="System.Net\HttpListenerBasicIdentity.cs" />\r
<Compile Include="System.Net\WebConnectionData.cs" />\r
<Compile Include="System.Net\WebConnectionGroup.cs" />\r
<Compile Include="System.Net\WebConnectionStream.cs" />\r
- <Compile Include="System.Net\WebProxy.cs" />\r
- <Compile Include="System.Net\WebRequest.cs" />\r
<Compile Include="System.Runtime.InteropServices.ComTypes\ADVF.cs" />\r
<Compile Include="System.Runtime.InteropServices.ComTypes\DATADIR.cs" />\r
<Compile Include="System.Runtime.InteropServices.ComTypes\DVASPECT.cs" />\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<DebugType>full</DebugType>\r
<NoWarn>1699,618</NoWarn>\r
<Optimize>false</Optimize>\r
- <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;CONFIGURATION_DEP</DefineConstants>\r
+ <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;CONFIGURATION_DEP</DefineConstants>\r
<ErrorReport>prompt</ErrorReport>\r
<WarningLevel>4</WarningLevel>\r
</PropertyGroup>\r
<DebugType>pdbonly</DebugType>\r
<NoWarn>1699,618</NoWarn>\r
<Optimize>true</Optimize>\r
- <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;CONFIGURATION_DEP</DefineConstants>\r
+ <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS;CONFIGURATION_DEP</DefineConstants>\r
<ErrorReport>prompt</ErrorReport>\r
<WarningLevel>4</WarningLevel>\r
</PropertyGroup>\r
<Compile Include="..\referencesource\System\net\System\IriHelper.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_BufferOffsetSize.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_Connection.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_emptywebproxy.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_HeaderInfo.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_HeaderInfoTable.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_HTTPDateParse.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_NetRes.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_ProxyChain.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_TimerThread.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_WebProxyDataBuilder.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\AuthenticationScheme.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\AuthenticationSchemeSelector.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\Authorization.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCache.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheEntry.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheManager.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCachePolicy.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Configuration\DefaultProxySection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookie.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookiecollection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookieexception.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\CredentialCache.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\DnsEndPoint.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\EndPoint.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\filewebrequest.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\filewebresponse.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\FtpStatusCode.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\GlobalProxySelection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\HttpListenerException.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\HttpListenerRequestUriBuilder.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\HttpRequestHeader.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\IPEndPoint.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\IPHostEntry.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\iwebproxy.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\IWebProxyFinder.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\IWebRequestCreate.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\mail\Base64Stream.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\mail\Base64WriteStateInfo.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebExceptionStatus.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebHeaderCollection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebPermission.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\webproxy.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\WebRequest.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebRequestMethods.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebResponse.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebUtility.cs" />\r
<Compile Include="ReferenceSources\_SslState.cs" />\r
<Compile Include="ReferenceSources\_SslStream.cs" />\r
<Compile Include="ReferenceSources\AssertWrapper.cs" />\r
+ <Compile Include="ReferenceSources\AutoWebProxyScriptEngine.cs" />\r
<Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
<Compile Include="ReferenceSources\CAPI.cs" />\r
<Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
<Compile Include="ReferenceSources\Internal.cs" />\r
<Compile Include="ReferenceSources\Logging.cs" />\r
<Compile Include="ReferenceSources\NativeMethods.cs" />\r
+ <Compile Include="ReferenceSources\RequestCacheProtocol.cs" />\r
<Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
<Compile Include="ReferenceSources\Socket.cs" />\r
<Compile Include="ReferenceSources\SR.cs" />\r
<Compile Include="ReferenceSources\SSPIConfiguration.cs" />\r
<Compile Include="ReferenceSources\SSPISafeHandles.cs" />\r
<Compile Include="ReferenceSources\SSPIWrapper.cs" />\r
- <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
<Compile Include="ReferenceSources\Win32Exception.cs" />\r
<Compile Include="System.CodeDom.Compiler\CodeCompiler.cs" />\r
<Compile Include="System.CodeDom.Compiler\CodeDomConfigurationHandler.cs" />\r
<Compile Include="System.Net\BindIPEndPoint.cs" />\r
<Compile Include="System.Net\ChunkedInputStream.cs" />\r
<Compile Include="System.Net\ChunkStream.cs" />\r
- <Compile Include="System.Net\CredentialCache.cs" />\r
<Compile Include="System.Net\DecompressionMethods.cs" />\r
<Compile Include="System.Net\DefaultCertificatePolicy.cs" />\r
<Compile Include="System.Net\DigestClient.cs" />\r
<Compile Include="System.Net\FtpStatus.cs" />\r
<Compile Include="System.Net\FtpWebRequest.cs" />\r
<Compile Include="System.Net\FtpWebResponse.cs" />\r
- <Compile Include="System.Net\GlobalProxySelection.cs" />\r
<Compile Include="System.Net\HttpConnection.cs" />\r
<Compile Include="System.Net\HttpListener.cs" />\r
<Compile Include="System.Net\HttpListenerBasicIdentity.cs" />\r
<Compile Include="System.Net\WebConnectionData.cs" />\r
<Compile Include="System.Net\WebConnectionGroup.cs" />\r
<Compile Include="System.Net\WebConnectionStream.cs" />\r
- <Compile Include="System.Net\WebProxy.cs" />\r
- <Compile Include="System.Net\WebRequest.cs" />\r
<Compile Include="System.Runtime.InteropServices.ComTypes\ADVF.cs" />\r
<Compile Include="System.Runtime.InteropServices.ComTypes\DATADIR.cs" />\r
<Compile Include="System.Runtime.InteropServices.ComTypes\DVASPECT.cs" />\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<DebugType>full</DebugType>\r
<NoWarn>1699,618</NoWarn>\r
<Optimize>false</Optimize>\r
- <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS</DefineConstants>\r
+ <DefineConstants>TRACE;NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS</DefineConstants>\r
<ErrorReport>prompt</ErrorReport>\r
<WarningLevel>4</WarningLevel>\r
</PropertyGroup>\r
<DebugType>pdbonly</DebugType>\r
<NoWarn>1699,618</NoWarn>\r
<Optimize>true</Optimize>\r
- <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS</DefineConstants>\r
+ <DefineConstants>NET_4_0;NET_4_5;NET_4_6;MONO;DISABLE_CAS_USE;CONFIGURATION_2_0;FEATURE_PAL;SYSTEM_NAMESPACE;MONO;PLATFORM_UNIX;MONO_FEATURE_PROCESS_START;MONO_FEATURE_THREAD_ABORT;MONO_FEATURE_THREAD_SUSPEND_RESUME;MONO_FEATURE_MULTIPLE_APPDOMAINS;SECURITY_DEP;XML_DEP;MONO_SECURITY_ALIAS</DefineConstants>\r
<ErrorReport>prompt</ErrorReport>\r
<WarningLevel>4</WarningLevel>\r
</PropertyGroup>\r
<Compile Include="..\referencesource\System\net\System\IriHelper.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_BufferOffsetSize.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_Connection.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_emptywebproxy.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_HeaderInfo.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_HeaderInfoTable.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_HTTPDateParse.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_LazyAsyncResult.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_LoggingObject.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_NetRes.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_ProxyChain.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\_ScatterGatherBuffers.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_TimerThread.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\_WebProxyDataBuilder.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\AuthenticationScheme.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\AuthenticationSchemeSelector.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\Authorization.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCache.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheEntry.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCacheManager.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\Cache\RequestCachePolicy.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\Configuration\DefaultProxySection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookie.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookiecollection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookiecontainer.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\cookieexception.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\CredentialCache.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\DnsEndPoint.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\EndPoint.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\filewebrequest.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\filewebresponse.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\FtpStatusCode.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\GlobalProxySelection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\HttpListenerException.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\HttpListenerRequestUriBuilder.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\HttpRequestHeader.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\IPEndPoint.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\IPHostEntry.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\iwebproxy.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\IWebProxyFinder.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\IWebRequestCreate.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\mail\Base64Stream.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\mail\Base64WriteStateInfo.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebExceptionStatus.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebHeaderCollection.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebPermission.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\webproxy.cs" />\r
+ <Compile Include="..\referencesource\System\net\System\Net\WebRequest.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebRequestMethods.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebResponse.cs" />\r
<Compile Include="..\referencesource\System\net\System\Net\WebUtility.cs" />\r
<Compile Include="ReferenceSources\_SslState.cs" />\r
<Compile Include="ReferenceSources\_SslStream.cs" />\r
<Compile Include="ReferenceSources\AssertWrapper.cs" />\r
+ <Compile Include="ReferenceSources\AutoWebProxyScriptEngine.cs" />\r
<Compile Include="ReferenceSources\BinaryCompatibility.cs" />\r
<Compile Include="ReferenceSources\CAPI.cs" />\r
<Compile Include="ReferenceSources\ConfigurationManagerInternalFactory.cs" />\r
<Compile Include="ReferenceSources\Internal.cs" />\r
<Compile Include="ReferenceSources\Logging.cs" />\r
<Compile Include="ReferenceSources\NativeMethods.cs" />\r
+ <Compile Include="ReferenceSources\RequestCacheProtocol.cs" />\r
<Compile Include="ReferenceSources\SettingsSectionInternal.cs" />\r
<Compile Include="ReferenceSources\Socket.cs" />\r
<Compile Include="ReferenceSources\SR.cs" />\r
<Compile Include="ReferenceSources\SSPIConfiguration.cs" />\r
<Compile Include="ReferenceSources\SSPISafeHandles.cs" />\r
<Compile Include="ReferenceSources\SSPIWrapper.cs" />\r
- <Compile Include="ReferenceSources\SystemNetworkCredential.cs" />\r
<Compile Include="ReferenceSources\Win32Exception.cs" />\r
<Compile Include="System.CodeDom.Compiler\CodeCompiler.cs" />\r
<Compile Include="System.CodeDom.Compiler\CodeDomConfigurationHandler.cs" />\r
<Compile Include="System.Net\BindIPEndPoint.cs" />\r
<Compile Include="System.Net\ChunkedInputStream.cs" />\r
<Compile Include="System.Net\ChunkStream.cs" />\r
- <Compile Include="System.Net\CredentialCache.cs" />\r
<Compile Include="System.Net\DecompressionMethods.cs" />\r
<Compile Include="System.Net\DefaultCertificatePolicy.cs" />\r
<Compile Include="System.Net\DigestClient.cs" />\r
<Compile Include="System.Net\FtpStatus.cs" />\r
<Compile Include="System.Net\FtpWebRequest.cs" />\r
<Compile Include="System.Net\FtpWebResponse.cs" />\r
- <Compile Include="System.Net\GlobalProxySelection.cs" />\r
<Compile Include="System.Net\HttpConnection.cs" />\r
<Compile Include="System.Net\HttpListener.cs" />\r
<Compile Include="System.Net\HttpListenerBasicIdentity.cs" />\r
<Compile Include="System.Net\WebConnectionData.cs" />\r
<Compile Include="System.Net\WebConnectionGroup.cs" />\r
<Compile Include="System.Net\WebConnectionStream.cs" />\r
- <Compile Include="System.Net\WebProxy.cs" />\r
- <Compile Include="System.Net\WebRequest.cs" />\r
<Compile Include="System.Runtime.InteropServices.ComTypes\ADVF.cs" />\r
<Compile Include="System.Runtime.InteropServices.ComTypes\DATADIR.cs" />\r
<Compile Include="System.Runtime.InteropServices.ComTypes\DVASPECT.cs" />\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
{
public virtual object Create (object parent, object configContext, XmlNode section)
{
-#if (XML_DEP)
+#if XML_DEP
if (section.Attributes != null && section.Attributes.Count != 0)
HandlersUtil.ThrowException ("Unrecognized attribute", section);
if (child.Attributes != null && child.Attributes.Count != 0)
HandlersUtil.ThrowException ("Unrecognized attribute", child);
- WebRequest.ClearPrefixes ();
+ WebRequest.PrefixList = new ArrayList ();
continue;
}
if (child.Attributes != null && child.Attributes.Count != 0)
HandlersUtil.ThrowException ("Unrecognized attribute", child);
- WebRequest.AddPrefix (prefix, type);
- continue;
+ throw new NotImplementedException ();
+ //WebRequest.PrefixList.Add (new WebRequestPrefixElement(prefix, type));
+ //continue;
}
if (name == "remove") {
if (child.Attributes != null && child.Attributes.Count != 0)
HandlersUtil.ThrowException ("Unrecognized attribute", child);
- WebRequest.RemovePrefix (prefix);
- continue;
+ throw new NotImplementedException ();
+ // WebRequest.RemovePrefix (prefix);
+ // continue;
}
HandlersUtil.ThrowException ("Unexpected element", child);
[StructLayout (LayoutKind.Sequential)]
class Win32_FIXED_INFO
{
+ // Can't have unresolvable pinvokes on ios
+#if !MOBILE
[DllImport ("iphlpapi.dll", SetLastError = true)]
static extern int GetNetworkParams (byte [] bytes, ref int size);
+#endif
static Win32_FIXED_INFO fixed_info;
static Win32_FIXED_INFO GetInstance ()
{
+#if !MOBILE
int len = 0;
byte [] bytes = null;
GetNetworkParams (null, ref len);
}
}
return info;
+#else
+ throw new NotImplementedException ();
+#endif
}
const int MAX_HOSTNAME_LEN = 128;
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-#if SECURITY_DEP && !MONO_FEATURE_NEW_TLS
+#if !MONO_FEATURE_NEW_TLS
namespace System.Net.Security
{
public enum EncryptionPolicy
+++ /dev/null
-//
-// System.Net.CredentialCache.cs
-//
-// Author:
-// Lawrence Pit (loz@cable.a2000.nl)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Runtime.Serialization;
-
-namespace System.Net {
- public class CredentialCache : ICredentials, IEnumerable, ICredentialsByHost
- {
- static NetworkCredential empty = new NetworkCredential (String.Empty, String.Empty, String.Empty);
- Hashtable cache;
- Hashtable cacheForHost;
-
- public CredentialCache ()
- {
- cache = new Hashtable ();
- cacheForHost = new Hashtable ();
- }
-
- [MonoTODO ("Need EnvironmentPermission implementation first")]
- public static ICredentials DefaultCredentials {
- get {
- // This is used for NTLM, Kerberos and Negotiate under MS
- return empty;
- }
- }
-
- // MS does might return a special ICredentials which does not allow getting the
- // username/password information out of it for non-internal classes.
- public static NetworkCredential DefaultNetworkCredentials {
- get { return empty; }
- }
-
- public NetworkCredential GetCredential (Uri uriPrefix, string authType)
- {
- int longestPrefix = -1;
- NetworkCredential result = null;
-
- if (uriPrefix == null || authType == null)
- return null;
-
- string absPath = uriPrefix.AbsolutePath;
- absPath = absPath.Substring (0, absPath.LastIndexOf ('/'));
-
- IDictionaryEnumerator e = cache.GetEnumerator ();
- while (e.MoveNext ()) {
- CredentialCacheKey key = e.Key as CredentialCacheKey;
-
- if (key.Length <= longestPrefix)
- continue;
-
- if (String.Compare (key.AuthType, authType, true) != 0)
- continue;
-
- Uri cachedUri = key.UriPrefix;
-
- if (cachedUri.Scheme != uriPrefix.Scheme)
- continue;
-
- if (cachedUri.Port != uriPrefix.Port)
- continue;
-
- if (cachedUri.Host != uriPrefix.Host)
- continue;
-
- if (!absPath.StartsWith (key.AbsPath))
- continue;
-
- longestPrefix = key.Length;
- result = (NetworkCredential) e.Value;
- }
-
- return result;
- }
-
- public IEnumerator GetEnumerator ()
- {
- return cache.Values.GetEnumerator ();
- }
-
- public void Add (Uri uriPrefix, string authType, NetworkCredential cred)
- {
- if (uriPrefix == null)
- throw new ArgumentNullException ("uriPrefix");
-
- if (authType == null)
- throw new ArgumentNullException ("authType");
-
- // throws ArgumentException when same key already exists.
- cache.Add (new CredentialCacheKey (uriPrefix, authType), cred);
- }
-
- public void Remove (Uri uriPrefix, string authType)
- {
- if (uriPrefix == null)
- throw new ArgumentNullException ("uriPrefix");
-
- if (authType == null)
- throw new ArgumentNullException ("authType");
-
- cache.Remove (new CredentialCacheKey (uriPrefix, authType));
- }
-
- public NetworkCredential GetCredential (string host, int port, string authenticationType)
- {
- NetworkCredential result = null;
-
- if (host == null || port < 0 || authenticationType == null)
- return null;
-
- IDictionaryEnumerator e = cacheForHost.GetEnumerator ();
- while (e.MoveNext ()) {
- CredentialCacheForHostKey key = e.Key as CredentialCacheForHostKey;
-
- if (String.Compare (key.AuthType, authenticationType, true) != 0)
- continue;
-
- if (key.Host != host)
- continue;
-
- if (key.Port != port)
- continue;
-
- result = (NetworkCredential) e.Value;
- }
-
- return result;
- }
-
- public void Add (string host, int port, string authenticationType, NetworkCredential credential)
- {
- if (host == null)
- throw new ArgumentNullException("host");
-
- if (port < 0)
- throw new ArgumentOutOfRangeException("port");
-
- if (authenticationType == null)
- throw new ArgumentOutOfRangeException("authenticationType");
-
- cacheForHost.Add (new CredentialCacheForHostKey (host, port, authenticationType), credential);
- }
-
- public void Remove (string host, int port, string authenticationType)
- {
- if (host == null)
- return;
-
- if (authenticationType == null)
- return;
-
- cacheForHost.Remove (new CredentialCacheForHostKey (host, port, authenticationType));
- }
-
- class CredentialCacheKey {
- Uri uriPrefix;
- string authType;
- string absPath;
- int len;
- int hash;
-
- internal CredentialCacheKey (Uri uriPrefix, string authType)
- {
- this.uriPrefix = uriPrefix;
- this.authType = authType;
-
- this.absPath = uriPrefix.AbsolutePath;
- this.absPath = absPath.Substring (0, absPath.LastIndexOf ('/'));
-
- this.len = uriPrefix.AbsoluteUri.Length;
- this.hash = uriPrefix.GetHashCode ()
- + authType.GetHashCode ();
- }
-
- public int Length {
- get { return len; }
- }
-
- public string AbsPath {
- get { return absPath; }
- }
-
- public Uri UriPrefix {
- get { return uriPrefix; }
- }
-
- public string AuthType {
- get { return authType; }
- }
-
- public override int GetHashCode ()
- {
- return hash;
- }
-
- public override bool Equals (object obj)
- {
- CredentialCacheKey key = obj as CredentialCacheKey;
- return ((key != null) && (this.hash == key.hash));
- }
-
- public override string ToString ()
- {
- return absPath + " : " + authType + " : len=" + len;
- }
- }
-
- class CredentialCacheForHostKey {
- string host;
- int port;
- string authType;
- int hash;
-
- internal CredentialCacheForHostKey (string host, int port, string authType)
- {
- this.host = host;
- this.port = port;
- this.authType = authType;
-
- this.hash = host.GetHashCode ()
- + port.GetHashCode ()
- + authType.GetHashCode ();
- }
-
- public string Host {
- get { return host; }
- }
-
- public int Port {
- get { return port; }
- }
-
- public string AuthType {
- get { return authType; }
- }
-
- public override int GetHashCode ()
- {
- return hash;
- }
-
- public override bool Equals (object obj)
- {
- CredentialCacheForHostKey key = obj as CredentialCacheForHostKey;
- return ((key != null) && (this.hash == key.hash));
- }
-
- public override string ToString ()
- {
- return host + " : " + authType;
- }
- }
-}
-}
-
-
SocketAsyncEventArgs args = new SocketAsyncEventArgs ();
args.UserToken = this;
args.Completed += OnAccept;
- Accept (sock, args);
+ Socket dummy = null;
+ Accept (sock, args, ref dummy);
prefixes = new Hashtable ();
unregistered = new Dictionary<HttpConnection, HttpConnection> ();
}
get { return listener; }
}
- static void Accept (Socket socket, SocketAsyncEventArgs e) {
+ static void Accept (Socket socket, SocketAsyncEventArgs e, ref Socket accepted) {
e.AcceptSocket = null;
- var asyn = socket.AcceptAsync(e);
+ bool asyn;
+ try {
+ asyn = socket.AcceptAsync(e);
+ } catch {
+ if (accepted != null) {
+ try {
+ accepted.Close ();
+ } catch {
+ }
+ accepted = null;
+ }
+ return;
+ }
if (!asyn) {
ProcessAccept(e);
}
EndPointListener epl = (EndPointListener) args.UserToken;
- Accept (epl.sock, args);
+ Accept (epl.sock, args, ref accepted);
if (accepted == null)
return;
+++ /dev/null
-//
-// System.Net.GlobalProxySelection
-//
-// Author:
-// Lawrence Pit (loz@cable.a2000.nl)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Configuration;
-using System.IO;
-using System.Runtime.Serialization;
-using System.Net.Configuration;
-
-namespace System.Net
-{
- [ObsoleteAttribute("Use WebRequest.DefaultProxy instead")]
- public class GlobalProxySelection
- {
- // Constructors
- public GlobalProxySelection() { }
-
- // Properties
-
- public static IWebProxy Select {
- get { return WebRequest.DefaultWebProxy; }
- set { WebRequest.DefaultWebProxy = value; }
- }
-
- // Methods
-
- public static IWebProxy GetEmptyWebProxy()
- {
- // must return a new one each time, as the credentials
- // can be set
- return new EmptyWebProxy ();
- }
-
- // Internal Classes
-
- internal class EmptyWebProxy : IWebProxy {
- private ICredentials credentials = null;
-
- internal EmptyWebProxy () { }
-
- public ICredentials Credentials {
- get { return credentials; }
- set { credentials = value; }
- }
-
- public Uri GetProxy (Uri destination)
- {
- return destination;
- }
-
- public bool IsBypassed (Uri host)
- {
- return true; // pass directly to host
- }
- }
- }
-}
{
this.requestUri = uri;
this.actualUri = uri;
- this.proxy = GlobalProxySelection.Select;
+ this.proxy = InternalDefaultWebProxy;
this.webHeaders = new WebHeaderCollection (WebHeaderCollectionType.HttpWebRequest);
ThrowOnError = true;
ResetAuthorization ();
if (wce != null) {
WebConnection cnc = wce.Connection;
cnc.PriorityRequest = this;
- ICredentials creds = !isProxy ? credentials : proxy.Credentials;
+ ICredentials creds = (!isProxy || proxy == null) ? credentials : proxy.Credentials;
if (creds != null) {
cnc.NtlmCredential = creds.GetCredential (requestUri, "NTLM");
cnc.UnsafeAuthenticatedConnectionSharing = unsafe_auth_blah;
return;
}
- bool isProxy = ProxyQuery && !proxy.IsBypassed (actualUri);
+ bool isProxy = ProxyQuery && proxy != null && !proxy.IsBypassed (actualUri);
bool redirected;
try {
return true;
}
}
+
+ internal Socket GetConnection(PooledStream PooledStream, object owner, bool async, out IPAddress address, ref Socket abortSocket, ref Socket abortSocket6)
+ {
+ throw new NotImplementedException ();
+ }
}
}
public static ServicePoint FindServicePoint (Uri address)
{
- return FindServicePoint (address, GlobalProxySelection.Select);
+ return FindServicePoint (address, null);
}
public static ServicePoint FindServicePoint (string uriString, IWebProxy proxy)
// Copyright 2013-2014 Xamarin Inc.
//
+#if MOBILE
+
using System;
using System.Collections.Generic;
public static CipherSuitesCallback ServerCipherSuitesCallback { get; set; }
}
}
+
+#endif
+++ /dev/null
-//
-// System.Net.WebProxy.cs
-//
-// Authors:
-// Lawrence Pit (loz@cable.a2000.nl)
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.Runtime.Serialization;
-using System.Text.RegularExpressions;
-
-namespace System.Net
-{
- [Serializable]
- public class WebProxy : IWebProxy, ISerializable
- {
- Uri address;
- bool bypassOnLocal;
- ArrayList bypassList;
- ICredentials credentials;
- bool useDefaultCredentials;
-
- // Constructors
-
- public WebProxy ()
- : this ((Uri) null, false, null, null) {}
-
- public WebProxy (string address)
- : this (ToUri (address), false, null, null) {}
-
- public WebProxy (Uri address)
- : this (address, false, null, null) {}
-
- public WebProxy (string address, bool bypassOnLocal)
- : this (ToUri (address), bypassOnLocal, null, null) {}
-
- public WebProxy (string host, int port)
- : this (new Uri ("http://" + host + ":" + port)) {}
-
- public WebProxy (Uri address, bool bypassOnLocal)
- : this (address, bypassOnLocal, null, null) {}
-
- public WebProxy (string address, bool bypassOnLocal, string [] bypassList)
- : this (ToUri (address), bypassOnLocal, bypassList, null) {}
-
- public WebProxy (Uri address, bool bypassOnLocal, string [] bypassList)
- : this (address, bypassOnLocal, bypassList, null) {}
-
- public WebProxy (string address, bool bypassOnLocal, string [] bypassList,
- ICredentials credentials)
- : this (ToUri (address), bypassOnLocal, bypassList, credentials) {}
-
- public WebProxy (Uri address, bool bypassOnLocal,
- string[] bypassList, ICredentials credentials)
- {
- this.address = address;
- this.bypassOnLocal = bypassOnLocal;
- if (bypassList != null)
- this.bypassList = new ArrayList (bypassList);
- this.credentials = credentials;
- CheckBypassList ();
- }
-
- protected WebProxy (SerializationInfo serializationInfo, StreamingContext streamingContext)
- {
- this.address = (Uri) serializationInfo.GetValue ("_ProxyAddress", typeof (Uri));
- this.bypassOnLocal = serializationInfo.GetBoolean ("_BypassOnLocal");
- this.bypassList = (ArrayList) serializationInfo.GetValue ("_BypassList", typeof (ArrayList));
- this.useDefaultCredentials = serializationInfo.GetBoolean ("_UseDefaultCredentials");
- this.credentials = null;
- CheckBypassList ();
- }
-
- // Properties
- public Uri Address {
- get { return address; }
- set { address = value; }
- }
-
- public ArrayList BypassArrayList {
- get {
- if (bypassList == null)
- bypassList = new ArrayList ();
- return bypassList;
- }
- }
-
- public string [] BypassList {
- get { return (string []) BypassArrayList.ToArray (typeof (string)); }
- set {
- if (value == null)
- throw new ArgumentNullException ();
- bypassList = new ArrayList (value);
- CheckBypassList ();
- }
- }
-
- public bool BypassProxyOnLocal {
- get { return bypassOnLocal; }
- set { bypassOnLocal = value; }
- }
-
- public ICredentials Credentials {
- get { return credentials; }
- set { credentials = value; }
- }
-
- [MonoTODO ("Does not affect Credentials, since CredentialCache.DefaultCredentials is not implemented.")]
- public bool UseDefaultCredentials {
- get { return useDefaultCredentials; }
- set { useDefaultCredentials = value; }
- }
-
- // Methods
- [Obsolete ("This method has been deprecated", false)]
- [MonoTODO("Can we get this info under windows from the system?")]
- public static WebProxy GetDefaultProxy ()
- {
- // Select gets a WebProxy from config files, if available.
- IWebProxy p = GlobalProxySelection.Select;
- if (p is WebProxy)
- return (WebProxy) p;
-
- return new WebProxy ();
- }
-
- public Uri GetProxy (Uri destination)
- {
- if (IsBypassed (destination))
- return destination;
-
- return address;
- }
-
- public bool IsBypassed (Uri host)
- {
- if (host == null)
- throw new ArgumentNullException ("host");
-
- if (host.IsLoopback && bypassOnLocal)
- return true;
-
- if (address == null)
- return true;
-
- string server = host.Host;
- if (bypassOnLocal && server.IndexOf ('.') == -1)
- return true;
-
- // LAMESPEC
- if (!bypassOnLocal) {
- if (String.Compare (server, "localhost", true, CultureInfo.InvariantCulture) == 0)
- return true;
- if (String.Compare (server, "loopback", true, CultureInfo.InvariantCulture) == 0)
- return true;
-
- IPAddress addr = null;
- if (IPAddress.TryParse (server, out addr) && IPAddress.IsLoopback (addr))
- return true;
- }
-
- if (bypassList == null || bypassList.Count == 0)
- return false;
-
- try {
- string hostStr = host.Scheme + "://" + host.Authority;
- int i = 0;
- for (; i < bypassList.Count; i++) {
- Regex regex = new Regex ((string) bypassList [i],
- // TODO: RegexOptions.Compiled | // not implemented yet by Regex
- RegexOptions.IgnoreCase |
- RegexOptions.Singleline);
-
- if (regex.IsMatch (hostStr))
- break;
- }
-
- if (i == bypassList.Count)
- return false;
-
- // continue checking correctness of regular expressions..
- // will throw expression when an invalid one is found
- for (; i < bypassList.Count; i++)
- new Regex ((string) bypassList [i]);
-
- return true;
- } catch (ArgumentException) {
- return false;
- }
- }
-
- protected virtual void GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
- {
- serializationInfo.AddValue ("_BypassOnLocal", bypassOnLocal);
- serializationInfo.AddValue ("_ProxyAddress", address);
- serializationInfo.AddValue ("_BypassList", bypassList);
- serializationInfo.AddValue ("_UseDefaultCredentials", UseDefaultCredentials);
- }
-
- void ISerializable.GetObjectData (SerializationInfo serializationInfo,
- StreamingContext streamingContext)
- {
- GetObjectData (serializationInfo, streamingContext);
- }
-
- // Private Methods
- // this compiles the regular expressions, and will throw
- // an exception when an invalid one is found.
- void CheckBypassList ()
- {
- if (bypassList == null)
- return;
- for (int i = 0; i < bypassList.Count; i++)
- new Regex ((string) bypassList [i]);
- }
-
- static Uri ToUri (string address)
- {
- if (address == null)
- return null;
-
- if (address.IndexOf ("://", StringComparison.Ordinal) == -1)
- address = "http://" + address;
-
- return new Uri (address);
- }
- }
-}
+++ /dev/null
-//
-// System.Net.WebRequest
-//
-// Authors:
-// Lawrence Pit (loz@cable.a2000.nl)
-// Marek Safar (marek.safar@gmail.com)
-//
-// Copyright 2011 Xamarin Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.Configuration;
-using System.IO;
-using System.Reflection;
-using System.Runtime.Serialization;
-using System.Globalization;
-using System.Net.Configuration;
-using System.Net.Security;
-using System.Net.Cache;
-using System.Security.Principal;
-using System.Threading.Tasks;
-using System.Text.RegularExpressions;
-using Mono.Net;
-
-#if NET_2_1
-using ConfigurationException = System.ArgumentException;
-
-namespace System.Net.Configuration {
- class Dummy {}
-}
-#endif
-
-namespace System.Net
-{
- [Serializable]
- public abstract class WebRequest : MarshalByRefObject, ISerializable {
- static HybridDictionary prefixes = new HybridDictionary ();
- static bool isDefaultWebProxySet;
- static IWebProxy defaultWebProxy;
- static RequestCachePolicy defaultCachePolicy;
-
- internal const int DefaultTimeout = 100000;
-
- static WebRequest ()
- {
-#if MOBILE
- IWebRequestCreate http = new HttpRequestCreator ();
- RegisterPrefix ("http", http);
- RegisterPrefix ("https", http);
- RegisterPrefix ("file", new FileWebRequestCreator ());
- RegisterPrefix ("ftp", new FtpRequestCreator ());
-#else
- #if CONFIGURATION_DEP
- object cfg = ConfigurationManager.GetSection ("system.net/webRequestModules");
- WebRequestModulesSection s = cfg as WebRequestModulesSection;
- if (s != null) {
- foreach (WebRequestModuleElement el in
- s.WebRequestModules)
- AddPrefix (el.Prefix, el.Type);
- return;
- }
- #endif
- ConfigurationSettings.GetConfig ("system.net/webRequestModules");
-#endif
- }
-
- protected WebRequest ()
- {
- }
-
- protected WebRequest (SerializationInfo serializationInfo, StreamingContext streamingContext)
- {
- }
-
- static Exception GetMustImplement ()
- {
- return new NotImplementedException ("This method must be implemented in derived classes");
- }
-
- // Properties
-
- private AuthenticationLevel authentication_level = AuthenticationLevel.MutualAuthRequested;
-
- public AuthenticationLevel AuthenticationLevel
- {
- get {
- return(authentication_level);
- }
- set {
- authentication_level = value;
- }
- }
-
- public virtual string ConnectionGroupName {
- get { throw GetMustImplement (); }
- set { throw GetMustImplement (); }
- }
-
- public virtual long ContentLength {
- get { throw GetMustImplement (); }
- set { throw GetMustImplement (); }
- }
-
- public virtual string ContentType {
- get { throw GetMustImplement (); }
- set { throw GetMustImplement (); }
- }
-
- public virtual ICredentials Credentials {
- get { throw GetMustImplement (); }
- set { throw GetMustImplement (); }
- }
-
- [MonoTODO ("Implement the caching system. Currently always returns a policy with the NoCacheNoStore level")]
- public virtual RequestCachePolicy CachePolicy
- {
- get { return DefaultCachePolicy; }
- set {
- }
- }
-
- public static RequestCachePolicy DefaultCachePolicy {
- get {
- return defaultCachePolicy ?? (defaultCachePolicy = new HttpRequestCachePolicy (HttpRequestCacheLevel.NoCacheNoStore));
- }
- set {
- throw GetMustImplement ();
- }
- }
-
- public virtual WebHeaderCollection Headers {
- get { throw GetMustImplement (); }
- set { throw GetMustImplement (); }
- }
-
-
- public virtual string Method {
- get { throw GetMustImplement (); }
- set { throw GetMustImplement (); }
- }
-
- public virtual bool PreAuthenticate {
- get { throw GetMustImplement (); }
- set { throw GetMustImplement (); }
- }
-
- public virtual IWebProxy Proxy {
- get { throw GetMustImplement (); }
- set { throw GetMustImplement (); }
- }
-
- public virtual Uri RequestUri {
- get { throw GetMustImplement (); }
- }
-
- public virtual int Timeout {
- get { throw GetMustImplement (); }
- set { throw GetMustImplement (); }
- }
-
- public virtual bool UseDefaultCredentials
- {
- get {
- throw GetMustImplement ();
- }
- set {
- throw GetMustImplement ();
- }
- }
-
- public TokenImpersonationLevel ImpersonationLevel { get; set; }
-
-// volatile static IWebProxy proxy;
- static readonly object lockobj = new object ();
-
- public static IWebProxy DefaultWebProxy {
- get {
- if (!isDefaultWebProxySet) {
- lock (lockobj) {
- if (defaultWebProxy == null)
- defaultWebProxy = GetDefaultWebProxy ();
- }
- }
- return defaultWebProxy;
- }
- set {
- /* MS documentation states that a null value would cause an ArgumentNullException
- * but that's not the way it behaves:
- * https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=304724
- */
- defaultWebProxy = value;
- isDefaultWebProxySet = true;
- }
- }
-
- internal static IWebProxy InternalDefaultWebProxy {
- get {
- return DefaultWebProxy;
- }
- }
-
-
- [MonoTODO("Needs to respect Module, Proxy.AutoDetect, and Proxy.ScriptLocation config settings")]
- static IWebProxy GetDefaultWebProxy ()
- {
-#if CONFIGURATION_DEP
- DefaultProxySection sec = ConfigurationManager.GetSection ("system.net/defaultProxy") as DefaultProxySection;
- WebProxy p;
-
- if (sec == null)
- return GetSystemWebProxy ();
-
- ProxyElement pe = sec.Proxy;
-
- if ((pe.UseSystemDefault != ProxyElement.UseSystemDefaultValues.False) && (pe.ProxyAddress == null)) {
- IWebProxy proxy = GetSystemWebProxy ();
-
- if (!(proxy is WebProxy))
- return proxy;
-
- p = (WebProxy) proxy;
- } else
- p = new WebProxy ();
-
- if (pe.ProxyAddress != null)
- p.Address = pe.ProxyAddress;
-
- if (pe.BypassOnLocal != ProxyElement.BypassOnLocalValues.Unspecified)
- p.BypassProxyOnLocal = (pe.BypassOnLocal == ProxyElement.BypassOnLocalValues.True);
-
- foreach(BypassElement elem in sec.BypassList)
- p.BypassArrayList.Add(elem.Address);
-
- return p;
-#else
- return GetSystemWebProxy ();
-#endif
- }
-
- // Methods
-
- public virtual void Abort()
- {
- throw GetMustImplement ();
- }
-
- public virtual IAsyncResult BeginGetRequestStream (AsyncCallback callback, object state)
- {
- throw GetMustImplement ();
- }
-
- public virtual IAsyncResult BeginGetResponse (AsyncCallback callback, object state)
- {
- throw GetMustImplement ();
- }
-
- public static WebRequest Create (string requestUriString)
- {
- if (requestUriString == null)
- throw new ArgumentNullException ("requestUriString");
- return Create (new Uri (requestUriString));
- }
-
- public static WebRequest Create (Uri requestUri)
- {
- if (requestUri == null)
- throw new ArgumentNullException ("requestUri");
- return GetCreator (requestUri.AbsoluteUri).Create (requestUri);
- }
-
- public static WebRequest CreateDefault (Uri requestUri)
- {
- if (requestUri == null)
- throw new ArgumentNullException ("requestUri");
- return GetCreator (requestUri.Scheme).Create (requestUri);
- }
- static HttpWebRequest SharedCreateHttp (Uri uri)
- {
- if (uri.Scheme != "http" && uri.Scheme != "https")
- throw new NotSupportedException ("The uri should start with http or https");
-
- return new HttpWebRequest (uri);
- }
-
- public static HttpWebRequest CreateHttp (string requestUriString)
- {
- if (requestUriString == null)
- throw new ArgumentNullException ("requestUriString");
- return SharedCreateHttp (new Uri (requestUriString));
- }
-
- public static HttpWebRequest CreateHttp (Uri requestUri)
- {
- if (requestUri == null)
- throw new ArgumentNullException ("requestUri");
- return SharedCreateHttp (requestUri);
- }
- public virtual Stream EndGetRequestStream (IAsyncResult asyncResult)
- {
- throw GetMustImplement ();
- }
-
- public virtual WebResponse EndGetResponse (IAsyncResult asyncResult)
- {
- throw GetMustImplement ();
- }
-
- public virtual Stream GetRequestStream()
- {
- throw GetMustImplement ();
- }
-
- public virtual WebResponse GetResponse()
- {
- throw GetMustImplement ();
- }
-
- // Takes an ArrayList of fileglob-formatted strings and returns an array of Regex-formatted strings
- private static string[] CreateBypassList (ArrayList al)
- {
- string[] result = al.ToArray (typeof (string)) as string[];
- for (int c = 0; c < result.Length; c++)
- {
- result [c] = "^" +
- Regex.Escape (result [c]).Replace (@"\*", ".*").Replace (@"\?", ".") +
- "$";
- }
- return result;
- }
-
- [MonoTODO("Look in other places for proxy config info")]
- public static IWebProxy GetSystemWebProxy ()
- {
-#if MONOTOUCH
- return CFNetwork.GetDefaultProxy ();
-#else
-#if MONODROID
- // Return the system web proxy. This only works for ICS+.
- var androidProxy = AndroidPlatform.GetDefaultProxy ();
- if (androidProxy != null)
- return androidProxy;
-#endif
-#if !NET_2_1
- if (IsWindows ()) {
- int iProxyEnable = (int)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyEnable", 0);
-
- if (iProxyEnable > 0) {
- string strHttpProxy = "";
- bool bBypassOnLocal = false;
- ArrayList al = new ArrayList ();
-
- string strProxyServer = (string)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyServer", null);
- string strProxyOverrride = (string)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyOverride", null);
-
- if (strProxyServer.Contains ("=")) {
- foreach (string strEntry in strProxyServer.Split (new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries))
- if (strEntry.StartsWith ("http=")) {
- strHttpProxy = strEntry.Substring (5);
- break;
- }
- } else strHttpProxy = strProxyServer;
-
- if (strProxyOverrride != null) {
- string[] bypassList = strProxyOverrride.Split (new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
-
- foreach (string str in bypassList) {
- if (str != "<local>")
- al.Add (str);
- else
- bBypassOnLocal = true;
- }
- }
-
- return new WebProxy (strHttpProxy, bBypassOnLocal, CreateBypassList (al));
- }
- } else {
-#endif
- if (Platform.IsMacOS)
- return CFNetwork.GetDefaultProxy ();
-
- string address = Environment.GetEnvironmentVariable ("http_proxy");
-
- if (address == null)
- address = Environment.GetEnvironmentVariable ("HTTP_PROXY");
-
- if (address != null) {
- try {
- if (!address.StartsWith ("http://"))
- address = "http://" + address;
-
- Uri uri = new Uri (address);
- IPAddress ip;
-
- if (IPAddress.TryParse (uri.Host, out ip)) {
- if (IPAddress.Any.Equals (ip)) {
- UriBuilder builder = new UriBuilder (uri);
- builder.Host = "127.0.0.1";
- uri = builder.Uri;
- } else if (IPAddress.IPv6Any.Equals (ip)) {
- UriBuilder builder = new UriBuilder (uri);
- builder.Host = "[::1]";
- uri = builder.Uri;
- }
- }
-
- bool bBypassOnLocal = false;
- ArrayList al = new ArrayList ();
- string bypass = Environment.GetEnvironmentVariable ("no_proxy");
-
- if (bypass == null)
- bypass = Environment.GetEnvironmentVariable ("NO_PROXY");
-
- if (bypass != null) {
- string[] bypassList = bypass.Split (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
-
- foreach (string str in bypassList) {
- if (str != "*.local")
- al.Add (str);
- else
- bBypassOnLocal = true;
- }
- }
-
- return new WebProxy (uri, bBypassOnLocal, CreateBypassList (al));
- } catch (UriFormatException) {
- }
- }
-#if !NET_2_1
- }
-#endif
-
- return new WebProxy ();
-#endif // MONOTOUCH
- }
-
- void ISerializable.GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
- {
- GetObjectData(serializationInfo, streamingContext);
- }
-
- protected virtual void GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
- {
- }
-
- public static bool RegisterPrefix (string prefix, IWebRequestCreate creator)
- {
- if (prefix == null)
- throw new ArgumentNullException ("prefix");
- if (creator == null)
- throw new ArgumentNullException ("creator");
-
- lock (prefixes.SyncRoot) {
- string lowerCasePrefix = prefix.ToLower (CultureInfo.InvariantCulture);
- if (prefixes.Contains (lowerCasePrefix))
- return false;
- prefixes.Add (lowerCasePrefix, creator);
- }
- return true;
- }
-
- private static IWebRequestCreate GetCreator (string prefix)
- {
- int longestPrefix = -1;
- IWebRequestCreate creator = null;
-
- prefix = prefix.ToLower (CultureInfo.InvariantCulture);
-
- IDictionaryEnumerator e = prefixes.GetEnumerator ();
- while (e.MoveNext ()) {
- string key = e.Key as string;
-
- if (key.Length <= longestPrefix)
- continue;
-
- if (!prefix.StartsWith (key))
- continue;
-
- longestPrefix = key.Length;
- creator = (IWebRequestCreate) e.Value;
- }
-
- if (creator == null)
- throw new NotSupportedException (prefix);
-
- return creator;
- }
-
- internal static bool IsWindows ()
- {
- return (int) Environment.OSVersion.Platform < 4;
- }
-
- internal static void ClearPrefixes ()
- {
- prefixes.Clear ();
- }
-
- internal static void RemovePrefix (string prefix)
- {
- prefixes.Remove (prefix);
- }
-
- internal static void AddPrefix (string prefix, string typeName)
- {
- Type type = Type.GetType (typeName);
- if (type == null)
- throw new ConfigurationException (String.Format ("Type {0} not found", typeName));
- AddPrefix (prefix, type);
- }
-
- internal static void AddPrefix (string prefix, Type type)
- {
- object o = Activator.CreateInstance (type, true);
- prefixes [prefix] = o;
- }
-
- public virtual Task<Stream> GetRequestStreamAsync ()
- {
- return Task<Stream>.Factory.FromAsync (BeginGetRequestStream, EndGetRequestStream, null);
- }
-
- public virtual Task<WebResponse> GetResponseAsync ()
- {
- return Task<WebResponse>.Factory.FromAsync (BeginGetResponse, EndGetResponse, null);
- }
- }
-}
public sealed class Semaphore : WaitHandle {
[MethodImplAttribute(MethodImplOptions.InternalCall)]
- private static extern IntPtr CreateSemaphore_internal (
+ internal static extern IntPtr CreateSemaphore_internal (
int initialCount, int maximumCount, string name,
out bool createdNew);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
- private static extern int ReleaseSemaphore_internal (
+ internal static extern int ReleaseSemaphore_internal (
IntPtr handle, int releaseCount, out bool fail);
[MethodImplAttribute (MethodImplOptions.InternalCall)]
System.Net.Configuration/WebRequestModuleElement.cs
System.Net.Configuration/WebRequestModuleHandler.cs
System.Net.Configuration/WebRequestModulesSection.cs
-System.Net/CredentialCache.cs
System.Net/DecompressionMethods.cs
System.Net/DefaultCertificatePolicy.cs
System.Net/DigestClient.cs
System.Net/FtpWebRequest.cs
System.Net/FtpStatus.cs
System.Net/FtpWebResponse.cs
-System.Net/GlobalProxySelection.cs
System.Net/HttpConnection.cs
System.Net/HttpListenerBasicIdentity.cs
System.Net/HttpListenerContext.cs
System.Net/WebConnectionData.cs
System.Net/WebConnectionGroup.cs
System.Net/WebConnectionStream.cs
-System.Net/WebProxy.cs
-System.Net/WebRequest.cs
System.Net.WebSockets/ClientWebSocket.cs
System.Net.WebSockets/ClientWebSocketOptions.cs
System.Net.WebSockets/HttpListenerWebSocketContext.cs
Mono.Net.Security/NoReflectionHelper.cs
Mono.Net.Security/SystemCertificateValidator.cs
+ReferenceSources/AutoWebProxyScriptEngine.cs
ReferenceSources/AssertWrapper.cs
ReferenceSources/BinaryCompatibility.cs
ReferenceSources/ConfigurationManagerInternalFactory.cs
ReferenceSources/HttpSysSettings.cs
ReferenceSources/Logging.cs
ReferenceSources/NativeMethods.cs
+ReferenceSources/RequestCacheProtocol.cs
ReferenceSources/SettingsSectionInternal.cs
ReferenceSources/Socket.cs
ReferenceSources/SR.cs
ReferenceSources/SR2.cs
ReferenceSources/SRCategoryAttribute.cs
-ReferenceSources/SystemNetworkCredential.cs
ReferenceSources/Win32Exception.cs
ReferenceSources/SSPIConfiguration.cs
../referencesource/System/net/System/Net/_BufferOffsetSize.cs
../referencesource/System/net/System/Net/_Connection.cs
+../referencesource/System/net/System/Net/_emptywebproxy.cs
../referencesource/System/net/System/Net/_HeaderInfo.cs
../referencesource/System/net/System/Net/_HeaderInfoTable.cs
../referencesource/System/net/System/Net/_HTTPDateParse.cs
../referencesource/System/net/System/Net/_NetRes.cs
../referencesource/System/net/System/Net/_LazyAsyncResult.cs
../referencesource/System/net/System/Net/_LoggingObject.cs
+../referencesource/System/net/System/Net/_PooledStream.cs
+../referencesource/System/net/System/Net/_ProxyChain.cs
../referencesource/System/net/System/Net/_ScatterGatherBuffers.cs
+../referencesource/System/net/System/Net/_Semaphore.cs
+../referencesource/System/net/System/Net/_TimerThread.cs
+../referencesource/System/net/System/Net/_WebProxyDataBuilder.cs
../referencesource/System/net/System/Net/AuthenticationScheme.cs
../referencesource/System/net/System/Net/AuthenticationSchemeSelector.cs
../referencesource/System/net/System/Net/Authorization.cs
+../referencesource/System/net/System/Net/CredentialCache.cs
../referencesource/System/net/System/Net/cookie.cs
../referencesource/System/net/System/Net/cookiecollection.cs
../referencesource/System/net/System/Net/cookiecontainer.cs
../referencesource/System/net/System/Net/cookieexception.cs
+../referencesource/System/net/System/Net/connectionpool.cs
../referencesource/System/net/System/Net/DnsEndPoint.cs
../referencesource/System/net/System/Net/EndPoint.cs
../referencesource/System/net/System/Net/FtpStatusCode.cs
../referencesource/System/net/System/Net/filewebrequest.cs
../referencesource/System/net/System/Net/filewebresponse.cs
+../referencesource/System/net/System/Net/GlobalProxySelection.cs
../referencesource/System/net/System/Net/HttpListenerException.cs
../referencesource/System/net/System/Net/HttpListenerRequestUriBuilder.cs
../referencesource/System/net/System/Net/HttpRequestHeader.cs
../referencesource/System/net/System/Net/IPEndPoint.cs
../referencesource/System/net/System/Net/IPHostEntry.cs
../referencesource/System/net/System/Net/iwebproxy.cs
+../referencesource/System/net/System/Net/IWebProxyFinder.cs
../referencesource/System/net/System/Net/IWebRequestCreate.cs
../referencesource/System/net/System/Net/NetworkAccess.cs
../referencesource/System/net/System/Net/ProtocolViolationException.cs
../referencesource/System/net/System/Net/WebExceptionStatus.cs
../referencesource/System/net/System/Net/WebHeaderCollection.cs
../referencesource/System/net/System/Net/WebPermission.cs
+../referencesource/System/net/System/Net/webproxy.cs
../referencesource/System/net/System/Net/WebRequestMethods.cs
+../referencesource/System/net/System/Net/WebRequest.cs
../referencesource/System/net/System/Net/WebResponse.cs
../referencesource/System/net/System/Net/WebUtility.cs
../referencesource/System/net/System/Net/WriteStreamClosedEventArgs.cs
+../referencesource/System/net/System/Net/Cache/RequestCache.cs
+../referencesource/System/net/System/Net/Cache/RequestCacheEntry.cs
../referencesource/System/net/System/Net/Cache/RequestCachePolicy.cs
+../referencesource/System/net/System/Net/Cache/RequestCacheManager.cs
+
+../referencesource/System/net/System/Net/Configuration/DefaultProxySection.cs
../referencesource/System/net/System/Net/Sockets/IPProtectionLevel.cs
../referencesource/System/net/System/Net/Sockets/NetworkStream.cs
[Test]
public void SendAsyncFile ()
{
- Socket serverSocket = StartSocketServer ();
+ Socket serverSocket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+
+ serverSocket.Bind (new IPEndPoint (IPAddress.Loopback, 0));
+ serverSocket.Listen (1);
+
+ var mReceived = new ManualResetEvent (false);
+
+ serverSocket.BeginAccept (AsyncCall => {
+ byte[] bytes = new byte [1024];
+
+ Socket listener = (Socket)AsyncCall.AsyncState;
+ Socket client = listener.EndAccept (AsyncCall);
+ client.Receive (bytes, bytes.Length, 0);
+ client.Close ();
+ mReceived.Set ();
+ }, serverSocket);
Socket clientSocket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect (serverSocket.LocalEndPoint);
sw.Write (buffer);
}
- var m = new ManualResetEvent (false);
+ var mSent = new ManualResetEvent (false);
// Async Send File to server
clientSocket.BeginSendFile(temp, (ar) => {
Socket client = (Socket) ar.AsyncState;
client.EndSendFile (ar);
- m.Set ();
+ mSent.Set ();
}, clientSocket);
- if (!m.WaitOne (1500))
+ if (!mSent.WaitOne (1500))
+ throw new TimeoutException ();
+ if (!mReceived.WaitOne (1500))
throw new TimeoutException ();
- m.Reset ();
} finally {
if (File.Exists (temp))
File.Delete (temp);
}
}
- Socket StartSocketServer ()
- {
-
- Socket listenSocket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-
- listenSocket.Bind (new IPEndPoint (IPAddress.Loopback, NetworkHelpers.FindFreePort ()));
- listenSocket.Listen (1);
-
- listenSocket.BeginAccept (new AsyncCallback (ReceiveCallback), listenSocket);
-
- return listenSocket;
- }
-
- public static void ReceiveCallback (IAsyncResult AsyncCall)
- {
- byte[] bytes = new byte [1024];
-
- Socket listener = (Socket)AsyncCall.AsyncState;
- Socket client = listener.EndAccept (AsyncCall);
-
- client.Receive (bytes, bytes.Length, 0);
- client.Close ();
- }
-
[Test]
public void UdpMulticasTimeToLive ()
{
Assert.AreEqual (1, p.BypassList.Length, "#4");
}
- [Test]
- public void GetProxy ()
- {
- }
-
[Test]
public void IsByPassed ()
{
System.Net/BindIPEndPoint.cs
System.Net/ChunkStream.cs
System.Net/ChunkedInputStream.cs
-System.Net/CredentialCache.cs
System.Net/DecompressionMethods.cs
System.Net/DefaultCertificatePolicy.cs
System.Net/DigestClient.cs
System.Net/FtpStatus.cs
System.Net/FtpWebRequest.cs
System.Net/FtpWebResponse.cs
-System.Net/GlobalProxySelection.cs
System.Net/HttpConnection.cs
System.Net/HttpListener.cs
System.Net/HttpListenerBasicIdentity.cs
System.Net/WebConnectionData.cs
System.Net/WebConnectionGroup.cs
System.Net/WebConnectionStream.cs
-System.Net/WebProxy.cs
-System.Net/WebRequest.cs
System.Net.WebSockets/ClientWebSocket.cs
System.Net.WebSockets/ClientWebSocketOptions.cs
System.Net.WebSockets/HttpListenerWebSocketContext.cs
Mono.Net.Security/NoReflectionHelper.cs
Mono.Net.Security/SystemCertificateValidator.cs
+ReferenceSources/AutoWebProxyScriptEngine.cs
ReferenceSources/AssertWrapper.cs
ReferenceSources/CAPI.cs
ReferenceSources/EnvironmentHelpers.cs
ReferenceSources/HttpSysSettings.cs
ReferenceSources/Logging.cs
ReferenceSources/NativeMethods.cs
+ReferenceSources/RequestCacheProtocol.cs
ReferenceSources/SettingsSectionInternal.cs
ReferenceSources/Socket.cs
ReferenceSources/SR.cs
ReferenceSources/SRCategoryAttribute.cs
-ReferenceSources/SystemNetworkCredential.cs
ReferenceSources/Win32Exception.cs
../referencesource/System/regex/system/text/regularexpressions/Regex.cs
../referencesource/System/net/System/Net/_BufferOffsetSize.cs
../referencesource/System/net/System/Net/_Connection.cs
+../referencesource/System/net/System/Net/_emptywebproxy.cs
../referencesource/System/net/System/Net/_HeaderInfo.cs
../referencesource/System/net/System/Net/_HeaderInfoTable.cs
../referencesource/System/net/System/Net/_HTTPDateParse.cs
../referencesource/System/net/System/Net/_NetRes.cs
../referencesource/System/net/System/Net/_LazyAsyncResult.cs
../referencesource/System/net/System/Net/_LoggingObject.cs
+../referencesource/System/net/System/Net/_PooledStream.cs
+../referencesource/System/net/System/Net/_ProxyChain.cs
../referencesource/System/net/System/Net/_ScatterGatherBuffers.cs
+../referencesource/System/net/System/Net/_Semaphore.cs
+../referencesource/System/net/System/Net/_TimerThread.cs
+../referencesource/System/net/System/Net/_WebProxyDataBuilder.cs
../referencesource/System/net/System/Net/AuthenticationScheme.cs
../referencesource/System/net/System/Net/AuthenticationSchemeSelector.cs
../referencesource/System/net/System/Net/Authorization.cs
+../referencesource/System/net/System/Net/CredentialCache.cs
../referencesource/System/net/System/Net/cookie.cs
../referencesource/System/net/System/Net/cookiecollection.cs
../referencesource/System/net/System/Net/cookiecontainer.cs
../referencesource/System/net/System/Net/cookieexception.cs
+../referencesource/System/net/System/Net/connectionpool.cs
../referencesource/System/net/System/Net/DnsEndPoint.cs
../referencesource/System/net/System/Net/EndPoint.cs
../referencesource/System/net/System/Net/FtpStatusCode.cs
../referencesource/System/net/System/Net/filewebrequest.cs
../referencesource/System/net/System/Net/filewebresponse.cs
+../referencesource/System/net/System/Net/GlobalProxySelection.cs
../referencesource/System/net/System/Net/HttpListenerException.cs
+../referencesource/System/net/System/Net/HttpListenerRequestUriBuilder.cs
../referencesource/System/net/System/Net/HttpRequestHeader.cs
../referencesource/System/net/System/Net/HttpResponseHeader.cs
../referencesource/System/net/System/Net/HttpStatusCode.cs
-../referencesource/System/net/System/Net/HttpListenerRequestUriBuilder.cs
../referencesource/System/net/System/Net/HttpVersion.cs
../referencesource/System/net/System/Net/IAuthenticationModule.cs
../referencesource/System/net/System/Net/ICertificatePolicy.cs
../referencesource/System/net/System/Net/IPEndPoint.cs
../referencesource/System/net/System/Net/IPHostEntry.cs
../referencesource/System/net/System/Net/iwebproxy.cs
+../referencesource/System/net/System/Net/IWebProxyFinder.cs
../referencesource/System/net/System/Net/IWebRequestCreate.cs
../referencesource/System/net/System/Net/NetworkAccess.cs
../referencesource/System/net/System/Net/ProtocolViolationException.cs
../referencesource/System/net/System/Net/WebExceptionStatus.cs
../referencesource/System/net/System/Net/WebHeaderCollection.cs
../referencesource/System/net/System/Net/WebPermission.cs
+../referencesource/System/net/System/Net/webproxy.cs
../referencesource/System/net/System/Net/WebRequestMethods.cs
+../referencesource/System/net/System/Net/WebRequest.cs
../referencesource/System/net/System/Net/WebResponse.cs
../referencesource/System/net/System/Net/WebUtility.cs
../referencesource/System/net/System/Net/WriteStreamClosedEventArgs.cs
+../referencesource/System/net/System/Net/Cache/RequestCache.cs
+../referencesource/System/net/System/Net/Cache/RequestCacheEntry.cs
../referencesource/System/net/System/Net/Cache/RequestCachePolicy.cs
+../referencesource/System/net/System/Net/Cache/RequestCacheManager.cs
+
+../referencesource/System/net/System/Net/Configuration/DefaultProxySection.cs
../referencesource/System/net/System/Net/Sockets/IPProtectionLevel.cs
../referencesource/System/net/System/Net/Sockets/NetworkStream.cs
--- /dev/null
+Microsoft.CSharp/CodeGeneratorFromCompileUnitTest.cs
+Microsoft.CSharp/CodeGeneratorFromExpressionTest.cs
+Microsoft.CSharp/CodeGeneratorFromNamespaceTest.cs
+Microsoft.CSharp/CodeGeneratorFromStatementTest.cs
+Microsoft.CSharp/CodeGeneratorFromTypeTest.cs
+Microsoft.CSharp/CodeGeneratorIdentifierTest.cs
+Microsoft.CSharp/CodeGeneratorTestBase.cs
+Microsoft.CSharp/CodeGeneratorTypeOutputTest.cs
+Microsoft.CSharp/CSharpCodeProviderCas.cs
+Microsoft.CSharp/CSharpCodeProviderTest.cs
+Microsoft.VisualBasic/CodeGeneratorFromBinaryOperatorTest.cs
+Microsoft.VisualBasic/CodeGeneratorFromCompileUnitTest.cs
+Microsoft.VisualBasic/CodeGeneratorFromExpressionTest.cs
+Microsoft.VisualBasic/CodeGeneratorFromNamespaceTest.cs
+Microsoft.VisualBasic/CodeGeneratorFromStatementTest.cs
+Microsoft.VisualBasic/CodeGeneratorFromTypeTest.cs
+Microsoft.VisualBasic/CodeGeneratorTestBase.cs
+Microsoft.VisualBasic/VBCodeProviderCas.cs
+Microsoft.VisualBasic/VBCodeProviderTest.cs
+System.CodeDom/CodeArgumentReferenceExpressionCas.cs
+System.CodeDom/CodeArgumentReferenceExpressionTest.cs
+System.CodeDom/CodeArrayCreateExpressionCas.cs
+System.CodeDom/CodeArrayCreateExpressionTest.cs
+System.CodeDom/CodeArrayIndexerExpressionCas.cs
+System.CodeDom/CodeAssignStatementCas.cs
+System.CodeDom/CodeAttachEventStatementCas.cs
+System.CodeDom/CodeAttachEventStatementTest.cs
+System.CodeDom/CodeAttributeArgumentCas.cs
+System.CodeDom/CodeAttributeArgumentCollectionCas.cs
+System.CodeDom/CodeAttributeArgumentCollectionTest.cs
+System.CodeDom/CodeAttributeArgumentTest.cs
+System.CodeDom/CodeAttributeDeclarationCas.cs
+System.CodeDom/CodeAttributeDeclarationCollectionCas.cs
+System.CodeDom/CodeAttributeDeclarationCollectionTest.cs
+System.CodeDom/CodeAttributeDeclarationTest.cs
+System.CodeDom/CodeBaseReferenceExpressionCas.cs
+System.CodeDom/CodeBinaryOperatorExpressionCas.cs
+System.CodeDom/CodeCastExpressionCas.cs
+System.CodeDom/CodeCastExpressionTest.cs
+System.CodeDom/CodeCatchClauseCas.cs
+System.CodeDom/CodeCatchClauseCollectionCas.cs
+System.CodeDom/CodeCatchClauseCollectionTest.cs
+System.CodeDom/CodeCatchClauseTest.cs
+System.CodeDom/CodeChecksumPragmaCas.cs
+System.CodeDom/CodeChecksumPragmaTest.cs
+System.CodeDom/CodeCommentStatementCas.cs
+System.CodeDom/CodeCommentStatementCollectionCas.cs
+System.CodeDom/CodeCommentStatementCollectionTest.cs
+System.CodeDom/CodeCompileUnitCas.cs
+System.CodeDom/CodeConditionStatementCas.cs
+System.CodeDom/CodeConstructorCas.cs
+System.CodeDom/CodeConstructorTest.cs
+System.CodeDom/CodeDefaultValueExpressionCas.cs
+System.CodeDom/CodeDefaultValueExpressionTest.cs
+System.CodeDom/CodeDelegateCreateExpressionCas.cs
+System.CodeDom/CodeDelegateCreateExpressionTest.cs
+System.CodeDom/CodeDelegateInvokeExpressionCas.cs
+System.CodeDom/CodeDirectionExpressionCas.cs
+System.CodeDom/CodeDirectiveCas.cs
+System.CodeDom/CodeDirectiveCollectionCas.cs
+System.CodeDom/CodeDirectiveCollectionTest.cs
+System.CodeDom/CodeEntryPointMethodCas.cs
+System.CodeDom/CodeEventReferenceExpressionCas.cs
+System.CodeDom/CodeEventReferenceExpressionTest.cs
+System.CodeDom/CodeExpressionCas.cs
+System.CodeDom/CodeExpressionCollectionCas.cs
+System.CodeDom/CodeExpressionCollectionTest.cs
+System.CodeDom/CodeExpressionStatementCas.cs
+System.CodeDom/CodeFieldReferenceExpressionCas.cs
+System.CodeDom/CodeGotoStatementCas.cs
+System.CodeDom/CodeGotoStatementTest.cs
+System.CodeDom/CodeIndexerExpressionCas.cs
+System.CodeDom/CodeIterationStatementCas.cs
+System.CodeDom/CodeLabeledStatementTest.cs
+System.CodeDom/CodeLinePragmaCas.cs
+System.CodeDom/CodeLinePragmaTest.cs
+System.CodeDom/CodeMemberEventCas.cs
+System.CodeDom/CodeMemberFieldCas.cs
+System.CodeDom/CodeMemberFieldTest.cs
+System.CodeDom/CodeMemberMethodCas.cs
+System.CodeDom/CodeMemberMethodTest.cs
+System.CodeDom/CodeMemberPropertyCas.cs
+System.CodeDom/CodeMemberPropertyTest.cs
+System.CodeDom/CodeMethodInvokeExpressionCas.cs
+System.CodeDom/CodeMethodInvokeExpressionTest.cs
+System.CodeDom/CodeMethodReferenceExpressionCas.cs
+System.CodeDom/CodeMethodReferenceExpressionTest.cs
+System.CodeDom/CodeMethodReturnStatementCas.cs
+System.CodeDom/CodeNamespaceCas.cs
+System.CodeDom/CodeNamespaceCollectionCas.cs
+System.CodeDom/CodeNamespaceCollectionTest.cs
+System.CodeDom/CodeNamespaceImportCas.cs
+System.CodeDom/CodeNamespaceImportCollectionCas.cs
+System.CodeDom/CodeNamespaceImportCollectionTest.cs
+System.CodeDom/CodeNamespaceImportTest.cs
+System.CodeDom/CodeNamespaceTest.cs
+System.CodeDom/CodeObjectCas.cs
+System.CodeDom/CodeObjectCreateExpressionCas.cs
+System.CodeDom/CodeObjectCreateExpressionTest.cs
+System.CodeDom/CodeParameterDeclarationExpressionCas.cs
+System.CodeDom/CodeParameterDeclarationExpressionCollectionCas.cs
+System.CodeDom/CodeParameterDeclarationExpressionCollectionTest.cs
+System.CodeDom/CodeParameterDeclarationExpressionTest.cs
+System.CodeDom/CodePrimitiveExpressionCas.cs
+System.CodeDom/CodePropertyReferenceExpressionCas.cs
+System.CodeDom/CodePropertyReferenceExpressionTest.cs
+System.CodeDom/CodePropertySetValueReferenceExpressionCas.cs
+System.CodeDom/CodeRegionDirectiveCas.cs
+System.CodeDom/CodeRegionDirectiveTest.cs
+System.CodeDom/CodeRemoveEventStatementCas.cs
+System.CodeDom/CodeRemoveEventStatementTest.cs
+System.CodeDom/CodeSnippetCompileUnitCas.cs
+System.CodeDom/CodeSnippetCompileUnitTest.cs
+System.CodeDom/CodeSnippetExpressionCas.cs
+System.CodeDom/CodeSnippetExpressionTest.cs
+System.CodeDom/CodeSnippetStatementCas.cs
+System.CodeDom/CodeSnippetStatementTest.cs
+System.CodeDom/CodeSnippetTypeMemberCas.cs
+System.CodeDom/CodeSnippetTypeMemberTest.cs
+System.CodeDom/CodeStatementCas.cs
+System.CodeDom/CodeStatementCollectionCas.cs
+System.CodeDom/CodeStatementCollectionTest.cs
+System.CodeDom/CodeThisReferenceExpressionCas.cs
+System.CodeDom/CodeThrowExceptionStatementCas.cs
+System.CodeDom/CodeTryCatchFinallyStatementCas.cs
+System.CodeDom/CodeTypeConstructorCas.cs
+System.CodeDom/CodeTypeConstructorTest.cs
+System.CodeDom/CodeTypeDeclarationCas.cs
+System.CodeDom/CodeTypeDeclarationCollectionCas.cs
+System.CodeDom/CodeTypeDeclarationCollectionTest.cs
+System.CodeDom/CodeTypeDelegateCas.cs
+System.CodeDom/CodeTypeDelegateTest.cs
+System.CodeDom/CodeTypeMemberCas.cs
+System.CodeDom/CodeTypeMemberCollectionCas.cs
+System.CodeDom/CodeTypeMemberCollectionTest.cs
+System.CodeDom/CodeTypeOfExpressionCas.cs
+System.CodeDom/CodeTypeOfExpressionTest.cs
+System.CodeDom/CodeTypeParameterCas.cs
+System.CodeDom/CodeTypeParameterCollectionTest.cs
+System.CodeDom/CodeTypeParameterTest.cs
+System.CodeDom/CodeTypeReferenceCas.cs
+System.CodeDom/CodeTypeReferenceCollectionCas.cs
+System.CodeDom/CodeTypeReferenceCollectionTest.cs
+System.CodeDom/CodeTypeReferenceExpressionCas.cs
+System.CodeDom/CodeTypeReferenceExpressionTest.cs
+System.CodeDom/CodeTypeReferenceTest.cs
+System.CodeDom/CodeVariableDeclarationStatementCas.cs
+System.CodeDom/CodeVariableDeclarationStatementTest.cs
+System.CodeDom/CodeVariableReferenceExpressionCas.cs
+System.CodeDom/CodeVariableReferenceExpressionTest.cs
+System.CodeDom.Compiler/CodeCompilerCas.cs
+System.CodeDom.Compiler/CodeDomProviderCas.cs
+System.CodeDom.Compiler/CodeGeneratorCas.cs
+System.CodeDom.Compiler/CodeGeneratorFromTypeTestBase.cs
+System.CodeDom.Compiler/CodeGeneratorGenerateFromCompileUnitTest.cs
+System.CodeDom.Compiler/CodeGeneratorOptionsCas.cs
+System.CodeDom.Compiler/CodeGeneratorOptionsTest.cs
+System.CodeDom.Compiler/CodeGeneratorTest.cs
+System.CodeDom.Compiler/CodeGeneratorTestBase.cs
+System.CodeDom.Compiler/CodeParserCas.cs
+System.CodeDom.Compiler/CompilerErrorCas.cs
+System.CodeDom.Compiler/CompilerErrorCollectionCas.cs
+System.CodeDom.Compiler/CompilerInfoCas.cs
+System.CodeDom.Compiler/CompilerParametersCas.cs
+System.CodeDom.Compiler/CompilerResultsCas.cs
+System.CodeDom.Compiler/ExecutorCas.cs
+System.CodeDom.Compiler/ExecutorTest.cs
+System.CodeDom.Compiler/GeneratedCodeAttributeCas.cs
+System.CodeDom.Compiler/GeneratedCodeAttributeTest.cs
+System.CodeDom.Compiler/IndentedTextWriterCas.cs
+System.CodeDom.Compiler/IndentedTextWriterTest.cs
+System.CodeDom.Compiler/TempFileCollectionCas.cs
+System.CodeDom.Compiler/TempFileCollectionTest.cs
+System.Configuration/ApplicationSettingsBaseTest.cs
+System.Configuration/ConfigurationExceptionTest.cs
+System.Configuration/ConfigXmlDocumentTest.cs
+System.Configuration/LocalFileSettingsProviderTest.cs
+System.Configuration/SettingElementTest.cs
+System.Configuration/SettingsBaseTest.cs
+System.Configuration/SettingsPropertyCollectionTest.cs
+System.Configuration/SettingsPropertyTest.cs
+System.Configuration/SettingsPropertyValueCollectionTest.cs
+System.Configuration/SettingsPropertyValueTest.cs
+System.Configuration.Provider
+System.Configuration.Provider/ProviderBaseTest.cs
+System.IO.Ports/SerialPortTest.cs
+System.Web/AspNetHostingPermissionAttributeCas.cs
+System.Web/AspNetHostingPermissionAttributeTest.cs
+System.Web/AspNetHostingPermissionCas.cs
+System.Web/AspNetHostingPermissionTest.cs
+++ /dev/null
-Microsoft.CSharp/CodeGeneratorFromCompileUnitTest.cs
-Microsoft.CSharp/CodeGeneratorFromExpressionTest.cs
-Microsoft.CSharp/CodeGeneratorFromNamespaceTest.cs
-Microsoft.CSharp/CodeGeneratorFromStatementTest.cs
-Microsoft.CSharp/CodeGeneratorFromTypeTest.cs
-Microsoft.CSharp/CodeGeneratorIdentifierTest.cs
-Microsoft.CSharp/CodeGeneratorTestBase.cs
-Microsoft.CSharp/CodeGeneratorTypeOutputTest.cs
-Microsoft.CSharp/CSharpCodeProviderCas.cs
-Microsoft.CSharp/CSharpCodeProviderTest.cs
-Microsoft.VisualBasic/CodeGeneratorFromBinaryOperatorTest.cs
-Microsoft.VisualBasic/CodeGeneratorFromCompileUnitTest.cs
-Microsoft.VisualBasic/CodeGeneratorFromExpressionTest.cs
-Microsoft.VisualBasic/CodeGeneratorFromNamespaceTest.cs
-Microsoft.VisualBasic/CodeGeneratorFromStatementTest.cs
-Microsoft.VisualBasic/CodeGeneratorFromTypeTest.cs
-Microsoft.VisualBasic/CodeGeneratorTestBase.cs
-Microsoft.VisualBasic/VBCodeProviderCas.cs
-Microsoft.VisualBasic/VBCodeProviderTest.cs
-System.CodeDom/CodeArgumentReferenceExpressionCas.cs
-System.CodeDom/CodeArgumentReferenceExpressionTest.cs
-System.CodeDom/CodeArrayCreateExpressionCas.cs
-System.CodeDom/CodeArrayCreateExpressionTest.cs
-System.CodeDom/CodeArrayIndexerExpressionCas.cs
-System.CodeDom/CodeAssignStatementCas.cs
-System.CodeDom/CodeAttachEventStatementCas.cs
-System.CodeDom/CodeAttachEventStatementTest.cs
-System.CodeDom/CodeAttributeArgumentCas.cs
-System.CodeDom/CodeAttributeArgumentCollectionCas.cs
-System.CodeDom/CodeAttributeArgumentCollectionTest.cs
-System.CodeDom/CodeAttributeArgumentTest.cs
-System.CodeDom/CodeAttributeDeclarationCas.cs
-System.CodeDom/CodeAttributeDeclarationCollectionCas.cs
-System.CodeDom/CodeAttributeDeclarationCollectionTest.cs
-System.CodeDom/CodeAttributeDeclarationTest.cs
-System.CodeDom/CodeBaseReferenceExpressionCas.cs
-System.CodeDom/CodeBinaryOperatorExpressionCas.cs
-System.CodeDom/CodeCastExpressionCas.cs
-System.CodeDom/CodeCastExpressionTest.cs
-System.CodeDom/CodeCatchClauseCas.cs
-System.CodeDom/CodeCatchClauseCollectionCas.cs
-System.CodeDom/CodeCatchClauseCollectionTest.cs
-System.CodeDom/CodeCatchClauseTest.cs
-System.CodeDom/CodeChecksumPragmaCas.cs
-System.CodeDom/CodeChecksumPragmaTest.cs
-System.CodeDom/CodeCommentStatementCas.cs
-System.CodeDom/CodeCommentStatementCollectionCas.cs
-System.CodeDom/CodeCommentStatementCollectionTest.cs
-System.CodeDom/CodeCompileUnitCas.cs
-System.CodeDom/CodeConditionStatementCas.cs
-System.CodeDom/CodeConstructorCas.cs
-System.CodeDom/CodeConstructorTest.cs
-System.CodeDom/CodeDefaultValueExpressionCas.cs
-System.CodeDom/CodeDefaultValueExpressionTest.cs
-System.CodeDom/CodeDelegateCreateExpressionCas.cs
-System.CodeDom/CodeDelegateCreateExpressionTest.cs
-System.CodeDom/CodeDelegateInvokeExpressionCas.cs
-System.CodeDom/CodeDirectionExpressionCas.cs
-System.CodeDom/CodeDirectiveCas.cs
-System.CodeDom/CodeDirectiveCollectionCas.cs
-System.CodeDom/CodeDirectiveCollectionTest.cs
-System.CodeDom/CodeEntryPointMethodCas.cs
-System.CodeDom/CodeEventReferenceExpressionCas.cs
-System.CodeDom/CodeEventReferenceExpressionTest.cs
-System.CodeDom/CodeExpressionCas.cs
-System.CodeDom/CodeExpressionCollectionCas.cs
-System.CodeDom/CodeExpressionCollectionTest.cs
-System.CodeDom/CodeExpressionStatementCas.cs
-System.CodeDom/CodeFieldReferenceExpressionCas.cs
-System.CodeDom/CodeGotoStatementCas.cs
-System.CodeDom/CodeGotoStatementTest.cs
-System.CodeDom/CodeIndexerExpressionCas.cs
-System.CodeDom/CodeIterationStatementCas.cs
-System.CodeDom/CodeLabeledStatementTest.cs
-System.CodeDom/CodeLinePragmaCas.cs
-System.CodeDom/CodeLinePragmaTest.cs
-System.CodeDom/CodeMemberEventCas.cs
-System.CodeDom/CodeMemberFieldCas.cs
-System.CodeDom/CodeMemberFieldTest.cs
-System.CodeDom/CodeMemberMethodCas.cs
-System.CodeDom/CodeMemberMethodTest.cs
-System.CodeDom/CodeMemberPropertyCas.cs
-System.CodeDom/CodeMemberPropertyTest.cs
-System.CodeDom/CodeMethodInvokeExpressionCas.cs
-System.CodeDom/CodeMethodInvokeExpressionTest.cs
-System.CodeDom/CodeMethodReferenceExpressionCas.cs
-System.CodeDom/CodeMethodReferenceExpressionTest.cs
-System.CodeDom/CodeMethodReturnStatementCas.cs
-System.CodeDom/CodeNamespaceCas.cs
-System.CodeDom/CodeNamespaceCollectionCas.cs
-System.CodeDom/CodeNamespaceCollectionTest.cs
-System.CodeDom/CodeNamespaceImportCas.cs
-System.CodeDom/CodeNamespaceImportCollectionCas.cs
-System.CodeDom/CodeNamespaceImportCollectionTest.cs
-System.CodeDom/CodeNamespaceImportTest.cs
-System.CodeDom/CodeNamespaceTest.cs
-System.CodeDom/CodeObjectCas.cs
-System.CodeDom/CodeObjectCreateExpressionCas.cs
-System.CodeDom/CodeObjectCreateExpressionTest.cs
-System.CodeDom/CodeParameterDeclarationExpressionCas.cs
-System.CodeDom/CodeParameterDeclarationExpressionCollectionCas.cs
-System.CodeDom/CodeParameterDeclarationExpressionCollectionTest.cs
-System.CodeDom/CodeParameterDeclarationExpressionTest.cs
-System.CodeDom/CodePrimitiveExpressionCas.cs
-System.CodeDom/CodePropertyReferenceExpressionCas.cs
-System.CodeDom/CodePropertyReferenceExpressionTest.cs
-System.CodeDom/CodePropertySetValueReferenceExpressionCas.cs
-System.CodeDom/CodeRegionDirectiveCas.cs
-System.CodeDom/CodeRegionDirectiveTest.cs
-System.CodeDom/CodeRemoveEventStatementCas.cs
-System.CodeDom/CodeRemoveEventStatementTest.cs
-System.CodeDom/CodeSnippetCompileUnitCas.cs
-System.CodeDom/CodeSnippetCompileUnitTest.cs
-System.CodeDom/CodeSnippetExpressionCas.cs
-System.CodeDom/CodeSnippetExpressionTest.cs
-System.CodeDom/CodeSnippetStatementCas.cs
-System.CodeDom/CodeSnippetStatementTest.cs
-System.CodeDom/CodeSnippetTypeMemberCas.cs
-System.CodeDom/CodeSnippetTypeMemberTest.cs
-System.CodeDom/CodeStatementCas.cs
-System.CodeDom/CodeStatementCollectionCas.cs
-System.CodeDom/CodeStatementCollectionTest.cs
-System.CodeDom/CodeThisReferenceExpressionCas.cs
-System.CodeDom/CodeThrowExceptionStatementCas.cs
-System.CodeDom/CodeTryCatchFinallyStatementCas.cs
-System.CodeDom/CodeTypeConstructorCas.cs
-System.CodeDom/CodeTypeConstructorTest.cs
-System.CodeDom/CodeTypeDeclarationCas.cs
-System.CodeDom/CodeTypeDeclarationCollectionCas.cs
-System.CodeDom/CodeTypeDeclarationCollectionTest.cs
-System.CodeDom/CodeTypeDelegateCas.cs
-System.CodeDom/CodeTypeDelegateTest.cs
-System.CodeDom/CodeTypeMemberCas.cs
-System.CodeDom/CodeTypeMemberCollectionCas.cs
-System.CodeDom/CodeTypeMemberCollectionTest.cs
-System.CodeDom/CodeTypeOfExpressionCas.cs
-System.CodeDom/CodeTypeOfExpressionTest.cs
-System.CodeDom/CodeTypeParameterCas.cs
-System.CodeDom/CodeTypeParameterCollectionTest.cs
-System.CodeDom/CodeTypeParameterTest.cs
-System.CodeDom/CodeTypeReferenceCas.cs
-System.CodeDom/CodeTypeReferenceCollectionCas.cs
-System.CodeDom/CodeTypeReferenceCollectionTest.cs
-System.CodeDom/CodeTypeReferenceExpressionCas.cs
-System.CodeDom/CodeTypeReferenceExpressionTest.cs
-System.CodeDom/CodeTypeReferenceTest.cs
-System.CodeDom/CodeVariableDeclarationStatementCas.cs
-System.CodeDom/CodeVariableDeclarationStatementTest.cs
-System.CodeDom/CodeVariableReferenceExpressionCas.cs
-System.CodeDom/CodeVariableReferenceExpressionTest.cs
-System.CodeDom.Compiler/CodeCompilerCas.cs
-System.CodeDom.Compiler/CodeDomProviderCas.cs
-System.CodeDom.Compiler/CodeGeneratorCas.cs
-System.CodeDom.Compiler/CodeGeneratorFromTypeTestBase.cs
-System.CodeDom.Compiler/CodeGeneratorGenerateFromCompileUnitTest.cs
-System.CodeDom.Compiler/CodeGeneratorOptionsCas.cs
-System.CodeDom.Compiler/CodeGeneratorOptionsTest.cs
-System.CodeDom.Compiler/CodeGeneratorTest.cs
-System.CodeDom.Compiler/CodeGeneratorTestBase.cs
-System.CodeDom.Compiler/CodeParserCas.cs
-System.CodeDom.Compiler/CompilerErrorCas.cs
-System.CodeDom.Compiler/CompilerErrorCollectionCas.cs
-System.CodeDom.Compiler/CompilerInfoCas.cs
-System.CodeDom.Compiler/CompilerParametersCas.cs
-System.CodeDom.Compiler/CompilerResultsCas.cs
-System.CodeDom.Compiler/ExecutorCas.cs
-System.CodeDom.Compiler/ExecutorTest.cs
-System.CodeDom.Compiler/GeneratedCodeAttributeCas.cs
-System.CodeDom.Compiler/GeneratedCodeAttributeTest.cs
-System.CodeDom.Compiler/IndentedTextWriterCas.cs
-System.CodeDom.Compiler/IndentedTextWriterTest.cs
-System.CodeDom.Compiler/TempFileCollectionCas.cs
-System.CodeDom.Compiler/TempFileCollectionTest.cs
-System.Configuration/ApplicationSettingsBaseTest.cs
-System.Configuration/ConfigurationExceptionTest.cs
-System.Configuration/ConfigXmlDocumentTest.cs
-System.Configuration/LocalFileSettingsProviderTest.cs
-System.Configuration/SettingElementTest.cs
-System.Configuration/SettingsBaseTest.cs
-System.Configuration/SettingsPropertyCollectionTest.cs
-System.Configuration/SettingsPropertyTest.cs
-System.Configuration/SettingsPropertyValueCollectionTest.cs
-System.Configuration/SettingsPropertyValueTest.cs
-System.Configuration.Provider
-System.Configuration.Provider/ProviderBaseTest.cs
-System.IO.Ports/SerialPortTest.cs
-System.Web/AspNetHostingPermissionAttributeCas.cs
-System.Web/AspNetHostingPermissionAttributeTest.cs
-System.Web/AspNetHostingPermissionCas.cs
-System.Web/AspNetHostingPermissionTest.cs
--- /dev/null
+#include mobile_static_System_test.dll.exclude.sources
+#include monodroid_System_test.dll.new-exclude.sources
+Microsoft.Win32/IntranetZoneCredentialPolicyCas.cs
+Microsoft.Win32/IntranetZoneCredentialPolicyTest.cs
+Microsoft.Win32/PowerModeChangedEventArgsCas.cs
+Microsoft.Win32/SessionEndedEventArgsCas.cs
+Microsoft.Win32/SessionEndingEventArgsCas.cs
+Microsoft.Win32/SessionSwitchEventArgsCas.cs
+Microsoft.Win32/SessionSwitchEventArgsTest.cs
+Microsoft.Win32/SystemEventsCas.cs
+Microsoft.Win32/TimerElapsedEventArgsCas.cs
+Microsoft.Win32/UserPreferenceChangedEventArgsCas.cs
+Microsoft.Win32/UserPreferenceChangingEventArgsCas.cs
+System.Collections.Concurrent/CollectionStressTestHelper.cs
+System.Collections.Specialized/BitVector32Cas.cs
+System.Collections.Specialized/CollectionsUtilCas.cs
+System.Collections.Specialized/HybridDictionaryCas.cs
+System.Collections.Specialized/ListDictionaryCas.cs
+System.Collections.Specialized/NameObjectCollectionBaseCas.cs
+System.Collections.Specialized/NameValueCollectionCas.cs
+System.Collections.Specialized/OrderedDictionaryCas.cs
+System.Collections.Specialized/StringCollectionCas.cs
+System.Collections.Specialized/StringDictionaryCas.cs
+System.ComponentModel.Design.Serialization/InstanceDescriptorCas.cs
+System/FileStyleUriParserCas.cs
+System/FtpStyleUriParserCas.cs
+System/GenericUriParserCas.cs
+System/GopherStyleUriParserCas.cs
+System/HttpStyleUriParserCas.cs
+System.IO.Compression/DeflateStreamCas.cs
+System.IO.Compression/GZipStreamCas.cs
+System/LdapStyleUriParserCas.cs
+System.Net/DnsCas.cs
+System.Net/FileWebRequestCas.cs
+System.Net/HttpListener2Test.cs
+System.Net/HttpListenerRequestTest.cs
+System.Net/HttpWebRequestCas.cs
+System/NetPipeStyleUriParserCas.cs
+System.Net.Sockets/NetworkStreamCas.cs
+System.Net.Sockets/SocketCas.cs
+System.Net.Sockets/TcpClientCas.cs
+System/NetTcpStyleUriParserCas.cs
+System/NewsStyleUriParserCas.cs
+System.Security.Cryptography.X509Certificates/PublicKeyCas.cs
+System.Security.Cryptography.X509Certificates/X500DistinguishedNameCas.cs
+System.Security.Cryptography.X509Certificates/X509BasicConstraintsExtensionCas.cs
+System.Security.Cryptography.X509Certificates/X509CertificateCollectionCas.cs
+System.Security.Cryptography.X509Certificates/X509ChainCas.cs
+System.Security.Cryptography.X509Certificates/X509ChainPolicyCas.cs
+System.Security.Cryptography.X509Certificates/X509EnhancedKeyUsageExtensionCas.cs
+System.Security.Cryptography.X509Certificates/X509ExtensionCas.cs
+System.Security.Cryptography.X509Certificates/X509KeyUsageExtensionCas.cs
+System.Security.Cryptography.X509Certificates/X509StoreCas.cs
+System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierExtensionCas.cs
+System.Security.Permissions/ResourcePermissionBaseCas.cs
+System.Security.Permissions/ResourcePermissionBaseEntryCas.cs
+System.Security.Permissions/ResourcePermissionBaseEntryTest.cs
+System.Security.Permissions/ResourcePermissionBaseTest.cs
+System.Security.Permissions/StorePermissionAttributeCas.cs
+System.Security.Permissions/StorePermissionAttributeTest.cs
+System.Security.Permissions/StorePermissionCas.cs
+System.Security.Permissions/StorePermissionTest.cs
+System.Text.RegularExpressions/CaptureCas.cs
+System.Text.RegularExpressions/CaptureCollectionCas.cs
+System.Text.RegularExpressions/GroupCas.cs
+System.Text.RegularExpressions/GroupCollectionCas.cs
+System.Text.RegularExpressions/MatchCas.cs
+System.Text.RegularExpressions/MatchCollectionCas.cs
+System.Text.RegularExpressions/RegexCas.cs
+System.Text.RegularExpressions/RegexCompilationInfoCas.cs
+System.Text.RegularExpressions/RegexRunnerCas.cs
+System.Text.RegularExpressions/RegexRunnerFactoryCas.cs
+System.Threading/SemaphoreCas.cs
+System.Threading/SemaphoreFullExceptionCas.cs
+System.Threading/ThreadExceptionEventArgsCas.cs
+System.Timers/ElapsedEventArgsCas.cs
+System.Timers/TimerCas.cs
+System.Timers/TimersDescriptionAttributeCas.cs
+System/UriBuilderCas.cs
+System/UriCas.cs
+System/UriFormatExceptionCas.cs
+System/UriParserCas.cs
+System/UriTypeConverterCas.cs
--- /dev/null
+System.Net/HttpWebRequestTest.cs
+System.Net.Sockets/SocketAcceptAsyncTest.cs
--- /dev/null
+#include System_test.dll.sources
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
using (var archive = new ZipArchive(stream))\r
{ \r
foreach (var entry in archive.Entries)\r
- Assert.AreEqual (entry.LastWriteTime.Year, DateTime.Now.Year);\r
+ {\r
+ Assert.AreEqual (DateTime.Now.Year, entry.LastWriteTime.Year);\r
+ Assert.AreEqual (DateTime.Now.Month, entry.LastWriteTime.Month);\r
+ Assert.AreEqual (DateTime.Now.Day, entry.LastWriteTime.Day);\r
+ }\r
}\r
} \r
}\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
minute = (uint) time.Minute;
hour = (uint) time.Hour;
day = (uint) time.Day;
- month = (uint) time.Month;
+ month = (uint) time.Month - 1;
year = (uint) time.Year;
}
public DateTime Date
{
- get { return new DateTime ((int) year, (int) month, (int) day, (int) hour, (int) minute, (int) second); }
+ get { return new DateTime ((int) year, (int) month + 1, (int) day, (int) hour, (int) minute, (int) second); }
}
}
}
namespace System
{
+ // Contains information about the type which is expensive to compute
+ [StructLayout (LayoutKind.Sequential)]
+ internal class MonoTypeInfo {
+ // this is the displayed form: special characters
+ // ,+*&*[]\ in the identifier portions of the names
+ // have been escaped with a leading backslash (\)
+ public string full_name;
+ public MonoCMethod default_ctor;
+ }
+
+ [StructLayout (LayoutKind.Sequential)]
partial class RuntimeType
{
+ [NonSerialized]
+ MonoTypeInfo type_info;
+
internal Object GenericCache;
- internal virtual MonoCMethod GetDefaultConstructor ()
+ internal RuntimeType (Object obj)
+ {
+ throw new NotImplementedException ();
+ }
+
+ internal MonoCMethod GetDefaultConstructor ()
+ {
+ MonoCMethod ctor = null;
+
+ if (type_info == null)
+ type_info = new MonoTypeInfo ();
+ else
+ ctor = type_info.default_ctor;
+
+ if (ctor == null) {
+ var ctors = GetConstructors (BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
+
+ for (int i = 0; i < ctors.Length; ++i) {
+ if (ctors [i].GetParametersCount () == 0) {
+ type_info.default_ctor = ctor = (MonoCMethod) ctors [i];
+ break;
+ }
+ }
+ }
+
+ return ctor;
+ }
+
+ [MethodImplAttribute(MethodImplOptions.InternalCall)]
+ extern MethodInfo GetCorrespondingInflatedMethod (MethodInfo generic);
+
+ [MethodImplAttribute(MethodImplOptions.InternalCall)]
+ extern ConstructorInfo GetCorrespondingInflatedConstructor (ConstructorInfo generic);
+
+ internal override MethodInfo GetMethod (MethodInfo fromNoninstanciated)
+ {
+ if (fromNoninstanciated == null)
+ throw new ArgumentNullException ("fromNoninstanciated");
+ return GetCorrespondingInflatedMethod (fromNoninstanciated);
+ }
+
+ internal override ConstructorInfo GetConstructor (ConstructorInfo fromNoninstanciated)
{
- // TODO: Requires MonoType
- throw new NotSupportedException ();
+ if (fromNoninstanciated == null)
+ throw new ArgumentNullException ("fromNoninstanciated");
+ return GetCorrespondingInflatedConstructor (fromNoninstanciated);
+ }
+
+ internal override FieldInfo GetField (FieldInfo fromNoninstanciated)
+ {
+ /* create sensible flags from given FieldInfo */
+ BindingFlags flags = fromNoninstanciated.IsStatic ? BindingFlags.Static : BindingFlags.Instance;
+ flags |= fromNoninstanciated.IsPublic ? BindingFlags.Public : BindingFlags.NonPublic;
+ return GetField (fromNoninstanciated.Name, flags);
}
string GetDefaultMemberName ()
get;
}
- public override string FullName {
- get {
- throw new NotImplementedException ();
- }
- }
-
public extern override string Name {
[MethodImplAttribute(MethodImplOptions.InternalCall)]
get;
get { return get_core_clr_security_level () == 1; }
}
#endif
+
+ public override int GetHashCode()
+ {
+ Type t = UnderlyingSystemType;
+ if (t != null && t != this)
+ return t.GetHashCode ();
+ return (int)_impl.Value;
+ }
+
+ public override string FullName {
+ get {
+ string fullName;
+ // This doesn't need locking
+ if (type_info == null)
+ type_info = new MonoTypeInfo ();
+ if ((fullName = type_info.full_name) == null)
+ fullName = type_info.full_name = getFullName (true, false);
+
+ return fullName;
+ }
+ }
+
+ internal override bool IsUserType {
+ get {
+ return false;
+ }
+ }
}
}
if (!suppressSecurityChecks)
{
+#if !DISABLE_CAS_USE
#pragma warning disable 618
new SecurityPermission(SecurityPermissionFlag.ControlEvidence).Demand();
#pragma warning restore 618
+#endif
}
}
foreach (Type type in methodInstantiation) {
if (type == null)
throw new ArgumentNullException ();
- if (!(type is MonoType))
+ if (!(type is RuntimeType))
hasUserType = true;
}
public static bool IsMethodOverloaded(IMethodMessage msg)
{
const BindingFlags bfinst = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance;
- MonoType type = (MonoType) msg.MethodBase.DeclaringType;
+ RuntimeType type = (RuntimeType) msg.MethodBase.DeclaringType;
return type.GetMethodsByName (msg.MethodName, bfinst, false, type).Length > 1;
}
{
}
+#if MOBILE && DISABLE_CAS_USE
+ [Obsolete ("CAS support is removed by linker", true)]
+#else
[MonoTODO ("CAS support is experimental (and unsupported). Imperative mode is not implemented.")]
+#endif
public void Assert ()
{
new PermissionSet (this).Assert ();
public abstract IPermission Copy ();
+#if MOBILE && DISABLE_CAS_USE
+ [Obsolete ("CAS support is removed by linker", true)]
+#endif
public void Demand ()
{
// note: here we're sure it's a CAS demand
new PermissionSet (this).CasOnlyDemand (3);
}
+#if MOBILE && DISABLE_CAS_USE
+ [Obsolete ("CAS support is removed by linker", true)]
+#else
[MonoTODO ("CAS support is experimental (and unsupported). Imperative mode is not implemented.")]
+#endif
public void Deny ()
{
new PermissionSet (this).Deny ();
return null;
}
+#if MOBILE && DISABLE_CAS_USE
+ [Obsolete ("CAS support is removed by linker", true)]
+#else
[MonoTODO ("CAS support is experimental (and unsupported). Imperative mode is not implemented.")]
+#endif
public void PermitOnly ()
{
new PermissionSet (this).PermitOnly ();
}
+#if MOBILE && DISABLE_CAS_USE
+ [Obsolete ("CAS support is removed by linker", true)]
+#else
[MonoTODO ("CAS support is experimental (and unsupported). Imperative mode is not implemented.")]
+#endif
public static void RevertAll ()
{
if (!SecurityManager.SecurityEnabled)
throw new NotImplementedException ();
}
+#if MOBILE && DISABLE_CAS_USE
+ [Obsolete ("CAS support is removed by linker", true)]
+#else
[MonoTODO ("CAS support is experimental (and unsupported). Imperative mode is not implemented.")]
+#endif
public static void RevertAssert ()
{
if (!SecurityManager.SecurityEnabled)
throw new NotImplementedException ();
}
+#if MOBILE && DISABLE_CAS_USE
+ [Obsolete ("CAS support is removed by linker", true)]
+#else
[MonoTODO ("CAS support is experimental (and unsupported). Imperative mode is not implemented.")]
+#endif
public static void RevertDeny ()
{
if (!SecurityManager.SecurityEnabled)
throw new NotImplementedException ();
}
+#if MOBILE && DISABLE_CAS_USE
+ [Obsolete ("CAS support is removed by linker", true)]
+#else
[MonoTODO ("CAS support is experimental (and unsupported). Imperative mode is not implemented.")]
+#endif
public static void RevertPermitOnly ()
{
if (!SecurityManager.SecurityEnabled)
// FIXME what's it doing here? There's probably a reason this was added here.
static public void RevertAssert ()
{
+#if !DISABLE_CAS_USE
CodeAccessPermission.RevertAssert ();
+#endif
}
// internal
* of icalls, do not require an increment.
*/
#pragma warning disable 169
- private const int mono_corlib_version = 147;
+ private const int mono_corlib_version = 148;
#pragma warning restore 169
[ComVisible (true)]
[ThreadStatic]
static Dictionary<Type, AttributeUsageAttribute> usage_cache;
- /* Treat as user types all corlib types extending System.Type that are not MonoType and TypeBuilder */
+ /* Treat as user types all corlib types extending System.Type that are not RuntimeType and TypeBuilder */
static bool IsUserCattrProvider (object obj)
{
Type type = obj as Type;
#if !FULL_AOT_RUNTIME
- if ((type is MonoType) || (type is TypeBuilder))
+ if ((type is RuntimeType) || (type is TypeBuilder))
#else
- if (type is MonoType)
+ if (type is RuntimeType)
#endif
return false;
if ((obj is Type))
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Runtime.CompilerServices;
-using System.Runtime.Serialization;
-using System.Security;
-using System.Diagnostics.Contracts;
-using System.Threading;
-using System.Diagnostics;
-using System.Security.Permissions;
-using System.Runtime.Remoting.Activation;
-using System.Runtime;
-
namespace System
{
- // Contains information about the type which is expensive to compute
- [StructLayout (LayoutKind.Sequential)]
- internal class MonoTypeInfo {
- // this is the displayed form: special characters
- // ,+*&*[]\ in the identifier portions of the names
- // have been escaped with a leading backslash (\)
- public string full_name;
- public MonoCMethod default_ctor;
- }
-
- [Serializable]
- [StructLayout (LayoutKind.Sequential)]
- class MonoType : RuntimeType, ISerializable
+ // Dummy type kept because lots of external code uses
+ // this to check whenever it is running on mono.
+ sealed class MonoType : RuntimeType
{
- [NonSerialized]
- MonoTypeInfo type_info;
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)]
- private static extern void type_from_obj (MonoType type, Object obj);
-
- internal MonoType (Object obj)
- {
- // this should not be used - lupus
- type_from_obj (this, obj);
-
- throw new NotImplementedException ();
- }
-
- internal override MonoCMethod GetDefaultConstructor ()
+ private MonoType ()
{
- MonoCMethod ctor = null;
-
- if (type_info == null)
- type_info = new MonoTypeInfo ();
- else
- ctor = type_info.default_ctor;
-
- if (ctor == null) {
- var ctors = GetConstructors (BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
-
- for (int i = 0; i < ctors.Length; ++i) {
- if (ctors [i].GetParametersCount () == 0) {
- type_info.default_ctor = ctor = (MonoCMethod) ctors [i];
- break;
- }
- }
- }
-
- return ctor;
- }
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)]
- extern MethodInfo GetCorrespondingInflatedMethod (MethodInfo generic);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)]
- extern ConstructorInfo GetCorrespondingInflatedConstructor (ConstructorInfo generic);
-
- internal override MethodInfo GetMethod (MethodInfo fromNoninstanciated)
- {
- if (fromNoninstanciated == null)
- throw new ArgumentNullException ("fromNoninstanciated");
- return GetCorrespondingInflatedMethod (fromNoninstanciated);
- }
-
- internal override ConstructorInfo GetConstructor (ConstructorInfo fromNoninstanciated)
- {
- if (fromNoninstanciated == null)
- throw new ArgumentNullException ("fromNoninstanciated");
- return GetCorrespondingInflatedConstructor (fromNoninstanciated);
- }
-
- internal override FieldInfo GetField (FieldInfo fromNoninstanciated)
- {
- /* create sensible flags from given FieldInfo */
- BindingFlags flags = fromNoninstanciated.IsStatic ? BindingFlags.Static : BindingFlags.Instance;
- flags |= fromNoninstanciated.IsPublic ? BindingFlags.Public : BindingFlags.NonPublic;
- return GetField (fromNoninstanciated.Name, flags);
- }
-
- public override int GetHashCode()
- {
- Type t = UnderlyingSystemType;
- if (t != null && t != this)
- return t.GetHashCode ();
- return (int)_impl.Value;
- }
-
- public override string FullName {
- get {
- string fullName;
- // This doesn't need locking
- if (type_info == null)
- type_info = new MonoTypeInfo ();
- if ((fullName = type_info.full_name) == null)
- fullName = type_info.full_name = getFullName (true, false);
-
- return fullName;
- }
- }
-
- internal override bool IsUserType {
- get {
- return false;
- }
}
}
}
if (info == null)
throw new ArgumentNullException ("info");
- MonoType mt = ((MonoType) info.GetValue ("TypeObj", typeof (MonoType)));
+ RuntimeType mt = ((RuntimeType) info.GetValue ("TypeObj", typeof (RuntimeType)));
value = mt.TypeHandle.Value;
if (value == IntPtr.Zero)
throw new SerializationException (Locale.GetText ("Insufficient state."));
if (value == IntPtr.Zero)
throw new SerializationException ("Object fields may not be properly initialized");
- info.AddValue ("TypeObj", Type.GetTypeHandle (this), typeof (MonoType));
+ info.AddValue ("TypeObj", Type.GetTypeHandle (this), typeof (RuntimeType));
}
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
// (C) 2004 Motus Technologies Inc. (http://www.motus.com)
//
+#if !DISABLE_CAS_USE
+
using NUnit.Framework;
using System;
using System.Security;
}
}
}
+
+#endif
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-
+#if !DISABLE_CAS_USE
using System;
using System.Security;
}
}
+#endif
\ No newline at end of file
}
// check a class in mscorlib to determine if we're running on Mono
- if (Type.GetType ("System.MonoType", false) != null)
+ if (Type.GetType ("Mono.Runtime", false) != null)
is_mono = true;
}
<Compile Include="..\referencesource\mscorlib\system\runtime\exceptionservices\corruptingexceptioncommon.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\exceptionservices\exceptionnotification.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\exceptionservices\exceptionservicescommon.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\arraywithoffset.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\attributes.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\bstrwrapper.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\callingconvention.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\charset.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\comexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\commembertype.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\ibindctx.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\iconnectionpoint.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\iconnectionpointcontainer.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\itypeinfo2.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\itypelib.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ComTypes\itypelib2.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\criticalhandle.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\currencywrapper.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\dispatchwrapper.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\errorwrapper.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\expando\iexpando.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\externalexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\handleref.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\icustomadapter.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\icustomfactory.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\icustommarshaler.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\icustomqueryinterface.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\invalidcomobjectexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\invalidolevarianttypeexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\iregistrationservices.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\layoutkind.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\marshaldirectiveexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\objectcreationdelegate.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\runtimeenvironment.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\safearrayrankmismatchexception.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\safearraytypemismatchexception.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\safehandle.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\sehexception.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\ucomienumconnections.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\unknownwrapper.cs" />\r
+ <Compile Include="..\referencesource\mscorlib\system\runtime\interopservices\variantWrapper.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\NgenServicingAttributes.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\remoting\callcontext.cs" />\r
<Compile Include="..\referencesource\mscorlib\system\runtime\serialization\deserializationeventhandler.cs" />\r
<Compile Include="System.Runtime.InteropServices\_Thread.cs" />\r
<Compile Include="System.Runtime.InteropServices\_Type.cs" />\r
<Compile Include="System.Runtime.InteropServices\_TypeBuilder.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ArrayWithOffset.cs" />\r
- <Compile Include="System.Runtime.InteropServices\AssemblyRegistrationFlags.cs" />\r
<Compile Include="System.Runtime.InteropServices\BIND_OPTS.cs" />\r
<Compile Include="System.Runtime.InteropServices\BINDPTR.cs" />\r
- <Compile Include="System.Runtime.InteropServices\BStrWrapper.cs" />\r
<Compile Include="System.Runtime.InteropServices\CALLCONV.cs" />\r
- <Compile Include="System.Runtime.InteropServices\CallingConvention.cs" />\r
- <Compile Include="System.Runtime.InteropServices\CharSet.cs" />\r
- <Compile Include="System.Runtime.InteropServices\COMException.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ComMemberType.cs" />\r
- <Compile Include="System.Runtime.InteropServices\CriticalHandle.cs" />\r
- <Compile Include="System.Runtime.InteropServices\CurrencyWrapper.cs" />\r
<Compile Include="System.Runtime.InteropServices\DESCKIND.cs" />\r
- <Compile Include="System.Runtime.InteropServices\DispatchWrapper.cs" />\r
<Compile Include="System.Runtime.InteropServices\DISPPARAMS.cs" />\r
<Compile Include="System.Runtime.InteropServices\ELEMDESC.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ErrorWrapper.cs" />\r
<Compile Include="System.Runtime.InteropServices\EXCEPINFO.cs" />\r
<Compile Include="System.Runtime.InteropServices\ExporterEventKind.cs" />\r
<Compile Include="System.Runtime.InteropServices\ExtensibleClassFactory.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ExternalException.cs" />\r
<Compile Include="System.Runtime.InteropServices\FILETIME.cs" />\r
<Compile Include="System.Runtime.InteropServices\FUNCDESC.cs" />\r
<Compile Include="System.Runtime.InteropServices\FUNCFLAGS.cs" />\r
<Compile Include="System.Runtime.InteropServices\FUNCKIND.cs" />\r
<Compile Include="System.Runtime.InteropServices\GCHandle.cs" />\r
<Compile Include="System.Runtime.InteropServices\GCHandleType.cs" />\r
- <Compile Include="System.Runtime.InteropServices\HandleRef.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ICustomAdapter.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ICustomFactory.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ICustomMarshaler.cs" />\r
<Compile Include="System.Runtime.InteropServices\IDLDESC.cs" />\r
<Compile Include="System.Runtime.InteropServices\IDLFLAG.cs" />\r
<Compile Include="System.Runtime.InteropServices\IErrorInfo.cs" />\r
<Compile Include="System.Runtime.InteropServices\IMPLTYPEFLAGS.cs" />\r
<Compile Include="System.Runtime.InteropServices\ImporterEventKind.cs" />\r
- <Compile Include="System.Runtime.InteropServices\InvalidComObjectException.cs" />\r
- <Compile Include="System.Runtime.InteropServices\InvalidOleVariantTypeException.cs" />\r
<Compile Include="System.Runtime.InteropServices\INVOKEKIND.cs" />\r
- <Compile Include="System.Runtime.InteropServices\IRegistrationServices.cs" />\r
<Compile Include="System.Runtime.InteropServices\ITypeLibConverter.cs" />\r
<Compile Include="System.Runtime.InteropServices\ITypeLibExporterNameProvider.cs" />\r
<Compile Include="System.Runtime.InteropServices\ITypeLibExporterNotifySink.cs" />\r
<Compile Include="System.Runtime.InteropServices\ITypeLibImporterNotifySink.cs" />\r
- <Compile Include="System.Runtime.InteropServices\LayoutKind.cs" />\r
<Compile Include="System.Runtime.InteropServices\LIBFLAGS.cs" />\r
<Compile Include="System.Runtime.InteropServices\ManagedErrorInfo.cs" />\r
<Compile Include="System.Runtime.InteropServices\Marshal.cs" />\r
<Compile Include="System.Runtime.InteropServices\MarshalAsAttribute.cs" />\r
- <Compile Include="System.Runtime.InteropServices\MarshalDirectiveException.cs" />\r
- <Compile Include="System.Runtime.InteropServices\ObjectCreationDelegate.cs" />\r
<Compile Include="System.Runtime.InteropServices\PARAMDESC.cs" />\r
<Compile Include="System.Runtime.InteropServices\PARAMFLAG.cs" />\r
<Compile Include="System.Runtime.InteropServices\RegistrationClassContext.cs" />\r
<Compile Include="System.Runtime.InteropServices\RegistrationConnectionType.cs" />\r
<Compile Include="System.Runtime.InteropServices\RegistrationServices.cs" />\r
- <Compile Include="System.Runtime.InteropServices\SafeArrayRankMismatchException.cs" />\r
- <Compile Include="System.Runtime.InteropServices\SafeArrayTypeMismatchException.cs" />\r
<Compile Include="System.Runtime.InteropServices\SafeBuffer.cs" />\r
<Compile Include="System.Runtime.InteropServices\SafeHandle.cs" />\r
- <Compile Include="System.Runtime.InteropServices\SEHException.cs" />\r
<Compile Include="System.Runtime.InteropServices\STATSTG.cs" />\r
<Compile Include="System.Runtime.InteropServices\SYSKIND.cs" />\r
<Compile Include="System.Runtime.InteropServices\TYPEATTR.cs" />\r
<Compile Include="System.Runtime.InteropServices\UCOMITypeComp.cs" />\r
<Compile Include="System.Runtime.InteropServices\UCOMITypeInfo.cs" />\r
<Compile Include="System.Runtime.InteropServices\UCOMITypeLib.cs" />\r
- <Compile Include="System.Runtime.InteropServices\UnknownWrapper.cs" />\r
<Compile Include="System.Runtime.InteropServices\VARDESC.cs" />\r
<Compile Include="System.Runtime.InteropServices\VARFLAGS.cs" />\r
- <Compile Include="System.Runtime.InteropServices\VariantWrapper.cs" />\r
<Compile Include="System.Runtime.Remoting.Activation\ActivationServices.cs" />\r
<Compile Include="System.Runtime.Remoting.Activation\ActivatorLevel.cs" />\r
<Compile Include="System.Runtime.Remoting.Activation\AppDomainLevelActivator.cs" />\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
+++ /dev/null
-System/Object.cs
-System/ValueType.cs
-System/Enum.cs
-System/Delegate.cs
-System/MulticastDelegate.cs
-System.Runtime.CompilerServices/RuntimeHelpers.cs
-System/Decimal.cs
-System/DecimalFormatter.cs
--- /dev/null
+Microsoft.Win32/RegistryKeyTest.cs
+System.Diagnostics.Contracts/ContractAssertTest.cs
+System.Diagnostics.Contracts/ContractAssumeTest.cs
+System.Diagnostics.Contracts/ContractCollectionMethodsTest.cs
+System.Diagnostics.Contracts/ContractHelperTest.cs
+System.Diagnostics.Contracts/ContractMarkerMethodsTest.cs
+System.Diagnostics.Contracts/ContractMustUseRewriterTest.cs
+System.Diagnostics.Contracts/Helpers/RunAgainstReferenceAttribute.cs
+System.Diagnostics.Contracts/Helpers/TestContractBase.cs
+System.Reflection.Emit/AssemblyBuilderAccessTest.cs
+System.Reflection.Emit/AssemblyBuilderTest.cs
+System.Reflection.Emit/ConstructorBuilderTest.cs
+System.Reflection.Emit/ConstructorOnTypeBuilderInstTest.cs
+System.Reflection.Emit/CustomAttributeBuilderTest.cs
+System.Reflection.Emit/DerivedTypesTest.cs
+System.Reflection.Emit/DynamicILInfoTest.cs
+System.Reflection.Emit/DynamicMethodTest.cs
+System.Reflection.Emit/EnumBuilderTest.cs
+System.Reflection.Emit/EventBuilderTest.cs
+System.Reflection.Emit/FieldBuilderTest.cs
+System.Reflection.Emit/GenericTypeParameterBuilderTest.cs
+System.Reflection.Emit/ILGeneratorTest.cs
+System.Reflection.Emit/MethodBuilderTest.cs
+System.Reflection.Emit/MethodBuilderTestIL.cs
+System.Reflection.Emit/MethodOnTypeBuilderInstTest.cs
+System.Reflection.Emit/MethodRentalCas.cs
+System.Reflection.Emit/MethodRentalTest.cs
+System.Reflection.Emit/ModuleBuilderTest.cs
+System.Reflection.Emit/ParameterBuilderTest.cs
+System.Reflection.Emit/PropertyBuilderTest.cs
+System.Reflection.Emit/SignatureHelperTest.cs
+System.Reflection.Emit/TypeBuilderTest.cs
+System.Runtime.Remoting/ContextTest.cs
+System.Runtime.Remoting/RemotingConfigurationTest.cs
+System.Runtime.Remoting/RemotingServicesTest.cs
+System.Runtime.Remoting/SoapServicesTest.cs
+System.Runtime.Remoting/SynchronizationAttributeTest.cs
+System.Runtime.Remoting.Channels/ChannelServicesTest.cs
+System.Runtime.Remoting.Contexts/SynchronizationAttributeTest.cs
+System.Runtime.Remoting.Messaging/CallContextTest.cs
+System.Runtime.Remoting.Metadata.W3cXsd2001/SoapHexBinaryTest.cs
+System.Security.AccessControl/AuthorizationRuleTest.cs
+System.Security.AccessControl/CommonAceTest.cs
+System.Security.AccessControl/CommonAclTest.cs
+System.Security.AccessControl/CommonObjectSecurityTest.cs
+System.Security.AccessControl/CommonSecurityDescriptorTest.cs
+System.Security.AccessControl/CryptoKeyAccessRuleTest.cs
+System.Security.AccessControl/DirectoryObjectSecurityTest.cs
+System.Security.AccessControl/DirectorySecurityTest.cs
+System.Security.AccessControl/DiscretionaryAclTest.cs
+System.Security.AccessControl/EventWaitHandleSecurityTest.cs
+System.Security.AccessControl/FileSecurityTest.cs
+System.Security.AccessControl/MutexAccessRuleTest.cs
+System.Security.AccessControl/MutexSecurityTest.cs
+System.Security.AccessControl/ObjectAceTest.cs
+System.Security.AccessControl/ObjectSecurity_TTest.cs
+System.Security.AccessControl/ObjectSecurityTest.cs
+System.Security.AccessControl/RawAclTest.cs
+System.Security.AccessControl/RawSecurityDescriptorTest.cs
+System.Security.AccessControl/RegistrySecurityTest.cs
+System.Security.AccessControl/SystemAclTest.cs
+System.Security.Permissions/CodeAccessSecurityAttributeTest.cs
+System.Security.Permissions/EnvironmentPermissionAttributeTest.cs
+System.Security.Permissions/EnvironmentPermissionTest.cs
+System.Security.Permissions/FileDialogPermissionAttributeTest.cs
+System.Security.Permissions/FileDialogPermissionTest.cs
+System.Security.Permissions/FileIOPermissionAttributeTest.cs
+System.Security.Permissions/FileIOPermissionTest.cs
+System.Security.Permissions/GacIdentityPermissionAttributeTest.cs
+System.Security.Permissions/GacIdentityPermissionTest.cs
+System.Security.Permissions/HostProtectionAttributeTest.cs
+System.Security.Permissions/IBuiltInPermissionTest.cs
+System.Security.Permissions/IsolatedStorageFilePermissionAttributeTest.cs
+System.Security.Permissions/IsolatedStorageFilePermissionTest.cs
+System.Security.Permissions/IsolatedStoragePermissionAttributeTest.cs
+System.Security.Permissions/KeyContainerPermissionAttributeTest.cs
+System.Security.Permissions/PermissionSetAttributeTest.cs
+System.Security.Permissions/PrincipalPermissionAttributeTest.cs
+System.Security.Permissions/PrincipalPermissionTest.cs
+System.Security.Permissions/PublisherIdentityPermissionAttributeTest.cs
+System.Security.Permissions/PublisherIdentityPermissionTest.cs
+System.Security.Permissions/ReflectionPermissionAttributeTest.cs
+System.Security.Permissions/ReflectionPermissionTest.cs
+System.Security.Permissions/RegistryPermissionAttributeTest.cs
+System.Security.Permissions/RegistryPermissionTest.cs
+System.Security.Permissions/SecurityAttributeTest.cs
+System.Security.Permissions/SecurityPermissionAttributeTest.cs
+System.Security.Permissions/SecurityPermissionTest.cs
+System.Security.Permissions/SiteIdentityPermissionAttributeTest.cs
+System.Security.Permissions/SiteIdentityPermissionTest.cs
+System.Security.Permissions/StrongNameIdentityPermissionAttributeTest.cs
+System.Security.Permissions/StrongNameIdentityPermissionTest.cs
+System.Security.Permissions/StrongNamePublicKeyBlobTest.cs
+System.Security.Permissions/UIPermissionAttributeTest.cs
+System.Security.Permissions/UIPermissionTest.cs
+System.Security.Permissions/UrlIdentityPermissionAttributeTest.cs
+System.Security.Permissions/UrlIdentityPermissionTest.cs
+System.Security.Permissions/ZoneIdentityPermissionAttributeTest.cs
+System.Security.Permissions/ZoneIdentityPermissionTest.cs
+System.Security.Policy/AllMembershipConditionTest.cs
+System.Security.Policy/ApplicationDirectoryMembershipConditionTest.cs
+System.Security.Policy/ApplicationDirectoryTest.cs
+System.Security.Policy/ApplicationMembershipConditionTest.cs
+System.Security.Policy/ApplicationSecurityManagerCas.cs
+System.Security.Policy/ApplicationSecurityManagerTest.cs
+System.Security.Policy/ApplicationTrustTest.cs
+System.Security.Policy/CodeGroupTest.cs
+System.Security.Policy/DomainApplicationMembershipConditionTest.cs
+System.Security.Policy/EvidenceTest.cs
+System.Security.Policy/FileCodeGroupTest.cs
+System.Security.Policy/FirstMatchCodeGroupTest.cs
+System.Security.Policy/GacMembershipConditionTest.cs
+System.Security.Policy/GacTest.cs
+System.Security.Policy/HashMembershipConditionTest.cs
+System.Security.Policy/HashTest.cs
+System.Security.Policy/IBuiltInEvidenceTest.cs
+System.Security.Policy/NetCodeGroupTest.cs
+System.Security.Policy/PermissionRequestEvidenceTest.cs
+System.Security.Policy/PolicyLevelTest.cs
+System.Security.Policy/PolicyStatementTest.cs
+System.Security.Policy/PublisherMembershipConditionTest.cs
+System.Security.Policy/PublisherTest.cs
+System.Security.Policy/SiteMembershipConditionTest.cs
+System.Security.Policy/SiteTest.cs
+System.Security.Policy/StrongNameMembershipConditionTest.cs
+System.Security.Policy/StrongNameTest.cs
+System.Security.Policy/UnionCodeGroupTest.cs
+System.Security.Policy/UrlMembershipConditionTest.cs
+System.Security.Policy/UrlTest.cs
+System.Security.Policy/ZoneMembershipConditionTest.cs
+System.Security.Policy/ZoneTest.cs
+++ /dev/null
-Microsoft.Win32/RegistryKeyTest.cs
-System.Diagnostics.Contracts/ContractAssertTest.cs
-System.Diagnostics.Contracts/ContractAssumeTest.cs
-System.Diagnostics.Contracts/ContractCollectionMethodsTest.cs
-System.Diagnostics.Contracts/ContractHelperTest.cs
-System.Diagnostics.Contracts/ContractMarkerMethodsTest.cs
-System.Diagnostics.Contracts/ContractMustUseRewriterTest.cs
-System.Diagnostics.Contracts/Helpers/RunAgainstReferenceAttribute.cs
-System.Diagnostics.Contracts/Helpers/TestContractBase.cs
-System.Reflection.Emit/AssemblyBuilderAccessTest.cs
-System.Reflection.Emit/AssemblyBuilderTest.cs
-System.Reflection.Emit/ConstructorBuilderTest.cs
-System.Reflection.Emit/ConstructorOnTypeBuilderInstTest.cs
-System.Reflection.Emit/CustomAttributeBuilderTest.cs
-System.Reflection.Emit/DerivedTypesTest.cs
-System.Reflection.Emit/DynamicILInfoTest.cs
-System.Reflection.Emit/DynamicMethodTest.cs
-System.Reflection.Emit/EnumBuilderTest.cs
-System.Reflection.Emit/EventBuilderTest.cs
-System.Reflection.Emit/FieldBuilderTest.cs
-System.Reflection.Emit/GenericTypeParameterBuilderTest.cs
-System.Reflection.Emit/ILGeneratorTest.cs
-System.Reflection.Emit/MethodBuilderTest.cs
-System.Reflection.Emit/MethodBuilderTestIL.cs
-System.Reflection.Emit/MethodOnTypeBuilderInstTest.cs
-System.Reflection.Emit/MethodRentalCas.cs
-System.Reflection.Emit/MethodRentalTest.cs
-System.Reflection.Emit/ModuleBuilderTest.cs
-System.Reflection.Emit/ParameterBuilderTest.cs
-System.Reflection.Emit/PropertyBuilderTest.cs
-System.Reflection.Emit/SignatureHelperTest.cs
-System.Reflection.Emit/TypeBuilderTest.cs
-System.Runtime.Remoting/ContextTest.cs
-System.Runtime.Remoting/RemotingConfigurationTest.cs
-System.Runtime.Remoting/RemotingServicesTest.cs
-System.Runtime.Remoting/SoapServicesTest.cs
-System.Runtime.Remoting/SynchronizationAttributeTest.cs
-System.Runtime.Remoting.Channels/ChannelServicesTest.cs
-System.Runtime.Remoting.Contexts/SynchronizationAttributeTest.cs
-System.Runtime.Remoting.Messaging/CallContextTest.cs
-System.Runtime.Remoting.Metadata.W3cXsd2001/SoapHexBinaryTest.cs
-System.Security.AccessControl/AuthorizationRuleTest.cs
-System.Security.AccessControl/CommonAceTest.cs
-System.Security.AccessControl/CommonAclTest.cs
-System.Security.AccessControl/CommonObjectSecurityTest.cs
-System.Security.AccessControl/CommonSecurityDescriptorTest.cs
-System.Security.AccessControl/CryptoKeyAccessRuleTest.cs
-System.Security.AccessControl/DirectoryObjectSecurityTest.cs
-System.Security.AccessControl/DirectorySecurityTest.cs
-System.Security.AccessControl/DiscretionaryAclTest.cs
-System.Security.AccessControl/EventWaitHandleSecurityTest.cs
-System.Security.AccessControl/FileSecurityTest.cs
-System.Security.AccessControl/MutexAccessRuleTest.cs
-System.Security.AccessControl/MutexSecurityTest.cs
-System.Security.AccessControl/ObjectAceTest.cs
-System.Security.AccessControl/ObjectSecurity_TTest.cs
-System.Security.AccessControl/ObjectSecurityTest.cs
-System.Security.AccessControl/RawAclTest.cs
-System.Security.AccessControl/RawSecurityDescriptorTest.cs
-System.Security.AccessControl/RegistrySecurityTest.cs
-System.Security.AccessControl/SystemAclTest.cs
-System.Security.Permissions/CodeAccessSecurityAttributeTest.cs
-System.Security.Permissions/EnvironmentPermissionAttributeTest.cs
-System.Security.Permissions/EnvironmentPermissionTest.cs
-System.Security.Permissions/FileDialogPermissionAttributeTest.cs
-System.Security.Permissions/FileDialogPermissionTest.cs
-System.Security.Permissions/FileIOPermissionAttributeTest.cs
-System.Security.Permissions/FileIOPermissionTest.cs
-System.Security.Permissions/GacIdentityPermissionAttributeTest.cs
-System.Security.Permissions/GacIdentityPermissionTest.cs
-System.Security.Permissions/HostProtectionAttributeTest.cs
-System.Security.Permissions/IBuiltInPermissionTest.cs
-System.Security.Permissions/IsolatedStorageFilePermissionAttributeTest.cs
-System.Security.Permissions/IsolatedStorageFilePermissionTest.cs
-System.Security.Permissions/IsolatedStoragePermissionAttributeTest.cs
-System.Security.Permissions/KeyContainerPermissionAttributeTest.cs
-System.Security.Permissions/PermissionSetAttributeTest.cs
-System.Security.Permissions/PrincipalPermissionAttributeTest.cs
-System.Security.Permissions/PrincipalPermissionTest.cs
-System.Security.Permissions/PublisherIdentityPermissionAttributeTest.cs
-System.Security.Permissions/PublisherIdentityPermissionTest.cs
-System.Security.Permissions/ReflectionPermissionAttributeTest.cs
-System.Security.Permissions/ReflectionPermissionTest.cs
-System.Security.Permissions/RegistryPermissionAttributeTest.cs
-System.Security.Permissions/RegistryPermissionTest.cs
-System.Security.Permissions/SecurityAttributeTest.cs
-System.Security.Permissions/SecurityPermissionAttributeTest.cs
-System.Security.Permissions/SecurityPermissionTest.cs
-System.Security.Permissions/SiteIdentityPermissionAttributeTest.cs
-System.Security.Permissions/SiteIdentityPermissionTest.cs
-System.Security.Permissions/StrongNameIdentityPermissionAttributeTest.cs
-System.Security.Permissions/StrongNameIdentityPermissionTest.cs
-System.Security.Permissions/StrongNamePublicKeyBlobTest.cs
-System.Security.Permissions/UIPermissionAttributeTest.cs
-System.Security.Permissions/UIPermissionTest.cs
-System.Security.Permissions/UrlIdentityPermissionAttributeTest.cs
-System.Security.Permissions/UrlIdentityPermissionTest.cs
-System.Security.Permissions/ZoneIdentityPermissionAttributeTest.cs
-System.Security.Permissions/ZoneIdentityPermissionTest.cs
-System.Security.Policy/AllMembershipConditionTest.cs
-System.Security.Policy/ApplicationDirectoryMembershipConditionTest.cs
-System.Security.Policy/ApplicationDirectoryTest.cs
-System.Security.Policy/ApplicationMembershipConditionTest.cs
-System.Security.Policy/ApplicationSecurityManagerCas.cs
-System.Security.Policy/ApplicationSecurityManagerTest.cs
-System.Security.Policy/ApplicationTrustTest.cs
-System.Security.Policy/CodeGroupTest.cs
-System.Security.Policy/DomainApplicationMembershipConditionTest.cs
-System.Security.Policy/EvidenceTest.cs
-System.Security.Policy/FileCodeGroupTest.cs
-System.Security.Policy/FirstMatchCodeGroupTest.cs
-System.Security.Policy/GacMembershipConditionTest.cs
-System.Security.Policy/GacTest.cs
-System.Security.Policy/HashMembershipConditionTest.cs
-System.Security.Policy/HashTest.cs
-System.Security.Policy/IBuiltInEvidenceTest.cs
-System.Security.Policy/NetCodeGroupTest.cs
-System.Security.Policy/PermissionRequestEvidenceTest.cs
-System.Security.Policy/PolicyLevelTest.cs
-System.Security.Policy/PolicyStatementTest.cs
-System.Security.Policy/PublisherMembershipConditionTest.cs
-System.Security.Policy/PublisherTest.cs
-System.Security.Policy/SiteMembershipConditionTest.cs
-System.Security.Policy/SiteTest.cs
-System.Security.Policy/StrongNameMembershipConditionTest.cs
-System.Security.Policy/StrongNameTest.cs
-System.Security.Policy/UnionCodeGroupTest.cs
-System.Security.Policy/UrlMembershipConditionTest.cs
-System.Security.Policy/UrlTest.cs
-System.Security.Policy/ZoneMembershipConditionTest.cs
-System.Security.Policy/ZoneTest.cs
--- /dev/null
+#include monodroid_corlib_test.dll.new-exclude.sources
+Microsoft.Win32/RegistryKeyTest.cs
+System/ActivatorCas.cs
+System/AppDomainCas.cs
+System/BadImageFormatExceptionCas.cs
+System/ConsoleCas.cs
+System.Diagnostics/StackFrameCas.cs
+System.Diagnostics/StackTraceCas.cs
+System/EnvironmentCas.cs
+System/ExceptionCas.cs
+System.IO/DirectoryCas.cs
+System.IO/FileLoadExceptionCas.cs
+System.IO/FileNotFoundExceptionCas.cs
+System.IO/FileStreamCas.cs
+System.IO.IsolatedStorage/IsolatedStorageFileCas.cs
+System.IO.IsolatedStorage/IsolatedStorageFileStreamCas.cs
+System.IO/PathCas.cs
+System.IO/StreamCas.cs
+System/MarshalByRefObjectCas.cs
+System.Reflection/AssemblyCas.cs
+System.Reflection/AssemblyNameCas.cs
+System.Reflection.Emit/MethodRentalCas.cs
+System.Reflection/ModuleCas.cs
+System.Reflection/StrongNameKeyPairCas.cs
+System.Reflection/VisibilityTest.cs
+System.Resources/ResourceReaderCas.cs
+System.Resources/ResourceSetCas.cs
+System.Runtime.CompilerServices/RuntimeWrappedExceptionCas.cs
+System.Runtime.InteropServices/RuntimeEnvironmentCas.cs
+System/RuntimeMethodHandleCas.cs
+System.Runtime.Serialization.Formatters.Binary/BinaryFormatterCas.cs
+System.Runtime.Versioning/ResourceConsumptionAttributeCas.cs
+System.Runtime.Versioning/ResourceExposureAttributeCas.cs
+System.Runtime.Versioning/VersioningHelperCas.cs
+System.Security.AccessControl/DirectorySecurityTest.cs
+System.Security.AccessControl/EventWaitHandleSecurityTest.cs
+System.Security.AccessControl/FileSecurityTest.cs
+System.Security/CodeAccessPermissionCas.cs
+System.Security.Cryptography/CryptoAPITransformCas.cs
+System.Security.Cryptography/CryptoConfigCas.cs
+System.Security.Cryptography.X509Certificates/X509CertificateCas.cs
+System.Security/PermissionSetCas.cs
+System.Security.Policy/ApplicationSecurityManagerCas.cs
+System.Security/SecureStringCas.cs
+System.Security/SecurityContextCas.cs
+System.Security/SecurityExceptionCas.cs
+System.Security/SecurityManagerCas.cs
+System.Threading/CompressedStackCas.cs
+System.Threading/ExecutionContextCas.cs
+System.Threading/MutexCas.cs
+System.Threading/ThreadCas.cs
+System.Threading/WaitHandleCas.cs
+System/TypedReferenceCas.cs
--- /dev/null
+System/DateTimeOffsetTestCoreFx.cs
+System.Diagnostics.Contracts/ContractAssertTest.cs
+System.Diagnostics.Contracts/ContractCollectionMethodsTest.cs
+System.Diagnostics.Contracts/ContractHelperTest.cs
+System.Diagnostics.Contracts/ContractMustUseRewriterTest.cs
+System.IO/DirectoryTest.cs
+System.Reflection.Emit/MethodBuilderTestIL.cs
+System.Security.AccessControl/AuthorizationRuleTest.cs
+System.Security.AccessControl/CommonAceTest.cs
+System.Security.AccessControl/CommonAclTest.cs
+System.Security.AccessControl/CommonObjectSecurityTest.cs
+System.Security.AccessControl/CommonSecurityDescriptorTest.cs
+System.Security.AccessControl/CryptoKeyAccessRuleTest.cs
+System.Security.AccessControl/DirectoryObjectSecurityTest.cs
+System.Security.AccessControl/DiscretionaryAclTest.cs
+System.Security.AccessControl/MutexAccessRuleTest.cs
+System.Security.AccessControl/MutexSecurityTest.cs
+System.Security.AccessControl/ObjectAceTest.cs
+System.Security.AccessControl/ObjectSecurityTest.cs
+System.Security.AccessControl/ObjectSecurity_TTest.cs
+System.Security.AccessControl/RawAclTest.cs
+System.Security.AccessControl/RawSecurityDescriptorTest.cs
+System.Security.AccessControl/RegistrySecurityTest.cs
+System.Security.AccessControl/SystemAclTest.cs
+System.Security.Claims/ClaimsIdentityTest.cs
+System.Security.Claims/ClaimsPrincipalTest.cs
+System.Security/CodeAccessPermissionTest.cs
+System/TimeZoneTest.cs
--- /dev/null
+#include corlib_test.dll.sources
-->\r
<PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+$(ProjectDir)\..\..\jay\jay -ct < $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Monodoc.Ecma\EcmaUrlParser.jay > $(ProjectDir)\Monodoc.Ecma\EcmaUrlParser.cs
+
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+$(ProjectDir)\..\..\jay\jay -ct < $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Monodoc.Ecma\EcmaUrlParser.jay > $(ProjectDir)\Monodoc.Ecma\EcmaUrlParser.cs\r
\r
- </PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
\r
+ </PreBuildEvent>\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
else if(!resourceAssembly.IsDynamic) { // EscapedCodeBase won't be supported by emitted assemblies anyway
Debug.WriteLineIf(RuntimeLicenseContextSwitch.TraceVerbose,"resourceAssembly is not null");
string fileName;
+#if !DISABLE_CAS_USE
FileIOPermission perm = new FileIOPermission(PermissionState.Unrestricted);
perm.Assert();
+#endif
try
{
fileName = GetLocalPath(resourceAssembly.EscapedCodeBase);
}
finally
{
+#if !DISABLE_CAS_USE
CodeAccessPermission.RevertAssert();
+#endif
}
fileName = Path.GetFileName(fileName); // we don't want to use FileInfo here... it requests FileIOPermission that we
// might now have... see VSWhidbey 527758
{
if (s_CacheConfigSettings == null)
{
+#if MONO
+ var settings = new RequestCachingSectionInternal();
+#else
RequestCachingSectionInternal settings = RequestCachingSectionInternal.GetSection();
s_DefaultGlobalBinding = new RequestCacheBinding (settings.DefaultCache, settings.DefaultHttpValidator, settings.DefaultCachePolicy);
s_DefaultHttpBinding = new RequestCacheBinding (settings.DefaultCache, settings.DefaultHttpValidator, settings.DefaultHttpCachePolicy);
s_DefaultFtpBinding = new RequestCacheBinding (settings.DefaultCache, settings.DefaultFtpValidator, settings.DefaultFtpCachePolicy);
+#endif
s_CacheConfigSettings = settings;
}
}
}
+#if MONO
+ class RequestCacheValidator
+ {
+ public object CreateValidator ()
+ {
+ throw new NotImplementedException ();
+ }
+ }
+
+ class RequestCachingSectionInternal
+ {
+ // TODO: Implement
+ public readonly bool DisableAllCaching = true;
+ }
+#endif
+
//
//
internal class RequestCacheBinding {
using System.Security.Principal;
using System.ComponentModel;
-
+#if !MONO
public sealed class DefaultProxySection : ConfigurationSection
{
public DefaultProxySection()
base.Reset(defaultElement);
}
}
-
+#endif
internal sealed class DefaultProxySectionInternal
{
+#if !MONO
[SecurityPermission(SecurityAction.Assert, Flags=SecurityPermissionFlag.ControlPrincipal)]
internal DefaultProxySectionInternal(DefaultProxySection section)
{
this.webProxy.Credentials = SystemNetworkCredential.defaultCredential;
}
}
+#else
+
+ static IWebProxy GetDefaultProxy_UsingOldMonoCode()
+ {
+#if CONFIGURATION_DEP
+ DefaultProxySection sec = ConfigurationManager.GetSection ("system.net/defaultProxy") as DefaultProxySection;
+ WebProxy p;
+
+ if (sec == null)
+ return GetSystemWebProxy ();
+
+ ProxyElement pe = sec.Proxy;
+
+ if ((pe.UseSystemDefault != ProxyElement.UseSystemDefaultValues.False) && (pe.ProxyAddress == null)) {
+ IWebProxy proxy = GetSystemWebProxy ();
+
+ if (!(proxy is WebProxy))
+ return proxy;
+
+ p = (WebProxy) proxy;
+ } else
+ p = new WebProxy ();
+
+ if (pe.ProxyAddress != null)
+ p.Address = pe.ProxyAddress;
+
+ if (pe.BypassOnLocal != ProxyElement.BypassOnLocalValues.Unspecified)
+ p.BypassProxyOnLocal = (pe.BypassOnLocal == ProxyElement.BypassOnLocalValues.True);
+
+ foreach(BypassElement elem in sec.BypassList)
+ p.BypassArrayList.Add(elem.Address);
+
+ return p;
+#else
+ return GetSystemWebProxy ();
+#endif
+ }
+
+ static IWebProxy GetSystemWebProxy()
+ {
+ return System.Net.WebProxy.CreateDefaultProxy ();
+ }
+
+#endif
internal static object ClassSyncObject
{
{
lock (DefaultProxySectionInternal.ClassSyncObject)
{
+#if MONO
+ var res = new DefaultProxySectionInternal();
+ res.webProxy = GetDefaultProxy_UsingOldMonoCode ();
+ return res;
+#else
DefaultProxySection section = PrivilegedConfigurationManager.GetSection(ConfigurationStrings.DefaultProxySectionPath) as DefaultProxySection;
if (section == null)
return null;
throw new ConfigurationErrorsException(SR.GetString(SR.net_config_proxy), exception);
}
+#endif
}
}
get {
//This check will not allow to use local user credentials at will.
//Hence the username will not be exposed to the network
+#if !DISABLE_CAS_USE
new EnvironmentPermission(EnvironmentPermissionAccess.Read, "USERNAME").Demand();
+#endif
return SystemNetworkCredential.defaultCredential;
}
}
get {
//This check will not allow to use local user credentials at will.
//Hence the username will not be exposed to the network
+#if !DISABLE_CAS_USE
new EnvironmentPermission(EnvironmentPermissionAccess.Read, "USERNAME").Demand();
+#endif
return SystemNetworkCredential.defaultCredential;
}
}
using System.Net.NetworkInformation;
using System.Runtime.Serialization;
using Microsoft.Win32;
+ using System.Collections.Generic;
internal static class IntPtrHelper {
/*
private static void DemandCallback(object state)
{
+#if !DISABLE_CAS_USE
((CodeAccessPermission) state).Demand();
+#endif
}
// This is for checking if a hostname probably refers to this machine without going to DNS.
private static volatile IPAddress[] _LocalAddresses;
private static object _LocalAddressesLock;
-#if MONO_NOT_IMPLEMENTED
#if !FEATURE_PAL
private static volatile NetworkAddressChangePolled s_AddressChange;
}
#else // !FEATURE_PAL
+
+ internal static bool IsAddressLocal(IPAddress ipAddress) {
+ IPAddress[] localAddresses = NclUtilities.LocalAddresses;
+ for (int i = 0; i < localAddresses.Length; i++)
+ {
+ if (ipAddress.Equals(localAddresses[i], false))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
private const int HostNameBufferLength = 256;
internal static string _LocalDomainName;
//
private static IPHostEntry GetLocalHost()
{
+#if MONO
+ return Dns.GetHostByName (Dns.GetHostName ());
+#else
//
// IPv6 Changes: If IPv6 is enabled, we can't simply use the
// old IPv4 gethostbyname(null). Instead we need
return Dns.NativeToHostEntry(nativePointer);
}
+#endif
} // GetLocalHost
}
}
#endif // !FEATURE_PAL
-#endif
private static object LocalAddressesLock
{
{
/// Returns objects that describe the network interfaces on the local computer.
public static NetworkInterface[] GetAllNetworkInterfaces(){
+#if !DISABLE_CAS_USE
(new NetworkInformationPermission(NetworkInformationAccess.Read)).Demand();
+#endif
return SystemNetworkInterface.GetNetworkInterfaces();
}
// </copyright>
//------------------------------------------------------------------------------
+#if MONO
+#undef FEATURE_PAL
+#endif
namespace System.Net {
using System.Collections;
using System.Collections.Generic;
private AuthenticationLevel m_AuthenticationLevel;
private TokenImpersonationLevel m_ImpersonationLevel;
#endif
+
private RequestCachePolicy m_CachePolicy;
private RequestCacheProtocol m_CacheProtocol;
private RequestCacheBinding m_CacheBinding;
throw new ArgumentNullException("creator");
}
+#if !DISABLE_CAS_USE
ExceptionHelper.WebPermissionUnrestricted.Demand();
+#endif
// Lock this object, then walk down PrefixList looking for a place to
// to insert this prefix.
lock (InternalSyncObject) {
if (s_PrefixList == null) {
GlobalLog.Print("WebRequest::Initialize(): calling ConfigurationManager.GetSection()");
+#if MONO
+ s_PrefixList = PopulatePrefixList ();
+#else
s_PrefixList = WebRequestModulesSectionInternal.GetSection().WebRequestModules;
+#endif
}
}
}
}
}
+#if MONO
+ static ArrayList PopulatePrefixList ()
+ {
+ var res = new ArrayList();
+
+#if MOBILE || !CONFIGURATION_DEP
+ IWebRequestCreate http = new HttpRequestCreator ();
+ res.Add(new WebRequestPrefixElement("http", http));
+ res.Add(new WebRequestPrefixElement("https", http));
+ res.Add(new WebRequestPrefixElement("file", new FileWebRequestCreator ()));
+ res.Add(new WebRequestPrefixElement("ftp", new FtpRequestCreator ()));
+#else
+ object cfg = ConfigurationManager.GetSection ("system.net/webRequestModules");
+ WebRequestModulesSection s = cfg as WebRequestModulesSection;
+ if (s != null) {
+ foreach (WebRequestModuleElement el in s.WebRequestModules)
+ res.Add (new WebRequestPrefixElement(el.Prefix, el.Type));
+ }
+#endif
+ return res;
+ }
+#endif
+
+
// constructors
/// <devdoc>
return RequestCacheManager.GetBinding(string.Empty).Policy;
}
set {
+#if !DISABLE_CAS_USE
// This is a replacement of RequestCachePermission demand since we are not including the latest in the product.
ExceptionHelper.WebPermissionUnrestricted.Demand();
+#endif
RequestCacheBinding binding = RequestCacheManager.GetBinding(string.Empty);
RequestCacheManager.SetBinding(string.Empty, new RequestCacheBinding(binding.Cache, binding.Validator, value));
}
}
-
+#if !MONO
// Methods to retrieve the context of the "reading phase" and of the "writing phase" of the request.
// Each request type can define what goes into what phase. Typically, the writing phase corresponds to
// GetRequestStream() and the reading phase to GetResponse(), but if there's no request body, both phases
{
throw ExceptionHelper.MethodNotImplementedException;
}
-
+#endif
//
//
{
get
{
+#if !DISABLE_CAS_USE
ExceptionHelper.WebPermissionUnrestricted.Demand();
+#endif
return InternalDefaultWebProxy;
}
set
{
+#if !DISABLE_CAS_USE
ExceptionHelper.WebPermissionUnrestricted.Demand();
+#endif
InternalDefaultWebProxy = value;
}
}
//
public static IWebProxy GetSystemWebProxy()
{
+#if !DISABLE_CAS_USE
ExceptionHelper.WebPermissionUnrestricted.Demand();
+#endif
return InternalGetSystemWebProxy();
}
internal static IWebProxy InternalGetSystemWebProxy()
{
+#if MONO
+ // FIXME: Need to break mobile internal API
+ return WebProxy.CreateDefaultProxy();
+#else
return new WebProxyWrapperOpaque(new WebProxy(true));
+#endif
}
//
}
}
-
+#if !MONO
//
internal void SetupCacheProtocol(Uri uri)
{
s_EtwFireEndGetRequestStream(this, success, synchronous);
}
}
+#endif
} // class WebRequest
} // namespace System.Net
{
internal Semaphore(int initialCount, int maxCount) : base() {
lock (this) {
+#if MONO
+ bool created;
+ Handle = System.Threading.Semaphore.CreateSemaphore_internal(initialCount, maxCount, null, out created);
+#else
//
Handle = UnsafeNclNativeMethods.CreateSemaphore(IntPtr.Zero, initialCount, maxCount, IntPtr.Zero);
+#endif
}
}
*/
internal bool ReleaseSemaphore() {
-#if DEBUG
+#if MONO
+ bool fail;
+ var ret = System.Threading.Semaphore.ReleaseSemaphore_internal (Handle, 1, out fail);
+ return !fail;
+#else
+#if DEBUG
int previousCount;
bool success = UnsafeNclNativeMethods.ReleaseSemaphore(Handle, 1, out previousCount);
GlobalLog.Print("ReleaseSemaphore#"+ValidationHelper.HashString(this)+" success:"+success+" previousCount:"+previousCount.ToString());
return success;
#else
return UnsafeNclNativeMethods.ReleaseSemaphore(Handle, 1, IntPtr.Zero);
-#endif
+#endif
+#endif
}
/*
static TimerThread() {
s_ThreadEvents = new WaitHandle[] { s_ThreadShutdownEvent, s_ThreadReadyEvent };
+#if MONO_FEATURE_MULTIPLE_APPDOMAINS
AppDomain.CurrentDomain.DomainUnload += new EventHandler(OnDomainUnload);
+#endif
}
/// <summary>
/// </devdoc>
[Obsolete("This method has been deprecated. Please use the proxy selected for you by default. http://go.microsoft.com/fwlink/?linkid=14202")]
public static WebProxy GetDefaultProxy() {
+#if !DISABLE_CAS_USE
ExceptionHelper.WebPermissionUnrestricted.Demand();
+#endif
return new WebProxy(true);
}
if (useRegistry) {
// just make the proxy advanced, don't populate with any settings
// note - this will happen in the context of the user performing the deserialization (their proxy settings get read)
+#if !DISABLE_CAS_USE
ExceptionHelper.WebPermissionUnrestricted.Demand();
+#endif
UnsafeUpdateFromRegistry();
return;
}
}
}
+#if MONO
+ public static IWebProxy CreateDefaultProxy ()
+ {
+#if MONOTOUCH
+ return Mono.Net.CFNetwork.GetDefaultProxy ();
+#elif MONODROID
+ // Return the system web proxy. This only works for ICS+.
+ var data = AndroidPlatform.GetDefaultProxy ();
+ if (data != null)
+ return data;
+#else
+ if (Platform.IsMacOS) {
+ var data = Mono.Net.CFNetwork.GetDefaultProxy ();
+ if (data != null)
+ return data;
+ }
+#endif
+
+ return new WebProxy (true);
+ }
+#endif
+
// This constructor is used internally to make WebProxies that read their state from the registry.
//
internal WebProxy(bool enableAutoproxy)
internal void UnsafeUpdateFromRegistry() {
GlobalLog.Assert(!_UseRegistry, "WebProxy#{0}::UnsafeUpdateFromRegistry()|_UseRegistry ScriptEngine#{1}", ValidationHelper.HashString(this), ValidationHelper.HashString(m_ScriptEngine));
_UseRegistry = true;
-#if !FEATURE_PAL
+#if !FEATURE_PAL || !MOBILE
ScriptEngine = new AutoWebProxyScriptEngine(this, true);
WebProxyData webProxyData = ScriptEngine.GetWebProxyData();
#endif
}
finally {
+#if !DISABLE_CAS_USE
CodeAccessPermission.RevertAssert();
+#endif
}
}
factory = c.FactoryInstanceFromCode(code, options);
}
finally {
+#if !DISABLE_CAS_USE
CodeAccessPermission.RevertAssert();
+#endif
}
return factory;
}
c.GenerateRegexType(pattern, options, fullname, regexes[i].IsPublic, code, tree, factory, mTimeout);
}
finally {
+#if !DISABLE_CAS_USE
CodeAccessPermission.RevertAssert();
+#endif
}
}
}
}
finally {
+#if !DISABLE_CAS_USE
CodeAccessPermission.RevertAssert();
+#endif
}
}
[System.Security.SecurityCritical] // auto-generated
internal virtual String InternalToString()
{
+#if !DISABLE_CAS_USE
try
{
#pragma warning disable 618
//under normal conditions there should be no exceptions
//however if something wrong happens we still can call the usual ToString
}
+#endif
// Get the current stack trace string. On CoreCLR we don't bother
// to try and include file/line-number information because all AppDomains
return obj == (object)this;
}
+#if !MONO
public override int GetHashCode()
{
return RuntimeHelpers.GetHashCode(this);
}
+#endif
#if !FEATURE_CORECLR
public static bool operator ==(RuntimeType left, RuntimeType right)
-->\r
<PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+$(ProjectDir)\..\jay\jay -ct < $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\parser\ILParser.jay > $(ProjectDir)\ILParser.cs
+
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
+$(ProjectDir)\..\jay\jay -ct < $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\parser\ILParser.jay > $(ProjectDir)\ILParser.cs
+
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
int TokenizePragmaWarningIdentifier (ref int c, ref bool identifier)
{
-
if ((c >= '0' && c <= '9') || is_identifier_start_character (c)) {
int number;
while (c == ' ' || c == '\t')
c = get_char ();
+ if (c == '\n' || c == UnicodeLS || c == UnicodePS)
+ advance_line ();
+
return number;
}
//
// Uwrap delegate from Expression<T>
//
- q = TypeManager.GetTypeArguments (q)[0];
- p = TypeManager.GetTypeArguments (p)[0];
+ q = TypeManager.GetTypeArguments (q) [0];
+ p = TypeManager.GetTypeArguments (p) [0];
}
var p_m = Delegate.GetInvokeMethod (p);
// if p has a return type Y, and q is void returning, then C1 is the better conversion.
//
if (q.Kind == MemberKind.Void) {
- return p.Kind != MemberKind.Void ? 1: 0;
+ return p.Kind != MemberKind.Void ? 1 : 0;
}
- var am = (AnonymousMethodExpression) a.Expr;
+ var am = (AnonymousMethodExpression)a.Expr;
//
// When anonymous method is an asynchronous, and P has a return type Task<Y1>, and Q has a return type Task<Y2>
//
if (p.IsGenericTask || q.IsGenericTask) {
if (am.Block.IsAsync && p.IsGenericTask && q.IsGenericTask) {
- q = q.TypeArguments[0];
- p = p.TypeArguments[0];
+ q = q.TypeArguments [0];
+ p = p.TypeArguments [0];
}
}
if (argument_type == q)
return 2;
- //
- // The parameters are identicial and return type is not void, use better type conversion
- // on return type to determine better one
- //
- return BetterTypeConversion (ec, p, q);
+ return IsBetterConversionTarget (ec, p, q);
+ }
+
+ static int IsBetterConversionTarget (ResolveContext rc, TypeSpec p, TypeSpec q)
+ {
+ if ((p.Kind == MemberKind.Delegate || p.IsExpressionTreeType) && (q.Kind == MemberKind.Delegate || q.IsExpressionTreeType)) {
+
+ if (p.Kind != MemberKind.Delegate) {
+ p = TypeManager.GetTypeArguments (p) [0];
+ }
+
+ if (q.Kind != MemberKind.Delegate) {
+ q = TypeManager.GetTypeArguments (q) [0];
+ }
+
+ var p_m = Delegate.GetInvokeMethod (p);
+ var q_m = Delegate.GetInvokeMethod (q);
+
+ p = p_m.ReturnType;
+ q = q_m.ReturnType;
+
+ //
+ // if p is void returning, and q has a return type Y, then C2 is the better conversion.
+ //
+ if (p.Kind == MemberKind.Void) {
+ return q.Kind != MemberKind.Void ? 2 : 0;
+ }
+
+ //
+ // if p has a return type Y, and q is void returning, then C1 is the better conversion.
+ //
+ if (q.Kind == MemberKind.Void) {
+ return p.Kind != MemberKind.Void ? 1 : 0;
+ }
+
+ return IsBetterConversionTarget (rc, p, q);
+ }
+
+ if (p.IsGenericTask && q.IsGenericTask) {
+ q = q.TypeArguments [0];
+ p = p.TypeArguments [0];
+ return IsBetterConversionTarget (rc, p, q);
+ }
+
+ if (p.IsNullableType) {
+ p = Nullable.NullableInfo.GetUnderlyingType (p);
+ if (!BuiltinTypeSpec.IsPrimitiveType (p))
+ return 0;
+ }
+
+ if (q.IsNullableType) {
+ q = Nullable.NullableInfo.GetUnderlyingType (q);
+ if (!BuiltinTypeSpec.IsPrimitiveType (q))
+ return 0;
+ }
+
+ return BetterTypeConversion (rc, p, q);
}
//
return 1;
}
- // FIXME: handle lifted operators
-
// TODO: this is expensive
Expression p_tmp = new EmptyExpression (p);
Expression q_tmp = new EmptyExpression (q);
this.importer = importer;
domain = new Universe (UniverseOptions.MetadataOnly | UniverseOptions.ResolveMissingMembers |
UniverseOptions.DisableFusion | UniverseOptions.DecodeVersionInfoAttributeBlobs |
- UniverseOptions.DeterministicOutput);
+ UniverseOptions.DeterministicOutput | UniverseOptions.DisableDefaultAssembliesLookup);
domain.AssemblyResolve += AssemblyReferenceResolver;
loaded_names = new List<Tuple<AssemblyName, string, Assembly>> ();
-->\r
<PropertyGroup>\r
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
-$(ProjectDir)\..\jay\jay -ct < $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\cs-parser.jay > $(ProjectDir)\cs-parser.cs\r
+$(ProjectDir)\..\jay\jay -ct < $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\cs-parser.jay > $(ProjectDir)\cs-parser.cs
+
</PreBuildEvent>\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
-$(ProjectDir)\..\jay\jay.exe -ct < $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\cs-parser.jay > $(ProjectDir)\cs-parser.cs\r
-\r
- </PreBuildEvent>\r
+$(ProjectDir)\..\jay\jay -ct < $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\cs-parser.jay > $(ProjectDir)\cs-parser.cs\r
\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
\r
+ </PreBuildEvent>\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
--- /dev/null
+using System;
+using System.Threading.Tasks;
+using System.Linq.Expressions;
+
+public static class Program
+{
+ public delegate void DelegateVoid (int arg);
+ public delegate int DelegateInt (string arg);
+
+ public static int Main ()
+ {
+ Foo (Bar);
+
+ TT (null);
+ NN (0);
+ NN2 (1);
+ Complex (null);
+ return 0;
+ }
+
+ static void TT (Task<string> a)
+ {
+ }
+
+ static void TT (Task<object> b)
+ {
+ throw new ApplicationException ("wrong overload");
+ }
+
+ static void NN (sbyte a)
+ {
+ }
+
+ static void NN (uint? b)
+ {
+ throw new ApplicationException ("wrong overload");
+ }
+
+ static void NN2 (sbyte? a)
+ {
+ }
+
+ static void NN2 (uint? b)
+ {
+ throw new ApplicationException ("wrong overload");
+ }
+
+ public static void Bar (int arg)
+ {
+ }
+
+ public static int Bar (string arg)
+ {
+ return 2;
+ }
+
+ public static void Foo (DelegateVoid input)
+ {
+ throw new ApplicationException ("wrong overload");
+ }
+
+ public static void Foo (DelegateInt input)
+ {
+ }
+
+ static void Complex (Expression<Func<Task<short>>> arg)
+ {
+ }
+
+ static void Complex (Expression<Func<Task<ulong>>> arg)
+ {
+ throw new ApplicationException ("wrong overload");
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<symbols>
+ <files>
+ <file id="1" name="test-debug-30.cs" checksum="d3addfa69f16faf00991ef839451a975" />
+ </files>
+ <methods>
+ <method token="0x6000001">
+ <sequencepoints />
+ <locals />
+ <scopes />
+ </method>
+ <method token="0x6000002">
+ <sequencepoints>
+ <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
+ <entry il="0x1" row="8" col="3" file_ref="1" hidden="false" />
+ <entry il="0x6" row="9" col="2" file_ref="1" hidden="false" />
+ </sequencepoints>
+ <locals />
+ <scopes />
+ </method>
+ <method token="0x6000003">
+ <sequencepoints>
+ <entry il="0x0" row="15" col="2" file_ref="1" hidden="false" />
+ <entry il="0x1" row="16" col="3" file_ref="1" hidden="false" />
+ <entry il="0x6" row="17" col="2" file_ref="1" hidden="false" />
+ </sequencepoints>
+ <locals />
+ <scopes />
+ </method>
+ </methods>
+</symbols>
\ No newline at end of file
--- /dev/null
+class PragmaNewLinesParsing
+{
+#pragma warning disable RECS0029
+#pragma warning restore RECS0029
+
+ void Foo ()
+ {
+ return;
+ }
+
+#pragma warning disable RECS0029 // here
+#pragma warning restore RECS0029 /* end */
+
+ public static void Main ()
+ {
+ return;
+ }
+}
\ No newline at end of file
</method>
</type>
</test>
+ <test name="test-935.cs">
+ <type name="Program">
+ <method name="Int32 Main()" attrs="150">
+ <size>73</size>
+ </method>
+ <method name="Void TT(System.Threading.Tasks.Task`1[System.String])" attrs="145">
+ <size>2</size>
+ </method>
+ <method name="Void TT(System.Threading.Tasks.Task`1[System.Object])" attrs="145">
+ <size>12</size>
+ </method>
+ <method name="Void NN(SByte)" attrs="145">
+ <size>2</size>
+ </method>
+ <method name="Void NN(System.Nullable`1[System.UInt32])" attrs="145">
+ <size>12</size>
+ </method>
+ <method name="Void NN2(System.Nullable`1[System.SByte])" attrs="145">
+ <size>2</size>
+ </method>
+ <method name="Void NN2(System.Nullable`1[System.UInt32])" attrs="145">
+ <size>12</size>
+ </method>
+ <method name="Void Bar(Int32)" attrs="150">
+ <size>2</size>
+ </method>
+ <method name="Int32 Bar(System.String)" attrs="150">
+ <size>10</size>
+ </method>
+ <method name="Void Foo(DelegateVoid)" attrs="150">
+ <size>12</size>
+ </method>
+ <method name="Void Foo(DelegateInt)" attrs="150">
+ <size>2</size>
+ </method>
+ <method name="Void Complex(System.Linq.Expressions.Expression`1[System.Func`1[System.Threading.Tasks.Task`1[System.Int16]]])" attrs="145">
+ <size>2</size>
+ </method>
+ <method name="Void Complex(System.Linq.Expressions.Expression`1[System.Func`1[System.Threading.Tasks.Task`1[System.UInt64]]])" attrs="145">
+ <size>12</size>
+ </method>
+ </type>
+ <type name="Program+DelegateVoid">
+ <method name="Void Invoke(Int32)" attrs="454">
+ <size>0</size>
+ </method>
+ <method name="System.IAsyncResult BeginInvoke(Int32, System.AsyncCallback, System.Object)" attrs="454">
+ <size>0</size>
+ </method>
+ <method name="Void EndInvoke(System.IAsyncResult)" attrs="454">
+ <size>0</size>
+ </method>
+ <method name="Void .ctor(Object, IntPtr)" attrs="6278">
+ <size>0</size>
+ </method>
+ </type>
+ <type name="Program+DelegateInt">
+ <method name="Int32 Invoke(System.String)" attrs="454">
+ <size>0</size>
+ </method>
+ <method name="System.IAsyncResult BeginInvoke(System.String, System.AsyncCallback, System.Object)" attrs="454">
+ <size>0</size>
+ </method>
+ <method name="Int32 EndInvoke(System.IAsyncResult)" attrs="454">
+ <size>0</size>
+ </method>
+ <method name="Void .ctor(Object, IntPtr)" attrs="6278">
+ <size>0</size>
+ </method>
+ </type>
+ </test>
<test name="test-94.cs">
<type name="Base">
<method name="Int32 IVehicle.Start()" attrs="481">
</method>
</type>
</test>
+ <test name="test-debug-30.cs">
+ <type name="PragmaNewLinesParsing">
+ <method name="Void Foo()" attrs="129">
+ <size>7</size>
+ </method>
+ <method name="Void Main()" attrs="150">
+ <size>7</size>
+ </method>
+ <method name="Void .ctor()" attrs="6278">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="test-decl-expr-01.cs">
<type name="DeclarationExpression">
<method name="Int32 Main()" attrs="150">
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
if (res != 0)
return res;
+ if (ma.HasGenericParameters != mb.HasGenericParameters)
+ return ma.HasGenericParameters ? -1 : 1;
+
+ if (ma.HasGenericParameters && mb.HasGenericParameters) {
+ res = ma.GenericParameters.Count - mb.GenericParameters.Count;
+ if (res != 0)
+ return res;
+ }
+
// operators can differ by only return type
return string.CompareOrdinal (ma.ReturnType.FullName, mb.ReturnType.FullName);
}
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
LIB_REFS = System.Xml System
PROGRAM = mconfig.exe
-BUILT_SOURCES=Mono.MonoConfig/consts.cs
-
-Mono.MonoConfig/consts.cs: Mono.MonoConfig/consts.cs.in
- sed -e "s;@MONO_SYSCONFDIR@;$(sysconfdir);g" < $< > $@
-
install-local: install-local-data
install-local-data:
$(MKINSTALLDIRS) $(DESTDIR)$(sysconfdir)/mono/mconfig/
$(INSTALL_DATA) data/config.xml $(DESTDIR)$(sysconfdir)/mono/mconfig
-EXTRA_DISTFILES = TODO data/config.xml Mono.MonoConfig/consts.cs.in
+EXTRA_DISTFILES = TODO data/config.xml
include ../../build/executable.make
+++ /dev/null
-//
-// Authors:
-// Marek Habersack (mhabersack@novell.com)
-//
-// (C) 2007 Novell, Inc
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-
-namespace Mono.MonoConfig
-{
- public class Constants
- {
- public static readonly string GlobalConfigPath;
-
- static Constants ()
- {
- GlobalConfigPath = String.Format ("@MONO_SYSCONFDIR@{0}mono{0}mconfig{0}config.xml",
- Path.DirectorySeparatorChar);
- }
- }
-}
<Compile Include="Mono.MonoConfig\IDocumentNodeHandler.cs" />\r
<Compile Include="Mono.MonoConfig\IFeatureGenerator.cs" />\r
<Compile Include="Mono.MonoConfig\IStorageConsumer.cs" />\r
- <Compile Include="Mono.MonoConfig\Section.cs" />\r
- <Compile Include="Mono.MonoConfig\consts.cs" />\r </ItemGroup>\r
+ <Compile Include="Mono.MonoConfig\Section.cs" />\r </ItemGroup>\r
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
Other similar extension points exist, see Microsoft.Common.targets.\r
<Target Name="BeforeBuild">\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
class MConfig
{
static string[] configPaths = {
- Constants.GlobalConfigPath,
+ Path.GetFullPath (Path.Combine (Environment.CommandLine, "..", "..", "..","..", "etc", "mono", "mconfig", "config.xml")),
Path.Combine (ConfigPath, "config.xml"),
Path.Combine (".", "mconfig.xml"),
null
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
$(MAKE) Test/DocTest-DropNS-unified-multitest.dll
# mdoc update for both classic and unified
- $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic -multiassembly
- $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework -multiassembly
+ $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic
+ $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework
# now run it again to verify idempotency
- $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic -multiassembly
- $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework -multiassembly
+ $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic
+ $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework
diff --exclude=.svn -rup Test/en.expected-dropns-multi Test/en.actual
$(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual Test/DocTest-DropNS-unified.dll --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework
# mdoc update for both classic and unified
- $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic -multiassembly
- $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework -multiassembly
+ $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-CLASSIC) --api-style=classic
+ $(MONO) $(PROGRAM) update --exceptions=all -o Test/en.actual $(MULTI-UNIFIED) --api-style=unified --dropns Test/DocTest-DropNS-unified.dll=MyFramework --dropns Test/DocTest-DropNS-unified-multitest.dll=MyFramework
diff --exclude=.svn -rup Test/en.expected-dropns-multi-withexisting Test/en.actual
string apistyle = string.Empty;
bool isClassicRun;
- bool multiassembly;
+
bool delete;
bool show_exceptions;
bool no_assembly_versions, ignore_missing_types;
{
return !string.IsNullOrWhiteSpace (droppedNamespace);
}
-
+
+ /// <summary>Logic flag to signify that we should list assemblies at the method level, since there are multiple
+ /// assemblies for a given type/method.</summary>
+ public bool IsMultiAssembly {
+ get {
+ return apistyle == "classic" || apistyle == "unified";
+ }
+ }
static List<string> droppedAssemblies = new List<string>();
{ "preserve",
"Do not delete members that don't exist in the assembly, but rather mark them as preserved.",
v => PreserveTag = "true" },
- { "multiassembly",
- "Allow types to be in multiple assemblies.",
- v => multiassembly = true },
{ "api-style=",
"Denotes the apistyle. Currently, only `classic` and `unified` are supported. `classic` set of assemblies should be run first, immediately followed by 'unified' assemblies with the `dropns` parameter.",
- v => apistyle = v.ToLowerInvariant ()},
+ v => { apistyle = v.ToLowerInvariant (); }},
};
var assemblies = Parse (p, args, "update",
"[OPTIONS]+ ASSEMBLIES",
private void AddIndexAssembly (AssemblyDefinition assembly, XmlElement parent)
{
XmlElement index_assembly = null;
- if (multiassembly)
+ if (IsMultiAssembly)
index_assembly = (XmlElement)parent.SelectSingleNode ("Assembly[@Name='"+ assembly.Name.Name +"']");
if (index_assembly == null)
XmlElement index_types = WriteElement(index.DocumentElement, "Types");
XmlElement index_assemblies = WriteElement(index.DocumentElement, "Assemblies");
- if (!multiassembly)
+ if (!IsMultiAssembly)
index_assemblies.RemoveAll ();
WriteElementText(me, "MemberType", GetMemberType(mi));
if (!no_assembly_versions) {
- if (!multiassembly)
+ if (!IsMultiAssembly)
UpdateAssemblyVersions (me, mi, true);
else {
var node = AddAssemblyNameToNode (me, mi.Module);
member.AppendChild (link);
AddTargets (em, info);
- extensionMethods.Add (em);
+ var sig = em.SelectSingleNode ("Member/MemberSignature[@Language='C#']/@Value");
+ if (!IsMultiAssembly || (IsMultiAssembly && sig != null && !extensionMethods.Any (ex => ex.SelectSingleNode ("Member/MemberSignature[@Language='C#']/@Value").Value == sig.Value))) {
+ extensionMethods.Add (em);
+ }
}
private static void RemoveExcept (XmlNode node, string[] except)
private bool UpdateAssemblyVersions(XmlElement root, AssemblyDefinition assembly, string[] assemblyVersions, bool add)
{
- if (multiassembly)
+ if (IsMultiAssembly)
return false;
XmlElement av = (XmlElement) root.SelectSingleNode ("AssemblyVersions");
public string WillDeleteInV2Classic {get;set;}
#endif
}
+ public static class MyClassExtensions {
+ public static bool AnExtension (this MyClass value) { return false; }
+ }
#if DELETETEST
public class TypeOnlyInClassic {}
#endif
}
+ public static class MyClassExtensions {
+ public static bool AnExtension (this MyClass value) { return false; }
+ }
#if DELETETEST
public struct nint {
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
<MemberType>Constructor</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
--- /dev/null
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+ <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
<Overview>
<Assemblies>
+ <Assembly Name="DocTest-DropNS-classic" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
<Assembly Name="DocTest-DropNS-unified" Version="0.0.0.0">
<Attributes>
<Attribute>
<Types>
<Namespace Name="MyFramework.MyNamespace">
<Type Name="MyClass" Kind="Class" />
+ <Type Name="MyClassExtensions" Kind="Class" />
</Namespace>
</Types>
<Title>DocTest-DropNS-classic</Title>
+ <ExtensionMethods>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:MyFramework.MyNamespace.MyClass" />
+ </Targets>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+ </Member>
+ </ExtensionMethod>
+ </ExtensionMethods>
</Overview>
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
<MemberType>Constructor</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
--- /dev/null
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+ <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
<remarks>To be added.</remarks>
</Docs>
<Members>
- <Member MemberName=".ctor">
+ <Member MemberName=".ctor" apistyle="classic">
<MemberSignature Language="C#" Value="public MyOtherClass ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
<MemberType>Constructor</MemberType>
- <AssemblyInfo>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<remarks>To be added.</remarks>
</Docs>
</Member>
- <Member MemberName="Hello">
+ <Member MemberName="Hello" apistyle="classic">
<MemberSignature Language="C#" Value="public float Hello (int value);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
<MemberType>Method</MemberType>
- <AssemblyInfo>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<remarks>To be added.</remarks>
</Docs>
</Member>
- <Member MemberName="MyProperty">
+ <Member MemberName="MyProperty" apistyle="classic">
<MemberSignature Language="C#" Value="public string MyProperty { get; set; }" />
<MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
<MemberType>Property</MemberType>
- <AssemblyInfo>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<Overview>
<Assemblies>
+ <Assembly Name="DocTest-DropNS-classic" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
<Assembly Name="DocTest-DropNS-unified" Version="0.0.0.0">
<Attributes>
<Attribute>
<Types>
<Namespace Name="MyFramework.MyNamespace">
<Type Name="MyClass" Kind="Class" />
+ <Type Name="MyClassExtensions" Kind="Class" />
</Namespace>
<Namespace Name="MyFramework.MyOtherNamespace">
<Type Name="MyOtherClass" Kind="Class" />
</Namespace>
</Types>
<Title>Untitled</Title>
+ <ExtensionMethods>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:MyFramework.MyNamespace.MyClass" />
+ </Targets>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+ </Member>
+ </ExtensionMethod>
+ </ExtensionMethods>
</Overview>
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
<MemberType>Constructor</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<MemberSignature Language="ILAsm" Value=".property instance string AddedInV2" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance string AddedInV2Classic" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance string AddedInV2Unified" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance string InBoth" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance string InBothClassic" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance valuetype MyFramework.MyNamespace.nint InBothMagicType" apistyle="unified" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance string InBothUnified" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
--- /dev/null
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+ <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
<remarks>To be added.</remarks>
</Docs>
<Members>
- <Member MemberName=".ctor">
+ <Member MemberName=".ctor" apistyle="classic">
<MemberSignature Language="C#" Value="public TypeOnlyInClassic ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
<MemberType>Constructor</MemberType>
- <AssemblyInfo>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<Type Name="WillDelete" FullName="MyFramework.MyNamespace.WillDelete">
<TypeSignature Language="C#" Value="public class WillDelete" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit WillDelete extends System.Object" />
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
<Base>
<BaseTypeName>System.Object</BaseTypeName>
</Base>
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
<MemberType>Constructor</MemberType>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<MemberSignature Language="ILAsm" Value=".property instance string Name" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-deletetest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<Overview>
<Assemblies>
+ <Assembly Name="DocTest-DropNS-classic-deletetest" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
<Assembly Name="DocTest-DropNS-unified-deletetest" Version="0.0.0.0">
<Attributes>
<Attribute>
<Types>
<Namespace Name="MyFramework.MyNamespace">
<Type Name="MyClass" Kind="Class" />
+ <Type Name="MyClassExtensions" Kind="Class" />
<Type Name="nint" Kind="Structure" />
</Namespace>
</Types>
<Title>DocTest-DropNS-classic-deletetest</Title>
+ <ExtensionMethods>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:MyFramework.MyNamespace.MyClass" />
+ </Targets>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+ </Member>
+ </ExtensionMethod>
+ </ExtensionMethods>
</Overview>
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
<MemberType>Constructor</MemberType>
<AssemblyInfo apistyle="classic">
- <AssemblyVersion>0.0.0.0</AssemblyVersion>
<AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
- <AssemblyVersion>0.0.0.0</AssemblyVersion>
<AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="classic">
<AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo apistyle="classic">
- <AssemblyVersion>0.0.0.0</AssemblyVersion>
<AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
- <AssemblyVersion>0.0.0.0</AssemblyVersion>
<AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="classic">
<AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
<MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
- <AssemblyVersion>0.0.0.0</AssemblyVersion>
<AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
- <AssemblyVersion>0.0.0.0</AssemblyVersion>
<AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="classic">
<AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
<MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="classic">
- <AssemblyVersion>0.0.0.0</AssemblyVersion>
<AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="classic">
<AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
<MemberSignature Language="ILAsm" Value=".property instance char OnlyInUnified" />
<MemberType>Property</MemberType>
<AssemblyInfo apistyle="unified">
- <AssemblyVersion>0.0.0.0</AssemblyVersion>
<AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo apistyle="unified">
<AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
--- /dev/null
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+ <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
<Types>
<Namespace Name="MyFramework.MyNamespace">
<Type Name="MyClass" Kind="Class" />
+ <Type Name="MyClassExtensions" Kind="Class" />
<Type Name="OnlyInMulti" Kind="Class" />
</Namespace>
</Types>
<Title>DocTest-DropNS-classic</Title>
+ <ExtensionMethods>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:MyFramework.MyNamespace.MyClass" />
+ </Targets>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+ </Member>
+ </ExtensionMethod>
+ </ExtensionMethods>
</Overview>
--- /dev/null
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+ <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="classic">
+ <AssemblyName>DocTest-DropNS-classic-multitest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo apistyle="unified">
+ <AssemblyName>DocTest-DropNS-unified-multitest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
<Types>
<Namespace Name="MyFramework.MyNamespace">
<Type Name="MyClass" Kind="Class" />
+ <Type Name="MyClassExtensions" Kind="Class" />
<Type Name="OnlyInMulti" Kind="Class" />
</Namespace>
</Types>
<Title>Untitled</Title>
+ <ExtensionMethods>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:MyFramework.MyNamespace.MyClass" />
+ </Targets>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+ </Member>
+ </ExtensionMethod>
+ </ExtensionMethods>
</Overview>
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
</PreBuildEvent>\r
-\r
- <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">\r
-\r
+ <PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+
</PostBuildEvent>\r
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">\r
\r
* Changes which are already detected at runtime, like the addition
* of icalls, do not require an increment.
*/
-#define MONO_CORLIB_VERSION 147
+#define MONO_CORLIB_VERSION 148
typedef struct
{
MonoObject *
ves_icall_System_AppDomain_GetData (MonoAppDomain *ad, MonoString *name)
{
+ MonoError error;
MonoDomain *add;
MonoObject *o;
char *str;
add = ad->data;
g_assert (add);
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
mono_domain_lock (add);
#else
char *fname;
- fname = mono_string_to_utf8 (friendly_name);
+ fname = mono_string_to_utf8_checked (friendly_name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
ad = mono_domain_create_appdomain_internal (fname, setup, &error);
g_free (fname);
return NULL;
}
- name = filename = mono_string_to_utf8 (fname);
+ name = filename = mono_string_to_utf8_checked (fname, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
ass = mono_assembly_open_full (filename, &status, refOnly);
g_assert (assRef);
- name = mono_string_to_utf8 (assRef);
+ name = mono_string_to_utf8_checked (assRef, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
parsed = mono_assembly_name_parse (name, &aname);
g_free (name);
static MonoAssemblyName*
mono_assembly_apply_binding (MonoAssemblyName *aname, MonoAssemblyName *dest_name)
{
+ MonoError error;
MonoAssemblyBindingInfo *info, *info2;
MonoImage *ppimage;
MonoDomain *domain;
if (domain && domain->setup && domain->setup->configuration_file) {
mono_domain_lock (domain);
if (!domain->assembly_bindings_parsed) {
- gchar *domain_config_file_name = mono_string_to_utf8 (domain->setup->configuration_file);
+ gchar *domain_config_file_name = mono_string_to_utf8_checked (domain->setup->configuration_file, &error);
+ /* expect this to succeed because mono_domain_set_options_from_config () did
+ * the same thing when the domain was created. */
+ mono_error_assert_ok (&error);
+
gchar *domain_config_file_path = mono_portability_find_file (domain_config_file_name, TRUE);
if (!domain_config_file_path)
MonoClass *fieldhandle_class;
MonoClass *methodhandle_class;
MonoClass *systemtype_class;
- MonoClass *monotype_class;
MonoClass *runtimetype_class;
MonoClass *exception_class;
MonoClass *threadabortexception_class;
if (setup_finished)
return TRUE;
- keypad_xmit_str = keypad != NULL ? mono_string_to_utf8 (keypad) : NULL;
+ keypad_xmit_str = NULL;
+ if (keypad != NULL) {
+ keypad_xmit_str = mono_string_to_utf8_checked (keypad, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
+ }
console_set_signal_handlers ();
setup_finished = TRUE;
if (!atexit_called) {
- if (teardown != NULL)
- teardown_str = mono_string_to_utf8 (teardown);
+ if (teardown != NULL) {
+ teardown_str = mono_string_to_utf8_checked (teardown, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
+ }
mono_atexit (tty_teardown);
}
void
mono_object_describe (MonoObject *obj)
{
+ MonoError error;
MonoClass* klass;
const char* sep;
if (!obj) {
}
klass = mono_object_class (obj);
if (klass == mono_defaults.string_class) {
- char *utf8 = mono_string_to_utf8 ((MonoString*)obj);
- if (strlen (utf8) > 60) {
+ char *utf8 = mono_string_to_utf8_checked ((MonoString*)obj, &error);
+ mono_error_cleanup (&error); /* FIXME don't swallow the error */
+ if (utf8 && strlen (utf8) > 60) {
utf8 [57] = '.';
utf8 [58] = '.';
utf8 [59] = '.';
utf8 [60] = 0;
}
- g_print ("String at %p, length: %d, '%s'\n", obj, mono_string_length ((MonoString*) obj), utf8);
+ if (utf8) {
+ g_print ("String at %p, length: %d, '%s'\n", obj, mono_string_length ((MonoString*) obj), utf8);
+ } else {
+ g_print ("String at %p, length: %d, unable to decode UTF16\n", obj, mono_string_length ((MonoString*) obj));
+ }
g_free (utf8);
} else if (klass->rank) {
MonoArray *array = (MonoArray*)obj;
mono_defaults.systemtype_class = mono_class_load_from_name (
mono_defaults.corlib, "System", "Type");
- mono_defaults.monotype_class = mono_class_load_from_name (
- mono_defaults.corlib, "System", "MonoType");
-
mono_defaults.runtimetype_class = mono_class_load_from_name (
mono_defaults.corlib, "System", "RuntimeType");
{
MonoObject *type = (MonoObject *)vtable->type;
- if (type->vtable->klass != mono_defaults.monotype_class)
+ if (type->vtable->klass != mono_defaults.runtimetype_class)
MONO_GC_UNREGISTER_ROOT_IF_MOVING (vtable->type);
}
MonoString *
ves_icall_System_IO_MonoIO_FindFirst (MonoString *path,
MonoString *path_with_pattern,
- gint32 *result_attr, gint32 *error,
+ gint32 *result_attr, gint32 *ioerror,
gpointer *handle)
{
+ MonoError error;
WIN32_FIND_DATA data;
HANDLE find_handle;
IncrementalFind *ifh;
MonoString *result;
- *error = ERROR_SUCCESS;
+ *ioerror = ERROR_SUCCESS;
find_handle = FindFirstFile (mono_string_chars (path_with_pattern), &data);
if (find_error == ERROR_FILE_NOT_FOUND)
return NULL;
- *error = find_error;
+ *ioerror = find_error;
return NULL;
}
ifh = g_new (IncrementalFind, 1);
ifh->find_handle = find_handle;
- ifh->utf8_path = mono_string_to_utf8 (path);
+ ifh->utf8_path = mono_string_to_utf8_checked (path, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
ifh->domain = mono_domain_get ();
*handle = ifh;
if (FindNextFile (find_handle, &data) == FALSE){
int e = GetLastError ();
if (e != ERROR_NO_MORE_FILES)
- *error = e;
+ *ioerror = e;
return NULL;
}
}
gint64
mono_filesize_from_path (MonoString *string)
{
+ MonoError error;
struct stat buf;
gint64 res;
- char *path = mono_string_to_utf8 (string);
+ char *path = mono_string_to_utf8_checked (string, &error);
+ mono_error_raise_exception (&error); /* OK to throw, external only without a good alternative */
MONO_ENTER_GC_SAFE;
if (stat (path, &buf) == -1)
MonoString *destinationBackupFileName, MonoBoolean ignoreMetadataErrors,
gint32 *error);
+MONO_RT_EXTERNAL_ONLY
extern gint64
mono_filesize_from_path (MonoString *path);
XXX implement options
*/
static void*
-open_file_map (MonoString *path, int input_fd, int mode, gint64 *capacity, int access, int options, int *error)
+open_file_map (const char *c_path, int input_fd, int mode, gint64 *capacity, int access, int options, int *ioerror)
{
struct stat buf;
- char *c_path = path ? mono_string_to_utf8 (path) : NULL;
MmapHandle *handle = NULL;
int result, fd;
- if (path)
+ if (c_path)
result = stat (c_path, &buf);
else
result = fstat (input_fd, &buf);
if (mode == FILE_MODE_TRUNCATE || mode == FILE_MODE_APPEND || mode == FILE_MODE_OPEN) {
if (result == -1) { //XXX translate errno?
- *error = FILE_NOT_FOUND;
+ *ioerror = FILE_NOT_FOUND;
goto done;
}
}
if (mode == FILE_MODE_CREATE_NEW && result == 0) {
- *error = FILE_ALREADY_EXISTS;
+ *ioerror = FILE_ALREADY_EXISTS;
goto done;
}
* also makes little sense, so don't do the check if th file is one of these.
*/
if (buf.st_size == 0 && !is_special_zero_size_file (&buf)) {
- *error = CAPACITY_SMALLER_THAN_FILE_SIZE;
+ *ioerror = CAPACITY_SMALLER_THAN_FILE_SIZE;
goto done;
}
*capacity = buf.st_size;
} else if (*capacity < buf.st_size) {
- *error = CAPACITY_SMALLER_THAN_FILE_SIZE;
+ *ioerror = CAPACITY_SMALLER_THAN_FILE_SIZE;
goto done;
}
} else {
if (mode == FILE_MODE_CREATE_NEW && *capacity == 0) {
- *error = CAPACITY_SMALLER_THAN_FILE_SIZE;
+ *ioerror = CAPACITY_SMALLER_THAN_FILE_SIZE;
goto done;
}
}
- if (path) //FIXME use io portability?
+ if (c_path) //FIXME use io portability?
fd = open (c_path, file_mode_to_unix (mode) | access_mode_to_unix (access), DEFAULT_FILEMODE);
else
fd = dup (input_fd);
if (fd == -1) { //XXX translate errno?
- *error = COULD_NOT_OPEN;
+ *ioerror = COULD_NOT_OPEN;
goto done;
}
handle->fd = fd;
done:
- g_free (c_path);
return (void*)handle;
}
#define MONO_ANON_FILE_TEMPLATE "/mono.anonmap.XXXXXXXXX"
static void*
-open_memory_map (MonoString *mapName, int mode, gint64 *capacity, int access, int options, int *error)
+open_memory_map (const char *c_mapName, int mode, gint64 *capacity, int access, int options, int *ioerror)
{
- char *c_mapName;
MmapHandle *handle;
if (*capacity <= 1) {
- *error = CAPACITY_MUST_BE_POSITIVE;
+ *ioerror = CAPACITY_MUST_BE_POSITIVE;
return NULL;
}
if (!(mode == FILE_MODE_CREATE_NEW || mode == FILE_MODE_OPEN_OR_CREATE || mode == FILE_MODE_OPEN)) {
- *error = INVALID_FILE_MODE;
+ *ioerror = INVALID_FILE_MODE;
return NULL;
}
- c_mapName = mono_string_to_utf8 (mapName);
-
named_regions_lock ();
handle = (MmapHandle*)g_hash_table_lookup (named_regions, c_mapName);
if (handle) {
if (mode == FILE_MODE_CREATE_NEW) {
- *error = FILE_ALREADY_EXISTS;
+ *ioerror = FILE_ALREADY_EXISTS;
goto done;
}
int unused G_GNUC_UNUSED, alloc_size;
if (mode == FILE_MODE_OPEN) {
- *error = FILE_NOT_FOUND;
+ *ioerror = FILE_NOT_FOUND;
goto done;
}
*capacity = align_up_to_page_size (*capacity);
tmp_dir = g_get_tmp_dir ();
alloc_size = strlen (tmp_dir) + strlen (MONO_ANON_FILE_TEMPLATE) + 1;
if (alloc_size > 1024) {//rather fail that stack overflow
- *error = COULD_NOT_MAP_MEMORY;
+ *ioerror = COULD_NOT_MAP_MEMORY;
goto done;
}
file_name = (char *)alloca (alloc_size);
fd = mkstemp (file_name);
if (fd == -1) {
- *error = COULD_NOT_MAP_MEMORY;
+ *ioerror = COULD_NOT_MAP_MEMORY;
goto done;
}
done:
named_regions_unlock ();
- g_free (c_mapName);
return handle;
}
+/* This is an icall */
void *
-mono_mmap_open_file (MonoString *path, int mode, MonoString *mapName, gint64 *capacity, int access, int options, int *error)
+mono_mmap_open_file (MonoString *path, int mode, MonoString *mapName, gint64 *capacity, int access, int options, int *ioerror)
{
+ MonoError error;
+ MmapHandle *handle = NULL;
g_assert (path || mapName);
- if (!mapName)
- return open_file_map (path, -1, mode, capacity, access, options, error);
+ if (!mapName) {
+ char * c_path = mono_string_to_utf8_checked (path, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
+ handle = open_file_map (c_path, -1, mode, capacity, access, options, ioerror);
+ g_free (c_path);
+ return handle;
+ }
- if (path) {
- MmapHandle *handle;
- char *c_mapName = mono_string_to_utf8 (mapName);
+ char *c_mapName = mono_string_to_utf8_checked (mapName, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
+ if (path) {
named_regions_lock ();
handle = (MmapHandle*)g_hash_table_lookup (named_regions, c_mapName);
if (handle) {
- *error = FILE_ALREADY_EXISTS;
+ *ioerror = FILE_ALREADY_EXISTS;
handle = NULL;
} else {
- handle = (MmapHandle *)open_file_map (path, -1, mode, capacity, access, options, error);
- if (handle) {
- handle->name = g_strdup (c_mapName);
- g_hash_table_insert (named_regions, handle->name, handle);
+ char *c_path = mono_string_to_utf8_checked (path, &error);
+ if (is_ok (&error)) {
+ handle = (MmapHandle *)open_file_map (c_path, -1, mode, capacity, access, options, ioerror);
+ if (handle) {
+ handle->name = g_strdup (c_mapName);
+ g_hash_table_insert (named_regions, handle->name, handle);
+ }
+ } else {
+ handle = NULL;
}
+ g_free (c_path);
}
named_regions_unlock ();
+ } else
+ handle = open_memory_map (c_mapName, mode, capacity, access, options, ioerror);
- g_free (c_mapName);
- return handle;
- }
-
- return open_memory_map (mapName, mode, capacity, access, options, error);
+ g_free (c_mapName);
+ return handle;
}
+/* this is an icall */
void *
-mono_mmap_open_handle (void *input_fd, MonoString *mapName, gint64 *capacity, int access, int options, int *error)
+mono_mmap_open_handle (void *input_fd, MonoString *mapName, gint64 *capacity, int access, int options, int *ioerror)
{
+ MonoError error;
MmapHandle *handle;
if (!mapName) {
- handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
+ handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, ioerror);
} else {
- char *c_mapName = mono_string_to_utf8 (mapName);
+ char *c_mapName = mono_string_to_utf8_checked (mapName, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
named_regions_lock ();
handle = (MmapHandle*)g_hash_table_lookup (named_regions, c_mapName);
if (handle) {
- *error = FILE_ALREADY_EXISTS;
+ *ioerror = FILE_ALREADY_EXISTS;
handle = NULL;
} else {
//XXX we're exploiting wapi HANDLE == FD equivalence. THIS IS FRAGILE, create a _wapi_handle_to_fd call
- handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, error);
+ handle = (MmapHandle *)open_file_map (NULL, GPOINTER_TO_INT (input_fd), FILE_MODE_OPEN, capacity, access, options, ioerror);
handle->name = g_strdup (c_mapName);
g_hash_table_insert (named_regions, handle->name, handle);
}
int
ves_icall_System_IO_InotifyWatcher_AddWatch (int fd, MonoString *name, gint32 mask)
{
+ MonoError error;
char *str, *path;
int retval;
if (name == NULL)
return -1;
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return -1;
path = mono_portability_find_file (str, TRUE);
if (!path)
path = str;
ICALL(MCATTR_2, "GetCustomAttributesInternal", custom_attrs_get_by_type)
ICALL(MCATTR_3, "IsDefinedInternal", custom_attrs_defined_internal)
-ICALL_TYPE(MTYPE, "System.MonoType", MTYPE_1)
-ICALL(MTYPE_1, "GetCorrespondingInflatedConstructor", ves_icall_MonoType_GetCorrespondingInflatedMethod)
-ICALL(MTYPE_2, "GetCorrespondingInflatedMethod", ves_icall_MonoType_GetCorrespondingInflatedMethod)
-ICALL(MTYPE_3, "type_from_obj", ves_icall_MonoType_type_from_obj)
-
#ifndef DISABLE_SOCKETS
ICALL_TYPE(NDNS, "System.Net.Dns", NDNS_1)
ICALL(NDNS_1, "GetHostByAddr_internal(string,string&,string[]&,string[]&)", ves_icall_System_Net_Dns_GetHostByAddr_internal)
ICALL_TYPE(RT, "System.RuntimeType", RT_1)
ICALL(RT_1, "CreateInstanceInternal", ves_icall_System_Activator_CreateInstanceInternal)
-ICALL(RT_2, "GetConstructors_internal", ves_icall_Type_GetConstructors_internal)
-ICALL(RT_3, "GetEvents_internal", ves_icall_Type_GetEvents_internal)
-ICALL(RT_5, "GetFields_internal", ves_icall_Type_GetFields_internal)
-ICALL(RT_6, "GetGenericArgumentsInternal", ves_icall_MonoType_GetGenericArguments)
-ICALL(RT_7, "GetGenericParameterAttributes", ves_icall_Type_GetGenericParameterAttributes)
-ICALL(RT_8, "GetGenericParameterConstraints_impl", ves_icall_Type_GetGenericParameterConstraints)
-ICALL(RT_9, "GetGenericParameterPosition", ves_icall_Type_GetGenericParameterPosition)
-ICALL(RT_10, "GetInterfaceMapData", ves_icall_Type_GetInterfaceMapData)
-ICALL(RT_11, "GetInterfaces", ves_icall_Type_GetInterfaces)
-ICALL(RT_12, "GetMethodsByName", ves_icall_Type_GetMethodsByName)
-ICALL(RT_13, "GetNestedTypes_internal", ves_icall_Type_GetNestedTypes)
-ICALL(RT_14, "GetPacking", ves_icall_Type_GetPacking)
-ICALL(RT_15, "GetPropertiesByName", ves_icall_Type_GetPropertiesByName)
+ICALL(RT_2, "GetConstructors_internal", ves_icall_RuntimeType_GetConstructors_internal)
+ICALL(RT_30, "GetCorrespondingInflatedConstructor", ves_icall_RuntimeType_GetCorrespondingInflatedMethod)
+ICALL(RT_31, "GetCorrespondingInflatedMethod", ves_icall_RuntimeType_GetCorrespondingInflatedMethod)
+ICALL(RT_3, "GetEvents_internal", ves_icall_RuntimeType_GetEvents_internal)
+ICALL(RT_5, "GetFields_internal", ves_icall_RuntimeType_GetFields_internal)
+ICALL(RT_6, "GetGenericArgumentsInternal", ves_icall_RuntimeType_GetGenericArguments)
+ICALL(RT_7, "GetGenericParameterAttributes", ves_icall_RuntimeType_GetGenericParameterAttributes)
+ICALL(RT_8, "GetGenericParameterConstraints_impl", ves_icall_RuntimeType_GetGenericParameterConstraints)
+ICALL(RT_9, "GetGenericParameterPosition", ves_icall_RuntimeType_GetGenericParameterPosition)
+ICALL(RT_10, "GetInterfaceMapData", ves_icall_RuntimeType_GetInterfaceMapData)
+ICALL(RT_11, "GetInterfaces", ves_icall_RuntimeType_GetInterfaces)
+ICALL(RT_12, "GetMethodsByName", ves_icall_RuntimeType_GetMethodsByName)
+ICALL(RT_13, "GetNestedTypes_internal", ves_icall_RuntimeType_GetNestedTypes)
+ICALL(RT_14, "GetPacking", ves_icall_RuntimeType_GetPacking)
+ICALL(RT_15, "GetPropertiesByName", ves_icall_RuntimeType_GetPropertiesByName)
ICALL(RT_16, "GetTypeCodeImplInternal", ves_icall_type_GetTypeCodeInternal)
ICALL(RT_28, "IsTypeExportedToWindowsRuntime", ves_icall_System_RuntimeType_IsTypeExportedToWindowsRuntime)
ICALL(RT_29, "IsWindowsRuntimeObjectType", ves_icall_System_RuntimeType_IsWindowsRuntimeObjectType)
-ICALL(RT_17, "MakeGenericType", ves_icall_Type_MakeGenericType)
-ICALL(RT_18, "MakePointerType", ves_icall_Type_MakePointerType)
+ICALL(RT_17, "MakeGenericType", ves_icall_RuntimeType_MakeGenericType)
+ICALL(RT_18, "MakePointerType", ves_icall_RuntimeType_MakePointerType)
ICALL(RT_19, "getFullName", ves_icall_System_MonoType_getFullName)
-ICALL(RT_21, "get_DeclaringMethod", ves_icall_MonoType_get_DeclaringMethod)
-ICALL(RT_22, "get_DeclaringType", ves_icall_MonoType_get_DeclaringType)
-ICALL(RT_23, "get_Name", ves_icall_MonoType_get_Name)
-ICALL(RT_24, "get_Namespace", ves_icall_MonoType_get_Namespace)
-ICALL(RT_25, "get_core_clr_security_level", vell_icall_MonoType_get_core_clr_security_level)
-ICALL(RT_26, "make_array_type", ves_icall_Type_make_array_type)
-ICALL(RT_27, "make_byref_type", ves_icall_Type_make_byref_type)
+ICALL(RT_21, "get_DeclaringMethod", ves_icall_RuntimeType_get_DeclaringMethod)
+ICALL(RT_22, "get_DeclaringType", ves_icall_RuntimeType_get_DeclaringType)
+ICALL(RT_23, "get_Name", ves_icall_RuntimeType_get_Name)
+ICALL(RT_24, "get_Namespace", ves_icall_RuntimeType_get_Namespace)
+ICALL(RT_25, "get_core_clr_security_level", vell_icall_RuntimeType_get_core_clr_security_level)
+ICALL(RT_26, "make_array_type", ves_icall_RuntimeType_make_array_type)
+ICALL(RT_27, "make_byref_type", ves_icall_RuntimeType_make_byref_type)
ICALL_TYPE(RTH, "System.RuntimeTypeHandle", RTH_1)
ICALL(RTH_1, "GetArrayRank", ves_icall_RuntimeTypeHandle_GetArrayRank)
return ret;
}
-ICALL_EXPORT void
-ves_icall_MonoType_type_from_obj (MonoReflectionType *mtype, MonoObject *obj)
-{
- mtype->type = &obj->vtable->klass->byval_arg;
- g_assert (mtype->type->type);
-}
-
ICALL_EXPORT gint32
ves_icall_ModuleBuilder_getToken (MonoReflectionModuleBuilder *mb, MonoObject *obj, gboolean create_open_instance)
{
MonoBoolean ignoreCase)
{
MonoError error;
- char *str = mono_string_to_utf8 (name);
MonoTypeNameParse info;
- MonoReflectionType *type;
+ MonoReflectionType *type = NULL;
gboolean parsedOk;
+ char *str = mono_string_to_utf8_checked (name, &error);
+ if (!is_ok (&error))
+ goto leave;
+
parsedOk = mono_reflection_parse_type (str, &info);
/* mono_reflection_parse_type() mangles the string */
if (!parsedOk) {
mono_reflection_free_type_info (&info);
- if (throwOnError) {
- mono_error_init (&error);
+ if (throwOnError)
mono_error_set_argument (&error, "typeName", "failed parse: %s", str);
- mono_error_set_pending_exception (&error);
- }
- g_free (str);
- return NULL;
+ goto leave;
}
type = type_from_parsed_name (&info, ignoreCase, &error);
mono_reflection_free_type_info (&info);
- g_free (str);
- if (!mono_error_ok (&error)) {
+ if (!is_ok (&error))
+ goto leave;
+
+ if (type == NULL){
+ if (throwOnError) {
+ mono_error_set_type_load_name (&error, g_strdup (str), NULL, "");
+ goto leave;
+ }
+ }
+
+leave:
+ g_free (str);
+ if (!is_ok (&error)) {
if (throwOnError)
mono_error_set_pending_exception (&error);
else
return NULL;
}
- if (type == NULL){
- MonoException *e = NULL;
-
- if (throwOnError)
- e = mono_get_exception_type_load (name, NULL);
-
- if (e) {
- mono_set_pending_exception (e);
- return NULL;
- }
- }
-
return type;
}
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetInterfaces (MonoReflectionType* type)
+ves_icall_RuntimeType_GetInterfaces (MonoReflectionType* type)
{
MonoError error;
MonoClass *klass = mono_class_from_mono_type (type->type);
if (len == 0) {
g_hash_table_destroy (iface_hash);
if (!data.domain->empty_types) {
- data.domain->empty_types = mono_array_new_cached (data.domain, mono_defaults.monotype_class, 0, &error);
+ data.domain->empty_types = mono_array_new_cached (data.domain, mono_defaults.runtimetype_class, 0, &error);
if (!is_ok (&error))
goto fail;
}
return data.domain->empty_types;
}
- data.iface_array = mono_array_new_cached (data.domain, mono_defaults.monotype_class, len, &error);
+ data.iface_array = mono_array_new_cached (data.domain, mono_defaults.runtimetype_class, len, &error);
if (!is_ok (&error))
goto fail;
g_hash_table_foreach (iface_hash, fill_iface_array, &data);
}
ICALL_EXPORT void
-ves_icall_Type_GetInterfaceMapData (MonoReflectionType *type, MonoReflectionType *iface, MonoArray **targets, MonoArray **methods)
+ves_icall_RuntimeType_GetInterfaceMapData (MonoReflectionType *type, MonoReflectionType *iface, MonoArray **targets, MonoArray **methods)
{
gboolean variance_used;
MonoClass *klass = mono_class_from_mono_type (type->type);
}
ICALL_EXPORT void
-ves_icall_Type_GetPacking (MonoReflectionType *type, guint32 *packing, guint32 *size)
+ves_icall_RuntimeType_GetPacking (MonoReflectionType *type, guint32 *packing, guint32 *size)
{
MonoError error;
MonoClass *klass = mono_class_from_mono_type (type->type);
}
ICALL_EXPORT MonoReflectionType*
-ves_icall_MonoType_get_DeclaringType (MonoReflectionType *type)
+ves_icall_RuntimeType_get_DeclaringType (MonoReflectionType *type)
{
MonoError error;
MonoReflectionType *ret;
}
ICALL_EXPORT MonoString*
-ves_icall_MonoType_get_Name (MonoReflectionType *type)
+ves_icall_RuntimeType_get_Name (MonoReflectionType *type)
{
MonoDomain *domain = mono_domain_get ();
MonoClass *klass = mono_class_from_mono_type (type->type);
}
ICALL_EXPORT MonoString*
-ves_icall_MonoType_get_Namespace (MonoReflectionType *type)
+ves_icall_RuntimeType_get_Namespace (MonoReflectionType *type)
{
MonoDomain *domain = mono_domain_get ();
MonoClass *klass = mono_class_from_mono_type (type->type);
}
ICALL_EXPORT MonoArray*
-ves_icall_MonoType_GetGenericArguments (MonoReflectionType *type, MonoBoolean runtimeTypeArray)
+ves_icall_RuntimeType_GetGenericArguments (MonoReflectionType *type, MonoBoolean runtimeTypeArray)
{
MonoError error;
MonoReflectionType *rt;
}
ICALL_EXPORT MonoReflectionType*
-ves_icall_Type_MakeGenericType (MonoReflectionType *type, MonoArray *type_array)
+ves_icall_RuntimeType_MakeGenericType (MonoReflectionType *type, MonoArray *type_array)
{
MonoError error;
MonoReflectionType *ret;
}
ICALL_EXPORT gint32
-ves_icall_Type_GetGenericParameterPosition (MonoReflectionType *type)
+ves_icall_RuntimeType_GetGenericParameterPosition (MonoReflectionType *type)
{
if (!IS_MONOTYPE (type))
return -1;
}
ICALL_EXPORT GenericParameterAttributes
-ves_icall_Type_GetGenericParameterAttributes (MonoReflectionType *type)
+ves_icall_RuntimeType_GetGenericParameterAttributes (MonoReflectionType *type)
{
g_assert (IS_MONOTYPE (type));
g_assert (is_generic_parameter (type->type));
}
ICALL_EXPORT MonoArray *
-ves_icall_Type_GetGenericParameterConstraints (MonoReflectionType *type)
+ves_icall_RuntimeType_GetGenericParameterConstraints (MonoReflectionType *type)
{
MonoError error;
MonoReflectionType *rt;
for (count = 0, ptr = param_info->constraints; ptr && *ptr; ptr++, count++)
;
- res = mono_array_new_checked (domain, mono_defaults.monotype_class, count, &error);
+ res = mono_array_new_checked (domain, mono_defaults.runtimetype_class, count, &error);
if (mono_error_set_pending_exception (&error))
return NULL;
for (i = 0; i < count; i++) {
}
ICALL_EXPORT MonoReflectionMethod*
-ves_icall_MonoType_GetCorrespondingInflatedMethod (MonoReflectionType *type,
+ves_icall_RuntimeType_GetCorrespondingInflatedMethod (MonoReflectionType *type,
MonoReflectionMethod* generic)
{
MonoDomain *domain;
}
ICALL_EXPORT MonoReflectionMethod *
-ves_icall_MonoType_get_DeclaringMethod (MonoReflectionType *ref_type)
+ves_icall_RuntimeType_get_DeclaringMethod (MonoReflectionType *ref_type)
{
MonoMethod *method;
MonoType *type = ref_type->type;
}
name = mono_array_get (params, MonoString *, 1);
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
do {
MonoClassField* field = mono_class_get_field_from_name (k, str);
}
name = mono_array_get (params, MonoString *, 1);
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
do {
MonoClassField* field = mono_class_get_field_from_name (k, str);
};
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetFields_internal (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoReflectionType *reftype)
+ves_icall_RuntimeType_GetFields_internal (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoReflectionType *reftype)
{
MonoError error;
MonoDomain *domain;
if (name != NULL) {
if (utf8_name == NULL) {
- utf8_name = mono_string_to_utf8 (name);
+ utf8_name = mono_string_to_utf8_checked (name, &error);
+ if (!is_ok (&error))
+ goto fail;
compare_func = (bflags & BFLAGS_IgnoreCase) ? mono_utf8_strcasecmp : strcmp;
}
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetMethodsByName (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoBoolean ignore_case, MonoReflectionType *reftype)
+ves_icall_RuntimeType_GetMethodsByName (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoBoolean ignore_case, MonoReflectionType *reftype)
{
static MonoClass *MethodInfo_array;
MonoError error;
return res;
}
- if (name)
- mname = mono_string_to_utf8 (name);
+ if (name) {
+ mname = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
+ }
method_array = mono_class_get_methods_by_name (klass, mname, bflags, ignore_case, FALSE, &ex);
g_free ((char*)mname);
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetConstructors_internal (MonoReflectionType *type, guint32 bflags, MonoReflectionType *reftype)
+ves_icall_RuntimeType_GetConstructors_internal (MonoReflectionType *type, guint32 bflags, MonoReflectionType *reftype)
{
MonoDomain *domain;
MonoClass *startklass, *klass, *refklass;
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetPropertiesByName (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoBoolean ignore_case, MonoReflectionType *reftype)
+ves_icall_RuntimeType_GetPropertiesByName (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoBoolean ignore_case, MonoReflectionType *reftype)
{
MonoError error;
MonoDomain *domain;
klass = startklass = mono_class_from_mono_type (type->type);
if (name != NULL) {
- propname = mono_string_to_utf8 (name);
+ propname = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
compare_func = (ignore_case) ? mono_utf8_strcasecmp : strcmp;
}
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetEvents_internal (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoReflectionType *reftype)
+ves_icall_RuntimeType_GetEvents_internal (MonoReflectionType *type, MonoString *name, guint32 bflags, MonoReflectionType *reftype)
{
MonoError error;
MonoDomain *domain;
if (name != NULL) {
if (utf8_name == NULL) {
- utf8_name = mono_string_to_utf8 (name);
+ utf8_name = mono_string_to_utf8_checked (name, &error);
+ if (!is_ok (&error))
+ goto failure;
compare_func = (bflags & BFLAGS_IgnoreCase) ? mono_utf8_strcasecmp : strcmp;
}
}
ICALL_EXPORT MonoArray*
-ves_icall_Type_GetNestedTypes (MonoReflectionType *type, MonoString *name, guint32 bflags)
+ves_icall_RuntimeType_GetNestedTypes (MonoReflectionType *type, MonoString *name, guint32 bflags)
{
MonoError error;
MonoReflectionType *rt;
domain = ((MonoObject *)type)->vtable->domain;
if (type->type->byref) {
- MonoArray *result = mono_array_new_cached (domain, mono_defaults.monotype_class, 0, &error);
+ MonoArray *result = mono_array_new_cached (domain, mono_defaults.runtimetype_class, 0, &error);
mono_error_set_pending_exception (&error);
return result;
}
if (name != NULL) {
if (str == NULL) {
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (!is_ok (&error))
+ goto leave;
mono_identifier_unescape_type_name_chars (str);
}
mono_ptr_array_append (tmp_array, (MonoObject*) rt);
}
- res = mono_array_new_cached (domain, mono_defaults.monotype_class, mono_ptr_array_size (tmp_array), &error);
+ res = mono_array_new_cached (domain, mono_defaults.runtimetype_class, mono_ptr_array_size (tmp_array), &error);
if (!is_ok (&error))
goto leave;
/* On MS.NET, this does not fire a TypeResolve event */
type_resolve = TRUE;
- str = mono_string_to_utf8 (name);
+ str = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
/*g_print ("requested type %s in %s\n", str, assembly->assembly->aname.name);*/
if (!mono_reflection_parse_type (str, &info)) {
g_free (str);
MonoImageOpenStatus status;
MonoReflectionAssembly* result = NULL;
- name = mono_string_to_utf8 (mname);
+ name = mono_string_to_utf8_checked (mname, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
res = mono_assembly_load_with_partial_name (name, &status);
g_free (name);
ves_icall_System_Reflection_Assembly_GetManifestResourceInternal (MonoReflectionAssembly *assembly, MonoString *name, gint32 *size, MonoReflectionModule **ref_module)
{
MonoError error;
- char *n = mono_string_to_utf8 (name);
MonoTableInfo *table = &assembly->assembly->image->tables [MONO_TABLE_MANIFESTRESOURCE];
guint32 i;
guint32 cols [MONO_MANIFEST_SIZE];
const char *val;
MonoImage *module;
+ char *n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
+
for (i = 0; i < table->rows; ++i) {
mono_metadata_decode_row (table, i, cols, MONO_MANIFEST_SIZE);
val = mono_metadata_string_heap (assembly->assembly->image, cols [MONO_MANIFEST_NAME]);
const char *val;
char *n;
- n = mono_string_to_utf8 (name);
+ n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
for (i = 0; i < table->rows; ++i) {
mono_metadata_decode_row (table, i, cols, MONO_MANIFEST_SIZE);
val = mono_metadata_string_heap (assembly->assembly->image, cols [MONO_MANIFEST_NAME]);
/* check hash if needed */
if (name) {
- n = mono_string_to_utf8 (name);
+ n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
+
for (i = 0; i < table->rows; ++i) {
val = mono_metadata_string_heap (assembly->assembly->image, mono_metadata_decode_row_col (table, i, MONO_FILE_NAME));
if (strcmp (val, n) == 0) {
}
ICALL_EXPORT int
-vell_icall_MonoType_get_core_clr_security_level (MonoReflectionType *rfield)
+vell_icall_RuntimeType_get_core_clr_security_level (MonoReflectionType *rfield)
{
MonoError error;
MonoClass *klass = mono_class_from_mono_type (rfield->type);
MonoAssemblyName name;
char *dirname;
- filename = mono_string_to_utf8 (fname);
+ filename = mono_string_to_utf8_checked (fname, &error);
+ if (mono_error_set_pending_exception (&error))
+ return;
dirname = g_path_get_dirname (filename);
replace_shadow_path (mono_domain_get (), dirname, &filename);
} else {
count = tdef->rows - 1;
}
- res = mono_array_new_checked (domain, mono_defaults.monotype_class, count, error);
+ res = mono_array_new_checked (domain, mono_defaults.runtimetype_class, count, error);
return_val_if_nok (error, NULL);
*exceptions = mono_array_new_checked (domain, mono_defaults.exception_class, count, error);
return_val_if_nok (error, NULL);
len1 = mono_array_length (res);
len2 = mono_array_length (res2);
- res3 = mono_array_new_checked (domain, mono_defaults.monotype_class, len1 + len2, &error);
+ res3 = mono_array_new_checked (domain, mono_defaults.runtimetype_class, len1 + len2, &error);
if (mono_error_set_pending_exception (&error))
return NULL;
mono_array_memcpy_refs (res3, 0, res, 0, len1);
mono_array_memcpy_refs (res3, len1, res2, 0, len2);
res = res3;
- ex3 = mono_array_new_checked (domain, mono_defaults.monotype_class, len1 + len2, &error);
+ ex3 = mono_array_new_checked (domain, mono_defaults.runtimetype_class, len1 + len2, &error);
if (mono_error_set_pending_exception (&error))
return NULL;
mono_array_memcpy_refs (ex3, 0, exceptions, 0, len1);
gboolean is_token_defined;
aname.public_key = NULL;
- val = mono_string_to_utf8 (assname);
+ val = mono_string_to_utf8_checked (assname, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
+
if (!mono_assembly_name_parse_full (val, &aname, TRUE, &is_version_defined, &is_token_defined)) {
g_free ((guint8*) aname.public_key);
g_free (val);
int i;
if (!module->image) {
- MonoArray *arr = mono_array_new_checked (mono_object_domain (module), mono_defaults.monotype_class, 0, &error);
+ MonoArray *arr = mono_array_new_checked (mono_object_domain (module), mono_defaults.runtimetype_class, 0, &error);
mono_error_set_pending_exception (&error);
return arr;
} else {
MonoReflectionType *ret;
MonoClass *klass;
int isbyref = 0, rank;
- char *str = mono_string_to_utf8 (smodifiers);
char *p;
+ char *str = mono_string_to_utf8_checked (smodifiers, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
klass = mono_class_from_mono_type (tb->type.type);
p = str;
}
ICALL_EXPORT MonoReflectionType *
-ves_icall_Type_make_array_type (MonoReflectionType *type, int rank)
+ves_icall_RuntimeType_make_array_type (MonoReflectionType *type, int rank)
{
MonoError error;
MonoReflectionType *ret;
}
ICALL_EXPORT MonoReflectionType *
-ves_icall_Type_make_byref_type (MonoReflectionType *type)
+ves_icall_RuntimeType_make_byref_type (MonoReflectionType *type)
{
MonoError error;
MonoReflectionType *ret;
}
ICALL_EXPORT MonoReflectionType *
-ves_icall_Type_MakePointerType (MonoReflectionType *type)
+ves_icall_RuntimeType_MakePointerType (MonoReflectionType *type)
{
MonoError error;
MonoReflectionType *ret;
ICALL_EXPORT MonoString *
ves_icall_System_Environment_GetEnvironmentVariable (MonoString *name)
{
+ MonoError error;
const gchar *value;
gchar *utf8_name;
if (name == NULL)
return NULL;
- utf8_name = mono_string_to_utf8 (name); /* FIXME: this should be ascii */
+ utf8_name = mono_string_to_utf8_checked (name, &error); /* FIXME: this should be ascii */
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
value = g_getenv (utf8_name);
g_free (utf8_name);
g_free (utf16_name);
g_free (utf16_value);
#else
- utf8_name = mono_string_to_utf8 (name); /* FIXME: this should be ascii */
+ utf8_name = mono_string_to_utf8_checked (name, &error); /* FIXME: this should be ascii */
+ if (mono_error_set_pending_exception (&error))
+ return;
if ((value == NULL) || (mono_string_length (value) == 0) || (mono_string_chars (value)[0] == 0)) {
g_unsetenv (utf8_name);
return mcpath;
}
+/* this is an icall */
static MonoString *
get_bundled_app_config (void)
{
+ MonoError error;
const gchar *app_config;
MonoDomain *domain;
MonoString *file;
return NULL;
// Retrieve config file and remove the extension
- config_file_name = mono_string_to_utf8 (file);
+ config_file_name = mono_string_to_utf8_checked (file, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
config_file_path = mono_portability_find_file (config_file_name, TRUE);
if (!config_file_path)
config_file_path = config_file_name;
const CultureInfoEntry *ci;
char *n;
- n = mono_string_to_utf8 (name);
+ n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
sizeof (CultureInfoNameEntry), culture_name_locator);
g_free (n);
const CultureInfoNameEntry *ne;
char *n;
- n = mono_string_to_utf8 (name);
+ n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
sizeof (CultureInfoNameEntry), culture_name_locator);
ves_icall_System_Globalization_RegionInfo_construct_internal_region_from_name (MonoRegionInfo *this_obj,
MonoString *name)
{
+ MonoError error;
const RegionInfoNameEntry *ne;
char *n;
- n = mono_string_to_utf8 (name);
+ n = mono_string_to_utf8_checked (name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
ne = (const RegionInfoNameEntry *)mono_binary_search (n, region_name_entries, NUM_REGION_ENTRIES,
sizeof (RegionInfoNameEntry), region_name_locator);
return result;
}
+static char*
+ves_icall_mono_string_to_utf8 (MonoString *str)
+{
+ MonoError error;
+ char *result = mono_string_to_utf8_checked (str, &error);
+ mono_error_set_pending_exception (&error);
+ return result;
+}
+
void
mono_marshal_init (void)
{
register_icall (mono_string_from_byvalwstr, "mono_string_from_byvalwstr", "obj ptr int", FALSE);
register_icall (mono_string_new_wrapper, "mono_string_new_wrapper", "obj ptr", FALSE);
register_icall (mono_string_new_len_wrapper, "mono_string_new_len_wrapper", "obj ptr int", FALSE);
- register_icall (mono_string_to_utf8, "mono_string_to_utf8", "ptr obj", FALSE);
+ register_icall (ves_icall_mono_string_to_utf8, "ves_icall_mono_string_to_utf8", "ptr obj", FALSE);
register_icall (mono_string_to_lpstr, "mono_string_to_lpstr", "ptr obj", FALSE);
register_icall (mono_string_to_ansibstr, "mono_string_to_ansibstr", "ptr object", FALSE);
register_icall (mono_string_builder_to_utf8, "mono_string_builder_to_utf8", "ptr object", FALSE);
return as;
}
#else
- return mono_string_to_utf8 (s);
+ MonoError error;
+ char *result = mono_string_to_utf8_checked (s, &error);
+ mono_error_set_pending_exception (&error);
+ return result;
#endif
}
void
mono_string_to_byvalstr (gpointer dst, MonoString *src, int size)
{
+ MonoError error;
char *s;
int len;
if (!src)
return;
- s = mono_string_to_utf8 (src);
+ s = mono_string_to_utf8_checked (src, &error);
+ if (mono_error_set_pending_exception (&error))
+ return;
len = MIN (size, strlen (s));
if (len >= size)
len--;
if (exc) {
if (((MonoException*)exc)->stack_trace) {
- char *strace = mono_string_to_utf8 (((MonoException*)exc)->stack_trace);
- char *tmp;
- tmp = g_strdup_printf ("%s\nException Rethrown at:\n", strace);
- g_free (strace);
- MONO_OBJECT_SETREF (((MonoException*)exc), stack_trace, mono_string_new (domain, tmp));
- g_free (tmp);
+ MonoError inner_error;
+ char *strace = mono_string_to_utf8_checked (((MonoException*)exc)->stack_trace, &inner_error);
+ if (is_ok (&inner_error)) {
+ char *tmp;
+ tmp = g_strdup_printf ("%s\nException Rethrown at:\n", strace);
+ g_free (strace);
+ MONO_OBJECT_SETREF (((MonoException*)exc), stack_trace, mono_string_new (domain, tmp));
+ g_free (tmp);
+ } else
+ mono_error_cleanup (&inner_error); /* no stack trace, but at least throw the original exception */
}
mono_set_pending_exception ((MonoException*)exc);
}
int
ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf (MonoReflectionType *type, MonoString *field_name)
{
+ MonoError error;
MonoMarshalType *info;
MonoClass *klass;
char *fname;
MONO_CHECK_ARG_NULL (type, 0);
MONO_CHECK_ARG_NULL (field_name, 0);
- fname = mono_string_to_utf8 (field_name);
+ fname = mono_string_to_utf8_checked (field_name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return 0;
klass = mono_class_from_mono_type (type->type);
if (!mono_class_init (klass)) {
mono_set_pending_exception (mono_class_get_exception_for_failure (klass));
gpointer
ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi (MonoString *string)
{
+ MonoError error;
#ifdef HOST_WIN32
char* tres, *ret;
size_t len;
- tres = mono_string_to_utf8 (string);
+ tres = mono_string_to_utf8_checked (string, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
if (!tres)
return tres;
return ret;
#else
- return mono_string_to_utf8 (string);
+ char *ret = mono_string_to_utf8_checked (string, &error);
+ mono_error_set_pending_exception (&error);
+ return ret;
#endif
}
}
static int
-id_from_string (MonoString *instance, gboolean is_process)
+id_from_string (const gchar *id_str, gboolean is_process)
{
int id = -1;
- if (mono_string_length (instance)) {
- char *id_str = mono_string_to_utf8 (instance);
+ if (strcmp("", id_str) != 0) {
char *end;
id = strtol (id_str, &end, 0);
if (end == id_str && !is_process)
id = -1;
- g_free (id_str);
}
return id;
}
}
static void*
-cpu_get_impl (MonoString* counter, MonoString* instance, int *type, MonoBoolean *custom)
+cpu_get_impl (MonoString* counter, const gchar* instance, int *type, MonoBoolean *custom)
{
int id = id_from_string (instance, FALSE) << 5;
const CounterDesc *cdesc;
}
static void*
-network_get_impl (MonoString* counter, MonoString* instance, int *type, MonoBoolean *custom)
+network_get_impl (MonoString* counter, const gchar* instance, int *type, MonoBoolean *custom)
{
const CounterDesc *cdesc;
NetworkVtableArg *narg;
*custom = FALSE;
if ((cdesc = get_counter_in_category (&predef_categories [CATEGORY_NETWORK], counter))) {
- instance_name = mono_string_to_utf8 (instance);
+ instance_name = g_strdup (instance);
narg = g_new0 (NetworkVtableArg, 1);
narg->id = cdesc->id;
narg->name = instance_name;
}
static void*
-process_get_impl (MonoString* counter, MonoString* instance, int *type, MonoBoolean *custom)
+process_get_impl (MonoString* counter, const gchar* instance, int *type, MonoBoolean *custom)
{
int id = id_from_string (instance, TRUE) << 5;
const CounterDesc *cdesc;
}
static void*
-mono_mem_get_impl (MonoString* counter, MonoString* instance, int *type, MonoBoolean *custom)
+mono_mem_get_impl (MonoString* counter, const gchar* instance, int *type, MonoBoolean *custom)
{
const CounterDesc *cdesc;
*custom = FALSE;
}
static ImplVtable*
-predef_vtable (void *arg, MonoString *instance)
+predef_vtable (void *arg, const gchar *pids)
{
MonoSharedArea *area;
PredefVtable *vtable;
- char *pids = mono_string_to_utf8 (instance);
int pid;
pid = atoi (pids);
- g_free (pids);
area = load_sarea_for_pid (pid);
if (!area)
return NULL;
}
static void*
-predef_writable_get_impl (int cat, MonoString* counter, MonoString* instance, int *type, MonoBoolean *custom)
+predef_writable_get_impl (int cat, MonoString* counter, const gchar *instance, int *type, MonoBoolean *custom)
{
const CounterDesc *cdesc;
*custom = TRUE;
if ((cdesc = get_counter_in_category (&predef_categories [cat], counter))) {
*type = cdesc->type;
- if (instance == NULL || mono_string_compare_ascii (instance, "") == 0)
+ if (instance == NULL || strcmp (instance, "") == 0)
return create_vtable (GINT_TO_POINTER ((cdesc->id << 16) | cat), predef_writable_counter, predef_writable_update);
else
return predef_vtable (GINT_TO_POINTER ((cdesc->id << 16) | cat), instance);
}
static void*
-custom_get_impl (SharedCategory *cat, MonoString* counter, MonoString* instance, int *type)
+custom_get_impl (SharedCategory *cat, MonoString *counter, MonoString* instance, int *type, MonoError *error)
{
SharedCounter *scounter;
SharedInstance* inst;
char *name;
+ mono_error_init (error);
scounter = find_custom_counter (cat, counter);
if (!scounter)
return NULL;
+ name = mono_string_to_utf8_checked (counter, error);
+ return_val_if_nok (error, NULL);
*type = simple_type_to_type [scounter->type];
- name = mono_string_to_utf8 (counter);
inst = custom_get_instance (cat, scounter, name);
g_free (name);
if (!inst)
mono_perfcounter_get_impl (MonoString* category, MonoString* counter, MonoString* instance,
MonoString* machine, int *type, MonoBoolean *custom)
{
+ MonoError error;
const CategoryDesc *cdesc;
+ void *result = NULL;
/* no support for counters on other machines */
if (mono_string_compare_ascii (machine, "."))
return NULL;
if (!scat)
return NULL;
*custom = TRUE;
- return custom_get_impl (scat, counter, instance, type);
+ result = custom_get_impl (scat, counter, instance, type, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
+ return result;
}
+ gchar *c_instance = mono_string_to_utf8_checked (instance, &error);
+ if (mono_error_set_pending_exception (&error))
+ return NULL;
switch (cdesc->id) {
case CATEGORY_CPU:
- return cpu_get_impl (counter, instance, type, custom);
+ result = cpu_get_impl (counter, c_instance, type, custom);
+ break;
case CATEGORY_PROC:
- return process_get_impl (counter, instance, type, custom);
+ result = process_get_impl (counter, c_instance, type, custom);
+ break;
case CATEGORY_MONO_MEM:
- return mono_mem_get_impl (counter, instance, type, custom);
+ result = mono_mem_get_impl (counter, c_instance, type, custom);
+ break;
case CATEGORY_NETWORK:
- return network_get_impl (counter, instance, type, custom);
+ result = network_get_impl (counter, c_instance, type, custom);
+ break;
case CATEGORY_JIT:
case CATEGORY_EXC:
case CATEGORY_GC:
case CATEGORY_SECURITY:
case CATEGORY_ASPNET:
case CATEGORY_THREADPOOL:
- return predef_writable_get_impl (cdesc->id, counter, instance, type, custom);
+ result = predef_writable_get_impl (cdesc->id, counter, c_instance, type, custom);
+ break;
}
- return NULL;
+ g_free (c_instance);
+ return result;
}
MonoBoolean
SharedCategory *cat;
/* FIXME: ensure there isn't a category created already */
- mono_error_init (&error);
name = mono_string_to_utf8_checked (category, &error);
if (!mono_error_ok (&error))
goto failure;
int
mono_perfcounter_instance_exists (MonoString *instance, MonoString *category, MonoString *machine)
{
+ MonoError error;
const CategoryDesc *cdesc;
SharedInstance *sinst;
char *name;
scat = find_custom_category (category);
if (!scat)
return FALSE;
- name = mono_string_to_utf8 (instance);
+ name = mono_string_to_utf8_checked (instance, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
sinst = find_custom_instance (scat, name);
g_free (name);
if (sinst)
extern MonoBoolean ves_icall_System_Net_NetworkInformation_MacOsIPInterfaceProperties_ParseRouteInfo_internal(MonoString *iface, MonoArray **gw_addr_list)
{
+ MonoError error;
size_t needed;
in_addr_t in;
int mib[6];
MonoDomain *domain = mono_domain_get ();
- ifacename = mono_string_to_utf8(iface);
+ ifacename = mono_string_to_utf8_checked(iface, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
+
if ((ifindex = if_nametoindex(ifacename)) == 0)
return FALSE;
g_free(ifacename);
MonoType *type;
};
+/* This corresponds to System.RuntimeType */
typedef struct {
MonoReflectionType type;
MonoObject *type_info;
MonoObject*
mono_property_get_value_checked (MonoProperty *prop, void *obj, void **params, MonoError *error);
+MonoString*
+mono_object_to_string_checked (MonoObject *obj, MonoError *error);
+
+MonoString*
+mono_object_try_to_string (MonoObject *obj, MonoObject **exc, MonoError *error);
+
char *
mono_string_to_utf8_ignore (MonoString *s);
* re-acquire them and check if another thread has created the vtable in the meantime.
*/
/* Special case System.MonoType to avoid infinite recursion */
- if (klass != mono_defaults.monotype_class) {
+ if (klass != mono_defaults.runtimetype_class) {
vt->type = mono_type_get_object_checked (domain, &klass->byval_arg, error);
if (!is_ok (error)) {
mono_domain_unlock (domain);
return NULL;
}
- if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.monotype_class)
+ if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.runtimetype_class)
/* This is unregistered in
unregister_vtable_reflection_type() in
domain.c. */
klass->runtime_info = runtime_info;
}
- if (klass == mono_defaults.monotype_class) {
+ if (klass == mono_defaults.runtimetype_class) {
vt->type = mono_type_get_object_checked (domain, &klass->byval_arg, error);
if (!is_ok (error)) {
mono_domain_unlock (domain);
return NULL;
}
- if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.monotype_class)
+ if (mono_object_get_class ((MonoObject *)vt->type) != mono_defaults.runtimetype_class)
/* This is unregistered in
unregister_vtable_reflection_type() in
domain.c. */
mono_error_cleanup (&error);
} else {
res = mono_runtime_invoke_checked (method, obj, params, &error);
- mono_error_raise_exception (&error);
+ mono_error_raise_exception (&error); /* OK to throw, external only without a good alternative */
}
return res;
}
}
} else {
MonoObject *result = mono_runtime_delegate_invoke_checked (delegate, params, &error);
- mono_error_raise_exception (&error); /* FIXME don't raise here */
+ mono_error_raise_exception (&error); /* OK to throw, external only without a good alternative */
return result;
}
}
MonoError error;
char *result = mono_string_to_utf8_checked (s, &error);
- if (!mono_error_ok (&error))
- mono_error_raise_exception (&error);
+ if (!is_ok (&error)) {
+ mono_error_cleanup (&error);
+ return NULL;
+ }
return result;
}
}
/**
- * mono_object_to_string:
+ * prepare_to_string_method:
* @obj: The object
- * @exc: Any exception thrown by ToString (). May be NULL.
+ * @target: Set to @obj or unboxed value if a valuetype
*
- * Returns: the result of calling ToString () on an object.
+ * Returns: the ToString override for @obj. If @obj is a valuetype, @target is unboxed otherwise it's @obj.
*/
-MonoString *
-mono_object_to_string (MonoObject *obj, MonoObject **exc)
+static MonoMethod *
+prepare_to_string_method (MonoObject *obj, void **target)
{
MONO_REQ_GC_UNSAFE_MODE;
static MonoMethod *to_string = NULL;
- MonoError error;
MonoMethod *method;
- MonoString *s;
- void *target = obj;
-
+ g_assert (target);
g_assert (obj);
+ *target = obj;
+
if (!to_string)
to_string = mono_class_get_method_from_name_flags (mono_get_object_class (), "ToString", 0, METHOD_ATTRIBUTE_VIRTUAL | METHOD_ATTRIBUTE_PUBLIC);
// Unbox value type if needed
if (mono_class_is_valuetype (mono_method_get_class (method))) {
- target = mono_object_unbox (obj);
+ *target = mono_object_unbox (obj);
}
+ return method;
+}
+/**
+ * mono_object_to_string:
+ * @obj: The object
+ * @exc: Any exception thrown by ToString (). May be NULL.
+ *
+ * Returns: the result of calling ToString () on an object.
+ */
+MonoString *
+mono_object_to_string (MonoObject *obj, MonoObject **exc)
+{
+ MonoError error;
+ MonoString *s = NULL;
+ void *target;
+ MonoMethod *method = prepare_to_string_method (obj, &target);
if (exc) {
s = (MonoString *) mono_runtime_try_invoke (method, target, NULL, exc, &error);
if (*exc == NULL && !mono_error_ok (&error))
mono_error_cleanup (&error);
} else {
s = (MonoString *) mono_runtime_invoke_checked (method, target, NULL, &error);
- mono_error_raise_exception (&error); /* FIXME don't raise here */
+ mono_error_raise_exception (&error); /* OK to throw, external only without a good alternative */
}
return s;
}
+/**
+ * mono_object_to_string_checked:
+ * @obj: The object
+ * @error: Set on error.
+ *
+ * Returns: the result of calling ToString () on an object. If the
+ * method cannot be invoked or if it raises an exception, sets @error
+ * and returns NULL.
+ */
+MonoString *
+mono_object_to_string_checked (MonoObject *obj, MonoError *error)
+{
+ mono_error_init (error);
+ void *target;
+ MonoMethod *method = prepare_to_string_method (obj, &target);
+ return (MonoString*) mono_runtime_invoke_checked (method, target, NULL, error);
+}
+
+/**
+ * mono_object_try_to_string:
+ * @obj: The object
+ * @exc: Any exception thrown by ToString (). Must not be NULL.
+ * @error: Set if method cannot be invoked.
+ *
+ * Returns: the result of calling ToString () on an object. If the
+ * method cannot be invoked sets @error, if it raises an exception sets @exc,
+ * and returns NULL.
+ */
+MonoString *
+mono_object_try_to_string (MonoObject *obj, MonoObject **exc, MonoError *error)
+{
+ g_assert (exc);
+ mono_error_init (error);
+ void *target;
+ MonoMethod *method = prepare_to_string_method (obj, &target);
+ return (MonoString*) mono_runtime_try_invoke (method, target, NULL, exc, error);
+}
+
+
+
/**
* mono_print_unhandled_exception:
* @exc: The exception
free_message = TRUE;
} else {
MonoObject *other_exc = NULL;
- str = mono_object_to_string (exc, &other_exc);
+ str = mono_object_try_to_string (exc, &other_exc, &error);
+ if (other_exc == NULL && !is_ok (&error))
+ other_exc = (MonoObject*)mono_error_convert_to_exception (&error);
+ else
+ mono_error_cleanup (&error);
if (other_exc) {
char *original_backtrace = mono_exception_get_managed_backtrace ((MonoException*)exc);
char *nested_backtrace = mono_exception_get_managed_backtrace ((MonoException*)other_exc);
MONO_API MonoString*
mono_string_new_utf32 (MonoDomain *domain, const mono_unichar4 *text, int32_t len);
+MONO_RT_EXTERNAL_ONLY
MONO_API char *
mono_string_to_utf8 (MonoString *string_obj);
MONO_API int
mono_object_hash (MonoObject* obj);
+MONO_RT_EXTERNAL_ONLY
MONO_API MonoString *
mono_object_to_string (MonoObject *obj, MonoObject **exc);
MonoBoolean
ves_icall_System_Diagnostics_Process_CreateProcess_internal (MonoProcessStartInfo *proc_start_info, HANDLE stdin_handle, HANDLE stdout_handle, HANDLE stderr_handle, MonoProcInfo *process_info)
{
+ MonoError error G_GNUC_UNUSED;
gboolean ret;
gunichar2 *dir;
STARTUPINFO startinfo={0};
free_shell_path = FALSE;
if (cmd) {
gchar *newcmd, *tmp;
- tmp = mono_string_to_utf8 (cmd);
+ tmp = mono_string_to_utf8_checked (cmd, &error);
+ if (mono_error_set_pending_exception (&error)) {
+ g_free (spath);
+ return NULL;
+ }
newcmd = g_strdup_printf ("%s %s", spath, tmp);
cmd = mono_string_new_wrapper (newcmd);
g_free (tmp);
}
static guint32
-string_heap_insert_mstring (MonoDynamicStream *sh, MonoString *str)
+string_heap_insert_mstring (MonoDynamicStream *sh, MonoString *str, MonoError *error)
{
MONO_REQ_GC_UNSAFE_MODE;
- char *name = mono_string_to_utf8 (str);
+ mono_error_init (error);
+ char *name = mono_string_to_utf8_checked (str, error);
+ return_val_if_nok (error, -1);
guint32 idx;
idx = string_heap_insert (sh, name);
g_free (name);
} else {
code = mb->code;
if (code == NULL){
- char *name = mono_string_to_utf8 (mb->name);
+ MonoError inner_error;
+ char *name = mono_string_to_utf8_checked (mb->name, &inner_error);
+ if (!is_ok (&inner_error)) {
+ name = g_strdup ("");
+ mono_error_cleanup (&inner_error);
+ }
char *str = g_strdup_printf ("Method %s does not have any IL associated", name);
mono_error_set_argument (error, NULL, "a method does not have any IL associated");
g_free (str);
*mb->table_idx = table->next_idx ++;
g_hash_table_insert (assembly->method_to_table_idx, mb->mhandle, GUINT_TO_POINTER ((*mb->table_idx)));
values = table->values + *mb->table_idx * MONO_METHOD_SIZE;
- values [MONO_METHOD_NAME] = string_heap_insert_mstring (&assembly->sheap, mb->name);
+ values [MONO_METHOD_NAME] = string_heap_insert_mstring (&assembly->sheap, mb->name, error);
+ return_val_if_nok (error, FALSE);
values [MONO_METHOD_FLAGS] = mb->attrs;
values [MONO_METHOD_IMPLFLAGS] = mb->iattrs;
values [MONO_METHOD_SIGNATURE] = method_builder_encode_signature (assembly, mb, error);
values [MONO_PARAM_FLAGS] = pb->attrs;
values [MONO_PARAM_SEQUENCE] = i;
if (pb->name != NULL) {
- values [MONO_PARAM_NAME] = string_heap_insert_mstring (&assembly->sheap, pb->name);
+ values [MONO_PARAM_NAME] = string_heap_insert_mstring (&assembly->sheap, pb->name, error);
+ return_val_if_nok (error, FALSE);
} else {
values [MONO_PARAM_NAME] = 0;
}
values [MONO_IMPLMAP_FLAGS] = (mb->native_cc << 8) | ncharset | extra_flags;
values [MONO_IMPLMAP_MEMBER] = (mb->table_idx << 1) | 1; /* memberforwarded: method */
- if (mb->dllentry)
- values [MONO_IMPLMAP_NAME] = string_heap_insert_mstring (&assembly->sheap, mb->dllentry);
- else
- values [MONO_IMPLMAP_NAME] = string_heap_insert_mstring (&assembly->sheap, mb->name);
- moduleref = string_heap_insert_mstring (&assembly->sheap, mb->dll);
+ if (mb->dllentry) {
+ values [MONO_IMPLMAP_NAME] = string_heap_insert_mstring (&assembly->sheap, mb->dllentry, error);
+ return_val_if_nok (error, FALSE);
+ } else {
+ values [MONO_IMPLMAP_NAME] = string_heap_insert_mstring (&assembly->sheap, mb->name, error);
+ return_val_if_nok (error, FALSE);
+ }
+ moduleref = string_heap_insert_mstring (&assembly->sheap, mb->dll, error);
+ return_val_if_nok (error, FALSE);
if (!(values [MONO_IMPLMAP_SCOPE] = find_index_in_table (assembly, MONO_TABLE_MODULEREF, MONO_MODULEREF_NAME, moduleref))) {
table = &assembly->tables [MONO_TABLE_MODULEREF];
table->rows ++;
break;
case MONO_NATIVE_CUSTOM:
if (minfo->guid) {
- str = mono_string_to_utf8 (minfo->guid);
+ str = mono_string_to_utf8_checked (minfo->guid, error);
+ if (!is_ok (error)) {
+ sigbuffer_free (&buf);
+ return 0;
+ }
len = strlen (str);
sigbuffer_add_value (&buf, len);
sigbuffer_add_mem (&buf, str, len);
return 0;
}
str = type_get_fully_qualified_name (marshaltype);
- } else
- str = mono_string_to_utf8 (minfo->marshaltype);
+ } else {
+ str = mono_string_to_utf8_checked (minfo->marshaltype, error);
+ if (!is_ok (error)) {
+ sigbuffer_free (&buf);
+ return 0;
+ }
+ }
len = strlen (str);
sigbuffer_add_value (&buf, len);
sigbuffer_add_mem (&buf, str, len);
sigbuffer_add_value (&buf, 0);
}
if (minfo->mcookie) {
- str = mono_string_to_utf8 (minfo->mcookie);
+ str = mono_string_to_utf8_checked (minfo->mcookie, error);
+ if (!is_ok (error)) {
+ sigbuffer_free (&buf);
+ return 0;
+ }
len = strlen (str);
sigbuffer_add_value (&buf, len);
sigbuffer_add_mem (&buf, str, len);
fb->table_idx = table->next_idx ++;
g_hash_table_insert (assembly->field_to_table_idx, fb->handle, GUINT_TO_POINTER (fb->table_idx));
values = table->values + fb->table_idx * MONO_FIELD_SIZE;
- values [MONO_FIELD_NAME] = string_heap_insert_mstring (&assembly->sheap, fb->name);
+ values [MONO_FIELD_NAME] = string_heap_insert_mstring (&assembly->sheap, fb->name, error);
+ return_if_nok (error);
values [MONO_FIELD_FLAGS] = fb->attrs;
values [MONO_FIELD_SIGNATURE] = field_encode_signature (assembly, fb, error);
return_if_nok (error);
table = &assembly->tables [MONO_TABLE_PROPERTY];
pb->table_idx = table->next_idx ++;
values = table->values + pb->table_idx * MONO_PROPERTY_SIZE;
- values [MONO_PROPERTY_NAME] = string_heap_insert_mstring (&assembly->sheap, pb->name);
+ values [MONO_PROPERTY_NAME] = string_heap_insert_mstring (&assembly->sheap, pb->name, error);
+ return_if_nok (error);
values [MONO_PROPERTY_FLAGS] = pb->attrs;
values [MONO_PROPERTY_TYPE] = property_encode_signature (assembly, pb, error);
return_if_nok (error);
table = &assembly->tables [MONO_TABLE_EVENT];
eb->table_idx = table->next_idx ++;
values = table->values + eb->table_idx * MONO_EVENT_SIZE;
- values [MONO_EVENT_NAME] = string_heap_insert_mstring (&assembly->sheap, eb->name);
+ values [MONO_EVENT_NAME] = string_heap_insert_mstring (&assembly->sheap, eb->name, error);
+ return_if_nok (error);
values [MONO_EVENT_FLAGS] = eb->attrs;
MonoType *ebtype = mono_reflection_type_get_handle (eb->type, error);
return_if_nok (error);
parent = mono_image_typedef_or_ref (assembly, t);
}
- char *name = mono_string_to_utf8 (method->name);
+ char *name = mono_string_to_utf8_checked (method->name, error);
+ return_val_if_nok (error, 0);
token = mono_image_add_memberef_row (assembly, parent, name, sig);
g_free (name);
parent = mono_image_typedef_or_ref (assembly, type);
}
- name = mono_string_to_utf8 (rmb.name);
+ name = mono_string_to_utf8_checked (rmb.name, error);
+ return_val_if_nok (error, 0);
sig = method_builder_encode_signature (assembly, &rmb, error);
return_val_if_nok (error, 0);
guint32 sig_token = field_encode_signature (assembly, fb, error);
return_val_if_nok (error, 0);
- name = mono_string_to_utf8 (fb->name);
+ name = mono_string_to_utf8_checked (fb->name, error);
+ return_val_if_nok (error, 0);
token = mono_image_get_memberref_token (assembly, &klass->byval_arg, name, sig_token);
g_free (name);
} else if (is_sr_mono_field (mono_object_class (f->fb))) {
sig = method_builder_encode_signature (assembly, &rmb, error);
return_val_if_nok (error, 0);
- name = mono_string_to_utf8 (rmb.name);
+ name = mono_string_to_utf8_checked (rmb.name, error);
+ return_val_if_nok (error, 0);
token = mono_image_get_memberref_token (assembly, &klass->byval_arg, name, sig);
g_free (name);
sig = method_builder_encode_signature (assembly, &rmb, error);
return_val_if_nok (error, 0);
- name = mono_string_to_utf8 (rmb.name);
+ name = mono_string_to_utf8_checked (rmb.name, error);
+ return_val_if_nok (error, 0);
token = mono_image_get_memberref_token (assembly, &klass->byval_arg, name, sig);
g_free (name);
table = &assembly->tables [MONO_TABLE_MEMBERREF];
- name = mono_string_to_utf8 (fb->name);
+ name = mono_string_to_utf8_checked (fb->name, error);
+ return_val_if_nok (error, 0);
if (assembly->save) {
alloc_table (table, table->rows + 1);
goto fail;
}
- name = mono_string_to_utf8 (m->name);
+ name = mono_string_to_utf8_checked (m->name, error);
+ if (!is_ok (error))
+ goto fail;
for (tmp = assembly->array_methods; tmp; tmp = tmp->next) {
am = (ArrayMethod *)tmp->data;
if (strcmp (name, am->name) == 0 &&
table = &assembly->tables [MONO_TABLE_TYPEDEF];
values = table->values + tb->table_idx * MONO_TYPEDEF_SIZE;
values [MONO_TYPEDEF_FLAGS] = tb->attrs;
- n = mono_string_to_utf8 (tb->name);
+ n = mono_string_to_utf8_checked (tb->name, error);
+ return_val_if_nok (error, FALSE);
if (strcmp (n, "Object") == 0)
is_object++;
values [MONO_TYPEDEF_NAME] = string_heap_insert (&assembly->sheap, n);
g_free (n);
- n = mono_string_to_utf8 (tb->nspace);
+ n = mono_string_to_utf8_checked (tb->nspace, error);
+ return_val_if_nok (error, FALSE);
if (strcmp (n, "System") == 0)
is_system++;
values [MONO_TYPEDEF_NAMESPACE] = string_heap_insert (&assembly->sheap, n);
return TRUE;
}
-static void
-mono_image_fill_file_table (MonoDomain *domain, MonoReflectionModule *module, MonoDynamicImage *assembly)
+static gboolean
+mono_image_fill_file_table (MonoDomain *domain, MonoReflectionModule *module, MonoDynamicImage *assembly, MonoError *error)
{
MonoDynamicTable *table;
guint32 *values;
char *b = blob_size;
char *dir, *path;
+ mono_error_init (error);
+
table = &assembly->tables [MONO_TABLE_FILE];
table->rows++;
alloc_table (table, table->rows);
values [MONO_FILE_NAME] = string_heap_insert (&assembly->sheap, module->image->module_name);
if (image_is_dynamic (module->image)) {
/* This depends on the fact that the main module is emitted last */
- dir = mono_string_to_utf8 (((MonoReflectionModuleBuilder*)module)->assemblyb->dir);
+ dir = mono_string_to_utf8_checked (((MonoReflectionModuleBuilder*)module)->assemblyb->dir, error);
+ return_val_if_nok (error, FALSE);
path = g_strdup_printf ("%s%c%s", dir, G_DIR_SEPARATOR, module->image->module_name);
} else {
dir = NULL;
values [MONO_FILE_HASH_VALUE] = mono_image_add_stream_data (&assembly->blob, blob_size, b-blob_size);
mono_image_add_stream_data (&assembly->blob, (char*)hash, 20);
table->next_idx ++;
+ return TRUE;
}
static void
-mono_image_fill_module_table (MonoDomain *domain, MonoReflectionModuleBuilder *mb, MonoDynamicImage *assembly)
+mono_image_fill_module_table (MonoDomain *domain, MonoReflectionModuleBuilder *mb, MonoDynamicImage *assembly, MonoError *error)
{
MonoDynamicTable *table;
int i;
+ mono_error_init (error);
+
table = &assembly->tables [MONO_TABLE_MODULE];
mb->table_idx = table->next_idx ++;
- table->values [mb->table_idx * MONO_MODULE_SIZE + MONO_MODULE_NAME] = string_heap_insert_mstring (&assembly->sheap, mb->module.name);
+ table->values [mb->table_idx * MONO_MODULE_SIZE + MONO_MODULE_NAME] = string_heap_insert_mstring (&assembly->sheap, mb->module.name, error);
+ return_if_nok (error);
i = mono_image_add_stream_data (&assembly->guid, mono_array_addr (mb->guid, char, 0), 16);
i /= 16;
++i;
}
}
-static void
-assembly_add_resource_manifest (MonoReflectionModuleBuilder *mb, MonoDynamicImage *assembly, MonoReflectionResource *rsrc, guint32 implementation)
+static gboolean
+assembly_add_resource_manifest (MonoReflectionModuleBuilder *mb, MonoDynamicImage *assembly, MonoReflectionResource *rsrc, guint32 implementation, MonoError *error)
{
MonoDynamicTable *table;
guint32 *values;
+ mono_error_init (error);
+
table = &assembly->tables [MONO_TABLE_MANIFESTRESOURCE];
table->rows++;
alloc_table (table, table->rows);
values = table->values + table->next_idx * MONO_MANIFEST_SIZE;
values [MONO_MANIFEST_OFFSET] = rsrc->offset;
values [MONO_MANIFEST_FLAGS] = rsrc->attrs;
- values [MONO_MANIFEST_NAME] = string_heap_insert_mstring (&assembly->sheap, rsrc->name);
+ values [MONO_MANIFEST_NAME] = string_heap_insert_mstring (&assembly->sheap, rsrc->name, error);
+ return_val_if_nok (error, FALSE);
values [MONO_MANIFEST_IMPLEMENTATION] = implementation;
table->next_idx++;
+ return TRUE;
}
-static void
-assembly_add_resource (MonoReflectionModuleBuilder *mb, MonoDynamicImage *assembly, MonoReflectionResource *rsrc)
+static gboolean
+assembly_add_resource (MonoReflectionModuleBuilder *mb, MonoDynamicImage *assembly, MonoReflectionResource *rsrc, MonoError *error)
{
MonoDynamicTable *table;
guint32 *values;
char *name, *sname;
guint32 idx, offset;
+ mono_error_init (error);
+
if (rsrc->filename) {
- name = mono_string_to_utf8 (rsrc->filename);
+ name = mono_string_to_utf8_checked (rsrc->filename, error);
+ return_val_if_nok (error, FALSE);
sname = g_path_get_basename (name);
table = &assembly->tables [MONO_TABLE_FILE];
* the main module, but that needs to reference the FILE table
* which isn't emitted yet.
*/
- return;
+ return TRUE;
else
idx = 0;
}
- assembly_add_resource_manifest (mb, assembly, rsrc, idx);
+ return assembly_add_resource_manifest (mb, assembly, rsrc, idx, error);
}
-static void
-set_version_from_string (MonoString *version, guint32 *values)
+static gboolean
+set_version_from_string (MonoString *version, guint32 *values, MonoError *error)
{
gchar *ver, *p, *str;
guint32 i;
+ mono_error_init (error);
+
values [MONO_ASSEMBLY_MAJOR_VERSION] = 0;
values [MONO_ASSEMBLY_MINOR_VERSION] = 0;
values [MONO_ASSEMBLY_REV_NUMBER] = 0;
values [MONO_ASSEMBLY_BUILD_NUMBER] = 0;
if (!version)
- return;
- ver = str = mono_string_to_utf8 (version);
+ return TRUE;
+ ver = str = mono_string_to_utf8_checked (version, error);
+ return_val_if_nok (error, FALSE);
for (i = 0; i < 4; ++i) {
values [MONO_ASSEMBLY_MAJOR_VERSION + i] = strtol (ver, &p, 10);
switch (*p) {
ver = p;
}
g_free (str);
+ return TRUE;
}
static guint32
return token;
}
-static void
+static gboolean
mono_image_emit_manifest (MonoReflectionModuleBuilder *moduleb, MonoError *error)
{
MonoDynamicTable *table;
alloc_table (table, 1);
values = table->values + MONO_ASSEMBLY_SIZE;
values [MONO_ASSEMBLY_HASH_ALG] = assemblyb->algid? assemblyb->algid: ASSEMBLY_HASH_SHA1;
- values [MONO_ASSEMBLY_NAME] = string_heap_insert_mstring (&assembly->sheap, assemblyb->name);
+ values [MONO_ASSEMBLY_NAME] = string_heap_insert_mstring (&assembly->sheap, assemblyb->name, error);
+ return_val_if_nok (error, FALSE);
if (assemblyb->culture) {
- values [MONO_ASSEMBLY_CULTURE] = string_heap_insert_mstring (&assembly->sheap, assemblyb->culture);
+ values [MONO_ASSEMBLY_CULTURE] = string_heap_insert_mstring (&assembly->sheap, assemblyb->culture, error);
+ return_val_if_nok (error, FALSE);
} else {
values [MONO_ASSEMBLY_CULTURE] = string_heap_insert (&assembly->sheap, "");
}
values [MONO_ASSEMBLY_PUBLIC_KEY] = load_public_key (assemblyb->public_key, assembly);
values [MONO_ASSEMBLY_FLAGS] = assemblyb->flags;
- set_version_from_string (assemblyb->version, values);
+ if (!set_version_from_string (assemblyb->version, values, error))
+ return FALSE;
/* Emit FILE + EXPORTED_TYPE table */
module_index = 0;
MonoReflectionModuleBuilder *file_module =
mono_array_get (assemblyb->modules, MonoReflectionModuleBuilder*, i);
if (file_module != moduleb) {
- mono_image_fill_file_table (domain, (MonoReflectionModule*)file_module, assembly);
+ if (!mono_image_fill_file_table (domain, (MonoReflectionModule*)file_module, assembly, error))
+ return FALSE;
module_index ++;
if (file_module->types) {
for (j = 0; j < file_module->num_types; ++j) {
MonoReflectionTypeBuilder *tb = mono_array_get (file_module->types, MonoReflectionTypeBuilder*, j);
mono_image_fill_export_table (domain, tb, module_index, 0, assembly, error);
- return_if_nok (error);
+ return_val_if_nok (error, FALSE);
}
}
}
for (i = 0; i < mono_array_length (assemblyb->loaded_modules); ++i) {
MonoReflectionModule *file_module =
mono_array_get (assemblyb->loaded_modules, MonoReflectionModule*, i);
- mono_image_fill_file_table (domain, file_module, assembly);
+ if (!mono_image_fill_file_table (domain, file_module, assembly, error))
+ return FALSE;
module_index ++;
mono_image_fill_export_table_from_module (domain, file_module, module_index, assembly);
}
int len = mono_array_length (file_module->resources);
for (j = 0; j < len; ++j) {
MonoReflectionResource* res = (MonoReflectionResource*)mono_array_addr (file_module->resources, MonoReflectionResource, j);
- assembly_add_resource_manifest (file_module, assembly, res, MONO_IMPLEMENTATION_FILE | (module_index << MONO_IMPLEMENTATION_BITS));
+ if (!assembly_add_resource_manifest (file_module, assembly, res, MONO_IMPLEMENTATION_FILE | (module_index << MONO_IMPLEMENTATION_BITS), error))
+ return FALSE;
}
}
}
- }
+ }
+ return TRUE;
}
#ifndef DISABLE_REFLECTION_EMIT_SAVE
table = &assembly->tables [MONO_TABLE_MODULE];
alloc_table (table, 1);
- mono_image_fill_module_table (domain, moduleb, assembly);
+ mono_image_fill_module_table (domain, moduleb, assembly, error);
+ if (!is_ok (error))
+ goto leave;
/* Collect all types into a list sorted by their table_idx */
mono_ptr_array_init (types, moduleb->num_types, MONO_ROOT_SOURCE_REFLECTION, "dynamic module types list");
*/
for (i = 0; i < mono_ptr_array_size (types); ++i) {
MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_ptr_array_get (types, i);
- string_heap_insert_mstring (&assembly->sheap, tb->nspace);
+ string_heap_insert_mstring (&assembly->sheap, tb->nspace, error);
+ if (!is_ok (error))
+ goto leave_types;
}
for (i = 0; i < mono_ptr_array_size (types); ++i) {
MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)mono_ptr_array_get (types, i);
- string_heap_insert_mstring (&assembly->sheap, tb->name);
+ string_heap_insert_mstring (&assembly->sheap, tb->name, error);
+ if (!is_ok (error))
+ goto leave_types;
}
for (i = 0; i < mono_ptr_array_size (types); ++i) {
parent = mono_metadata_token_index (parent) << MONO_MEMBERREF_PARENT_BITS;
parent |= MONO_MEMBERREF_PARENT_METHODDEF;
- char *name = mono_string_to_utf8 (rmb.name);
+ char *name = mono_string_to_utf8_checked (rmb.name, error);
+ if (!is_ok (error)) goto fail;
token = mono_image_get_varargs_method_token (
assembly, parent, name, sig_token);
g_free (name);
return_val_if_nok (error, 0);
token = mono_metadata_token_from_dor (mono_image_typedef_or_ref (assembly, type));
}
- } else if (strcmp (klass->name, "MonoType") == 0) {
+ } else if (strcmp (klass->name, "RuntimeType") == 0) {
MonoType *type = mono_reflection_type_get_handle ((MonoReflectionType *)obj, error);
return_val_if_nok (error, 0);
MonoClass *mc = mono_class_from_mono_type (type);
void
mono_image_basic_init (MonoReflectionAssemblyBuilder *assemblyb)
{
+ MonoError error;
MonoDynamicAssembly *assembly;
MonoDynamicImage *image;
MonoDomain *domain = mono_object_domain (assemblyb);
assembly->assembly.dynamic = TRUE;
assembly->assembly.corlib_internal = assemblyb->corlib_internal;
assemblyb->assembly.assembly = (MonoAssembly*)assembly;
- assembly->assembly.basedir = mono_string_to_utf8 (assemblyb->dir);
- if (assemblyb->culture)
- assembly->assembly.aname.culture = mono_string_to_utf8 (assemblyb->culture);
- else
+ assembly->assembly.basedir = mono_string_to_utf8_checked (assemblyb->dir, &error);
+ if (mono_error_set_pending_exception (&error))
+ return;
+ if (assemblyb->culture) {
+ assembly->assembly.aname.culture = mono_string_to_utf8_checked (assemblyb->culture, &error);
+ if (mono_error_set_pending_exception (&error))
+ return;
+ } else
assembly->assembly.aname.culture = g_strdup ("");
if (assemblyb->version) {
- char *vstr = mono_string_to_utf8 (assemblyb->version);
+ char *vstr = mono_string_to_utf8_checked (assemblyb->version, &error);
+ if (mono_error_set_pending_exception (&error))
+ return;
char **version = g_strsplit (vstr, ".", 4);
char **parts = version;
assembly->assembly.aname.major = atoi (*parts++);
assembly->save = assemblyb->access != 1;
assembly->domain = domain;
- image = create_dynamic_mono_image (assembly, mono_string_to_utf8 (assemblyb->name), g_strdup ("RefEmit_YouForgotToDefineAModule"));
+ char *assembly_name = mono_string_to_utf8_checked (assemblyb->name, &error);
+ if (mono_error_set_pending_exception (&error))
+ return;
+ image = create_dynamic_mono_image (assembly, assembly_name, g_strdup ("RefEmit_YouForgotToDefineAModule"));
image->initial_image = TRUE;
assembly->assembly.aname.name = image->image.name;
assembly->assembly.image = &image->image;
if (mb->is_main && assemblyb->resources) {
int len = mono_array_length (assemblyb->resources);
- for (i = 0; i < len; ++i)
- assembly_add_resource (mb, assembly, (MonoReflectionResource*)mono_array_addr (assemblyb->resources, MonoReflectionResource, i));
+ for (i = 0; i < len; ++i) {
+ if (!assembly_add_resource (mb, assembly, (MonoReflectionResource*)mono_array_addr (assemblyb->resources, MonoReflectionResource, i), error))
+ return FALSE;
+ }
}
if (mb->resources) {
int len = mono_array_length (mb->resources);
- for (i = 0; i < len; ++i)
- assembly_add_resource (mb, assembly, (MonoReflectionResource*)mono_array_addr (mb->resources, MonoReflectionResource, i));
+ for (i = 0; i < len; ++i) {
+ if (!assembly_add_resource (mb, assembly, (MonoReflectionResource*)mono_array_addr (mb->resources, MonoReflectionResource, i), error))
+ return FALSE;
+ }
}
if (!build_compressed_metadata (assembly, error))
mono_error_init (error);
- name = mono_string_to_utf8 (fileName);
+ name = mono_string_to_utf8_checked (fileName, error);
+ return_val_if_nok (error, NULL);
image = mono_image_open (name, &status);
if (!image) {
* determined at assembly save time.
*/
/*image = (MonoDynamicImage*)ab->dynamic_assembly->assembly.image; */
- name = mono_string_to_utf8 (ab->name);
+ name = mono_string_to_utf8_checked (ab->name, error);
+ return_val_if_nok (error, FALSE);
fqname = mono_string_to_utf8_checked (moduleb->module.fqname, error);
if (!is_ok (error)) {
g_free (name);
}
}
/* This is stored in vtables/JITted code so it has to be pinned */
- res = (MonoReflectionType *)mono_object_new_pinned (domain, mono_defaults.monotype_class, error);
+ res = (MonoReflectionType *)mono_object_new_pinned (domain, mono_defaults.runtimetype_class, error);
if (!mono_error_ok (error))
return NULL;
} else if (strcmp (klass->name, "TypeBuilder") == 0) {
MonoReflectionTypeBuilder *tb = (MonoReflectionTypeBuilder *)obj;
token = tb->table_idx | MONO_TOKEN_TYPE_DEF;
- } else if (strcmp (klass->name, "MonoType") == 0) {
+ } else if (strcmp (klass->name, "RuntimeType") == 0) {
MonoType *type = mono_reflection_type_get_handle ((MonoReflectionType*)obj, error);
return_val_if_nok (error, 0);
MonoClass *mc = mono_class_from_mono_type (type);
mono_error_init (error);
klass = obj->vtable->klass;
- if (klass == mono_defaults.monotype_class) {
+ if (klass == mono_defaults.runtimetype_class) {
MonoType *type = mono_reflection_type_get_handle ((MonoReflectionType *)obj, error);
return_val_if_nok (error, NULL);
klass = mono_class_from_mono_type (type);
MonoClass *klass = mono_object_class (prop);
if (strcmp (klass->name, "PropertyBuilder") == 0) {
MonoReflectionPropertyBuilder *pb = (MonoReflectionPropertyBuilder *)prop;
- *name = mono_string_to_utf8 (pb->name);
+ *name = mono_string_to_utf8_checked (pb->name, error);
+ return_if_nok (error);
*type = mono_reflection_type_get_handle ((MonoReflectionType*)pb->type, error);
} else {
MonoReflectionProperty *p = (MonoReflectionProperty *)prop;
MonoClass *klass = mono_object_class (field);
if (strcmp (klass->name, "FieldBuilder") == 0) {
MonoReflectionFieldBuilder *fb = (MonoReflectionFieldBuilder *)field;
- *name = mono_string_to_utf8 (fb->name);
+ *name = mono_string_to_utf8_checked (fb->name, error);
+ return_if_nok (error);
*type = mono_reflection_type_get_handle ((MonoReflectionType*)fb->type, error);
} else {
MonoReflectionField *f = (MonoReflectionField *)field;
*p++ = 0xFF;
break;
}
- str = mono_string_to_utf8 ((MonoString*)arg);
+ str = mono_string_to_utf8_checked ((MonoString*)arg, error);
+ return_if_nok (error);
slen = strlen (str);
if ((p-buffer) + 10 + slen >= *buflen) {
char *newbuf;
res->data.custom_data.custom_name =
type_get_fully_qualified_name (marshaltyperef);
}
- if (minfo->mcookie)
- res->data.custom_data.cookie = mono_string_to_utf8 (minfo->mcookie);
+ if (minfo->mcookie) {
+ res->data.custom_data.cookie = mono_string_to_utf8_checked (minfo->mcookie, error);
+ if (!is_ok (error)) {
+ image_g_free (image, res);
+ return NULL;
+ }
+ }
break;
default:
event->parent = klass;
event->attrs = eb->attrs;
- event->name = mono_string_to_utf8 (eb->name);
+ event->name = mono_string_to_utf8_checked (eb->name, error);
+ if (!is_ok (error)) {
+ g_free (event);
+ return NULL;
+ }
if (eb->add_method)
event->add = eb->add_method->mhandle;
if (eb->remove_method)
return_val_if_nok (error, NULL);
*handle_class = mono_defaults.string_class;
g_assert (result);
- } else if (strcmp (obj->vtable->klass->name, "MonoType") == 0) {
+ } else if (strcmp (obj->vtable->klass->name, "RuntimeType") == 0) {
MonoType *type = mono_reflection_type_get_handle ((MonoReflectionType*)obj, error);
return_val_if_nok (error, NULL);
MonoClass *mc = mono_class_from_mono_type (type);
/* Find the method */
- name = mono_string_to_utf8 (m->name);
+ name = mono_string_to_utf8_checked (m->name, error);
+ return_val_if_nok (error, NULL);
iter = NULL;
while ((method = mono_class_get_methods (klass, &iter))) {
if (!strcmp (method->name, name))
* is_running_protected_wrapper () in threads.c and
* mono_marshal_get_remoting_invoke () in remoting.c)
*/
- mono_error_raise_exception (&error);
+ mono_error_raise_exception (&error); /* OK to throw, see note */
return NULL;
}
/* unlike most Invoke* cases InvokeMember is not inside System.Reflection[.Emit] but is SecuritySafeCritical */
if (((*kname == 'T') && (strcmp (kname, "Type") == 0)) ||
- ((*kname == 'M') && (strcmp (kname, "MonoType")) == 0)) {
+ ((*kname == 'R') && (strcmp (kname, "RuntimeType")) == 0)) {
/* if calling InvokeMember then we can't stop the stackwalk here and need to look at the caller */
if (strcmp (m->name, "InvokeMember") == 0)
{
}
+static void G_GNUC_UNUSED
+sgen_client_binary_protocol_pin_stats (int objects_pinned_in_nursery, size_t bytes_pinned_in_nursery, int objects_pinned_in_major, size_t bytes_pinned_in_major)
+{
+}
+
int sgen_thread_handshake (BOOL suspend);
gboolean sgen_suspend_thread (SgenThreadInfo *info);
gboolean sgen_resume_thread (SgenThreadInfo *info);
major_collector.iterate_objects (ITERATE_OBJECTS_SWEEP_PINNED, (IterateObjectCallbackFunc)clear_domain_free_major_pinned_object_callback, domain);
if (domain == mono_get_root_domain ()) {
- sgen_pin_stats_print_class_stats ();
+ sgen_pin_stats_report ();
sgen_object_layout_dump (stdout);
}
- sgen_restart_world (0, NULL);
+ sgen_restart_world (0);
binary_protocol_domain_unload_end (domain);
binary_protocol_flush_buffers (FALSE);
}
}
-void
-sgen_client_log_timing (GGTimingInfo *info, mword promoted_size, mword major_used_size)
-{
- SgenMajorCollector *major_collector = sgen_get_major_collector ();
- mword num_major_sections = major_collector->get_num_major_sections ();
- char full_timing_buff [1024];
- full_timing_buff [0] = '\0';
-
- if (!info->is_overflow)
- sprintf (full_timing_buff, "total %.2fms", info->stw_time / 10000.0f);
- if (info->generation == GENERATION_OLD)
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR%s: (%s) pause %.2fms, %s los size: %dK in use: %dK",
- info->is_overflow ? "_OVERFLOW" : "",
- info->reason ? info->reason : "",
- (int)info->total_time / 10000.0f,
- full_timing_buff,
- los_memory_usage_total / 1024,
- los_memory_usage / 1024);
- else
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MINOR%s: (%s) pause %.2fms, %s promoted %dK major size: %dK in use: %dK los size: %dK in use: %dK",
- info->is_overflow ? "_OVERFLOW" : "",
- info->reason ? info->reason : "",
- (int)info->total_time / 10000.0f,
- full_timing_buff,
- (int)promoted_size / 1024,
- major_collector->section_size * num_major_sections / 1024,
- major_used_size / 1024,
- los_memory_usage_total / 1024,
- los_memory_usage / 1024);
-}
-
/*
* Debugging
*/
/* LOCKING: assumes the GC lock is held */
void
-sgen_client_restart_world (int generation, GGTimingInfo *timing)
+sgen_client_restart_world (int generation, gint64 *stw_time)
{
TV_DECLARE (end_sw);
TV_DECLARE (start_handshake);
*/
release_gc_locks ();
- if (timing) {
- timing [0].stw_time = usec;
- }
+ *stw_time = usec;
}
void
MonoBoolean
ves_icall_System_Net_Dns_GetHostByName_internal (MonoString *host, MonoString **h_name, MonoArray **h_aliases, MonoArray **h_addr_list)
{
+ MonoError error;
gboolean add_local_ips = FALSE, add_info_ok = TRUE;
gchar this_hostname [256];
MonoAddressInfo *info = NULL;
- char *hostname = mono_string_to_utf8 (host);
- MonoError error;
int hint;
+ char *hostname = mono_string_to_utf8_checked (host, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
+
hint = get_addrinfo_family_hint (&error);
if (!mono_error_ok (&error)) {
mono_error_set_pending_exception (&error);
gchar hostname [NI_MAXHOST] = { 0 };
gboolean ret;
- address = mono_string_to_utf8 (addr);
+ address = mono_string_to_utf8_checked (addr, &error);
+ if (mono_error_set_pending_exception (&error))
+ return FALSE;
if (inet_pton (AF_INET, address, &saddr.sin_addr ) == 1) {
family = AF_INET;
UNLOCK_THREAD (this_obj);
if (this_obj->name && this_obj->tid) {
- char *tname = mono_string_to_utf8 (name);
+ char *tname = mono_string_to_utf8_checked (name, error);
+ return_if_nok (error);
mono_profiler_thread_name (this_obj->tid, tname);
mono_native_thread_set_name (thread_get_tid (this_obj), tname);
mono_free (tname);
This function is part of the embeding API and has no way to return the exception
to be thrown. So what we do is keep the old behavior and raise the exception.
*/
- mono_error_raise_exception (&error);
+ mono_error_raise_exception (&error); /* OK to throw, see note */
} else {
async_abort_internal (internal, TRUE);
}
if test -d $(top_srcdir)/.git; then \
(cd $(top_srcdir); \
LANG=C; export LANG; \
- branch=`git branch | grep '^\*' | sed 's/(detached from .*/explicit/' | cut -d ' ' -f 2`; \
+ if test -z "$$ghprbPullId"; then \
+ branch=`git branch | grep '^\*' | sed 's/(detached from .*/explicit/' | cut -d ' ' -f 2`; \
+ else \
+ branch="pull-request-$$ghprbPullId"; \
+ fi; \
version=`git log --no-color --first-parent -n1 --pretty=format:%h`; \
echo "#define FULL_VERSION \"$$branch/$$version\""; \
); \
MonoAotFileFlags flags;
MonoDynamicStream blob;
gboolean blob_closed;
- MonoClass **typespec_classes;
+ GHashTable *typespec_classes;
GString *llc_args;
GString *as_args;
char *assembly_name_sym;
/* FIXME: Search referenced images as well */
if (!acfg->typespec_classes) {
- acfg->typespec_classes = (MonoClass **)mono_mempool_alloc0 (acfg->mempool, sizeof (MonoClass*) * len);
- for (i = 0; i < len; ++i) {
+ acfg->typespec_classes = g_hash_table_new (NULL, NULL);
+ for (i = 0; i < len; i++) {
MonoError error;
- acfg->typespec_classes [i] = mono_class_get_and_inflate_typespec_checked (acfg->image, MONO_TOKEN_TYPE_SPEC | (i + 1), NULL, &error);
+ int typespec = MONO_TOKEN_TYPE_SPEC | (i + 1);
+ MonoClass *klass_key = mono_class_get_and_inflate_typespec_checked (acfg->image, typespec, NULL, &error);
g_assert (mono_error_ok (&error)); /* FIXME error handling */
+ g_hash_table_insert (acfg->typespec_classes, klass_key, GINT_TO_POINTER (typespec));
}
}
- for (i = 0; i < len; ++i) {
- if (acfg->typespec_classes [i] == klass)
- break;
- }
-
- if (i < len)
- return MONO_TOKEN_TYPE_SPEC | (i + 1);
- else
- return 0;
+ return GPOINTER_TO_INT (g_hash_table_lookup (acfg->typespec_classes, klass));
}
static void
g_hash_table_destroy (acfg->image_hash);
g_hash_table_destroy (acfg->unwind_info_offsets);
g_hash_table_destroy (acfg->method_label_hash);
+ if (acfg->typespec_classes)
+ g_hash_table_destroy (acfg->typespec_classes);
g_hash_table_destroy (acfg->export_names);
g_hash_table_destroy (acfg->plt_entry_debug_sym_cache);
g_hash_table_destroy (acfg->klass_blob_hash);
gpointer res = mono_aot_get_method_checked (domain, method, &error);
/* This is external only, so its ok to raise here */
- mono_error_raise_exception (&error);
+ mono_error_raise_exception (&error); /* OK to throw, external only without a good alternative */
return res;
}
}
[Category ("DYNCALL")]
+ [Category ("!FULLAOT-AMD64")]
static int test_0_arm64_dyncall_hfa_double () {
double arg1 = 1.0f;
// HFA with double members
}
[Category ("DYNCALL")]
+ [Category ("!FULLAOT-AMD64")]
static int test_0_arm64_dyncall_hfa_float () {
double arg1 = 1.0f;
var s = new Struct2 ();
[Category ("DYNCALL")]
[Category ("GSHAREDVT")]
+ [Category ("!FULLAOT-AMD64")]
static int test_0_arm64_dyncall_gsharedvt_out_hfa_double () {
/* gsharedvt out trampoline with double hfa argument */
double arg1 = 1.0f;
[Category ("DYNCALL")]
[Category ("GSHAREDVT")]
+ [Category ("!FULLAOT-AMD64")]
static int test_0_arm64_dyncall_gsharedvt_out_hfa_float () {
/* gsharedvt out trampoline with double hfa argument */
double arg1 = 1.0f;
}
[Category ("DYNCALL")]
+ [Category ("GSHAREDVT")]
+ [Category ("!FULLAOT-AMD64")]
static int test_0_arm64_dyncall_vtypebyref_ret () {
var s = new VTypeByRefStruct () { o1 = 1, o2 = 2, o3 = 3 };
Type t = typeof (Foo5<>).MakeGenericType (new Type [] { typeof (VTypeByRefStruct) });
}
}
- [Category("DYNCALL")]
+ [Category ("DYNCALL")]
+ [Category ("GSHAREDVT")]
static int test_0_arm_dyncall_reg_stack_split () {
var m = typeof (Foo6).GetMethod ("reg_stack_split_inner").MakeGenericMethod (new Type[] { typeof (long) });
var o = new Foo6 ();
}
[Category ("DYNCALL")]
+ [Category ("!FULLAOT-AMD64")]
public static int test_0_dyncall_nullable () {
int? v;
return 0;
}
+ [Category ("DYNCALL")]
public static int test_0_array_accessor_runtime_invoke_ref () {
var t = typeof (string[]);
var arr = Array.CreateInstance (typeof (string), 1);
}
[Category ("DYNCALL")]
+ [Category ("!FULLAOT-AMD64")]
public static int test_0_large_nullable_invoke () {
var s = new LargeStruct () { a = 1, b = 2, c = 3, d = 4 };
int hash = 0;
if (obj == NULL)
- return 0;
+ return NULL;
if (suspend_count) {
/*
static inline int
get_objid (MonoObject *obj)
{
- return get_objref (obj)->id;
+ if (!obj)
+ return 0;
+ else
+ return get_objref (obj)->id;
}
/*
ecount ++;
- if (!thread)
- thread = mono_thread_current ();
+ if (event == EVENT_KIND_VM_DEATH) {
+ thread = NULL;
+ } else {
+ if (!thread)
+ thread = mono_thread_current ();
- if (event == EVENT_KIND_VM_START && arg != NULL)
- thread = (MonoThread *)arg;
+ if (event == EVENT_KIND_VM_START && arg != NULL)
+ thread = (MonoThread *)arg;
+ }
buffer_add_objid (&buf, (MonoObject*)thread); // thread
static void
runtime_shutdown (MonoProfiler *prof)
{
- process_profiler_event (EVENT_KIND_VM_DEATH, mono_thread_current ());
+ process_profiler_event (EVENT_KIND_VM_DEATH, NULL);
mono_debugger_agent_cleanup ();
}
void
mono_debugger_agent_debug_log (int level, MonoString *category, MonoString *message)
{
+ MonoError error;
int suspend_policy;
GSList *events;
EventInfo ei;
mono_loader_unlock ();
ei.level = level;
- ei.category = category ? mono_string_to_utf8 (category) : NULL;
- ei.message = message ? mono_string_to_utf8 (message) : NULL;
+ ei.category = NULL;
+ if (category) {
+ ei.category = mono_string_to_utf8_checked (category, &error);
+ mono_error_cleanup (&error);
+ }
+ ei.message = NULL;
+ if (message) {
+ ei.message = mono_string_to_utf8_checked (message, &error);
+ mono_error_cleanup (&error);
+ }
process_event (EVENT_KIND_USER_LOG, &ei, 0, NULL, events, suspend_policy);
static void
buffer_add_cattr_arg (Buffer *buf, MonoType *t, MonoDomain *domain, MonoObject *val)
{
- if (val && val->vtable->klass == mono_defaults.monotype_class) {
+ if (val && val->vtable->klass == mono_defaults.runtimetype_class) {
/* Special case these so the client doesn't have to handle Type objects */
buffer_add_byte (buf, VALUE_TYPE_ID_TYPE);
s = mono_ldstr_checked (domain, method->klass->image, mono_metadata_token_index (token), &error);
mono_error_assert_ok (&error); /* FIXME don't swallow the error */
- s2 = mono_string_to_utf8 (s);
+ s2 = mono_string_to_utf8_checked (s, &error);
+ mono_error_assert_ok (&error);
buffer_add_byte (buf, TOKEN_TYPE_STRING);
buffer_add_string (buf, s2);
break;
}
default: {
+ MonoError error;
gpointer val;
MonoClass *handle_class;
break;
}
} else {
- MonoError error;
val = mono_ldtoken_checked (method->klass->image, token, &handle_class, NULL, &error);
if (!val)
g_error ("Could not load token due to %s", mono_error_get_message (&error));
} else if (handle_class == mono_defaults.string_class) {
char *s;
- s = mono_string_to_utf8 ((MonoString *)val);
+ s = mono_string_to_utf8_checked ((MonoString *)val, &error);
+ mono_error_assert_ok (&error);
buffer_add_byte (buf, TOKEN_TYPE_STRING);
buffer_add_string (buf, s);
g_free (s);
buffer_add_int (buf, mono_string_length (str) * 2);
buffer_add_data (buf, (guint8*)mono_string_chars (str), mono_string_length (str) * 2);
} else {
- s = mono_string_to_utf8 (str);
+ MonoError error;
+ s = mono_string_to_utf8_checked (str, &error);
+ mono_error_assert_ok (&error);
buffer_add_string (buf, s);
g_free (s);
}
#define NEW_LDSTRLITCONST(cfg,dest,val) NEW_AOTCONST ((cfg), (dest), MONO_PATCH_INFO_LDSTR_LIT, (val))
-#define NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.monotype_class)
+#define NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.runtimetype_class)
#define NEW_LDTOKENCONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), (generic_context), STACK_PTR, NULL)
#define EMIT_NEW_LDSTRLITCONST(cfg,dest,val) do { NEW_AOTCONST ((cfg), (dest), MONO_PATCH_INFO_LDSTR_LIT, (val)); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
-#define EMIT_NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.monotype_class); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
+#define EMIT_NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.runtimetype_class); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
#define EMIT_NEW_LDTOKENCONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), (generic_context), STACK_PTR, NULL); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
if (ex)
mono_raise_exception (ex);
}
+
+void
+mono_throw_method_access (MonoMethod *callee, MonoMethod *caller)
+{
+ char *callee_name = mono_method_full_name (callee, 1);
+ char *caller_name = mono_method_full_name (caller, 1);
+ MonoError error;
+
+ mono_error_init (&error);
+ mono_error_set_generic_error (&error, "System", "MethodAccessException", "Method `%s' is inaccessible from method `%s'\n", callee_name, caller_name);
+ mono_error_set_pending_exception (&error);
+ g_free (callee_name);
+ g_free (caller_name);
+}
double mono_ckfinite (double d);
+void mono_throw_method_access (MonoMethod *callee, MonoMethod *caller);
+
#endif /* __MONO_JIT_ICALLS_H__ */
ins->inst_destbasereg = def->sreg1;
ins->inst_offset += def->inst_imm;
}
+
+ if (!MONO_IS_STORE_MEMBASE (ins) && !vreg_is_volatile (cfg, ins->dreg)) {
+ defs [ins->dreg] = ins;
+ def_index [ins->dreg] = ins_index;
+ }
}
- if ((spec [MONO_INST_DEST] != ' ') && !MONO_IS_STORE_MEMBASE (ins) && !vreg_is_volatile (cfg, ins->dreg)) {
- defs [ins->dreg] = ins;
- def_index [ins->dreg] = ins_index;
- }
-
if (MONO_IS_CALL (ins))
last_call_index = ins_index;
if (cfg->exception_type != MONO_EXCEPTION_NONE) \
goto exception_exit; \
} while (0)
-#define METHOD_ACCESS_FAILURE(method, cmethod) do { \
- method_access_failure ((cfg), (method), (cmethod)); \
- goto exception_exit; \
- } while (0)
#define FIELD_ACCESS_FAILURE(method, field) do { \
field_access_failure ((cfg), (method), (field)); \
goto exception_exit; \
G_BREAKPOINT ();
}
-static MONO_NEVER_INLINE void
-method_access_failure (MonoCompile *cfg, MonoMethod *method, MonoMethod *cil_method)
-{
- char *method_fname = mono_method_full_name (method, TRUE);
- char *cil_method_fname = mono_method_full_name (cil_method, TRUE);
- mono_cfg_set_exception (cfg, MONO_EXCEPTION_MONO_ERROR);
- mono_error_set_generic_error (&cfg->error, "System", "MethodAccessException", "Method `%s' is inaccessible from method `%s'\n", cil_method_fname, method_fname);
- g_free (method_fname);
- g_free (cil_method_fname);
-}
-
static MONO_NEVER_INLINE void
field_access_failure (MonoCompile *cfg, MonoMethod *method, MonoClassField *field)
{
return ins;
}
+
+static void
+emit_method_access_failure (MonoCompile *cfg, MonoMethod *method, MonoMethod *cil_method)
+{
+ MonoInst *args [16];
+
+ args [0] = emit_get_rgctx_method (cfg, mono_method_check_context_used (method), method, MONO_RGCTX_INFO_METHOD);
+ args [1] = emit_get_rgctx_method (cfg, mono_method_check_context_used (cil_method), cil_method, MONO_RGCTX_INFO_METHOD);
+
+ mono_emit_jit_icall (cfg, mono_throw_method_access, args);
+}
+
static MonoMethod*
get_memcpy_method (void)
{
MONO_INST_NEW (cfg, ins, OP_OBJC_GET_SELECTOR);
ins->dreg = mono_alloc_ireg (cfg);
// FIXME: Leaks
- ins->inst_p0 = mono_string_to_utf8 (s);
+ ins->inst_p0 = mono_string_to_utf8_checked (s, &cfg->error);
+ return_val_if_nok (&cfg->error, NULL);
MONO_ADD_INS (cfg->cbb, ins);
return ins;
}
}
if (!mono_method_can_access_method (method_definition, target_method) &&
!mono_method_can_access_method (method, cil_method))
- METHOD_ACCESS_FAILURE (method, cil_method);
+ emit_method_access_failure (cfg, method, cil_method);
}
if (mono_security_core_clr_enabled ())
cil_method = cmethod;
if (!dont_verify && !cfg->skip_visibility && !mono_method_can_access_method (method, cmethod))
- METHOD_ACCESS_FAILURE (method, cil_method);
+ emit_method_access_failure (cfg, method, cil_method);
if (mono_security_core_clr_enabled ())
ensure_method_is_allowed_to_call_method (cfg, method, cmethod);
* Zoltan Varga <vargaz@gmail.com>
* Rodrigo Kumpera <kumpera@gmail.com>
* Andi McClure <andi.mcclure@xamarin.com>
+ * Johan Lorensson <johan.lorensson@xamarin.com>
*
* Copyright 2015 Xamarin, Inc (http://www.xamarin.com)
* Licensed under the MIT license. See LICENSE file in the project root for full license information.
/*
* Slot mapping:
+ *
+ * System V:
* 0..5 - rdi, rsi, rdx, rcx, r8, r9
* 6..13 - xmm0..xmm7
* 14.. - stack slots
+ *
+ * Windows:
+ * 0..3 - rcx, rdx, r8, r9
+ * 4..7 - xmm0..xmm3
+ * 8.. - stack slots
+ *
*/
static inline int
map_reg (int reg)
DEBUG_AMD64_GSHAREDVT_PRINT ("-- return in (%s) out (%s) var_ret %d\n", arg_info_desc (&caller_cinfo->ret), arg_info_desc (&callee_cinfo->ret), var_ret);
if (cinfo->ret.storage == ArgValuetypeAddrInIReg) {
- /* Both the caller and the callee pass the vtype ret address in r8 */
+ /* Both the caller and the callee pass the vtype ret address in r8 (System V) and RCX or RDX (Windows) */
g_assert (gcinfo->ret.storage == ArgValuetypeAddrInIReg || gcinfo->ret.storage == ArgGsharedvtVariableInReg);
add_to_map (map, map_reg (cinfo->ret.reg), map_reg (cinfo->ret.reg));
}
* Zoltan Varga <vargaz@gmail.com>
* Rodrigo Kumpera <kumpera@gmail.com>
* Andi McClure <andi.mcclure@xamarin.com>
+ * Johan Lorensson <johan.lorensson@xamarin.com>
*
* Copyright 2015 Xamarin, Inc (http://www.xamarin.com)
* Licensed under the MIT license. See LICENSE file in the project root for full license information.
/*
* get_call_info:
*
- * Obtain information about a call according to the calling convention.
- * For AMD64, see the "System V ABI, x86-64 Architecture Processor Supplement
+ * Obtain information about a call according to the calling convention.
+ * For AMD64 System V, see the "System V ABI, x86-64 Architecture Processor Supplement
* Draft Version 0.23" document for more information.
+ * For AMD64 Windows, see "Overview of x64 Calling Conventions",
+ * https://msdn.microsoft.com/en-us/library/ms235286.aspx
*/
static CallInfo*
get_call_info (MonoMemPool *mp, MonoMethodSignature *sig)
{
int i;
-#ifdef HOST_WIN32
- return FALSE;
-#endif
-
switch (cinfo->ret.storage) {
case ArgNone:
case ArgInIReg:
#define MONO_ARCH_HAVE_TLS_GET_REG 1
#endif
-#if !defined (TARGET_WIN32)
#define MONO_ARCH_GSHAREDVT_SUPPORTED 1
-#endif
#if defined(TARGET_APPLETVOS)
cinfo->ret.nregs = nfields;
cinfo->ret.esize = esize;
} else {
- if (is_pinvoke && mono_class_native_size (mono_class_from_mono_type (t), &align) <= sizeof (gpointer))
- cinfo->ret.storage = RegTypeStructByVal;
- else
+ if (is_pinvoke) {
+ int native_size = mono_class_native_size (mono_class_from_mono_type (t), &align);
+ int max_size;
+
+#ifdef TARGET_WATCHOS
+ max_size = 16;
+#else
+ max_size = 4;
+#endif
+ if (native_size <= max_size) {
+ cinfo->ret.storage = RegTypeStructByVal;
+ cinfo->ret.struct_size = native_size;
+ cinfo->ret.nregs = ALIGN_TO (native_size, 4) / 4;
+ } else {
+ cinfo->ret.storage = RegTypeStructByAddr;
+ }
+ } else {
cinfo->ret.storage = RegTypeStructByAddr;
+ }
}
break;
case MONO_TYPE_VAR:
size = mini_type_stack_size_full (t, &align, FALSE);
}
DEBUG(g_print ("load %d bytes struct\n", size));
+
+#ifdef TARGET_WATCHOS
+ /* Watchos pass large structures by ref */
+ /* We only do this for pinvoke to make gsharedvt/dyncall simpler */
+ if (sig->pinvoke && size > 16) {
+ add_general (&gr, &stack_size, ainfo, TRUE);
+ switch (ainfo->storage) {
+ case RegTypeGeneral:
+ ainfo->storage = RegTypeStructByAddr;
+ break;
+ case RegTypeBase:
+ ainfo->storage = RegTypeStructByAddrOnStack;
+ break;
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+ break;
+ }
+#endif
+
align_size = size;
nwords = 0;
align_size += (sizeof (gpointer) - 1);
switch (cinfo->ret.storage) {
case RegTypeStructByVal:
- cfg->ret->opcode = OP_REGOFFSET;
- cfg->ret->inst_basereg = cfg->frame_reg;
- offset += sizeof (gpointer) - 1;
- offset &= ~(sizeof (gpointer) - 1);
- cfg->ret->inst_offset = - offset;
- offset += sizeof(gpointer);
- break;
case RegTypeHFA:
/* Allocate a local to hold the result, the epilog will copy it to the correct place */
offset = ALIGN_TO (offset, 8);
cfg->ret->opcode = OP_REGOFFSET;
cfg->ret->inst_basereg = cfg->frame_reg;
cfg->ret->inst_offset = offset;
- // FIXME:
- offset += 32;
+ if (cinfo->ret.storage == RegTypeStructByVal)
+ offset += cinfo->ret.nregs * sizeof (gpointer);
+ else
+ offset += 32;
break;
case RegTypeStructByAddr:
ins = cfg->vret_addr;
linfo->ret.storage = LLVMArgVtypeRetAddr;
linfo->vret_arg_index = cinfo->vret_arg_index;
break;
+#if TARGET_WATCHOS
+ case RegTypeStructByVal:
+ /* LLVM models this by returning an int array */
+ linfo->ret.storage = LLVMArgAsIArgs;
+ linfo->ret.nslots = cinfo->ret.nregs;
+ break;
+#endif
default:
cfg->exception_message = g_strdup_printf ("unknown ret conv (%d)", cinfo->ret.storage);
cfg->disable_llvm = TRUE;
}
for (i = 0; i < n; ++i) {
+ LLVMArgInfo *lainfo = &linfo->args [i];
ainfo = cinfo->args + i;
- linfo->args [i].storage = LLVMArgNone;
+ lainfo->storage = LLVMArgNone;
switch (ainfo->storage) {
case RegTypeGeneral:
case RegTypeBase:
case RegTypeBaseGen:
case RegTypeFP:
- linfo->args [i].storage = LLVMArgNormal;
+ lainfo->storage = LLVMArgNormal;
break;
case RegTypeStructByVal:
- linfo->args [i].storage = LLVMArgAsIArgs;
- linfo->args [i].nslots = ainfo->struct_size / sizeof (gpointer);
+ lainfo->storage = LLVMArgAsIArgs;
+ lainfo->nslots = ainfo->struct_size / sizeof (gpointer);
+ break;
+ case RegTypeStructByAddr:
+ case RegTypeStructByAddrOnStack:
+ lainfo->storage = LLVMArgVtypeByRef;
break;
default:
cfg->exception_message = g_strdup_printf ("ainfo->storage (%d)", ainfo->storage);
switch (cinfo->ret.storage) {
case RegTypeStructByVal:
- /* The JIT will transform this into a normal call */
- call->vret_in_reg = TRUE;
- break;
case RegTypeHFA:
+ if (cinfo->ret.storage == RegTypeStructByVal && cinfo->ret.nregs == 1) {
+ /* The JIT will transform this into a normal call */
+ call->vret_in_reg = TRUE;
+ break;
+ }
+ if (call->inst.opcode == OP_TAILCALL)
+ break;
/*
* The vtype is returned in registers, save the return area address in a local, and save the vtype into
* the location pointed to by it after call in emit_move_return_value ().
mono_call_inst_add_outarg_reg (cfg, call, ins->dreg, ainfo->reg, FALSE);
}
break;
- case RegTypeStructByAddr:
- NOT_IMPLEMENTED;
-#if 0
- /* FIXME: where si the data allocated? */
- arg->backend.reg3 = ainfo->reg;
- call->used_iregs |= 1 << ainfo->reg;
- g_assert_not_reached ();
-#endif
- break;
case RegTypeStructByVal:
case RegTypeGSharedVtInReg:
case RegTypeGSharedVtOnStack:
case RegTypeHFA:
+ case RegTypeStructByAddr:
+ case RegTypeStructByAddrOnStack:
MONO_INST_NEW (cfg, ins, OP_OUTARG_VT);
ins->opcode = OP_OUTARG_VT;
ins->sreg1 = in->dreg;
switch (ainfo->storage) {
case RegTypeGSharedVtInReg:
+ case RegTypeStructByAddr:
/* Pass by addr */
mono_call_inst_add_outarg_reg (cfg, call, src->dreg, ainfo->reg, FALSE);
break;
case RegTypeGSharedVtOnStack:
+ case RegTypeStructByAddrOnStack:
/* Pass by addr on stack */
MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, ARMREG_SP, ainfo->offset, src->dreg);
break;
cinfo = call->call_info;
switch (cinfo->ret.storage) {
+ case RegTypeStructByVal:
case RegTypeHFA: {
MonoInst *loc = cfg->arch.vret_addr_loc;
int i;
+ if (cinfo->ret.storage == RegTypeStructByVal && cinfo->ret.nregs == 1) {
+ /* The JIT treats this as a normal call */
+ break;
+ }
+
/* Load the destination address */
g_assert (loc && loc->opcode == OP_REGOFFSET);
code = mono_arm_emit_load_imm (code, ARMREG_LR, loc->inst_offset);
ARM_LDR_REG_REG (code, ARMREG_LR, loc->inst_basereg, ARMREG_LR);
}
- for (i = 0; i < cinfo->ret.nregs; ++i) {
- if (cinfo->ret.esize == 4)
- ARM_FSTS (code, cinfo->ret.reg + i, ARMREG_LR, i * 4);
- else
- ARM_FSTD (code, cinfo->ret.reg + (i * 2), ARMREG_LR, i * 8);
+
+ if (cinfo->ret.storage == RegTypeStructByVal) {
+ int rsize = cinfo->ret.struct_size;
+
+ for (i = 0; i < cinfo->ret.nregs; ++i) {
+ g_assert (rsize >= 0);
+ switch (rsize) {
+ case 0:
+ break;
+ case 1:
+ ARM_STRB_IMM (code, i, ARMREG_LR, i * 4);
+ break;
+ case 2:
+ ARM_STRH_IMM (code, i, ARMREG_LR, i * 4);
+ break;
+ default:
+ ARM_STR_IMM (code, i, ARMREG_LR, i * 4);
+ break;
+ }
+ rsize -= 4;
+ }
+ } else {
+ for (i = 0; i < cinfo->ret.nregs; ++i) {
+ if (cinfo->ret.esize == 4)
+ ARM_FSTS (code, cinfo->ret.reg + i, ARMREG_LR, i * 4);
+ else
+ ARM_FSTD (code, cinfo->ret.reg + (i * 2), ARMREG_LR, i * 8);
+ }
}
return code;
}
case RegTypeGeneral:
case RegTypeIRegPair:
case RegTypeGSharedVtInReg:
+ case RegTypeStructByAddr:
switch (ainfo->size) {
case 1:
if (arm_is_imm12 (inst->inst_offset))
break;
case RegTypeBase:
case RegTypeGSharedVtOnStack:
+ case RegTypeStructByAddrOnStack:
if (arm_is_imm12 (prev_sp_offset + ainfo->offset)) {
ARM_LDR_IMM (code, ARMREG_LR, ARMREG_SP, (prev_sp_offset + ainfo->offset));
} else {
}
break;
}
- case RegTypeStructByAddr:
- g_assert_not_reached ();
- /* FIXME: handle overrun! with struct sizes not multiple of 4 */
- code = emit_memcpy (code, ainfo->vtsize * sizeof (gpointer), inst->inst_basereg, inst->inst_offset, ainfo->reg, 0);
default:
g_assert_not_reached ();
break;
case RegTypeStructByVal: {
MonoInst *ins = cfg->ret;
- if (arm_is_imm12 (ins->inst_offset)) {
- ARM_LDR_IMM (code, ARMREG_R0, ins->inst_basereg, ins->inst_offset);
+ if (cinfo->ret.nregs == 1) {
+ if (arm_is_imm12 (ins->inst_offset)) {
+ ARM_LDR_IMM (code, ARMREG_R0, ins->inst_basereg, ins->inst_offset);
+ } else {
+ code = mono_arm_emit_load_imm (code, ARMREG_LR, ins->inst_offset);
+ ARM_LDR_REG_REG (code, ARMREG_R0, ins->inst_basereg, ARMREG_LR);
+ }
} else {
- code = mono_arm_emit_load_imm (code, ARMREG_LR, ins->inst_offset);
- ARM_LDR_REG_REG (code, ARMREG_R0, ins->inst_basereg, ARMREG_LR);
+ for (i = 0; i < cinfo->ret.nregs; ++i) {
+ int offset = ins->inst_offset + (i * 4);
+ if (arm_is_imm12 (offset)) {
+ ARM_LDR_IMM (code, i, ins->inst_basereg, offset);
+ } else {
+ code = mono_arm_emit_load_imm (code, ARMREG_LR, offset);
+ ARM_LDR_REG_REG (code, i, ins->inst_basereg, ARMREG_LR);
+ }
+ }
}
break;
}
RegTypeBaseGen,
/* FP value passed in either an ireg or a vfp reg */
RegTypeFP,
+ /* Struct passed/returned in gregs */
RegTypeStructByVal,
RegTypeStructByAddr,
+ RegTypeStructByAddrOnStack,
/* gsharedvt argument passed by addr in greg */
RegTypeGSharedVtInReg,
/* gsharedvt argument passed by addr on stack */
guint16 vtsize; /* in param area */
/* RegTypeHFA */
int esize;
- /* RegTypeHFA */
+ /* RegTypeHFA/RegTypeStructByVal */
int nregs;
guint8 reg;
ArgStorage storage;
+ /* RegTypeStructByVal */
gint32 struct_size;
guint8 size : 4; /* 1, 2, 4, 8, or regs used by RegTypeStructByVal */
} ArgInfo;
mono_error_assert_ok (&error);
}
if (msg == NULL) {
- msg = message ? mono_string_to_utf8 ((MonoString *) message) : g_strdup ("(System.Exception.Message property not available)");
+ if (message) {
+ msg = mono_string_to_utf8_checked ((MonoString *) message, &error);
+ if (!is_ok (&error)) {
+ mono_error_cleanup (&error);
+ msg = g_strdup ("(error while display System.Exception.Message property)");
+ }
+ } else {
+ msg = g_strdup ("(System.Exception.Message property not available)");
+ }
}
g_print ("[%p:] EXCEPTION handling: %s.%s: %s\n", (void*)mono_native_thread_id_get (), mono_object_class (obj)->name_space, mono_object_class (obj)->name, msg);
g_free (msg);
if (unhandled_exception_hook) {
unhandled_exception_hook (exc, unhandled_exception_hook_data);
} else {
+ MonoError inner_error;
MonoObject *other = NULL;
- MonoString *str = mono_object_to_string (exc, &other);
+ MonoString *str = mono_object_try_to_string (exc, &other, &inner_error);
char *msg = NULL;
- if (str)
- msg = mono_string_to_utf8 (str);
- else if (other) {
+ if (str && is_ok (&inner_error)) {
+ msg = mono_string_to_utf8_checked (str, &inner_error);
+ }
+ if (!is_ok (&inner_error)) {
+ msg = g_strdup_printf ("Nested exception while formatting original exception");
+ mono_error_cleanup (&inner_error);
+ } else if (other) {
char *original_backtrace = mono_exception_get_managed_backtrace ((MonoException*)exc);
char *nested_backtrace = mono_exception_get_managed_backtrace ((MonoException*)other);
int i;
if (!MONO_TYPE_ISSTRUCT (t))
- return &mono_defaults.int_class->byval_arg;
+ return get_wrapper_shared_type (&mono_defaults.object_class->byval_arg);
klass = mono_class_from_mono_type (t);
orig_ctx = &klass->generic_class->context;
}
break;
}
+ case LLVMArgAsIArgs:
+ ret_type = LLVMArrayType (IntPtrType (), cinfo->ret.nslots);
+ break;
case LLVMArgFpStruct: {
/* Vtype returned as a fp struct */
LLVMTypeRef members [16];
addresses [call->inst.dreg] = build_alloca (ctx, sig->ret);
LLVMBuildStore (builder, lcall, addresses [call->inst.dreg]);
break;
+ case LLVMArgAsIArgs:
case LLVMArgFpStruct:
if (!addresses [call->inst.dreg])
addresses [call->inst.dreg] = build_alloca (ctx, sig->ret);
LLVMBuildRetVoid (builder);
break;
}
+ case LLVMArgAsIArgs:
case LLVMArgFpStruct: {
LLVMTypeRef ret_type = LLVMGetReturnType (LLVMGetElementType (LLVMTypeOf (method)));
LLVMValueRef retval;
MINI_OP(OP_IL_SEQ_POINT, "il_seq_point", NONE, NONE, NONE)
MINI_OP(OP_IMPLICIT_EXCEPTION, "implicit_exception", NONE, NONE, NONE)
+/* CALL opcodes need to stay together, see MONO_IS_CALL macro */
MINI_OP(OP_VOIDCALL, "voidcall", NONE, NONE, NONE)
MINI_OP(OP_VOIDCALL_REG, "voidcall_reg", NONE, IREG, NONE)
MINI_OP(OP_VOIDCALL_MEMBASE, "voidcall_membase", NONE, IREG, NONE)
register_icall (mono_llvmonly_init_delegate_virtual, "mono_llvmonly_init_delegate_virtual", "void object object ptr", TRUE);
register_icall (mono_get_assembly_object, "mono_get_assembly_object", "object ptr", TRUE);
register_icall (mono_get_method_object, "mono_get_method_object", "object ptr", TRUE);
+ register_icall (mono_throw_method_access, "mono_throw_method_access", "void ptr ptr", FALSE);
register_icall_with_wrapper (mono_monitor_enter, "mono_monitor_enter", "void obj");
register_icall_with_wrapper (mono_monitor_enter_v4, "mono_monitor_enter_v4", "void obj ptr");
#include <mono/metadata/appdomain.h>
#include <mono/metadata/debug-helpers.h>
#include <mono/metadata/profiler-private.h>
+#include <mono/utils/mono-error.h>
+#include <mono/utils/mono-error-internals.h>
#include <mono/utils/mono-math.h>
#include <mono/utils/mono-mmap.h>
#include <mono/utils/mono-hwcap-s390x.h>
/* */
/*------------------------------------------------------------------*/
+static void
+decodeParmString (MonoString *s)
+{
+ MonoError error;
+ char *str = mono_string_to_utf8_checked(s, &error);
+ if (is_ok (&error)) {
+ printf("[STRING:%p:%s], ", s, str);
+ g_free (str);
+ } else {
+ mono_error_cleanup (&error);
+ printf("[STRING:%p:], ", s);
+ }
+}
+
static void
decodeParm(MonoType *type, void *curParm, int size)
{
MonoString *s = *((MonoString **) curParm);
if (s) {
g_assert (((MonoObject *) s)->vtable->klass == mono_defaults.string_class);
- printf("[STRING:%p:%s], ", s, mono_string_to_utf8(s));
+ decodeParmString (s);
} else {
printf("[STRING:null], ");
}
klass = obj->vtable->klass;
printf("%p [%p] ",obj,curParm);
if (klass == mono_defaults.string_class) {
- printf("[STRING:%p:%s]",
- obj, mono_string_to_utf8 ((MonoString *) obj));
+ decodeParmString ((MonoString *)obj);
} else if (klass == mono_defaults.int32_class) {
printf("[INT32:%p:%d]",
obj, *(gint32 *)((char *)obj + sizeof (MonoObject)));
if (obj->vtable) {
klass = obj->vtable->klass;
if (klass == mono_defaults.string_class) {
- printf ("this:[STRING:%p:%s], ",
- obj, mono_string_to_utf8 ((MonoString *)obj));
+ printf ("this:");
+ decodeParmString((MonoString *)obj);
} else {
printf ("this:%p[%s.%s], ",
obj, klass->name_space, klass->name);
;
if (s) {
g_assert (((MonoObject *)s)->vtable->klass == mono_defaults.string_class);
- printf ("[STRING:%p:%s]", s, mono_string_to_utf8 (s));
+ decodeParmString (s);
} else
printf ("[STRING:null], ");
break;
#define MONO_IS_STORE_MEMBASE(ins) (((ins)->opcode >= OP_STORE_MEMBASE_REG && (ins)->opcode <= OP_STOREV_MEMBASE) || ((ins)->opcode >= OP_ATOMIC_STORE_I1 && (ins)->opcode <= OP_ATOMIC_STORE_R8))
#define MONO_IS_STORE_MEMINDEX(ins) (((ins)->opcode >= OP_STORE_MEMINDEX) && ((ins)->opcode <= OP_STORER8_MEMINDEX))
-#define MONO_IS_CALL(ins) (((ins->opcode >= OP_VOIDCALL) && (ins->opcode <= OP_VOIDCALL_MEMBASE)) || ((ins->opcode >= OP_FCALL) && (ins->opcode <= OP_FCALL_MEMBASE)) || ((ins->opcode >= OP_LCALL) && (ins->opcode <= OP_LCALL_MEMBASE)) || ((ins->opcode >= OP_VCALL) && (ins->opcode <= OP_VCALL_MEMBASE)) || ((ins->opcode >= OP_CALL) && (ins->opcode <= OP_CALL_MEMBASE)) || ((ins->opcode >= OP_VCALL2) && (ins->opcode <= OP_VCALL2_MEMBASE)) || (ins->opcode == OP_TAILCALL) || ((ins->opcode >= OP_RCALL) && (ins->opcode <= OP_RCALL_MEMBASE)))
+// OP_DYN_CALL is not a MonoCallInst
+#define MONO_IS_CALL(ins) (((ins->opcode >= OP_VOIDCALL) && (ins->opcode <= OP_VCALL2_MEMBASE)) || (ins->opcode == OP_TAILCALL))
#define MONO_IS_JUMP_TABLE(ins) (((ins)->opcode == OP_JUMP_TABLE) ? TRUE : ((((ins)->opcode == OP_AOTCONST) && (ins->inst_i1 == (gpointer)MONO_PATCH_INFO_SWITCH)) ? TRUE : ((ins)->opcode == OP_SWITCH) ? TRUE : ((((ins)->opcode == OP_GOT_ENTRY) && ((ins)->inst_right->inst_i1 == (gpointer)MONO_PATCH_INFO_SWITCH)) ? TRUE : FALSE)))
LLVMArgGsharedvtFixedVtype,
/* Variable sized argument passed to/returned from gsharedvt method by ref */
LLVMArgGsharedvtVariable,
- /* Vtype passed as one int array argument */
+ /* Vtype passed/returned as one int array argument */
LLVMArgAsIArgs,
/* Vtype passed as a set of fp arguments */
LLVMArgAsFpArgs,
g_free (as);
} else if (klass == mono_defaults.int32_class) {
printf ("[INT32:%p:%d], ", o, *(gint32 *)((char *)o + sizeof (MonoObject)));
- } else if (klass == mono_defaults.monotype_class) {
+ } else if (klass == mono_defaults.runtimetype_class) {
printf ("[TYPE:%s], ", mono_type_full_name (((MonoReflectionType*)o)->type));
} else
printf ("[%s.%s:%p], ", klass->name_space, klass->name, o);
* Zoltan Varga <vargaz@gmail.com>
* Rodrigo Kumpera <kumpera@gmail.com>
* Andi McClure <andi.mcclure@xamarin.com>
+ * Johan Lorensson <johan.lorensson@xamarin.com>
*
* Copyright 2015 Xamarin, Inc (http://www.xamarin.com)
* Licensed under the MIT license. See LICENSE file in the project root for full license information.
return start;
}
-
gpointer
mono_arch_get_gsharedvt_trampoline (MonoTrampInfo **info, gboolean aot)
{
<caller registers area>
<rgctx>
<gsharedvt info>
- <calee stack area>
- <calee reg area>
+ <callee stack area>
+ <callee reg area>
*/
/* Call start_gsharedvt_call () */
if (aot) {
code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, "mono_amd64_start_gsharedvt_call");
- amd64_call_reg (code, AMD64_R11);
+ #ifdef TARGET_WIN32
+ /* Since we are doing a call as part of setting up stackframe, the reserved shadow stack used by Windows platform is allocated up in
+ the callee stack area but currently the callee reg area is in between. Windows calling convention dictates that room is made on stack where
+ callee can save any parameters passed in registers. Since Windows x64 calling convention
+ uses 4 registers for the first 4 parameters, stack needs to be adjusted before making the call.
+ NOTE, Windows calling convention assumes that space for all registers have been reserved, regardless
+ of the number of function parameters actually used.
+ */
+ int shadow_reg_size = 0;
+
+ shadow_reg_size = ALIGN_TO (PARAM_REGS * sizeof(gpointer), MONO_ARCH_FRAME_ALIGNMENT);
+ amd64_alu_reg_imm (code, X86_SUB, AMD64_RSP, shadow_reg_size);
+ amd64_call_reg (code, AMD64_R11);
+ amd64_alu_reg_imm (code, X86_ADD, AMD64_RSP, shadow_reg_size);
+ #else
+ amd64_call_reg (code, AMD64_R11);
+ #endif
} else {
g_error ("no aot");
}
*/
/* Load vret_slot */
- amd64_mov_reg_membase (code, AMD64_RDI, AMD64_R10, MONO_STRUCT_OFFSET (GSharedVtCallInfo, vret_slot), 4);
- amd64_alu_reg_imm (code, X86_SUB, AMD64_RDI, n_arg_regs + n_arg_fregs);
- amd64_shift_reg_imm (code, X86_SHL, AMD64_RDI, 3);
+ /* Use first input parameter register as scratch since it is volatile on all platforms */
+ amd64_mov_reg_membase (code, MONO_AMD64_ARG_REG1, AMD64_R10, MONO_STRUCT_OFFSET (GSharedVtCallInfo, vret_slot), 4);
+ amd64_alu_reg_imm (code, X86_SUB, MONO_AMD64_ARG_REG1, n_arg_regs + n_arg_fregs);
+ amd64_shift_reg_imm (code, X86_SHL, MONO_AMD64_ARG_REG1, 3);
/* vret address is RBP - (framesize - caller_reg_area_offset) */
amd64_mov_reg_reg (code, AMD64_R11, AMD64_RSP, sizeof(mgreg_t));
- amd64_alu_reg_reg (code, X86_ADD, AMD64_R11, AMD64_RDI);
+ amd64_alu_reg_reg (code, X86_ADD, AMD64_R11, MONO_AMD64_ARG_REG1);
/* Load ret marshal type */
/* Load vret address in R11 */
/*
Address to write return to is in the original value of the register specified by vret_arg_reg.
- This will be either RSI or RDI depending on whether this is a static call.
+ This will be either RSI, RDI (System V) or RCX, RDX (Windows) depending on whether this is a static call.
Its location:
We alloc 'framesize' bytes below RBP to save regs, info and rgctx. RSP = RBP - framesize
- We store rdi at RSP + caller_reg_area_offset + slot_index_of (register) * 8.
+ We store RDI (System V), RCX (Windows) at RSP + caller_reg_area_offset + slot_index_of (register) * 8.
address: RBP - framesize + caller_reg_area_offset + 8*slot
*/
mprof_report_SOURCES = decode.c
mprof_report_LDADD = $(Z_LIBS) $(GLIB_LIBS) $(LIBICONV)
+# FIXME fix the profiler tests to work with coop.
+if ENABLE_COOP
+DISABLE_PROFILER_TESTS=1
+endif
PLOG_TESTS_SRC=test-alloc.cs test-busy.cs test-monitor.cs test-excleave.cs \
test-heapshot.cs test-traces.cs
PLOG_TESTS=$(PLOG_TESTS_SRC:.cs=.exe)
$(MCS) -out:$@ $<
testlog: $(PLOG_TESTS)
- $(with_mono_path) perl $(srcdir)/ptestrunner.pl $(top_builddir)
+ if [ "z$(DISABLE_PROFILER_TESTS)" != z1 ]; then \
+ $(with_mono_path) perl $(srcdir)/ptestrunner.pl $(top_builddir) ; \
+ else \
+ echo "Profiler tests disabled with cooperative GC" ; \
+ fi
+
if NACL_CODEGEN
check-local:
prop = mono_class_get_property_from_name (klass, "StackTrace");
str = (MonoString*)mono_property_get_value_checked (prop, NULL, NULL, &error);
mono_error_assert_ok (&error);
- stack_trace = mono_string_to_utf8 (str);
+ stack_trace = mono_string_to_utf8_checked (str, &error);
+ mono_error_assert_ok (&error);
fprintf (stdout, "-= Stack Trace =-\n%s\n\n", stack_trace);
g_free (stack_trace);
static gboolean saved_strings_find_func (gpointer key, gpointer value, gpointer user_data)
{
+ MonoError error;
SavedStringFindInfo *info = (SavedStringFindInfo*)user_data;
SavedString *saved = (SavedString*)value;
gchar *utf_str;
if (!info || !saved || mono_string_length (saved->string) != info->len)
return FALSE;
- utf_str = mono_string_to_utf8 (saved->string);
+ utf_str = mono_string_to_utf8_checked (saved->string, &error);
+ mono_error_assert_ok (&error);
hash = do_calc_string_hash (0, utf_str);
g_free (utf_str);
sgen_card_table_clear_cards (void)
{
/*XXX we could do this in 2 ways. using mincore or iterating over all sections/los objects */
- sgen_major_collector_iterate_live_block_ranges (clear_cards);
+ sgen_major_collector_iterate_block_ranges (clear_cards);
sgen_los_iterate_live_block_ranges (clear_cards);
}
#ifdef SGEN_HAVE_OVERLAPPING_CARDS
/*FIXME we should have a bit on each block/los object telling if the object have marked cards.*/
/*First we copy*/
- sgen_major_collector_iterate_live_block_ranges (move_cards_to_shadow_table);
+ sgen_major_collector_iterate_block_ranges (move_cards_to_shadow_table);
sgen_los_iterate_live_block_ranges (move_cards_to_shadow_table);
/*Then we clear*/
* single-threaded programs this is a nop.
*/
void sgen_client_stop_world (int generation);
-void sgen_client_restart_world (int generation, GGTimingInfo *timing);
+void sgen_client_restart_world (int generation, gint64 *stw_time);
/*
* Must return FALSE. The bridge is not supported outside of Mono.
void sgen_client_mark_togglerefs (char *start, char *end, ScanCopyContext ctx);
void sgen_client_clear_togglerefs (char *start, char *end, ScanCopyContext ctx);
-/*
- * Called after collections, reporting the amount of time they took. No action is
- * necessary.
- */
-void sgen_client_log_timing (GGTimingInfo *info, mword promoted_size, mword major_used_size);
-
/*
* Called to handle `MONO_GC_PARAMS` and `MONO_GC_DEBUG` options. The `handle` functions
* must return TRUE if they have recognized and processed the option, FALSE otherwise.
break;
}
- if (ref->vtable->klass == mono_defaults.string_class)
- str = mono_string_to_utf8 ((MonoString*)ref);
- else
+ if (ref->vtable->klass == mono_defaults.string_class) {
+ MonoError error;
+ str = mono_string_to_utf8_checked ((MonoString*)ref, &error);
+ mono_error_cleanup (&error);
+ } else
str = NULL;
g_print ("xdomain reference in %p (%s.%s) at offset %d (%s) to %p (%s.%s) (%s) - pointed to by:\n",
obj, obj->vtable->klass->name_space, obj->vtable->klass->name,
#define safe_object_get_size sgen_safe_object_get_size
+#if defined(PLATFORM_MACOSX) || defined(HOST_WIN32) || (defined(__linux__) && !defined(PLATFORM_ANDROID))
+/* Use concurrent major on deskstop platforms */
+#define DEFAULT_MAJOR_INIT sgen_marksweep_conc_init
+#define DEFAULT_MAJOR_NAME "marksweep-conc"
+#else
+#define DEFAULT_MAJOR_INIT sgen_marksweep_init
+#define DEFAULT_MAJOR_NAME "marksweep"
+#endif
+
/*
* ######################################################################
* ######## Global data.
pin_object (obj_to_pin);
GRAY_OBJECT_ENQUEUE (queue, obj_to_pin, desc);
- sgen_pin_stats_register_object (obj_to_pin, obj_to_pin_size);
+ sgen_pin_stats_register_object (obj_to_pin, GENERATION_NURSERY);
definitely_pinned [count] = obj_to_pin;
count++;
}
void
sgen_pin_object (GCObject *object, GrayQueue *queue)
{
+ SGEN_ASSERT (0, sgen_ptr_in_nursery (object), "We're only supposed to use this for pinning nursery objects when out of memory.");
+
/*
* All pinned objects are assumed to have been staged, so we need to stage as well.
* Also, the count of staged objects shows that "late pinning" happened.
binary_protocol_pin (object, (gpointer)LOAD_VTABLE (object), safe_object_get_size (object));
++objects_pinned;
- sgen_pin_stats_register_object (object, safe_object_get_size (object));
+ sgen_pin_stats_register_object (object, GENERATION_NURSERY);
GRAY_OBJECT_ENQUEUE (queue, object, sgen_obj_get_descriptor_safe (object));
}
* Return whether any objects were late-pinned due to being out of memory.
*/
static gboolean
-collect_nursery (SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
+collect_nursery (const char *reason, gboolean is_overflow, SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark)
{
gboolean needs_major;
size_t max_garbage_amount;
time_minor_scan_remsets += TV_ELAPSED (atv, btv);
SGEN_LOG (2, "Old generation scan: %lld usecs", (long long)TV_ELAPSED (atv, btv));
- sgen_pin_stats_print_class_stats ();
+ sgen_pin_stats_report ();
/* FIXME: Why do we do this at this specific, seemingly random, point? */
sgen_client_collecting_minor (&fin_ready_queue, &critical_fin_queue);
binary_protocol_flush_buffers (FALSE);
- sgen_memgov_minor_collection_end ();
+ sgen_memgov_minor_collection_end (reason, is_overflow);
/*objects are late pinned because of lack of memory, so a major is a good call*/
needs_major = objects_pinned > 0;
sgen_los_pin_object (bigobj->data);
if (SGEN_OBJECT_HAS_REFERENCES (bigobj->data))
GRAY_OBJECT_ENQUEUE (WORKERS_DISTRIBUTE_GRAY_QUEUE, bigobj->data, sgen_obj_get_descriptor ((GCObject*)bigobj->data));
- sgen_pin_stats_register_object (bigobj->data, safe_object_get_size (bigobj->data));
+ sgen_pin_stats_register_object (bigobj->data, GENERATION_OLD);
SGEN_LOG (6, "Marked large object %p (%s) size: %lu from roots", bigobj->data,
sgen_client_vtable_get_name (SGEN_LOAD_VTABLE (bigobj->data)),
(unsigned long)sgen_los_object_size (bigobj));
time_major_scan_mod_union += TV_ELAPSED (btv, atv);
}
- sgen_pin_stats_print_class_stats ();
+ sgen_pin_stats_report ();
}
static void
}
static void
-major_start_collection (gboolean concurrent, size_t *old_next_pin_slot)
+major_start_collection (const char *reason, gboolean concurrent, size_t *old_next_pin_slot)
{
SgenObjectOperations *object_ops;
reset_pinned_from_failed_allocation ();
- sgen_memgov_major_collection_start ();
+ sgen_memgov_major_collection_start (concurrent, reason);
//count_ref_nonref_objs ();
//consistency_check ();
}
static void
-major_finish_collection (const char *reason, size_t old_next_pin_slot, gboolean forced)
+major_finish_collection (const char *reason, gboolean is_overflow, size_t old_next_pin_slot, gboolean forced)
{
ScannedObjectCounts counts;
SgenObjectOperations *object_ops;
g_assert (sgen_gray_object_queue_is_empty (&gray_queue));
- sgen_memgov_major_collection_end (forced);
+ sgen_memgov_major_collection_end (forced, concurrent_collection_in_progress, reason, is_overflow);
current_collection_generation = -1;
memset (&counts, 0, sizeof (ScannedObjectCounts));
}
static gboolean
-major_do_collection (const char *reason, gboolean forced)
+major_do_collection (const char *reason, gboolean is_overflow, gboolean forced)
{
TV_DECLARE (time_start);
TV_DECLARE (time_end);
/* world must be stopped already */
TV_GETTIME (time_start);
- major_start_collection (FALSE, &old_next_pin_slot);
- major_finish_collection (reason, old_next_pin_slot, forced);
+ major_start_collection (reason, FALSE, &old_next_pin_slot);
+ major_finish_collection (reason, is_overflow, old_next_pin_slot, forced);
TV_GETTIME (time_end);
gc_stats.major_gc_time += TV_ELAPSED (time_start, time_end);
binary_protocol_concurrent_start ();
// FIXME: store reason and pass it when finishing
- major_start_collection (TRUE, NULL);
+ major_start_collection (reason, TRUE, NULL);
gray_queue_redirect (&gray_queue);
current_collection_generation = GENERATION_OLD;
sgen_cement_reset ();
- major_finish_collection ("finishing", -1, forced);
+ major_finish_collection ("finishing", FALSE, -1, forced);
if (whole_heap_check_before_collection)
sgen_check_whole_heap (FALSE);
void
sgen_perform_collection (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish)
{
- TV_DECLARE (gc_start);
- TV_DECLARE (gc_end);
TV_DECLARE (gc_total_start);
TV_DECLARE (gc_total_end);
- GGTimingInfo infos [2];
int overflow_generation_to_collect = -1;
int oldest_generation_collected = generation_to_collect;
const char *overflow_reason = NULL;
SGEN_ASSERT (0, generation_to_collect == GENERATION_NURSERY || generation_to_collect == GENERATION_OLD, "What generation is this?");
- TV_GETTIME (gc_start);
-
sgen_stop_world (generation_to_collect);
TV_GETTIME (gc_total_start);
if (concurrent_collection_in_progress)
major_update_concurrent_collection ();
- if (collect_nursery (NULL, FALSE) && !concurrent_collection_in_progress) {
+ if (collect_nursery (reason, FALSE, NULL, FALSE) && !concurrent_collection_in_progress) {
overflow_generation_to_collect = GENERATION_OLD;
overflow_reason = "Minor overflow";
}
} else {
SGEN_ASSERT (0, generation_to_collect == GENERATION_OLD, "We should have handled nursery collections above");
if (major_collector.is_concurrent && !wait_to_finish) {
- collect_nursery (NULL, FALSE);
+ collect_nursery ("Concurrent start", FALSE, NULL, FALSE);
major_start_concurrent_collection (reason);
oldest_generation_collected = GENERATION_NURSERY;
- } else if (major_do_collection (reason, wait_to_finish)) {
+ } else if (major_do_collection (reason, FALSE, wait_to_finish)) {
overflow_generation_to_collect = GENERATION_NURSERY;
overflow_reason = "Excessive pinning";
}
}
- TV_GETTIME (gc_end);
-
- memset (infos, 0, sizeof (infos));
- infos [0].generation = oldest_generation_collected;
- infos [0].reason = reason;
- infos [0].is_overflow = FALSE;
- infos [1].generation = -1;
- infos [0].total_time = SGEN_TV_ELAPSED (gc_start, gc_end);
-
if (overflow_generation_to_collect != -1) {
SGEN_ASSERT (0, !concurrent_collection_in_progress, "We don't yet support overflow collections with the concurrent collector");
* or the nursery is fully pinned.
*/
- infos [1].generation = overflow_generation_to_collect;
- infos [1].reason = overflow_reason;
- infos [1].is_overflow = TRUE;
- gc_start = gc_end;
-
if (overflow_generation_to_collect == GENERATION_NURSERY)
- collect_nursery (NULL, FALSE);
+ collect_nursery (overflow_reason, TRUE, NULL, FALSE);
else
- major_do_collection (overflow_reason, wait_to_finish);
-
- TV_GETTIME (gc_end);
- infos [1].total_time = SGEN_TV_ELAPSED (gc_start, gc_end);
+ major_do_collection (overflow_reason, TRUE, wait_to_finish);
oldest_generation_collected = MAX (oldest_generation_collected, overflow_generation_to_collect);
}
TV_GETTIME (gc_total_end);
time_max = MAX (time_max, TV_ELAPSED (gc_total_start, gc_total_end));
- sgen_restart_world (oldest_generation_collected, infos);
+ sgen_restart_world (oldest_generation_collected);
}
/*
}
}
- if (!major_collector_opt || !strcmp (major_collector_opt, "marksweep")) {
- use_marksweep_major:
+ if (!major_collector_opt) {
+ use_default_major:
+ DEFAULT_MAJOR_INIT (&major_collector);
+ } else if (!strcmp (major_collector_opt, "marksweep")) {
sgen_marksweep_init (&major_collector);
- } else if (!major_collector_opt || !strcmp (major_collector_opt, "marksweep-conc")) {
+ } else if (!strcmp (major_collector_opt, "marksweep-conc")) {
sgen_marksweep_conc_init (&major_collector);
} else {
- sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using `marksweep` instead.", "Unknown major collector `%s'.", major_collector_opt);
- goto use_marksweep_major;
+ sgen_env_var_error (MONO_GC_PARAMS_NAME, "Using `" DEFAULT_MAJOR_NAME "` instead.", "Unknown major collector `%s'.", major_collector_opt);
+ goto use_default_major;
}
sgen_nursery_size = DEFAULT_NURSERY_SIZE;
major_collector.iterate_live_block_ranges (callback);
}
+void
+sgen_major_collector_iterate_block_ranges (sgen_cardtable_block_callback callback)
+{
+ major_collector.iterate_block_ranges (callback);
+}
+
SgenMajorCollector*
sgen_get_major_collector (void)
{
/* LOCKING: assumes the GC lock is held */
void
-sgen_restart_world (int generation, GGTimingInfo *timing)
+sgen_restart_world (int generation)
{
long long major_total = -1, major_marked = -1, los_total = -1, los_marked = -1;
+ gint64 stw_time;
SGEN_ASSERT (0, world_is_stopped, "Why are we restarting a running world?");
world_is_stopped = FALSE;
- sgen_client_restart_world (generation, timing);
+ sgen_client_restart_world (generation, &stw_time);
binary_protocol_world_restarted (generation, sgen_timestamp ());
if (sgen_client_bridge_need_processing ())
sgen_client_bridge_processing_finish (generation);
- sgen_memgov_collection_end (generation, timing, timing ? 2 : 0);
+ sgen_memgov_collection_end (generation, stw_time);
}
gboolean
sgen_stop_world (0);
sgen_clear_nursery_fragments ();
sgen_check_whole_heap (FALSE);
- sgen_restart_world (0, NULL);
+ sgen_restart_world (0);
}
gint64
INTERNAL_MEM_CARDTABLE_MOD_UNION,
INTERNAL_MEM_BINARY_PROTOCOL,
INTERNAL_MEM_TEMPORARY,
+ INTERNAL_MEM_LOG_ENTRY,
INTERNAL_MEM_FIRST_CLIENT
};
void sgen_free_internal_dynamic (void *addr, size_t size, int type);
void sgen_pin_stats_enable (void);
-void sgen_pin_stats_register_object (GCObject *obj, size_t size);
+void sgen_pin_stats_register_object (GCObject *obj, int generation);
void sgen_pin_stats_register_global_remset (GCObject *obj);
-void sgen_pin_stats_print_class_stats (void);
+void sgen_pin_stats_report (void);
void sgen_sort_addresses (void **array, size_t size);
void sgen_add_to_global_remset (gpointer ptr, GCObject *obj);
typedef void (*sgen_cardtable_block_callback) (mword start, mword size);
void sgen_major_collector_iterate_live_block_ranges (sgen_cardtable_block_callback callback);
+void sgen_major_collector_iterate_block_ranges (sgen_cardtable_block_callback callback);
typedef enum {
ITERATE_OBJECTS_SWEEP = 1,
void (*pin_major_object) (GCObject *obj, SgenGrayQueue *queue);
void (*scan_card_table) (CardTableScanType scan_type, ScanCopyContext ctx);
void (*iterate_live_block_ranges) (sgen_cardtable_block_callback callback);
+ void (*iterate_block_ranges) (sgen_cardtable_block_callback callback);
void (*update_cardtable_mod_union) (void);
void (*init_to_space) (void);
void (*sweep) (void);
/* STW */
-typedef struct {
- int generation;
- const char *reason;
- gboolean is_overflow;
- gint64 total_time;
- gint64 stw_time;
-} GGTimingInfo;
-
void sgen_stop_world (int generation);
-void sgen_restart_world (int generation, GGTimingInfo *timing);
+void sgen_restart_world (int generation);
gboolean sgen_is_world_stopped (void);
gboolean sgen_set_allow_synchronous_major (gboolean flag);
MS_CALC_MARK_BIT (word, bit, obj);
SGEN_ASSERT (9, !MS_MARK_BIT (block, word, bit), "object %p already marked", obj);
MS_SET_MARK_BIT (block, word, bit);
- binary_protocol_mark (obj, (gpointer)LOAD_VTABLE (obj), sgen_safe_object_get_size (obj));
+ binary_protocol_mark (obj, (gpointer)SGEN_LOAD_VTABLE (obj), sgen_safe_object_get_size (obj));
return FALSE;
#endif
static void *empty_blocks = NULL;
static size_t num_empty_blocks = 0;
+/*
+ * We can iterate the block list also while sweep is in progress but we
+ * need to account for blocks that will be checked for sweeping and even
+ * freed in the process.
+ */
#define FOREACH_BLOCK_NO_LOCK(bl) { \
volatile gpointer *slot; \
- SGEN_ASSERT (0, !sweep_in_progress (), "Can't iterate blocks while sweep is in progress."); \
SGEN_ARRAY_LIST_FOREACH_SLOT (&allocated_blocks, slot) { \
- (bl) = BLOCK_UNTAG (*slot);
+ (bl) = BLOCK_UNTAG (*slot); \
+ if (!(bl)) \
+ continue;
#define FOREACH_BLOCK_HAS_REFERENCES_NO_LOCK(bl,hr) { \
volatile gpointer *slot; \
- SGEN_ASSERT (0, !sweep_in_progress (), "Can't iterate blocks while sweep is in progress."); \
SGEN_ARRAY_LIST_FOREACH_SLOT (&allocated_blocks, slot) { \
(bl) = (MSBlockInfo *) (*slot); \
+ if (!(bl)) \
+ continue; \
(hr) = BLOCK_IS_TAGGED_HAS_REFERENCES ((bl)); \
(bl) = BLOCK_UNTAG ((bl));
#define END_FOREACH_BLOCK_NO_LOCK } SGEN_ARRAY_LIST_END_FOREACH_SLOT; }
add_free_block (free_blocks, size_index, info);
- /*
- * Adding to the allocated_blocks array is racy with the removal of nulls when
- * sweeping. We wait for sweep to finish to avoid that.
- *
- * The memory barrier here and in `sweep_job_func()` are required because we need
- * `allocated_blocks` synchronized between this and the sweep thread.
- */
- major_finish_sweep_checking ();
- mono_memory_barrier ();
-
sgen_array_list_add (&allocated_blocks, BLOCK_TAG (info), 0, FALSE);
SGEN_ATOMIC_ADD_P (num_major_sections, 1);
return FALSE;
}
-#define LOAD_VTABLE SGEN_LOAD_VTABLE
-
-#define MS_MARK_OBJECT_AND_ENQUEUE_CHECKED(obj,desc,block,queue) do { \
- int __word, __bit; \
- MS_CALC_MARK_BIT (__word, __bit, (obj)); \
- if (!MS_MARK_BIT ((block), __word, __bit) && MS_OBJ_ALLOCED ((obj), (block))) { \
- MS_SET_MARK_BIT ((block), __word, __bit); \
- if (sgen_gc_descr_has_references (desc)) \
- GRAY_OBJECT_ENQUEUE ((queue), (obj), (desc)); \
- binary_protocol_mark ((obj), (gpointer)LOAD_VTABLE ((obj)), sgen_safe_object_get_size ((obj))); \
- INC_NUM_MAJOR_OBJECTS_MARKED (); \
- } \
- } while (0)
#define MS_MARK_OBJECT_AND_ENQUEUE(obj,desc,block,queue) do { \
int __word, __bit; \
MS_CALC_MARK_BIT (__word, __bit, (obj)); \
MS_SET_MARK_BIT ((block), __word, __bit); \
if (sgen_gc_descr_has_references (desc)) \
GRAY_OBJECT_ENQUEUE ((queue), (obj), (desc)); \
- binary_protocol_mark ((obj), (gpointer)LOAD_VTABLE ((obj)), sgen_safe_object_get_size ((obj))); \
+ binary_protocol_mark ((obj), (gpointer)SGEN_LOAD_VTABLE ((obj)), sgen_safe_object_get_size ((obj))); \
INC_NUM_MAJOR_OBJECTS_MARKED (); \
} \
} while (0)
if (first_entry == last_entry)
return;
- block->has_pinned = TRUE;
-
entry = sgen_pinning_get_entry (first_entry);
end = sgen_pinning_get_entry (last_entry);
if (index == last_index)
continue;
obj = MS_BLOCK_OBJ (block, index);
- MS_MARK_OBJECT_AND_ENQUEUE_CHECKED (obj, sgen_obj_get_descriptor (obj), block, queue);
+ if (!MS_OBJ_ALLOCED (obj, block))
+ continue;
+ MS_MARK_OBJECT_AND_ENQUEUE (obj, sgen_obj_get_descriptor (obj), block, queue);
+ sgen_pin_stats_register_object (obj, GENERATION_OLD);
last_index = index;
}
+
+ /*
+ * There might have been potential pinning "pointers" into this block, but none of
+ * them pointed to occupied slots, in which case we don't have to pin the block.
+ */
+ if (last_index >= 0)
+ block->has_pinned = TRUE;
}
static inline void
{
SGEN_ASSERT (6, block->state == expected_state, "Block state incorrect before set");
block->state = new_state;
+ binary_protocol_block_set_state (block, MS_BLOCK_SIZE, expected_state, new_state);
}
/*
for (j = 0; j < num_block_obj_sizes; ++j)
free_blocks [j] = NULL;
}
+
+ sgen_array_list_remove_nulls (&allocated_blocks);
}
static void sweep_finish (void);
sweep_blocks_job_func (void *thread_data_untyped, SgenThreadPoolJob *job)
{
volatile gpointer *slot;
+ MSBlockInfo *bl;
SGEN_ARRAY_LIST_FOREACH_SLOT (&allocated_blocks, slot) {
- sweep_block (BLOCK_UNTAG (*slot));
+ bl = BLOCK_UNTAG (*slot);
+ if (bl)
+ sweep_block (bl);
} SGEN_ARRAY_LIST_END_FOREACH_SLOT;
mono_memory_write_barrier ();
}
}
- sgen_array_list_remove_nulls (&allocated_blocks);
-
/*
* Concurrently sweep all the blocks to reduce workload during minor
* pauses where we need certain blocks to be swept. At the start of
static void
count_nonpinned_callback (GCObject *obj, size_t size, void *data)
{
- GCVTable vtable = LOAD_VTABLE (obj);
+ GCVTable vtable = SGEN_LOAD_VTABLE (obj);
if (SGEN_VTABLE_HAS_REFERENCES (vtable))
++count_nonpinned_ref;
static void
count_pinned_callback (GCObject *obj, size_t size, void *data)
{
- GCVTable vtable = LOAD_VTABLE (obj);
+ GCVTable vtable = SGEN_LOAD_VTABLE (obj);
if (SGEN_VTABLE_HAS_REFERENCES (vtable))
++count_pinned_ref;
/*
* This callback is used to clear cards, move cards to the shadow table and do counting.
*/
+static void
+major_iterate_block_ranges (sgen_cardtable_block_callback callback)
+{
+ MSBlockInfo *block;
+ gboolean has_references;
+
+ FOREACH_BLOCK_HAS_REFERENCES_NO_LOCK (block, has_references) {
+ if (has_references)
+ callback ((mword)MS_BLOCK_FOR_BLOCK_INFO (block), MS_BLOCK_SIZE);
+ } END_FOREACH_BLOCK_NO_LOCK;
+}
+
static void
major_iterate_live_block_ranges (sgen_cardtable_block_callback callback)
{
major_scan_card_table (CardTableScanType scan_type, ScanCopyContext ctx)
{
MSBlockInfo *block;
- gboolean has_references;
+ gboolean has_references, was_sweeping, skip_scan;
if (!concurrent_mark)
g_assert (scan_type == CARDTABLE_SCAN_GLOBAL);
- major_finish_sweep_checking ();
+ if (scan_type != CARDTABLE_SCAN_GLOBAL)
+ SGEN_ASSERT (0, !sweep_in_progress (), "Sweep should be finished when we scan mod union card table");
+ was_sweeping = sweep_in_progress ();
+
binary_protocol_major_card_table_scan_start (sgen_timestamp (), scan_type & CARDTABLE_SCAN_MOD_UNION);
FOREACH_BLOCK_HAS_REFERENCES_NO_LOCK (block, has_references) {
#ifdef PREFETCH_CARDS
if (!has_references)
continue;
+ skip_scan = FALSE;
- scan_card_table_for_block (block, scan_type, ctx);
+ if (scan_type == CARDTABLE_SCAN_GLOBAL) {
+ gpointer *card_start = (gpointer*) sgen_card_table_get_card_scan_address ((mword)MS_BLOCK_FOR_BLOCK_INFO (block));
+ gboolean has_dirty_cards = FALSE;
+ int i;
+ for (i = 0; i < CARDS_PER_BLOCK / sizeof(gpointer); i++) {
+ if (card_start [i]) {
+ has_dirty_cards = TRUE;
+ break;
+ }
+ }
+ if (!has_dirty_cards) {
+ skip_scan = TRUE;
+ } else {
+ /*
+ * After the start of the concurrent collections, blocks change state
+ * to marking. We should not sweep it in that case. We can't race with
+ * sweep start since we are in a nursery collection. Also avoid CAS-ing
+ */
+ if (sweep_in_progress ()) {
+ skip_scan = !ensure_block_is_checked_for_sweeping (__index, TRUE, NULL);
+ } else if (was_sweeping) {
+ /* Recheck in case sweep finished after dereferencing the slot */
+ skip_scan = *sgen_array_list_get_slot (&allocated_blocks, __index) == 0;
+ }
+ }
+ }
+ if (!skip_scan)
+ scan_card_table_for_block (block, scan_type, ctx);
} END_FOREACH_BLOCK_NO_LOCK;
binary_protocol_major_card_table_scan_end (sgen_timestamp (), scan_type & CARDTABLE_SCAN_MOD_UNION);
}
collector->pin_major_object = pin_major_object;
collector->scan_card_table = major_scan_card_table;
collector->iterate_live_block_ranges = major_iterate_live_block_ranges;
+ collector->iterate_block_ranges = major_iterate_block_ranges;
if (is_concurrent) {
collector->update_cardtable_mod_union = update_cardtable_mod_union;
collector->get_cardtable_mod_union_for_reference = major_get_cardtable_mod_union_for_reference;
#define MIN_MINOR_COLLECTION_ALLOWANCE ((mword)(DEFAULT_NURSERY_SIZE * default_allowance_nursery_size_ratio))
+static SgenPointerQueue log_entries = SGEN_POINTER_QUEUE_INIT (INTERNAL_MEM_TEMPORARY);
+static MonoCoopMutex log_entries_mutex;
+
mword total_promoted_size = 0;
mword total_allocated_major = 0;
static mword total_promoted_size_start;
static mword total_alloc = 0;
static mword total_alloc_max = 0;
+static SGEN_TV_DECLARE(last_minor_start);
+static SGEN_TV_DECLARE(last_major_start);
+
/* GC triggers. */
static gboolean debug_print_allowance = FALSE;
sgen_memgov_minor_collection_start (void)
{
total_promoted_size_start = total_promoted_size;
+ SGEN_TV_GETTIME (last_minor_start);
+}
+
+static void
+sgen_add_log_entry (SgenLogEntry *log_entry)
+{
+ mono_coop_mutex_lock (&log_entries_mutex);
+ sgen_pointer_queue_add (&log_entries, log_entry);
+ mono_coop_mutex_unlock (&log_entries_mutex);
}
void
-sgen_memgov_minor_collection_end (void)
+sgen_memgov_minor_collection_end (const char *reason, gboolean is_overflow)
{
+ if (mono_trace_is_traced (G_LOG_LEVEL_INFO, MONO_TRACE_GC)) {
+ SgenLogEntry *log_entry = (SgenLogEntry*)sgen_alloc_internal (INTERNAL_MEM_LOG_ENTRY);
+ SGEN_TV_DECLARE (current_time);
+ SGEN_TV_GETTIME (current_time);
+
+ log_entry->type = SGEN_LOG_NURSERY;
+ log_entry->reason = reason;
+ log_entry->is_overflow = is_overflow;
+ log_entry->time = SGEN_TV_ELAPSED (last_minor_start, current_time);
+ log_entry->promoted_size = total_promoted_size - total_promoted_size_start;
+ log_entry->major_size = major_collector.get_num_major_sections () * major_collector.section_size;
+ log_entry->major_size_in_use = last_used_slots_size + total_allocated_major - total_allocated_major_end;
+ log_entry->los_size = los_memory_usage_total;
+ log_entry->los_size_in_use = los_memory_usage;
+
+ sgen_add_log_entry (log_entry);
+ }
}
void
void
sgen_memgov_major_post_sweep (mword used_slots_size)
{
- mword num_major_sections = major_collector.get_num_major_sections ();
+ if (mono_trace_is_traced (G_LOG_LEVEL_INFO, MONO_TRACE_GC)) {
+ SgenLogEntry *log_entry = (SgenLogEntry*)sgen_alloc_internal (INTERNAL_MEM_LOG_ENTRY);
+
+ log_entry->type = SGEN_LOG_MAJOR_SWEEP_FINISH;
+ log_entry->major_size = major_collector.get_num_major_sections () * major_collector.section_size;
+ log_entry->major_size_in_use = used_slots_size + total_allocated_major - total_allocated_major_end;
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR_SWEEP: major size: %dK in use: %dK",
- num_major_sections * major_collector.section_size / 1024,
- (used_slots_size + total_allocated_major - total_allocated_major_end) / 1024);
+ sgen_add_log_entry (log_entry);
+ }
last_used_slots_size = used_slots_size;
}
void
-sgen_memgov_major_collection_start (void)
+sgen_memgov_major_collection_start (gboolean concurrent, const char *reason)
{
need_calculate_minor_collection_allowance = TRUE;
major_start_heap_size = get_heap_size ();
if (debug_print_allowance) {
SGEN_LOG (0, "Starting collection with heap size %ld bytes", (long)major_start_heap_size);
}
+ if (concurrent && mono_trace_is_traced (G_LOG_LEVEL_INFO, MONO_TRACE_GC)) {
+ SgenLogEntry *log_entry = (SgenLogEntry*)sgen_alloc_internal (INTERNAL_MEM_LOG_ENTRY);
+
+ log_entry->type = SGEN_LOG_MAJOR_CONC_START;
+ log_entry->reason = reason;
+
+ sgen_add_log_entry (log_entry);
+ }
+ SGEN_TV_GETTIME (last_major_start);
}
void
-sgen_memgov_major_collection_end (gboolean forced)
+sgen_memgov_major_collection_end (gboolean forced, gboolean concurrent, const char *reason, gboolean is_overflow)
{
- last_collection_los_memory_usage = los_memory_usage;
+ if (mono_trace_is_traced (G_LOG_LEVEL_INFO, MONO_TRACE_GC)) {
+ SgenLogEntry *log_entry = (SgenLogEntry*)sgen_alloc_internal (INTERNAL_MEM_LOG_ENTRY);
+ SGEN_TV_DECLARE (current_time);
+ SGEN_TV_GETTIME (current_time);
+
+ if (concurrent) {
+ log_entry->type = SGEN_LOG_MAJOR_CONC_FINISH;
+ } else {
+ log_entry->type = SGEN_LOG_MAJOR_SERIAL;
+ }
+ log_entry->time = SGEN_TV_ELAPSED (last_major_start, current_time);
+ log_entry->reason = reason;
+ log_entry->is_overflow = is_overflow;
+ log_entry->los_size = los_memory_usage_total;
+ log_entry->los_size_in_use = los_memory_usage;
+
+ sgen_add_log_entry (log_entry);
+ }
+ last_collection_los_memory_usage = los_memory_usage;
total_allocated_major_end = total_allocated_major;
if (forced) {
sgen_get_major_collector ()->finish_sweeping ();
{
}
+static void
+sgen_output_log_entry (SgenLogEntry *entry, gint64 stw_time, int generation)
+{
+ char full_timing_buff [1024];
+ full_timing_buff [0] = '\0';
+
+ if (!entry->is_overflow)
+ sprintf (full_timing_buff, "stw %.2fms", stw_time / 10000.0f);
+
+ switch (entry->type) {
+ case SGEN_LOG_NURSERY:
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MINOR%s: (%s) time %.2fms, %s promoted %dK major size: %dK in use: %dK los size: %dK in use: %dK",
+ entry->is_overflow ? "_OVERFLOW" : "",
+ entry->reason ? entry->reason : "",
+ entry->time / 10000.0f,
+ (generation == GENERATION_NURSERY) ? full_timing_buff : "",
+ entry->promoted_size / 1024,
+ entry->major_size / 1024,
+ entry->major_size_in_use / 1024,
+ entry->los_size / 1024,
+ entry->los_size_in_use / 1024);
+ break;
+ case SGEN_LOG_MAJOR_SERIAL:
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR%s: (%s) time %.2fms, %s los size: %dK in use: %dK",
+ entry->is_overflow ? "_OVERFLOW" : "",
+ entry->reason ? entry->reason : "",
+ (int)entry->time / 10000.0f,
+ full_timing_buff,
+ entry->los_size / 1024,
+ entry->los_size_in_use / 1024);
+ break;
+ case SGEN_LOG_MAJOR_CONC_START:
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR_CONCURRENT_START: (%s)", entry->reason ? entry->reason : "");
+ break;
+ case SGEN_LOG_MAJOR_CONC_FINISH:
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR_CONCURRENT_FINISH: (%s) time %.2fms, %s los size: %dK in use: %dK",
+ entry->reason ? entry->reason : "",
+ entry->time / 10000.0f,
+ full_timing_buff,
+ entry->los_size / 1024,
+ entry->los_size_in_use / 1024);
+ break;
+ case SGEN_LOG_MAJOR_SWEEP_FINISH:
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR_SWEEP: major size: %dK in use: %dK",
+ entry->major_size / 1024,
+ entry->major_size_in_use / 1024);
+ break;
+ default:
+ SGEN_ASSERT (0, FALSE, "Invalid log entry type");
+ break;
+ }
+}
+
void
-sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count)
+sgen_memgov_collection_end (int generation, gint64 stw_time)
{
- int i;
- for (i = 0; i < info_count; ++i) {
- if (info[i].generation != -1)
- sgen_client_log_timing (&info [i], total_promoted_size - total_promoted_size_start, last_used_slots_size + total_allocated_major - total_allocated_major_end);
+ /*
+ * At this moment the world has been restarted which means we can log all pending entries
+ * without risking deadlocks.
+ */
+ if (mono_trace_is_traced (G_LOG_LEVEL_INFO, MONO_TRACE_GC)) {
+ size_t i;
+ SGEN_ASSERT (0, !sgen_is_world_stopped (), "We can't log if the world is stopped");
+ mono_coop_mutex_lock (&log_entries_mutex);
+ for (i = 0; i < log_entries.next_slot; i++) {
+ sgen_output_log_entry (log_entries.data [i], stw_time, generation);
+ sgen_free_internal (log_entries.data [i], INTERNAL_MEM_LOG_ENTRY);
+ }
+ sgen_pointer_queue_clear (&log_entries);
+ mono_coop_mutex_unlock (&log_entries_mutex);
}
}
mono_counters_register ("Memgov alloc", MONO_COUNTER_GC | MONO_COUNTER_WORD | MONO_COUNTER_BYTES | MONO_COUNTER_VARIABLE, &total_alloc);
mono_counters_register ("Memgov max alloc", MONO_COUNTER_GC | MONO_COUNTER_WORD | MONO_COUNTER_BYTES | MONO_COUNTER_MONOTONIC, &total_alloc_max);
+ mono_coop_mutex_init (&log_entries_mutex);
+
+ sgen_register_fixed_internal_mem_type (INTERNAL_MEM_LOG_ENTRY, sizeof (SgenLogEntry));
+
if (max_heap == 0)
return;
/* GC trigger heuristics */
void sgen_memgov_minor_collection_start (void);
-void sgen_memgov_minor_collection_end (void);
+void sgen_memgov_minor_collection_end (const char *reason, gboolean is_overflow);
void sgen_memgov_major_pre_sweep (void);
void sgen_memgov_major_post_sweep (mword used_slots_size);
-void sgen_memgov_major_collection_start (void);
-void sgen_memgov_major_collection_end (gboolean forced);
+void sgen_memgov_major_collection_start (gboolean concurrent, const char *reason);
+void sgen_memgov_major_collection_end (gboolean forced, gboolean concurrent, const char *reason, gboolean is_overflow);
void sgen_memgov_collection_start (int generation);
-void sgen_memgov_collection_end (int generation, GGTimingInfo* info, int info_count);
+void sgen_memgov_collection_end (int generation, gint64 stw);
gboolean sgen_need_major_collection (mword space_needed);
SGEN_ALLOC_ACTIVATE = 2
} SgenAllocFlags;
+typedef enum {
+ SGEN_LOG_NURSERY,
+ SGEN_LOG_MAJOR_SERIAL,
+ SGEN_LOG_MAJOR_CONC_START,
+ SGEN_LOG_MAJOR_CONC_FINISH,
+ SGEN_LOG_MAJOR_SWEEP_FINISH
+} SgenLogType;
+
+typedef struct {
+ SgenLogType type;
+ const char *reason;
+ gboolean is_overflow;
+ gint64 time;
+ mword promoted_size;
+ mword major_size;
+ mword major_size_in_use;
+ mword los_size;
+ mword los_size_in_use;
+} SgenLogEntry;
+
/* OS memory allocation */
void* sgen_alloc_os_memory (size_t size, SgenAllocFlags flags, const char *assert_description);
void* sgen_alloc_os_memory_aligned (size_t size, mword alignment, SgenAllocFlags flags, const char *assert_description);
static PinStatAddress *pin_stat_addresses = NULL;
static size_t pinned_byte_counts [PIN_TYPE_MAX];
+static size_t pinned_bytes_in_generation [GENERATION_MAX];
+static int pinned_objects_in_generation [GENERATION_MAX];
+
static SgenPointerQueue pinned_objects = SGEN_POINTER_QUEUE_INIT (INTERNAL_MEM_STATISTICS);
static SgenHashTable pinned_class_hash_table = SGEN_HASH_TABLE_INIT (INTERNAL_MEM_STATISTICS, INTERNAL_MEM_STAT_PINNED_CLASS, sizeof (PinnedClassEntry), g_str_hash, g_str_equal);
pin_stat_addresses = NULL;
for (i = 0; i < PIN_TYPE_MAX; ++i)
pinned_byte_counts [i] = 0;
+ for (i = 0; i < GENERATION_MAX; ++i) {
+ pinned_bytes_in_generation [i] = 0;
+ pinned_objects_in_generation [i] = 0;
+ }
sgen_pointer_queue_clear (&pinned_objects);
sgen_hash_table_clean (&pinned_class_hash_table);
sgen_hash_table_clean (&global_remset_class_hash_table);
PinStatAddress *node;
int pin_type_bit = 1 << pin_type;
+ if (!do_pin_stats)
+ return;
while (*node_ptr) {
node = *node_ptr;
if (addr == node->addr) {
}
void
-sgen_pin_stats_register_object (GCObject *obj, size_t size)
+sgen_pin_stats_register_object (GCObject *obj, int generation)
{
int pin_types = 0;
+ size_t size = 0;
+
+ if (binary_protocol_is_enabled ()) {
+ size = sgen_safe_object_get_size (obj);
+ pinned_bytes_in_generation [generation] += size;
+ ++pinned_objects_in_generation [generation];
+ }
if (!do_pin_stats)
return;
+ if (!size)
+ size = sgen_safe_object_get_size (obj);
+
pin_stats_count_object_from_tree (obj, size, pin_stat_addresses, &pin_types);
sgen_pointer_queue_add (&pinned_objects, obj);
}
void
-sgen_pin_stats_print_class_stats (void)
+sgen_pin_stats_report (void)
{
char *name;
PinnedClassEntry *pinned_entry;
GlobalRemsetClassEntry *remset_entry;
+ binary_protocol_pin_stats (pinned_objects_in_generation [GENERATION_NURSERY], pinned_bytes_in_generation [GENERATION_NURSERY],
+ pinned_objects_in_generation [GENERATION_OLD], pinned_bytes_in_generation [GENERATION_OLD]);
+
if (!do_pin_stats)
return;
IS_VTABLE_MATCH (FALSE)
END_PROTOCOL_ENTRY_FLUSH
+BEGIN_PROTOCOL_ENTRY4 (binary_protocol_pin_stats, TYPE_INT, objects_pinned_in_nursery, TYPE_SIZE, bytes_pinned_in_nursery, TYPE_INT, objects_pinned_in_major, TYPE_SIZE, bytes_pinned_in_major)
+DEFAULT_PRINT ()
+IS_ALWAYS_MATCH (TRUE)
+MATCH_INDEX (BINARY_PROTOCOL_MATCH)
+IS_VTABLE_MATCH (FALSE)
+END_PROTOCOL_ENTRY
+
#undef BEGIN_PROTOCOL_ENTRY0
#undef BEGIN_PROTOCOL_ENTRY1
#undef BEGIN_PROTOCOL_ENTRY2
#include "sgen-thread-pool.h"
#include "sgen-client.h"
#include "mono/utils/mono-membar.h"
+#include "mono/utils/mono-proclib.h"
#include <errno.h>
#include <string.h>
}
static void
-binary_protocol_open_file (void)
+binary_protocol_open_file (gboolean assert_on_failure)
{
char *filename;
+#ifdef F_SETLK
+ struct flock lock;
+ lock.l_type = F_WRLCK;
+ lock.l_whence = SEEK_SET;
+ lock.l_start = 0;
+ lock.l_len = 0;
+#endif
if (file_size_limit > 0)
filename = filename_for_index (current_file_index);
filename = filename_or_prefix;
do {
- binary_protocol_file = open (filename, O_CREAT|O_WRONLY|O_TRUNC, 0644);
- if (binary_protocol_file == -1 && errno != EINTR)
- break; /* Failed */
+ binary_protocol_file = open (filename, O_CREAT | O_WRONLY, 0644);
+ if (binary_protocol_file == -1) {
+ if (errno != EINTR)
+ break; /* Failed */
+#ifdef F_SETLK
+ } else if (fcntl (binary_protocol_file, F_SETLK, &lock) == -1) {
+ /* The lock for the file is already taken. Fail */
+ close (binary_protocol_file);
+ binary_protocol_file = -1;
+ break;
+#endif
+ } else {
+ /* We have acquired the lock. Truncate the file */
+ ftruncate (binary_protocol_file, 0);
+ }
} while (binary_protocol_file == -1);
- if (binary_protocol_file == -1)
+ if (binary_protocol_file == -1 && assert_on_failure)
g_error ("sgen binary protocol: failed to open file");
if (file_size_limit > 0)
binary_protocol_init (const char *filename, long long limit)
{
#ifdef HAVE_UNISTD_H
- filename_or_prefix = (char *)sgen_alloc_internal_dynamic (strlen (filename) + 1, INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
- strcpy (filename_or_prefix, filename);
-
file_size_limit = limit;
- binary_protocol_open_file ();
+ /* Original name length + . + pid length in hex + null terminator */
+ filename_or_prefix = g_strdup_printf ("%s", filename);
+ binary_protocol_open_file (FALSE);
+
+ if (binary_protocol_file == -1) {
+ /* Another process owns the file, try adding the pid suffix to the filename */
+ gint32 pid = mono_process_current_pid ();
+ g_free (filename_or_prefix);
+ filename_or_prefix = g_strdup_printf ("%s.%x", filename, pid);
+ binary_protocol_open_file (TRUE);
+ }
+
+ /* If we have a file size limit, we might need to open additional files */
+ if (file_size_limit == 0)
+ g_free (filename_or_prefix);
binary_protocol_header (PROTOCOL_HEADER_CHECK, PROTOCOL_HEADER_VERSION, SIZEOF_VOID_P, G_BYTE_ORDER == G_LITTLE_ENDIAN);
#else
++current_file_index;
current_file_size = 0;
- binary_protocol_open_file ();
+ binary_protocol_open_file (TRUE);
}
#endif
--- /dev/null
+$(ProjectDir)\..\..\jay\jay.exe -ct < $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.jay > $(ProjectDir)\Microsoft.Build.Internal\ExpressionParser.cs
--- /dev/null
+@MONO@ RabbitMQ.Client.Apigen.exe /n:v0_9 "/apiName:AMQP_0_9" $(ProjectDir)..\..\docs\specs\amqp0-9.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-9.cs
+@MONO@ RabbitMQ.Client.Apigen.exe /n:v0_8 "/apiName:AMQP_0_8" $(ProjectDir)..\..\docs\specs\amqp0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-0-8.cs
+@MONO@ RabbitMQ.Client.Apigen.exe /n:v0_8qpid "/apiName:AMQP_0_8_QPID" $(ProjectDir)..\..\docs\specs\qpid-amqp.0-8.stripped.xml $(ProjectDir)..\..\docs\specs\net_4_x-api-qpid-0-8.cs
+
+
+
--- /dev/null
+resgen $(ProjectDir)\src\ComponentModel\Strings.resx $(ProjectDir)\Microsoft.Internal.Strings.resx
\ No newline at end of file
--- /dev/null
+resgen $(ProjectDir)\Client\System.Data.Services.Client.txt $(ProjectDir)\Client\System.Data.Services.Client.resx
\ No newline at end of file
--- /dev/null
+cp $(ProjectDir)\System.Json\Properties\Resources.resx System.Json.Properties.Resources.resx
\ No newline at end of file
--- /dev/null
+@COPY@ $(ProjectDir)/../../../external/aspnetwebstack/src/Common/CommonWebApiResources.resx $(ProjectDir)/System.Net.Http.Properties.CommonWebApiResources.resx
+@COPY@ $(ProjectDir)/../../../external/aspnetwebstack/src/System.Net.Http.Formatting/Properties/Resources.resx $(ProjectDir)/System.Net.Http.Properties.Resources.resx
--- /dev/null
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\CommonResources.resx $(ProjectDir)\System.Web.Razor.Common.CommonResources.resx
+resgen $(ProjectDir)\..\..\..\external\aspnetwebstack\src\System.Web.Razor\Resources\RazorResources.resx $(ProjectDir)\System.Web.Razor.Resources.RazorResources.resx
\ No newline at end of file
--- /dev/null
+@MONO@ $(ProjectDir)\..\lib\net_4_x\culevel.exe -o $(ProjectDir)\System.Web\UplevelHelper.cs $(ProjectDir)\UplevelHelperDefinitions.xml
--- /dev/null
+These are the tasks that are pending in the MSVC scripts to fully roll it out:
+
+[ ] Validate that all generated assemblies are identical
+[ ] Add support for listing CLEAN_FILES in the `csproj` file
+[ ] Adding an "install" target
+[ ] On Windows- have a solution that builds both runtime and libraries all in one
+[ ] Add the other profiles (mobile, iOS, etc)
+[ ] Generate the dependency files
+[ ] Eliminate the need for "build-libs.sh/build-libs.bat" at the toplevel with proper MSBuild idioms
+[ ] Integrate the "update-solution-files" with each build, so we auto-update the files on commits
+[ ] Make it work with MSBuild instead of xbuild
// Prebuild code, might be in inputs, check:
// inputs/LIBRARY.pre
//
- string prebuild = Load (library + ".pre");
- string prebuild_windows, prebuild_unix;
-
- int q = library.IndexOf ("-");
- if (q != -1)
- prebuild = prebuild + Load (library.Substring (0, q) + ".pre");
-
- if (prebuild.IndexOf ("@MONO@") != -1){
- prebuild_unix = prebuild.Replace ("@MONO@", "mono").Replace ("@CAT@", "cat");
- prebuild_windows = prebuild.Replace ("@MONO@", "").Replace ("@CAT@", "type");
- } else {
- prebuild_unix = prebuild.Replace ("jay.exe", "jay");
- prebuild_windows = prebuild;
- }
- const string condition_unix = "Condition=\" '$(OS)' != 'Windows_NT' \"";
- const string condition_windows = "Condition=\" '$(OS)' == 'Windows_NT' \"";
- prebuild =
- " <PreBuildEvent " + condition_unix + ">\n" + prebuild_unix + "\n </PreBuildEvent>" + NewLine +
- " <PreBuildEvent " + condition_windows + ">" + NewLine + prebuild_windows + NewLine + " </PreBuildEvent>" + NewLine;
+ string prebuild = GenerateStep (library, ".pre", "PreBuildEvent");
+ string postbuild = GenerateStep (library, ".post", "PostBuildEvent");
var all_args = new Queue<string []> ();
all_args.Enqueue (flags.Split ());
var source = dk.Key;
if (source.EndsWith (".resources"))
source = source.Replace (".resources", ".resx");
- Console.WriteLine ("Got {0} -> {1}", dk.Key, source);
+
+ // try to find a pre-built resource, and use that instead of trying to build it
+ if (source.EndsWith (".resx")) {
+ var probe_prebuilt = Path.Combine (base_dir, source.Replace (".resx", ".resources.prebuilt"));
+ if (File.Exists (probe_prebuilt)) {
+
+ source = GetRelativePath (base_dir + "/", probe_prebuilt);
+ }
+ }
resources.AppendFormat (" <EmbeddedResource Include=\"{0}\">" + NewLine, source);
resources.AppendFormat (" <LogicalName>{0}</LogicalName>" + NewLine, dk.Value);
resources.AppendFormat (" </EmbeddedResource>" + NewLine);
build_output_dir = Path.GetDirectoryName (LibraryOutput);
else
build_output_dir = "bin\\Debug\\" + library;
-
-
- string postbuild_unix = string.Empty;
- string postbuild_windows = string.Empty;
-
- var postbuild =
- " <PostBuildEvent " + condition_unix + ">" + NewLine + postbuild_unix + NewLine + " </PostBuildEvent>" + NewLine +
- " <PostBuildEvent " + condition_windows + ">" + NewLine + postbuild_windows + NewLine + " </PostBuildEvent>";
-
bool basic_or_build = (library.Contains ("-basic") || library.Contains ("-build"));
Replace ("@DEBUGTYPE@", want_debugging_support ? "full" : "pdbonly").
Replace ("@REFERENCES@", refs.ToString ()).
Replace ("@PREBUILD@", prebuild).
- Replace ("@STARTUPOBJECT@", main == null ? "" : $"<StartupObject>{main}</StartupObject>").
Replace ("@POSTBUILD@", postbuild).
+ Replace ("@STARTUPOBJECT@", main == null ? "" : $"<StartupObject>{main}</StartupObject>").
//Replace ("@ADDITIONALLIBPATHS@", String.Format ("<AdditionalLibPaths>{0}</AdditionalLibPaths>", string.Join (",", libs.ToArray ()))).
Replace ("@ADDITIONALLIBPATHS@", String.Empty).
Replace ("@RESOURCES@", resources.ToString ()).
return Csproj;
}
+ string GenerateStep (string library, string suffix, string eventKey)
+ {
+ string target = Load (library + suffix);
+ string target_windows, target_unix;
+
+ int q = library.IndexOf ("-");
+ if (q != -1)
+ target = target + Load (library.Substring (0, q) + suffix);
+
+ if (target.IndexOf ("@MONO@") != -1){
+ target_unix = target.Replace ("@MONO@", "mono").Replace ("@CAT@", "cat");
+ target_windows = target.Replace ("@MONO@", "").Replace ("@CAT@", "type");
+ } else {
+ target_unix = target.Replace ("jay.exe", "jay");
+ target_windows = target;
+ }
+ target_unix = target_unix.Replace ("@COPY@", "cp");
+ target_windows = target_unix.Replace ("@COPY@", "copy");
+
+ target_unix = target_unix.Replace ("\r", "");
+ const string condition_unix = "Condition=\" '$(OS)' != 'Windows_NT' \"";
+ const string condition_windows = "Condition=\" '$(OS)' == 'Windows_NT' \"";
+ var result =
+ $" <{eventKey} {condition_unix}>\n{target_unix}\n </{eventKey}>{NewLine}" +
+ $" <{eventKey} {condition_windows}>{NewLine}{target_windows}{NewLine} </{eventKey}>";
+ return result;
+ }
+
void AddProjectReference (StringBuilder refs, VsCsproj result, MsbuildGenerator match, string r, string alias)
{
refs.AppendFormat (" <ProjectReference Include=\"{0}\">{1}", GetRelativePath (result.csProjFilename, match.CsprojFilename), NewLine);
--- /dev/null
+$(ProjectDir)\..\jay\jay.exe -ct < $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\parser\ILParser.jay > $(ProjectDir)\ILParser.cs
+
$(ProjectDir)\..\jay\jay.exe -ct < $(ProjectDir)\..\jay\skeleton.cs $(ProjectDir)\cs-parser.jay > $(ProjectDir)\cs-parser.cs\r
+\r
--- /dev/null
+$(ProjectDir)\..\..\jay\jay.exe -ct < $(ProjectDir)\..\..\jay\skeleton.cs $(ProjectDir)\Monodoc.Ecma\EcmaUrlParser.jay > $(ProjectDir)\Monodoc.Ecma\EcmaUrlParser.cs
+
</project>
<project dir="class/System" library="System-basic">
<boot>true</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../../class/lib/basic -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/basic/System.Xml.dll -r:./../../class/lib/basic/System.Configuration.dll -r:MonoSecurity=./../../class/lib/basic/Mono.Security.dll</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:BOOTSTRAP_BASIC -nowarn:1699 -d:DISABLE_CAS_USE -lib:./../../class/lib/basic -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/basic/System.Xml.dll -r:./../../class/lib/basic/System.Configuration.dll -r:MonoSecurity=./../../class/lib/basic/Mono.Security.dll</flags>
<output>System.dll</output>
<built_sources></built_sources>
<library_output>./../../class/lib/basic/System.dll</library_output>
</project>
<project dir="class/System" library="System-build">
<boot>false</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/build/System.Xml.dll -r:./../../class/lib/build/System.Configuration.dll -r:MonoSecurity=./../../class/lib/build/Mono.Security.dll</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/build/System.Xml.dll -r:./../../class/lib/build/System.Configuration.dll -r:MonoSecurity=./../../class/lib/build/Mono.Security.dll</flags>
<output>System.dll</output>
<built_sources></built_sources>
<library_output>./../../class/lib/build/System.dll</library_output>
</project>
<project dir="class/System" library="System-bare-build">
<boot>false</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
<output>System.dll</output>
<built_sources></built_sources>
<library_output>./../../class/lib/build/bare/System.dll</library_output>
</project>
<project dir="class/System" library="System-secxml-build">
<boot>false</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -r:./../../class/lib/build/bare/System.Xml.dll -r:MonoSecurity=./../../class/lib/build/Mono.Security.dll</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/build/mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -r:./../../class/lib/build/bare/System.Xml.dll -r:MonoSecurity=./../../class/lib/build/Mono.Security.dll</flags>
<output>System.dll</output>
<built_sources></built_sources>
<library_output>./../../class/lib/build/secxml/System.dll</library_output>
</project>
<project dir="class/System" library="System-net_4_x">
<boot>false</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/net_4_x/System.Xml.dll -r:./../../class/lib/net_4_x/System.Configuration.dll -r:MonoSecurity=./../../class/lib/net_4_x/Mono.Security.dll</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -d:CONFIGURATION_DEP -r:./../../class/lib/net_4_x/System.Xml.dll -r:./../../class/lib/net_4_x/System.Configuration.dll -r:MonoSecurity=./../../class/lib/net_4_x/Mono.Security.dll</flags>
<output>System.dll</output>
<built_sources></built_sources>
<library_output>./../../class/lib/net_4_x/System.dll</library_output>
</project>
<project dir="class/System" library="System-tests-net_4_x">
<boot>false</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS</flags>
<output>net_4_x_System_test.dll</output>
<built_sources></built_sources>
<library_output>net_4_x_System_test.dll</library_output>
</project>
<project dir="class/System" library="System-bare-net_4_x">
<boot>false</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav</flags>
<output>System.dll</output>
<built_sources></built_sources>
<library_output>./../../class/lib/net_4_x/bare/System.dll</library_output>
</project>
<project dir="class/System" library="System-tests-net_4_x">
<boot>false</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS</flags>
<output>net_4_x_System_test.dll</output>
<built_sources></built_sources>
<library_output>net_4_x_System_test.dll</library_output>
</project>
<project dir="class/System" library="System-secxml-net_4_x">
<boot>false</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -r:./../../class/lib/net_4_x/bare/System.Xml.dll -r:MonoSecurity=./../../class/lib/net_4_x/Mono.Security.dll</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -d:FEATURE_PAL,SYSTEM_NAMESPACE,MONO,PLATFORM_UNIX -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -d:SECURITY_DEP -d:XML_DEP -d:MONO_SECURITY_ALIAS -r:./../../class/lib/net_4_x/bare/System.Xml.dll -r:MonoSecurity=./../../class/lib/net_4_x/Mono.Security.dll</flags>
<output>System.dll</output>
<built_sources></built_sources>
<library_output>./../../class/lib/net_4_x/secxml/System.dll</library_output>
</project>
<project dir="class/System" library="System-tests-net_4_x">
<boot>false</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/secxml/System.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -d:MONO_FEATURE_PROCESS_START -d:MONO_FEATURE_THREAD_ABORT -d:MONO_FEATURE_THREAD_SUSPEND_RESUME -d:MONO_FEATURE_MULTIPLE_APPDOMAINS</flags>
<output>net_4_x_System_test.dll</output>
<built_sources></built_sources>
<library_output>net_4_x_System_test.dll</library_output>
</project>
<project dir="class/System.Json.Microsoft" library="System.Json.Microsoft-net_4_x">
<boot>false</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig /d:ASPNETMVC -keyfile:../winfx.pub -delaysign /resource:System.Json.Properties.Resources.resources -d:FEATURE_DYNAMIC -r:./../../class/lib/net_4_x/System.dll -r:./../../class/lib/net_4_x/System.Xml.dll -r:./../../class/lib/net_4_x/System.Core.dll -r:./../../class/lib/net_4_x/System.Runtime.Serialization.dll -r:./../../class/lib/net_4_x/Microsoft.CSharp.dll</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig /d:ASPNETMVC -keyfile:../winfx.pub -delaysign /resource:System.Json/Properties/Resources.resources,System.Json.Properties.Resources.resources -d:FEATURE_DYNAMIC -r:./../../class/lib/net_4_x/System.dll -r:./../../class/lib/net_4_x/System.Xml.dll -r:./../../class/lib/net_4_x/System.Core.dll -r:./../../class/lib/net_4_x/System.Runtime.Serialization.dll -r:./../../class/lib/net_4_x/Microsoft.CSharp.dll</flags>
<output>System.Json.Microsoft.dll</output>
<built_sources></built_sources>
<library_output>./../../class/lib/net_4_x/System.Json.Microsoft.dll</library_output>
</project>
<project dir="class/System.Json.Microsoft" library="System.Json.Microsoft-tests-net_4_x">
<boot>false</boot>
- <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/System.Json.Microsoft.dll /d:ASPNETMVC -keyfile:../winfx.pub -delaysign /resource:System.Json.Properties.Resources.resources -d:FEATURE_DYNAMIC -r:./../../class/lib/net_4_x/System.dll -r:./../../class/lib/net_4_x/System.Xml.dll -r:./../../class/lib/net_4_x/System.Core.dll -r:./../../class/lib/net_4_x/System.Runtime.Serialization.dll -r:./../../class/lib/net_4_x/Microsoft.CSharp.dll</flags>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/System.Json.Microsoft.dll /d:ASPNETMVC -keyfile:../winfx.pub -delaysign /resource:System.Json/Properties/Resources.resources,System.Json.Properties.Resources.resources -d:FEATURE_DYNAMIC -r:./../../class/lib/net_4_x/System.dll -r:./../../class/lib/net_4_x/System.Xml.dll -r:./../../class/lib/net_4_x/System.Core.dll -r:./../../class/lib/net_4_x/System.Runtime.Serialization.dll -r:./../../class/lib/net_4_x/Microsoft.CSharp.dll</flags>
<output>net_4_x_System.Json.Microsoft_test.dll</output>
<built_sources></built_sources>
<library_output>net_4_x_System.Json.Microsoft_test.dll</library_output>
<boot></boot>
<flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig -r:System.Xml -r:System</flags>
<output>mconfig.exe</output>
- <built_sources>Mono.MonoConfig/consts.cs</built_sources>
+ <built_sources></built_sources>
<library_output>./../../class/lib/net_4_x/mconfig.exe</library_output>
<fx_version>4.5</fx_version>
<profile>net_4_x</profile>
<profile>xbuild_14</profile>
<response>xbuild.exe.sources</response>
</project>
+ <project dir="class/System.Json.Microsoft" library="System.Json.Microsoft-net_4_x">
+ <boot>false</boot>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize /noconfig /d:ASPNETMVC -keyfile:../winfx.pub -delaysign /resource:System.Json/Properties/Resources.resources,System.Json.Properties.Resources.resources -d:FEATURE_DYNAMIC -r:./../../class/lib/net_4_x/System.dll -r:./../../class/lib/net_4_x/System.Xml.dll -r:./../../class/lib/net_4_x/System.Core.dll -r:./../../class/lib/net_4_x/System.Runtime.Serialization.dll -r:./../../class/lib/net_4_x/Microsoft.CSharp.dll</flags>
+ <output>System.Json.Microsoft.dll</output>
+ <built_sources></built_sources>
+ <library_output>./../../class/lib/net_4_x/System.Json.Microsoft.dll</library_output>
+ <fx_version>4.5</fx_version>
+ <profile>net_4_x</profile>
+ <response>System.Json.Microsoft.dll.sources</response>
+ </project>
+ <project dir="class/System.Json.Microsoft" library="System.Json.Microsoft-tests-net_4_x">
+ <boot>false</boot>
+ <flags>/codepage:65001 -d:NET_4_0 -d:NET_4_5 -d:NET_4_6 -d:MONO -d:DISABLE_CAS_USE -nowarn:1699 -nostdlib -r:./../../class/lib/net_4_x/mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_x/System.Json.Microsoft.dll /d:ASPNETMVC -keyfile:../winfx.pub -delaysign /resource:System.Json/Properties/Resources.resources,System.Json.Properties.Resources.resources -d:FEATURE_DYNAMIC -r:./../../class/lib/net_4_x/System.dll -r:./../../class/lib/net_4_x/System.Xml.dll -r:./../../class/lib/net_4_x/System.Core.dll -r:./../../class/lib/net_4_x/System.Runtime.Serialization.dll -r:./../../class/lib/net_4_x/Microsoft.CSharp.dll</flags>
+ <output>net_4_x_System.Json.Microsoft_test.dll</output>
+ <built_sources></built_sources>
+ <library_output>net_4_x_System.Json.Microsoft_test.dll</library_output>
+ <fx_version>4.5</fx_version>
+ <profile>net_4_x</profile>
+ <response>./../../build/deps/net_4_x_System.Json.Microsoft_test.dll.response</response>
+ </project>
</root>
}
}
}
+
+ static void SystemDataConnectionReplace (string srcdir, string targetdir, string target, string ns, string factory, string conn)
+ {
+ var t = File.ReadAllText (Path.Combine (srcdir, "DbConnectionHelper.cs"));
+
+ File.WriteAllText (Path.Combine (targetdir, target), t.Replace ("NAMESPACE", ns).Replace ("CONNECTIONFACTORYOBJECTNAME", factory).Replace ("CONNECTIONOBJECTNAME", conn));
+ }
+
+ static void SystemDataParameterReplace (string srcdir, string targetdir, string target, string resns, string ns, string parname)
+ {
+ var t = File.ReadAllText (Path.Combine (srcdir, "DbParameterHelper.cs"));
+
+ File.WriteAllText (Path.Combine (targetdir, target), t.Replace ("RESNAMESPACE", resns).Replace ("NAMESPACE", ns).Replace ("PARAMETEROBJECTNAME", parname));
+ }
+
+ static void SystemDataParameterCollReplace (string srcdir, string targetdir, string target, string resns, string ns, string parname)
+ {
+ var t = File.ReadAllText (Path.Combine (srcdir, "DbParameterCollectionHelper.cs"));
+
+ Console.WriteLine ("Creating " + Path.Combine (targetdir, target));
+ File.WriteAllText (Path.Combine (targetdir, target), t.Replace ("RESNAMESPACE", resns).Replace ("PARAMETERCOLLECTIONOBJECTNAME", parname + "Collection").Replace ("NAMESPACE", ns).Replace ("PARAMETEROBJECTNAME", parname));
+ }
+
+ static void GenerateSystemData (string bdir)
+ {
+ var rs = Path.Combine (bdir, "class", "referencesource", "System.Data", "System", "Data", "ProviderBase");
+ var sd = Path.Combine (bdir, "class", "System.Data");
+
+ SystemDataConnectionReplace (rs, sd, "gen_OdbcConnection.cs", "System.Data.Odbc", "OdbcConnectionFactory.SingletonInstance", "OdbcConnection");
+ SystemDataConnectionReplace (rs, sd, "gen_OleDbConnection.cs", "System.Data.OleDb", "OleDbConnectionFactory.SingletonInstance", "OleDbConnection");
+ SystemDataConnectionReplace (rs, sd, "gen_SqlConnection.cs", "System.Data.SqlClient", "SqlConnectionFactory.SingletonInstance", "SqlConnection");
+
+ SystemDataParameterReplace (rs, sd, "gen_OdbcParameter.cs", "System.Data", "System.Data.Odbc", "OdbcParameter");
+ SystemDataParameterReplace (rs, sd, "gen_OleDbParameter.cs", "System.Data", "System.Data.OleDb", "OleDbParameter");
+ SystemDataParameterReplace (rs, sd, "gen_SqlParameter.cs", "System.Data", "System.Data.SqlClient", "SqlParameter");
+
+ SystemDataParameterCollReplace (rs, sd, "gen_OdbcParameterCollection.cs", "System.Data", "System.Data.Odbc", "OdbcParameter");
+ SystemDataParameterCollReplace (rs, sd, "gen_OleDbParameterCollection.cs", "System.Data", "System.Data.OleDb", "OleDbParameter");
+ SystemDataParameterCollReplace (rs, sd, "gen_SqlParameterCollection.cs", "System.Data", "System.Data.SqlClient", "SqlParameter");
+ }
static void Main (string [] args)
{
Filter (bdir + "/build/common/Consts.cs.in",
bdir + "/build/common/Consts.cs",
(i, o) => o.Write (i.ReadToEnd ().Replace ("@MONO_VERSION@", "2.5.0")));
+
+ GenerateSystemData (bdir);
break;
default:
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_4_x", "mcs/class/System.Core/System.Core-net_4_x.csproj", "{359142A1-D80F-401E-AA64-7167C9317649}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_x", "mcs/class/Mono.Posix/Mono.Posix-net_4_x.csproj", "{66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CompilerServices.SymbolWriter-net_4_x", "mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_x.csproj", "{88177C4B-894F-485D-B95A-44199C06BE9F}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_x", "mcs/class/Mono.Posix/Mono.Posix-net_4_x.csproj", "{66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-plaincore-net_4_x", "mcs/class/System.Core/System.Core-plaincore-net_4_x.csproj", "{1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "resgen-net_4_x", "mcs/tools/resgen/resgen-net_4_x.csproj", "{647DC12E-A4EE-424A-9EC7-CE6643EE2EF7}"
{359142A1-D80F-401E-AA64-7167C9317649}.Debug|Any CPU.Build.0 = Debug|Any CPU
{359142A1-D80F-401E-AA64-7167C9317649}.Release|Any CPU.ActiveCfg = Release|Any CPU
{359142A1-D80F-401E-AA64-7167C9317649}.Release|Any CPU.Build.0 = Release|Any CPU
- {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Release|Any CPU.Build.0 = Release|Any CPU
{88177C4B-894F-485D-B95A-44199C06BE9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{88177C4B-894F-485D-B95A-44199C06BE9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{88177C4B-894F-485D-B95A-44199C06BE9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{88177C4B-894F-485D-B95A-44199C06BE9F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {66DBB049-785B-4C2E-9EF6-C9E163F7DDD1}.Release|Any CPU.Build.0 = Release|Any CPU
{1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1EC0EBC0-0B35-454C-89AE-3F8F0FDD9705}.Release|Any CPU.ActiveCfg = Release|Any CPU
# we don't run the test suite on Windows PRs, we just ensure the build succeeds, so end here
fi
${TESTCMD} --label=mini --timeout=5m make -w -C mono/mini -k check
-${TESTCMD} --label=runtime --timeout=140m make -w -C mono/tests -k test-wrench V=1 CI=1
+${TESTCMD} --label=runtime --timeout=160m make -w -C mono/tests -k test-wrench V=1 CI=1
${TESTCMD} --label=corlib --timeout=30m make -w -C mcs/class/corlib run-test
${TESTCMD} --label=verify --timeout=15m make -w -C runtime mcs-compileall
${TESTCMD} --label=profiler --timeout=30m make -w -C mono/profiler -k check
.stamp-clone:
@if [ ! -d $(CPPSHARP_DIR) ]; then \
- git clone git@github.com:xamarin/CppSharpBinaries.git $(CPPSHARP_DIR) && touch $@; \
+ git clone git://github.com/xamarin/CppSharpBinaries.git $(CPPSHARP_DIR) && touch $@; \
fi
MonoAotOffsetsDumper.exe: .stamp-clone MonoAotOffsetsDumper.cs $(MONO_OPTIONS_SRC)