Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@jaykrell
Copy link
Contributor

No description provided.

@jaykrell
Copy link
Contributor Author

@monojenkins build deb with monolite

@jaykrell
Copy link
Contributor Author

@monojenkins build deb with monolite

@jaykrell jaykrell assigned akoeplinger and kg and unassigned akoeplinger Jul 28, 2018
Copy link
Member

@akoeplinger akoeplinger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, but we can simplify even more :)

configure.ac Outdated
MONO_CORLIB_COUNTER=26
MONO_CORLIB_VERSION=`printf "1%02d%02d%02d%03d" $MONO_VERSION_MAJOR $MONO_VERSION_MINOR 0 $MONO_CORLIB_COUNTER`
MONO_CORLIB_UUID=07F6F369B78D4D709FE90C0EA002A970
MONO_CORLIB_VERSION=`printf "1%02d%02d%02d%s" $MONO_VERSION_MAJOR $MONO_VERSION_MINOR 0 $MONO_CORLIB_UUID`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can simplify this even more: the corlib version doesn't need to include the Mono version. It only needs to be unique which is already covered by the uuid.

I suggest we just do MONO_CORLIB_VERSION=07F6F369B78D4D709FE90C0EA002A970

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok.

configure.ac Outdated
# Use uuidgen or make up a really reliably unique string, such as a git hash
# or github PR number. Do not use anything personally identifiable or not particularly unique --
# names, birthdays, branch names -- or use funny characters that
# will not interoperate with C, C++, sh, make, etc. -- spaces, percents, stars, dollars, parens, etc.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd remove all the trivia about PII/birthdays etc. and just mention the uuidgen command you need to generate the string in the right format.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok. I was going to script it but my perl was lacking uuid module. I’ll try again.

goto exit;
}
if (strcmp (version, MONO_CORLIB_VERSION) != 0) {
result = g_strdup_printf ("expected corlib version %s, found %s.", MONO_CORLIB_VERSION, version);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's improve the error message while we're here, something like: "The runtime didn't find the mscorlib.dll it expected. Expected interface version %s but found %s. Check that your runtime and class libraries are matching."

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed.

@vargaz
Copy link
Contributor

vargaz commented Jul 28, 2018

This will make it impossible to know which way the incompatibility is, i.e. whenever corlib is too new or too old.

@akoeplinger
Copy link
Member

That's true but does it matter that much?

@kg
Copy link
Member

kg commented Jul 28, 2018

We could always just add a simple time component to the front of the id, like y-m-d + uuid. The odds of the monolite changing multiple times per day are not very high, and we'll still have uniqueness in that case, but we'll be able to easily identify whether a given version is old or not. For precise time/date we can search for the ID in the repo history.

@jaykrell
Copy link
Contributor Author

There is no such thing as “old” or “new”, just matching or not. The version check was and is exact, not ordered.

…is no

implied ordering, no old or new.
Add script for updating it.
Wordsmith the error message.
@jaykrell
Copy link
Contributor Author

jaykrell commented Jul 28, 2018

The guid does include a high precision timestamp fyi. Or at least they used to. But it isn’t obvious from sight. I originally left the version parts in for people who like to see them and that still seems reasonable appeasement, albeit unnecessary, granted.

@jaykrell
Copy link
Contributor Author

@monojenkins build deb with monolite

@@ -0,0 +1,18 @@
#!/usr/bin/perl

use warnings FATAL => 'all';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use bash.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bash is to be avoided imho. Python is good choice though.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Every time I try to do anything in Bourne shell, many times across many years, I always come away disappointed and resolved not to waste more time on it.
It feels like a pile of nonsense and not an actually designed language.
This time the same.

For example:

!/usr/bin/bash

uuid=`uuidgen`

while IFS= read -r line; do
	printf "%s\n" "${line//CORLIB_VERSION=.+/CORLIB_VERSION=$uuid}"
done

Close, but the .+ part of the regular expression doesn't work.

It is noticably slower than Perl, probably due to applying the regexp on every line instead of en masse once over the entire file.

Attempt to run regexp just once is faster when the regexp doesn't match but hangs and cannot control-c or z. Perhaps it kinda loops.

#!/bin/bash

contents=`cat configure.ac`

uuid=`uuidgen`

printf "%s\n" "${contents//CORLIB_VERSION=/CORLIB_VERSION=$uuid}"

Perhaps we can agree on Python?
But the Python 2.x vs. 3.x situation suggests Python developers do not take compatibility seriously enough.

Anyway, if Perl isn't acceptable, I wrote it in C also. That is easier and more portable than bash.

Copy link
Member

@akoeplinger akoeplinger Jul 29, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We definitely don't want a C version and even the bash/perl version is debatable.

I don't think we need a helper script for essentially running uuidgen and copy/pasting a string to a file, you can do that manually in 2 seconds.

Add a comment to configure.ac instead, something along the lines of:

# Use the uuidgen command to create a unique string
MONO_CORLIB_VERSION=07F6F369B78D4D709FE90C0EA002A970

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think command + copy/paste is a bit much to ask, when the automation is so easy. As an obvious side-benefit, the automation is now easy. It was kinda impossible before, because I would do such things as try to increment past concurrent PRs.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The C version is because Perl was objected to. I agree it is borderline. However, consider that you might want this is part of a nightly or weekly automation as well. i.e. 1. Otherwise we are promulgating binaries, which while built by infrastructure, derive from temporary private branches, not actual current merged master 2. Because the behavioral vs. calling interface variable is perhaps subtle and people won't abide by it, so rebuild every so often just in case.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wrong about infra needing to increment/change. Like today, it can rebuild and overwrite.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bash doesn't introduce a dependency. We don't want more dependencies than we actually need. Pretty easy to apply, especially in this case where all we want to do is invoke an executable. And as pointed by @akoeplinger, even easier: don't have a script but document what's needed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The dependency is optional as well.

mono_check_corlib_version (void)
{
const char* res;
char *result = NULL;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a reason for these 2 functions to be separated. Revert it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It just seems like extra layers to read through and nobody else uses the inner layer. It is unnecessary exposure, even if static. But ok.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the reason? It should be in comments in the code. As the code stands, it seems like extra unnecesary functionality to provide both functions.

@jaykrell jaykrell dismissed akoeplinger’s stale review July 29, 2018 05:29

I believe I met the spirit and details of this review.

@jaykrell jaykrell dismissed luhenry’s stale review July 29, 2018 05:31

Extra layer restored. There is no other user of the extra function so it seems like only extra work to understand and maintain. I tried bash and gave up after a while. I provided a different alternative to perl -- C. Python or C++ would also be good imho.

@jaykrell
Copy link
Contributor Author

@monojenkins build deb with monolite

@jaykrell jaykrell changed the title Change corlib version to a string, so that you can use uuidgen or a git hash or github PR. Change corlib version to a string, so that you can use uuidgen (or a git hash or github PR). Jul 29, 2018
@jaykrell
Copy link
Contributor Author

@monojenkins build failed

@jaykrell
Copy link
Contributor Author

Good?

@jaykrell
Copy link
Contributor Author

jaykrell commented Jul 29, 2018

@kg Debian package: ‘’’09:57:10 // Include does not exist: /build/mono-snapshot-pull-request-9787-2018.07.29+09.47.25-2018.07.29+09.47.25/mcs/class/System.Core/pipes_pns.sources
09:57:10 // gensources produced 1 error(s) and a set of 422 filename(s)
09:57:10 // Invoked with ‘’’

Copy link
Contributor

@luhenry luhenry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nop, didn't met the spirit of the review. Stop dismissing whenever you don't want to meet all requested changes.

@jaykrell
Copy link
Contributor Author

Was not sure of the etiquette. Will just delete the automation.

Improve documentation, albeit to include one line of Perl.
@jaykrell
Copy link
Contributor Author

@monojenkins build deb with monolite

Copy link
Contributor

@luhenry luhenry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks much better than the previous iterations: it goes straight to the point, it is understandable why it happened, and it doesn't introduce new dependencies. Thank you for making the effort to take feedback into account 😉

@jaykrell
Copy link
Contributor Author

@monojenkins build failed

@jaykrell jaykrell merged commit c6b8cec into mono:master Jul 30, 2018
@akoeplinger
Copy link
Member

Looks good, thank you!

@jaykrell
Copy link
Contributor Author

I don't really see the difference between one optional line of Perl in a comment, vs. 8 in a file.
Well, the difference is the one line doesn't work on native Windows but the 8 did, alas.
I'll add another comment for Windows support.

luhenry added a commit to lambdageek/mono that referenced this pull request Aug 2, 2018
* [linker] Move BCL size diff to nightly job

It was too annoying on every PR

* [mini] return gracefully from compile_special if a method can not be compiled

the caller will check `error` anyway. It allows the machinery to try the
interpreter instead.

* [interp] add Span<T> intrinsics for get_Item and get_Length

similar to https://github.com/mono/mono/pull/9086/files#diff-89fe30e1e87c5db21be052ddb0c8e28dR183

* address review feedback

* [interp] Don't throw exception on -1 division

* [bcl] Update BCL Linked Size (mono#9682)

* [runtime] Return the result properly from mono_exception_walk_trace (). (mono#9675)

[runtime] Return the result properly from mono_exception_walk_trace ().

* Use `SafePasswordHandle` in the internal certificate APIs. (mono#9651)

* `X509Helper`, `X509CertificateImpl`, `X509Certificate2Impl` and `ISystemCertificateProvider` now use `SafePasswordHandle` instead of strings.

* `X509Certificate`: actually implement `SecurePassword` based APIs using `SafePasswordHandle`.

* `mono_btls_pkcs12_import()`: when passed an empty password, try both the empty string and null.

* [MacOS] On Mac, use the copyfile API to copy files (mono#9642)

[MacOS] On Mac, use the copyfile API to copy files

Rebase of mono#9038 with added fix for the failing unit tests. Note that there's a race condition in the check between `source file == destination file` and the `copyfile` call, but a similar race condition already exists there in the current code except the outcome is different.

* [mcs] Don't wrap exception expression in contextual return. Fixes mono#9505

* Remove ves_icall_System_AppDomain_GetIDFromDomain. (mono#9674)

* Remove excess code -- strings are already nul terminated. (mono#9697)

* System.IO.Pipes from CoreFX (mono#9573)

Rework of mono#5448, contributes to mono#7143.

The anonymous pipes were tested on macOS, build was tested only on few configurations (hoping to solve some issue through Jenkins builds). Named pipe tests get stuck on macOS, but it may be unrelated Xunit issue and needs some proper debugging.

@Therzok, do you know of anything else that is missing for parallel MSBuild? Do you have some test environment for it by chance?

* [System.Reflection] CoreFX import for set of simple types. (mono#9693)

Part of mono#9660.

The imported CoreFX types:
- AmbiguousMatchException
- AssemblyAlgorithmIdAttribute
- AssemblyCompanyAttribute
- AssemblyConfigurationAttribute
- AssemblyConfigurationAttribute
- AssemblyContentType
- AssemblyCopyrightAttribute
- AssemblyCultureAttribute
- AssemblyDefaultAliasAttribute
- AssemblyDelaySignAttribute
- AssemblyDescriptionAttribute
- AssemblyFileVersionAttribute
- AssemblyFlagsAttribute
- AssemblyInformationalVersionAttribute
- AssemblyKeyFileAttribute
- AssemblyKeyNameAttribute
- AssemblyMetadataAttribute
- AssemblyNameFlags
- AssemblyProductAttribute
- AssemblySignatureKeyAttribute
- AssemblyTitleAttribute
- AssemblyTrademarkAttribute
- AssemblyTrademarkAttribute
- AssemblyVersionAttribute
- BindingFlags
- CallingConventions
- CustomAttributeFormatException
- DefaultMemberAttribute
- EventAttributes
- FieldAttributes
- GenericParameterAttributes
- ICustomAttributeProvider
- ImageFileMachine
- InterfaceMapping
- IntrospectionExtensions
- InvalidFilterCriteriaException
- IReflect
- IReflectableType
- MemberFilter
- MemberTypes
- MethodAttributes
- MethodImplAttributes
- ObfuscateAssemblyAttribute
- ObfuscationAttribute
- ParameterAttributes
- ParameterModifier
- PortableExecutableKinds
- ProcessorArchitecture
- PropertyAttributes
- ReflectionContext
- ReflectionTypeLoadException
- ResourceAttributes
- TargetException
- TargetInvocationException
- TargetParameterCountException
- TypeAttributes
- TypeFilter

* [bcl] Update BCL Linked Size

* [coop] Refactor suspend policy selection code

Untangle the configure-time and runtime suspend policy defaults.

* New MONO_THREADS_SUSPEND env var to select suspend policy

Set to one of "preemptive", "coop" or "hybrid".

Unlike the old MONO_ENABLE_COOP, MONO_ENABLE_COOP_SUSPEND,
MONO_ENABLE_HYBRID_SUSPEND, the value of MONO_THREADS_SUSPEND will take
priority over the configure flags default.

For compatability the old environment variables will be respected if neither
MONO_THREADS_SUSPEND nor a configure flag was set.  A warning will be emitted
if MONO_THREADS_SUSPEND isn't set.  (Rationale: maybe the environment set both
because they're not sure which version of Mono they will be running - so don't
nag them).

* [coop] Define mono_threads_is_blocking_transition_enabled in terms of suspend policy

Instead of digging around in the environment for the coop and hybrid suspend
settings, define in terms of mono_threads_suspend_policy (or the
MONO_ENABLE_BLOCKING_TRANSITION env var as before).

* [runtime] Removes unused icalls

* Be sure always assign out parameter. (mono#9701)

* NOHANDLES(ves_icall_Interop_Sys_DoubleToString) (mono#9702)

* [Coop] NOHANDLES(ReleaseMutex_internal), remove some error_init, (mono#9704)

and clear last error in Win32 path like on Unix.

* [Coop] Convert CreateProcess and ShellExecute. (mono#9699)

* [System]: Remove two `X509Certificate2Test` tests.

Both `Certificate_11_Properties` and `Certificate_14_Properties` use an invalid
certificate that violates X.690 11.8.2 (UTCTime under a DER encoding).

This will no longer be supported once we switch to CoreFX's PAL code.

See also dotnet/corefx#31293.

* Revert CharUnicodeInfo to reference-sources (Big Endian issue) (mono#9711)

Temporarily switch back to ref-source impl for `CharUnicodeInfo` which contains a few special BE patches while I am trying to upstream them.

Fixes mono#9684

* Fix up behaviour of verbose method with arguments (mono#9087)

* Fix up behaviour of verbose method with arguments

Given a method spec which looks like:
`MainClass:Do(int,int,int)`

Via f024e82 the code would match 3 methods:
`MainClass:Do(int`, `int`, `int)`, crashing the runtime.

Accept the multiple method matches via `;`, rather than `,`.

Now, the behaviour is changed so:
`MainClass:Do(int,int,int);MainClass:Do(int,int)`

Get parsed as:
`MainClass:Do(int,int,int)`
`MainClass:Do(int,int)`

* Add tests

* add test file and make tests actually output something

* Smarter unit test around disassembling methods

* Try single quoting environment variable value

* Try using non-throwing setter

* Move generated resource files from System and System.Security into corlib. (mono#9665)

* Make `corlib` internals visible to `System.Security` on all profiles, not just monotouch watch.
  
* Moves all generated `SR` files and their generation logic from `System` and `System.Security` into `corlib`.  Since `corlib` internals are visible to these assemblies, we don't need to duplicate the resource strings.

* Cleanup the `RESX_RESOURCE_STRING` is `corlib` and sort them alphabetically.

* Add the internal `Internal.Cryptography.Helpers` helper class from CoreFX to `corlib` (currently unused, but "Blue" will need it).

* [build] Update xunit to 2.4 version

This exposed few issue in CoreFX tests

* [corlib]: Cleanup `X509Certificate` implementation and sync it with CoreFx. (mono#9650)

* [corlib]: Cleanup `X509Certificate` implementation and sync it with CoreFX.

Completely refactored the `X509Certificate` implementation to make it based very closely on CoreFX.

We cannot fully switch to their implementation yet because we are missing things and they also have
a few issues in their implementation.  However, this will make it a lot easier to do this at a later time.

The internal `X509CertificateImpl` has been cleaned up as well, using properties instead of methods in
most places and the `ToString()` implementation is now shared between all platforms.

* `X509Certificate.CreateFromSignedFile()`: in CoreFX, this is the same as `CreateFromCertFile()`.
  Our old implementation was incomplete and did not verify the signature - we even had a test where
  loading a certificate with an invalid signature was supposed to work; this test has been disabled
  because we're now throwing an exception.

* `X509CertificateImpl.KeyAlgorithmParameters`: this is supposed to throw `CryptographicException`
  on error, see `Certificate13` in `X509CertificateTest.cs`.

* We now match CoreFX's behavior regarding serialization - while the `X509Certificate` type is still
  marked as `[Serializable]`, we now throw `PlatformNotSupportedException` when attempting to serialize
  or deserialize it.

* Bump API snapshot submodule

* [csproj] Update project files

* [tests] Disable verbose.exe test on Windows

See mono#9739

* [corlib] Bring back serialization ctors/methods for X509Certificate (mono#9745)

They were replaced with PNSE in mono#9650
but that broke xUnit 2.4.0.

* [bcl] Update BCL Linked Size (mono#9747)

Size Diff: https://jenkins.mono-project.com/job/test-mono-mainline-bclsize/18/BCL_20Size_20Diff/

Commits since last update:

.NET 4.x: 8b25769...770ad9e
MonoTouch: 8b25769...770ad9e
MonoDroid: 8b25769...770ad9e

* [interp] Improve icall perf (mono#9645)

* [interp] Refactor MINT_ICALL opcodes

Remove integer versions, since they add unnecessary complexity, and with some signatures we were already implicitly casting int to gpointer.

* [interp] Use fast versions for icalls

* [interp] Include more fast pinvoke/icall signatures

These cover almost all icalls

* [interp] Fix fast icall return value

The returned value needs to be converted to the stackval representation

* [runtime] Refactor cattr decoding. (mono#9724)

Return objects from load_cattr_value () using an additional out parameter. Add a variant of
mono_reflection_create_custom_attr_data_args () which can only decode a subset of cattr types, but
it doesn't allocate any objects. Use this in marshal.c/marshal-ilgen.c to avoid allocating objects
while decoding FixedBufferAttribute and UnmanagedFunctionPointerAttribute.

* [Coop] nohandles() System.Math and System.MathF. (mono#9741)

* Checkpoint tests.make update to use gensources.exe

* Manually specify the search directory for libraries when compiling gensources because it can't find it for some reason

* Checkpoint

* Checkpoint

* Checkpoint

* Bug fixes to gensources and the way tests.make invokes it. Compensate for the gross behavior where tests sources files are not relative to their location.

* Fix typo

* Okay, xtests sources files ARE relative to their location

* Remove missing directory from microsoft.csharp.dll.sources

* Workaround for gensources treating 0 result files as an error when we didn't load any non-empty sources files

* Fix parse errors in GetRelativePath and add to the ErrorCount when one occurs so the build will fail

* Handle invalid include paths. Resolve include paths relative to the .sources file even if source file names are relative to another folder.

* Fix included sources files not inheriting overridden path directory

* Remove invalid paths from exclusions files

* Ignore missing files/directories in exclusions lists since they are harmless errors

* Get rid of duplicate definition warnings for the gensources rule

* Handle extra whitespace in include directives

* Checkpoint: Move gensources build to basic.make after profile check and invoke that version directly when we need gensources.

* Checkpoint

* Fix build failure if gensources destination path doesn't exist yet by moving it to build.

* Fix wrong logic for finding the right profiles/platforms folders

* Fix xtest gensources invocation

* Fix mode damage

* Remove debugging messages

* Checkpoint: Move vars to rules.make

* Try moving gensources vars to rules.make

* Revert "Try moving gensources vars to rules.make"

This reverts commit 496f82e.

* [Coop] A bunch of nohandles(). (mono#9738)

* [Coop] System.IO mark all remaining NOHANDLES().

* Functions take no parameters, not any parameters -- () vs. (void).

* [Coop] Mark System.Threading.Interlocked as mostly NOHANDLES().

* [Coop] ves_icall_System_Threading_Thread_MemoryBarrier is NOHANDLES().

* [Coop] System.Threading volatile reads/writes are NOHANDLES().

* Make YieldInternal NOHANDLES and remove two potential layers.

* [Coop] Make ves_icall_System_Threading_Thread_current_lcid NOHANDLES().

* [Coop] mono_100ns_ticks nohandles.

* [Coop] More nohandles volatile reads/writes.

* [Coop] NOHANDLES() System.Security.SecurityManager.

* [System.Native] Build a reduced library on Android and iOS

* Fix copy/paste error. Use size parameter for non-moving GC allocation. Remove return statements from void function to silence warnings.

* Revert "[System.Native] Build a reduced library on Android and iOS"

This reverts commit 1e9be63.

It doesn't appear to been run through CI and does appear to be breaking things.
mono#9776

* [cxx] C++ deprecates the "register" keyword.

* [cxx] C++ does not have designated initializers.
 Current clang supports them, current g++ has partial support, Centos6 g++ 4.4 has no support.

* [cxx] C++11 needs spaces around string pieces to disambiguate from user defined literals.
Or at least on one side but we do both for clarity.
e.g. #define PRIdMAX "lld" (inttypes.h)
123"PRIdMAX"345" should be instead "123" PRIdMAX "345"

* [cxx] Make debugger-engine.c valid C++.

* [cxx] Convert debugger-agent.c.

* [cxx] Convert interpreter.

* [Coop] Convert ves_icall_System_Reflection_Module_ResolveStringToken. (mono#9743)

* [Coop] Convert ves_icall_System_Reflection_Module_ResolveStringToken.

* Use System.Security.Policy.Publisher from corefx (they essentially stubbed it out). (mono#9749)

* Use System.Security.Policy.Publisher from corefx (they essentially stubbed it out).

Fixes the XUnit 2.4 problem.

* Use `PublisherMembershipCondition` from CoreFX as well (stubbed out in there) and remove the tests.

* Bump API snapshot submodule

* Update csproj

* Fix typo

* Use correct domain (so far no difference), thanks @alexischr. (mono#9784)

* [interp] Overflow fixes (mono#9688)

* [interp] Fix some conv ovf opcodes

* [interp] Correctly hande a few conv ovf cases

For conversion from unsigned value to i1 and i2.

* [interp] Fix multiplication overflow case

* [interp] Remove some constants from code

* [cxx] Build/CI support for C++. (mono#9731)

* [cxx] Build/CI support for C++.
configure -enable-cplusplus and CI_TAGS=cplusplus
https://jenkins.mono-project.com//job/test-mono-mainline-linux-cplusplus/

* [cxx] Rename CPLUSPLUS/cplusplus to CXX/cxx.

* [cxx] Add C++ build support to mini.

* [cxx] Jenkins/CI support for cxx not just cplusplus.

* [bcl] Update BCL Linked Size (mono#9791)

* Change corlib version to a string, so that you can use uuidgen (or a git hash or github PR). (mono#9787)

* [bcl] Include all .sources files in the tarball (mono#9803)

mono@0f0e318 added a new pipes_pns.sources file
but we forgot to add it to EXTRA_DISTFILES so it gets included in the tarball.

Given that this happens almost all the time when we add a new .sources file
we should just always include all *.sources

* Fix comparison of IntPtr with null (mono#9800)

See dotnet/corefx#31457

* Apply F# portable pdb debug fix for pinvokes & bump (mono#9792)

It wasn't possible to debug any F# app that contained PInvokes.
The F# compiler omitted MethodDebuginformation for PInvokes which in
turn caused Mono to fail on an assertion.

```
* Assertion at metadata.c:1117, condition `idx < t->rows' not met
```

* Bump submodule for mono#9684 and mono/corefx#108 (mono#9773)

* [llvm] Bump llvm to release_60/fc854b8ec5873d294b80afa3e6cf6a88c5c48886. (mono#9786)

[llvm] Bump llvm to release_60/fc854b8ec5873d294b80afa3e6cf6a88c5c48886.

Fixes mono#9750.

* [jit] Avoid checking ins->inst_left in MONO_IS_COND_BRANCH_NOFP (), its not initialized by MONO_INST_NEW (). (mono#9790)

[jit] Avoid checking ins->inst_left in MONO_IS_COND_BRANCH_NOFP (), its not initialized by MONO_INST_NEW ().

* [cxx] Keywords: new => new_, typename => type_nam, namespace => name_space, (mono#9737)

[cxx] Keywords: new => new_, typename => type_name, namespace => name_…

…space, conditionally class => super_class.

* [runtime] Make collect_threads helper pin MonoInternalThread objects

* [jit] Clean up the handling of the lower/higher parts of long values on 32 bit platforms. (mono#9807)

Instead of accessing them using the inst_ls_word/inst_ms_word macros which use the union in MonoInst.data, access them normally using
MonoInst.Data.i8const.

* Add support for Blazor custom interop support. (mono#9713)

* Add support for Blazor custom interop support.

This adds additional ability to perform unmarshalled calls for advanced but high-performance shared-memory interop.
* Note: * This is only safe in Blazor's case because of its exact usage patterns.

* Add dotnet_support.js backing file.

* Fix tarballs again (mono#9810)

* Add GC Unsafe thread state transitions to MONO_API functions - Fourth Edition (mono#9630)

* [appdomain] MONO_API mono_domain_set needs GC Unsafe

* [runtime] MONO_API mono_domain_set_config needs GC Unsafe

* [runtime] MONO_API mono_dllmap_insert sometimes needs GC Unsafe

   When adding a global mapping, don't do the state transition because the thread may not be attached yet.   When adding a per-image mapping, do the transition.

* [runtime] MONO_API mono_g_hash_table_insert needs GC Unsafe

* [runtime] MONO_API mono_g_hash_table_new_type needs GC Unsafe

* [runtime] MONO_API mono_gc_reference_queue_new needs GC Unsafe

* [runtime] mono_thread_detach_if_exiting thread state change

   1. Mark it external only, it's unused in the runtime.
   2. If detaching, switch to GC Unsafe before detaching

* [metadata] Make mono_class_get_fields external only

   - Runtime should use mono_class_get_fields_internal
   - MONO_API mono_class_get_fields needs GC Unsafe

* [runtime] MONO_API mono_gc_reference_queue_add needs GC Unsafe

* [metadata] Make mono_class_get_name and namespace external only

   - Runtime should use m_class_get_name and m_class_get_name_space
   - MONO_API mono_class_get_name and mono_class_get_namespace need GC Unsafe

* [metadata] MONO_API mono_class_get_parent needs GC Unsafe

   - mark it external only; runtime should use m_class_get_parent

* [metadata] Make mono_class_is_delegate external only

   - runtime should use m_class_is_delegate
   - MONO_API mono_class_is_delegate needs GC Unsafe

* [metadata] Make mono_class_is_valuetype external only

   - runtime should use m_class_is_valuetype
   - MONO_API mono_class_is_valuetype needs GC Unsafe

* [metadata] Make mono_class_is_enum external only

   - runtime should use m_class_is_enum_type
   - MONO_API mono_class_is_enum needs GC Unsafe

* [metadata] Mark mono_class_get_element_class external only

   - runtime should use m_class_get_element_class
   - MONO_API mono_class_get_element_class needs GC Unsafe

* w32file-unix.c fix warnings about unused locals (mono#9823)

w32file-unix.c:2361:7: warning: unused variable 'ret_utime' [-Wunused-variable]
        gint ret_utime;
             ^
w32file-unix.c:2358:15: warning: unused variable 'dest_fd' [-Wunused-variable]
        gint src_fd, dest_fd;
                     ^
w32file-unix.c:2358:7: warning: unused variable 'src_fd' [-Wunused-variable]
        gint src_fd, dest_fd;
             ^
w32file-unix.c:2362:7: warning: unused variable 'syscall_res' [-Wunused-variable]
        gint syscall_res;
             ^
4 warnings generated.

* [Coop] Convert ves_icall_MonoField_GetFieldOffset. (mono#9742)

* Fix System.Drawing on 64-bit macOS. (mono#9824)

Carbon implementation now throws exception instead of crashing in the mismatched p/invoke calls.
Cocoa implementation now support 64-bit mode and uses the handle of `NSView` that is passed in instead of relying on `NSGraphicsContext.CurrentContext`. It also fixes handling of flipped views.

Requires up to date libgdiplus.

* Really fix CoreR[FT] version of System.Decimal for big endian (mono#9828)

The version imported and attempted to patch didn't work fully. This
preserves the .NET representation while converting if directives to
runtime checks, which CoreCLR inlines.

Testing was done poking some values in the REPL and running some
test suites (System.Json, System.Decimal) that broke as a result.
mcs should also properly handle constants; again, the "bits" inside
are consistent with amd64, and just converted as needed.

Unless I fucked up, should fix mono#9772.

* [utils] Sane assert instead of crash on allocation failure

* [LinkerDescriptor] remove remoting feature from MonoMethodMessage

Fixes those failures on Xamarin.iOS:
> 2018-07-30 21:16:19.931 monotouchtest[49618:80799179] error: * Assertion at /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/external/mono/mono/metadata/object.c:7896, condition `init_message_method != NULL' not met
> 2018-07-30 21:16:19.931 monotouchtest[49618:80799179] critical: Stacktrace:
>
> 2018-07-30 21:16:19.932 monotouchtest[49618:80799179] critical:   at <unknown> <0xffffffff>
> 2018-07-30 21:16:19.932 monotouchtest[49618:80799179] critical:   at (wrapper managed-to-native) object.__icall_wrapper_mono_delegate_begin_invoke (object,intptr) <0x00012>
> 2018-07-30 21:16:19.932 monotouchtest[49618:80799179] critical:   at (wrapper delegate-begin-invoke) <Module>.begin_invoke_IAsyncResult__this___AsyncCallback_object (System.AsyncCallback,object) [0x00015] in <643e5a0761d140d1977f1bbd2bd72153>:0
> 2018-07-30 21:16:19.932 monotouchtest[49618:80799179] critical:   at MonoTouchFixtures.AVFoundation.AVAssetImageGeneratorTest.GenerateCGImagesAsynchronously () [0x00021] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/monotouch-test/AVFoundation/AVAssetImageGeneratorTest.cs:126
> 2018-07-30 21:16:19.933 monotouchtest[49618:80799179] critical:   at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) [0x0004f] in <643e5a0761d140d1977f1bbd2bd72153>:0
> 2018-07-30 21:16:19.933 monotouchtest[49618:80799179] critical:   at <unknown> <0xffffffff>
> 2018-07-30 21:16:19.934 monotouchtest[49618:80799179] critical:   at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) <0x00012>
> 2018-07-30 21:16:19.934 monotouchtest[49618:80799179] critical:   at System.Reflection.MonoMethod.Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) [0x0003b] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.15.0.36/src/Xamarin.iOS/mcs/class/corlib/System.Reflection/MonoMethod.cs:305
> 2018-07-30 21:16:19.934 monotouchtest[49618:80799179] critical:   at System.Reflection.MethodBase.Invoke (object,object[]) [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.15.0.36/src/Xamarin.iOS/mcs/class/referencesource/mscorlib/system/reflection/methodbase.cs:229
> 2018-07-30 21:16:19.934 monotouchtest[49618:80799179] critical:   at NUnit.Framework.Internal.Reflect.InvokeMethod (System.Reflection.MethodInfo,object,object[]) [0x00009] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/external/mono/external/nunit-lite/NUnitLite-1.0.0/src/framework/Internal/Reflect.cs:215
> 2018-07-30 21:16:19.935 monotouchtest[49618:80799179] critical:   at NUnit.Framework.Internal.Commands.TestMethodCommand.RunNonAsyncTestMethod (NUnit.Framework.Internal.TestExecutionContext) [0x00000] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/external/mono/external/nunit-lite/NUnitLite-1.0.0/src/framework/Internal/Commands/TestMethodCommand.cs:114

Also see
https://github.com/xamarin/xamarin-macios/blob/10d98e67d88231fd41218a93b92d42914550ee10/tools/mtouch/Tuning.cs#L137

@akoeplinger mentions further:
> we even have custom code to preserve MonoMethodMessage in the XI linker:
> https://github.com/xamarin/xamarin-macios/blob/a563a66c342d2e982a9648fbfd5ce9c361bea07e/tools/linker/MonoTouch.Tuner/RemoveCode.cs#L178-L180

Fixes regression introduced by mono#8055
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants