Age | Commit message (Collapse) | Author |
|
|
|
|
|
The verification algorithm is inspired on internal specs by the Roslyn team but adapted to what it generates today.
Here's how this patch works:
We introduce a new verification type, SAFE_BYREF, that's used for a byref value that is safe to return from the stack.
It's unverifiable to return a byref value that is not marked SAFE_BYREF.
We mark the following values are SAFE_BYREF:
- byref arguments, unless it's the `this` arg of a valuetype instance method
- return values of method calls when all byref arguments have SAFE_BYREF values - the this arg is ignored.
- the address of a static field (LDSFLDA)
- the address of an array element (LDELEMA)
- the address of a field if the receiver is either a SAFE_BYREF value or a reference
Notoriously from the above is the value of local variables. We took a conservative approach of unsafe tainting.
We do this by associating 3 states to a local: unassigned (initial value of zero), assigned and safe (SAFE_BYREF_LOCAL), assigned and unsafe (UNSAFE_BYREF_LOCAL)
When loading a local, we set its value as SAFE_BYREF if the local is in the SAFE_BYREF_LOCAL state.
When storing to a local, we set it to SAFE_BYREF_LOCAL if, only if, it's not marked as UNSAFE_BYREF_LOCAL and the value is SAFE_BYREF.
If we store a non-safe value to a local, we mark it as UNSAFE_BYREF_LOCAL.
If we store a non-safe value to a SAFE_BYREF_LOCAL local, we mark the method as unverifiable.
This algorithm makes sure we don't mix safe and unsafe byref and side with safety in case of control-flow dependent values.
|
|
assembly being verified.
Unfortunately using mono_set_assemblies_path is not much of an option as it disables the MONO_PATH env var
and that's needed when working with an in-tree pedump - cuz having to `make install` all the time is BS.
|
|
Address pedump issues from https://bugzilla.xamarin.com/show_bug.cgi?id=58168
|
|
... assemblies.
msbuild tries to filter out the denied assemblies, which mono refuses to
load, during a build. It uses the `deniedAssembliesList.txt` installed
to `$mono_prefix/lib/mono/xbuild` to identify them.
This was generated with:
`$ mono tools/nuget-hash-extractor/nuget-hash-extractor.exe nugets guids_for_msbuild > mcs/tools/xbuild/data/deniedAssembliesList.txt`
This file needs to be kept in sync with any changes in the assemblies
denied by the runtime.
msbuild PR that adds support for this -
https://github.com/mono/msbuild/pull/23 .
|
|
|
|
|
|
|
|
object files for the static library as well. (#5233)"
This reverts commit 56a1881bff83365978e7eb30d18da8809b56c1e2.
It caused a consistent test error on ARM64:
https://jenkins.mono-project.com/job/test-mono-mainline-linux/label=debian-8-arm64/2810/testReport/regression-tests/dummy/MonoTests_regressions_100percentsuccess/
|
|
files for the static library as well. (#5233)
|
|
similar to utils/ etc. (#5297)
|
|
.. denied assemblies usable by a msbuild task for filtering them.
|
|
|
|
fixes this compilation error
MonoAotOffsetsDumper.cs(279,59): error CS0201: Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement
|
|
--targetdir= to generate ios offsets without having to specify the macos path. (#5218)
|
|
|
|
dump offsets without maccore
|
|
(#5058)
* [threads] Make mono_thread_attach_full static
* [threads] Remove prefix on MonoThreadInfoCallbacks callbacks
* [threads] Rename mono_threads*_init functions to mono_thread_info*_init
* [threads] Remove dead method mono_runtime_is_critical_method
* [threads] Move MonoThreadInfoCallbacks to metadata/threads
* [threads] Store MonoInternalThread in MonoThreadInfo for use when detaching
When the native thread would exit, the TLS keys are destroyed. There is a TLS destructor for MonoThreadInfo, but not for MonoInternalThread. If MonoInternalThread is destroyed before MonoThreadInfo, then MonoThreadInfoCallbacks.thread_detach wouldn't successfully detach the current MonoInternalThread as mono_thread_internal_current would return NULL. This would lead to MonoInternalThread still laying around, while their corresponding MonoThreadInfo has already been destroyed. This fixes this problem, since we now rely on MonoThreadInfo to store the MonoInternalThread for detach.
|
|
|
|
|
|
anymore because we have reference assemblies and it didn't work for mobile tools (e.g. linker)
|
|
This is the pedump analog of 9f5115a343213e7ce27b197c96274cc611a05284
which fixed monodis under coop.
|
|
|
|
|
|
bit binaries on osx. (#4659)
|
|
[loader] Check strong name when loading from application base. (Fixes #49721)
|
|
Reject rebinds that target one of the banned assemblies.
|
|
commit.
|
|
|
|
|
|
Runtime should use mono_assembly_open_predicate
|
|
--targetdir=dir argument argument which points to the mono build directory corresponding to the target abi. Only allow one --abi= argument on android. (#4487)
|
|
|
|
LoadFrom as a work-around.
|
|
|
|
|
|
|
|
[sgen] Parallel concurrent major
|
|
* [file] Remove dead field
* [process] Remove wapi_getpid
* [process] Remove CloseHandle
* [io-layer] Remove dead MONO_TRACE
* [io-layer] Extract error
* [io-layer] Extract wapi.h
* [io-layer] Remove the io-layer
|
|
|
|
|
|
assemblies table.
This tool takes a folder full of nupkg file and print macro invocations to add to image.c:ignored_assemblies.
Usage:
make download
make run
The download.sh script downloads all nugets we want to ignore. So update it before running if you have more you want to add.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|