diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 1b785a2e6d6a..780b28e9e4dd 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -15,10 +15,16 @@
]
},
"microsoft.dotnet.xharness.cli": {
- "version": "1.0.0-prerelease.20559.2",
+ "version": "1.0.0-prerelease.20574.2",
"commands": [
"xharness"
]
+ },
+ "microsoft.visualstudio.slngen.tool": {
+ "version": "4.4.0",
+ "commands": [
+ "slngen"
+ ]
}
}
}
diff --git a/Build.proj b/Build.proj
index 2d96f02056fe..6352e423156b 100644
--- a/Build.proj
+++ b/Build.proj
@@ -12,16 +12,6 @@
-
-
-
-
-
-
-
@@ -36,12 +26,4 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
index 799d054f3b1a..91557e143579 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -57,7 +57,7 @@
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmAppBuilder', 'Debug', '$(NetCoreAppCurrent)', 'publish'))$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmBuildTasks', 'Debug', '$(NetCoreAppCurrent)', 'publish'))$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoAOTCompiler', 'Debug', '$(NetCoreAppCurrent)'))
-
+
$([MSBuild]::NormalizePath('$(AppleAppBuilderDir)', 'AppleAppBuilder.dll'))$([MSBuild]::NormalizePath('$(AndroidAppBuilderDir)', 'AndroidAppBuilder.dll'))$([MSBuild]::NormalizePath('$(WasmAppBuilderDir)', 'WasmAppBuilder.dll'))
@@ -105,8 +105,6 @@
-
- truefalse
diff --git a/Directory.Build.targets b/Directory.Build.targets
index 9d18986a3f87..68aa63fa324d 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -29,19 +29,19 @@
-->
+ TargetingPackVersion="$(MicrosoftNETCoreAppVersion)" />
diff --git a/docs/coding-guidelines/adding-api-guidelines.md b/docs/coding-guidelines/adding-api-guidelines.md
index b9eba2201201..f6014fd1f7d5 100644
--- a/docs/coding-guidelines/adding-api-guidelines.md
+++ b/docs/coding-guidelines/adding-api-guidelines.md
@@ -15,7 +15,7 @@ Recommended reading to better understand this document:
### Determine what library
-- Propose a library for exposing it as part of the [API review process](http://aka.ms/apireview).
+- Propose a library for exposing it as part of the [API review process](https://aka.ms/apireview).
- Keep in mind the API might be exposed in a reference assembly that
doesn't match the identity of the implementation. There are many reasons for this but
the primary reason is to abstract the runtime assembly identities across
diff --git a/docs/coding-guidelines/api-guidelines/nullability.md b/docs/coding-guidelines/api-guidelines/nullability.md
index 9cb1b96525c2..807a0c3f91f6 100644
--- a/docs/coding-guidelines/api-guidelines/nullability.md
+++ b/docs/coding-guidelines/api-guidelines/nullability.md
@@ -1,20 +1,20 @@
# Nullability annotations
-C# 8 provides an opt-in feature that allows for the compiler to track reference type nullability in order to catch potential null dereferences. We are adopting that feature across .NET's libraries, working up from the bottom of the stack. We're doing this for three primary reasons, in order of importance:
+As of C# 8 and improved in C# 9, the C# language provides an opt-in feature that allows the compiler to track reference type nullability in order to catch potential null dereferences. We have adopted that feature set across .NET's libraries, working up from the bottom of the stack. We've done this (and continue to do so for all new library development) for three primary reasons, in order of importance:
-- **To annotate the .NET surface area with appropriate nullability annotations.** While this could be done solely in the reference assemblies, we're doing it first in the implementation to help validate the selected annotations.
-- **To help validate the nullability feature itself.** With millions of lines of C# code, we have a very large and robust codebase with which to try out the feature and find areas in which it shines and areas in which we can improve it. The work to annotate System.Private.CoreLib in .NET Core 3.0 helped to improve the feature as shipped in C# 8, and annotating the rest of the libraries will continue to be helpful in this regard.
-- **To find null-related bugs in .NET Runtime itself.** We expect to find relatively few meaningful bugs, due to how relatively well-tested the codebases are and how long they've been around.
+- **To annotate the .NET surface area with appropriate nullability annotations.** While this could be done solely in the reference assemblies, we do it in the implementation to help validate the selected annotations.
+- **To help validate the nullability feature itself.** With millions of lines of C# code, we have a very large and robust codebase with which to try out features and find areas in which it shines and areas in which we can improve it. The work to annotate System.Private.CoreLib in .NET Core 3.0 helped to improve the feature as shipped in C# 8, and the rest of the core libraries being annotated in .NET 5 helped to further flesh out the design for C# 9.
+- **To find null-related bugs in .NET Runtime itself.** We have found few meaningful bugs, due to how relatively well-tested the codebases are and how long they've been around. However, for new code, the annotations do help to highlight places where null values may be erroneously dereferenced, helping to avoid NullReferenceExceptions in places testing may not yet be adequate.
## Breaking Change Guidance
-We are striving to get annotations correct the "first time" and are doing due-diligence in an attempt to do so. However, we acknowledge that we are likely to need to augment and change some annotations in the future:
+We strive to get annotations correct the "first time" and do due-diligence in an attempt to do so. However, we acknowledge that we are likely to need to augment and change some annotations in the future:
- **Mistakes.** Given the sheer number of APIs being reviewed and annotated, we are likely to make some errors, and we'd like to be able to fix them so that long-term customers get the greatest benefit.
-- **Breadth.** Annotation takes time, so annotations will roll out over time rather than being released all at once.
+- **Breadth.** Annotation takes time, so annotations have rolled out and will continue to roll out over time rather than all at once for the whole stack.
- **Feedback.** We may need to revisit some "gray area" decisions as to whether a parameter or return type should be nullable or non-nullable (more details later).
-Any such additions or changes to annotations can impact the warnings consuming code receives if that code has opted in to nullability analysis and warnings. Even so, for at least the foreseeable future we may still do so. We will be very thoughtful about when and how we do.
+Any such additions or changes to annotations can impact the warnings consuming code receives if that code has opted-in to nullability analysis and warnings. Even so, for at least the foreseeable future we may still do so, and we will be very thoughtful about when and how we do.
## Annotation Guidance
@@ -23,7 +23,7 @@ Nullability annotations are considered to represent intent: they represent the n
- **DO** annotate all new APIs with the desired contract.
- **CONSIDER** changing that contract if overwhelming use suggests a different de facto contract. This is particularly relevant to virtual/abstract/interface methods defined in a library where all implementations may not be under your control, and derived implementations may not have adhered to the original intent.
- **DO** respect documented behaviors. Nullability annotations are about codifying a contract, and documentation is a description of that contract. If, for example, a base abstract or virtual method says that it may throw an exception if `null` is passed in, that dictates that the argument should be non-nullable.
-- **DO** continue to validate all arguments as you would have prior to nullability warnings. In particular, if you would have checked an argument for `null` and thrown an `ArgumentNullException` if it was `null`, continue to do so, even if the parameter is defined as non-nullable. Many consumers will not have nullability checked enabled, either because they're using a language other than C#, they're using an older version of C#, they simply haven't opted-in to nullability analysis, or the compiler isn't able to detect the misuse.
+- **DO** continue to validate all arguments as you would have prior to nullability warnings. In particular, if you would have checked an argument for `null` and thrown an `ArgumentNullException` if it was `null`, continue to do so, even if the parameter is defined as non-nullable. Many consumers will not have nullability checked enabled, either because they're using a language other than C#, they're using an older version of C#, they simply haven't opted-in to nullability analysis, they've explicitly suppressed warnings, or the compiler isn't able to detect the misuse.
- **DO NOT** remove existing argument validation when annotating existing public/protected APIs. If through the course of annotating it becomes clear that internal/private surface area is unnecessarily checking for nulls when nulls aren't possible (i.e. you found dead code), such use can be removed or replaced by asserts.
- **AVOID** making any changes while annotating that substantively impact the generated IL for an implementation (e.g. `some.Method()` to `some?.Method()`). Any such changes should be thoroughly analyzed and reviewed as a bug fix. In some cases, such changes may be warranted, but they're a red flag that should be scrutinized heavily.
diff --git a/docs/design/coreclr/jit/lsra-detail.md b/docs/design/coreclr/jit/lsra-detail.md
index a637b8ac6982..47292dadcfdb 100644
--- a/docs/design/coreclr/jit/lsra-detail.md
+++ b/docs/design/coreclr/jit/lsra-detail.md
@@ -387,7 +387,7 @@ well as supporting components) in more depth.
- `LinearScan::identifyCandidates`
- This mostly duplicates what is done in
- `Compiler::lvaMarkLocalVars(). There are differences in what
+ `Compiler::lvaMarkLocalVars()`. There are differences in what
constitutes a register candidate vs. what is tracked, but we
should probably handle them in `Compiler::lvaMarkLocalVars()`
when it is called after `Lowering`.
@@ -445,7 +445,7 @@ node, which builds `RefPositions` according to the liveness model described abov
- First, we create `RefPosition`s to define any internal registers that are required.
As we create new `Interval`s for these, we add the definition `RefPosition` to an array,
- `InternalDefs`. This allows us to create the corresponding uses of these internal
+ `internalDefs`. This allows us to create the corresponding uses of these internal
registers later.
- Then we create `RefPosition`s for each use in the instruction.
@@ -474,7 +474,7 @@ node, which builds `RefPositions` according to the liveness model described abov
we need to ensure that the other source isn't given the same register as the
target. For this, we annotate the use `RefPosition` with `delayRegFree`.
-- Next we create the uses of the internal registers, using the `InternalDefs` array.
+- Next we create the uses of the internal registers, using the `internalDefs` array.
This is cleared before the next instruction is handled.
- Next, any registers in the kill set for the instruction are killed. This is performed
@@ -652,7 +652,7 @@ LinearScanAllocation(List refPositions)
- When `COMPlus_EnableEHWriteThru == 0`, any variable that's
live in to an exception region is always referenced on the stack.
- - See [Enable EHWriteThru by default](#enable-EHWriteThru-by-default).
+ - See [Enable EHWriteThru by default](#enable-ehwritethru-by-default).
- Code generation (genGenerateCode)
diff --git a/docs/design/features/globalization-invariant-mode.md b/docs/design/features/globalization-invariant-mode.md
index f3c4132fcc0d..62544139522d 100644
--- a/docs/design/features/globalization-invariant-mode.md
+++ b/docs/design/features/globalization-invariant-mode.md
@@ -103,9 +103,9 @@ Applications can enable the invariant mode by either of the following:
1. in project file:
```xml
-
-
-
+
+ true
+
```
2. in `runtimeconfig.json` file:
diff --git a/docs/design/features/host-startup-hook.md b/docs/design/features/host-startup-hook.md
index e2b4623fab03..ec0e35eb5d16 100644
--- a/docs/design/features/host-startup-hook.md
+++ b/docs/design/features/host-startup-hook.md
@@ -253,3 +253,10 @@ be defined either in the app or within the first hook that uses it:
The type should be made `internal` to prevent exposing it as API
surface to any managed code that happens to have access to the startup
hook dll. However, the feature will also work if the type is `public`.
+
+### Incompatible with trimming
+
+Startup hooks are disabled by default on trimmed apps. The usage of
+startup hooks on a trimmed app is potentially dangerous since these
+could make use of assemblies, types or members that were removed by
+trimming, causing the app to crash.
diff --git a/docs/infra/buildtriage.md b/docs/infra/buildtriage.md
index e91343f45b08..ca3903699aae 100644
--- a/docs/infra/buildtriage.md
+++ b/docs/infra/buildtriage.md
@@ -44,6 +44,7 @@ The main meta-bug linking to currently tracked issues is [here](https://github.c
- [runfo Documentation](https://github.com/jaredpar/devops-util/tree/master/runfo)
- [Internal Build Definition](https://dev.azure.com/dnceng/internal/_build?definitionId=679)
- [Public Build Definition](https://dev.azure.com/dnceng/public/_build?definitionId=686)
+- [Runtime dependency status](https://maestro-prod.westus2.cloudapp.azure.com/1296/https:%2F%2Fgithub.com%2Fdotnet%2Fruntime/latest/graph)
## Build Rotation for upcoming months
diff --git a/docs/project/api-review-process.md b/docs/project/api-review-process.md
index e958896f9c1f..4773d0651e95 100644
--- a/docs/project/api-review-process.md
+++ b/docs/project/api-review-process.md
@@ -42,7 +42,7 @@ APIs and some code samples that show how it should be used. If changes are neces
There are three methods to get an API review:
-* **Get into the backlog**. Generally speaking, filing an issue in `dotnet/runtime` and applying the label `api-ready-for-review` on it will make your issue show up during API reviews. The downside is that we generally walk the backlog oldest-newest, so your issue might not be looked at for a while. Progress of issues can be tracked via http://aka.ms/ready-for-api-review.
+* **Get into the backlog**. Generally speaking, filing an issue in `dotnet/runtime` and applying the label `api-ready-for-review` on it will make your issue show up during API reviews. The downside is that we generally walk the backlog oldest-newest, so your issue might not be looked at for a while. Progress of issues can be tracked via https://aka.ms/ready-for-api-review.
* **Fast track**. If you need to bypass the backlog apply both `api-ready-for-review` and `blocking`. All blocking issues are looked at before we walk the backlog.
* **Dedicated review**. This only applies to area owners. If an issue you are the area owner for needs an hour or longer, send an email to FXDC and we book dedicated time. Rule of thumb: if the API proposal has more than a dozen APIs and/or the APIs have complex policy, then you need 60 min or more. When in doubt, send mail to FXDC.
diff --git a/docs/project/linux-performance-tracing.md b/docs/project/linux-performance-tracing.md
index ff70c266acec..720c54c50e99 100644
--- a/docs/project/linux-performance-tracing.md
+++ b/docs/project/linux-performance-tracing.md
@@ -19,9 +19,9 @@ CoreCLR supports two different mechanisms for tracing .NET applications on Linux
## Required Tools ##
- **perfcollect**: Bash script that automates data collection.
- - Available at .
+ - Available at .
- **PerfView**: Windows-based performance tool that can also analyze trace files collected with Perfcollect.
- - Available at .
+ - Available at .
## Preparing Your Machine ##
Follow these steps to prepare your machine to collect a performance trace.
@@ -29,7 +29,7 @@ Follow these steps to prepare your machine to collect a performance trace.
1. Download Perfcollect.
> ```bash
- > curl -OL http://aka.ms/perfcollect
+ > curl -OL https://aka.ms/perfcollect
> ```
2. Make the script executable.
@@ -212,7 +212,7 @@ Traces are best viewed using PerfView on Windows. Note that we're currently loo
### Open the Trace File ###
1. Copy the trace.zip file from Linux to a Windows machine.
-2. Download PerfView from .
+2. Download PerfView from .
3. Run PerfView.exe
> ```cmd
@@ -269,7 +269,7 @@ dotnet-trace collect --process-id
```
## Viewing the Trace ##
-The resulting trace can be viewed in [PerfView](http://aka.ms/perfview) on Windows. Alternatively on Linux/macOS, it can be viewed on [SpeedScope](https://speedscope.app) if you convert the trace format to speedscope by passing `--format speedscope` argument when collecting the trace.
+The resulting trace can be viewed in [PerfView](https://aka.ms/perfview) on Windows. Alternatively on Linux/macOS, it can be viewed on [SpeedScope](https://speedscope.app) if you convert the trace format to speedscope by passing `--format speedscope` argument when collecting the trace.
## More Information ##
To read more about how to use dotnet-trace, please refer to the [dotnet-trace documentation](https://github.com/dotnet/diagnostics/blob/master/documentation/dotnet-trace-instructions.md).
diff --git a/docs/workflow/editing-and-debugging.md b/docs/workflow/editing-and-debugging.md
index 8297b10d2873..5ffc9813b9ca 100644
--- a/docs/workflow/editing-and-debugging.md
+++ b/docs/workflow/editing-and-debugging.md
@@ -15,8 +15,7 @@ more on Markdown in general.
# Visual Studio Solutions
-The repository has a number of Visual Studio Solutions files (`*.sln`) that are useful for editing parts of
-what are in the repository. In particular
+The repository has a number of Visual Studio Solutions files (`*.sln`) that are useful for editing parts of the repository. In particular
* `src\coreclr\src\System.Private.CoreLib\System.Private.CorLib.sln` - This solution is for all managed (C#) code that is defined
in the runtime itself. This is all class library support of one form or another.
diff --git a/docs/workflow/requirements/linux-requirements.md b/docs/workflow/requirements/linux-requirements.md
index 7563fdf7d7c0..cc8328136068 100644
--- a/docs/workflow/requirements/linux-requirements.md
+++ b/docs/workflow/requirements/linux-requirements.md
@@ -50,7 +50,7 @@ Install the following packages for the toolchain:
- libkrb5-dev
- libnuma-dev (optional, enables numa support)
- zlib1g-dev
-- ninja (optional, enables building native code with ninja instead of make)
+- ninja-build (optional, enables building native code with ninja instead of make)
The following dependencies are needed if Mono Runtime is enabled (default behavior):
@@ -62,7 +62,7 @@ The following dependencies are needed if Mono Runtime is enabled (default behavi
sudo apt-get install -y cmake llvm-9 clang-9 autoconf automake \
libtool build-essential python curl git lldb-6.0 liblldb-6.0-dev \
libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev \
-libssl-dev libnuma-dev libkrb5-dev zlib1g-dev ninja
+libssl-dev libnuma-dev libkrb5-dev zlib1g-dev ninja-build
```
You now have all the required components.
diff --git a/docs/workflow/testing/coreclr/unix-test-instructions.md b/docs/workflow/testing/coreclr/unix-test-instructions.md
index aae608d27210..eeee6137909c 100644
--- a/docs/workflow/testing/coreclr/unix-test-instructions.md
+++ b/docs/workflow/testing/coreclr/unix-test-instructions.md
@@ -24,6 +24,17 @@ Please note that this builds the Priority 0 tests. To build priority 1:
./src/tests/build.sh -priority1
```
+## Generating Core_Root
+
+The `src/tests/build.sh` script generates the Core_Root folder, which contains the test host (`corerun`), libraries, and coreclr product binaries necessary to run a test. To generate Core_Root without building the tests:
+
+```
+./src/tests/build.sh generatelayoutonly
+```
+
+The output will be at `/artifacts/tests/coreclr/../Tests/Core_Root`.
+
+
## Building Individual Tests
During development there are many instances where building an individual test is fast and necessary. All of the necessary tools to build are under `coreclr`. It is possible to use `~/runtime/dotnet.sh msbuild` as you would normally use MSBuild with a few caveats.
@@ -33,9 +44,11 @@ During development there are many instances where building an individual test is
## Building an Individual Test
```sh
-./dotnet.sh msbuild src/coreclr/tests/src/path-to-proj-file /p:TargetOS= /p:Configuration=
+./dotnet.sh msbuild src/tests/path-to-proj-file /p:TargetOS= /p:Configuration=
```
+In addition to the test assembly, this will generate a `.sh` script next to the test assembly in the test's output folder. The test's output folder will be under `/artifacts/tests/coreclr/..` at a subpath based on the test's location in source.
+
## Running Tests
The following instructions assume that on the Unix machine:
@@ -76,6 +89,14 @@ Tests which never should be built or run are marked
This propoerty should not be conditioned on Target properties to allow
all tests to be built for `allTargets`.
+## Running Individual Tests
+
+After [building an individual test](#building-individual-tests), to run the test:
+
+1) Set the `CORE_ROOT` environment variable to the [Core_Root folder](#generating-core_root).
+
+2) Run the test using the `.sh` generated for the test.
+
PAL tests
---------
diff --git a/docs/workflow/testing/coreclr/windows-test-instructions.md b/docs/workflow/testing/coreclr/windows-test-instructions.md
index 540c0794fa89..5b7457a291c9 100644
--- a/docs/workflow/testing/coreclr/windows-test-instructions.md
+++ b/docs/workflow/testing/coreclr/windows-test-instructions.md
@@ -6,13 +6,13 @@ Building and running tests on Windows
Building coreclr tests must be done using a specific script as follows:
```
-> src\tests\build.cmd
+src\tests\build.cmd
```
## Building Precompiled Tests
```
-> src\tests\build.cmd crossgen
+src\tests\build.cmd crossgen
```
This will use `crossgen.exe` to precompile test executables before they are executed.
@@ -20,26 +20,42 @@ This will use `crossgen.exe` to precompile test executables before they are exec
## Building Specific Priority Tests
```
-> src\tests\build.cmd -priority=1
+src\tests\build.cmd -priority=1
```
The above is an example of requesting that priority '1' and below be built. The default priority value is '0'. If '1' is specified, all tests with `CLRTestPriorty` `0` **and** `1` will be built and run.
+## Generating Core_Root
+
+The `src\tests\build.cmd` script generates the Core_Root folder, which contains the test host (`corerun`), libraries, and coreclr product binaries necessary to run a test. To generate Core_Root without building the tests:
+
+```
+src\tests\build.cmd generatelayoutonly
+```
+
+The output will be at `\artifacts\tests\coreclr\windows..\Tests\Core_Root`. For example, the location for x64 checked would be: `\artifacts\tests\coreclr\windows.x64.Checked\Tests\Core_Root`
+
## Examples
-To run a priority '0' and '1' and crossgen'd test pass:
+To build crossgen'd priority '0' and '1' tests:
```
-> src\tests\build.cmd crossgen -priority=1
+src\tests\build.cmd crossgen -priority=1
+```
+
+To generate Core_Root for x86 release without building tests:
+
+```
+src\tests\build.cmd x86 Release generatelayoutonly
```
For additional supported parameters use the following:
```
-> src\tests\build.cmd -?
+src\tests\build.cmd -?
```
-### Building Individual Tests
+## Building Individual Tests
**Note:** `build.cmd skipmanaged [Any additional flags]` needs to be run at least once if the individual test has native assets.
@@ -47,18 +63,20 @@ For additional supported parameters use the following:
* Managed Test: Use `dotnet.cmd` from the root of the repo on the test project directly.
-### Running Tests
+In addition to the test assembly, this will generate a `.cmd` script next to the test assembly in the test's output folder. The test's output folder will be under `\artifacts\tests\coreclr\windows..` at a subpath based on the test's location in source.
+
+## Running Tests
Will list supported parameters.
```
-> src\tests\run.cmd /?
+src\tests\run.cmd /?
```
In order to run all of the tests using your checked build:
```
-> src\tests\run.cmd checked
+src\tests\run.cmd checked
```
This will generate a report named `TestRun__.html` (e.g. `TestRun_windows_x64_Checked.html`) in the subdirectory `\artifacts\log`. Any tests that failed will be listed in `TestRunResults_windows_x64_Checked.err`.
@@ -74,21 +92,18 @@ There are 2 files of interest:
- `Finalizer.output.txt` - Contains all the information logged by the test.
- `Finalizer.error.txt` - Contains the information reported by CoreRun.exe (which executed the test) when the test process crashes.
-### Re-run a failed test
+To re-run a failed test, follow the instructions for [running individual tests](#running-individual-tests). The test report for the failed test will contain the test command to run - for example, `\artifacts\tests\coreclr\windows.x64.Checked\Exceptions\Finalization\Finalizer.cmd`.
-If you wish to re-run a failed test, follow the following steps:
+## Running Individual Tests
-1) Set an environment variable, `CORE_ROOT`, pointing to the path to product binaries that was passed to run.cmd.
-For example using a checked build the location would be: `\artifacts\tests\coreclr\windows.x64.Checked\Tests\Core_Root`
+After [building an individual test](#building-individual-tests), to run the test:
-2) Run the failed test, the command to which is also present in the test report for a failed test. It will be something like `\artifacts\tests\coreclr\windows.x64.Checked\Exceptions\Finalization\Finalizer.cmd`.
+1) Set the `CORE_ROOT` environment variable to the [Core_Root folder](#generating-core_root).
-If you wish to run the test under a debugger (e.g. [WinDbg](http://msdn.microsoft.com/library/windows/hardware/ff551063(v=vs.85).aspx)), append `-debug ` to the test command. For example:
+2) Run the test using the `.cmd` generated for the test.
-```
-> artifacts\tests\coreclr\windows.x64.Checked\Exceptions\Finalization\Finalizer.cmd -debug
-```
+If you wish to run the test under a debugger (e.g. [WinDbg](http://msdn.microsoft.com/library/windows/hardware/ff551063(v=vs.85).aspx)), append `-debug ` to the test command.
-### Modifying a test
+## Modifying a test
-If test changes are needed, make the change, and build the test project. This will binplace the binaries in the test binaries folder (e.g. `\artifacts\tests\coreclr\windows.x64.Checked\Exceptions\Finalization`). Then re-run the test following the instructions above.
+If test changes are needed, make the change, and re-build the test project. This will binplace the binaries in the test binaries folder (e.g. `\artifacts\tests\coreclr\windows.x64.Checked\Exceptions\Finalization`). Then re-run the test following the instructions above.
\ No newline at end of file
diff --git a/docs/workflow/testing/mono/testing.md b/docs/workflow/testing/mono/testing.md
index 1bffa1de3389..be444b256177 100644
--- a/docs/workflow/testing/mono/testing.md
+++ b/docs/workflow/testing/mono/testing.md
@@ -1,54 +1,108 @@
-# Running Tests using Mono Runtime
+# Running test suites using Mono
-## Running Runtime Tests
-We currently only support running tests against coreclr. There are additional mono runtime tests in mono/mono, but they
-have not been moved over yet. Simply run the following command:
+Before running tests, [build Mono](../../building/mono/README.md) using the desired configuration.
+## Runtime Tests
+### Desktop Mono:
+
+To build the runtime tests for Mono JIT or interpreter, execute the following command from `$(REPO_ROOT)/src/tests`
+```
+./build.sh excludemonofailures
+```
+
+Run individual test:
+```
+cd ../mono/netcore
+make run-tests-coreclr CoreClrTest="bash ../../artifacts/tests/coreclr/OSX.x64.Release/JIT/opt/InstructionCombining/DivToMul/DivToMul.sh"
+```
+
+Run all tests:
+```
+cd ../mono/netcore
+make run-tests-coreclr-all
+```
+
+### WebAssembly:
+Build the runtime tests for WebAssembly
+```
+$(REPO_ROOT)/src/tests/build.sh -skipstressdependencies -excludemonofailures os Browser wasm
+```
+
+The last few lines of the build log should contain something like this:
```
-dotnet build /t:RunCoreClrTests $(REPO_ROOT)/src/mono/mono.proj
+--------------------------------------------------
+ Example run.sh command
+
+ src/tests/run.sh --coreOverlayDir=artifacts/tests/coreclr/Browser.wasm.Release/Tests/Core_Root --testNativeBinDir=/artifacts/obj/coreclr/Browser.wasm.Release/tests --testRootDir=/artifacts/tests/coreclr/Browser.wasm.Release --copyNativeTestBin Release
+--------------------------------------------------
```
-If you want to run individual tests, execute this command:
+To run all tests, execute that command, adding `wasm` to the end.
+### Android:
+Build the runtime tests for Android x64
+```
+$(REPO_ROOT)/src/tests/build.sh -skipstressdependencies -excludemonofailures os Android x64
```
-dotnet build /t:RunCoreClrTest /p:CoreClrTest="" $(REPO_ROOT)/src/mono/mono.proj
+
+The last few lines of the build log should contain something like this:
```
+--------------------------------------------------
+ Example run.sh command
-## Running Library Tests
-Running library tests against Mono is straightforward regardless of configuration. Simply run the following commands:
+ src/tests/run.sh --coreOverlayDir=artifacts/tests/coreclr/Android.x64.Release/Tests/Core_Root --testNativeBinDir=/artifacts/obj/coreclr/Android.x64.Release/tests --testRootDir=/artifacts/tests/coreclr/Android.x64.Release --copyNativeTestBin Release
+--------------------------------------------------
+```
+To run all tests, execute that command, adding `Android` at the end.
-1. Build and set the RuntimeFlavor
+### Additional Documents
+For more details about internals of the runtime tests, please refer to the [CoreCLR testing documents](../coreclr)
-```bash
-./build.sh /p:RuntimeFlavor=mono
+## Libraries tests
+### Desktop Mono
+Build and run library tests against Mono JIT or interpreter
+```
+$(REPO_ROOT)/dotnet.sh build /t:Test /p:RuntimeFlavor=mono /p:Configuration= $(REPO_ROOT)/src/libraries//tests
```
-or on Windows
-```bat
-build.cmd /p:RuntimeFlavor=mono
+Alternatively, you could execute the following command from `$(REPO_ROOT)/src/mono/netcore`
```
+make run-tests-corefx-
+```
+For example, the following command is for running System.Runtime tests:
+```
+make run-tests-corefx-System.Runtime
+```
+### Mobile targets and WebAssembly
+Build and run library tests against Webassembly, Android or iOS. See instructions located in [Library testing document folder](../libraries/)
-2. cd into the test library of your choice (`cd src/libraries//tests`)
+# Running the Mono samples
+There are a few convenient samples located in `$(REPO_ROOT)/src/mono/netcore/sample`, which could help you test your program easily with different flavors of Mono or do a sanity check on the build. The samples are set up to work with a specific configuration; please refer to the relevant Makefile for specifics. If you would like to work with a different configuration, you can edit the Makefile.
-3. Run the tests
+## Desktop Mono
+To run the desktop Mono sample, cd to `HelloWorld` and execute:
```
-dotnet build /t:Test /p:RuntimeFlavor=mono
+make run
```
+Note that the default configuration of this sample is LLVM JIT.
-# Patching Local dotnet (.dotnet-mono)
-Another way to test mono out is by 'patching' a local dotnet with our runtime bits. This is a good way to write simple
-test programs and get a glimpse of how mono will work with the dotnet tooling.
+## WebAssembly
+To run the WebAssembly sample, cd to `wasm`. There are two sub-folders `browser` and `console`. One is set up to run the progam in browser, the other is set up to run the program in console. Enter the desirable sub-folder and execute
+
+```
+make build && make run
+```
-To generate a local .dotnet-mono, execute this command:
+## Android
+To run the Android sample, cd to `Android` and execute
```
-dotnet build /t:PatchLocalMonoDotnet $(REPO_ROOT)/src/mono/mono.proj
+make run
```
-You can then, for example, run our HelloWorld sample via:
+## iOS
+To run the iOS sample, cd to `iOS` and execute
```
-dotnet build -c Release $(REPO_ROOT)/src/mono/netcore/sample/HelloWorld
-MONO_ENV_OPTIONS="" COMPlus_DebugWriteToStdErr=1 \
-$(REPO_ROOT)/.dotnet-mono/dotnet $(REPO_ROOT)/src/mono/netcore/sample/HelloWorld/bin/HelloWorld.dll
+make run
```
diff --git a/docs/workflow/trimming/feature-switches.md b/docs/workflow/trimming/feature-switches.md
index 40d3a2299f47..b0dadfd38cdf 100644
--- a/docs/workflow/trimming/feature-switches.md
+++ b/docs/workflow/trimming/feature-switches.md
@@ -15,6 +15,7 @@ configurations but their defaults might vary as any SDK can set the defaults dif
| InvariantGlobalization | System.Globalization.Invariant | All globalization specific code and data is trimmed when set to true |
| UseSystemResourceKeys | System.Resources.UseSystemResourceKeys | Any localizable resources for system assemblies is trimmed when set to true |
| HttpActivityPropagationSupport | System.Net.Http.EnableActivityPropagation | Any dependency related to diagnostics support for System.Net.Http is trimmed when set to false |
+| StartupHookSupport | System.StartupHookProvider.IsSupported | Startup hooks are disabled when set to false. Startup hook related functionality can be trimmed. |
Any feature-switch which defines property can be set in csproj file or
on the command line as any other MSBuild property. Those without predefined property name
diff --git a/eng/Configurations.props b/eng/Configurations.props
index d26beec0e3e6..09814ae0c05e 100644
--- a/eng/Configurations.props
+++ b/eng/Configurations.props
@@ -4,6 +4,11 @@
steps and in the repository.
-->
+
+
+ true
+
+
$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'src', 'libraries'))$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'src', 'coreclr'))
@@ -49,9 +54,6 @@
- $([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier)
- win-$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString().ToLowerInvariant)
-
OSXFreeBSDNetBSD
@@ -68,6 +70,109 @@
true
+
+ <_runtimeOS>$(RuntimeOS)
+
+ <_parseDistroRid>$(__DistroRid)
+ <_parseDistroRid Condition="'$(_parseDistroRid)' == '' and '$(MSBuildRuntimeType)' == 'core'">$([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier)
+ <_parseDistroRid Condition="'$(_parseDistroRid)' == '' and '$(MSBuildRuntimeType)' != 'core'">win-$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString().ToLowerInvariant)
+ <_distroRidIndex>$(_parseDistroRid.LastIndexOfAny("-"))
+
+ <_runtimeOS Condition="'$(_runtimeOS)' == ''">$(_parseDistroRid.SubString(0, $(_distroRidIndex)))
+
+
+ <_runtimeOS Condition="'$(TargetsMobile)' == 'true'">$(TargetOS.ToLowerInvariant())
+
+ <_runtimeOSVersionIndex>$(_runtimeOS.IndexOfAny(".-0123456789"))
+ <_runtimeOSFamily Condition="'$(_runtimeOSVersionIndex)' != '-1'">$(_runtimeOS.SubString(0, $(_runtimeOSVersionIndex)))
+
+ <_buildingInOSX>$([MSBuild]::IsOSPlatform('OSX'))
+ <_portableOS>linux
+ <_portableOS Condition="'$(_runtimeOS)' == 'linux-musl'">linux-musl
+ <_portableOS Condition="$(_buildingInOSX)">osx
+ <_portableOS Condition="'$(_runtimeOSFamily)' == 'win' or '$(TargetOS)' == 'windows'">win
+ <_portableOS Condition="'$(_runtimeOSFamily)' == 'FreeBSD'">freebsd
+ <_portableOS Condition="'$(_runtimeOSFamily)' == 'illumos'">illumos
+ <_portableOS Condition="'$(_runtimeOSFamily)' == 'Solaris'">solaris
+ <_portableOS Condition="'$(_runtimeOS)' == 'Browser'">browser
+ <_portableOS Condition="'$(_runtimeOS)' == 'ios'">ios
+ <_portableOS Condition="'$(_runtimeOS)' == 'tvos'">tvos
+ <_portableOS Condition="'$(_runtimeOS)' == 'android'">android
+
+ <_runtimeOS Condition="$(_runtimeOS.StartsWith('tizen'))">linux
+ <_runtimeOS Condition="'$(PortableBuild)' == 'true'">$(_portableOS)
+
+
+ <_portableOS Condition="'$(TargetOS)' == 'Unix' and '$(_runtimeOSFamily)' != 'osx' and '$(_runtimeOSFamily)' != 'FreeBSD' and '$(_runtimeOS)' != 'linux-musl' and '$(_runtimeOSFamily)' != 'illumos' and '$(_runtimeOSFamily)' != 'Solaris'">linux
+
+
+
+ <_hostArch>$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant)
+ arm
+ arm64
+ wasm
+ x64
+ x64
+
+
+
+ <_toolRuntimeRID Condition="'$(BuildingInsideVisualStudio)' == 'true'">$(_runtimeOS)-x64
+ <_toolRuntimeRID Condition="'$(_toolRuntimeRID)' == ''">$(_runtimeOS)-$(_hostArch)
+
+ <_toolRuntimeRID Condition="'$(_runtimeOS)' == 'linux-musl' and $(TargetArchitecture.StartsWith('arm')) and !$(_hostArch.StartsWith('arm'))">linux-x64
+
+
+ <_toolRuntimeRID Condition="'$(_runtimeOS)' == 'browser' and '$(TargetOS)' == 'windows'">win-x64
+ <_toolRuntimeRID Condition="'$(_runtimeOS)' == 'browser' and '$(TargetOS)' != 'windows' and $(_buildingInOSX)">osx-x64
+ <_toolRuntimeRID Condition="'$(_runtimeOS)' == 'browser' and '$(TargetOS)' != 'windows' and !$(_buildingInOSX)">linux-x64
+
+
+ <_toolRuntimeRID Condition="'$(_runtimeOS)' == 'android' and '$(TargetOS)' == 'windows'">win-x64
+ <_toolRuntimeRID Condition="'$(_runtimeOS)' == 'android' and '$(TargetOS)' != 'windows' and $(_buildingInOSX)">osx-x64
+ <_toolRuntimeRID Condition="'$(_runtimeOS)' == 'android' and '$(TargetOS)' != 'windows' and !$(_buildingInOSX)">linux-x64
+
+
+ <_toolRuntimeRID Condition="'$(_runtimeOS)' == 'ios' or '$(_runtimeOS)' == 'tvos'">osx-x64
+ $(_toolRuntimeRID)
+
+ <_packageRID Condition="'$(PortableBuild)' == 'true'">$(_portableOS)-$(TargetArchitecture)
+ $(_packageRID)
+ $(_runtimeOS)-$(TargetArchitecture)
+
+ <_outputRID Condition="'$(TargetOS)' == 'windows'">win-$(TargetArchitecture)
+ <_outputRID Condition="'$(TargetOS)' == 'OSX'">osx-$(TargetArchitecture)
+ <_outputRID Condition="'$(TargetOS)' == 'Linux'">linux-$(TargetArchitecture)
+ <_outputRID Condition="'$(TargetOS)' == 'FreeBSD'">freebsd-$(TargetArchitecture)
+ <_outputRID Condition="'$(TargetOS)' == 'NetBSD'">netbsd-$(TargetArchitecture)
+ <_outputRID Condition="'$(TargetOS)' == 'illumos'">illumos-$(TargetArchitecture)
+ <_outputRID Condition="'$(TargetOS)' == 'Solaris'">solaris-$(TargetArchitecture)
+ <_outputRID Condition="'$(TargetOS)' == 'iOS'">ios-$(TargetArchitecture)
+ <_outputRID Condition="'$(TargetOS)' == 'tvOS'">tvos-$(TargetArchitecture)
+ <_outputRID Condition="'$(TargetOS)' == 'Android'">android-$(TargetArchitecture)
+ <_outputRID Condition="'$(TargetOS)' == 'Browser'">browser-$(TargetArchitecture)
+
+ $(PackageRID)
+ $(_outputRID)
+
+
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+
+
true
@@ -76,4 +181,6 @@
false
+
+
diff --git a/eng/Signing.props b/eng/Signing.props
index 471473fc7d97..2d29ea85ea41 100644
--- a/eng/Signing.props
+++ b/eng/Signing.props
@@ -1,140 +1,85 @@
-
+
+
+
+
+
- true
+ true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+ false
+
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
diff --git a/eng/Subsets.props b/eng/Subsets.props
index 43843ea21393..d328c72ff619 100644
--- a/eng/Subsets.props
+++ b/eng/Subsets.props
@@ -7,38 +7,24 @@
Examples:
- ./build.sh CoreHost
+ ./build.sh host.native
- This builds only the .NET Core Host.
+ This builds only the .NET host.
- ./build.sh corehost installer.managed
+ ./build.sh libs+host.native
- This builds the CoreHost and also the Managed installer portion (e.g. Microsoft.NET.HostModel)
- projects. A space ' ' or '+' are the delimiters between multiple subsets to build.
+ This builds the .NET host and also the manged libraries portion.
+ A space ' ' or '+' are the delimiters between multiple subsets to build.
- ./build.sh -test installer.tests
+ ./build.sh -test host.tests
This builds and executes the installer test projects. (The '-test' argument is an Arcade SDK argument
that indicates tests should be run. Otherwise, they'll only be built.)
-
- Quirks:
-
- This command looks useful, but doesn't work as expected:
-
- ./build.sh -test /p:Subset=CoreHost-Test # (Doesn't work!)
-
- Intuitively, this should build the host, build the tests, then run the tests on the freshly
- built host. What actually happens is the tests run on a previously built host. This is because
- the depproj, pkgproj, and installer subsets process the host artifacts, and those didn't
- rebuild because those subsets were disabled.
-
- You can get around this limitation by running the corehost subset, manually copying host
- artifacts to the test layout, then running the test subset.
-->
- clr+mono+libs+installer
- mono+libs+installer
+ clr+mono+libs+host+packs
+ mono+libs+packs
@@ -54,7 +40,7 @@
- clr.runtime+clr.jit+clr.alljits+linuxdac+clr.corelib+clr.nativecorelib+clr.tools+clr.packages
+ clr.runtime+clr.jit+clr.alljits+linuxdac+clr.corelib+clr.tools+clr.nativecorelib+clr.packagesmono.llvm+mono.llvm+
@@ -63,9 +49,11 @@
libs.native+libs.ref+libs.src+libs.pretest+libs.packages
- corehost+installer.managed+installer.depprojs+installer.pkgprojs+bundles+installers+installer.tests
- installer.pkgprojs
- corehost+$(DefaultInstallerSubsets)
+ host.native+host.pkg+host.tools+host.tests
+
+ host.native
+
+ packs.product+packs.tests
@@ -73,8 +61,8 @@
<_subset>$(_subset.Replace('+clr+', '+$(DefaultCoreClrSubsets)+'))
<_subset>$(_subset.Replace('+mono+', '+$(DefaultMonoSubsets)+'))
<_subset>$(_subset.Replace('+libs+', '+$(DefaultLibrariesSubsets)+'))
- <_subset>$(_subset.Replace('+installer+', '+$(DefaultInstallerSubsets)+'))
- <_subset>$(_subset.Replace('+installer.nocorehost+', '+$(DefaultInstallerSubsets.Replace('corehost+', ''))+'))
+ <_subset>$(_subset.Replace('+host+', '+$(DefaultHostSubsets)+'))
+ <_subset>$(_subset.Replace('+packs+', '+$(DefaultPacksSubsets)+'))
<_subset>+$(_subset.Trim('+'))+
@@ -117,19 +105,21 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -191,17 +181,19 @@
-
-
-
-
-
-
+ $(CoreClrProjectRoot)src\tools\r2rtest\R2RTest.csproj;
+ $(CoreClrProjectRoot)src\tools\aot\crossgen2\crossgen2.csproj" Category="clr" />
+
+
+
+
+
+
@@ -254,57 +246,62 @@
-
-
-
-
+
+
+
+
-
+
-
-
+
-
-
-
-
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
-
-
-
-
-
-
+
-
+
-
-
+
+
-
+
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 73c906cbd86c..8381d4a5c69c 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -4,67 +4,75 @@
https://github.com/dotnet/standardcfe95a23647c7de1fe1a349343115bd7720d6949
-
+ https://github.com/dotnet/icu
- a39deb47c8f20ed5adb57cddbc83ac587413c4e4
+ f9c78959ceca029309ae76932fb441cacb9650d1
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 8fb2f6133d86c84ba1e560027e2f3288ec755ba5
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
-
+ https://github.com/dotnet/arcade
- 72b28b7e023d4c3fffa0a0b9748a7d4e8cc799be
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
+
+
+ https://github.com/dotnet/arcade
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ff
+
+
+ https://github.com/dotnet/arcade
+ 35bddd4fbfab8da3518fb920250d7c9e0c3138ffhttps://dev.azure.com/dnceng/internal/_git/dotnet-optimization
@@ -90,73 +98,73 @@
https://github.com/microsoft/vstestb195e2589980861425b331e73a859252c3f2b71a
-
+ https://github.com/dotnet/runtime-assets
- edc9df4021be1dff54b8d8be88b4bee7626cb6a5
+ 8c81a93d8914cc77a9858152c44e395b81083de5
-
+ https://github.com/dotnet/runtime-assets
- edc9df4021be1dff54b8d8be88b4bee7626cb6a5
+ 8c81a93d8914cc77a9858152c44e395b81083de5
-
+ https://github.com/dotnet/runtime-assets
- edc9df4021be1dff54b8d8be88b4bee7626cb6a5
+ 8c81a93d8914cc77a9858152c44e395b81083de5
-
+ https://github.com/dotnet/runtime-assets
- edc9df4021be1dff54b8d8be88b4bee7626cb6a5
+ 8c81a93d8914cc77a9858152c44e395b81083de5
-
+ https://github.com/dotnet/runtime-assets
- edc9df4021be1dff54b8d8be88b4bee7626cb6a5
+ 8c81a93d8914cc77a9858152c44e395b81083de5
-
+ https://github.com/dotnet/runtime-assets
- edc9df4021be1dff54b8d8be88b4bee7626cb6a5
+ 8c81a93d8914cc77a9858152c44e395b81083de5
-
+ https://github.com/dotnet/runtime-assets
- edc9df4021be1dff54b8d8be88b4bee7626cb6a5
+ 8c81a93d8914cc77a9858152c44e395b81083de5
-
+ https://github.com/dotnet/runtime-assets
- edc9df4021be1dff54b8d8be88b4bee7626cb6a5
+ 8c81a93d8914cc77a9858152c44e395b81083de5
-
+ https://github.com/dotnet/runtime-assets
- edc9df4021be1dff54b8d8be88b4bee7626cb6a5
+ 8c81a93d8914cc77a9858152c44e395b81083de5
-
+ https://github.com/dotnet/llvm-project
- d6c16bf3ec8315049ad0412a7d41e8858b5d0d13
+ 395ff4866ce6b470b4d96ee599ebf6dc57fb7dd6
-
+ https://github.com/dotnet/llvm-project
- d6c16bf3ec8315049ad0412a7d41e8858b5d0d13
+ 395ff4866ce6b470b4d96ee599ebf6dc57fb7dd6
-
+ https://github.com/dotnet/llvm-project
- d6c16bf3ec8315049ad0412a7d41e8858b5d0d13
+ 395ff4866ce6b470b4d96ee599ebf6dc57fb7dd6
-
+ https://github.com/dotnet/llvm-project
- d6c16bf3ec8315049ad0412a7d41e8858b5d0d13
+ 395ff4866ce6b470b4d96ee599ebf6dc57fb7dd6
-
+ https://github.com/dotnet/llvm-project
- d6c16bf3ec8315049ad0412a7d41e8858b5d0d13
+ 395ff4866ce6b470b4d96ee599ebf6dc57fb7dd6
-
+ https://github.com/dotnet/llvm-project
- d6c16bf3ec8315049ad0412a7d41e8858b5d0d13
+ 395ff4866ce6b470b4d96ee599ebf6dc57fb7dd6
-
+ https://github.com/dotnet/llvm-project
- d6c16bf3ec8315049ad0412a7d41e8858b5d0d13
+ 395ff4866ce6b470b4d96ee599ebf6dc57fb7dd6
-
+ https://github.com/dotnet/llvm-project
- d6c16bf3ec8315049ad0412a7d41e8858b5d0d13
+ 395ff4866ce6b470b4d96ee599ebf6dc57fb7dd6https://github.com/dotnet/runtime
@@ -186,17 +194,17 @@
https://github.com/dotnet/runtime38017c3935de95d0335bac04f4901ddfc2718656
-
+ https://github.com/mono/linker
- d8cbe373195ed3fc727d12d12eb5923b188a7990
+ 8ee2557ccbaf9e4cf243f15b8cb95da4eddb18aa
-
+ https://github.com/dotnet/xharness
- ab2eee629494e7a17592feda257b4ede4ff2fc82
+ ac9663744a551bf5e524165e1467c4fb22a80163
-
+ https://github.com/dotnet/xharness
- ab2eee629494e7a17592feda257b4ede4ff2fc82
+ ac9663744a551bf5e524165e1467c4fb22a80163
diff --git a/eng/Versions.props b/eng/Versions.props
index 5203475cead7..71d7d6e5d168 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -13,7 +13,7 @@
as for the patches and revisions should be manually updated per assembly if it is serviced. -->
- 5.0.0.0
+ 6.0.0.0falserelease
@@ -54,16 +54,18 @@
6.0.0-preview1.20513.43.8.0-4.20503.2
- 6.0.0-beta.20552.5
- 6.0.0-beta.20552.5
- 6.0.0-beta.20552.5
- 6.0.0-beta.20552.5
- 6.0.0-beta.20552.5
- 6.0.0-beta.20552.5
- 2.5.1-beta.20552.5
- 6.0.0-beta.20552.5
- 6.0.0-beta.20552.5
- 6.0.0-beta.20552.5
+ 6.0.0-beta.20573.2
+ 6.0.0-beta.20573.2
+ 6.0.0-beta.20573.2
+ 6.0.0-beta.20573.2
+ 6.0.0-beta.20573.2
+ 6.0.0-beta.20573.2
+ 2.5.1-beta.20573.2
+ 6.0.0-beta.20573.2
+ 6.0.0-beta.20573.2
+ 6.0.0-beta.20573.2
+ 6.0.0-beta.20573.2
+ 6.0.0-beta.20573.25.0.0-rc.1.20451.146.0.0-alpha.1.20501.4
@@ -105,15 +107,15 @@
4.3.05.0.0-alpha.1.19563.3
- 5.0.0-beta.20527.1
- 5.0.0-beta.20527.1
- 5.0.0-beta.20527.1
- 5.0.0-beta.20527.1
- 5.0.0-beta.20527.1
- 5.0.0-beta.20527.1
- 5.0.0-beta.20527.1
- 5.0.0-beta.20527.1
- 5.0.0-beta.20527.1
+ 5.0.0-beta.20568.1
+ 5.0.0-beta.20568.1
+ 5.0.0-beta.20568.1
+ 5.0.0-beta.20568.1
+ 5.0.0-beta.20568.1
+ 5.0.0-beta.20568.1
+ 5.0.0-beta.20568.1
+ 5.0.0-beta.20568.1
+ 5.0.0-beta.20568.12.2.0-prerelease.19564.12.0.3
@@ -141,9 +143,10 @@
4.9.44.9.4
+ 1.0.1-prerelease-0000616.8.0-release-20201022-02
- 1.0.0-prerelease.20559.2
- 1.0.0-prerelease.20559.2
+ 1.0.0-prerelease.20574.2
+ 1.0.0-prerelease.20574.22.4.12.4.21.3.0
@@ -154,18 +157,18 @@
5.0.0-preview-20201009.2
- 6.0.0-alpha.1.20560.1
+ 6.0.0-alpha.1.20561.1
- 6.0.0-alpha.1.20552.1
+ 6.0.0-alpha.1.20573.1
- 9.0.1-alpha.1.20552.1
- 9.0.1-alpha.1.20552.1
- 9.0.1-alpha.1.20552.1
- 9.0.1-alpha.1.20552.1
- 9.0.1-alpha.1.20552.1
- 9.0.1-alpha.1.20552.1
- 9.0.1-alpha.1.20552.1
- 9.0.1-alpha.1.20552.1
+ 9.0.1-alpha.1.20573.1
+ 9.0.1-alpha.1.20573.1
+ 9.0.1-alpha.1.20573.1
+ 9.0.1-alpha.1.20573.1
+ 9.0.1-alpha.1.20573.1
+ 9.0.1-alpha.1.20573.1
+ 9.0.1-alpha.1.20573.1
+ 9.0.1-alpha.1.20573.1
diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1
index bb3617133f09..a0b5fc37f438 100644
--- a/eng/common/SetupNugetSources.ps1
+++ b/eng/common/SetupNugetSources.ps1
@@ -99,8 +99,9 @@ function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $Passw
function EnablePrivatePackageSources($DisabledPackageSources) {
$maestroPrivateSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]")
ForEach ($DisabledPackageSource in $maestroPrivateSources) {
- Write-Host "`tEnsuring private source '$($DisabledPackageSource.key)' is enabled"
- $DisabledPackageSource.SetAttribute("value", "false")
+ Write-Host "`tEnsuring private source '$($DisabledPackageSource.key)' is enabled by deleting it from disabledPackageSource"
+ # Due to https://github.com/NuGet/Home/issues/10291, we must actually remove the disabled entries
+ $DisabledPackageSources.RemoveChild($DisabledPackageSource)
}
}
diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh
index ef33382954cf..2734601c13c4 100644
--- a/eng/common/SetupNugetSources.sh
+++ b/eng/common/SetupNugetSources.sh
@@ -158,8 +158,8 @@ if [ "$?" == "0" ]; then
for DisabledSourceName in ${DisabledDarcIntSources[@]} ; do
if [[ $DisabledSourceName == darc-int* ]]
then
- OldDisableValue="add key=\"$DisabledSourceName\" value=\"true\""
- NewDisableValue="add key=\"$DisabledSourceName\" value=\"false\""
+ OldDisableValue=""
+ NewDisableValue=""
sed -i.bak "s|$OldDisableValue|$NewDisableValue|" $ConfigFile
echo "Neutralized disablePackageSources entry for '$DisabledSourceName'"
fi
diff --git a/eng/common/cross/armel/armel.jessie.patch b/eng/common/cross/armel/armel.jessie.patch
new file mode 100644
index 000000000000..2d2615619351
--- /dev/null
+++ b/eng/common/cross/armel/armel.jessie.patch
@@ -0,0 +1,43 @@
+diff -u -r a/usr/include/urcu/uatomic/generic.h b/usr/include/urcu/uatomic/generic.h
+--- a/usr/include/urcu/uatomic/generic.h 2014-10-22 15:00:58.000000000 -0700
++++ b/usr/include/urcu/uatomic/generic.h 2020-10-30 21:38:28.550000000 -0700
+@@ -69,10 +69,10 @@
+ #endif
+ #ifdef UATOMIC_HAS_ATOMIC_SHORT
+ case 2:
+- return __sync_val_compare_and_swap_2(addr, old, _new);
++ return __sync_val_compare_and_swap_2((uint16_t*) addr, old, _new);
+ #endif
+ case 4:
+- return __sync_val_compare_and_swap_4(addr, old, _new);
++ return __sync_val_compare_and_swap_4((uint32_t*) addr, old, _new);
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+ return __sync_val_compare_and_swap_8(addr, old, _new);
+@@ -109,7 +109,7 @@
+ return;
+ #endif
+ case 4:
+- __sync_and_and_fetch_4(addr, val);
++ __sync_and_and_fetch_4((uint32_t*) addr, val);
+ return;
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+@@ -148,7 +148,7 @@
+ return;
+ #endif
+ case 4:
+- __sync_or_and_fetch_4(addr, val);
++ __sync_or_and_fetch_4((uint32_t*) addr, val);
+ return;
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+@@ -187,7 +187,7 @@
+ return __sync_add_and_fetch_2(addr, val);
+ #endif
+ case 4:
+- return __sync_add_and_fetch_4(addr, val);
++ return __sync_add_and_fetch_4((uint32_t*) addr, val);
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+ return __sync_add_and_fetch_8(addr, val);
diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh
index 575eee9fa190..6d59e181c8fd 100755
--- a/eng/common/cross/build-rootfs.sh
+++ b/eng/common/cross/build-rootfs.sh
@@ -336,7 +336,7 @@ elif [[ -n $__CodeName ]]; then
chroot $__RootfsDir apt-get -f -y install
chroot $__RootfsDir apt-get -y install $__UbuntuPackages
chroot $__RootfsDir symlinks -cr /usr
- chroot $__RootfsDir apt clean
+ chroot $__RootfsDir apt-get clean
if [ $__SkipUnmount == 0 ]; then
umount $__RootfsDir/* || true
@@ -348,6 +348,12 @@ elif [[ -n $__CodeName ]]; then
patch -p1 < $__CrossDir/$__BuildArch/trusty-lttng-2.4.patch
popd
fi
+
+ if [[ "$__BuildArch" == "armel" && "$__CodeName" == "jessie" ]]; then
+ pushd $__RootfsDir
+ patch -p1 < $__CrossDir/$__BuildArch/armel.jessie.patch
+ popd
+ fi
elif [[ "$__Tizen" == "tizen" ]]; then
ROOTFS_DIR=$__RootfsDir $__CrossDir/$__BuildArch/tizen-build-rootfs.sh
else
diff --git a/eng/common/performance/crossgen_perf.proj b/eng/common/performance/crossgen_perf.proj
index 48455e7aa804..eb8bdd9c440c 100644
--- a/eng/common/performance/crossgen_perf.proj
+++ b/eng/common/performance/crossgen_perf.proj
@@ -19,7 +19,7 @@
python3
- $(HelixPreCommands);chmod +x $HELIX_WORKITEM_PAYLOAD/startup/Startup;chmod +x $HELIX_WORKITEM_PAYLOAD/startup/perfcollect;sudo apt update
+ $(HelixPreCommands);chmod +x $HELIX_WORKITEM_PAYLOAD/startup/Startup;chmod +x $HELIX_WORKITEM_PAYLOAD/startup/perfcollect;sudo apt update;chmod +x $HELIX_WORKITEM_PAYLOAD/SOD/SizeOnDisk$HELIX_CORRELATION_PAYLOAD/Core_Root$HELIX_CORRELATION_PAYLOAD/performance/src/scenarios/$(ScenarioDirectory)crossgen/
diff --git a/eng/common/performance/performance-setup.sh b/eng/common/performance/performance-setup.sh
index 315815a96777..c8e211bcb1bb 100755
--- a/eng/common/performance/performance-setup.sh
+++ b/eng/common/performance/performance-setup.sh
@@ -198,6 +198,12 @@ if [[ "$internal" == true ]]; then
else
queue=Ubuntu.1804.Amd64.Tiger.Perf
fi
+else
+ if [[ "$architecture" = "arm64" ]]; then
+ queue=ubuntu.1804.armarch.open
+ else
+ queue=Ubuntu.1804.Amd64.Open
+ fi
fi
if [[ "$mono_dotnet" != "" ]] && [[ "$monointerpreter" == "false" ]]; then
diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1
index 650b13b089b2..31cf27674171 100644
--- a/eng/common/post-build/publish-using-darc.ps1
+++ b/eng/common/post-build/publish-using-darc.ps1
@@ -10,6 +10,7 @@ param(
[Parameter(Mandatory=$false)][string] $EnableNugetValidation,
[Parameter(Mandatory=$false)][string] $PublishInstallersAndChecksums,
[Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters,
+ [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters,
[Parameter(Mandatory=$false)][string] $SigningValidationAdditionalParameters
)
@@ -25,6 +26,11 @@ try {
$optionalParams.Add($ArtifactsPublishingAdditionalParameters) | Out-Null
}
+ if ("" -ne $SymbolPublishingAdditionalParameters) {
+ $optionalParams.Add("symbol-publishing-parameters") | Out-Null
+ $optionalParams.Add($SymbolPublishingAdditionalParameters) | Out-Null
+ }
+
if ("false" -eq $WaitPublishingFinish) {
$optionalParams.Add("--no-wait") | Out-Null
}
diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1
index 1728b742b3b7..1c46f7b63414 100644
--- a/eng/common/post-build/sourcelink-validation.ps1
+++ b/eng/common/post-build/sourcelink-validation.ps1
@@ -164,7 +164,7 @@ function CheckJobResult(
[ref]$ValidationFailures,
[switch]$logErrors) {
if ($result -ne '0') {
- if ($logError) {
+ if ($logErrors) {
Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links."
}
$ValidationFailures.Value++
diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml
index 06048c27907b..866967934802 100644
--- a/eng/common/templates/job/job.yml
+++ b/eng/common/templates/job/job.yml
@@ -24,7 +24,6 @@ parameters:
enablePublishBuildAssets: false
enablePublishTestResults: false
enablePublishUsingPipelines: false
- useBuildManifest: false
mergeTestResults: false
testRunTitle: ''
testResultsFormat: ''
@@ -243,12 +242,3 @@ jobs:
ArtifactName: AssetManifests
continueOnError: ${{ parameters.continueOnError }}
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
-
- - ${{ if eq(parameters.useBuildManifest, true) }}:
- - task: PublishBuildArtifacts@1
- displayName: Publish Build Manifest
- inputs:
- PathToPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/manifest.props'
- PublishLocation: Container
- ArtifactName: BuildManifests
- continueOnError: ${{ parameters.continueOnError }}
diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml
index 761fb1a29c35..41f2d96a608c 100644
--- a/eng/common/templates/post-build/post-build.yml
+++ b/eng/common/templates/post-build/post-build.yml
@@ -32,7 +32,6 @@ parameters:
symbolPublishingAdditionalParameters: ''
artifactsPublishingAdditionalParameters: ''
signingValidationAdditionalParameters: ''
- useBuildManifest: false
# Which stages should finish execution before post-build stages start
validateDependsOn:
@@ -54,9 +53,6 @@ parameters:
NETCoreExperimentalChannelId: 562
NetEngServicesIntChannelId: 678
NetEngServicesProdChannelId: 679
- Net5Preview8ChannelId: 1155
- Net5RC1ChannelId: 1157
- Net5RC2ChannelId: 1329
NetCoreSDK313xxChannelId: 759
NetCoreSDK313xxInternalChannelId: 760
NetCoreSDK314xxChannelId: 921
@@ -94,7 +90,7 @@ stages:
inputs:
filePath: $(Build.SourcesDirectory)/eng/common/post-build/check-channel-consistency.ps1
arguments: -PromoteToChannels "$(TargetChannels)"
- -AvailableChannelIds ${{parameters.NetEngLatestChannelId}},${{parameters.NetEngValidationChannelId}},${{parameters.NetDev5ChannelId}},${{parameters.NetDev6ChannelId}},${{parameters.GeneralTestingChannelId}},${{parameters.NETCoreToolingDevChannelId}},${{parameters.NETCoreToolingReleaseChannelId}},${{parameters.NETInternalToolingChannelId}},${{parameters.NETCoreExperimentalChannelId}},${{parameters.NetEngServicesIntChannelId}},${{parameters.NetEngServicesProdChannelId}},${{parameters.Net5Preview8ChannelId}},${{parameters.Net5RC1ChannelId}},${{parameters.Net5RC2ChannelId}},${{parameters.NetCoreSDK313xxChannelId}},${{parameters.NetCoreSDK313xxInternalChannelId}},${{parameters.NetCoreSDK314xxChannelId}},${{parameters.NetCoreSDK314xxInternalChannelId}},${{parameters.VS166ChannelId}},${{parameters.VS167ChannelId}},${{parameters.VS168ChannelId}},${{parameters.VSMasterChannelId}}
+ -AvailableChannelIds ${{parameters.NetEngLatestChannelId}},${{parameters.NetEngValidationChannelId}},${{parameters.NetDev5ChannelId}},${{parameters.NetDev6ChannelId}},${{parameters.GeneralTestingChannelId}},${{parameters.NETCoreToolingDevChannelId}},${{parameters.NETCoreToolingReleaseChannelId}},${{parameters.NETInternalToolingChannelId}},${{parameters.NETCoreExperimentalChannelId}},${{parameters.NetEngServicesIntChannelId}},${{parameters.NetEngServicesProdChannelId}},${{parameters.NetCoreSDK313xxChannelId}},${{parameters.NetCoreSDK313xxInternalChannelId}},${{parameters.NetCoreSDK314xxChannelId}},${{parameters.NetCoreSDK314xxInternalChannelId}},${{parameters.VS166ChannelId}},${{parameters.VS167ChannelId}},${{parameters.VS168ChannelId}},${{parameters.VSMasterChannelId}}
- job:
displayName: NuGet Validation
@@ -142,16 +138,6 @@ stages:
pool:
vmImage: 'windows-2019'
steps:
- - ${{ if eq(parameters.useBuildManifest, true) }}:
- - task: DownloadBuildArtifacts@0
- displayName: Download build manifest
- inputs:
- buildType: specific
- buildVersionToDownload: specific
- project: $(AzDOProjectName)
- pipeline: $(AzDOPipelineId)
- buildId: $(AzDOBuildId)
- artifactName: BuildManifests
- task: DownloadBuildArtifacts@0
displayName: Download Package Artifacts
inputs:
@@ -253,6 +239,7 @@ stages:
- job:
displayName: Publish Using Darc
dependsOn: setupMaestroVars
+ timeoutInMinutes: 120
variables:
- name: BARBuildId
value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
@@ -269,6 +256,8 @@ stages:
-MaestroToken '$(MaestroApiAccessToken)'
-WaitPublishingFinish ${{ parameters.waitPublishingFinish }}
-PublishInstallersAndChecksums ${{ parameters.publishInstallersAndChecksums }}
+ -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
+ -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
- ${{ if and(le(parameters.publishingInfraVersion, 2), eq(parameters.inline, 'true')) }}:
- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
@@ -303,54 +292,6 @@ stages:
shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json'
symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6-symbols/nuget/v3/index.json'
- - template: \eng\common\templates\post-build\channels\generic-internal-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'Net5_Preview8_Publish'
- channelName: '.NET 5 Preview 8'
- akaMSChannelName: 'net5/preview8'
- channelId: ${{ parameters.Net5Preview8ChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet5-internal-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet5-internal/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet5-internal-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'Net5_RC1_Publish'
- channelName: '.NET 5 RC 1'
- akaMSChannelName: 'net5/rc1'
- channelId: ${{ parameters.Net5RC1ChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'Net5_RC2_Publish'
- channelName: '.NET 5 RC 2'
- akaMSChannelName: 'net5/rc2'
- channelId: ${{ parameters.Net5RC2ChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-symbols/nuget/v3/index.json'
-
- template: \eng\common\templates\post-build\channels\generic-public-channel.yml
parameters:
BARBuildId: ${{ parameters.BARBuildId }}
diff --git a/eng/coredistools.targets b/eng/coredistools.targets
new file mode 100644
index 000000000000..0da9d1cc59b7
--- /dev/null
+++ b/eng/coredistools.targets
@@ -0,0 +1,15 @@
+
+
+
+
+ native
+ true
+
+
+
+
+ $(PkgMicrosoft_NETCore_CoreDisTools)\runtimes\win-$(TargetArchitecture)\native\coredistools.dll
+ $(PkgMicrosoft_NETCore_CoreDisTools)\runtimes\linux-$(TargetArchitecture)\native\libcoredistools.so
+ $(PkgMicrosoft_NETCore_CoreDisTools)\runtimes\osx-$(TargetArchitecture)\native\libcoredistools.dylib
+
+
diff --git a/eng/internal/NuGet.config b/eng/internal/NuGet.config
deleted file mode 100644
index 885f44c10936..000000000000
--- a/eng/internal/NuGet.config
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/eng/liveBuilds.targets b/eng/liveBuilds.targets
index 097941761a36..aeee8b277f19 100644
--- a/eng/liveBuilds.targets
+++ b/eng/liveBuilds.targets
@@ -12,41 +12,6 @@
$(LibrariesTargetOS)-$(LibrariesConfiguration)-$(TargetArchitecture)
-
-
-
- $(RuntimeIdentifier)
- $(ArtifactPlatform.Replace('win-', 'windows-'))
- $(ArtifactPlatform.Replace('unix-', 'Unix-'))
- $(ArtifactPlatform.Replace('linux-', 'Linux-'))
- $(ArtifactPlatform.Replace('osx-', 'OSX-'))
- $(ArtifactPlatform.Replace('freebsd-', 'FreeBSD-'))
- $(ArtifactPlatform.Replace('netbsd-', 'NetBSD-'))
-
- $(ArtifactPlatform.Replace('-', '_'))
-
- $([MSBuild]::NormalizeDirectory('$(AllArtifactsDownloadPath)', 'CoreCLRProduct_$(ArtifactPlatform)_$(CoreCLRConfiguration)'))
- $([MSBuild]::NormalizeDirectory('$(AllArtifactsDownloadPath)', 'MonoProduct_$(ArtifactPlatform)_$(MonoConfiguration)'))
- $([MSBuild]::NormalizeDirectory('$(AllArtifactsDownloadPath)', 'libraries_bin_$(ArtifactPlatform)_$(LibrariesConfiguration)'))
-
-
- *
-
-
$([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'artifacts', 'bin', 'coreclr', '$(CoreCLRTargetOS).$(TargetArchitecture).$(CoreCLRConfiguration)'))
@@ -116,7 +81,7 @@
Include="
$(CoreCLRSharedFrameworkPdbDir)*.pdb;
$(CoreCLRSharedFrameworkPdbDir)*.dbg;
- $(CoreCLRSharedFrameworkPdbDir)*.dwarf" />
+ $(CoreCLRSharedFrameworkPdbDir)*.dwarf" IsNative="true" />
runtime/$(CoreCLRCrossTargetComponentDirName)_$(TargetArchitecture)/native
+ true
@@ -200,7 +166,9 @@
+
+ lib
+
+
-
+
- .exe
-
- .dll
- .lib
- .pdb
+ .exe
+ .dll
+ .lib
+ .pdb
-
+
- lib
- .dylib
- .a
- .dwarf
+ lib
+ .dylib
+ .a
+ .dwarf
-
+
- lib
- .so
- .a
+ lib
+ .so
+ .a
- .debug
+ .debug
- lib
- .so
- .a
- .dbg
+ lib
+ .so
+ .a
+ .dbg
-
-
+
+
+
+
+ $(SymbolsSuffix)
+
+
diff --git a/eng/pipelines/common/download-artifact-step.yml b/eng/pipelines/common/download-artifact-step.yml
index 6bb0462b4970..b3f497392ed5 100644
--- a/eng/pipelines/common/download-artifact-step.yml
+++ b/eng/pipelines/common/download-artifact-step.yml
@@ -19,6 +19,6 @@ steps:
- task: ExtractFiles@1
displayName: 'Unzip ${{ parameters.displayName }}'
inputs:
- archiveFilePatterns: $(Build.SourcesDirectory)/__download__/${{ parameters.artifactName }}/${{ parameters.artifactFileName }}
+ archiveFilePatterns: $(Build.SourcesDirectory)/__download__/${{ parameters.artifactName }}/**/${{ parameters.artifactFileName }}
destinationFolder: ${{ parameters.unpackFolder }}
cleanDestinationFolder: ${{ parameters.cleanUnpackFolder }}
diff --git a/eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
index 606a4418b27a..b5390fda2a57 100644
--- a/eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
+++ b/eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
@@ -25,7 +25,7 @@ parameters:
steps:
- - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) /p:LibrariesConfiguration=${{ parameters.buildConfig }} -ci -skipstressdependencies -excludemonofailures os Android x64 $(buildConfigUpper)
+ - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) /p:LibrariesConfiguration=${{ parameters.buildConfig }} -ci -excludemonofailures os Android x64 $(buildConfigUpper)
displayName: Build Tests
# Send tests to Helix
diff --git a/eng/pipelines/common/templates/runtimes/build-test-job.yml b/eng/pipelines/common/templates/runtimes/build-test-job.yml
index f28ce14ce2cc..313cb5e7cea3 100644
--- a/eng/pipelines/common/templates/runtimes/build-test-job.yml
+++ b/eng/pipelines/common/templates/runtimes/build-test-job.yml
@@ -120,7 +120,7 @@ jobs:
displayName: Disk Usage before Build
# Build managed test components
- - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) allTargets skipstressdependencies skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(crossArg) $(priorityArg) ci $(librariesOverrideArg)
+ - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) allTargets skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(crossArg) $(priorityArg) ci $(librariesOverrideArg)
displayName: Build managed test components
- ${{ if in(parameters.osGroup, 'OSX', 'iOS','tvOS') }}:
diff --git a/eng/pipelines/common/templates/runtimes/run-test-job.yml b/eng/pipelines/common/templates/runtimes/run-test-job.yml
index c3d448182563..66f3b40d7e84 100644
--- a/eng/pipelines/common/templates/runtimes/run-test-job.yml
+++ b/eng/pipelines/common/templates/runtimes/run-test-job.yml
@@ -247,7 +247,7 @@ jobs:
# and directly unzip them there after download). Unfortunately the logic to copy
# the native artifacts to the final test folders is dependent on availability of the
# managed test artifacts.
- - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) skipstressdependencies copynativeonly $(crossgenArg) $(buildConfig) $(archType) $(priorityArg) $(librariesOverrideArg)
+ - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) copynativeonly $(crossgenArg) $(buildConfig) $(archType) $(priorityArg) $(librariesOverrideArg)
displayName: Copy native test components to test output folder
@@ -472,6 +472,7 @@ jobs:
- jitobjectstackallocation
- jitpgo
- jitpgo_inline
+ - jitpgo_classes
${{ if in(parameters.testGroup, 'ilasm') }}:
scenarios:
- ilasmroundtrip
diff --git a/eng/pipelines/common/templates/runtimes/wasm-runtime-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/wasm-runtime-and-send-to-helix.yml
index 79db36072669..462fe6533108 100644
--- a/eng/pipelines/common/templates/runtimes/wasm-runtime-and-send-to-helix.yml
+++ b/eng/pipelines/common/templates/runtimes/wasm-runtime-and-send-to-helix.yml
@@ -31,7 +31,7 @@ parameters:
steps:
- - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) /p:LibrariesConfiguration=${{ parameters.buildConfig }} -ci -skipstressdependencies -excludemonofailures os Browser wasm $(buildConfigUpper)
+ - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) /p:LibrariesConfiguration=${{ parameters.buildConfig }} -ci -excludemonofailures os Browser wasm $(buildConfigUpper)
displayName: Build Tests
# Send tests to Helix
diff --git a/eng/pipelines/common/upload-intermediate-artifacts-step.yml b/eng/pipelines/common/upload-intermediate-artifacts-step.yml
new file mode 100644
index 000000000000..a0741b7b6820
--- /dev/null
+++ b/eng/pipelines/common/upload-intermediate-artifacts-step.yml
@@ -0,0 +1,20 @@
+parameters:
+ name: ''
+
+steps:
+- task: CopyFiles@2
+ displayName: Prepare job-specific intermediate artifacts subdirectory
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)'
+ Contents: |
+ Shipping/**/*
+ NonShipping/**/*
+ TargetFolder: '$(Build.StagingDirectory)/IntermediateArtifacts/${{ parameters.name }}'
+ CleanTargetFolder: true
+
+- task: PublishBuildArtifacts@1
+ displayName: Publish intermediate artifacts
+ inputs:
+ pathToPublish: '$(Build.StagingDirectory)/IntermediateArtifacts'
+ artifactName: IntermediateArtifacts
+ artifactType: container
diff --git a/eng/pipelines/common/upload-unsigned-artifacts-step.yml b/eng/pipelines/common/upload-unsigned-artifacts-step.yml
deleted file mode 100644
index c4fea2adaa63..000000000000
--- a/eng/pipelines/common/upload-unsigned-artifacts-step.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-parameters:
- name: ''
-
-steps:
-- task: CopyFiles@2
- displayName: Prepare job-specific intermediate unsigned artifacts subdirectory
- inputs:
- SourceFolder: '$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)'
- Contents: |
- Shipping/**/*
- NonShipping/**/*
- TargetFolder: '$(Build.StagingDirectory)/UnsignedArtifacts/${{ parameters.name }}'
- CleanTargetFolder: true
-
-- task: PublishBuildArtifacts@1
- displayName: Publish intermediate unsigned artifacts
- inputs:
- pathToPublish: '$(Build.StagingDirectory)/UnsignedArtifacts'
- artifactName: IntermediateUnsignedArtifacts
- artifactType: container
diff --git a/eng/pipelines/coreclr/perf.yml b/eng/pipelines/coreclr/perf.yml
index a80e985fef1d..320caffd43ae 100644
--- a/eng/pipelines/coreclr/perf.yml
+++ b/eng/pipelines/coreclr/perf.yml
@@ -36,6 +36,7 @@ jobs:
- Linux_x64
- windows_x64
- windows_x86
+ - Linux_arm64
jobParameters:
testGroup: perf
@@ -48,7 +49,7 @@ jobs:
platforms:
- Browser_wasm
jobParameters:
- buildArgs: -s mono+libs+installer -c $(_BuildConfig)
+ buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: wasm
isOfficialBuild: ${{ variables.isOfficialBuild }}
extraStepsTemplate: /eng/pipelines/common/upload-artifact-step.yml
@@ -130,6 +131,7 @@ jobs:
- Linux_x64
- windows_x64
- windows_x86
+ - Linux_arm64
jobParameters:
testGroup: perf
liveLibrariesBuildConfig: Release
diff --git a/eng/pipelines/coreclr/superpmi.yml b/eng/pipelines/coreclr/superpmi.yml
index 3ae264540b1f..6535309297f4 100644
--- a/eng/pipelines/coreclr/superpmi.yml
+++ b/eng/pipelines/coreclr/superpmi.yml
@@ -1,4 +1,17 @@
-trigger: none
+# This job definition automates the SuperPMI collection process.
+
+# Trigger this job if the JIT-EE GUID changes, which invalidates previous SuperPMI
+# collections. As a proxy for determining if the JIT-EE GUID has changed, we just
+# trigger if the file containing the GUID definition changes, which almost always
+# corresponds to the GUID itself changing.
+trigger:
+ batch: true
+ branches:
+ include:
+ - master
+ paths:
+ include:
+ - src/coreclr/src/inc/corinfo.h
pr: none
diff --git a/eng/pipelines/coreclr/templates/build-job.yml b/eng/pipelines/coreclr/templates/build-job.yml
index beb779bc605b..dae8c8a19177 100644
--- a/eng/pipelines/coreclr/templates/build-job.yml
+++ b/eng/pipelines/coreclr/templates/build-job.yml
@@ -111,7 +111,7 @@ jobs:
- ${{ if eq(parameters.testGroup, 'clrinterpreter') }}:
- name: clrInterpreterBuildArg
value: '-cmakeargs "-DFEATURE_INTERPRETER=1"'
-
+
- name: clrBuildPALTestsBuildArg
value: ''
- ${{ if ne(parameters.testGroup, 'innerloop') }}:
@@ -124,6 +124,9 @@ jobs:
- name: ninjaArg
value: '-ninja'
+ - name: SignType
+ value: $[ coalesce(variables.OfficialSignType, 'real') ]
+
- ${{ parameters.variables }}
steps:
@@ -147,6 +150,17 @@ jobs:
- ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
- template: /eng/pipelines/common/restore-internal-tools.yml
+ # Install MicroBuild for signing the DAC and DBI
+ - ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(parameters.signBinaries, true), eq(parameters.osGroup, 'windows')) }}:
+ - task: MicroBuildSigningPlugin@2
+ displayName: Install MicroBuild plugin for Signing
+ inputs:
+ signType: $(SignType)
+ zipSources: false
+ feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
+ continueOnError: false
+ condition: and(succeeded(), in(variables['SignType'], 'real', 'test'))
+
- ${{ if in(parameters.osGroup, 'OSX', 'iOS','tvOS') }}:
- script: |
du -sh $(Build.SourcesDirectory)/*
@@ -156,7 +170,7 @@ jobs:
# Build DacTableGen (Windows-only)
- ${{ if eq(parameters.osGroup, 'windows') }}:
- script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -subset clr.dactools $(crossArg) -arch $(archType) $(osArg) -c $(buildConfig) $(officialBuildIdArg) -ci /bl:$(Build.SourcesDirectory)artifacts/logs/$(buildConfig)/DacTools.binlog
- displayName: Build managed product components and packages
+ displayName: Build DAC utility tools
# Build CoreCLR Runtime
- ${{ if ne(parameters.osGroup, 'windows') }}:
@@ -183,7 +197,7 @@ jobs:
# Build native test components
- ${{ if ne(parameters.isOfficialBuild, true) }}:
- - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) skipstressdependencies skipmanaged skipgeneratelayout $(buildConfig) $(archType) $(crossArg) $(osArg) $(priorityArg) $(compilerArg)
+ - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) skipmanaged skipgeneratelayout $(buildConfig) $(archType) $(crossArg) $(osArg) $(priorityArg) $(compilerArg)
displayName: Build native test components
# Sign and add entitlements to these MacOS binaries
@@ -208,10 +222,15 @@ jobs:
targetFolder: $(buildProductRootFolderPath)/sharedFramework
overWrite: true
- # Sign on Windows
- - ${{ if and(eq(parameters.osGroup, 'windows'), eq(parameters.signBinaries, 'true'), ne(parameters.testGroup, 'clrTools')) }}:
- - powershell: eng\common\build.ps1 -ci -sign -restore -configuration:$(buildConfig) -warnaserror:0 /p:ArcadeBuild=true /p:OfficialBuild=true /p:TargetOS=$(osGroup) /p:TargetArchitecture=$(archType) /p:Configuration=$(_BuildConfig) /p:DotNetSignType=$env:_SignType -projects $(Build.SourcesDirectory)\eng\empty.csproj
- displayName: Sign Binaries
+ # Sign diagnostic files on Windows
+ - ${{ if and(eq(parameters.osGroup, 'windows'), eq(parameters.signBinaries, true)) }}:
+ - powershell: >-
+ eng\common\build.ps1 -ci -sign -restore -configuration:$(buildConfig) -warnaserror:0 $(officialBuildIdArg)
+ /p:DiagnosticsFilesRoot="$(buildProductRootFolderPath)"
+ /p:SignDiagnostics=true
+ /p:DotNetSignType=$(SignType)
+ -projects $(Build.SourcesDirectory)\eng\empty.csproj
+ displayName: Sign Diagnostic Binaries
- task: PublishPipelineArtifact@1
displayName: Publish Signing Logs
@@ -264,7 +283,7 @@ jobs:
# Save packages using the prepare-signed-artifacts format.
- ${{ if and(eq(parameters.isOfficialBuild, true), ne(parameters.testGroup, 'clrTools')) }}:
- - template: /eng/pipelines/common/upload-unsigned-artifacts-step.yml
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
parameters:
name: ${{ parameters.platform }}
diff --git a/eng/pipelines/coreclr/templates/crossdac-build.yml b/eng/pipelines/coreclr/templates/crossdac-build.yml
index 216485692c64..575e09f3c31b 100644
--- a/eng/pipelines/coreclr/templates/crossdac-build.yml
+++ b/eng/pipelines/coreclr/templates/crossdac-build.yml
@@ -5,16 +5,12 @@ parameters:
steps:
# Always build the crossdac, that way we know in CI/PR if things break to build.
- - ${{ if eq(parameters.osGroup, 'windows') }}:
- - ${{ if notin(parameters.archType, 'x86') }}:
- - script: set __TestIntermediateDir=int&&$(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) -ci -linuxdac $(officialBuildIdArg)
- displayName: Build Cross OS Linux DAC for Windows
+ - ${{ if and(eq(parameters.osGroup, 'windows'), notin(parameters.archType, 'x86')) }}:
+ - script: set __TestIntermediateDir=int&&$(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) -ci -linuxdac $(officialBuildIdArg)
+ displayName: Build Cross OS Linux DAC for Windows
-
- - ${{ if eq(parameters.osGroup, 'windows') }}:
- - ${{ if notin(parameters.archType, 'x86') }}:
- - script: set __TestIntermediateDir=int&&$(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) -ci -alpinedac $(officialBuildIdArg)
- displayName: Build Cross OS Linux-musl DAC for Windows
+ - script: set __TestIntermediateDir=int&&$(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) -ci -alpinedac $(officialBuildIdArg)
+ displayName: Build Cross OS Linux-musl DAC for Windows
- task: CopyFiles@2
displayName: Gather CrossDac Artifacts (Linux)
diff --git a/eng/pipelines/coreclr/templates/crossdac-pack.yml b/eng/pipelines/coreclr/templates/crossdac-pack.yml
index f876a85d33fe..4309baa32036 100644
--- a/eng/pipelines/coreclr/templates/crossdac-pack.yml
+++ b/eng/pipelines/coreclr/templates/crossdac-pack.yml
@@ -42,6 +42,8 @@ jobs:
value: '/p:OfficialBuildId=$(Build.BuildNumber)'
- name: crossDacArgs
value: '/p:CrossDacArtifactsDir=$(crossDacArtifactPath)/$(buildCrossDacArtifactName)'
+ - name: SignType
+ value: $[ coalesce(variables.OfficialSignType, 'real') ]
- ${{ parameters.variables }}
dependsOn:
@@ -50,6 +52,19 @@ jobs:
- ${{ parameters.runtimeFlavor }}_${{ parameters.runtimeVariant }}_product_build_${{ platform }}_${{ parameters.buildConfig }}
steps:
+ # Install MicroBuild for signing the package
+ - ${{ if eq(parameters.isOfficialBuild, true) }}:
+ - template: /eng/pipelines/common/restore-internal-tools.yml
+
+ - task: MicroBuildSigningPlugin@2
+ displayName: Install MicroBuild plugin for Signing
+ inputs:
+ signType: $(SignType)
+ zipSources: false
+ feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
+ continueOnError: false
+ condition: and(succeeded(), in(variables['SignType'], 'real', 'test'))
+
- task: DownloadBuildArtifacts@0
displayName: Download CrossDac artifacts
inputs:
@@ -59,8 +74,18 @@ jobs:
- script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -subset crossdacpack -arch $(archType) $(osArg) -c $(buildConfig) $(officialBuildIdArg) $(crossDacArgs) -ci
displayName: Build crossdac packaging
+ # Sign diagnostic files
+ - ${{ if eq(parameters.isOfficialBuild, true) }}:
+ - powershell: >-
+ eng\common\build.ps1 -ci -sign -restore -configuration:$(buildConfig) -warnaserror:0 $(officialBuildIdArg)
+ /p:PackagesFolder="$(Build.SourcesDirectory)/artifacts/packages/$(buildConfig)"
+ /p:SignDiagnosticsPackages=true
+ /p:DotNetSignType=$(SignType)
+ -projects $(Build.SourcesDirectory)\eng\empty.csproj
+ displayName: Sign CrossDac package and contents
+
# Save packages using the prepare-signed-artifacts format.
- - template: /eng/pipelines/common/upload-unsigned-artifacts-step.yml
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
parameters:
name: ${{ parameters.platform }}
diff --git a/eng/pipelines/installer/jobs/base-job.yml b/eng/pipelines/installer/jobs/base-job.yml
index 5ace7f310d47..50db8eeaacd2 100644
--- a/eng/pipelines/installer/jobs/base-job.yml
+++ b/eng/pipelines/installer/jobs/base-job.yml
@@ -21,19 +21,13 @@ parameters:
packageDistroList:
- image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-14.04-debpkg-e5cf912-20175003025046
- imageRid: ubuntu.14.04
- rids: []
+ packageType: deb
+ packagingArgs: /p:BuildDebPackage=true
- image: mcr.microsoft.com/dotnet-buildtools/prereqs:rhel-7-rpmpkg-c982313-20174116044113
- imageRid: rhel.7
- rids:
- - centos.7
- - fedora.27
- - opensuse.42
- - oraclelinux.7
- - sles.12
+ packageType: rpm
+ packagingArgs: /p:BuildRpmPackage=true
isOfficialBuild: false
- useOfficialAllConfigurations: false
buildFullPlatformManifest: false
liveRuntimeBuildConfig: ''
@@ -117,7 +111,7 @@ jobs:
- name: BaseJobBuildCommand
value: >-
- build.cmd -subset installer -ci
+ build.cmd -subset host+packs -ci
$(BuildAction)
-configuration $(_BuildConfig)
$(LiveOverridePathArgs)
@@ -155,7 +149,7 @@ jobs:
- name: BaseJobBuildCommand
value: >-
- $(Build.SourcesDirectory)/build.sh -subset installer -ci
+ $(Build.SourcesDirectory)/build.sh -subset packs -ci
$(BuildAction)
-configuration $(_BuildConfig)
-os ${{ parameters.osGroup }}
@@ -191,7 +185,7 @@ jobs:
- ${{ if eq(parameters.isOfficialBuild, true) }}:
- name: BuildScript
- value: ./eng/install-nuget-credprovider-then-build.sh --subset installer
+ value: ./eng/install-nuget-credprovider-then-build.sh --subset host+packs
- name: MSBuildScript
value: /root/runtime/eng/install-nuget-credprovider-then-msbuild.sh
@@ -217,7 +211,7 @@ jobs:
- name: BuildArguments
value: >-
- -subset installer -ci
+ -subset host+packs -ci
$(BuildAction)
/p:CrossBuild=${{ parameters.crossBuild }}
/p:PortableBuild=$(_PortableBuild)
@@ -233,23 +227,15 @@ jobs:
$(OutputRidArg)
/bl:msbuild.publish.binlog
- # Tell the build to package up the bits from the portable build.
- - name: PackagePortableBitsArgs
- value: >-
- /p:PortableBuild=false
- /p:SharedFrameworkPublishDir=/root/sharedFrameworkPublish/
- /p:InstallerSourceOSPlatformConfig=linux-x64.$(_BuildConfig)
-
- name: DockerRunMSBuild
value: >-
docker run
-v $(Build.SourcesDirectory):/root/runtime
- -v $(Build.StagingDirectory)/sharedFrameworkPublish/:/root/sharedFrameworkPublish/
-w=/root/runtime
$(PreserveNuGetAuthDockerArgs)
- name: installersSubsetArg
- value: --subset Installers
+ value: --subset packs.installers
- name: BaseJobBuildCommand
value: |
@@ -265,26 +251,16 @@ jobs:
value: >-
$(RuntimeArtifactsArgs)
$(LibrariesConfigurationArg)
- $(LibrariesAllConfigurationsOverridePathArg)
- $(AllArtifactsArgs)
- name: RuntimeArtifactsArgs
value: ''
- name: LibrariesConfigurationArg
value: ''
- - name: LibrariesAllConfigurationsOverridePathArg
- value: ''
- - name: AllArtifactsArgs
- value: ''
- name: RuntimeDownloadPath
value: ''
- name: LibrariesDownloadPath
value: ''
- - name: LibrariesDownloadPathAllConfigurations
- value: ''
- - name: AllArtifactsDownloadPath
- value: ''
- ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
- name: liveRuntimeLegName
@@ -316,60 +292,23 @@ jobs:
- name: LibrariesConfigurationArg
value: ' /p:LibrariesConfiguration=${{ parameters.liveLibrariesBuildConfig }}'
- # Download allconfigurations bits to a separate location. It overlaps with the live libraries
- # download and causes conflict when unzipping to the same location.
- - ${{ if eq(parameters.useOfficialAllConfigurations, true) }}:
- - name: LibrariesDownloadPathAllConfigurations
- value: 'artifacts/transport/librariesallconfigurations'
- - name: LibrariesAllConfigurationsOverridePathArg
- value: /p:LibrariesAllConfigurationsOverridePath=${{ parameters.buildCommandSourcesDirectory }}$(LibrariesDownloadPathAllConfigurations)
- - name: LibrariesArtifactNameAllConfigurations
- value: libraries_bin_official_allconfigurations
-
- # Download all upstream platforms and incorporate in the platform manifest.
- - ${{ if eq(parameters.buildFullPlatformManifest, true) }}:
- - name: AllArtifactsDownloadPath
- value: 'artifacts/transport/AllArtifacts'
- - name: AllArtifactsArgs
- value: >-
- /p:AllArtifactsDownloadPath=${{ parameters.buildCommandSourcesDirectory }}$(AllArtifactsDownloadPath)
- /p:BuildFullPlatformManifest=true
-
dependsOn:
- checkout
- ${{ parameters.dependsOn }}
- - ${{ if eq(parameters.dependsOnGlobalBuild, false) }}:
- - ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
- - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}',
- parameters.runtimeFlavor,
- parameters.runtimeVariant,
- parameters.osGroup,
- parameters.osSubgroup,
- parameters.archType,
- parameters.liveRuntimeBuildConfig) }}
- - ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
- - libraries_build_${{ format('{0}{1}_{2}_{3}',
- parameters.osGroup,
- parameters.osSubgroup,
- parameters.archType,
- parameters.liveLibrariesBuildConfig) }}
- - ${{ if eq(parameters.useOfficialAllConfigurations, true) }}:
- - libraries_build_allconfigurations_windows_x64_Release
- - ${{ if eq(parameters.buildFullPlatformManifest, true) }}:
- - ${{ each platform in parameters.platforms }}:
- - ${{ parameters.runtimeFlavor }}_${{ parameters.runtimeVariant }}_product_build_${{ platform }}_${{ parameters.liveRuntimeBuildConfig }}
- - libraries_build_${{ platform }}_${{ parameters.liveLibrariesBuildConfig }}
-
- - ${{ if eq(parameters.dependsOnGlobalBuild, true) }}:
- - ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
- - ${{ format('build_{0}{1}_{2}_{3}_{4}',
- parameters.osGroup,
- parameters.osSubgroup,
- parameters.archType,
- parameters.liveRuntimeBuildConfig,
- parameters.globalBuildSuffix) }}
- - ${{ if eq(parameters.useOfficialAllConfigurations, true) }}:
- - build_windows_x64_${{ parameters.liveLibrariesBuildConfig }}_AllConfigurations
+ - ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
+ - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}',
+ parameters.runtimeFlavor,
+ parameters.runtimeVariant,
+ parameters.osGroup,
+ parameters.osSubgroup,
+ parameters.archType,
+ parameters.liveRuntimeBuildConfig) }}
+ - ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
+ - libraries_build_${{ format('{0}{1}_{2}_{3}',
+ parameters.osGroup,
+ parameters.osSubgroup,
+ parameters.archType,
+ parameters.liveLibrariesBuildConfig) }}
steps:
@@ -408,36 +347,6 @@ jobs:
- template: /eng/pipelines/common/clone-checkout-bundle-step.yml
- # Download and extract artifacts for earlier subsets.
- - task: DownloadBuildArtifacts@0
- displayName: 'Download artifacts for all platforms'
- inputs:
- buildType: current
- downloadType: specific
- downloadPath: '$(Build.SourcesDirectory)/__download__/AllPlatforms/'
- allowPartiallySucceededBuilds: true
- itemPattern: |
- $(runtimeFlavorName)Product_*/**
- libraries_bin_*/**
- !*Logs*
-
- - ${{ if eq(parameters.buildFullPlatformManifest, true) }}:
- - ${{ each platform in parameters.platforms }}:
- - task: ExtractFiles@1
- displayName: 'Unzip $(runtimeFlavorName) artifacts: ${{ platform }}'
- inputs:
- archiveFilePatterns: |
- $(Build.SourcesDirectory)/__download__/AllPlatforms/**/$(runtimeFlavorName)Product_${{ platform }}_${{ parameters.liveRuntimeBuildConfig }}.*
- destinationFolder: $(AllArtifactsDownloadPath)/$(runtimeFlavorName)Product_${{ platform }}_${{ parameters.liveRuntimeBuildConfig }}/
- cleanUnpackFolder: false
- - task: ExtractFiles@1
- displayName: 'Unzip Libraries artifacts: ${{ platform }}'
- inputs:
- archiveFilePatterns: |
- $(Build.SourcesDirectory)/__download__/AllPlatforms/**/libraries_bin_${{ platform }}_${{ parameters.liveLibrariesBuildConfig }}.*
- destinationFolder: $(AllArtifactsDownloadPath)/libraries_bin_${{ platform }}_${{ parameters.liveLibrariesBuildConfig }}/
- cleanUnpackFolder: false
-
- ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
- template: /eng/pipelines/common/download-artifact-step.yml
parameters:
@@ -455,16 +364,6 @@ jobs:
displayName: 'Libraries artifacts'
cleanUnpackFolder: false
- - ${{ if eq(parameters.useOfficialAllConfigurations, true) }}:
- - template: /eng/pipelines/common/download-artifact-step.yml
- parameters:
- unpackFolder: $(Build.SourcesDirectory)/$(LibrariesDownloadPathAllConfigurations)
- # Always use '.zip' because AllConfigurations is built on Windows but used everywhere.
- artifactFileName: '$(LibrariesArtifactNameAllConfigurations).zip'
- artifactName: '$(LibrariesArtifactNameAllConfigurations)'
- displayName: 'Libraries artifacts (AllConfigurations)'
- cleanUnpackFolder: false
-
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
- script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }} ${{ parameters.archType }} azDO
displayName: Install Build Dependencies
@@ -481,7 +380,7 @@ jobs:
# Build corehost, sign and add entitlements to MacOS binaries
- ${{ if eq(parameters.osGroup, 'OSX') }}:
- - script: $(BaseJobBuildCommand) -subset corehost
+ - script: $(BaseJobBuildCommand) -subset host.native
displayName: Build CoreHost
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
@@ -495,7 +394,7 @@ jobs:
path: $(Build.SourcesDirectory)/artifacts/bin/osx-${{ parameters.archType }}.$(_BuildConfig)/corehost
entitlementsFile: $(Build.SourcesDirectory)/eng/pipelines/common/entitlements.plist
- - script: $(BaseJobBuildCommand) -subset installer.nocorehost
+ - script: $(BaseJobBuildCommand) -subset host.pkg+host.tools+packs
displayName: Build and Package
- ${{ if in(parameters.osGroup, 'OSX', 'iOS','tvOS') }}:
@@ -506,33 +405,17 @@ jobs:
# Only in glibc leg, we produce RPMs and Debs
- ${{ if and(eq(parameters.runtimeFlavor, 'coreclr'), eq(parameters.platform, 'Linux_x64'), eq(parameters.osSubgroup, ''))}}:
- - task: CopyFiles@2
- displayName: 'Copy built Portable linux-x64 binaries to staging directory'
- inputs:
- SourceFolder: '$(Build.SourcesDirectory)/artifacts/obj/linux-x64.$(_BuildConfig)/sharedFrameworkPublish'
- TargetFolder: '$(Build.StagingDirectory)/sharedFrameworkPublish'
-
- ${{ each packageBuild in parameters.packageDistroList }}:
# This leg's RID matches the build image. Build its distro-dependent packages, as well as
# the distro-independent installers. (There's no particular reason to build the distro-
# independent installers on this leg, but we need to do it somewhere.)
- template: steps/build-linux-package.yml
parameters:
- distroRid: ${{ packageBuild.imageRid }}
+ packageType: ${{ packageBuild.packageType }}
image: ${{ packageBuild.image }}
packageStepDescription: Runtime Deps, Runtime, Framework Packs installers
subsetArg: $(installersSubsetArg)
-
- - ${{ each rid in packageBuild.rids }}:
- # Build distro-dependent packages.
- - template: steps/build-linux-package.yml
- parameters:
- distroRid: ${{ rid }}
- image: ${{ packageBuild.image }}
- outputRidArg: /p:OutputRid=${{ rid }}-${{ parameters.archType }}
- packageStepDescription: Runtime Deps installers
- packagingArgs: /p:BuildDistroIndependentInstallers=false
- subsetArg: $(installersSubsetArg)
+ packagingArgs: ${{ packageBuild.packagingArgs }}
- ${{ if ne(parameters.container, '') }}:
# Files may be owned by root because builds don't set user ID. Later build steps run 'find' in
@@ -560,7 +443,8 @@ jobs:
condition: and(
succeeded(),
eq(variables['_BuildConfig'], 'Release'),
- ne(variables['DisableVSPublish'], 'true'))
+ ne(variables['DisableVSPublish'], 'true'),
+ ne(variables['PostBuildSign'], 'true'))
- template: steps/upload-job-artifacts.yml
parameters:
diff --git a/eng/pipelines/installer/jobs/steps/build-linux-package.yml b/eng/pipelines/installer/jobs/steps/build-linux-package.yml
index e0129ccff631..95bae9624037 100644
--- a/eng/pipelines/installer/jobs/steps/build-linux-package.yml
+++ b/eng/pipelines/installer/jobs/steps/build-linux-package.yml
@@ -1,7 +1,6 @@
parameters:
- distroRid: null
+ packageType: null
image: null
- outputRidArg: ''
packageStepDescription: null
packagingArgs: ''
subsetArg: ''
@@ -13,12 +12,8 @@ steps:
$(DockerRunMSBuild) ${{ parameters.image }} $(BuildScript) \
--ci \
${{ parameters.subsetArg }} \
- /p:UsePrebuiltPortableBinariesForInstallers=true \
- $(PackagePortableBitsArgs) \
- /p:GenerateProjectInstallers=true \
${{ parameters.packagingArgs }} \
$(CommonMSBuildArgs) \
- ${{ parameters.outputRidArg }} \
$(LiveOverridePathArgs) \
- /bl:artifacts/log/$(_BuildConfig)/msbuild.${{ parameters.distroRid }}.installers.binlog
- displayName: Package ${{ parameters.packageStepDescription }} - ${{ parameters.distroRid }}
+ /bl:artifacts/log/$(_BuildConfig)/msbuild.${{ parameters.packageType }}.installers.binlog
+ displayName: Package ${{ parameters.packageStepDescription }} - ${{ parameters.packageType }}
diff --git a/eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml b/eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml
index 884ca0177e7f..30032b7da22e 100644
--- a/eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml
+++ b/eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml
@@ -7,7 +7,7 @@ parameters:
steps:
# Upload build artifacts (packages) to pipeline only if official, to save storage space.
- ${{ if eq(parameters.isOfficialBuild, true) }}:
- - template: /eng/pipelines/common/upload-unsigned-artifacts-step.yml
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
parameters:
name: ${{ parameters.name }}
diff --git a/eng/pipelines/libraries/build-job.yml b/eng/pipelines/libraries/build-job.yml
index d21a511d148a..c0dd92d3e055 100644
--- a/eng/pipelines/libraries/build-job.yml
+++ b/eng/pipelines/libraries/build-job.yml
@@ -129,7 +129,7 @@ jobs:
# platform-specific jobs' nupkgs automatically flow through the matching platform-specific
# Installer build, but AllConfigurations should only be uploaded once, here.
- ${{ if eq(parameters.isOfficialAllConfigurations, true) }}:
- - template: /eng/pipelines/common/upload-unsigned-artifacts-step.yml
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
parameters:
name: Libraries_AllConfigurations
diff --git a/eng/pipelines/libraries/helix.yml b/eng/pipelines/libraries/helix.yml
index 02f2086a1a47..706f82e19b06 100644
--- a/eng/pipelines/libraries/helix.yml
+++ b/eng/pipelines/libraries/helix.yml
@@ -21,7 +21,7 @@ steps:
/p:TargetRuntimeIdentifier=${{ parameters.targetRid }}
/p:Configuration=${{ parameters.buildConfig }}
/p:TargetOS=${{ parameters.osGroup }}
- /p:MonoEnableInterpreter=${{ parameters.interpreter }}
+ /p:MonoForceInterpreter=${{ parameters.interpreter }}
/p:TestScope=${{ parameters.testScope }}
/p:TestRunNamePrefixSuffix=${{ parameters.testRunNamePrefixSuffix }}
/p:HelixBuild=$(Build.BuildNumber)
diff --git a/eng/pipelines/official/jobs/prepare-signed-artifacts.yml b/eng/pipelines/official/jobs/prepare-signed-artifacts.yml
index 42c8bb69b73f..2a1a11339633 100644
--- a/eng/pipelines/official/jobs/prepare-signed-artifacts.yml
+++ b/eng/pipelines/official/jobs/prepare-signed-artifacts.yml
@@ -10,7 +10,7 @@ jobs:
dependsOn: ${{ parameters.dependsOn }}
pool:
name: NetCoreInternal-Pool
- queue: buildpool.windows.10.amd64.vs2017
+ queue: buildpool.windows.10.amd64.vs2019
# Double the default timeout.
timeoutInMinutes: 120
workspace:
@@ -33,17 +33,18 @@ jobs:
zipSources: false
feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
continueOnError: false
- condition: and(succeeded(), in(variables['SignType'], 'real', 'test'))
+ condition: and(succeeded(),
+ in(variables['SignType'], 'real', 'test'))
- task: DownloadBuildArtifacts@0
- displayName: Download IntermediateUnsignedArtifacts
+ displayName: Download IntermediateArtifacts
inputs:
- artifactName: IntermediateUnsignedArtifacts
+ artifactName: IntermediateArtifacts
downloadPath: $(Build.SourcesDirectory)\artifacts\PackageDownload
- script: >-
build.cmd -ci
- -subset installer.publish
+ -subset publish
-configuration Release
/p:PublishRidAgnosticPackagesFromPlatform=${{ parameters.PublishRidAgnosticPackagesFromPlatform }}
/p:OfficialBuildId=$(Build.BuildNumber)
diff --git a/eng/pipelines/runtime-official.yml b/eng/pipelines/runtime-official.yml
index 62c07cbd896b..a531b4642dc1 100644
--- a/eng/pipelines/runtime-official.yml
+++ b/eng/pipelines/runtime-official.yml
@@ -32,6 +32,8 @@ variables:
value: .NETCore
- name: _DotNetValidationArtifactsCategory
value: .NETCoreValidation
+- name: PostBuildSign
+ value: true
stages:
- stage: Build
@@ -63,13 +65,14 @@ stages:
- windows_arm64
jobParameters:
isOfficialBuild: ${{ variables.isOfficialBuild }}
+ signBinaries: ${{ variables.isOfficialBuild }}
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/coreclr/templates/crossdac-pack.yml
buildConfig: release
platforms:
- - Linux_musl_x64
+ - windows_x64
jobParameters:
isOfficialBuild: ${{ variables.isOfficialBuild }}
crossDacPlatforms:
@@ -114,10 +117,10 @@ stages:
# - windows_arm
# - windows_arm64
jobParameters:
- buildArgs: -s mono+libs+installer -c $(_BuildConfig)
+ buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: AllSubsets_Mono
isOfficialBuild: ${{ variables.isOfficialBuild }}
- extraStepsTemplate: /eng/pipelines/common/upload-unsigned-artifacts-step.yml
+ extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
extraStepsParameters:
name: MonoRuntimePacks
@@ -143,12 +146,12 @@ stages:
buildConfig: release
runtimeFlavor: mono
jobParameters:
- buildArgs: -s mono+libs+installer -c $(_BuildConfig)
+ buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
/p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false
nameSuffix: AllSubsets_Mono_LLVMJIT
runtimeVariant: LLVMJIT
isOfficialBuild: ${{ variables.isOfficialBuild }}
- extraStepsTemplate: /eng/pipelines/common/upload-unsigned-artifacts-step.yml
+ extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
extraStepsParameters:
name: MonoRuntimePacks
#LLVMAOT
@@ -156,12 +159,12 @@ stages:
buildConfig: release
runtimeFlavor: mono
jobParameters:
- buildArgs: -s mono+libs+installer -c $(_BuildConfig)
+ buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
/p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
nameSuffix: AllSubsets_Mono_LLVMAOT
runtimeVariant: LLVMAOT
isOfficialBuild: ${{ variables.isOfficialBuild }}
- extraStepsTemplate: /eng/pipelines/common/upload-unsigned-artifacts-step.yml
+ extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
extraStepsParameters:
name: MonoRuntimePacks
@@ -213,8 +216,6 @@ stages:
liveRuntimeBuildConfig: release
liveLibrariesBuildConfig: Release
isOfficialBuild: ${{ variables.isOfficialBuild }}
- useOfficialAllConfigurations: true
- buildFullPlatformManifest: true
platforms:
- OSX_arm64
- OSX_x64
diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml
index dd43cb33606d..e84d08e83ef4 100644
--- a/eng/pipelines/runtime.yml
+++ b/eng/pipelines/runtime.yml
@@ -271,7 +271,7 @@ jobs:
jobParameters:
testGroup: innerloop
nameSuffix: AllSubsets_Mono
- buildArgs: -s mono+libs+installer -c $(_BuildConfig)
+ buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
condition: >-
or(
eq(dependencies.checkout.outputs['SetPathVars_libraries.containsChange'], true),
@@ -292,7 +292,7 @@ jobs:
jobParameters:
testGroup: innerloop
nameSuffix: AllSubsets_Mono
- buildArgs: -s mono+libs+installer -c $(_BuildConfig)
+ buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
condition: >-
or(
eq(dependencies.checkout.outputs['SetPathVars_libraries.containsChange'], true),
@@ -320,7 +320,7 @@ jobs:
jobParameters:
testGroup: innerloop
nameSuffix: AllSubsets_Mono
- buildArgs: -s mono+libs+installer+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
+ buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
timeoutInMinutes: 120
condition: >-
or(
@@ -365,7 +365,7 @@ jobs:
jobParameters:
testGroup: innerloop
nameSuffix: AllSubsets_Mono
- buildArgs: -s mono+libs+installer+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
+ buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
timeoutInMinutes: 120
condition: >-
or(
@@ -473,7 +473,7 @@ jobs:
jobParameters:
testGroup: innerloop
nameSuffix: AllSubsets_Mono_LLVMJIT
- buildArgs: -s mono+libs+installer -c $(_BuildConfig)
+ buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
/p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false
condition: >-
or(
@@ -493,7 +493,7 @@ jobs:
jobParameters:
testGroup: innerloop
nameSuffix: AllSubsets_Mono_LLVMJIT
- buildArgs: -s mono+libs+installer -c $(_BuildConfig)
+ buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
/p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=false
condition: >-
or(
@@ -516,7 +516,7 @@ jobs:
jobParameters:
testGroup: innerloop
nameSuffix: AllSubsets_Mono_LLVMAOT
- buildArgs: -s mono+libs+installer -c $(_BuildConfig)
+ buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
/p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
condition: >-
or(
@@ -535,7 +535,7 @@ jobs:
jobParameters:
testGroup: innerloop
nameSuffix: AllSubsets_Mono_LLVMAOT
- buildArgs: -s mono+libs+installer -c $(_BuildConfig)
+ buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
/p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
condition: >-
or(
diff --git a/eng/pipelines/runtimelab.yml b/eng/pipelines/runtimelab.yml
index 38425c1407e9..facd5bc264ae 100644
--- a/eng/pipelines/runtimelab.yml
+++ b/eng/pipelines/runtimelab.yml
@@ -71,7 +71,7 @@ stages:
jobParameters:
timeoutInMinutes: 100
testGroup: innerloop
- buildArgs: -s clr+libs+installer -c debug -runtimeConfiguration Checked
+ buildArgs: -s clr+libs+host+packs -c debug -runtimeConfiguration Checked
extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
extraStepsParameters:
uploadRuntimeTests: true
@@ -92,9 +92,9 @@ stages:
extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
extraStepsParameters:
uploadLibrariesTests: ${{ eq(variables.isOfficialBuild, false) }}
- uploadUnsignedArtifacts: false
+ uploadIntermediateArtifacts: false
${{ if eq(variables.isOfficialBuild, false) }}:
- buildArgs: -s clr+libs+libs.tests+installer -c $(_BuildConfig) /p:ArchiveTests=true
+ buildArgs: -s clr+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true
${{ if eq(variables.isOfficialBuild, true) }}:
buildArgs: -s clr+libs -c $(_BuildConfig)
@@ -115,7 +115,7 @@ stages:
${{ if eq(variables.isOfficialBuild, true) }}:
extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
extraStepsParameters:
- uploadUnsignedArtifacts: true
+ uploadIntermediateArtifacts: true
isOfficialBuild: true
librariesBinArtifactName: libraries_bin_official_allconfigurations
diff --git a/eng/pipelines/runtimelab/runtimelab-post-build-steps.yml b/eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
index 124b38f0819e..61decc63875a 100644
--- a/eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
+++ b/eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
@@ -9,12 +9,12 @@ parameters:
isOfficialBuild: false
uploadLibrariesTests: false
uploadRuntimeTests: false
- uploadUnsignedArtifacts: false
+ uploadIntermediateArtifacts: false
steps:
# Build coreclr native test output
- ${{ if eq(parameters.uploadRuntimeTests, true) }}:
- - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) skipstressdependencies skipmanaged skipgeneratelayout $(buildConfigUpper) ${{ parameters.archType }}
+ - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) skipmanaged skipgeneratelayout $(buildConfigUpper) ${{ parameters.archType }}
displayName: Build native test components
# Copy all build output into artifacts staging directory
@@ -69,7 +69,7 @@ steps:
displayName: Build Assets
# Upload unsigned artifacts
- - ${{ if eq(parameters.uploadUnsignedArtifacts, true) }}:
- - template: /eng/pipelines/common/upload-unsigned-artifacts-step.yml
+ - ${{ if eq(parameters.uploadIntermediateArtifacts, true) }}:
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
parameters:
name: ${{ parameters.platform }}${{ parameters.nameSuffix }}
diff --git a/eng/slngen.targets b/eng/slngen.targets
new file mode 100644
index 000000000000..39863abafb1e
--- /dev/null
+++ b/eng/slngen.targets
@@ -0,0 +1,13 @@
+
+
+ ref
+ tests
+ src
+
+
+ false
+
+
+ true
+
+
\ No newline at end of file
diff --git a/eng/targetframeworksuffix.props b/eng/targetframeworksuffix.props
index 2525ce954a35..e4473df46fa7 100644
--- a/eng/targetframeworksuffix.props
+++ b/eng/targetframeworksuffix.props
@@ -77,7 +77,7 @@
true
- true
+ trueillumos
diff --git a/eng/testing/RunnerTemplate.cmd b/eng/testing/RunnerTemplate.cmd
index 10737eabe709..9e6c6d1e7866 100644
--- a/eng/testing/RunnerTemplate.cmd
+++ b/eng/testing/RunnerTemplate.cmd
@@ -56,7 +56,13 @@ pushd %EXECUTION_DIR%
@echo off
popd
echo ----- end %DATE% %TIME% ----- exit code %ERRORLEVEL% ----------------------------------------------------------
-exit /b %ERRORLEVEL%
+:: The helix work item should not exit with non-zero if tests ran and produced results
+:: The special console runner for runtime returns 1 when tests fail
+if %ERRORLEVEL%==1 (
+ exit /b 0
+) else (
+ exit /b %ERRORLEVEL%
+)
:: ========================= END Test Execution =================================
:usage
diff --git a/eng/testing/RunnerTemplate.sh b/eng/testing/RunnerTemplate.sh
index dbd5f4741a5d..e4593e82433e 100755
--- a/eng/testing/RunnerTemplate.sh
+++ b/eng/testing/RunnerTemplate.sh
@@ -204,4 +204,10 @@ if [[ "$(uname -s)" == "Linux" && $test_exitcode -ne 0 ]]; then
fi
popd >/dev/null
# ======================== END Core File Inspection ==========================
-exit $test_exitcode
+# The helix work item should not exit with non-zero if tests ran and produced results
+# The special console runner for runtime returns 1 when tests fail
+if [ "$test_exitcode" == "1" ]; then
+ exit 0
+else
+ exit $test_exitcode
+fi
diff --git a/eng/testing/linker/SupportFiles/Directory.Build.props b/eng/testing/linker/SupportFiles/Directory.Build.props
index 4f2c8b61a1e1..a2276bf20f94 100644
--- a/eng/testing/linker/SupportFiles/Directory.Build.props
+++ b/eng/testing/linker/SupportFiles/Directory.Build.props
@@ -8,4 +8,8 @@
true
+
+
+
+
diff --git a/eng/testing/linker/SupportFiles/Directory.Build.targets b/eng/testing/linker/SupportFiles/Directory.Build.targets
index 3318b0f4010f..0a59507942ab 100644
--- a/eng/testing/linker/SupportFiles/Directory.Build.targets
+++ b/eng/testing/linker/SupportFiles/Directory.Build.targets
@@ -1,18 +1,20 @@
-
+
-
+
+ DependsOnTargets="ResolveFrameworkReferences">
@@ -31,23 +33,23 @@
-
+
+ TargetingPackVersion="$(MicrosoftNETCoreAppVersion)" />
diff --git a/eng/testing/linker/project.csproj.template b/eng/testing/linker/project.csproj.template
index d335783fc44f..eddb438480c7 100644
--- a/eng/testing/linker/project.csproj.template
+++ b/eng/testing/linker/project.csproj.template
@@ -7,6 +7,7 @@
{RuntimePackDir}{TargetingPackDir}{NetCoreAppMaximumVersion}
+ {MicrosoftNETCoreAppVersion}IL2026
diff --git a/eng/testing/linker/trimmingTests.targets b/eng/testing/linker/trimmingTests.targets
index 4a9152fbd5f9..c88f9e204e9f 100644
--- a/eng/testing/linker/trimmingTests.targets
+++ b/eng/testing/linker/trimmingTests.targets
@@ -2,7 +2,6 @@
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'trimmingTests'))$([MSBuild]::NormalizeDirectory('$(TrimmingTestDir)', 'projects'))
- $([MSBuild]::NormalizePath('$(DotNetRoot)', 'dotnet'))$(MSBuildThisFileDirectory)project.csproj.template
@@ -73,6 +72,7 @@
- "$(TestDotNetPath)"
+ "$(DotNetTool)"$(TestPublishTrimmedCommand) build /t:PublishTrimmed$(TestPublishTrimmedCommand) /nr:false$(TestPublishTrimmedCommand) /warnaserror
diff --git a/eng/testing/tests.mobile.targets b/eng/testing/tests.mobile.targets
index 97096ea948ae..ef94fd017269 100644
--- a/eng/testing/tests.mobile.targets
+++ b/eng/testing/tests.mobile.targets
@@ -52,6 +52,7 @@
ProjectName="$(AssemblyName)"
MonoRuntimeHeaders="$(MicrosoftNetCoreAppRuntimePackNativeDir)include\mono-2.0"
MainLibraryFileName="AndroidTestRunner.dll"
+ ForceInterpreter="$(MonoForceInterpreter)"
StripDebugSymbols="False"
OutputDir="$(BundleDir)"
SourceDir="$(PublishDir)">
@@ -99,6 +100,8 @@
Mode="Full"
OutputType="AsmOnly"
Assemblies="@(AotInputAssemblies)"
+ AotModulesTablePath="$(BundleDir)\modules.m"
+ AotModulesTableLanguage="ObjC"
UseLLVM="$(MonoEnableLLVM)"
LLVMPath="$(MicrosoftNetCoreAppRuntimePackNativeDir)cross">
@@ -113,6 +116,7 @@
MonoRuntimeHeaders="$(MicrosoftNetCoreAppRuntimePackNativeDir)include\mono-2.0"
Assemblies="@(BundleAssemblies)"
MainLibraryFileName="AppleTestRunner.dll"
+ ForceInterpreter="$(MonoForceInterpreter)"
UseConsoleUITemplate="True"
GenerateXcodeProject="True"
BuildAppBundle="True"
diff --git a/eng/testing/tests.props b/eng/testing/tests.props
index 65664f7f7499..bf54e899d4d1 100644
--- a/eng/testing/tests.props
+++ b/eng/testing/tests.props
@@ -32,7 +32,7 @@
-
+
diff --git a/eng/versioning.targets b/eng/versioning.targets
index 3177b48b0ba6..98fd08c85010 100644
--- a/eng/versioning.targets
+++ b/eng/versioning.targets
@@ -29,6 +29,15 @@
+
+ true
+
+
+
+
+
+
+
<_unsupportedOSPlatforms Include="$(UnsupportedOSPlatforms)" />
diff --git a/global.json b/global.json
index 31ac6fc0ef7c..c66815d17070 100644
--- a/global.json
+++ b/global.json
@@ -12,12 +12,12 @@
"python3": "3.7.1"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk": "6.0.0-beta.20552.5",
- "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.20552.5",
- "Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk": "6.0.0-beta.20552.5",
- "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.20560.1",
- "Microsoft.FIX-85B6-MERGE-9C38-CONFLICT": "1.0.0",
- "Microsoft.NET.Sdk.IL": "5.0.0-preview.8.20359.4",
+ "Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk": "6.0.0-beta.20573.2",
+ "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.20573.2",
+ "Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk": "6.0.0-beta.20573.2",
+ "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.20573.2",
+ "Microsoft.DotNet.SharedFramework.Sdk": "6.0.0-beta.20552.5",
+ "Microsoft.NET.Sdk.IL": "6.0.0-alpha.1.20557.2",
"Microsoft.Build.NoTargets": "2.0.1",
"Microsoft.Build.Traversal": "2.1.1"
}
diff --git a/src/coreclr/clr.featuredefines.props b/src/coreclr/clr.featuredefines.props
index 6c4c13243e12..a205c2d280dd 100644
--- a/src/coreclr/clr.featuredefines.props
+++ b/src/coreclr/clr.featuredefines.props
@@ -36,12 +36,6 @@
true
-
-
- true
-
-
-
$(DefineConstants);FEATURE_ARRAYSTUB_AS_IL$(DefineConstants);FEATURE_MULTICASTSTUB_AS_IL
@@ -60,7 +54,6 @@
$(DefineConstants);FEATURE_TYPEEQUIVALENCE$(DefineConstants);FEATURE_BASICFREEZE$(DefineConstants);FEATURE_PORTABLE_SHUFFLE_THUNKS
- $(DefineConstants);FEATURE_UTF8STRING$(DefineConstants);PROFILING_SUPPORTED$(DefineConstants);FEATURE_PROFAPI_ATTACH_DETACH
diff --git a/src/coreclr/clrdefinitions.cmake b/src/coreclr/clrdefinitions.cmake
index eafe212786d8..d22738910023 100644
--- a/src/coreclr/clrdefinitions.cmake
+++ b/src/coreclr/clrdefinitions.cmake
@@ -1,11 +1,5 @@
include(clrfeatures.cmake)
-# Features we're currently flighting, but don't intend to ship in officially supported releases
-if (PRERELEASE)
- add_definitions(-DFEATURE_UTF8STRING)
- # add_definitions(-DFEATURE_XXX)
-endif (PRERELEASE)
-
add_compile_definitions($<$>:DACCESS_COMPILE>)
add_compile_definitions($<$>:CROSSGEN_COMPILE>)
add_compile_definitions($<$>:CROSS_COMPILE>)
diff --git a/src/coreclr/crossgen-corelib.proj b/src/coreclr/crossgen-corelib.proj
index bf26cd259a8c..f4ff62f016f2 100644
--- a/src/coreclr/crossgen-corelib.proj
+++ b/src/coreclr/crossgen-corelib.proj
@@ -3,21 +3,107 @@
-
- <_CoreClrBuildArg Condition="'$(TargetArchitecture)' != ''" Include="-$(TargetArchitecture)" />
- <_CoreClrBuildArg Include="-$(Configuration.ToLower())" />
- <_CoreClrBuildArg Condition="!$([MSBuild]::IsOsPlatform(Windows))" Include="-os $(TargetOS)" />
- <_CoreClrBuildArg Condition="'$(CrossBuild)' == 'true'" Include="-cross" />
- <_CoreClrBuildArg Condition="'$(PortableBuild)' != 'true'" Include="-portablebuild=false" />
-
+
+
+ false
+
+ $(TargetOS).$(TargetArchitecture).$(Configuration)
+ $(RepoRoot)\artifacts
+ $(RootBinDir)\log
+ $(RootBinDir)\bin\coreclr\$(OSPlatformConfig)
+ $(RootBinDir)\obj\coreclr\$(OSPlatformConfig)
+ $(LogsDir)\CrossgenCoreLib_$(TargetOS)__$(TargetArchitecture)__$(Configuration).log
+ .exe
+ $(RepoRoot)/dotnet.sh
+ $(RepoRoot)\dotnet.cmd
+
+ System.Private.CoreLib
+ $(BinDir)\IL\$(CoreLibAssemblyName).dll
+ $(BinDir)\$(CoreLibAssemblyName).dll
+
+
+
+
+
+
+ x64
+ x86
+ $(BuildArchitecture)
+
+
+
+ true
+ false
+
+ false
+ true
+
+ false
+ true
+
+ $(BinDir)\$(CrossDir)\crossgen$(ExeExtension)
+ $(CrossGen1Cmd) /nologo
+ $(CrossGen1Cmd)
+ $(CrossGen1Cmd) /Platform_Assemblies_Paths "$(BinDir)\IL"
+
+
+
+
+
- <_CoreClrBuildScript Condition="$([MSBuild]::IsOsPlatform(Windows))">crossgen-corelib.cmd
- <_CoreClrBuildScript Condition="!$([MSBuild]::IsOsPlatform(Windows))">crossgen-corelib.sh
+ $(DotNetCli) $(BinDir)\$(CrossDir)\crossgen2\crossgen2.dll
+ $(CrossGenDllCmd) -o:$(CoreLibOutputPath)
+ $(CrossGenDllCmd) -r:$(BinDir)\IL\*.dll
+ $(CrossGenDllCmd) --targetarch:$(TargetArchitecture)
+ $(CrossGenDllCmd) -O
+ $(CrossGenDllCmd) $(CoreLibInputPath)
+
+
+
+ $(CrossGen1Cmd) /out "$(CoreLibOutputPath)"
+ $(CrossGenDllCmd) "$(CoreLibInputPath)"
+
+
+
+
+
+ $(CrossGen1Cmd) /CreatePerfMap "$(BinDir)"
+ $(CrossGenPerfMapCmd) "$(CoreLibOutputPath)"
+
+
+
+ $(DotNetCli) $(BinDir)\r2rdump\r2rdump.dll
+ $(CrossGenPdbCmd) --create-pdb
+ $(CrossGenPdbCmd) --pdb-path:$(BinDir)\PDB
+ $(CrossGenPdbCmd) --in:$(CoreLibOutputPath)
+
+
+ call $(RepoRoot)\src\coreclr\setup_vs_tools.cmd &&
+
+ $(VsSetupCmd) $(CrossGen1Cmd) /CreatePdb "$(BinDir)\PDB"
+ $(CrossGenPdbCmd) "$(CoreLibOutputPath)"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
diff --git a/src/coreclr/dir.common.props b/src/coreclr/dir.common.props
index ebaf9645134a..08e71350e982 100644
--- a/src/coreclr/dir.common.props
+++ b/src/coreclr/dir.common.props
@@ -50,22 +50,6 @@
$(PackageVersion)
-
-
- true
- true
- true
- true
- true
- true
- true
-
- true
-
-
- $(__DistroRid)
-
-
Portable
diff --git a/src/coreclr/scripts/superpmi.py b/src/coreclr/scripts/superpmi.py
index 2540559eff58..dd0b4cf8a9e3 100755
--- a/src/coreclr/scripts/superpmi.py
+++ b/src/coreclr/scripts/superpmi.py
@@ -141,7 +141,7 @@
superpmi_collect_help = """\
Command to run SuperPMI collect over. Note that there cannot be any dotnet CLI commands
-invoked inside this command, as they will fail due to the shim altjit being set.
+invoked inside this command, as they will fail due to the shim JIT being set.
"""
replay_mch_files_help = """\
@@ -750,9 +750,7 @@ def __collect_mc_files__(self):
env_copy = os.environ.copy()
env_copy["SuperPMIShimLogPath"] = self.temp_location
env_copy["SuperPMIShimPath"] = self.jit_path
- env_copy["COMPlus_AltJit"] = "*"
- env_copy["COMPlus_AltJitNgen"] = "*"
- env_copy["COMPlus_AltJitName"] = self.collection_shim_name
+ env_copy["COMPlus_JitName"] = self.collection_shim_name
env_copy["COMPlus_EnableExtraSuperPmiQueries"] = "1"
env_copy["COMPlus_TieredCompilation"] = "0"
@@ -764,9 +762,7 @@ def __collect_mc_files__(self):
logging.debug("")
print_platform_specific_environment_vars(logging.DEBUG, self.coreclr_args, "SuperPMIShimLogPath", self.temp_location)
print_platform_specific_environment_vars(logging.DEBUG, self.coreclr_args, "SuperPMIShimPath", self.jit_path)
- print_platform_specific_environment_vars(logging.DEBUG, self.coreclr_args, "COMPlus_AltJit", "*")
- print_platform_specific_environment_vars(logging.DEBUG, self.coreclr_args, "COMPlus_AltJitNgen", "*")
- print_platform_specific_environment_vars(logging.DEBUG, self.coreclr_args, "COMPlus_AltJitName", self.collection_shim_name)
+ print_platform_specific_environment_vars(logging.DEBUG, self.coreclr_args, "COMPlus_JitName", self.collection_shim_name)
print_platform_specific_environment_vars(logging.DEBUG, self.coreclr_args, "COMPlus_EnableExtraSuperPmiQueries", "1")
print_platform_specific_environment_vars(logging.DEBUG, self.coreclr_args, "COMPlus_TieredCompilation", "0")
if self.coreclr_args.use_zapdisable:
@@ -1072,36 +1068,38 @@ def replay(self):
logging.debug("Temp Location: %s", temp_location)
logging.debug("")
- flags = [
+ # `repro_flags` are the subset of flags we tell the user to pass to superpmi when reproducing
+ # a failure. This won't include things like "-p" for parallelism or "-r" to create a repro .mc file.
+ repro_flags = []
+
+ common_flags = [
"-v", "ew", # only display errors and warnings
"-r", os.path.join(temp_location, "repro") # Repro name, create .mc repro files
]
- altjit_string = "*" if self.coreclr_args.altjit else ""
- altjit_replay_flags = [
- "-jitoption", "force", "AltJit=" + altjit_string,
- "-jitoption", "force", "AltJitNgen=" + altjit_string,
- "-jitoption", "force", "EnableExtraSuperPmiQueries=0"
- ]
- flags += altjit_replay_flags
+ if self.coreclr_args.altjit:
+ repro_flags += [
+ "-jitoption", "force", "AltJit=*",
+ "-jitoption", "force", "AltJitNgen=*"
+ ]
+ if self.coreclr_args.arch == "arm":
+ repro_flags += [ "-target", "arm" ]
+ elif self.coreclr_args.arch == "arm64":
+ repro_flags += [ "-target", "arm64" ]
if not self.coreclr_args.sequential:
- flags += [ "-p" ]
+ common_flags += [ "-p" ]
if self.coreclr_args.break_on_assert:
- flags += [ "-boa" ]
+ common_flags += [ "-boa" ]
if self.coreclr_args.break_on_error:
- flags += [ "-boe" ]
+ common_flags += [ "-boe" ]
if self.coreclr_args.spmi_log_file is not None:
- flags += [ "-w", self.coreclr_args.spmi_log_file ]
+ common_flags += [ "-w", self.coreclr_args.spmi_log_file ]
- if self.coreclr_args.altjit:
- if self.coreclr_args.arch == "arm":
- flags += [ "-target", "arm" ]
- elif self.coreclr_args.arch == "arm64":
- flags += [ "-target", "arm64" ]
+ common_flags += repro_flags
# For each MCH file that we are going to replay, do the replay and replay post-processing.
#
@@ -1117,6 +1115,8 @@ def replay(self):
logging.info("Running SuperPMI replay of %s", mch_file)
+ flags = common_flags
+
fail_mcl_file = os.path.join(temp_location, os.path.basename(mch_file) + "_fail.mcl")
flags += [
"-f", fail_mcl_file, # Failing mc List
@@ -1136,7 +1136,7 @@ def replay(self):
if return_code == 0:
logging.warning("Warning: SuperPMI returned a zero exit code, but generated a non-zero-sized mcl file")
print_fail_mcl_file_method_numbers(fail_mcl_file)
- repro_base_command_line = "{} {} {}".format(self.superpmi_path, " ".join(altjit_replay_flags), self.jit_path)
+ repro_base_command_line = "{} {} {}".format(self.superpmi_path, " ".join(repro_flags), self.jit_path)
save_repro_mc_files(temp_location, self.coreclr_args, repro_base_command_line)
if not self.coreclr_args.skip_cleanup:
@@ -1238,22 +1238,27 @@ def replay_with_asm_diffs(self):
"COMPlus_JitDump": "*",
"COMPlus_NgenDump": "*" }
- altjit_string = "*" if self.coreclr_args.altjit else ""
-
- altjit_asm_diffs_flags = [
- "-jitoption", "force", "AltJit=" + altjit_string,
- "-jitoption", "force", "AltJitNgen=" + altjit_string,
- "-jitoption", "force", "EnableExtraSuperPmiQueries=0",
- "-jit2option", "force", "AltJit=" + altjit_string,
- "-jit2option", "force", "AltJitNgen=" + altjit_string,
- "-jit2option", "force", "EnableExtraSuperPmiQueries=0"
- ]
+ altjit_asm_diffs_flags = []
+ altjit_replay_flags = []
+
+ if self.coreclr_args.altjit:
+ target_flags = []
+ if self.coreclr_args.arch == "arm":
+ target_flags += [ "-target", "arm" ]
+ elif self.coreclr_args.arch == "arm64":
+ target_flags += [ "-target", "arm64" ]
+
+ altjit_asm_diffs_flags = target_flags + [
+ "-jitoption", "force", "AltJit=*",
+ "-jitoption", "force", "AltJitNgen=*",
+ "-jit2option", "force", "AltJit=*",
+ "-jit2option", "force", "AltJitNgen=*"
+ ]
- altjit_replay_flags = [
- "-jitoption", "force", "AltJit=" + altjit_string,
- "-jitoption", "force", "AltJitNgen=" + altjit_string,
- "-jitoption", "force", "EnableExtraSuperPmiQueries=0"
- ]
+ altjit_replay_flags = target_flags + [
+ "-jitoption", "force", "AltJit=*",
+ "-jitoption", "force", "AltJitNgen=*"
+ ]
# Keep track if any MCH file replay had asm diffs
files_with_asm_diffs = []
@@ -1304,12 +1309,6 @@ def replay_with_asm_diffs(self):
if self.coreclr_args.spmi_log_file is not None:
flags += [ "-w", self.coreclr_args.spmi_log_file ]
- if self.coreclr_args.altjit:
- if self.coreclr_args.arch == "arm":
- flags += [ "-target", "arm" ]
- elif self.coreclr_args.arch == "arm64":
- flags += [ "-target", "arm64" ]
-
# Change the working directory to the Core_Root we will call SuperPMI from.
# This is done to allow libcoredistools to be loaded correctly on unix
# as the loadlibrary path will be relative to the current directory.
@@ -2699,7 +2698,7 @@ def verify_replay_common_args():
"collection_args",
lambda unused: True,
"Unable to set collection_args",
- modify_arg=lambda collection_args: collection_args.split(" ") if collection_args is not None else collection_args)
+ modify_arg=lambda collection_args: collection_args.split(" ") if collection_args is not None else [])
coreclr_args.verify(args,
"pmi",
@@ -2720,7 +2719,8 @@ def verify_replay_common_args():
coreclr_args.verify(args,
"output_mch_path",
lambda output_mch_path: output_mch_path is None or (not os.path.isdir(os.path.abspath(output_mch_path)) and not os.path.isfile(os.path.abspath(output_mch_path))),
- "Invalid output_mch_path; is it an existing directory or file?")
+ "Invalid output_mch_path \"{}\"; is it an existing directory or file?".format,
+ modify_arg=lambda output_mch_path: None if output_mch_path is None else os.path.abspath(output_mch_path))
coreclr_args.verify(args,
"merge_mch_files",
@@ -3003,7 +3003,8 @@ def verify_replay_common_args():
coreclr_args.verify(args,
"output_mch_path",
lambda output_mch_path: not os.path.isdir(os.path.abspath(output_mch_path)) and not os.path.isfile(os.path.abspath(output_mch_path)),
- "Invalid output_mch_path; is it an existing directory or file?")
+ "Invalid output_mch_path \"{}\"; is it an existing directory or file?".format,
+ modify_arg=lambda output_mch_path: os.path.abspath(output_mch_path))
coreclr_args.verify(args,
"pattern",
diff --git a/src/coreclr/src/.nuget/Directory.Build.props b/src/coreclr/src/.nuget/Directory.Build.props
index 3473cbf83b52..1e0b60ec47c4 100644
--- a/src/coreclr/src/.nuget/Directory.Build.props
+++ b/src/coreclr/src/.nuget/Directory.Build.props
@@ -20,36 +20,14 @@
true
-
- <_parseDistroRid>$(__DistroRid)
- <_parseDistroRid Condition="'$(_parseDistroRid)' == '' and '$(TargetOS)' == 'OSX'">osx.10.12-x64
- <_distroRidIndex>$(_parseDistroRid.LastIndexOfAny("-"))
- <_archRidIndex>$([MSBuild]::Add($(_distroRidIndex), 1))
- $(_parseDistroRid.SubString(0, $(_distroRidIndex)))
- win10
-
- $(_parseDistroRid.SubString($(_archRidIndex)))
- $(Platform)
-
- $(OSRid)
-
windows;OSX;Android;Linux;FreeBSD;NetBSD;illumos;Solaris;$(SupportedPackageOSGroups);
-
- <_runtimeOSVersionIndex>$(RuntimeOS.IndexOfAny(".-0123456789"))
- <_runtimeOSFamily Condition="'$(_runtimeOSVersionIndex)' != '-1'">$(RuntimeOS.SubString(0, $(_runtimeOSVersionIndex)))
- <_runtimeOSFamily Condition="'$(_runtimeOSVersionIndex)' == '-1'">$(RuntimeOS)
<_isSupportedOSGroup>true
- <_derivedPackageTargetOSGroup Condition="'$(_derivedPackageTargetOSGroup)' == '' and '$(_runtimeOSFamily)' == 'osx'">OSX
- <_derivedPackageTargetOSGroup Condition="'$(_derivedPackageTargetOSGroup)' == '' and '$(_runtimeOSFamily)' == 'android'">Android
- <_derivedPackageTargetOSGroup Condition="'$(_derivedPackageTargetOSGroup)' == '' and '$(_runtimeOSFamily)' == 'win'">windows
<_derivedPackageTargetOSGroup Condition="'$(_derivedPackageTargetOSGroup)' == '' and '$(TargetOS)' != ''">$(TargetOS)
<_derivedPackageTargetOSGroup Condition="'$(_derivedPackageTargetOSGroup)' == ''">Linux
@@ -73,92 +51,6 @@
true
-
-
-
-
-
- $(OutputRID)
-
-
-
-
-
- win-$(TargetArchitecture)
-
-
-
-
- osx.10.12-$(TargetArchitecture)
-
- osx-$(TargetArchitecture)
-
-
-
-
- freebsd.11-$(TargetArchitecture)
-
- freebsd-$(TargetArchitecture)
-
-
-
-
- netbsd-$(TargetArchitecture)
-
- netbsd-$(TargetArchitecture)
-
-
-
-
- illumos-$(TargetArchitecture)
-
- illumos-$(TargetArchitecture)
-
-
-
-
- solaris-$(TargetArchitecture)
-
- solaris-$(TargetArchitecture)
-
-
-
-
- android.21-$(TargetArchitecture)
-
- android-$(TargetArchitecture)
-
-
-
-
- $(OSRid)-$(TargetArchitecture)
-
- linux-$(TargetArchitecture)
-
-
-
-
- $(OSRid)-$(TargetArchitecture)
-
- linux-musl-$(TargetArchitecture)
-
-
-
-
- $(RuntimeOS)-$(TargetArchitecture)
-
-
-
-
- $(RuntimeOS)-$(TargetArchitecture)
-
- linux-$(TargetArchitecture)
-
-
-
-
-
-
diff --git a/src/coreclr/src/.nuget/Directory.Build.targets b/src/coreclr/src/.nuget/Directory.Build.targets
index f9886d59b0bb..eeab2931cf83 100644
--- a/src/coreclr/src/.nuget/Directory.Build.targets
+++ b/src/coreclr/src/.nuget/Directory.Build.targets
@@ -9,8 +9,8 @@
Finds symbol files and injects them into the package build.
-->
-
-
+
+
@@ -42,7 +42,7 @@
-
+
diff --git a/src/coreclr/src/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.pkgproj b/src/coreclr/src/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.pkgproj
index ff68beebb047..744c17ad28bb 100644
--- a/src/coreclr/src/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.pkgproj
+++ b/src/coreclr/src/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.pkgproj
@@ -8,7 +8,7 @@
-
+
diff --git a/src/coreclr/src/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.pkgproj b/src/coreclr/src/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.pkgproj
index 116da5fd20dd..8c6321fc7fd8 100644
--- a/src/coreclr/src/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.pkgproj
+++ b/src/coreclr/src/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.pkgproj
@@ -8,7 +8,7 @@
-
+
diff --git a/src/coreclr/src/.nuget/Microsoft.NETCore.TestHost/Microsoft.NETCore.TestHost.pkgproj b/src/coreclr/src/.nuget/Microsoft.NETCore.TestHost/Microsoft.NETCore.TestHost.pkgproj
index aad674a25040..81b519f74bce 100644
--- a/src/coreclr/src/.nuget/Microsoft.NETCore.TestHost/Microsoft.NETCore.TestHost.pkgproj
+++ b/src/coreclr/src/.nuget/Microsoft.NETCore.TestHost/Microsoft.NETCore.TestHost.pkgproj
@@ -8,7 +8,7 @@
-
+
diff --git a/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj b/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj
index 304b50f06676..4de4ac0aa586 100644
--- a/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj
+++ b/src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj
@@ -52,6 +52,7 @@
true$(OutputPath)$(MSBuildProjectName).xml
+ src
@@ -253,9 +254,6 @@
-
-
-
diff --git a/src/coreclr/src/System.Private.CoreLib/src/System/Attribute.CoreCLR.cs b/src/coreclr/src/System.Private.CoreLib/src/System/Attribute.CoreCLR.cs
index 7a44e3cce019..a9505dc64666 100644
--- a/src/coreclr/src/System.Private.CoreLib/src/System/Attribute.CoreCLR.cs
+++ b/src/coreclr/src/System.Private.CoreLib/src/System/Attribute.CoreCLR.cs
@@ -377,7 +377,7 @@ private static Type[] GetIndexParameterTypes(PropertyInfo element)
return indexParamTypes;
}
- return Array.Empty();
+ return Type.EmptyTypes;
}
private static void AddAttributesToList(List attributeList, Attribute[] attributes, Dictionary types)
@@ -430,27 +430,27 @@ private static Attribute[] CreateAttributeArrayHelper(Type elementType, int elem
#region Public Statics
#region MemberInfo
- public static Attribute[] GetCustomAttributes(MemberInfo element, Type type)
+ public static Attribute[] GetCustomAttributes(MemberInfo element, Type attributeType)
{
- return GetCustomAttributes(element, type, true);
+ return GetCustomAttributes(element, attributeType, true);
}
- public static Attribute[] GetCustomAttributes(MemberInfo element, Type type, bool inherit)
+ public static Attribute[] GetCustomAttributes(MemberInfo element, Type attributeType, bool inherit)
{
if (element == null)
throw new ArgumentNullException(nameof(element));
- if (type == null)
- throw new ArgumentNullException(nameof(type));
+ if (attributeType == null)
+ throw new ArgumentNullException(nameof(attributeType));
- if (!type.IsSubclassOf(typeof(Attribute)) && type != typeof(Attribute))
+ if (!attributeType.IsSubclassOf(typeof(Attribute)) && attributeType != typeof(Attribute))
throw new ArgumentException(SR.Argument_MustHaveAttributeBaseClass);
return element.MemberType switch
{
- MemberTypes.Property => InternalGetCustomAttributes((PropertyInfo)element, type, inherit),
- MemberTypes.Event => InternalGetCustomAttributes((EventInfo)element, type, inherit),
- _ => (element.GetCustomAttributes(type, inherit) as Attribute[])!,
+ MemberTypes.Property => InternalGetCustomAttributes((PropertyInfo)element, attributeType, inherit),
+ MemberTypes.Event => InternalGetCustomAttributes((EventInfo)element, attributeType, inherit),
+ _ => (element.GetCustomAttributes(attributeType, inherit) as Attribute[])!,
};
}
diff --git a/src/coreclr/src/System.Private.CoreLib/src/System/Collections/Generic/ArraySortHelper.CoreCLR.cs b/src/coreclr/src/System.Private.CoreLib/src/System/Collections/Generic/ArraySortHelper.CoreCLR.cs
index 5e7dd7ddc453..da6adab43e2f 100644
--- a/src/coreclr/src/System.Private.CoreLib/src/System/Collections/Generic/ArraySortHelper.CoreCLR.cs
+++ b/src/coreclr/src/System.Private.CoreLib/src/System/Collections/Generic/ArraySortHelper.CoreCLR.cs
@@ -27,7 +27,7 @@ private static IArraySortHelper CreateArraySortHelper()
if (typeof(IComparable).IsAssignableFrom(typeof(T)))
{
- defaultArraySortHelper = (IArraySortHelper)RuntimeTypeHandle.Allocate(typeof(GenericArraySortHelper).TypeHandle.Instantiate(new Type[] { typeof(T) }));
+ defaultArraySortHelper = (IArraySortHelper)RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter((RuntimeType)typeof(GenericArraySortHelper), (RuntimeType)typeof(T));
}
else
{
@@ -62,7 +62,7 @@ internal partial class ArraySortHelper
if (typeof(IComparable).IsAssignableFrom(typeof(TKey)))
{
- defaultArraySortHelper = (IArraySortHelper)RuntimeTypeHandle.Allocate(typeof(GenericArraySortHelper).TypeHandle.Instantiate(new Type[] { typeof(TKey), typeof(TValue) }));
+ defaultArraySortHelper = (IArraySortHelper)RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter((RuntimeType)typeof(GenericArraySortHelper), (RuntimeType)typeof(TKey), (RuntimeType)typeof(TValue));
}
else
{
diff --git a/src/coreclr/src/System.Private.CoreLib/src/System/GC.cs b/src/coreclr/src/System.Private.CoreLib/src/System/GC.cs
index d932d18d9fc9..bcbf042fd1b2 100644
--- a/src/coreclr/src/System.Private.CoreLib/src/System/GC.cs
+++ b/src/coreclr/src/System.Private.CoreLib/src/System/GC.cs
@@ -485,7 +485,7 @@ private static bool StartNoGCRegionWorker(long totalSize, bool hasLohSize, long
throw new InvalidOperationException("The NoGCRegion mode was already in progress");
case StartNoGCRegionStatus.AmountTooLarge:
throw new ArgumentOutOfRangeException(nameof(totalSize),
- "totalSize is too large. For more information about setting the maximum size, see \"Latency Modes\" in http://go.microsoft.com/fwlink/?LinkId=522706");
+ "totalSize is too large. For more information about setting the maximum size, see \"Latency Modes\" in https://go.microsoft.com/fwlink/?LinkId=522706");
}
Debug.Assert(status == StartNoGCRegionStatus.Succeeded);
diff --git a/src/coreclr/src/System.Private.CoreLib/src/System/Reflection/CustomAttribute.cs b/src/coreclr/src/System.Private.CoreLib/src/System/Reflection/CustomAttribute.cs
index 49f4cedbeef7..41534ab06518 100644
--- a/src/coreclr/src/System.Private.CoreLib/src/System/Reflection/CustomAttribute.cs
+++ b/src/coreclr/src/System.Private.CoreLib/src/System/Reflection/CustomAttribute.cs
@@ -1115,21 +1115,33 @@ internal static bool IsAttributeDefined(RuntimeModule decoratedModule, int decor
private static bool IsCustomAttributeDefined(
RuntimeModule decoratedModule, int decoratedMetadataToken, RuntimeType? attributeFilterType, int attributeCtorToken, bool mustBeInheritable)
{
- CustomAttributeRecord[] car = CustomAttributeData.GetCustomAttributeRecords(decoratedModule, decoratedMetadataToken);
+ MetadataImport scope = decoratedModule.MetadataImport;
+
+ scope.EnumCustomAttributes(decoratedMetadataToken, out MetadataEnumResult attributeTokens);
+
+ if (attributeTokens.Length == 0)
+ {
+ return false;
+ }
+ CustomAttributeRecord record = default;
if (attributeFilterType != null)
{
Debug.Assert(attributeCtorToken == 0);
- MetadataImport scope = decoratedModule.MetadataImport;
RuntimeType.ListBuilder
-
-
-
-
-
- .a
- .lib
-
-
-
-
-
-
-
-
-
-
diff --git a/src/coreclr/src/tools/aot/jitinterface/jitinterface.h b/src/coreclr/src/tools/aot/jitinterface/jitinterface.h
index ecb7e88915b7..37828567f2b6 100644
--- a/src/coreclr/src/tools/aot/jitinterface/jitinterface.h
+++ b/src/coreclr/src/tools/aot/jitinterface/jitinterface.h
@@ -171,6 +171,7 @@ struct JitInterfaceCallbacks
void (* reportFatalError)(void * thisHandle, CorInfoException** ppException, int result);
int (* allocMethodBlockCounts)(void * thisHandle, CorInfoException** ppException, unsigned int count, void** pBlockCounts);
int (* getMethodBlockCounts)(void * thisHandle, CorInfoException** ppException, void* ftnHnd, unsigned int* pCount, void** pBlockCounts, unsigned int* pNumRuns);
+ void* (* getLikelyClass)(void * thisHandle, CorInfoException** ppException, void* ftnHnd, void* baseHnd, unsigned int ilOffset, unsigned int* pLikelihood, unsigned int* pNumberOfClasses);
void (* recordCallSite)(void * thisHandle, CorInfoException** ppException, unsigned int instrOffset, void* callSig, void* methodHandle);
void (* recordRelocation)(void * thisHandle, CorInfoException** ppException, void* location, void* target, unsigned short fRelocType, unsigned short slotNum, int addlDelta);
unsigned short (* getRelocTypeHint)(void * thisHandle, CorInfoException** ppException, void* target);
@@ -1608,6 +1609,15 @@ class JitInterfaceWrapper
return _ret;
}
+ virtual void* getLikelyClass(void* ftnHnd, void* baseHnd, unsigned int ilOffset, unsigned int* pLikelihood, unsigned int* pNumberOfClasses)
+ {
+ CorInfoException* pException = nullptr;
+ void* _ret = _callbacks->getLikelyClass(_thisHandle, &pException, ftnHnd, baseHnd, ilOffset, pLikelihood, pNumberOfClasses);
+ if (pException != nullptr)
+ throw pException;
+ return _ret;
+ }
+
virtual void recordCallSite(unsigned int instrOffset, void* callSig, void* methodHandle)
{
CorInfoException* pException = nullptr;
diff --git a/src/coreclr/src/tools/aot/jitinterface/jitwrapper.cpp b/src/coreclr/src/tools/aot/jitinterface/jitwrapper.cpp
index 34cb99623b9a..f922a50c4a39 100644
--- a/src/coreclr/src/tools/aot/jitinterface/jitwrapper.cpp
+++ b/src/coreclr/src/tools/aot/jitinterface/jitwrapper.cpp
@@ -26,11 +26,11 @@ class CORJIT_FLAGS
uint64_t corJitFlags;
};
-static const GUID JITEEVersionIdentifier = { /* a0184d06-a562-43f6-94ad-44627db87310 */
- 0xa0184d06,
- 0xa562,
- 0x43f6,
- {0x94, 0xad, 0x44, 0x62, 0x7d, 0xb8, 0x73, 0x10}
+static const GUID JITEEVersionIdentifier = { /* 0d235fe4-65a1-487a-8553-c845496da901 */
+ 0x0d235fe4,
+ 0x65a1,
+ 0x487a,
+ {0x85, 0x53, 0xc8, 0x45, 0x49, 0x6d, 0xa9, 0x01}
};
class Jit
diff --git a/src/coreclr/src/tools/dotnet-pgo/Microsoft.Diagnostics.JitTrace/JitTraceRuntime.cs b/src/coreclr/src/tools/dotnet-pgo/Microsoft.Diagnostics.JitTrace/JitTraceRuntime.cs
index 68a0febb281d..d817bd437b44 100644
--- a/src/coreclr/src/tools/dotnet-pgo/Microsoft.Diagnostics.JitTrace/JitTraceRuntime.cs
+++ b/src/coreclr/src/tools/dotnet-pgo/Microsoft.Diagnostics.JitTrace/JitTraceRuntime.cs
@@ -120,7 +120,7 @@ public static void Prepare(StreamReader jittraceStream, out int successfulPrepar
int signatureLen = int.Parse(methodStrComponents[2]);
string[] methodInstantiationArgComponents = SplitAndUnescape(methodStrComponents[3], innerCsvEscapeChar, innerCsvEscapeCharArray);
int genericMethodArgCount = int.Parse(methodInstantiationArgComponents[0]);
- Type[] methodArgs = genericMethodArgCount != 0 ? new Type[genericMethodArgCount] : Array.Empty();
+ Type[] methodArgs = genericMethodArgCount != 0 ? new Type[genericMethodArgCount] : Type.EmptyTypes;
bool abortMethodDiscovery = false;
for (int iMethodArg = 0; iMethodArg < genericMethodArgCount; iMethodArg++)
{
diff --git a/src/coreclr/src/tools/r2rdump/R2RDiff.cs b/src/coreclr/src/tools/r2rdump/R2RDiff.cs
index 25e6dd9d6a2d..ff660a9c1dc8 100644
--- a/src/coreclr/src/tools/r2rdump/R2RDiff.cs
+++ b/src/coreclr/src/tools/r2rdump/R2RDiff.cs
@@ -90,13 +90,28 @@ public void Run()
}
}
+ private bool TryGetMethods(ReadyToRunReader reader, ReadyToRunSection section, out IReadOnlyList methods)
+ {
+ int assemblyIndex = reader.GetAssemblyIndex(section);
+ if (assemblyIndex == -1)
+ {
+ methods = null;
+ return false;
+ }
+ else
+ {
+ methods = reader.ReadyToRunAssemblies[assemblyIndex].Methods;
+ return true;
+ }
+ }
+
private void DiffMethodsForModule(ReadyToRunSection leftSection, ReadyToRunSection rightSection)
{
- if (!_leftDumper.Reader.Methods.TryGetValue(leftSection, out List leftSectionMethods))
+ if (!TryGetMethods(_leftDumper.Reader, leftSection, out IReadOnlyList leftSectionMethods))
{
leftSectionMethods = new List();
}
- if (!_rightDumper.Reader.Methods.TryGetValue(rightSection, out List rightSectionMethods))
+ if (!TryGetMethods(_rightDumper.Reader, rightSection, out IReadOnlyList rightSectionMethods))
{
rightSectionMethods = new List();
}
@@ -290,7 +305,7 @@ private void ShowDiff(Dictionary leftObjects, Dictionary methodMap = new Dictionary();
- if (reader.Methods.TryGetValue(section, out List sectionMethods))
+ if (TryGetMethods(reader, section, out IReadOnlyList sectionMethods))
{
foreach (ReadyToRunMethod method in sectionMethods)
{
@@ -309,7 +324,7 @@ private void ShowDiff(Dictionary leftObjects, DictionarySet of common signatures of methods to dump
private void DumpCommonMethods(Dumper dumper, ReadyToRunSection section, Dictionary signatureFilter)
{
- if (dumper.Reader.Methods.TryGetValue(section, out List sectionMethods))
+ if (!TryGetMethods(dumper.Reader, section, out IReadOnlyList sectionMethods))
{
IEnumerable filteredMethods = sectionMethods
.Where(method => signatureFilter.ContainsKey(method.SignatureString))
diff --git a/src/coreclr/src/tools/r2rdump/R2RDump.cs b/src/coreclr/src/tools/r2rdump/R2RDump.cs
index fa21ad441827..d2909a6e1bc4 100644
--- a/src/coreclr/src/tools/r2rdump/R2RDump.cs
+++ b/src/coreclr/src/tools/r2rdump/R2RDump.cs
@@ -176,7 +176,7 @@ public IEnumerable NormalizedSections(ReadyToRunCoreHeader he
public IEnumerable NormalizedMethods()
{
- IEnumerable methods = _r2r.Methods.Values.SelectMany(sectionMethods => sectionMethods);
+ IEnumerable methods = _r2r.Methods;
if (_options.Normalize)
{
methods = methods.OrderBy((m) => m.SignatureString);
@@ -492,7 +492,7 @@ private bool Match(ReadyToRunSection section, string query)
public IList FindMethod(ReadyToRunReader r2r, string query, bool exact)
{
List res = new List();
- foreach (ReadyToRunMethod method in r2r.Methods.Values.SelectMany(sectionMethods => sectionMethods))
+ foreach (ReadyToRunMethod method in r2r.Methods)
{
if (Match(method, query, exact))
{
@@ -529,7 +529,7 @@ public IList FindSection(ReadyToRunReader r2r, string query)
/// The name or value to search for
public RuntimeFunction FindRuntimeFunction(ReadyToRunReader r2r, int rtfQuery)
{
- foreach (ReadyToRunMethod m in r2r.Methods.Values.SelectMany(sectionMethods => sectionMethods))
+ foreach (ReadyToRunMethod m in r2r.Methods)
{
foreach (RuntimeFunction rtf in m.RuntimeFunctions)
{
diff --git a/src/coreclr/src/tools/r2rdump/R2RDump.csproj b/src/coreclr/src/tools/r2rdump/R2RDump.csproj
index 0b575b257ff2..7d1a73bff7cf 100644
--- a/src/coreclr/src/tools/r2rdump/R2RDump.csproj
+++ b/src/coreclr/src/tools/r2rdump/R2RDump.csproj
@@ -4,7 +4,8 @@
1.0.0.0trueExe
- AnyCPU
+ x64;x86;arm64;arm
+ AnyCPUOpentrue$(NetCoreAppToolCurrent)
@@ -12,18 +13,18 @@
8002,NU1701win-x64;win-x86$(RuntimeBinDir)/R2RDump
- AnyCPU;x64
+
-
- 1.0.1-prerelease-00005
- $(SystemCommandLineVersion)
+
+ PreserveNewest
+
diff --git a/src/coreclr/src/tools/r2rdump/TextDumper.cs b/src/coreclr/src/tools/r2rdump/TextDumper.cs
index 682abd7c05f6..bf36df822ab2 100644
--- a/src/coreclr/src/tools/r2rdump/TextDumper.cs
+++ b/src/coreclr/src/tools/r2rdump/TextDumper.cs
@@ -133,7 +133,7 @@ internal override void DumpEntryPoints()
internal override void DumpAllMethods()
{
WriteDivider("R2R Methods");
- _writer.WriteLine($"{_r2r.Methods.Sum(kvp => kvp.Value.Count)} methods");
+ _writer.WriteLine($"{_r2r.Methods.Count()} methods");
SkipLine();
foreach (ReadyToRunMethod method in NormalizedMethods())
{
@@ -161,7 +161,7 @@ internal override void DumpMethod(ReadyToRunMethod method)
if (_options.Raw)
{
- DumpBytes(gcInfo.Offset, (uint)gcInfo.Size, "", false);
+ DumpBytes(method.GcInfoRva, (uint)gcInfo.Size);
}
}
SkipLine();
@@ -226,9 +226,8 @@ internal override void DumpDisasm(RuntimeFunction rtf, int imageOffset)
}
_writer.WriteLine();
}
-
BaseGcInfo gcInfo = (_options.HideTransitions ? null : rtf.Method?.GcInfo);
- if (gcInfo != null && gcInfo.Transitions.TryGetValue(codeOffset, out List transitionsForOffset))
+ if (gcInfo != null && gcInfo.Transitions != null && gcInfo.Transitions.TryGetValue(codeOffset, out List transitionsForOffset))
{
string[] formattedTransitions = new string[transitionsForOffset.Count];
for (int transitionIndex = 0; transitionIndex < formattedTransitions.Length; transitionIndex++)
@@ -304,10 +303,11 @@ internal override void DumpSectionContents(ReadyToRunSection section)
_writer.WriteLine(availableTypes.ToString());
}
- if (_r2r.AvailableTypes.TryGetValue(section, out List sectionTypes))
+ int assemblyIndex1 = _r2r.GetAssemblyIndex(section);
+ if (assemblyIndex1 != -1)
{
_writer.WriteLine();
- foreach (string name in sectionTypes)
+ foreach (string name in _r2r.ReadyToRunAssemblies[assemblyIndex1].AvailableTypes)
{
_writer.WriteLine(name);
}
@@ -320,10 +320,11 @@ internal override void DumpSectionContents(ReadyToRunSection section)
_writer.Write(methodEntryPoints.ToString());
}
- if (_r2r.Methods.TryGetValue(section, out List sectionMethods))
+ int assemblyIndex2 = _r2r.GetAssemblyIndex(section);
+ if (assemblyIndex2 != -1)
{
_writer.WriteLine();
- foreach (ReadyToRunMethod method in sectionMethods)
+ foreach (ReadyToRunMethod method in _r2r.ReadyToRunAssemblies[assemblyIndex2].Methods)
{
_writer.WriteLine($@"{MetadataTokens.GetToken(method.MethodHandle):X8}: {method.SignatureString}");
}
diff --git a/src/coreclr/src/tools/r2rtest/BuildFolderSet.cs b/src/coreclr/src/tools/r2rtest/BuildFolderSet.cs
index 4a7c94d829b3..89bc481a07d7 100644
--- a/src/coreclr/src/tools/r2rtest/BuildFolderSet.cs
+++ b/src/coreclr/src/tools/r2rtest/BuildFolderSet.cs
@@ -535,7 +535,7 @@ private void AddBuildFolderExecutions(List executionsToRun, BuildFo
foreach (ProcessInfo[] compilation in folder.Compilations)
{
ProcessInfo runnerCompilation = compilation[(int)runner.Index];
- if (!runnerCompilation.Succeeded)
+ if (!runnerCompilation.IsEmpty && !runnerCompilation.Succeeded)
{
compilationsSucceeded = false;
break;
@@ -636,7 +636,7 @@ private void WriteBuildStatistics(StreamWriter logWriter)
bool anyCompilationFailed = false;
foreach (CompilerRunner runner in _compilerRunners)
{
- if (compilation[(int)runner.Index] != null)
+ if (!compilation[(int)runner.Index].IsEmpty)
{
CompilationOutcome outcome = GetCompilationOutcome(compilation[(int)runner.Index]);
compilationOutcomes[(int)outcome, (int)runner.Index]++;
diff --git a/src/coreclr/src/utilcode/stresslog.cpp b/src/coreclr/src/utilcode/stresslog.cpp
index 7d01fc09ca6b..108080455d79 100644
--- a/src/coreclr/src/utilcode/stresslog.cpp
+++ b/src/coreclr/src/utilcode/stresslog.cpp
@@ -151,7 +151,7 @@ void StressLog::Initialize(unsigned facilities, unsigned level, unsigned maxByt
return;
}
- theLog.lock = ClrCreateCriticalSection(CrstStressLog,(CrstFlags)(CRST_UNSAFE_ANYMODE|CRST_DEBUGGER_THREAD));
+ theLog.lock = ClrCreateCriticalSection(CrstStressLog,(CrstFlags)(CRST_UNSAFE_ANYMODE|CRST_DEBUGGER_THREAD|CRST_TAKEN_DURING_SHUTDOWN));
// StressLog::Terminate is going to free memory.
if (maxBytesPerThread < STRESSLOG_CHUNK_SIZE)
{
diff --git a/src/coreclr/src/vm/appdomain.cpp b/src/coreclr/src/vm/appdomain.cpp
index 1ba7c47cd50a..f703b4214cea 100644
--- a/src/coreclr/src/vm/appdomain.cpp
+++ b/src/coreclr/src/vm/appdomain.cpp
@@ -1517,11 +1517,6 @@ void SystemDomain::LoadBaseSystemClasses()
// Load String
g_pStringClass = CoreLibBinder::LoadPrimitiveType(ELEMENT_TYPE_STRING);
-#ifdef FEATURE_UTF8STRING
- // Load Utf8String
- g_pUtf8StringClass = CoreLibBinder::GetClass(CLASS__UTF8_STRING);
-#endif // FEATURE_UTF8STRING
-
#ifndef CROSSGEN_COMPILE
ECall::PopulateManagedStringConstructors();
#endif // CROSSGEN_COMPILE
diff --git a/src/coreclr/src/vm/bundle.cpp b/src/coreclr/src/vm/bundle.cpp
index 3a204deb2cfb..373ab591b432 100644
--- a/src/coreclr/src/vm/bundle.cpp
+++ b/src/coreclr/src/vm/bundle.cpp
@@ -30,25 +30,26 @@ const SString &BundleFileLocation::Path() const
return Bundle::AppBundle->Path();
}
-Bundle::Bundle(LPCWSTR bundlePath, BundleProbe *probe)
+Bundle::Bundle(LPCSTR bundlePath, BundleProbe *probe)
{
STANDARD_VM_CONTRACT;
_ASSERTE(probe != nullptr);
- m_path.Set(bundlePath);
+ m_path.SetUTF8(bundlePath);
m_probe = probe;
// The bundle-base path is the directory containing the single-file bundle.
// When the Probe() function searches within the bundle, it masks out the basePath from the assembly-path (if found).
- LPCWSTR pos = wcsrchr(bundlePath, DIRECTORY_SEPARATOR_CHAR_W);
+ LPCSTR pos = strrchr(bundlePath, DIRECTORY_SEPARATOR_CHAR_A);
_ASSERTE(pos != nullptr);
- size_t baseLen = pos - bundlePath + 1; // Include DIRECTORY_SEPARATOR_CHAR_W in m_basePath
- m_basePath.Set(bundlePath, (COUNT_T)baseLen);
+ size_t baseLen = pos - bundlePath + 1; // Include DIRECTORY_SEPARATOR_CHAR_A in m_basePath
+ m_basePath.SetUTF8(bundlePath, (COUNT_T)baseLen);
+ m_basePathLength = (COUNT_T)baseLen;
}
-BundleFileLocation Bundle::Probe(LPCWSTR path, bool pathIsBundleRelative) const
+BundleFileLocation Bundle::Probe(const SString& path, bool pathIsBundleRelative) const
{
STANDARD_VM_CONTRACT;
@@ -59,17 +60,18 @@ BundleFileLocation Bundle::Probe(LPCWSTR path, bool pathIsBundleRelative) const
// Bundle.Probe("path/to/exe/lib.dll") => m_probe("lib.dll")
// Bundle.Probe("path/to/exe/and/some/more/lib.dll") => m_probe("and/some/more/lib.dll")
+ StackScratchBuffer scratchBuffer;
+ LPCSTR utf8Path(path.GetUTF8(scratchBuffer));
+
if (!pathIsBundleRelative)
{
- size_t baseLen = m_basePath.GetCount();
-
#ifdef TARGET_UNIX
- if (wcsncmp(m_basePath, path, baseLen) == 0)
+ if (wcsncmp(m_basePath, path, m_basePath.GetCount()) == 0)
#else
- if (_wcsnicmp(m_basePath, path, baseLen) == 0)
+ if (_wcsnicmp(m_basePath, path, m_basePath.GetCount()) == 0)
#endif // TARGET_UNIX
{
- path += baseLen; // m_basePath includes count for DIRECTORY_SEPARATOR_CHAR_W
+ utf8Path += m_basePathLength; // m_basePath includes count for DIRECTORY_SEPARATOR_CHAR_W
}
else
{
@@ -78,15 +80,14 @@ BundleFileLocation Bundle::Probe(LPCWSTR path, bool pathIsBundleRelative) const
}
}
- m_probe(path, &loc.Offset, &loc.Size);
+ m_probe(utf8Path, &loc.Offset, &loc.Size);
return loc;
}
-BundleFileLocation Bundle::ProbeAppBundle(LPCWSTR path, bool pathIsBundleRelative)
+BundleFileLocation Bundle::ProbeAppBundle(const SString& path, bool pathIsBundleRelative)
{
STANDARD_VM_CONTRACT;
return AppIsBundle() ? AppBundle->Probe(path, pathIsBundleRelative) : BundleFileLocation::Invalid();
}
-
diff --git a/src/coreclr/src/vm/ceeload.h b/src/coreclr/src/vm/ceeload.h
index 4ac12e59f645..f87e84312548 100644
--- a/src/coreclr/src/vm/ceeload.h
+++ b/src/coreclr/src/vm/ceeload.h
@@ -3282,7 +3282,7 @@ class ReflectionModule : public Module
void Destruct();
#endif // !DACCESS_COMPILE && !CROSSGEN_COMPILE
- // Overides functions to access sections
+ // Overrides functions to access sections
virtual TADDR GetIL(RVA target);
virtual PTR_VOID GetRvaField(RVA rva, BOOL fZapped);
diff --git a/src/coreclr/src/vm/classnames.h b/src/coreclr/src/vm/classnames.h
index e2af51817f16..59e516d3e3a4 100644
--- a/src/coreclr/src/vm/classnames.h
+++ b/src/coreclr/src/vm/classnames.h
@@ -94,10 +94,6 @@
#define g_ThreadClassName "System.Threading.Thread"
#define g_TypeClassName "System.Type"
-#ifdef FEATURE_UTF8STRING
-#define g_Utf8StringName "Utf8String"
-#endif // FEATURE_UTF8STRING
-
#define g_VariantClassName "System.Variant"
#define g_GuidClassName "System.Guid"
diff --git a/src/coreclr/src/vm/codeman.cpp b/src/coreclr/src/vm/codeman.cpp
index 8fb9fdea1197..c4f00736defb 100644
--- a/src/coreclr/src/vm/codeman.cpp
+++ b/src/coreclr/src/vm/codeman.cpp
@@ -1557,6 +1557,39 @@ struct JIT_LOAD_DATA
// Here's the global data for JIT load and initialization state.
JIT_LOAD_DATA g_JitLoadData;
+// Validate that the name used to load the JIT is just a simple file name
+// and does not contain something that could be used in a non-qualified path.
+// For example, using the string "..\..\..\myjit.dll" we might attempt to
+// load a JIT from the root of the drive.
+//
+// The minimal set of characters that we must check for and exclude are:
+// '\\' - (backslash)
+// '/' - (forward slash)
+// ':' - (colon)
+//
+// Returns false if we find any of these characters in 'pwzJitName'
+// Returns true if we reach the null terminator without encountering
+// any of these characters.
+//
+static bool ValidateJitName(LPCWSTR pwzJitName)
+{
+ LPCWSTR pCurChar = pwzJitName;
+ wchar_t curChar;
+ do {
+ curChar = *pCurChar;
+ if ((curChar == '\\') || (curChar == '/') || (curChar == ':'))
+ {
+ // Return false if we find any of these character in 'pwzJitName'
+ return false;
+ }
+ pCurChar++;
+ } while (curChar != 0);
+
+ // Return true; we have reached the null terminator
+ //
+ return true;
+}
+
// LoadAndInitializeJIT: load the JIT dll into the process, and initialize it (call the UtilCode initialization function,
// check the JIT-EE interface GUID, etc.)
//
@@ -1589,34 +1622,40 @@ static void LoadAndInitializeJIT(LPCWSTR pwzJitName, OUT HINSTANCE* phJit, OUT I
*phJit = NULL;
*ppICorJitCompiler = NULL;
- HRESULT hr = E_FAIL;
-
- PathString CoreClrFolderHolder;
- bool havePath = false;
-
- if (GetClrModulePathName(CoreClrFolderHolder))
+ if (pwzJitName == nullptr)
{
- // Load JIT from next to CoreCLR binary
- havePath = true;
+ pJitLoadData->jld_hr = E_FAIL;
+ LOG((LF_JIT, LL_FATALERROR, "LoadAndInitializeJIT: pwzJitName is null"));
+ return;
}
- if (havePath && !CoreClrFolderHolder.IsEmpty())
+ HRESULT hr = E_FAIL;
+
+ if (ValidateJitName(pwzJitName))
{
- SString::Iterator iter = CoreClrFolderHolder.End();
- BOOL findSep = CoreClrFolderHolder.FindBack(iter, DIRECTORY_SEPARATOR_CHAR_W);
- if (findSep)
+ // Load JIT from next to CoreCLR binary
+ PathString CoreClrFolderHolder;
+ if (GetClrModulePathName(CoreClrFolderHolder) && !CoreClrFolderHolder.IsEmpty())
{
- SString sJitName(pwzJitName);
- CoreClrFolderHolder.Replace(iter + 1, CoreClrFolderHolder.End() - (iter + 1), sJitName);
-
- *phJit = CLRLoadLibrary(CoreClrFolderHolder.GetUnicode());
- if (*phJit != NULL)
+ SString::Iterator iter = CoreClrFolderHolder.End();
+ BOOL findSep = CoreClrFolderHolder.FindBack(iter, DIRECTORY_SEPARATOR_CHAR_W);
+ if (findSep)
{
- hr = S_OK;
+ SString sJitName(pwzJitName);
+ CoreClrFolderHolder.Replace(iter + 1, CoreClrFolderHolder.End() - (iter + 1), sJitName);
+
+ *phJit = CLRLoadLibrary(CoreClrFolderHolder.GetUnicode());
+ if (*phJit != NULL)
+ {
+ hr = S_OK;
+ }
}
}
}
-
+ else
+ {
+ LOG((LF_JIT, LL_FATALERROR, "LoadAndInitializeJIT: invalid characters in %S\n", pwzJitName));
+ }
if (SUCCEEDED(hr))
{
@@ -4367,7 +4406,17 @@ LPCWSTR ExecutionManager::GetJitName()
{
STANDARD_VM_CONTRACT;
- return MAKEDLLNAME_W(W("clrjit"));
+ LPCWSTR pwzJitName = NULL;
+
+ // Try to obtain a name for the jit library from the env. variable
+ IfFailThrow(CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_JitName, const_cast(&pwzJitName)));
+
+ if (NULL == pwzJitName)
+ {
+ pwzJitName = MAKEDLLNAME_W(W("clrjit"));
+ }
+
+ return pwzJitName;
}
#endif // !FEATURE_MERGE_JIT_AND_ENGINE
diff --git a/src/coreclr/src/vm/comcallablewrapper.cpp b/src/coreclr/src/vm/comcallablewrapper.cpp
index 5907d36ff9a1..a0d8891616cc 100644
--- a/src/coreclr/src/vm/comcallablewrapper.cpp
+++ b/src/coreclr/src/vm/comcallablewrapper.cpp
@@ -380,23 +380,6 @@ bool IsOleAutDispImplRequiredForClass(MethodTable *pClass)
return false;
}
-MethodTable* RefineProxy(OBJECTREF pServer)
-{
- CONTRACT (MethodTable*)
- {
- THROWS;
- GC_TRIGGERS;
- MODE_COOPERATIVE;
- POSTCONDITION(CheckPointer(RETVAL, NULL_OK));
- }
- CONTRACT_END;
-
- MethodTable* pRefinedClass = NULL;
-
-
- RETURN pRefinedClass;
-}
-
//--------------------------------------------------------------------------
// This routine is called anytime a com method is invoked for the first time.
// It is responsible for generating the real stub.
@@ -906,31 +889,6 @@ SimpleComCallWrapper::~SimpleComCallWrapper()
Cleanup();
}
-//--------------------------------------------------------------------------
-// Creates a simple wrapper off the process heap (thus avoiding any debug
-// memory tracking) and initializes the memory to zero
-// static
-//--------------------------------------------------------------------------
-//
-SimpleComCallWrapper* SimpleComCallWrapper::CreateSimpleWrapper()
-{
- CONTRACT (SimpleComCallWrapper*)
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- INJECT_FAULT(COMPlusThrowOM());
- POSTCONDITION(CheckPointer(RETVAL));
- }
- CONTRACT_END;
-
- NewHolder pWrapper = new SimpleComCallWrapper;
- memset (pWrapper, 0, sizeof(SimpleComCallWrapper));
-
- pWrapper.SuppressRelease();
- RETURN pWrapper;
-}
-
//--------------------------------------------------------------------------
// Init, with the MethodTable, pointer to the vtable of the interface
// and the main ComCallWrapper if the interface needs it
@@ -2007,13 +1965,13 @@ void ComCallWrapper::Cleanup()
_ASSERTE(m_pSimpleWrapper);
// Save it into a variable to observe a consistent state
- LONGLONG llRefCount = m_pSimpleWrapper->GetRealRefCount();
+ ULONG refCount = m_pSimpleWrapper->GetRefCount();
LOG((LF_INTEROP, LL_INFO100,
"Calling ComCallWrapper::Cleanup on CCW 0x%p. cbRef = 0x%x\n",
- this, GET_COM_REF(llRefCount)));
+ this, refCount));
- if (GET_COM_REF(llRefCount) != 0)
+ if (refCount != 0)
{
// _ASSERTE(g_fEEShutDown == TRUE);
// could be either in shutdown or forced GC in appdomain unload
@@ -2221,9 +2179,6 @@ ComCallWrapper* ComCallWrapper::CreateWrapper(OBJECTREF* ppObj, ComCallWrapperTe
pServer = *ppObj;
- // Force Refine the object if it is a transparent proxy
- RefineProxy(pServer);
-
// grab the sync block from the server
SyncBlock* pSyncBlock = pServer->GetSyncBlock();
@@ -2283,7 +2238,7 @@ ComCallWrapper* ComCallWrapper::CreateWrapper(OBJECTREF* ppObj, ComCallWrapperTe
// copy from template
pNewCCW = CopyFromTemplate(pTemplate, pWrapperCache, oh);
- NewHolder pSimpleWrap = SimpleComCallWrapper::CreateSimpleWrapper();
+ NewHolder pSimpleWrap = new SimpleComCallWrapper();
pSimpleWrap->InitNew(pServer, pWrapperCache, pNewCCW, pClassCCW, pSyncBlock, pTemplate);
@@ -2488,78 +2443,6 @@ VOID __stdcall InvokeICustomQueryInterfaceGetInterface_CallBack(LPVOID ptr)
}
}
-// Returns a covariant supertype of pMT with the given IID or NULL if not found.
-static MethodTable *FindCovariantSubtype(MethodTable *pMT, REFIID riid)
-{
- CONTRACTL
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- PRECONDITION(pMT->IsInterface() && pMT->HasVariance());
- }
- CONTRACTL_END;
-
- Instantiation inst = pMT->GetInstantiation();
-
- // we only support one type parameter
- if (inst.GetNumArgs() != 1)
- return NULL;
-
- // and it must be covariant
- if (pMT->GetClass()->GetVarianceOfTypeParameter(0) != gpCovariant)
- return NULL;
-
- TypeHandle thArg = inst[0];
-
- // arrays are not allowed, valuetypes don't support covariance
- if (thArg.IsTypeDesc() || thArg.IsArray() || thArg.IsValueType())
- return NULL;
-
- // if the argument is System.Object, there's no covariant supertype
- if (thArg.IsObjectType())
- return NULL;
-
- GUID guid;
- TypeHandle thBaseClass = thArg.GetParent();
-
- // try base classes first (this includes System.Object if thArg is an interface)
- while (!thBaseClass.IsNull())
- {
- // The internal base classes do not have guid. Skip them to avoid confusing exception being
- // thrown and swallowed inside GetGuidNoThrow.
- if (thBaseClass != TypeHandle(g_pBaseCOMObject))
- {
- Instantiation newInst(&thBaseClass, 1);
- MethodTable *pItfMT = TypeHandle(pMT).Instantiate(newInst).AsMethodTable();
-
- if (SUCCEEDED(pItfMT->GetGuidNoThrow(&guid, FALSE, FALSE)) && guid == riid)
- {
- return pItfMT;
- }
- }
-
- thBaseClass = thBaseClass.GetParent();
- }
-
- // now try implemented interfaces
- MethodTable::InterfaceMapIterator it = thArg.AsMethodTable()->IterateInterfaceMap();
- while (it.Next())
- {
- TypeHandle thNewArg = TypeHandle(it.GetInterface());
- Instantiation newInst(&thNewArg, 1);
-
- MethodTable *pItfMT = TypeHandle(pMT).Instantiate(newInst).AsMethodTable();
-
- if (SUCCEEDED(pItfMT->GetGuidNoThrow(&guid, FALSE, FALSE)) && guid == riid)
- {
- return pItfMT;
- }
- }
-
- return NULL;
-}
-
//--------------------------------------------------------------------------
// check if the interface is supported, return a index into the IMap
// returns -1, if pIntfMT is not supported
@@ -2612,52 +2495,6 @@ static IUnknown *GetComIPFromCCW_VisibilityCheck(
RETURN pIntf;
}
-static IUnknown *GetComIPFromCCW_VariantInterface(
- ComCallWrapper *pWrap,
- REFIID riid,
- MethodTable *pIntfMT,
- GetComIPFromCCW::flags flags,
- ComCallWrapperTemplate *pTemplate)
-{
- CONTRACT(IUnknown*)
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- PRECONDITION(CheckPointer(pWrap));
- }
- CONTRACT_END;
-
- IUnknown* pIntf = NULL;
- ComMethodTable *pIntfComMT = NULL;
-
- // we are only going to respond to the one interface that this CCW represents
- pIntfComMT = pTemplate->GetComMTForIndex(0);
- if (pIntfComMT->GetIID() == riid || (pIntfMT != NULL && GetIndexForIntfMT(pTemplate, pIntfMT) == 0))
- {
- SLOT **ppVtable = pWrap->GetFirstInterfaceSlot();
- _ASSERTE(*ppVtable != NULL); // this should point to COM Vtable or interface vtable
-
- if (!pIntfComMT->IsLayoutComplete() && !pIntfComMT->LayOutInterfaceMethodTable(NULL))
- {
- RETURN NULL;
- }
-
- // The interface pointer is the pointer to the vtable.
- pIntf = (IUnknown*)ppVtable;
-
- // AddRef the wrapper.
- // Note that we don't do SafeAddRef(pIntf) because it's overkill to
- // go via IUnknown when we already have the wrapper in-hand.
- pWrap->AddRefWithAggregationCheck();
-
- RETURN GetComIPFromCCW_VisibilityCheck(pIntf, pIntfMT, pIntfComMT, flags);
- }
-
- // for anything else, fall back to the CCW representing the "parent" class
- RETURN ComCallWrapper::GetComIPFromCCW(pWrap->GetSimpleWrapper()->GetClassWrapper(), riid, pIntfMT, flags);
-}
-
static IUnknown * GetComIPFromCCW_HandleExtendsCOMObject(
ComCallWrapper * pWrap,
REFIID riid,
@@ -3700,78 +3537,6 @@ void ComMethodTable::LayOutClassMethodTable()
LOG((LF_INTEROP, LL_INFO1000, "LayOutClassMethodTable: %s, parent: %s, this: %p [DONE]\n", m_pMT->GetDebugClassName(), pParentClass ? pParentClass->GetDebugClassName() : 0, this));
}
-
-BOOL ComMethodTable::CheckSigTypesCanBeLoaded(MethodTable *pItfClass)
-{
- CONTRACTL
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- PRECONDITION(CheckPointer(pItfClass));
- }
- CONTRACTL_END;
-
- if (!IsLayoutComplete())
- {
- if (!IsSigClassLoadChecked())
- {
- BOOL fCheckSuccess = TRUE;
- unsigned cbSlots = pItfClass->GetNumVirtuals();
-
- GCX_COOP();
- OBJECTREF pThrowable = NULL;
- GCPROTECT_BEGIN(pThrowable);
- {
- EX_TRY
- {
- // check the sigs of the methods to see if we can load
- // all the classes
- for (unsigned i = 0; i < cbSlots; i++)
- {
- MethodDesc* pIntfMD = m_pMT->GetMethodDescForSlot(i);
- MetaSig::CheckSigTypesCanBeLoaded(pIntfMD);
- }
- }
- EX_CATCH_THROWABLE(&pThrowable);
-
- if (pThrowable != NULL)
- {
- HRESULT hr = SetupErrorInfo(pThrowable);
-
- if (hr == COR_E_TYPELOAD)
- {
- // We only care about TypeLoadExceptions here. If one occurs, it means
- // that some of the type in the signature could not be loaded so this
- // interface is not useable from COM.
- SetSigClassCannotLoad();
- }
- else
- {
- // We want to rethrow any other exceptions that occur.
- COMPlusThrow(pThrowable);
- }
- }
- }
- GCPROTECT_END();
-
- SetSigClassLoadChecked();
- }
-
- _ASSERTE(IsSigClassLoadChecked() != 0);
-
- // check if all types loaded successfully
- if (IsSigClassCannotLoad())
- {
- LogInterop(W("CLASS LOAD FAILURE: in Interface method signature"));
- return FALSE;
- }
- }
- return TRUE;
-}
-
-
-
//--------------------------------------------------------------------------
// Lay out the members of a ComMethodTable that represents an interface.
//--------------------------------------------------------------------------
@@ -4909,74 +4674,6 @@ ComMethodTable* ComCallWrapperTemplate::CreateComMethodTableForBasic(MethodTable
RETURN pComMT;
}
-//--------------------------------------------------------------------------
-// Creates a ComMethodTable for a WinRT-exposed delegate class.
-//--------------------------------------------------------------------------
-ComMethodTable* ComCallWrapperTemplate::CreateComMethodTableForDelegate(MethodTable *pDelegateMT)
-{
- CONTRACT (ComMethodTable*)
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- INJECT_FAULT(COMPlusThrowOM());
- PRECONDITION(CheckPointer(pDelegateMT));
- PRECONDITION(pDelegateMT->IsDelegate());
- POSTCONDITION(CheckPointer(RETVAL));
- }
- CONTRACT_END;
-
- const unsigned cbExtraSlots = ComMethodTable::GetNumExtraSlots(ifVtable);
- const unsigned cbTotalSlots = 1; // one slot for the Invoke method
-
- LOG((LF_INTEROP, LL_INFO1000, "CreateComMethodTableForDelegate %s\n", pDelegateMT->GetClass()->GetDebugClassName()));
-
- // Alloc space for the delegate COM method table
- LOG((LF_INTEROP, LL_INFO1000, "cbExtraSlots: %d\n", cbExtraSlots));
- LOG((LF_INTEROP, LL_INFO1000, "cbTotalSlots: %d\n", cbTotalSlots));
-
- // Alloc COM vtable & method descs
- S_UINT32 cbVtable = (S_UINT32(cbTotalSlots) + S_UINT32(cbExtraSlots)) * S_UINT32(sizeof(SLOT));
- S_UINT32 cbMethDescs = S_UINT32(cbTotalSlots) * S_UINT32((COMMETHOD_PREPAD + sizeof(ComCallMethodDesc)));
- S_UINT32 cbToAlloc = S_UINT32(sizeof(ComMethodTable)) + cbVtable + cbMethDescs;
-
- if (cbToAlloc.IsOverflow())
- ThrowHR(COR_E_OVERFLOW);
-
- NewExecutableHolder pComMT = (ComMethodTable*) new (executable) BYTE[cbToAlloc.Value()];
-
- // set up the header
- pComMT->m_ptReserved = (SLOT)(size_t)0xDEADC0FF; // reserved
- pComMT->m_pMT = pDelegateMT;
- pComMT->m_cbRefCount = 0;
- pComMT->m_pMDescr = NULL;
- pComMT->m_pITypeInfo = NULL;
- pComMT->m_pDispatchInfo = NULL;
- pComMT->m_cbSlots = cbTotalSlots; // number of slots not counting IUnknown methods.
-
- // Set the flags.
- pComMT->m_Flags = enum_ClassVtableMask | clsIfNone | enum_ComVisible;
-
- MethodTable *pMTForIID = pDelegateMT;
- pMTForIID->GetGuid(&pComMT->m_IID, TRUE);
-
- pComMT->m_Flags |= enum_GuidGenerated;
-
-#if _DEBUG
- {
- // In debug set all the vtable slots to 0xDEADCA11.
- SLOT *pComVTable = (SLOT*)(pComMT + 1);
- for (unsigned iComSlots = 0; iComSlots < cbTotalSlots + cbExtraSlots; iComSlots++)
- *(pComVTable + iComSlots) = (SLOT)(size_t)0xDEADCA11;
- }
-#endif
-
- LOG((LF_INTEROP, LL_INFO1000, "---------- end of CreateComMethodTableForDelegate %s -----------\n", pDelegateMT->GetClass()->GetDebugClassName()));
-
- pComMT.SuppressRelease();
- RETURN pComMT;
-}
-
//--------------------------------------------------------------------------
// Creates a ComMethodTable for an interface and stores it in the m_rgpIPtr array.
//--------------------------------------------------------------------------
diff --git a/src/coreclr/src/vm/comcallablewrapper.h b/src/coreclr/src/vm/comcallablewrapper.h
index c50fbd873b99..887e09aece60 100644
--- a/src/coreclr/src/vm/comcallablewrapper.h
+++ b/src/coreclr/src/vm/comcallablewrapper.h
@@ -390,7 +390,6 @@ class ComCallWrapperTemplate
ComMethodTable* CreateComMethodTableForClass(MethodTable *pClassMT);
ComMethodTable* CreateComMethodTableForInterface(MethodTable* pInterfaceMT);
ComMethodTable* CreateComMethodTableForBasic(MethodTable* pClassMT);
- ComMethodTable* CreateComMethodTableForDelegate(MethodTable *pDelegateMT);
void DetermineComVisibility();
ComCallWrapperTemplate* FindInvisibleParent();
@@ -471,8 +470,8 @@ enum Masks
enum_ClassVtableMask = 0x00000004,
enum_LayoutComplete = 0x00000010,
enum_ComVisible = 0x00000040,
- enum_SigClassCannotLoad = 0x00000080,
- enum_SigClassLoadChecked = 0x00000100,
+ // enum_unused = 0x00000080,
+ // enum_unused = 0x00000100,
enum_ComClassItf = 0x00000200,
enum_GuidGenerated = 0x00000400,
// enum_unused = 0x00001000,
@@ -588,30 +587,6 @@ struct ComMethodTable
return ((ComCallWrapperTemplate*)m_pMT->GetComCallWrapperTemplate())->HasInvisibleParent();
}
- BOOL IsSigClassLoadChecked()
- {
- LIMITED_METHOD_CONTRACT;
- return (m_Flags & enum_SigClassLoadChecked) != 0;
- }
-
- BOOL IsSigClassCannotLoad()
- {
- LIMITED_METHOD_CONTRACT;
- return 0 != (m_Flags & enum_SigClassCannotLoad);
- }
-
- VOID SetSigClassCannotLoad()
- {
- LIMITED_METHOD_CONTRACT;
- m_Flags |= enum_SigClassCannotLoad;
- }
-
- VOID SetSigClassLoadChecked()
- {
- LIMITED_METHOD_CONTRACT;
- m_Flags |= enum_SigClassLoadChecked;
- }
-
DWORD GetSlots()
{
LIMITED_METHOD_CONTRACT;
@@ -807,9 +782,6 @@ struct ComMethodTable
}
private:
- // Helper methods.
- BOOL CheckSigTypesCanBeLoaded(MethodTable *pItfClass);
-
SLOT m_ptReserved; //= (SLOT) 0xDEADC0FF; reserved
PTR_MethodTable m_pMT; // pointer to the VMs method table
ULONG m_cbSlots; // number of slots in the interface (excluding IUnk/IDisp)
@@ -1411,9 +1383,6 @@ public :
FastInterlockOr((ULONG*)&m_flags, enum_IsComActivated);
}
- // Used for the creation and deletion of simple wrappers
- static SimpleComCallWrapper* CreateSimpleWrapper();
-
// Determines if the type associated with the ComCallWrapper supports exceptions.
static BOOL SupportsExceptions(MethodTable *pMT);
@@ -1465,16 +1434,6 @@ public :
RETURN m_pWrap;
}
- inline PTR_ComCallWrapper GetClassWrapper()
- {
- LIMITED_METHOD_CONTRACT;
-
- _ASSERTE(m_pMT->IsInterface());
- _ASSERTE(m_pClassWrap != NULL);
-
- return m_pClassWrap;
- }
-
inline ULONG GetRefCount()
{
LIMITED_METHOD_CONTRACT;
@@ -1482,15 +1441,6 @@ public :
return GET_COM_REF(READ_REF(m_llRefCount));
}
- // Returns the unmarked raw ref count
- // Make sure we always make a copy of the value instead of inlining
- NOINLINE LONGLONG GetRealRefCount()
- {
- LIMITED_METHOD_CONTRACT;
-
- return READ_REF(m_llRefCount);
- }
-
inline BOOL IsNeutered()
{
LIMITED_METHOD_DAC_CONTRACT;
@@ -1968,10 +1918,9 @@ inline BOOL ComCallWrapper::IsWrapperActive()
// Since its called by GCPromote, we assume that this is the start wrapper
- LONGLONG llRefCount = m_pSimpleWrapper->GetRealRefCount();
- ULONG cbRef = GET_COM_REF(llRefCount);
+ ULONG cbRef = m_pSimpleWrapper->GetRefCount();
- BOOL bHasStrongCOMRefCount = ((cbRef > 0));
+ BOOL bHasStrongCOMRefCount = cbRef > 0;
BOOL bIsWrapperActive = (bHasStrongCOMRefCount && !m_pSimpleWrapper->IsHandleWeak());
diff --git a/src/coreclr/src/vm/cominterfacemarshaler.cpp b/src/coreclr/src/vm/cominterfacemarshaler.cpp
index d2f47cd279d0..37adc481698e 100644
--- a/src/coreclr/src/vm/cominterfacemarshaler.cpp
+++ b/src/coreclr/src/vm/cominterfacemarshaler.cpp
@@ -39,7 +39,6 @@ COMInterfaceMarshaler::COMInterfaceMarshaler()
m_pUnknown = NULL;
m_pIdentity = NULL;
m_flags = RCW::CF_None;
- m_pCallback = NULL;
m_pThread = NULL;
}
@@ -90,42 +89,6 @@ VOID COMInterfaceMarshaler::Init(IUnknown* pUnk, MethodTable* pClassMT, Thread *
m_flags = flags;
}
-//--------------------------------------------------------------------------------
-// VOID COMInterfaceMarshaler::InitializeObjectClass()
-//--------------------------------------------------------------------------------
-VOID COMInterfaceMarshaler::InitializeObjectClass(IUnknown *pIncomingIP)
-{
- CONTRACTL
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- }
- CONTRACTL_END;
-
- if (m_typeHandle.IsNull())
- {
- EX_TRY
- {
- m_typeHandle = GetClassFromIProvideClassInfo(m_pUnknown);
-
- if (!m_typeHandle.IsNull() && !m_typeHandle.IsComObjectType())
- {
- m_typeHandle = TypeHandle(); // Clear the existing one.
- }
- }
- EX_CATCH
- {
- }
- EX_END_CATCH(RethrowTerminalExceptions);
- if(!m_typeHandle.IsNull())
- return;
- }
-
- if (m_typeHandle.IsNull())
- m_typeHandle = TypeHandle(g_pBaseCOMObject);
-}
-
//--------------------------------------------------------------------------------
// void COMInterfaceMarshaler::CreateObjectRef(BOOL fDuplicate, OBJECTREF *pComObj)
// Creates an RCW of the proper type.
@@ -276,20 +239,6 @@ void COMInterfaceMarshaler::CreateObjectRef(BOOL fDuplicate, OBJECTREF *pComObj,
// a different object!
BOOL fInsertAsDuplicateWrapper = fExisting;
- if (!fInsertAsDuplicateWrapper)
- {
- // Shall we use the RCW that is already in the cache?
- if (m_pCallback && !m_pCallback->ShouldUseThisRCW(pRCW.GetRawRCWUnsafe()))
- {
- // No - let's insert our wrapper as a duplicate instead
- fInsertAsDuplicateWrapper = TRUE;
-
- // Initialize pRCW again and make sure sure pRCW is indeed our new wrapper
- pRCW.UnInit();
- pRCW.InitNoCheck(pNewRCW);
- }
- }
-
if (fInsertAsDuplicateWrapper)
{
// we need to keep this wrapper separate so we'll insert it with the alternate identity
@@ -301,16 +250,9 @@ void COMInterfaceMarshaler::CreateObjectRef(BOOL fDuplicate, OBJECTREF *pComObj,
_ASSERTE(fInserted);
pNewRCW.SuppressRelease();
-
- if (m_pCallback)
- m_pCallback->OnRCWCreated(pRCW.GetRawRCWUnsafe());
}
else
{
- // Somebody beat us in creating the wrapper. Let's use that
- if (m_pCallback)
- m_pCallback->OnRCWCacheHit(pRCW.GetRawRCWUnsafe());
-
// grab the new object
*pComObj = (OBJECTREF)pRCW->GetExposedObject();
}
@@ -319,9 +261,6 @@ void COMInterfaceMarshaler::CreateObjectRef(BOOL fDuplicate, OBJECTREF *pComObj,
{
// If we did insert this wrapper in the table, make sure we don't delete it.
pNewRCW.SuppressRelease();
-
- if (m_pCallback)
- m_pCallback->OnRCWCreated(pRCW.GetRawRCWUnsafe());
}
}
@@ -398,17 +337,7 @@ OBJECTREF COMInterfaceMarshaler::FindOrCreateObjectRefInternal(IUnknown **ppInco
&pRCW);
if (!pRCW.IsNull())
{
- bool bShouldUseThisRCW = true;
-
- if (m_pCallback)
- bShouldUseThisRCW = m_pCallback->ShouldUseThisRCW(pRCW.GetRawRCWUnsafe());
-
- if (bShouldUseThisRCW)
- {
- oref = (OBJECTREF)pRCW->GetExposedObject();
- if (m_pCallback)
- m_pCallback->OnRCWCacheHit(pRCW.GetRawRCWUnsafe());
- }
+ oref = (OBJECTREF)pRCW->GetExposedObject();
}
}
@@ -457,35 +386,28 @@ VOID COMInterfaceMarshaler::InitializeExistingComObject(OBJECTREF *pComObj, IUnk
}
//--------------------------------------------------------------------------------
-// Helper to wrap an IUnknown with COM object
+// VOID COMInterfaceMarshaler::InitializeObjectClass()
//--------------------------------------------------------------------------------
-OBJECTREF COMInterfaceMarshaler::WrapWithComObject()
+VOID COMInterfaceMarshaler::InitializeObjectClass(IUnknown *pIncomingIP)
{
CONTRACTL
{
- THROWS;
- GC_TRIGGERS;
- MODE_COOPERATIVE;
+ NOTHROW;
+ GC_NOTRIGGER;
+ MODE_ANY;
}
CONTRACTL_END;
- OBJECTREF oref = NULL;
- GCPROTECT_BEGIN(oref)
+ // If the marshaller's type handle is null, compute what it should be.
+ if (m_typeHandle.IsNull())
{
- CreateObjectRef(
- TRUE, // fDuplicate
- &oref, // pComObj
- NULL, // ppIncomingIP
- NULL, // pIncomingItfMT
- false // bIncomingIPAddRefed
- );
+ // We no longer support the mapping from ITypeInfo to Type (i.e. MethodTable*).
+ // This was previously provided by IProvideClassinfo. If the type handle isn't
+ // set fallback to the opaque __ComObject type.
+ m_typeHandle = TypeHandle(g_pBaseCOMObject);
}
- GCPROTECT_END();
-
- return oref;
}
-//--------------------------------------------------------------------------------
// VOID EnsureCOMInterfacesSupported(OBJECTREF oref, MethodTable* pClassMT)
// Make sure the oref supports all the COM interfaces in the class
VOID COMInterfaceMarshaler::EnsureCOMInterfacesSupported(OBJECTREF oref, MethodTable* pClassMT)
diff --git a/src/coreclr/src/vm/cominterfacemarshaler.h b/src/coreclr/src/vm/cominterfacemarshaler.h
index 38b206425444..d1b360255313 100644
--- a/src/coreclr/src/vm/cominterfacemarshaler.h
+++ b/src/coreclr/src/vm/cominterfacemarshaler.h
@@ -14,22 +14,6 @@
#error FEATURE_COMINTEROP is required for this file
#endif // FEATURE_COMINTEROP
-class ICOMInterfaceMarshalerCallback
-{
-public :
- // Callback to be called when we created a RCW and that RCW is inserted to cache
- virtual void OnRCWCreated(RCW *pRCW) = 0;
-
- // Callback to be called when we got back a RCW from the cache
- virtual void OnRCWCacheHit(RCW *pRCW) = 0;
-
- // Callback to be called to determine whether we should use this RCW
- // Return true if ComInterfaceMarshaler should use this RCW
- // Return false if ComInterfaceMarshaler should just skip this RCW and proceed
- // to create a duplicate one instead
- virtual bool ShouldUseThisRCW(RCW *pRCW) = 0;
-};
-
//--------------------------------------------------------------------------------
// class ComInterfaceMarshaler
//--------------------------------------------------------------------------------
@@ -41,26 +25,13 @@ class COMInterfaceMarshaler
VOID Init(IUnknown* pUnk, MethodTable* pClassMT, Thread *pThread, DWORD flags = 0); // see RCW::CreationFlags
- // Sets a ICOMInterfaceMarshalerCallback pointer to be called when RCW is created or got back from cache
- // Note that caller owns the lifetime of this callback object, and needs to make sure this callback is
- // alive until the last time you call any function on COMInterfaceMarshaler
- VOID SetCallback(ICOMInterfaceMarshalerCallback *pCallback)
- {
- LIMITED_METHOD_CONTRACT;
- _ASSERTE(pCallback != NULL);
- m_pCallback = pCallback;
- }
-
- VOID InitializeObjectClass(IUnknown *pIncomingIP);
-
OBJECTREF FindOrCreateObjectRef(IUnknown **ppIncomingIP, MethodTable *pIncomingItfMT = NULL);
OBJECTREF FindOrCreateObjectRef(IUnknown *pIncomingIP, MethodTable *pIncomingItfMT = NULL);
- OBJECTREF WrapWithComObject();
-
VOID InitializeExistingComObject(OBJECTREF *pComObj, IUnknown **ppIncomingIP);
private:
+ VOID InitializeObjectClass(IUnknown *pIncomingIP);
OBJECTREF FindOrCreateObjectRefInternal(IUnknown **ppIncomingIP, MethodTable *pIncomingItfMT, bool bIncomingIPAddRefed);
VOID CreateObjectRef(BOOL fDuplicate, OBJECTREF *pComObj, IUnknown **ppIncomingIP, MethodTable *pIncomingItfMT, bool bIncomingIPAddRefed);
static VOID EnsureCOMInterfacesSupported(OBJECTREF oref, MethodTable* pClassMT);
@@ -74,8 +45,6 @@ class COMInterfaceMarshaler
TypeHandle m_itfTypeHandle; // an interface supported by the object as returned from GetRuntimeClassName
Thread* m_pThread; // Current thread - avoid calling GetThread multiple times
DWORD m_flags;
-
- ICOMInterfaceMarshalerCallback *m_pCallback; // Callback to call when we created a RCW or got back RCW from cache
};
diff --git a/src/coreclr/src/vm/common.h b/src/coreclr/src/vm/common.h
index f01ec501bb67..6694e74d8b48 100644
--- a/src/coreclr/src/vm/common.h
+++ b/src/coreclr/src/vm/common.h
@@ -162,9 +162,6 @@ typedef DPTR(class ReJitManager) PTR_ReJitManager;
typedef DPTR(struct ReJitInfo) PTR_ReJitInfo;
typedef DPTR(struct SharedReJitInfo) PTR_SharedReJitInfo;
typedef DPTR(class StringObject) PTR_StringObject;
-#ifdef FEATURE_UTF8STRING
-typedef DPTR(class Utf8StringObject) PTR_Utf8StringObject;
-#endif // FEATURE_UTF8STRING
typedef DPTR(class TypeHandle) PTR_TypeHandle;
typedef VPTR(class VirtualCallStubManager) PTR_VirtualCallStubManager;
typedef VPTR(class VirtualCallStubManagerManager) PTR_VirtualCallStubManagerManager;
diff --git a/src/coreclr/src/vm/corelib.h b/src/coreclr/src/vm/corelib.h
index 21c8a6c4332f..dbf514748420 100644
--- a/src/coreclr/src/vm/corelib.h
+++ b/src/coreclr/src/vm/corelib.h
@@ -318,10 +318,6 @@ DEFINE_CLASS(ENCODING, Text, Encoding)
DEFINE_CLASS(RUNE, Text, Rune)
-#ifdef FEATURE_UTF8STRING
-DEFINE_CLASS(CHAR8, System, Char8)
-#endif // FEATURE_UTF8STRING
-
DEFINE_CLASS(ENUM, System, Enum)
DEFINE_CLASS(ENVIRONMENT, System, Environment)
@@ -847,17 +843,6 @@ DEFINE_METHOD(STRING, WCSLEN, wcslen,
DEFINE_METHOD(STRING, STRLEN, strlen, SM_PtrByte_RetInt)
DEFINE_PROPERTY(STRING, LENGTH, Length, Int)
-#ifdef FEATURE_UTF8STRING
-DEFINE_CLASS(UTF8_STRING, System, Utf8String)
-DEFINE_METHOD(UTF8_STRING, CTORF_READONLYSPANOFBYTE,Ctor, IM_ReadOnlySpanOfByte_RetUtf8Str)
-DEFINE_METHOD(UTF8_STRING, CTORF_READONLYSPANOFCHAR,Ctor, IM_ReadOnlySpanOfChar_RetUtf8Str)
-DEFINE_METHOD(UTF8_STRING, CTORF_BYTEARRAY_START_LEN,Ctor, IM_ArrByte_Int_Int_RetUtf8Str)
-DEFINE_METHOD(UTF8_STRING, CTORF_BYTEPTR, Ctor, IM_PtrByte_RetUtf8Str)
-DEFINE_METHOD(UTF8_STRING, CTORF_CHARARRAY_START_LEN,Ctor, IM_ArrChar_Int_Int_RetUtf8Str)
-DEFINE_METHOD(UTF8_STRING, CTORF_CHARPTR, Ctor, IM_PtrChar_RetUtf8Str)
-DEFINE_METHOD(UTF8_STRING, CTORF_STRING, Ctor, IM_String_RetUtf8Str)
-#endif // FEATURE_UTF8STRING
-
DEFINE_CLASS(STRING_BUILDER, Text, StringBuilder)
DEFINE_PROPERTY(STRING_BUILDER, LENGTH, Length, Int)
DEFINE_PROPERTY(STRING_BUILDER, CAPACITY, Capacity, Int)
diff --git a/src/coreclr/src/vm/customattribute.cpp b/src/coreclr/src/vm/customattribute.cpp
index 3dea5604587b..e0fd92872119 100644
--- a/src/coreclr/src/vm/customattribute.cpp
+++ b/src/coreclr/src/vm/customattribute.cpp
@@ -908,7 +908,6 @@ FCIMPL7(void, COMCustomAttribute::GetPropertyOrFieldData, ReflectModuleBaseObjec
nullTH = th;
}
- //
// get the string representing the field/property name
*pName = ArgSlotToString(GetDataFromBlob(
pCtorAssembly, SERIALIZATION_TYPE_STRING, nullTH, &pBlob, pBlobEnd, pModule, &bObjectCreated));
@@ -937,6 +936,7 @@ FCIMPL7(void, COMCustomAttribute::GetPropertyOrFieldData, ReflectModuleBaseObjec
break;
case SERIALIZATION_TYPE_SZARRAY:
{
+ *value = NULL;
int arraySize = (int)GetDataFromBlob(pCtorAssembly, SERIALIZATION_TYPE_I4, nullTH, &pBlob, pBlobEnd, pModule, &bObjectCreated);
if (arraySize != -1)
diff --git a/src/coreclr/src/vm/dllimport.cpp b/src/coreclr/src/vm/dllimport.cpp
index 4a1f1a0b01ef..259af70a1e62 100644
--- a/src/coreclr/src/vm/dllimport.cpp
+++ b/src/coreclr/src/vm/dllimport.cpp
@@ -2537,7 +2537,7 @@ void PInvokeStaticSigInfo::PreInit(MethodDesc* pMD)
}
PInvokeStaticSigInfo::PInvokeStaticSigInfo(
- MethodDesc* pMD, LPCUTF8 *pLibName, LPCUTF8 *pEntryPointName, ThrowOnError throwOnError)
+ MethodDesc* pMD, LPCUTF8 *pLibName, LPCUTF8 *pEntryPointName)
{
CONTRACTL
{
@@ -2549,8 +2549,7 @@ PInvokeStaticSigInfo::PInvokeStaticSigInfo(
DllImportInit(pMD, pLibName, pEntryPointName);
- if (throwOnError)
- ReportErrors();
+ ReportErrors();
}
PInvokeStaticSigInfo::PInvokeStaticSigInfo(MethodDesc* pMD, ThrowOnError throwOnError)
@@ -2654,7 +2653,7 @@ PInvokeStaticSigInfo::PInvokeStaticSigInfo(MethodDesc* pMD, ThrowOnError throwOn
}
PInvokeStaticSigInfo::PInvokeStaticSigInfo(
- Signature sig, Module* pModule, ThrowOnError throwOnError)
+ Signature sig, Module* pModule)
{
CONTRACTL
{
@@ -2671,8 +2670,7 @@ PInvokeStaticSigInfo::PInvokeStaticSigInfo(
SetIsStatic (!(MetaSig::GetCallingConvention(pModule, sig) & IMAGE_CEE_CS_CALLCONV_HASTHIS));
InitCallConv((CorPinvokeMap)0, FALSE);
- if (throwOnError)
- ReportErrors();
+ ReportErrors();
}
void PInvokeStaticSigInfo::DllImportInit(MethodDesc* pMD, LPCUTF8 *ppLibName, LPCUTF8 *ppEntryPointName)
@@ -4293,9 +4291,9 @@ static void CreateNDirectStubAccessMetadata(
}
}
-void NDirect::PopulateNDirectMethodDesc(NDirectMethodDesc* pNMD, PInvokeStaticSigInfo* pSigInfo, BOOL throwOnError /*= TRUE*/)
+void NDirect::PopulateNDirectMethodDesc(NDirectMethodDesc* pNMD, PInvokeStaticSigInfo* pSigInfo)
{
- if (pNMD->IsSynchronized() && throwOnError)
+ if (pNMD->IsSynchronized())
COMPlusThrow(kTypeLoadException, IDS_EE_NOSYNCHRONIZED);
WORD ndirectflags = 0;
@@ -4303,8 +4301,7 @@ void NDirect::PopulateNDirectMethodDesc(NDirectMethodDesc* pNMD, PInvokeStaticSi
ndirectflags |= NDirectMethodDesc::kVarArgs;
LPCUTF8 szLibName = NULL, szEntryPointName = NULL;
- new (pSigInfo) PInvokeStaticSigInfo(pNMD, &szLibName, &szEntryPointName,
- (throwOnError ? PInvokeStaticSigInfo::THROW_ON_ERROR : PInvokeStaticSigInfo::NO_THROW_ON_ERROR));
+ new (pSigInfo) PInvokeStaticSigInfo(pNMD, &szLibName, &szEntryPointName);
if (pSigInfo->GetCharSet() == nltAnsi)
ndirectflags |= NDirectMethodDesc::kNativeAnsi;
@@ -5249,7 +5246,7 @@ MethodDesc* NDirect::GetILStubMethodDesc(NDirectMethodDesc* pNMD, PInvokeStaticS
MethodDesc* pStubMD = NULL;
- if (!pNMD->IsVarArgs() || SF_IsForNumParamBytes(dwStubFlags))
+ if (!pNMD->IsVarArgs())
{
if (pNMD->IsClassConstructorTriggeredByILStub())
{
@@ -5258,7 +5255,7 @@ MethodDesc* NDirect::GetILStubMethodDesc(NDirectMethodDesc* pNMD, PInvokeStaticS
pStubMD = CreateCLRToNativeILStub(
pSigInfo,
- dwStubFlags & ~NDIRECTSTUB_FL_FOR_NUMPARAMBYTES,
+ dwStubFlags,
pNMD);
}
@@ -5354,14 +5351,11 @@ PCODE NDirect::GetStubForILStub(NDirectMethodDesc* pNMD, MethodDesc** ppStubMD,
if (NULL == *ppStubMD)
{
PInvokeStaticSigInfo sigInfo;
- NDirect::PopulateNDirectMethodDesc(pNMD, &sigInfo, /* throwOnError = */ !SF_IsForNumParamBytes(dwStubFlags));
+ NDirect::PopulateNDirectMethodDesc(pNMD, &sigInfo);
*ppStubMD = NDirect::GetILStubMethodDesc(pNMD, &sigInfo, dwStubFlags);
}
- if (SF_IsForNumParamBytes(dwStubFlags))
- return NULL;
-
if (*ppStubMD)
{
pStub = JitILStub(*ppStubMD);
diff --git a/src/coreclr/src/vm/dllimport.h b/src/coreclr/src/vm/dllimport.h
index b24ab6e3e6c8..ba2b20d13b38 100644
--- a/src/coreclr/src/vm/dllimport.h
+++ b/src/coreclr/src/vm/dllimport.h
@@ -87,7 +87,7 @@ class NDirect
_In_opt_ PCCOR_SIGNATURE pSig = NULL,
_In_opt_ Module* pModule = NULL,
_In_ bool unmanagedCallersOnlyRequiresMarshalling = true);
- static void PopulateNDirectMethodDesc(NDirectMethodDesc* pNMD, PInvokeStaticSigInfo* pSigInfo, BOOL throwOnError = TRUE);
+ static void PopulateNDirectMethodDesc(NDirectMethodDesc* pNMD, PInvokeStaticSigInfo* pSigInfo);
static MethodDesc* CreateCLRToNativeILStub(
StubSigDesc* pSigDesc,
@@ -161,7 +161,7 @@ enum NDirectStubFlags
#endif // FEATURE_COMINTEROP
// internal flags -- these won't ever show up in an NDirectStubHashBlob
- NDIRECTSTUB_FL_FOR_NUMPARAMBYTES = 0x10000000, // do just enough to return the right value from Marshal.NumParamBytes
+ // unused = 0x10000000,
#ifdef FEATURE_COMINTEROP
NDIRECTSTUB_FL_COMLATEBOUND = 0x20000000, // we use a generic stub for late bound calls
@@ -210,7 +210,6 @@ inline bool SF_IsNGENedStubForProfiling(DWORD dwStubFlags) { LIMITED_METHOD_CONT
inline bool SF_IsDebuggableStub (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_GENERATEDEBUGGABLEIL)); }
inline bool SF_IsCALLIStub (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_UNMANAGED_CALLI)); }
inline bool SF_IsStubWithCctorTrigger (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_TRIGGERCCTOR)); }
-inline bool SF_IsForNumParamBytes (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_FOR_NUMPARAMBYTES)); }
inline bool SF_IsStructMarshalStub (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_STRUCT_MARSHAL)); }
#ifdef FEATURE_ARRAYSTUB_AS_IL
@@ -320,11 +319,11 @@ struct PInvokeStaticSigInfo
public:
PInvokeStaticSigInfo() { LIMITED_METHOD_CONTRACT; }
- PInvokeStaticSigInfo(Signature sig, Module* pModule, ThrowOnError throwOnError = THROW_ON_ERROR);
+ PInvokeStaticSigInfo(Signature sig, Module* pModule);
PInvokeStaticSigInfo(MethodDesc* pMdDelegate, ThrowOnError throwOnError = THROW_ON_ERROR);
- PInvokeStaticSigInfo(MethodDesc* pMD, LPCUTF8 *pLibName, LPCUTF8 *pEntryPointName, ThrowOnError throwOnError = THROW_ON_ERROR);
+ PInvokeStaticSigInfo(MethodDesc* pMD, LPCUTF8 *pLibName, LPCUTF8 *pEntryPointName);
public:
void ReportErrors();
@@ -563,7 +562,6 @@ class NDirectStubLinker : public ILStubLinker
#endif // DACCESS_COMPILE
// This attempts to guess whether a target is an API call that uses SetLastError to communicate errors.
-BOOL HeuristicDoesThisLooksLikeAnApiCall(LPBYTE pTarget);
BOOL HeuristicDoesThisLookLikeAGetLastErrorCall(LPBYTE pTarget);
DWORD STDMETHODCALLTYPE FalseGetLastError();
diff --git a/src/coreclr/src/vm/ecall.cpp b/src/coreclr/src/vm/ecall.cpp
index a86d12c4b434..5daa657f33a4 100644
--- a/src/coreclr/src/vm/ecall.cpp
+++ b/src/coreclr/src/vm/ecall.cpp
@@ -84,30 +84,6 @@ static_assert_no_msg(ECallCtor_First + 8 == ECall::CtorSBytePtrStartLengthEncodi
#define NumberOfStringConstructors 9
-#ifdef FEATURE_UTF8STRING
-// METHOD__UTF8STRING__CTORF_XXX has to be in same order as ECall::Utf8StringCtorCharXxx
-#define METHOD__UTF8STRING__CTORF_FIRST METHOD__UTF8_STRING__CTORF_READONLYSPANOFBYTE
-static_assert_no_msg(METHOD__UTF8STRING__CTORF_FIRST + 0 == METHOD__UTF8_STRING__CTORF_READONLYSPANOFBYTE);
-static_assert_no_msg(METHOD__UTF8STRING__CTORF_FIRST + 1 == METHOD__UTF8_STRING__CTORF_READONLYSPANOFCHAR);
-static_assert_no_msg(METHOD__UTF8STRING__CTORF_FIRST + 2 == METHOD__UTF8_STRING__CTORF_BYTEARRAY_START_LEN);
-static_assert_no_msg(METHOD__UTF8STRING__CTORF_FIRST + 3 == METHOD__UTF8_STRING__CTORF_BYTEPTR);
-static_assert_no_msg(METHOD__UTF8STRING__CTORF_FIRST + 4 == METHOD__UTF8_STRING__CTORF_CHARARRAY_START_LEN);
-static_assert_no_msg(METHOD__UTF8STRING__CTORF_FIRST + 5 == METHOD__UTF8_STRING__CTORF_CHARPTR);
-static_assert_no_msg(METHOD__UTF8STRING__CTORF_FIRST + 6 == METHOD__UTF8_STRING__CTORF_STRING);
-
-// ECall::Utf8StringCtorCharXxx has to be in same order as METHOD__UTF8STRING__CTORF_XXX
-#define ECallUtf8String_Ctor_First ECall::Utf8StringCtorReadOnlySpanOfByteManaged
-static_assert_no_msg(ECallUtf8String_Ctor_First + 0 == ECall::Utf8StringCtorReadOnlySpanOfByteManaged);
-static_assert_no_msg(ECallUtf8String_Ctor_First + 1 == ECall::Utf8StringCtorReadOnlySpanOfCharManaged);
-static_assert_no_msg(ECallUtf8String_Ctor_First + 2 == ECall::Utf8StringCtorByteArrayStartLengthManaged);
-static_assert_no_msg(ECallUtf8String_Ctor_First + 3 == ECall::Utf8StringCtorBytePtrManaged);
-static_assert_no_msg(ECallUtf8String_Ctor_First + 4 == ECall::Utf8StringCtorCharArrayStartLengthManaged);
-static_assert_no_msg(ECallUtf8String_Ctor_First + 5 == ECall::Utf8StringCtorCharPtrManaged);
-static_assert_no_msg(ECallUtf8String_Ctor_First + 6 == ECall::Utf8StringCtorStringManaged);
-
-#define NumberOfUtf8StringConstructors 7
-#endif // FEATURE_UTF8STRING
-
void ECall::PopulateManagedStringConstructors()
{
STANDARD_VM_CONTRACT;
@@ -126,19 +102,6 @@ void ECall::PopulateManagedStringConstructors()
ECall::DynamicallyAssignFCallImpl(pDest, ECallCtor_First + i);
}
-#ifdef FEATURE_UTF8STRING
- _ASSERTE(g_pUtf8StringClass != NULL);
- for (int i = 0; i < NumberOfUtf8StringConstructors; i++)
- {
- MethodDesc* pMD = CoreLibBinder::GetMethod((BinderMethodID)(METHOD__UTF8STRING__CTORF_FIRST + i));
- _ASSERTE(pMD != NULL);
-
- PCODE pDest = pMD->GetMultiCallableAddrOfCode();
-
- ECall::DynamicallyAssignFCallImpl(pDest, ECallUtf8String_Ctor_First + i);
- }
-#endif // FEATURE_UTF8STRING
-
INDEBUG(fInitialized = true);
}
diff --git a/src/coreclr/src/vm/ecall.h b/src/coreclr/src/vm/ecall.h
index 19b875382870..f1fedf2cbeb4 100644
--- a/src/coreclr/src/vm/ecall.h
+++ b/src/coreclr/src/vm/ecall.h
@@ -118,21 +118,7 @@ class ECall
DYNAMICALLY_ASSIGNED_FCALL_IMPL(CtorSBytePtrStartLengthEncodingManaged, NULL) \
DYNAMICALLY_ASSIGNED_FCALL_IMPL(InternalGetCurrentThread, NULL) \
-#define _DYNAMICALLY_ASSIGNED_FCALLS_UTF8STRING() \
- DYNAMICALLY_ASSIGNED_FCALL_IMPL(FastAllocateUtf8String, FramedAllocateUtf8String) \
- DYNAMICALLY_ASSIGNED_FCALL_IMPL(Utf8StringCtorReadOnlySpanOfByteManaged, NULL) \
- DYNAMICALLY_ASSIGNED_FCALL_IMPL(Utf8StringCtorReadOnlySpanOfCharManaged, NULL) \
- DYNAMICALLY_ASSIGNED_FCALL_IMPL(Utf8StringCtorByteArrayStartLengthManaged, NULL) \
- DYNAMICALLY_ASSIGNED_FCALL_IMPL(Utf8StringCtorBytePtrManaged, NULL) \
- DYNAMICALLY_ASSIGNED_FCALL_IMPL(Utf8StringCtorCharArrayStartLengthManaged, NULL) \
- DYNAMICALLY_ASSIGNED_FCALL_IMPL(Utf8StringCtorCharPtrManaged, NULL) \
- DYNAMICALLY_ASSIGNED_FCALL_IMPL(Utf8StringCtorStringManaged, NULL) \
-
-#ifdef FEATURE_UTF8STRING
-#define DYNAMICALLY_ASSIGNED_FCALLS() _DYNAMICALLY_ASSIGNED_FCALLS_BASE() _DYNAMICALLY_ASSIGNED_FCALLS_UTF8STRING()
-#else
#define DYNAMICALLY_ASSIGNED_FCALLS() _DYNAMICALLY_ASSIGNED_FCALLS_BASE()
-#endif // FEATURE_UTF8STRING
enum
{
diff --git a/src/coreclr/src/vm/ecalllist.h b/src/coreclr/src/vm/ecalllist.h
index d24d0dc3b2ad..e45decc9a7b5 100644
--- a/src/coreclr/src/vm/ecalllist.h
+++ b/src/coreclr/src/vm/ecalllist.h
@@ -111,19 +111,6 @@ FCFuncStart(gStringFuncs)
FCFuncElement("Intern", AppDomainNative::GetOrInternString)
FCFuncEnd()
-#ifdef FEATURE_UTF8STRING
-FCFuncStart(gUtf8StringFuncs)
- FCDynamic("FastAllocate", CORINFO_INTRINSIC_Illegal, ECall::FastAllocateUtf8String)
- FCDynamicSig(COR_CTOR_METHOD_NAME, &gsig_IM_ReadOnlySpanOfByte_RetVoid, CORINFO_INTRINSIC_Illegal, ECall::Utf8StringCtorReadOnlySpanOfByteManaged)
- FCDynamicSig(COR_CTOR_METHOD_NAME, &gsig_IM_ReadOnlySpanOfChar_RetVoid, CORINFO_INTRINSIC_Illegal, ECall::Utf8StringCtorReadOnlySpanOfCharManaged)
- FCDynamicSig(COR_CTOR_METHOD_NAME, &gsig_IM_ArrByte_Int_Int_RetVoid, CORINFO_INTRINSIC_Illegal, ECall::Utf8StringCtorByteArrayStartLengthManaged)
- FCDynamicSig(COR_CTOR_METHOD_NAME, &gsig_IM_PtrByte_RetVoid, CORINFO_INTRINSIC_Illegal, ECall::Utf8StringCtorBytePtrManaged)
- FCDynamicSig(COR_CTOR_METHOD_NAME, &gsig_IM_ArrChar_Int_Int_RetVoid, CORINFO_INTRINSIC_Illegal, ECall::Utf8StringCtorCharArrayStartLengthManaged)
- FCDynamicSig(COR_CTOR_METHOD_NAME, &gsig_IM_PtrChar_RetVoid, CORINFO_INTRINSIC_Illegal, ECall::Utf8StringCtorCharPtrManaged)
- FCDynamicSig(COR_CTOR_METHOD_NAME, &gsig_IM_Str_RetVoid, CORINFO_INTRINSIC_Illegal, ECall::Utf8StringCtorStringManaged)
-FCFuncEnd()
-#endif // FEATURE_UTF8STRING
-
FCFuncStart(gValueTypeFuncs)
FCFuncElement("CanCompareBits", ValueTypeHelper::CanCompareBits)
FCFuncElement("FastEqualsCheck", ValueTypeHelper::FastEqualsCheck)
@@ -203,7 +190,7 @@ FCFuncEnd()
FCFuncStart(gCOMTypeHandleFuncs)
FCFuncElement("CreateInstance", RuntimeTypeHandle::CreateInstance)
- FCFuncElement("CreateInstanceForAnotherGenericParameter", RuntimeTypeHandle::CreateInstanceForGenericType)
+ QCFuncElement("CreateInstanceForAnotherGenericParameter", RuntimeTypeHandle::CreateInstanceForAnotherGenericParameter)
QCFuncElement("GetGCHandle", RuntimeTypeHandle::GetGCHandle)
QCFuncElement("FreeGCHandle", RuntimeTypeHandle::FreeGCHandle)
@@ -786,7 +773,6 @@ FCFuncStart(gInteropMarshalFuncs)
#ifdef FEATURE_COMINTEROP
FCFuncElement("GetHRForException", MarshalNative::GetHRForException)
- FCFuncElement("GetRawIUnknownForComObjectNoAddRef", MarshalNative::GetRawIUnknownForComObjectNoAddRef)
FCFuncElement("IsComObject", MarshalNative::IsComObject)
FCFuncElement("GetObjectForIUnknownNative", MarshalNative::GetObjectForIUnknownNative)
FCFuncElement("GetUniqueObjectForIUnknownNative", MarshalNative::GetUniqueObjectForIUnknownNative)
@@ -1064,8 +1050,8 @@ FCFuncStart(gPalKernel32Funcs)
QCFuncElement("CreateMutexEx", CreateMutexExW)
QCFuncElement("CreateSemaphoreEx", CreateSemaphoreExW)
QCFuncElement("FormatMessage", FormatMessageW)
- QCFuncElement("FreeEnvironmentStrings", FreeEnvironmentStringsW)
- QCFuncElement("GetEnvironmentStrings", GetEnvironmentStringsW)
+ QCFuncElement("FreeEnvironmentStringsW", FreeEnvironmentStringsW)
+ QCFuncElement("GetEnvironmentStringsW", GetEnvironmentStringsW)
QCFuncElement("GetEnvironmentVariable", GetEnvironmentVariableW)
QCFuncElement("OpenEvent", OpenEventW)
QCFuncElement("OpenMutex", OpenMutexW)
@@ -1220,9 +1206,6 @@ FCClassElement("TypeLoadException", "System", gTypeLoadExceptionFuncs)
FCClassElement("TypeNameParser", "System", gTypeNameParser)
FCClassElement("TypedReference", "System", gTypedReferenceFuncs)
FCClassElement("UnmanagedThreadPoolWorkItem", "System.Threading", gUnmanagedThreadPoolWorkItemFuncs)
-#ifdef FEATURE_UTF8STRING
-FCClassElement("Utf8String", "System", gUtf8StringFuncs)
-#endif // FEATURE_UTF8STRING
FCClassElement("ValueType", "System", gValueTypeFuncs)
#ifdef FEATURE_COMINTEROP
FCClassElement("Variant", "System", gVariantFuncs)
diff --git a/src/coreclr/src/vm/gchelpers.cpp b/src/coreclr/src/vm/gchelpers.cpp
index d08a74783920..028e17b020d9 100644
--- a/src/coreclr/src/vm/gchelpers.cpp
+++ b/src/coreclr/src/vm/gchelpers.cpp
@@ -869,55 +869,6 @@ STRINGREF AllocateString( DWORD cchStringLength )
return ObjectToSTRINGREF(orString);
}
-#ifdef FEATURE_UTF8STRING
-UTF8STRINGREF AllocateUtf8String(DWORD cchStringLength)
-{
- CONTRACTL{
- THROWS;
- GC_TRIGGERS;
- MODE_COOPERATIVE; // returns an objref without pinning it => cooperative
- } CONTRACTL_END;
-
-#ifdef _DEBUG
- if (g_pConfig->ShouldInjectFault(INJECTFAULT_GCHEAP))
- {
- char *a = new char;
- delete a;
- }
-#endif
-
- // Limit the maximum string size to <2GB to mitigate risk of security issues caused by 32-bit integer
- // overflows in buffer size calculations.
- //
- // 0x7FFFFFBF is derived from the const 0x3FFFFFDF in SlowAllocateString.
- // Adding +1 (for null terminator) and multiplying by sizeof(WCHAR) means that
- // SlowAllocateString allows a maximum of 0x7FFFFFC0 bytes to be used for the
- // string data itself, with some additional buffer for object headers and other
- // data. Since we don't have the sizeof(WCHAR) multiplication here, we only need
- // -1 to account for the null terminator, leading to a max size of 0x7FFFFFBF.
- if (cchStringLength > 0x7FFFFFBF)
- ThrowOutOfMemory();
-
- SIZE_T totalSize = PtrAlign(Utf8StringObject::GetSize(cchStringLength));
- _ASSERTE(totalSize > cchStringLength);
-
- SetTypeHandleOnThreadForAlloc(TypeHandle(g_pUtf8StringClass));
-
- GC_ALLOC_FLAGS flags = GC_ALLOC_NO_FLAGS;
- if (totalSize >= g_pConfig->GetGCLOHThreshold())
- flags |= GC_ALLOC_LARGE_OBJECT_HEAP;
-
- Utf8StringObject* orString = (Utf8StringObject*)Alloc(totalSize, flags);
-
- // Initialize Object
- orString->SetMethodTable(g_pUtf8StringClass);
- orString->SetLength(cchStringLength);
-
- PublishObjectAndNotify(orString, flags);
- return ObjectToUTF8STRINGREF(orString);
-}
-#endif // FEATURE_UTF8STRING
-
#ifdef FEATURE_COMINTEROP_UNMANAGED_ACTIVATION
// OBJECTREF AllocateComClassObject(ComClassFactory* pComClsFac)
void AllocateComClassObject(ComClassFactory* pComClsFac, OBJECTREF* ppRefClass)
diff --git a/src/coreclr/src/vm/gchelpers.h b/src/coreclr/src/vm/gchelpers.h
index f9a9ac5320e2..794706c22267 100644
--- a/src/coreclr/src/vm/gchelpers.h
+++ b/src/coreclr/src/vm/gchelpers.h
@@ -36,10 +36,6 @@ OBJECTREF AllocateObjectArray(DWORD cElements, TypeHandle ElementType, BOOL bAll
// Allocate a string
STRINGREF AllocateString( DWORD cchStringLength );
-#ifdef FEATURE_UTF8STRING
-UTF8STRINGREF AllocateUtf8String( DWORD cchStringLength );
-#endif // FEATURE_UTF8STRING
-
OBJECTREF DupArrayForCloning(BASEARRAYREF pRef);
// The JIT requests the EE to specify an allocation helper to use at each new-site.
diff --git a/src/coreclr/src/vm/interoputil.cpp b/src/coreclr/src/vm/interoputil.cpp
index 43dda1cde5bf..90f11497866f 100644
--- a/src/coreclr/src/vm/interoputil.cpp
+++ b/src/coreclr/src/vm/interoputil.cpp
@@ -1331,31 +1331,10 @@ void CleanupSyncBlockComData(InteropSyncBlockInfo* pInteropInfo)
#endif // FEATURE_COMWRAPPERS
}
-void ReleaseRCWsInCachesNoThrow(LPVOID pCtxCookie)
-{
- CONTRACTL
- {
- DISABLED(NOTHROW);
- GC_TRIGGERS;
- MODE_ANY;
- PRECONDITION(CheckPointer(pCtxCookie, NULL_OK));
- }
- CONTRACTL_END;
-
- EX_TRY
- {
- ReleaseRCWsInCaches(pCtxCookie);
- }
- EX_CATCH
- {
- }
- EX_END_CATCH(SwallowAllExceptions);
-}
-
//--------------------------------------------------------------------------------
// Helper to release all of the RCWs in the specified context across all caches.
// If pCtxCookie is NULL, release all RCWs
-void ReleaseRCWsInCaches(LPVOID pCtxCookie)
+static void ReleaseRCWsInCaches(LPVOID pCtxCookie)
{
CONTRACTL
{
@@ -1389,6 +1368,27 @@ void ReleaseRCWsInCaches(LPVOID pCtxCookie)
}
}
+void ReleaseRCWsInCachesNoThrow(LPVOID pCtxCookie)
+{
+ CONTRACTL
+ {
+ DISABLED(NOTHROW);
+ GC_TRIGGERS;
+ MODE_ANY;
+ PRECONDITION(CheckPointer(pCtxCookie, NULL_OK));
+ }
+ CONTRACTL_END;
+
+ EX_TRY
+ {
+ ReleaseRCWsInCaches(pCtxCookie);
+ }
+ EX_CATCH
+ {
+ }
+ EX_END_CATCH(SwallowAllExceptions);
+}
+
//--------------------------------------------------------------------------------
// Marshalling Helpers
//--------------------------------------------------------------------------------
@@ -1521,47 +1521,6 @@ HRESULT EnsureComStartedNoThrow(BOOL fCoInitCurrentThread)
return hr;
}
-//--------------------------------------------------------------------------------
-// BOOL ExtendsComImport(MethodTable* pMT);
-// check if the class is OR extends a COM Imported class
-BOOL ExtendsComImport(MethodTable* pMT)
-{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- MODE_ANY;
- PRECONDITION(CheckPointer(pMT));
- }
- CONTRACTL_END;
-
- while (pMT != NULL && !pMT->IsComImport())
- {
- pMT = pMT->GetParentMethodTable();
- }
- return pMT != NULL;
-}
-
-#ifdef FEATURE_COMINTEROP
-//--------------------------------------------------------------------------------
-// Gets the CLSID from the specified Prog ID.
-
-HRESULT GetCLSIDFromProgID(__in_z WCHAR *strProgId, GUID *pGuid)
-{
- CONTRACTL
- {
- NOTHROW;
- GC_TRIGGERS;
- MODE_PREEMPTIVE;
- }
- CONTRACTL_END;
-
- HRESULT hr = S_OK;
-
- return CLSIDFromProgID(strProgId, pGuid);
-}
-#endif // FEATURE_COMINTEROP
-
#include
//--------------------------------------------------------------------------------
// AddRef helper, enables and disables GC during call-outs
@@ -1876,45 +1835,6 @@ OBJECTREF AllocateComObject_ForManaged(MethodTable* pMT)
}
#endif // FEATURE_COMINTEROP_UNMANAGED_ACTIVATION
-#ifdef FEATURE_COMINTEROP
-
-//---------------------------------------------------------------------------
-// get/load type for a given clsid
-MethodTable* GetTypeForCLSID(REFCLSID rclsid)
-{
- CONTRACT (MethodTable*)
- {
- THROWS;
- GC_TRIGGERS;
- MODE_COOPERATIVE;
- POSTCONDITION(CheckPointer(RETVAL, NULL_OK));
- }
- CONTRACT_END;
-
- // Not supported in .NET Core - requires typelib registration/generation
- RETURN NULL;
-}
-
-
-//---------------------------------------------------------------------------
-// get/load a value class for a given guid
-MethodTable* GetValueTypeForGUID(REFCLSID guid)
-{
- CONTRACT (MethodTable*)
- {
- THROWS;
- GC_TRIGGERS;
- MODE_COOPERATIVE;
- POSTCONDITION(CheckPointer(RETVAL, NULL_OK));
- }
- CONTRACT_END;
-
- // Not supported in .NET Core - requires typelib registration/generation
- RETURN NULL;
-}
-
-#endif // FEATURE_COMINTEROP
-
#endif //#ifndef CROSSGEN_COMPILE
//---------------------------------------------------------------------------
@@ -4344,66 +4264,6 @@ void UnmarshalObjectFromInterface(OBJECTREF *ppObjectDest, IUnknown **ppUnkSrc,
}
}
-#ifdef FEATURE_COMINTEROP
-
-//--------------------------------------------------------------------------------
-// Check if the pUnk implements IProvideClassInfo and try to figure
-// out the class from there
-MethodTable* GetClassFromIProvideClassInfo(IUnknown* pUnk)
-{
- CONTRACT (MethodTable*)
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- PRECONDITION(CheckPointer(pUnk));
- POSTCONDITION(CheckPointer(RETVAL, NULL_OK));
- }
- CONTRACT_END;
-
- MethodTable* pClassMT = NULL;
- SafeComHolder pTypeInfo = NULL;
- SafeComHolder pclsInfo = NULL;
-
- // Use IProvideClassInfo to detect the appropriate class to use for wrapping
- HRESULT hr = SafeQueryInterface(pUnk, IID_IProvideClassInfo, (IUnknown **)&pclsInfo);
- LogInteropQI(pUnk, IID_IProvideClassInfo, hr, "GetClassFromIProvideClassInfo: QIing for IProvideClassinfo");
- if (hr == S_OK && pclsInfo)
- {
- hr = E_FAIL;
-
- // Make sure the class info is not our own
- if (!IsSimpleTearOff(pclsInfo))
- {
- GCX_PREEMP();
-
- hr = pclsInfo->GetClassInfo(&pTypeInfo);
- }
-
- // If we succeded in retrieving the type information then keep going.
- TYPEATTRHolder ptattr(pTypeInfo);
- if (hr == S_OK && pTypeInfo)
- {
- {
- GCX_PREEMP();
- hr = pTypeInfo->GetTypeAttr(&ptattr);
- }
-
- // If we succeeded in retrieving the attributes and they represent
- // a CoClass, then look up the class from the CLSID.
- if (hr == S_OK && ptattr->typekind == TKIND_COCLASS)
- {
- GCX_ASSERT_COOP();
- pClassMT = GetTypeForCLSID(ptattr->guid);
- }
- }
- }
-
- RETURN pClassMT;
-}
-
-#endif // FEATURE_COMINTEROP
-
#endif //#ifndef CROSSGEN_COMPILE
#endif // FEATURE_COMINTEROP
diff --git a/src/coreclr/src/vm/interoputil.h b/src/coreclr/src/vm/interoputil.h
index 9f51dfe699ea..c7209467b4a7 100644
--- a/src/coreclr/src/vm/interoputil.h
+++ b/src/coreclr/src/vm/interoputil.h
@@ -181,11 +181,6 @@ void CleanupSyncBlockComData(InteropSyncBlockInfo* pInteropInfo);
// called by syncblock, during GC, do only minimal work
void MinorCleanupSyncBlockComData(InteropSyncBlockInfo* pInteropInfo);
-// Helper to release all of the RCWs in the specified context, across all caches.
-// If context is null, release all RCWs, otherwise release RCWs created in the
-// given context.
-void ReleaseRCWsInCaches(LPVOID pCtxCookie);
-
// A wrapper that catches all exceptions - used in the OnThreadTerminate case.
void ReleaseRCWsInCachesNoThrow(LPVOID pCtxCookie);
@@ -262,15 +257,6 @@ BOOL ClassSupportsIClassX(MethodTable *pMT);
OBJECTREF AllocateComObject_ForManaged(MethodTable* pMT);
#endif // FEATURE_COMINTEROP_UNMANAGED_ACTIVATION
-//---------------------------------------------------------------------------
- // get/load data for a given clsid
-MethodTable* GetTypeForCLSID(REFCLSID rclsid);
-
-
-//---------------------------------------------------------------------------
- // get/load a value class for a given guid
-MethodTable* GetValueTypeForGUID(REFCLSID guid);
-
DefaultInterfaceType GetDefaultInterfaceForClassInternal(TypeHandle hndClass, TypeHandle *pHndDefClass);
DefaultInterfaceType GetDefaultInterfaceForClassWrapper(TypeHandle hndClass, TypeHandle *pHndDefClass);
@@ -398,26 +384,11 @@ VOID LogRCWDestroy(RCW* pWrap);
HRESULT EnsureComStartedNoThrow(BOOL fCoInitCurrentThread = TRUE);
VOID EnsureComStarted(BOOL fCoInitCurrentThread = TRUE);
-//--------------------------------------------------------------------------------
-// check if the class is OR extends a COM Imported class
-BOOL ExtendsComImport(MethodTable* pMT);
-
-//--------------------------------------------------------------------------------
-// Gets the CLSID from the specified Prog ID.
-HRESULT GetCLSIDFromProgID(__in_z WCHAR *strProgId, GUID *pGuid);
-
-//--------------------------------------------------------------------------------
-// Check if the pUnk implements IProvideClassInfo and try to figure
-// out the class from there
-MethodTable* GetClassFromIProvideClassInfo(IUnknown* pUnk);
-
IUnknown* MarshalObjectToInterface(OBJECTREF* ppObject, MethodTable* pItfMT, MethodTable* pClassMT, DWORD dwFlags);
void UnmarshalObjectFromInterface(OBJECTREF *ppObjectDest, IUnknown **ppUnkSrc, MethodTable *pItfMT, MethodTable *pClassMT, DWORD dwFlags);
#define DEFINE_ASM_QUAL_TYPE_NAME(varname, typename, asmname) static const char varname##[] = { typename##", "##asmname## };
-class ICOMInterfaceMarshalerCallback;
-
#else // FEATURE_COMINTEROP
inline HRESULT EnsureComStartedNoThrow()
{
diff --git a/src/coreclr/src/vm/jithelpers.cpp b/src/coreclr/src/vm/jithelpers.cpp
index 0df65b9e6b8c..0ef036d815d8 100644
--- a/src/coreclr/src/vm/jithelpers.cpp
+++ b/src/coreclr/src/vm/jithelpers.cpp
@@ -55,6 +55,7 @@
#include "runtimehandles.h"
#include "castcache.h"
#include "onstackreplacement.h"
+#include "pgo.h"
//========================================================================
//
@@ -2389,61 +2390,6 @@ HCIMPL1(StringObject*, AllocateString_MP_FastPortable, DWORD stringLength)
}
HCIMPLEND
-#ifdef FEATURE_UTF8STRING
-HCIMPL1(Utf8StringObject*, AllocateUtf8String_MP_FastPortable, DWORD stringLength)
-{
- FCALL_CONTRACT;
-
- do
- {
- _ASSERTE(GCHeapUtilities::UseThreadAllocationContexts());
-
- // Instead of doing elaborate overflow checks, we just limit the number of elements. This will avoid all overflow
- // problems, as well as making sure big string objects are correctly allocated in the big object heap.
- if (stringLength >= LARGE_OBJECT_SIZE - 256)
- {
- break;
- }
-
- // This is typically the only call in the fast path. Making the call early seems to be better, as it allows the compiler
- // to use volatile registers for intermediate values. This reduces the number of push/pop instructions and eliminates
- // some reshuffling of intermediate values into nonvolatile registers around the call.
- Thread *thread = GetThread();
-
- SIZE_T totalSize = Utf8StringObject::GetSize(stringLength);
-
- // The method table's base size includes space for a terminating null character
- _ASSERTE(totalSize >= g_pUtf8StringClass->GetBaseSize());
- _ASSERTE(totalSize - g_pUtf8StringClass->GetBaseSize() == stringLength);
-
- SIZE_T alignedTotalSize = ALIGN_UP(totalSize, DATA_ALIGNMENT);
- _ASSERTE(alignedTotalSize >= totalSize);
- totalSize = alignedTotalSize;
-
- gc_alloc_context *allocContext = thread->GetAllocContext();
- BYTE *allocPtr = allocContext->alloc_ptr;
- _ASSERTE(allocPtr <= allocContext->alloc_limit);
- if (totalSize > static_cast(allocContext->alloc_limit - allocPtr))
- {
- break;
- }
- allocContext->alloc_ptr = allocPtr + totalSize;
-
- _ASSERTE(allocPtr != nullptr);
- Utf8StringObject *stringObject = reinterpret_cast(allocPtr);
- stringObject->SetMethodTable(g_pUtf8StringClass);
- stringObject->SetLength(stringLength);
-
- return stringObject;
- } while (false);
-
- // Tail call to the slow helper
- ENDFORBIDGC();
- return HCCALL1(FramedAllocateUtf8String, stringLength);
-}
-HCIMPLEND
-#endif // FEATURE_UTF8STRING
-
#include
/*********************************************************************/
@@ -2482,22 +2428,6 @@ HCIMPL1(StringObject*, FramedAllocateString, DWORD stringLength)
}
HCIMPLEND
-#ifdef FEATURE_UTF8STRING
-HCIMPL1(Utf8StringObject*, FramedAllocateUtf8String, DWORD stringLength)
-{
- FCALL_CONTRACT;
-
- UTF8STRINGREF result = NULL;
- HELPER_METHOD_FRAME_BEGIN_RET_0(); // Set up a frame
-
- result = AllocateUtf8String(stringLength);
-
- HELPER_METHOD_FRAME_END();
- return((Utf8StringObject*) OBJECTREFToObject(result));
-}
-HCIMPLEND
-#endif // FEATURE_UTF8STRING
-
/*********************************************************************/
OBJECTHANDLE ConstructStringLiteral(CORINFO_MODULE_HANDLE scopeHnd, mdToken metaTok)
{
@@ -5304,6 +5234,75 @@ void JIT_Patchpoint(int* counter, int ilOffset)
#endif // FEATURE_ON_STACK_REPLACEMENT
+HCIMPL2(void, JIT_ClassProfile, Object *obj, void* tableAddress)
+{
+ FCALL_CONTRACT;
+ FC_GC_POLL_NOT_NEEDED();
+
+ OBJECTREF objRef = ObjectToOBJECTREF(obj);
+ VALIDATEOBJECTREF(objRef);
+
+ ICorJitInfo::ClassProfile* const classProfile = (ICorJitInfo::ClassProfile*) tableAddress;
+ volatile unsigned* pCount = (volatile unsigned*) &classProfile->Count;
+ const unsigned count = *pCount++;
+ const unsigned S = ICorJitInfo::ClassProfile::SIZE;
+ const unsigned N = ICorJitInfo::ClassProfile::SAMPLE_INTERVAL;
+ _ASSERTE(N >= S);
+
+ if (objRef == NULL)
+ {
+ return;
+ }
+
+ CORINFO_CLASS_HANDLE clsHnd = (CORINFO_CLASS_HANDLE)objRef->GetMethodTable();
+
+#ifdef _DEBUG
+ PgoManager::VerifyAddress(classProfile);
+ PgoManager::VerifyAddress(classProfile + 1);
+#endif
+
+ // If table is not yet full, just add entries in.
+ //
+ if (count < S)
+ {
+ classProfile->ClassTable[count] = clsHnd;
+ }
+ else
+ {
+ // generate a random number (xorshift32)
+ //
+ // intentionally simple so we can have multithreaded
+ // access w/o tearing state.
+ //
+ static volatile unsigned s_rng = 100;
+
+ unsigned x = s_rng;
+ x ^= x << 13;
+ x ^= x >> 17;
+ x ^= x << 5;
+ s_rng = x;
+
+ // N is the sampling window size,
+ // it should be larger than the table size.
+ //
+ // If we let N == count then we are building an entire
+ // run sample -- probability of update decreases over time.
+ // Would be a good strategy for an AOT profiler.
+ //
+ // But for TieredPGO we would prefer something that is more
+ // weighted to recent observations.
+ //
+ // For S=4, N=128, we'll sample (on average) every 32nd call.
+ //
+ if ((x % N) < S)
+ {
+ unsigned i = x % S;
+ classProfile->ClassTable[i] = clsHnd;
+ }
+ }
+}
+HCIMPLEND
+
//========================================================================
//
// INTEROP HELPERS
diff --git a/src/coreclr/src/vm/jitinterface.cpp b/src/coreclr/src/vm/jitinterface.cpp
index b8274eb3344e..6515a798ba58 100644
--- a/src/coreclr/src/vm/jitinterface.cpp
+++ b/src/coreclr/src/vm/jitinterface.cpp
@@ -7399,9 +7399,6 @@ bool getILIntrinsicImplementationForRuntimeHelpers(MethodDesc * ftn,
if (methodTable == CoreLibBinder::GetClass(CLASS__BOOLEAN)
|| methodTable == CoreLibBinder::GetClass(CLASS__BYTE)
|| methodTable == CoreLibBinder::GetClass(CLASS__SBYTE)
-#ifdef FEATURE_UTF8STRING
- || methodTable == CoreLibBinder::GetClass(CLASS__CHAR8)
-#endif // FEATURE_UTF8STRING
|| methodTable == CoreLibBinder::GetClass(CLASS__CHAR)
|| methodTable == CoreLibBinder::GetClass(CLASS__INT16)
|| methodTable == CoreLibBinder::GetClass(CLASS__UINT16)
@@ -11927,6 +11924,54 @@ HRESULT CEEJitInfo::getMethodBlockCounts (
return hr;
}
+CORINFO_CLASS_HANDLE CEEJitInfo::getLikelyClass(
+ CORINFO_METHOD_HANDLE ftnHnd,
+ CORINFO_CLASS_HANDLE baseHnd,
+ UINT32 ilOffset,
+ UINT32 * pLikelihood,
+ UINT32 * pNumberOfClasses
+)
+{
+ CONTRACTL {
+ THROWS;
+ GC_TRIGGERS;
+ MODE_PREEMPTIVE;
+ } CONTRACTL_END;
+
+ CORINFO_CLASS_HANDLE result = NULL;
+ *pLikelihood = 0;
+ *pNumberOfClasses = 0;
+
+ JIT_TO_EE_TRANSITION();
+
+#ifdef FEATURE_PGO
+
+ // Query the PGO manager's per call site class profile.
+ //
+ MethodDesc* pMD = (MethodDesc*)ftnHnd;
+ unsigned codeSize = 0;
+ if (pMD->IsDynamicMethod())
+ {
+ unsigned stackSize, ehSize;
+ CorInfoOptions options;
+ DynamicResolver * pResolver = m_pMethodBeingCompiled->AsDynamicMethodDesc()->GetResolver();
+ pResolver->GetCodeInfo(&codeSize, &stackSize, &options, &ehSize);
+ }
+ else if (pMD->HasILHeader())
+ {
+ COR_ILMETHOD_DECODER decoder(pMD->GetILHeader());
+ codeSize = decoder.GetCodeSize();
+ }
+
+ result = PgoManager::getLikelyClass(pMD, codeSize, ilOffset, pLikelihood, pNumberOfClasses);
+
+#endif
+
+ EE_TO_JIT_TRANSITION();
+
+ return result;
+}
+
void CEEJitInfo::allocMem (
ULONG hotCodeSize, /* IN */
ULONG coldCodeSize, /* IN */
@@ -12246,8 +12291,6 @@ CorJitResult invokeCompileMethodHelper(EEJitManager *jitMgr,
CorJitResult ret = CORJIT_SKIPPED; // Note that CORJIT_SKIPPED is an error exit status code
- comp->setJitFlags(jitFlags);
-
#ifdef FEATURE_STACK_SAMPLING
static ConfigDWORD s_stackSamplingEnabled;
bool samplingEnabled = (s_stackSamplingEnabled.val(CLRConfig::UNSUPPORTED_StackSamplingEnabled) != 0);
@@ -12260,6 +12303,9 @@ CorJitResult invokeCompileMethodHelper(EEJitManager *jitMgr,
#endif
)
{
+ CORJIT_FLAGS altJitFlags = jitFlags;
+ altJitFlags.Set(CORJIT_FLAGS::CORJIT_FLAG_ALT_JIT);
+ comp->setJitFlags(altJitFlags);
ret = jitMgr->m_alternateJit->compileMethod( comp,
info,
CORJIT_FLAGS::CORJIT_FLAG_CALL_GETJITFLAGS,
@@ -12283,6 +12329,7 @@ CorJitResult invokeCompileMethodHelper(EEJitManager *jitMgr,
}
}
#endif // defined(ALLOW_SXS_JIT) && !defined(CROSSGEN_COMPILE)
+ comp->setJitFlags(jitFlags);
#ifdef FEATURE_INTERPRETER
static ConfigDWORD s_InterpreterFallback;
@@ -12661,7 +12708,13 @@ CORJIT_FLAGS GetCompileFlags(MethodDesc * ftn, CORJIT_FLAGS flags, CORINFO_METHO
#ifdef FEATURE_PGO
- if (CLRConfig::GetConfigValue(CLRConfig::INTERNAL_WritePGOData) > 0)
+ // Instrument, if
+ //
+ // * We're writing pgo data and we're jitting at Tier0.
+ // * Tiered PGO is enabled and we're jitting at Tier0.
+ //
+ if ((CLRConfig::GetConfigValue(CLRConfig::INTERNAL_WritePGOData) > 0)
+ && flags.IsSet(CORJIT_FLAGS::CORJIT_FLAG_TIER0))
{
flags.Set(CORJIT_FLAGS::CORJIT_FLAG_BBINSTR);
}
@@ -14160,6 +14213,17 @@ HRESULT CEEInfo::getMethodBlockCounts(
UNREACHABLE_RET(); // only called on derived class.
}
+CORINFO_CLASS_HANDLE CEEInfo::getLikelyClass(
+ CORINFO_METHOD_HANDLE ftnHnd,
+ CORINFO_CLASS_HANDLE baseHnd,
+ UINT32 ilOffset,
+ UINT32* pLikelihood,
+ UINT32* pNumberOfCases
+)
+{
+ LIMITED_METHOD_CONTRACT;
+ UNREACHABLE_RET(); // only called on derived class.
+}
void CEEInfo::recordCallSite(
ULONG instrOffset, /* IN */
diff --git a/src/coreclr/src/vm/jitinterface.h b/src/coreclr/src/vm/jitinterface.h
index 0d2a720299a4..7518004464e7 100644
--- a/src/coreclr/src/vm/jitinterface.h
+++ b/src/coreclr/src/vm/jitinterface.h
@@ -203,11 +203,6 @@ extern FCDECL1(StringObject*, AllocateString_MP_FastPortable, DWORD stringLength
extern FCDECL1(StringObject*, UnframedAllocateString, DWORD stringLength);
extern FCDECL1(StringObject*, FramedAllocateString, DWORD stringLength);
-#ifdef FEATURE_UTF8STRING
-extern FCDECL1(Utf8StringObject*, AllocateUtf8String_MP_FastPortable, DWORD stringLength);
-extern FCDECL1(Utf8StringObject*, FramedAllocateUtf8String, DWORD stringLength);
-#endif // FEATURE_UTF8STRING
-
extern FCDECL2(Object*, JIT_NewArr1VC_MP_FastPortable, CORINFO_CLASS_HANDLE arrayMT, INT_PTR size);
extern FCDECL2(Object*, JIT_NewArr1OBJ_MP_FastPortable, CORINFO_CLASS_HANDLE arrayMT, INT_PTR size);
extern FCDECL2(Object*, JIT_NewArr1, CORINFO_CLASS_HANDLE arrayMT, INT_PTR size);
@@ -1050,6 +1045,14 @@ class CEEInfo : public ICorJitInfo
UINT32 * pNumRuns
);
+ CORINFO_CLASS_HANDLE getLikelyClass(
+ CORINFO_METHOD_HANDLE ftnHnd,
+ CORINFO_CLASS_HANDLE baseHnd,
+ UINT32 ilOffset,
+ UINT32 * pLikelihood,
+ UINT32 * pNumberOfClasses
+ );
+
void recordCallSite(
ULONG instrOffset, /* IN */
CORINFO_SIG_INFO * callSig, /* IN */
@@ -1252,6 +1255,14 @@ class CEEJitInfo : public CEEInfo
UINT32 * pNumRuns
);
+ CORINFO_CLASS_HANDLE getLikelyClass(
+ CORINFO_METHOD_HANDLE ftnHnd,
+ CORINFO_CLASS_HANDLE baseHnd,
+ UINT32 ilOffset,
+ UINT32 * pLikelihood,
+ UINT32 * pNumberOfClasses
+ );
+
void recordCallSite(
ULONG instrOffset, /* IN */
CORINFO_SIG_INFO * callSig, /* IN */
diff --git a/src/coreclr/src/vm/jitinterfacegen.cpp b/src/coreclr/src/vm/jitinterfacegen.cpp
index 661d68fa7d8d..68ab56aeb96e 100644
--- a/src/coreclr/src/vm/jitinterfacegen.cpp
+++ b/src/coreclr/src/vm/jitinterfacegen.cpp
@@ -79,9 +79,6 @@ void InitJITHelpers1()
SetJitHelperFunction(CORINFO_HELP_NEWARR_1_OBJ, JIT_NewArr1OBJ_MP_FastPortable);
ECall::DynamicallyAssignFCallImpl(GetEEFuncEntryPoint(AllocateString_MP_FastPortable), ECall::FastAllocateString);
-#ifdef FEATURE_UTF8STRING
- ECall::DynamicallyAssignFCallImpl(GetEEFuncEntryPoint(AllocateUtf8String_MP_FastPortable), ECall::FastAllocateUtf8String);
-#endif // FEATURE_UTF8STRING
#else // TARGET_UNIX
// if (multi-proc || server GC)
if (GCHeapUtilities::UseThreadAllocationContexts())
@@ -93,9 +90,6 @@ void InitJITHelpers1()
SetJitHelperFunction(CORINFO_HELP_NEWARR_1_OBJ, JIT_NewArr1OBJ_MP_InlineGetThread);
ECall::DynamicallyAssignFCallImpl(GetEEFuncEntryPoint(AllocateStringFastMP_InlineGetThread), ECall::FastAllocateString);
-#ifdef FEATURE_UTF8STRING
- ECall::DynamicallyAssignFCallImpl(GetEEFuncEntryPoint(AllocateUtf8String_MP_FastPortable), ECall::FastAllocateUtf8String);
-#endif // FEATURE_UTF8STRING
}
else
{
@@ -110,9 +104,6 @@ void InitJITHelpers1()
SetJitHelperFunction(CORINFO_HELP_NEWARR_1_OBJ, JIT_NewArr1OBJ_UP);
ECall::DynamicallyAssignFCallImpl(GetEEFuncEntryPoint(AllocateStringFastUP), ECall::FastAllocateString);
-#ifdef FEATURE_UTF8STRING
- ECall::DynamicallyAssignFCallImpl(GetEEFuncEntryPoint(AllocateUtf8String_MP_FastPortable), ECall::FastAllocateUtf8String);
-#endif // FEATURE_UTF8STRING
}
#endif // TARGET_UNIX
}
diff --git a/src/coreclr/src/vm/marshalnative.cpp b/src/coreclr/src/vm/marshalnative.cpp
index 91f311b58e30..56d874c2ed78 100644
--- a/src/coreclr/src/vm/marshalnative.cpp
+++ b/src/coreclr/src/vm/marshalnative.cpp
@@ -37,64 +37,12 @@
#ifdef FEATURE_COMINTEROP
#include "comcallablewrapper.h"
-#include "cominterfacemarshaler.h"
#include "commtmemberinfomap.h"
#include "runtimecallablewrapper.h"
#include "olevariant.h"
#include "interoputil.h"
-#include "stubhelpers.h"
#endif // FEATURE_COMINTEROP
-#ifdef FEATURE_COMINTEROP_APARTMENT_SUPPORT
-#include "olecontexthelpers.h"
-#endif // FEATURE_COMINTEROP_APARTMENT_SUPPORT
-
-//
-// NumParamBytes
-// Counts # of parameter bytes
-INT32 QCALLTYPE MarshalNative::NumParamBytes(MethodDesc * pMD)
-{
- QCALL_CONTRACT;
-
- // Arguments are check on managed side
- PRECONDITION(pMD != NULL);
-
- INT32 cbParamBytes = 0;
-
- BEGIN_QCALL;
-
- if (!(pMD->IsNDirect()))
- COMPlusThrow(kArgumentException, IDS_EE_NOTNDIRECT);
-
- // Read the unmanaged stack size from the stub MethodDesc. For vararg P/Invoke,
- // this function returns size of the fixed portion of the stack.
- // Note that the following code does not throw if the DllImport declaration is
- // incorrect (such as a vararg method not marked as CallingConvention.Cdecl).
-
- MethodDesc * pStubMD = NULL;
-
- PCODE pTempStub = NULL;
- pTempStub = GetStubForInteropMethod(pMD, NDIRECTSTUB_FL_FOR_NUMPARAMBYTES, &pStubMD);
- _ASSERTE(pTempStub == NULL);
-
- _ASSERTE(pStubMD != NULL && pStubMD->IsILStub());
-
- cbParamBytes = pStubMD->AsDynamicMethodDesc()->GetNativeStackArgSize();
-
-#ifdef HOST_X86
- if (((NDirectMethodDesc *)pMD)->IsThisCall())
- {
- // The size of 'this' is not included in native stack arg size.
- cbParamBytes += sizeof(LPVOID);
- }
-#endif // HOST_X86
-
- END_QCALL;
-
- return cbParamBytes;
-}
-
-
// Prelink
// Does advance loading of an N/Direct library
VOID QCALLTYPE MarshalNative::Prelink(MethodDesc * pMD)
@@ -288,11 +236,6 @@ FCIMPL1(FC_BOOL_RET, MarshalNative::IsPinnable, Object* obj)
if (obj->GetMethodTable() == g_pStringClass)
FC_RETURN_BOOL(TRUE);
-#ifdef FEATURE_UTF8STRING
- if (obj->GetMethodTable() == g_pUtf8StringClass)
- FC_RETURN_BOOL(TRUE);
-#endif // FEATURE_UTF8STRING
-
if (obj->GetMethodTable()->IsArray())
{
BASEARRAYREF asArray = (BASEARRAYREF)ObjectToOBJECTREF(obj);
@@ -508,11 +451,6 @@ void ValidatePinnedObject(OBJECTREF obj)
if (obj->GetMethodTable() == g_pStringClass)
return;
-#ifdef FEATURE_UTF8STRING
- if (obj->GetMethodTable() == g_pUtf8StringClass)
- return;
-#endif // FEATURE_UTF8STRING
-
if (obj->GetMethodTable()->IsArray())
{
BASEARRAYREF asArray = (BASEARRAYREF) obj;
@@ -697,7 +635,7 @@ FCIMPLEND
//====================================================================
// return the IUnknown* for an Object.
//====================================================================
-FCIMPL2(IUnknown*, MarshalNative::GetIUnknownForObjectNative, Object* orefUNSAFE, CLR_BOOL fOnlyInContext)
+FCIMPL1(IUnknown*, MarshalNative::GetIUnknownForObjectNative, Object* orefUNSAFE)
{
FCALL_CONTRACT;
@@ -709,47 +647,7 @@ FCIMPL2(IUnknown*, MarshalNative::GetIUnknownForObjectNative, Object* orefUNSAFE
// Ensure COM is started up.
EnsureComStarted();
- if (fOnlyInContext && !IsObjectInContext(&oref))
- retVal = NULL;
- else
- retVal = GetComIPFromObjectRef(&oref, ComIpType_OuterUnknown, NULL);
-
- HELPER_METHOD_FRAME_END();
- return retVal;
-}
-FCIMPLEND
-
-//====================================================================
-// return the raw IUnknown* for a COM Object not related to current
-// context.
-// Does not AddRef the returned pointer
-//====================================================================
-FCIMPL1(IUnknown*, MarshalNative::GetRawIUnknownForComObjectNoAddRef, Object* orefUNSAFE)
-{
- FCALL_CONTRACT;
-
- IUnknown* retVal = NULL;
- OBJECTREF oref = (OBJECTREF) orefUNSAFE;
- HELPER_METHOD_FRAME_BEGIN_RET_1(oref);
-
- HRESULT hr = S_OK;
-
- if(!oref)
- COMPlusThrowArgumentNull(W("o"));
-
- MethodTable* pMT = oref->GetMethodTable();
- PREFIX_ASSUME(pMT != NULL);
- if(!pMT->IsComObjectType())
- COMPlusThrow(kArgumentException, IDS_EE_SRC_OBJ_NOT_COMOBJECT);
-
- // Ensure COM is started up.
- EnsureComStarted();
-
- RCWHolder pRCW(GetThread());
- pRCW.Init(oref);
-
- // Retrieve raw IUnknown * without AddRef for better performance
- retVal = pRCW->GetRawIUnknown_NoAddRef();
+ retVal = GetComIPFromObjectRef(&oref, ComIpType_OuterUnknown, NULL);
HELPER_METHOD_FRAME_END();
return retVal;
@@ -759,7 +657,7 @@ FCIMPLEND
//====================================================================
// return the IDispatch* for an Object.
//====================================================================
-FCIMPL2(IDispatch*, MarshalNative::GetIDispatchForObjectNative, Object* orefUNSAFE, CLR_BOOL fOnlyInContext)
+FCIMPL1(IDispatch*, MarshalNative::GetIDispatchForObjectNative, Object* orefUNSAFE)
{
FCALL_CONTRACT;
@@ -771,10 +669,7 @@ FCIMPL2(IDispatch*, MarshalNative::GetIDispatchForObjectNative, Object* orefUNSA
// Ensure COM is started up.
EnsureComStarted();
- if (fOnlyInContext && !IsObjectInContext(&oref))
- retVal = NULL;
- else
- retVal = (IDispatch*)GetComIPFromObjectRef(&oref, ComIpType_Dispatch, NULL);
+ retVal = (IDispatch*)GetComIPFromObjectRef(&oref, ComIpType_Dispatch, NULL);
HELPER_METHOD_FRAME_END();
return retVal;
@@ -785,7 +680,7 @@ FCIMPLEND
// return the IUnknown* representing the interface for the Object
// Object o should support Type T
//====================================================================
-FCIMPL4(IUnknown*, MarshalNative::GetComInterfaceForObjectNative, Object* orefUNSAFE, ReflectClassBaseObject* refClassUNSAFE, CLR_BOOL fOnlyInContext, CLR_BOOL bEnableCustomizedQueryInterface)
+FCIMPL3(IUnknown*, MarshalNative::GetComInterfaceForObjectNative, Object* orefUNSAFE, ReflectClassBaseObject* refClassUNSAFE, CLR_BOOL bEnableCustomizedQueryInterface)
{
FCALL_CONTRACT;
@@ -820,10 +715,7 @@ FCIMPL4(IUnknown*, MarshalNative::GetComInterfaceForObjectNative, Object* orefUN
if (!::IsTypeVisibleFromCom(th))
COMPlusThrowArgumentException(W("t"), W("Argument_TypeMustBeVisibleFromCom"));
- if (fOnlyInContext && !IsObjectInContext(&oref))
- retVal = NULL;
- else
- retVal = GetComIPFromObjectRef(&oref, th.GetMethodTable(), bEnableCustomizedQueryInterface);
+ retVal = GetComIPFromObjectRef(&oref, th.GetMethodTable(), bEnableCustomizedQueryInterface);
HELPER_METHOD_FRAME_END();
return retVal;
@@ -880,28 +772,6 @@ FCIMPL1(Object*, MarshalNative::GetUniqueObjectForIUnknownNative, IUnknown* pUnk
}
FCIMPLEND
-FCIMPL1(Object*, MarshalNative::GetUniqueObjectForIUnknownWithoutUnboxing, IUnknown* pUnk)
-{
- FCALL_CONTRACT;
-
- OBJECTREF oref = NULL;
- HELPER_METHOD_FRAME_BEGIN_RET_1(oref);
-
- HRESULT hr = S_OK;
-
- if(!pUnk)
- COMPlusThrowArgumentNull(W("pUnk"));
-
- // Ensure COM is started up.
- EnsureComStarted();
-
- GetObjectRefFromComIP(&oref, pUnk, NULL, NULL, ObjFromComIP::UNIQUE_OBJECT);
-
- HELPER_METHOD_FRAME_END();
- return OBJECTREFToObject(oref);
-}
-FCIMPLEND
-
//====================================================================
// return an Object for IUnknown, using the Type T,
// NOTE:
@@ -1396,44 +1266,6 @@ FCIMPL1(int, MarshalNative::GetEndComSlot, ReflectClassBaseObject* tUNSAFE)
}
FCIMPLEND
-//+----------------------------------------------------------------------------
-//
-// Method: MarshalNative::WrapIUnknownWithComObject
-// Synopsis: unmarshal the buffer and return IUnknown
-//
-
-//
-//+----------------------------------------------------------------------------
-FCIMPL1(Object*, MarshalNative::WrapIUnknownWithComObject, IUnknown* pUnk)
-{
- CONTRACTL
- {
- FCALL_CHECK;
- PRECONDITION(CheckPointer(pUnk, NULL_OK));
- }
- CONTRACTL_END;
-
- OBJECTREF cref = NULL;
- HELPER_METHOD_FRAME_BEGIN_RET_0();
-
- if(pUnk == NULL)
- COMPlusThrowArgumentNull(W("punk"));
-
- EnsureComStarted();
-
- COMInterfaceMarshaler marshaler;
- marshaler.Init(pUnk, g_pBaseCOMObject, GET_THREAD());
-
- cref = marshaler.WrapWithComObject();
-
- if (cref == NULL)
- COMPlusThrowOM();
-
- HELPER_METHOD_FRAME_END();
- return OBJECTREFToObject(cref);
-}
-FCIMPLEND
-
FCIMPL2(void, MarshalNative::ChangeWrapperHandleStrength, Object* orefUNSAFE, CLR_BOOL fIsWeak)
{
FCALL_CONTRACT;
@@ -1512,43 +1344,6 @@ int MarshalNative::GetComSlotInfo(MethodTable *pMT, MethodTable **ppDefItfMT)
}
}
-BOOL MarshalNative::IsObjectInContext(OBJECTREF *pObj)
-{
- CONTRACTL
- {
- THROWS;
- GC_TRIGGERS;
- MODE_COOPERATIVE;
- PRECONDITION(pObj != NULL);
- }
- CONTRACTL_END;
-
- SyncBlock* pBlock = (*pObj)->GetSyncBlock();
-
- InteropSyncBlockInfo* pInteropInfo = pBlock->GetInteropInfo();
-
- ComCallWrapper* pCCW = pInteropInfo->GetCCW();
-
- if((pCCW) || (!pInteropInfo->RCWWasUsed()))
- {
- // We are dealing with a CCW. Since CCW's are agile, they are always in the
- // correct context.
- return TRUE;
- }
- else
- {
- RCWHolder pRCW(GetThread());
- pRCW.Init(pBlock);
-
- // We are dealing with an RCW, we need to check to see if the current
- // context is the one it was first seen in.
- LPVOID pCtxCookie = GetCurrentCtxCookie();
- _ASSERTE(pCtxCookie != NULL);
-
- return pCtxCookie == pRCW->GetWrapperCtxCookie();
- }
-}
-
void QCALLTYPE MarshalNative::GetTypeFromCLSID(REFCLSID clsid, PCWSTR wszServer, QCall::ObjectHandleOnStack retType)
{
QCALL_CONTRACT;
diff --git a/src/coreclr/src/vm/marshalnative.h b/src/coreclr/src/vm/marshalnative.h
index aa2803fa5a50..fc92e26028a7 100644
--- a/src/coreclr/src/vm/marshalnative.h
+++ b/src/coreclr/src/vm/marshalnative.h
@@ -16,28 +16,9 @@
#define MAX_UTF8_CHAR_SIZE 3
-//!!! Must be kept in sync with ArrayWithOffset class layout.
-struct ArrayWithOffsetData
-{
- BASEARRAYREF m_Array;
- INT32 m_cbOffset;
- INT32 m_cbCount;
-};
-
-
-#ifdef FEATURE_COMINTEROP
-enum ComMemberType
-{
- CMT_Method = 0,
- CMT_PropGet = 1,
- CMT_PropSet = 2
-};
-#endif // FEATURE_COMINTEROP
-
class MarshalNative
{
public:
- static INT32 QCALLTYPE NumParamBytes(MethodDesc * pMD);
static VOID QCALLTYPE Prelink(MethodDesc * pMD);
//====================================================================
@@ -71,25 +52,18 @@ class MarshalNative
//====================================================================
// return the IUnknown* for an Object
//====================================================================
- static FCDECL2(IUnknown*, GetIUnknownForObjectNative, Object* orefUNSAFE, CLR_BOOL fOnlyInContext);
-
- //====================================================================
- // return the raw IUnknown* for a COM Object not related to current
- // context
- // Does not AddRef the returned pointer
- //====================================================================
- static FCDECL1(IUnknown*, GetRawIUnknownForComObjectNoAddRef, Object* orefUNSAFE);
+ static FCDECL1(IUnknown*, GetIUnknownForObjectNative, Object* orefUNSAFE);
//====================================================================
// return the IDispatch* for an Object
//====================================================================
- static FCDECL2(IDispatch*, GetIDispatchForObjectNative, Object* orefUNSAFE, CLR_BOOL fOnlyInContext);
+ static FCDECL1(IDispatch*, GetIDispatchForObjectNative, Object* orefUNSAFE);
//====================================================================
// return the IUnknown* representing the interface for the Object
// Object o should support Type T
//====================================================================
- static FCDECL4(IUnknown*, GetComInterfaceForObjectNative, Object* orefUNSAFE, ReflectClassBaseObject* refClassUNSAFE, CLR_BOOL fOnlyInContext, CLR_BOOL bEnableCustomizedQueryInterface);
+ static FCDECL3(IUnknown*, GetComInterfaceForObjectNative, Object* orefUNSAFE, ReflectClassBaseObject* refClassUNSAFE, CLR_BOOL bEnableCustomizedQueryInterface);
//====================================================================
// return an Object for IUnknown
@@ -101,11 +75,6 @@ class MarshalNative
//====================================================================
static FCDECL1(Object*, GetUniqueObjectForIUnknownNative, IUnknown* pUnk);
- //====================================================================
- // return a unique cacheless Object for IUnknown
- //====================================================================
- static FCDECL1(Object*, GetUniqueObjectForIUnknownWithoutUnboxing, IUnknown* pUnk);
-
//====================================================================
// return an Object for IUnknown, using the Type T,
// NOTE:
@@ -164,8 +133,6 @@ class MarshalNative
static FCDECL1(int, GetStartComSlot, ReflectClassBaseObject* tUNSAFE);
static FCDECL1(int, GetEndComSlot, ReflectClassBaseObject* tUNSAFE);
- static FCDECL1(Object*, WrapIUnknownWithComObject, IUnknown* pUnk);
-
static FCDECL2(void, ChangeWrapperHandleStrength, Object* orefUNSAFE, CLR_BOOL fIsWeak);
//====================================================================
@@ -175,7 +142,6 @@ class MarshalNative
private:
static int GetComSlotInfo(MethodTable *pMT, MethodTable **ppDefItfMT);
- static BOOL IsObjectInContext(OBJECTREF *pObj);
#endif // FEATURE_COMINTEROP
};
diff --git a/src/coreclr/src/vm/metasig.h b/src/coreclr/src/vm/metasig.h
index 03b2e457271b..0714e0c50e20 100644
--- a/src/coreclr/src/vm/metasig.h
+++ b/src/coreclr/src/vm/metasig.h
@@ -414,16 +414,6 @@ DEFINE_METASIG(IM(Obj_Int_RetIntPtr, j i, I))
DEFINE_METASIG(IM(ArrByte_Int_Int_RetVoid, a(b) i i, v))
DEFINE_METASIG(IM(PtrByte_RetVoid, P(b), v))
-#ifdef FEATURE_UTF8STRING
-DEFINE_METASIG_T(IM(ReadOnlySpanOfByte_RetUtf8Str, GI(g(READONLY_SPAN), 1, b), C(UTF8_STRING)))
-DEFINE_METASIG_T(IM(ReadOnlySpanOfChar_RetUtf8Str, GI(g(READONLY_SPAN), 1, u), C(UTF8_STRING)))
-DEFINE_METASIG_T(IM(ArrByte_Int_Int_RetUtf8Str, a(b) i i, C(UTF8_STRING)))
-DEFINE_METASIG_T(IM(PtrByte_RetUtf8Str, P(b), C(UTF8_STRING)))
-DEFINE_METASIG_T(IM(ArrChar_Int_Int_RetUtf8Str, a(u) i i, C(UTF8_STRING)))
-DEFINE_METASIG_T(IM(PtrChar_RetUtf8Str, P(u), C(UTF8_STRING)))
-DEFINE_METASIG_T(IM(String_RetUtf8Str, s, C(UTF8_STRING)))
-#endif // FEATURE_UTF8STRING
-
DEFINE_METASIG(IM(Char_Char_RetStr, u u, s))
DEFINE_METASIG(IM(Char_Int_RetVoid, u i, v))
DEFINE_METASIG_T(SM(RetCultureInfo, _, C(CULTURE_INFO)))
diff --git a/src/coreclr/src/vm/methodtablebuilder.cpp b/src/coreclr/src/vm/methodtablebuilder.cpp
index ec07edc2b557..5e09e619b9e8 100644
--- a/src/coreclr/src/vm/methodtablebuilder.cpp
+++ b/src/coreclr/src/vm/methodtablebuilder.cpp
@@ -9770,19 +9770,6 @@ void MethodTableBuilder::CheckForSystemTypes()
pMT->SetComponentSize(2);
}
-#ifdef FEATURE_UTF8STRING
- else if (strcmp(name, g_Utf8StringName) == 0 && strcmp(nameSpace, g_SystemNS) == 0)
- {
- // Utf8Strings are not "normal" objects, so we need to mess with their method table a bit
- // so that the GC can figure out how big each string is...
- DWORD baseSize = Utf8StringObject::GetBaseSize();
- pMT->SetBaseSize(baseSize); // NULL character included
-
- GetHalfBakedClass()->SetBaseSizePadding(baseSize - bmtFP->NumInstanceFieldBytes);
-
- pMT->SetComponentSize(1);
- }
-#endif // FEATURE_UTF8STRING
else if (strcmp(name, g_CriticalFinalizerObjectName) == 0 && strcmp(nameSpace, g_ConstrainedExecutionNS) == 0)
{
// To introduce a class with a critical finalizer,
diff --git a/src/coreclr/src/vm/object.h b/src/coreclr/src/vm/object.h
index 0604d6583401..9f6bdf8562ad 100644
--- a/src/coreclr/src/vm/object.h
+++ b/src/coreclr/src/vm/object.h
@@ -783,9 +783,6 @@ typedef DPTR(UPTRArray) PTR_UPTRArray;
typedef DPTR(PTRArray) PTR_PTRArray;
class StringObject;
-#ifdef FEATURE_UTF8STRING
-class Utf8StringObject;
-#endif // FEATURE_UTF8STRING
#ifdef USE_CHECKED_OBJECTREFS
typedef REF BASEARRAYREF;
@@ -804,9 +801,6 @@ typedef REF UPTRARRAYREF;
typedef REF CHARARRAYREF;
typedef REF PTRARRAYREF; // Warning: Use PtrArray only for single dimensional arrays, not multidim arrays.
typedef REF STRINGREF;
-#ifdef FEATURE_UTF8STRING
-typedef REF UTF8STRINGREF;
-#endif // FEATURE_UTF8STRING
#else // USE_CHECKED_OBJECTREFS
@@ -826,9 +820,6 @@ typedef PTR_UPTRArray UPTRARRAYREF;
typedef PTR_CHARArray CHARARRAYREF;
typedef PTR_PTRArray PTRARRAYREF; // Warning: Use PtrArray only for single dimensional arrays, not multidim arrays.
typedef PTR_StringObject STRINGREF;
-#ifdef FEATURE_UTF8STRING
-typedef PTR_Utf8StringObject UTF8STRINGREF;
-#endif // FEATURE_UTF8STRING
#endif // USE_CHECKED_OBJECTREFS
@@ -1067,56 +1058,6 @@ class ReflectClassBaseObject : public BaseObjectWithCachedData
};
-#ifdef FEATURE_UTF8STRING
-class Utf8StringObject : public Object
-{
-#ifdef DACCESS_COMPILE
- friend class ClrDataAccess;
-#endif
-
-private:
- DWORD m_StringLength;
- BYTE m_FirstChar;
-
-public:
- VOID SetLength(DWORD len) { LIMITED_METHOD_CONTRACT; _ASSERTE(len >= 0); m_StringLength = len; }
-
-protected:
- Utf8StringObject() { LIMITED_METHOD_CONTRACT; }
- ~Utf8StringObject() { LIMITED_METHOD_CONTRACT; }
-
-public:
-
- /*=================RefInterpretGetStringValuesDangerousForGC======================
- **N.B.: This perfoms no range checking and relies on the caller to have done this.
- **Args: (IN)ref -- the Utf8String to be interpretted.
- ** (OUT)chars -- a pointer to the characters in the buffer.
- ** (OUT)length -- a pointer to the length of the buffer.
- **Returns: void.
- **Exceptions: None.
- ==============================================================================*/
- // !!!! If you use this function, you have to be careful because chars is a pointer
- // !!!! to the data buffer of ref. If GC happens after this call, you need to make
- // !!!! sure that you have a pin handle on ref, or use GCPROTECT_BEGINPINNING on ref.
- void RefInterpretGetStringValuesDangerousForGC(__deref_out_ecount(*length + 1) CHAR **chars, int *length) {
- WRAPPER_NO_CONTRACT;
-
- _ASSERTE(GetGCSafeMethodTable() == g_pUtf8StringClass);
- *length = GetStringLength();
- *chars = GetBuffer();
-#ifdef _DEBUG
- EnableStressHeapHelper();
-#endif
- }
-
- DWORD GetStringLength() { LIMITED_METHOD_DAC_CONTRACT; return( m_StringLength );}
- CHAR* GetBuffer() { LIMITED_METHOD_CONTRACT; return (CHAR*)( dac_cast(this) + offsetof(Utf8StringObject, m_FirstChar) ); }
-
- static DWORD GetBaseSize();
- static SIZE_T GetSize(DWORD stringLength);
-};
-#endif // FEATURE_UTF8STRING
-
// This is the Method version of the Reflection object.
// A Method has adddition information.
// m_pMD - A pointer to the actual MethodDesc of the method.
diff --git a/src/coreclr/src/vm/object.inl b/src/coreclr/src/vm/object.inl
index e82fdebfbeb5..e61f2eb443ba 100644
--- a/src/coreclr/src/vm/object.inl
+++ b/src/coreclr/src/vm/object.inl
@@ -60,22 +60,6 @@ __forceinline /*static*/ SIZE_T StringObject::GetSize(DWORD strLen)
return GetBaseSize() + strLen * sizeof(WCHAR);
}
-#ifdef FEATURE_UTF8STRING
-__forceinline /*static*/ DWORD Utf8StringObject::GetBaseSize()
-{
- LIMITED_METHOD_DAC_CONTRACT;
-
- return OBJECT_BASESIZE + sizeof(DWORD) /* length */ + sizeof(BYTE) /* null terminator */;
-}
-
-__forceinline /*static*/ SIZE_T Utf8StringObject::GetSize(DWORD strLen)
-{
- LIMITED_METHOD_DAC_CONTRACT;
-
- return GetBaseSize() + strLen;
-}
-#endif // FEATURE_UTF8STRING
-
#ifdef DACCESS_COMPILE
inline void Object::EnumMemoryRegions(void)
diff --git a/src/coreclr/src/vm/olevariant.cpp b/src/coreclr/src/vm/olevariant.cpp
index d4d256e01329..91d4105ef853 100644
--- a/src/coreclr/src/vm/olevariant.cpp
+++ b/src/coreclr/src/vm/olevariant.cpp
@@ -2604,29 +2604,9 @@ void OleVariant::MarshalRecordVariantOleToCom(VARIANT *pOleVariant,
LPVOID pvRecord = V_RECORD(pOleVariant);
if (pvRecord)
{
- // Go to the registry to find the value class associated
- // with the record's guid.
- GUID guid;
- {
- GCX_PREEMP();
- IfFailThrow(pRecInfo->GetGuid(&guid));
- }
- MethodTable *pValueClass = GetValueTypeForGUID(guid);
- if (!pValueClass)
- COMPlusThrow(kArgumentException, IDS_EE_CANNOT_MAP_TO_MANAGED_VC);
-
- // Now that we have the value class, allocate an instance of the
- // boxed value class and copy the contents of the record into it.
- BoxedValueClass = AllocateObject(pValueClass);
-
- MethodDesc* pStructMarshalStub;
- {
- GCX_PREEMP();
-
- pStructMarshalStub = NDirect::CreateStructMarshalILStub(pValueClass);
- }
-
- MarshalStructViaILStub(pStructMarshalStub, BoxedValueClass->GetData(), pvRecord, StructMarshalStubs::MarshalOperation::Unmarshal);
+ // This value type should have been registered through
+ // a TLB. CoreCLR doesn't support dynamic type mapping.
+ COMPlusThrow(kArgumentException, IDS_EE_CANNOT_MAP_TO_MANAGED_VC);
}
pComVariant->SetObjRef(BoxedValueClass);
@@ -5096,21 +5076,9 @@ TypeHandle OleVariant::GetElementTypeForRecordSafeArray(SAFEARRAY* pSafeArray)
}
CONTRACTL_END;
- HRESULT hr = S_OK;
-
- GUID guid;
- {
- GCX_PREEMP();
-
- SafeComHolder pRecInfo;
- IfFailThrow(SafeArrayGetRecordInfo(pSafeArray, &pRecInfo));
- IfFailThrow(pRecInfo->GetGuid(&guid));
- }
- MethodTable *pValueClass = GetValueTypeForGUID(guid);
- if (!pValueClass)
- COMPlusThrow(kArgumentException, IDS_EE_CANNOT_MAP_TO_MANAGED_VC);
-
- return TypeHandle(pValueClass);
+ // CoreCLR doesn't support dynamic type mapping.
+ COMPlusThrow(kArgumentException, IDS_EE_CANNOT_MAP_TO_MANAGED_VC);
+ return TypeHandle(); // Unreachable
}
#endif //FEATURE_COMINTEROP
diff --git a/src/coreclr/src/vm/pgo.cpp b/src/coreclr/src/vm/pgo.cpp
index 16d57f29d8cc..3b7ab178984e 100644
--- a/src/coreclr/src/vm/pgo.cpp
+++ b/src/coreclr/src/vm/pgo.cpp
@@ -8,11 +8,82 @@
#ifdef FEATURE_PGO
ICorJitInfo::BlockCounts* PgoManager::s_PgoData;
-unsigned PgoManager::s_PgoIndex;
+unsigned volatile PgoManager::s_PgoIndex;
const char* const PgoManager::s_FileHeaderString = "*** START PGO Data, max index = %u ***\n";
const char* const PgoManager::s_FileTrailerString = "*** END PGO Data ***\n";
const char* const PgoManager::s_MethodHeaderString = "@@@ token 0x%08X hash 0x%08X ilSize 0x%08X records 0x%08X index %u\n";
const char* const PgoManager::s_RecordString = "ilOffs %u count %u\n";
+const char* const PgoManager::s_ClassProfileHeader = "classProfile iloffs %u samples %u entries %u totalCount %u %s\n";
+const char* const PgoManager::s_ClassProfileEntry = "class %p (%s) count %u\n";
+
+// Data item in class profile histogram
+//
+struct HistogramEntry
+{
+ // Class that was observed at runtime
+ CORINFO_CLASS_HANDLE m_mt;
+ // Number of observations in the table
+ unsigned m_count;
+};
+
+// Summarizes a ClassProfile table by forming a Histogram
+//
+struct Histogram
+{
+ Histogram(const ICorJitInfo::ClassProfile* classProfile);
+
+ // Number of nonzero entries in the histogram
+ unsigned m_count;
+ // Sum of counts from all entries in the histogram
+ unsigned m_totalCount;
+ // Histogram entries, in no particular order.
+ // The first m_count of these will be valid.
+ HistogramEntry m_histogram[ICorJitInfo::ClassProfile::SIZE];
+};
+
+Histogram::Histogram(const ICorJitInfo::ClassProfile* classProfile)
+{
+ m_count = 0;
+ m_totalCount = 0;
+
+ for (unsigned k = 0; k < ICorJitInfo::ClassProfile::SIZE; k++)
+ {
+ CORINFO_CLASS_HANDLE currentEntry = classProfile->ClassTable[k];
+
+ if (currentEntry == NULL)
+ {
+ continue;
+ }
+
+ m_totalCount++;
+
+ bool found = false;
+ unsigned h = 0;
+ for(; h < m_count; h++)
+ {
+ if (m_histogram[h].m_mt == currentEntry)
+ {
+ m_histogram[h].m_count++;
+ found = true;
+ break;
+ }
+ }
+
+ if (!found)
+ {
+ m_histogram[h].m_mt = currentEntry;
+ m_histogram[h].m_count = 1;
+ m_count++;
+ }
+ }
+
+ // Zero the remainder
+ for (unsigned k = m_count; k < ICorJitInfo::ClassProfile::SIZE; k++)
+ {
+ m_histogram[k].m_mt = 0;
+ m_histogram[k].m_count = 0;
+ }
+}
void PgoManager::Initialize()
{
@@ -36,6 +107,12 @@ void PgoManager::Shutdown()
WritePgoData();
}
+void PgoManager::VerifyAddress(void* address)
+{
+ _ASSERTE(address > s_PgoData);
+ _ASSERTE(address <= s_PgoData + BUFFER_SIZE);
+}
+
void PgoManager::WritePgoData()
{
if (CLRConfig::GetConfigValue(CLRConfig::INTERNAL_WritePGOData) == 0)
@@ -47,7 +124,6 @@ void PgoManager::WritePgoData()
{
return;
}
-
CLRConfigStringHolder fileName(CLRConfig::GetConfigValue(CLRConfig::INTERNAL_PGODataPath));
if (fileName == NULL)
@@ -80,15 +156,79 @@ void PgoManager::WritePgoData()
index += 2;
- ICorJitInfo::BlockCounts* records = &s_PgoData[index];
- unsigned recordCount = header->recordCount - 2;
- unsigned lastOffset = 0;
- for (unsigned i = 0; i < recordCount; i++)
+ ICorJitInfo::BlockCounts* records = &s_PgoData[index];
+ unsigned recordCount = header->recordCount - 2;
+ unsigned lastOffset = 0;
+ bool hasClassProfile = false;
+ unsigned i = 0;
+
+ while (i < recordCount)
{
const unsigned thisOffset = records[i].ILOffset;
- assert((thisOffset > lastOffset) || (lastOffset == 0));
+
+
+ if ((thisOffset & ICorJitInfo::ClassProfile::CLASS_FLAG) != 0)
+ {
+ // remainder must be class probe data
+ hasClassProfile = true;
+ break;
+ }
+
lastOffset = thisOffset;
fprintf(pgoDataFile, s_RecordString, records[i].ILOffset, records[i].ExecutionCount);
+ i++;
+ }
+
+ if (hasClassProfile)
+ {
+ fflush(pgoDataFile);
+
+ // Write out histogram of each probe's data.
+ // We currently don't expect to be able to read this back in.
+ //
+ while (i < recordCount)
+ {
+ // Should be enough room left for a class profile.
+ _ASSERTE(i + sizeof(ICorJitInfo::ClassProfile) / sizeof(ICorJitInfo::BlockCounts) <= recordCount);
+
+ const ICorJitInfo::ClassProfile* classProfile = (ICorJitInfo::ClassProfile*)&s_PgoData[i + index];
+
+ // Form a histogram...
+ //
+ Histogram h(classProfile);
+
+ // And display...
+ //
+ // Figure out if this is a virtual or interface probe.
+ //
+ const char* profileType = "virtual";
+
+ if ((classProfile->ILOffset & ICorJitInfo::ClassProfile::INTERFACE_FLAG) != 0)
+ {
+ profileType = "interface";
+ }
+
+ // "classProfile iloffs %u samples %u entries %u totalCount %u %s\n";
+ //
+ fprintf(pgoDataFile, s_ClassProfileHeader, (classProfile->ILOffset & ICorJitInfo::ClassProfile::OFFSET_MASK),
+ classProfile->Count, h.m_count, h.m_totalCount, profileType);
+
+ for (unsigned j = 0; j < h.m_count; j++)
+ {
+ CORINFO_CLASS_HANDLE clsHnd = h.m_histogram[j].m_mt;
+ const char* className = "n/a";
+#ifdef _DEBUG
+ TypeHandle typeHnd(clsHnd);
+ MethodTable* pMT = typeHnd.AsMethodTable();
+ className = pMT->GetDebugClassName();
+#endif
+ fprintf(pgoDataFile, s_ClassProfileEntry, clsHnd, className, h.m_histogram[j].m_count);
+ }
+
+ // Advance to next entry.
+ //
+ i += sizeof(ICorJitInfo::ClassProfile) / sizeof(ICorJitInfo::BlockCounts);
+ }
}
index += recordCount;
@@ -179,7 +319,7 @@ void PgoManager::ReadPgoData()
continue;
}
- assert(index == rIndex);
+ _ASSERTE(index == rIndex);
methods++;
// If there's not enough room left, bail
@@ -218,8 +358,13 @@ void PgoManager::ReadPgoData()
if (sscanf_s(buffer, s_RecordString, &s_PgoData[index].ILOffset, &s_PgoData[index].ExecutionCount) != 2)
{
- failed = true;
- break;
+ // This might be class profile data; if so just skip it.
+ //
+ if (strstr(buffer, "class") != buffer)
+ {
+ failed = true;
+ break;
+ }
}
index++;
@@ -342,6 +487,172 @@ HRESULT PgoManager::getMethodBlockCounts(MethodDesc* pMD, unsigned ilSize, UINT3
return E_NOTIMPL;
}
+// See if there is a class profile for this method at the indicated il Offset.
+// If so, return the most frequently seen class, along with the likelihood that
+// it was the class seen, and the total number of classes seen.
+//
+// Return NULL if there is no profile data to be found.
+//
+CORINFO_CLASS_HANDLE PgoManager::getLikelyClass(MethodDesc* pMD, unsigned ilSize, unsigned ilOffset, UINT32* pLikelihood, UINT32* pNumberOfClasses)
+{
+ *pLikelihood = 0;
+ *pNumberOfClasses = 0;
+
+ // Bail if there's no profile data.
+ //
+ if (s_PgoData == NULL)
+ {
+ return NULL;
+ }
+
+ // See if we can find profile data for this method in the profile buffer.
+ //
+ const unsigned maxIndex = s_PgoIndex;
+ const unsigned token = pMD->IsDynamicMethod() ? 0 : pMD->GetMemberDef();
+ const unsigned hash = pMD->GetStableHash();
+
+ unsigned index = 0;
+ unsigned methodsChecked = 0;
+
+ while (index < maxIndex)
+ {
+ // The first two "records" of each entry are actually header data
+ // to identify the method.
+ //
+ Header* const header = (Header*)&s_PgoData[index];
+
+ // Sanity check that header data looks reasonable. If not, just
+ // fail the lookup.
+ //
+ if ((header->recordCount < MIN_RECORD_COUNT) || (header->recordCount > MAX_RECORD_COUNT))
+ {
+ break;
+ }
+
+ // See if the header info matches the current method.
+ //
+ if ((header->token == token) && (header->hash == hash) && (header->ilSize == ilSize))
+ {
+ // Yep, found data. See if there is a suitable class profile.
+ //
+ // This bit is currently somewhat hacky ... we scan the records, the count records come
+ // first and are in increasing IL offset order. Class profiles have inverted IL offsets
+ // so when we find an offset with high bit set, it's going to be an class profile.
+ //
+ unsigned countILOffset = 0;
+ unsigned j = 2;
+
+ // Skip past all the count entries
+ //
+ while (j < header->recordCount)
+ {
+ if ((s_PgoData[index + j].ILOffset & ICorJitInfo::ClassProfile::CLASS_FLAG) != 0)
+ {
+ break;
+ }
+
+ countILOffset = s_PgoData[index + j].ILOffset;
+ j++;
+ }
+
+ // Now we're in the "class profile" portion of the slab for this method.
+ // Look for the one that has the right IL offset.
+ //
+ while (j < header->recordCount)
+ {
+ const ICorJitInfo::ClassProfile* const classProfile = (ICorJitInfo::ClassProfile*)&s_PgoData[index + j];
+
+ if ((classProfile->ILOffset & ICorJitInfo::ClassProfile::OFFSET_MASK) != ilOffset)
+ {
+ // Need to make sure this is even divisor
+ //
+ j += sizeof(ICorJitInfo::ClassProfile) / sizeof(ICorJitInfo::BlockCounts);
+ continue;
+ }
+
+ // Form a histogram
+ //
+ Histogram h(classProfile);
+
+ // Use histogram count as number of classes estimate
+ //
+ *pNumberOfClasses = h.m_count;
+
+ // Report back what we've learned
+ // (perhaps, use count to augment likelihood?)
+ //
+ switch (h.m_count)
+ {
+ case 0:
+ {
+ return NULL;
+ }
+ break;
+
+ case 1:
+ {
+ *pLikelihood = 100;
+ return h.m_histogram[0].m_mt;
+ }
+ break;
+
+ case 2:
+ {
+ if (h.m_histogram[0].m_count >= h.m_histogram[1].m_count)
+ {
+ *pLikelihood = (100 * h.m_histogram[0].m_count) / h.m_totalCount;
+ return h.m_histogram[0].m_mt;
+ }
+ else
+ {
+ *pLikelihood = (100 * h.m_histogram[1].m_count) / h.m_totalCount;
+ return h.m_histogram[1].m_mt;
+ }
+ }
+ break;
+
+ default:
+ {
+ // Find maximum entry and return it
+ //
+ unsigned maxIndex = 0;
+ unsigned maxCount = 0;
+
+ for (unsigned m = 0; m < h.m_count; m++)
+ {
+ if (h.m_histogram[m].m_count > maxCount)
+ {
+ maxIndex = m;
+ maxCount = h.m_histogram[m].m_count;
+ }
+ }
+
+ if (maxCount > 0)
+ {
+ *pLikelihood = (100 * maxCount) / h.m_totalCount;
+ return h.m_histogram[maxIndex].m_mt;
+ }
+
+ return NULL;
+ }
+ break;
+ }
+ }
+
+ // Failed to find a class profile entry
+ //
+ return NULL;
+ }
+
+ index += header->recordCount;
+ methodsChecked++;
+ }
+
+ // Failed to find any sort of profile data for this method
+ //
+ return NULL;
+}
+
#else
// Stub version for !FEATURE_PGO builds
@@ -364,4 +675,11 @@ HRESULT PgoManager::getMethodBlockCounts(MethodDesc* pMD, unsigned ilSize, UINT3
return E_NOTIMPL;
}
+// Stub version for !FEATURE_PGO builds
+//
+CORINFO_CLASS_HANDLE PgoManager::getLikelyClass(MethodDesc* pMD, unsigned ilSize, unsigned ilOffset)
+{
+ return NULL;
+}
+
#endif // FEATURE_PGO
diff --git a/src/coreclr/src/vm/pgo.h b/src/coreclr/src/vm/pgo.h
index c5fc5273236f..3ba4ab6ddb87 100644
--- a/src/coreclr/src/vm/pgo.h
+++ b/src/coreclr/src/vm/pgo.h
@@ -22,18 +22,26 @@ class PgoManager
static HRESULT allocMethodBlockCounts(MethodDesc* pMD, UINT32 count,
ICorJitInfo::BlockCounts** pBlockCounts, unsigned ilSize);
- // Retreive the profile block count buffer for a method
+ // Retrieve the profile block count buffer for a method
static HRESULT getMethodBlockCounts(MethodDesc* pMD, unsigned ilSize, UINT32* pCount,
ICorJitInfo::BlockCounts** pBlockCounts, UINT32* pNumRuns);
+ // Retrieve the most likely class for a particular call
+ static CORINFO_CLASS_HANDLE getLikelyClass(MethodDesc* pMD, unsigned ilSize, unsigned ilOffset, UINT32* pLikelihood, UINT32* pNumberOfClasses);
+
+ // Verify address in bounds
+ static void VerifyAddress(void* address);
+
#ifdef FEATURE_PGO
private:
enum
{
- // Number of ICorJitInfo::BlockCount records in the global slab
- BUFFER_SIZE = 64 * 1024,
+ // Number of ICorJitInfo::BlockCount records in the global slab.
+ // Currently 4MB for a 64 bit system.
+ //
+ BUFFER_SIZE = 8 * 64 * 1024,
MIN_RECORD_COUNT = 3,
MAX_RECORD_COUNT = BUFFER_SIZE
};
@@ -57,13 +65,15 @@ class PgoManager
static ICorJitInfo::BlockCounts* s_PgoData;
// Index of next free entry in the global slab
- static unsigned s_PgoIndex;
+ static unsigned volatile s_PgoIndex;
// Formatting strings for file input/output
static const char* const s_FileHeaderString;
static const char* const s_FileTrailerString;
static const char* const s_MethodHeaderString;
static const char* const s_RecordString;
+ static const char* const s_ClassProfileHeader;
+ static const char* const s_ClassProfileEntry;
#endif // FEATURE_PGO
};
diff --git a/src/coreclr/src/vm/reflectioninvocation.cpp b/src/coreclr/src/vm/reflectioninvocation.cpp
index 0051a9345c89..22be44f4a2bc 100644
--- a/src/coreclr/src/vm/reflectioninvocation.cpp
+++ b/src/coreclr/src/vm/reflectioninvocation.cpp
@@ -515,30 +515,28 @@ FCIMPL6(Object*, RuntimeTypeHandle::CreateInstance, ReflectClassBaseObject* refT
}
FCIMPLEND
-FCIMPL2(Object*, RuntimeTypeHandle::CreateInstanceForGenericType, ReflectClassBaseObject* pTypeUNSAFE, ReflectClassBaseObject* pParameterTypeUNSAFE) {
- FCALL_CONTRACT;
-
- struct _gc
- {
- OBJECTREF rv;
- REFLECTCLASSBASEREF refType;
- REFLECTCLASSBASEREF refParameterType;
- } gc;
-
- gc.rv = NULL;
- gc.refType = (REFLECTCLASSBASEREF)ObjectToOBJECTREF(pTypeUNSAFE);
- gc.refParameterType = (REFLECTCLASSBASEREF)ObjectToOBJECTREF(pParameterTypeUNSAFE);
+void QCALLTYPE RuntimeTypeHandle::CreateInstanceForAnotherGenericParameter(
+ QCall::TypeHandle pTypeHandle,
+ TypeHandle* pInstArray,
+ INT32 cInstArray,
+ QCall::ObjectHandleOnStack pInstantiatedObject
+)
+{
+ CONTRACTL{
+ QCALL_CHECK;
+ PRECONDITION(!pTypeHandle.AsTypeHandle().IsNull());
+ PRECONDITION(cInstArray >= 0);
+ PRECONDITION(cInstArray == 0 || pInstArray != NULL);
+ }
+ CONTRACTL_END;
- MethodDesc* pMeth;
- TypeHandle genericType = gc.refType->GetType();
+ TypeHandle genericType = pTypeHandle.AsTypeHandle();
- TypeHandle parameterHandle = gc.refParameterType->GetType();
+ BEGIN_QCALL;
_ASSERTE (genericType.HasInstantiation());
- HELPER_METHOD_FRAME_BEGIN_RET_PROTECT(gc);
-
- TypeHandle instantiatedType = ((TypeHandle)genericType.GetCanonicalMethodTable()).Instantiate(Instantiation(¶meterHandle, 1));
+ TypeHandle instantiatedType = ((TypeHandle)genericType.GetCanonicalMethodTable()).Instantiate(Instantiation(pInstArray, (DWORD)cInstArray));
// Get the type information associated with refThis
MethodTable* pVMT = instantiatedType.GetMethodTable();
@@ -546,24 +544,24 @@ FCIMPL2(Object*, RuntimeTypeHandle::CreateInstanceForGenericType, ReflectClassBa
_ASSERTE( !pVMT->IsAbstract() ||! instantiatedType.ContainsGenericVariables());
_ASSERTE(!pVMT->IsByRefLike() && pVMT->HasDefaultConstructor());
- pMeth = pVMT->GetDefaultConstructor();
- MethodDescCallSite ctor(pMeth);
-
// We've got the class, lets allocate it and call the constructor
// Nullables don't take this path, if they do we need special logic to make an instance
_ASSERTE(!Nullable::IsNullableType(instantiatedType));
- gc.rv = instantiatedType.GetMethodTable()->Allocate();
- ARG_SLOT arg = ObjToArgSlot(gc.rv);
+ {
+ GCX_COOP();
- // Call the method
- TryCallMethod(&ctor, &arg, true);
+ OBJECTREF newObj = instantiatedType.GetMethodTable()->Allocate();
+ GCPROTECT_BEGIN(newObj);
+ CallDefaultConstructor(newObj);
+ GCPROTECT_END();
- HELPER_METHOD_FRAME_END();
- return OBJECTREFToObject(gc.rv);
+ pInstantiatedObject.Set(newObj);
+ }
+
+ END_QCALL;
}
-FCIMPLEND
NOINLINE FC_BOOL_RET IsInstanceOfTypeHelper(OBJECTREF obj, REFLECTCLASSBASEREF refType)
{
@@ -2193,19 +2191,15 @@ FCIMPL1(Object*, ReflectionSerialization::GetUninitializedObject, ReflectClassBa
TypeHandle type = objType->GetType();
- // Don't allow arrays, pointers, byrefs or function pointers.
- if (type.IsTypeDesc() || type.IsArray())
+ // Don't allow void, arrays, pointers, byrefs or function pointers.
+ if (type.IsTypeDesc() || type.IsArray() || type.GetSignatureCorElementType() == ELEMENT_TYPE_VOID)
COMPlusThrow(kArgumentException, W("Argument_InvalidValue"));
MethodTable *pMT = type.AsMethodTable();
PREFIX_ASSUME(pMT != NULL);
//We don't allow unitialized Strings or Utf8Strings.
- if (pMT == g_pStringClass
-#ifdef FEATURE_UTF8STRING
- || pMT == g_pUtf8StringClass
-#endif // FEATURE_UTF8STRING
- ) {
+ if (pMT == g_pStringClass) {
COMPlusThrow(kArgumentException, W("Argument_NoUninitializedStrings"));
}
diff --git a/src/coreclr/src/vm/runtimecallablewrapper.cpp b/src/coreclr/src/vm/runtimecallablewrapper.cpp
index f7a29f861ce4..ea49362752da 100644
--- a/src/coreclr/src/vm/runtimecallablewrapper.cpp
+++ b/src/coreclr/src/vm/runtimecallablewrapper.cpp
@@ -615,88 +615,6 @@ void ComClassFactory::Cleanup()
delete this;
}
-//-------------------------------------------------------------
-// Returns true if the first parameter of the CA's method ctor is a System.Type
-static BOOL AttributeFirstParamIsSystemType(mdCustomAttribute tkAttribute, IMDInternalImport *pImport)
-{
- CONTRACTL
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- PRECONDITION(CheckPointer(pImport));
- }
- CONTRACTL_END;
-
- mdToken ctorToken;
- IfFailThrow(pImport->GetCustomAttributeProps(tkAttribute, &ctorToken));
-
- LPCSTR ctorName;
- PCCOR_SIGNATURE ctorSig;
- ULONG cbCtorSig;
-
- if (TypeFromToken(ctorToken) == mdtMemberRef)
- {
- IfFailThrow(pImport->GetNameAndSigOfMemberRef(ctorToken, &ctorSig, &cbCtorSig, &ctorName));
- }
- else if (TypeFromToken(ctorToken) == mdtMethodDef)
- {
- IfFailThrow(pImport->GetNameAndSigOfMethodDef(ctorToken, &ctorSig, &cbCtorSig, &ctorName));
- }
- else
- {
- ThrowHR(COR_E_BADIMAGEFORMAT);
- }
-
- SigParser sigParser(ctorSig, cbCtorSig);
-
- ULONG callingConvention;
- IfFailThrow(sigParser.GetCallingConvInfo(&callingConvention));
- if (callingConvention != IMAGE_CEE_CS_CALLCONV_HASTHIS)
- {
- ThrowHR(COR_E_BADIMAGEFORMAT);
- }
-
- ULONG cParameters;
- IfFailThrow(sigParser.GetData(&cParameters));
- if (cParameters < 1)
- {
- return FALSE;
- }
-
- BYTE returnElmentType;
- IfFailThrow(sigParser.GetByte(&returnElmentType));
- if (returnElmentType != ELEMENT_TYPE_VOID)
- {
- ThrowHR(COR_E_BADIMAGEFORMAT);
- }
-
- BYTE paramElementType;
- IfFailThrow(sigParser.GetByte(¶mElementType));
- if (paramElementType != ELEMENT_TYPE_CLASS)
- {
- return FALSE;
- }
-
- mdToken paramTypeToken;
- IfFailThrow(sigParser.GetToken(¶mTypeToken));
-
- if (TypeFromToken(paramTypeToken) != mdtTypeRef)
- {
- return FALSE;
- }
-
- LPCSTR paramTypeNamespace;
- LPCSTR paramTypeName;
- IfFailThrow(pImport->GetNameOfTypeRef(paramTypeToken, ¶mTypeNamespace, ¶mTypeName));
- if (strcmp("System", paramTypeNamespace) != 0 || strcmp("Type", paramTypeName) != 0)
- {
- return FALSE;
- }
-
- return TRUE;
-}
-
#endif // FEATURE_COMINTEROP_UNMANAGED_ACTIVATION
#ifndef CROSSGEN_COMPILE
@@ -1491,53 +1409,6 @@ RCW* RCW::CreateRCWInternal(IUnknown *pUnk, DWORD dwSyncBlockIndex, DWORD flags,
// Initialize wrapper
pWrap->Initialize(pUnk, dwSyncBlockIndex, pClassMT);
- // Check to see if this is a DCOM proxy
- const bool checkForDCOMProxy = (flags & CF_DetectDCOMProxy);
-
- if (checkForDCOMProxy)
- {
- // If the object is a DCOM proxy...
- SafeComHolderPreemp pRpcOptions = NULL;
- GCPressureSize pressureSize = GCPressureSize_None;
- HRESULT hr = pWrap->SafeQueryInterfaceRemoteAware(IID_IRpcOptions, (IUnknown**)&pRpcOptions);
- LogInteropQI(pUnk, IID_IRpcOptions, hr, "QI for IRpcOptions");
- if (S_OK == hr)
- {
- ULONG_PTR dwValue = 0;
- hr = pRpcOptions->Query(pUnk, COMBND_SERVER_LOCALITY, &dwValue);
-
- if (SUCCEEDED(hr))
- {
- if (dwValue == SERVER_LOCALITY_MACHINE_LOCAL || dwValue == SERVER_LOCALITY_REMOTE)
- {
- pWrap->m_Flags.m_fIsDCOMProxy = 1;
- }
-
- switch(dwValue)
- {
- case SERVER_LOCALITY_PROCESS_LOCAL:
- pressureSize = GCPressureSize_ProcessLocal;
- break;
- case SERVER_LOCALITY_MACHINE_LOCAL:
- pressureSize = GCPressureSize_MachineLocal;
- break;
- case SERVER_LOCALITY_REMOTE:
- pressureSize = GCPressureSize_Remote;
- break;
- default:
- pressureSize = GCPressureSize_None;
- break;
- }
- }
- }
-
- // ...add the appropriate amount of memory pressure to the GC.
- if (pressureSize != GCPressureSize_None)
- {
- pWrap->AddMemoryPressure(pressureSize);
- }
- }
-
pUnkHolder.SuppressRelease();
RETURN pWrap;
@@ -2243,26 +2114,6 @@ HRESULT RCW::SafeQueryInterfaceRemoteAware(REFIID iid, IUnknown** ppResUnk)
#endif //#ifndef CROSSGEN_COMPILE
-// Helper method to allow us to compare a MethodTable against a known method table
-// from CoreLib. If the CoreLib type isn't loaded, we don't load it because we
-// know that it can't be the MethodTable we're curious about.
-static bool MethodTableHasSameTypeDefAsCoreLibClass(MethodTable* pMT, BinderClassID classId)
-{
- CONTRACTL
- {
- GC_NOTRIGGER;
- NOTHROW;
- MODE_ANY;
- }
- CONTRACTL_END;
-
- MethodTable* pMT_CoreLibClass = CoreLibBinder::GetClassIfExist(classId);
- if (pMT_CoreLibClass == NULL)
- return false;
-
- return (pMT->HasSameTypeDefAs(pMT_CoreLibClass) != FALSE);
-}
-
#ifndef CROSSGEN_COMPILE
// Performs QI for the given interface, optionally instantiating it with the given generic args.
HRESULT RCW::CallQueryInterface(MethodTable *pMT, Instantiation inst, IID *piid, IUnknown **ppUnk)
diff --git a/src/coreclr/src/vm/runtimecallablewrapper.h b/src/coreclr/src/vm/runtimecallablewrapper.h
index 3922eee80170..c225c9b235bd 100644
--- a/src/coreclr/src/vm/runtimecallablewrapper.h
+++ b/src/coreclr/src/vm/runtimecallablewrapper.h
@@ -95,7 +95,7 @@ struct RCW
// unused = 0x04,
CF_NeedUniqueObject = 0x08, // always create a new RCW/object even if we have one cached already
// unused = 0x10,
- CF_DetectDCOMProxy = 0x20, // attempt to determine if the RCW is for a DCOM proxy
+ // unused = 0x20,
};
static CreationFlags CreationFlagsFromObjForComIPFlags(ObjFromComIP::flags flags);
@@ -301,13 +301,6 @@ struct RCW
return m_cbRefCount;
}
- void GetCachedInterfaceTypes(BOOL bIInspectableOnly,
- SArray * rgItfTables)
- {
- LIMITED_METHOD_DAC_CONTRACT;
-
- }
-
void GetCachedInterfacePointers(BOOL bIInspectableOnly,
SArray * rgItfPtrs)
{
@@ -382,15 +375,6 @@ struct RCW
return (m_Flags.m_MarshalingType == MarshalingType_FreeThreaded) ;
}
- //
- // Is this COM object a DCOM Proxy? (For WinRT the RCW must have been created with CF_DetectDCOMProxy)
- //
- bool IsDCOMProxy()
- {
- LIMITED_METHOD_DAC_CONTRACT;
- return m_Flags.m_fIsDCOMProxy == 1;
- }
-
//
// This COM object implements INoMarshal?
//
@@ -584,8 +568,6 @@ struct RCW
DWORD m_MarshalingType:2; // MarshalingBehavior of the COM object.
DWORD m_Detached:1; // set if the RCW was found dead during GC
-
- DWORD m_fIsDCOMProxy:1; // Is the object a proxy to a remote process
};
}
m_Flags;
diff --git a/src/coreclr/src/vm/runtimehandles.h b/src/coreclr/src/vm/runtimehandles.h
index 4063fd972237..4c5e9469da3c 100644
--- a/src/coreclr/src/vm/runtimehandles.h
+++ b/src/coreclr/src/vm/runtimehandles.h
@@ -247,8 +247,8 @@ class RuntimeTypeHandle {
static FCDECL1(MethodDesc *, GetFirstIntroducedMethod, ReflectClassBaseObject* pType);
static FCDECL1(void, GetNextIntroducedMethod, MethodDesc **ppMethod);
- static FCDECL2(Object*, CreateInstanceForGenericType, ReflectClassBaseObject* pType
- , ReflectClassBaseObject* parameterType );
+ static
+ void QCALLTYPE CreateInstanceForAnotherGenericParameter(QCall::TypeHandle pTypeHandle, TypeHandle *pInstArray, INT32 cInstArray, QCall::ObjectHandleOnStack pInstantiatedObject);
static
FCDECL1(IMDInternalImport*, GetMetadataImport, ReflectClassBaseObject * pModuleUNSAFE);
diff --git a/src/coreclr/src/vm/stubhelpers.cpp b/src/coreclr/src/vm/stubhelpers.cpp
index ea21bcbf4bc3..11f0af94b1ef 100644
--- a/src/coreclr/src/vm/stubhelpers.cpp
+++ b/src/coreclr/src/vm/stubhelpers.cpp
@@ -607,109 +607,6 @@ FCIMPL2(void, StubHelpers::ThrowInteropParamException, UINT resID, UINT paramIdx
}
FCIMPLEND
-#ifdef FEATURE_COMINTEROP
-class COMInterfaceMarshalerCallback : public ICOMInterfaceMarshalerCallback
-{
-public :
- COMInterfaceMarshalerCallback(Thread *pThread, LPVOID pCtxCookie)
- {
- CONTRACTL
- {
- NOTHROW;
- GC_TRIGGERS;
- MODE_ANY;
- }
- CONTRACTL_END;
-
- _ASSERTE(pThread != NULL);
- _ASSERTE(pCtxCookie != NULL);
-
- m_bIsFreeThreaded = false;
- m_pThread = pThread;
- m_pCtxCookie = pCtxCookie;
-
- m_bIsDCOMProxy = false;
- }
-
- virtual void OnRCWCreated(RCW *pRCW)
- {
- LIMITED_METHOD_CONTRACT;
-
- _ASSERTE(pRCW != NULL);
-
- if (pRCW->IsFreeThreaded())
- m_bIsFreeThreaded = true;
-
- if (pRCW->IsDCOMProxy())
- m_bIsDCOMProxy = true;
- }
-
- // Return true if ComInterfaceMarshaler should use this RCW
- // Return false if ComInterfaceMarshaler should just skip this RCW and proceed
- // to create a duplicate one instead
- virtual bool ShouldUseThisRCW(RCW *pRCW)
- {
- LIMITED_METHOD_CONTRACT;
-
- // Is this a free threaded RCW or a context-bound RCW created in the same context
- if (pRCW->IsFreeThreaded() ||
- pRCW->GetWrapperCtxCookie() == m_pCtxCookie)
- {
- return true;
- }
- else
- {
- //
- // Now we get back a WinRT factory RCW created in a different context. This means the
- // factory is a singleton, and the returned IActivationFactory could be either one of
- // the following:
- // 1) A raw pointer, and it acts like a free threaded object
- // 2) A proxy that is used across different contexts. It might maintain a list of contexts
- // that it is marshaled to, and will fail to be called if it is not marshaled to this
- // context yet.
- //
- // In this case, it is unsafe to use this RCW in this context and we should proceed
- // to create a duplicated one instead. It might make sense to have a context-sensitive
- // RCW cache but I don't think this case will be common enough to justify it
- //
- return false;
- }
- }
-
- virtual void OnRCWCacheHit(RCW *pRCW)
- {
- LIMITED_METHOD_CONTRACT;
-
- if (pRCW->IsFreeThreaded())
- m_bIsFreeThreaded = true;
-
- if (pRCW->IsDCOMProxy())
- m_bIsDCOMProxy = true;
- }
-
- bool IsFreeThreaded()
- {
- LIMITED_METHOD_CONTRACT;
-
- return m_bIsFreeThreaded;
- }
-
- bool IsDCOMProxy()
- {
- LIMITED_METHOD_CONTRACT;
-
- return m_bIsDCOMProxy;
- }
-
-private :
- Thread *m_pThread; // Current thread
- LPVOID m_pCtxCookie; // Current context cookie
- bool m_bIsFreeThreaded; // Whether we got back the RCW from a different context
- bool m_bIsDCOMProxy; // Is this a proxy to an object in a different process
-};
-
-#endif
-
#ifdef PROFILING_SUPPORTED
FCIMPL3(SIZE_T, StubHelpers::ProfilerBeginTransitionCallback, SIZE_T pSecretParam, Thread* pThread, Object* unsafe_pThis)
{
diff --git a/src/coreclr/src/vm/threadsuspend.cpp b/src/coreclr/src/vm/threadsuspend.cpp
index 1b7ef6745a9c..89824f31eaa6 100644
--- a/src/coreclr/src/vm/threadsuspend.cpp
+++ b/src/coreclr/src/vm/threadsuspend.cpp
@@ -5943,16 +5943,7 @@ void ThreadSuspend::SuspendEE(SUSPEND_REASON reason)
// that there is a thread which appears to be stopped at a gc
// safe point, but which really is not. If that is the case,
// back off and try again.
- //
- // When the debugger is synchronizing, trying to perform a GC could deadlock. The GC has the
- // threadstore lock and synchronization cannot complete until the debugger can get the
- // threadstore lock. However the GC can not complete until it sends the BeforeGarbageCollection
- // event, and the event can not be sent until the debugger is synchronized. In order to break
- // this deadlock cycle the GC must give up the threadstore lock, allow the debugger to synchronize,
- // then try again.
- //
- || (CORDebuggerAttached() &&
- (g_pDebugInterface->ThreadsAtUnsafePlaces() || g_pDebugInterface->IsSynchronizing()))
+ || (CORDebuggerAttached() && g_pDebugInterface->ThreadsAtUnsafePlaces())
#endif // DEBUGGING_SUPPORTED
)
{
diff --git a/src/coreclr/src/vm/vars.cpp b/src/coreclr/src/vm/vars.cpp
index b684583c7d97..152027b02032 100644
--- a/src/coreclr/src/vm/vars.cpp
+++ b/src/coreclr/src/vm/vars.cpp
@@ -59,9 +59,6 @@ GPTR_IMPL(MethodTable, g_pObjectClass);
GPTR_IMPL(MethodTable, g_pRuntimeTypeClass);
GPTR_IMPL(MethodTable, g_pCanonMethodTableClass); // System.__Canon
GPTR_IMPL(MethodTable, g_pStringClass);
-#ifdef FEATURE_UTF8STRING
-GPTR_IMPL(MethodTable, g_pUtf8StringClass);
-#endif // FEATURE_UTF8STRING
GPTR_IMPL(MethodTable, g_pArrayClass);
GPTR_IMPL(MethodTable, g_pSZArrayHelperClass);
GPTR_IMPL(MethodTable, g_pNullableClass);
diff --git a/src/coreclr/src/vm/vars.hpp b/src/coreclr/src/vm/vars.hpp
index 3b85c93adc5e..88140bdc4863 100644
--- a/src/coreclr/src/vm/vars.hpp
+++ b/src/coreclr/src/vm/vars.hpp
@@ -73,9 +73,6 @@ class LoaderHeap;
class IGCHeap;
class Object;
class StringObject;
-#ifdef FEATURE_UTF8STRING
-class Utf8StringObject;
-#endif // FEATURE_UTF8STRING
class ArrayClass;
class MethodTable;
class MethodDesc;
@@ -309,10 +306,6 @@ class REF : public OBJECTREF
#define OBJECTREFToObject(objref) ((objref).operator-> ())
#define ObjectToSTRINGREF(obj) (STRINGREF(obj))
#define STRINGREFToObject(objref) (*( (StringObject**) &(objref) ))
-#ifdef FEATURE_UTF8STRING
-#define ObjectToUTF8STRINGREF(obj) (UTF8STRINGREF(obj))
-#define UTF8STRINGREFToObject(objref) (*( (Utf8StringObject**) &(objref) ))
-#endif // FEATURE_UTF8STRING
#else // _DEBUG_IMPL
@@ -323,10 +316,6 @@ class REF : public OBJECTREF
#define OBJECTREFToObject(objref) ((PTR_Object) (objref))
#define ObjectToSTRINGREF(obj) ((PTR_StringObject) (obj))
#define STRINGREFToObject(objref) ((PTR_StringObject) (objref))
-#ifdef FEATURE_UTF8STRING
-#define ObjectToUTF8STRINGREF(obj) ((PTR_Utf8StringObject) (obj))
-#define UTF8STRINGREFToObject(objref) ((PTR_Utf8StringObject) (objref))
-#endif // FEATURE_UTF8STRING
#endif // _DEBUG_IMPL
@@ -365,9 +354,6 @@ GPTR_DECL(MethodTable, g_pObjectClass);
GPTR_DECL(MethodTable, g_pRuntimeTypeClass);
GPTR_DECL(MethodTable, g_pCanonMethodTableClass); // System.__Canon
GPTR_DECL(MethodTable, g_pStringClass);
-#ifdef FEATURE_UTF8STRING
-GPTR_DECL(MethodTable, g_pUtf8StringClass);
-#endif // FEATURE_UTF8STRING
GPTR_DECL(MethodTable, g_pArrayClass);
GPTR_DECL(MethodTable, g_pSZArrayHelperClass);
GPTR_DECL(MethodTable, g_pNullableClass);
diff --git a/src/coreclr/src/zap/zapinfo.cpp b/src/coreclr/src/zap/zapinfo.cpp
index c6eba2b1601b..036457ab673d 100644
--- a/src/coreclr/src/zap/zapinfo.cpp
+++ b/src/coreclr/src/zap/zapinfo.cpp
@@ -507,6 +507,7 @@ void ZapInfo::CompileMethod()
//
if (m_zapper->m_alternateJit)
{
+ m_jitFlags.Set(CORJIT_FLAGS::CORJIT_FLAG_ALT_JIT);
res = m_zapper->m_alternateJit->compileMethod( this,
&m_currentMethodInfo,
CORJIT_FLAGS::CORJIT_FLAG_CALL_GETJITFLAGS,
@@ -520,6 +521,7 @@ void ZapInfo::CompileMethod()
ResetForJitRetry();
}
}
+ m_jitFlags.Clear(CORJIT_FLAGS::CORJIT_FLAG_ALT_JIT);
#endif // ALLOW_SXS_JIT_NGEN
@@ -1071,6 +1073,16 @@ HRESULT ZapInfo::getMethodBlockCounts (
return S_OK;
}
+CORINFO_CLASS_HANDLE ZapInfo::getLikelyClass(
+ CORINFO_METHOD_HANDLE ftnHnd,
+ CORINFO_CLASS_HANDLE baseHnd,
+ UINT32 ilOffset,
+ UINT32* pLikelihood,
+ UINT32* pNumberOfClasses)
+{
+ return NULL;
+}
+
void ZapInfo::allocMem(
ULONG hotCodeSize, /* IN */
ULONG coldCodeSize, /* IN */
diff --git a/src/coreclr/src/zap/zapinfo.h b/src/coreclr/src/zap/zapinfo.h
index 3a44d2e7c0b5..74a8c0eebf2c 100644
--- a/src/coreclr/src/zap/zapinfo.h
+++ b/src/coreclr/src/zap/zapinfo.h
@@ -313,6 +313,13 @@ class ZapInfo
ICorJitInfo::BlockCounts ** pBlockCounts,
UINT32 * pNumRuns);
+ CORINFO_CLASS_HANDLE getLikelyClass(
+ CORINFO_METHOD_HANDLE ftnHnd,
+ CORINFO_CLASS_HANDLE baseHnd,
+ UINT32 ilOffset,
+ UINT32 * pLikelihood,
+ UINT32 * pNumberOfClasses);
+
DWORD getJitFlags(CORJIT_FLAGS* jitFlags, DWORD sizeInBytes);
bool runWithErrorTrap(void (*function)(void*), void* param);
diff --git a/src/coreclr/src/zap/zapper.cpp b/src/coreclr/src/zap/zapper.cpp
index 97b47cba71b7..a98fc6cc2934 100644
--- a/src/coreclr/src/zap/zapper.cpp
+++ b/src/coreclr/src/zap/zapper.cpp
@@ -580,11 +580,15 @@ void Zapper::InitEE(BOOL fForceDebug, BOOL fForceProfile, BOOL fForceInstrument)
}
#else
- CorCompileRuntimeDlls ngenDllId;
+ LPCWSTR pwzJitName = nullptr;
- ngenDllId = CROSSGEN_COMPILER_INFO;
+ // Try to obtain a name for the jit library from the env. variable
+ IfFailThrow(CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_JitName, const_cast(&pwzJitName)));
+ if (pwzJitName == nullptr)
+ {
+ pwzJitName = CorCompileGetRuntimeDllName(CROSSGEN_COMPILER_INFO);
+ }
- LPCWSTR pwzJitName = CorCompileGetRuntimeDllName(ngenDllId);
LoadAndInitializeJITForNgen(pwzJitName, &m_hJitLib, &m_pJitCompiler);
#endif // FEATURE_MERGE_JIT_AND_ENGINE
diff --git a/src/installer/Directory.Build.props b/src/installer/Directory.Build.props
index 319906aef654..15472af36dcb 100644
--- a/src/installer/Directory.Build.props
+++ b/src/installer/Directory.Build.props
@@ -57,29 +57,6 @@
$(DefineConstants),TRACE
-
- .exe
-
-
-
- $(HostRuntimeIdentifier.Remove($(HostRuntimeIdentifier.LastIndexOf('-'))))-$(TargetArchitecture)
-
-
-
-
- win-$(TargetArchitecture)
- osx-$(TargetArchitecture)
- linux-$(TargetArchitecture)
- freebsd-$(TargetArchitecture)
- netbsd-$(TargetArchitecture)
- illumos-$(TargetArchitecture)
- solaris-$(TargetArchitecture)
- ios-$(TargetArchitecture)
- tvos-$(TargetArchitecture)
- android-$(TargetArchitecture)
- browser-$(TargetArchitecture)
-
-
$(OutputRid)
@@ -107,10 +84,6 @@
$(ArtifactsShippingPackagesDir)$(ArtifactsShippingPackagesDir)
-
-
- $(IntermediateOutputRootPath)sharedFrameworkPublish/
- $(IntermediateOutputRootPath)sharedFrameworkPublish.symbols\
@@ -139,187 +112,6 @@
$(SharedHostInstallerStart)$(InstallerStartSuffix)-$(HostFxrInstallerStart)$(InstallerStartSuffix)-$(SharedFrameworkInstallerStart)$(InstallerStartSuffix)-
-
-
-
-
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
- false
-
-
-
-
- true
-
-
-
-
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
- true
-
-
-
-
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
- true
-
-
-
-
- true
- true
-
-
-
-
- true
- true
-
-
-
-
- true
- true
-
-
-
-
- true
- true
-
-
-
-
- true
- true
-
-
- true
-
- true
-
-
-
-
-
- .zip
- .tar.gz
- .msi
- .pkg
- .deb
- .rpm
- .exe
- $(InstallerExtension)
-
-
-
-
- $(OutputRid)
- osx.10.10-x64
- rhel.7-x64
@@ -329,22 +121,4 @@
-->
true
-
-
- lib
- .so
- .dll
- .dylib
- lib
- .a
- .lib
-
-
-
- .map
- .ni.pdb
-
-
-
-
diff --git a/src/installer/Directory.Build.targets b/src/installer/Directory.Build.targets
index 7a859d808b22..dc2e7c7eed40 100644
--- a/src/installer/Directory.Build.targets
+++ b/src/installer/Directory.Build.targets
@@ -89,11 +89,6 @@
Runtime/$(SharedFrameworkNugetVersion)/
-
- $(SharedFrameworkNugetVersion)-$(PackageTargetRid)
- $(HostResolverVersion)-$(PackageTargetRid)
-
-
$(HostVersion)1
@@ -142,60 +137,6 @@
-
-
- $(CombinedInstallerStart)$(ProductMoniker)$(CombinedInstallerExtension)
- $(CombinedInstallerStart)$(ProductMoniker)-engine.exe
-
- $(SharedHostInstallerStart)$(ProductMoniker)$(InstallerExtension)
- $(HostFxrInstallerStart)$(HostResolverVersionMoniker)$(InstallerExtension)
- $(SharedFrameworkInstallerStart)$(ProductMoniker)$(InstallerExtension)
- $(DotnetRuntimeDependenciesPackageInstallerStart)$(ProductMoniker)$(InstallerExtension)
-
- dotnet-runtime-$(ProductMoniker)$(CompressedFileExtension)
- dotnet-hostfxr-internal-$(PackageTargetRid).$(HostResolverVersion)$(CompressedFileExtension)
- dotnet-nethost-$(AppHostVersion)-$(PackageTargetRid)$(CompressedFileExtension)
- dotnet-crossgen2-$(ProductMoniker)$(CompressedFileExtension)
- dotnet-runtime-internal-$(ProductMoniker)$(CompressedFileExtension)
- dotnet-runtime-symbols-$(ProductMoniker)$(CompressedFileExtension)
-
- $(DotnetHostFxrString)$(ProductBandVersion)
- $(HostFxrDebPkgName.ToLower())
- $(DotnetRuntimeString)$(ProductBandVersion)
- $(SharedFxDebPkgName.ToLower())
- $(DotnetRuntimeDependenciesPackageString)$(ProductBandVersion)
- $(RuntimeDependenciesDebPkgName.ToLower())
-
- dotnet-hostfxr-$(ProductBandVersion)
- $(HostFxrRpmPkgName.ToLower())
- dotnet-runtime-$(ProductBandVersion)
- $(SharedFxRpmPkgName.ToLower())
- $(DotnetRuntimeDependenciesPackageString)$(ProductBandVersion)
- $(RuntimeDependenciesRpmPkgName.ToLower())
-
-
-
- $(AssetOutputPath)dotnet-targeting-pack-$(ProductMoniker)$(InstallerExtension)
- $(AssetOutputPath)dotnet-apphost-pack-$(ProductMoniker)$(InstallerExtension)
- 2.1
- $(NetStandardProductBandVersion).$(PatchVersion)$(ProductVersionSuffix)-$(PackageTargetRid)
- $(AssetOutputPath)netstandard-targeting-pack-$(NetStandardProductMoniker)$(InstallerExtension)
-
-
-
-
- $(SharedHostInstallerStart)$(SharedFrameworkNugetVersion)-$(TargetArchitecture)$(InstallerExtension)
- $(HostFxrInstallerStart)$(HostResolverVersion)-$(TargetArchitecture)$(InstallerExtension)
- $(SharedFrameworkInstallerStart)$(SharedFrameworkNugetVersion)-$(TargetArchitecture)$(InstallerExtension)
-
-
-
-
- $(DotnetRuntimeDependenciesPackageInstallerStart)$(SharedFrameworkNugetVersion)-$(TargetArchitecture)$(InstallerExtension)
-
-
-
diff --git a/src/installer/corehost/cli/apphost/bundle_marker.cpp b/src/installer/corehost/cli/apphost/bundle_marker.cpp
index ae796a44436e..aac23e5f3286 100644
--- a/src/installer/corehost/cli/apphost/bundle_marker.cpp
+++ b/src/installer/corehost/cli/apphost/bundle_marker.cpp
@@ -9,9 +9,8 @@
int64_t bundle_marker_t::header_offset()
{
// Contains the bundle_placeholder default value at compile time.
- // If this is a single-file bundle, the last 8 bytes are replaced
- // bundle-header replaced by "dotnet publish" with the offset
- // where the bundle_header is located.
+ // If this is a single-file bundle, the first 8 bytes are replaced
+ // by "dotnet publish" with the offset where the bundle_header is located.
static volatile uint8_t placeholder[] =
{
// 8 bytes represent the bundle header-offset
diff --git a/src/installer/corehost/cli/hostmisc/pal.h b/src/installer/corehost/cli/hostmisc/pal.h
index bf4785fb1a0d..cdbb42a1a8de 100644
--- a/src/installer/corehost/cli/hostmisc/pal.h
+++ b/src/installer/corehost/cli/hostmisc/pal.h
@@ -164,7 +164,6 @@ namespace pal
inline const char_t* strerror(int errnum) { return ::_wcserror(errnum); }
bool pal_utf8string(const string_t& str, std::vector* out);
- bool utf8_palstring(const std::string& str, string_t* out);
bool pal_clrstring(const string_t& str, std::vector* out);
bool clr_palstring(const char* cstr, string_t* out);
@@ -223,7 +222,6 @@ namespace pal
inline const char_t* strerror(int errnum) { return ::strerror(errnum); }
inline bool pal_utf8string(const string_t& str, std::vector* out) { out->assign(str.begin(), str.end()); out->push_back('\0'); return true; }
- inline bool utf8_palstring(const std::string& str, string_t* out) { out->assign(str); return true; }
inline bool pal_clrstring(const string_t& str, std::vector* out) { return pal_utf8string(str, out); }
inline bool clr_palstring(const char* cstr, string_t* out) { out->assign(cstr); return true; }
@@ -305,7 +303,6 @@ namespace pal
bool get_default_bundle_extraction_base_dir(string_t& extraction_dir);
int xtoi(const char_t* input);
- bool unicode_palstring(const char16_t* str, pal::string_t* out);
bool get_loaded_library(const char_t *library_name, const char *symbol_name, /*out*/ dll_t *dll, /*out*/ string_t *path);
bool load_library(const string_t* path, dll_t* dll);
diff --git a/src/installer/corehost/cli/hostmisc/pal.unix.cpp b/src/installer/corehost/cli/hostmisc/pal.unix.cpp
index 6996618239eb..20774cb9e11f 100644
--- a/src/installer/corehost/cli/hostmisc/pal.unix.cpp
+++ b/src/installer/corehost/cli/hostmisc/pal.unix.cpp
@@ -17,7 +17,6 @@
#include
#include
#include
-#include
#include
#include "config.h"
@@ -266,16 +265,6 @@ int pal::xtoi(const char_t* input)
return atoi(input);
}
-bool pal::unicode_palstring(const char16_t* str, pal::string_t* out)
-{
- out->clear();
-
- std::wstring_convert, char16_t> conversion;
- out->assign(conversion.to_bytes(str));
-
- return true;
-}
-
bool pal::is_path_rooted(const pal::string_t& path)
{
return path.front() == '/';
diff --git a/src/installer/corehost/cli/hostmisc/pal.windows.cpp b/src/installer/corehost/cli/hostmisc/pal.windows.cpp
index c1a62a4d74d1..7ddaab8c3506 100644
--- a/src/installer/corehost/cli/hostmisc/pal.windows.cpp
+++ b/src/installer/corehost/cli/hostmisc/pal.windows.cpp
@@ -8,7 +8,6 @@
#include
#include
-#include
#include
#include
@@ -623,11 +622,6 @@ static bool wchar_convert_helper(DWORD code_page, const char* cstr, int len, pal
return ::MultiByteToWideChar(code_page, 0, cstr, len, &(*out)[0], out->size()) != 0;
}
-bool pal::utf8_palstring(const std::string& str, pal::string_t* out)
-{
- return wchar_convert_helper(CP_UTF8, &str[0], str.size(), out);
-}
-
bool pal::pal_utf8string(const pal::string_t& str, std::vector* out)
{
out->clear();
@@ -652,12 +646,6 @@ bool pal::clr_palstring(const char* cstr, pal::string_t* out)
return wchar_convert_helper(CP_UTF8, cstr, ::strlen(cstr), out);
}
-bool pal::unicode_palstring(const char16_t* str, pal::string_t* out)
-{
- out->assign((const wchar_t *)str);
- return true;
-}
-
// Return if path is valid and file exists, return true and adjust path as appropriate.
bool pal::realpath(string_t* path, bool skip_error_logging)
{
diff --git a/src/installer/corehost/cli/hostpolicy/hostpolicy_context.cpp b/src/installer/corehost/cli/hostpolicy/hostpolicy_context.cpp
index 502d3a1b4a66..48d7cd335dd9 100644
--- a/src/installer/corehost/cli/hostpolicy/hostpolicy_context.cpp
+++ b/src/installer/corehost/cli/hostpolicy/hostpolicy_context.cpp
@@ -23,18 +23,7 @@ namespace
// This function is an API exported to the runtime via the BUNDLE_PROBE property.
// This function used by the runtime to probe for bundled assemblies
// This function assumes that the currently executing app is a single-file bundle.
- //
- // bundle_probe recieves its path argument as cha16_t* instead of pal::char_t*, because:
- // * The host uses Unicode strings on Windows and UTF8 strings on Unix
- // * The runtime uses Unicode strings on all platforms
- // * Using a unicode encoded path presents a uniform interface to the runtime
- // and minimizes the number if Unicode <-> UTF8 conversions necessary.
- //
- // The unicode char type is char16_t* instead of whcar_t*, because:
- // * wchar_t is 16-bit encoding on Windows while it is 32-bit encoding on most Unix systems
- // * The runtime uses 16-bit encoded unicode characters.
-
- bool STDMETHODCALLTYPE bundle_probe(const char16_t* path, int64_t* offset, int64_t* size)
+ bool STDMETHODCALLTYPE bundle_probe(const char* path, int64_t* offset, int64_t* size)
{
if (path == nullptr)
{
@@ -43,7 +32,7 @@ namespace
pal::string_t file_path;
- if (!pal::unicode_palstring(path, &file_path))
+ if (!pal::clr_palstring(path, &file_path))
{
trace::warning(_X("Failure probing contents of the application bundle."));
trace::warning(_X("Failed to convert path [%ls] to UTF8"), path);
diff --git a/src/installer/corehost/corehost.cpp b/src/installer/corehost/corehost.cpp
index 9ae142c4fe42..0064f8b6a2a9 100644
--- a/src/installer/corehost/corehost.cpp
+++ b/src/installer/corehost/corehost.cpp
@@ -53,8 +53,7 @@ bool is_exe_enabled_for_execution(pal::string_t* app_dll)
static const char hi_part[] = EMBED_HASH_HI_PART_UTF8;
static const char lo_part[] = EMBED_HASH_LO_PART_UTF8;
- std::string binding(&embed[0]);
- if (!pal::utf8_palstring(binding, app_dll))
+ if (!pal::clr_palstring(embed, app_dll))
{
trace::error(_X("The managed DLL bound to this executable could not be retrieved from the executable image."));
return false;
@@ -65,6 +64,7 @@ bool is_exe_enabled_for_execution(pal::string_t* app_dll)
size_t hi_len = (sizeof(hi_part) / sizeof(hi_part[0])) - 1;
size_t lo_len = (sizeof(lo_part) / sizeof(lo_part[0])) - 1;
+ std::string binding(&embed[0]);
if ((binding.size() >= (hi_len + lo_len)) &&
binding.compare(0, hi_len, &hi_part[0]) == 0 &&
binding.compare(hi_len, lo_len, &lo_part[0]) == 0)
diff --git a/src/installer/managed/CommonManaged.props b/src/installer/managed/CommonManaged.props
index c96859a92e4a..957ee4710e20 100644
--- a/src/installer/managed/CommonManaged.props
+++ b/src/installer/managed/CommonManaged.props
@@ -3,6 +3,7 @@
true
+ true$(MajorVersion).$(MinorVersion).$(PatchVersion)$(VersionPrefix)true
diff --git a/src/installer/pkg/Directory.Build.props b/src/installer/pkg/Directory.Build.props
index 9f4442493b67..e2ffe40718bd 100644
--- a/src/installer/pkg/Directory.Build.props
+++ b/src/installer/pkg/Directory.Build.props
@@ -6,11 +6,6 @@
$(BaseOutputRootPath)corehost
-
-
- false
-
-
$(RepoRoot)LICENSE.TXT$(RepoRoot)THIRD-PARTY-NOTICES.TXT
@@ -28,45 +23,6 @@
true
-
- $(IntermediateOutputRootPath)packages/
-
- $(MSBuildThisFileDirectory)packaging/rpm/templates/
-
-
- $(ArtifactsBinDir)dotnet-deb-tool\
- $(DebToolBinDir)$(Configuration)\$(NetCoreAppCurrent)\dotnet-deb-tool.dll
- $(RepoRoot)tools-local/dotnet-deb-tool/
-
- true
- true
- true
-
- true
- true
- true
-
-
- true
-
-
- $(OSPlatformConfig)
-
-
diff --git a/src/installer/pkg/packaging/Directory.Build.props b/src/installer/pkg/packaging/Directory.Build.props
deleted file mode 100644
index 61f4f4d515aa..000000000000
--- a/src/installer/pkg/packaging/Directory.Build.props
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- $(InstallerProjectRoot)pkg/packaging/
-
-
- $(BuildDistroIndependentInstallers)
- $(BuildDistroIndependentInstallers)
-
-
- $(IntermediateOutputRootPath)sharedHost/
- $(IntermediateOutputRootPath)hostFxr/
- $(IntermediateOutputRootPath)sharedFx/
- $(IntermediateOutputRootPath)combined-framework-host/
- $(IntermediateOutputRootPath)nethost/
- $(IntermediateOutputRootPath)crossgen2/
-
-
-
diff --git a/src/installer/pkg/packaging/deb/dotnet-hostfxr-debian_config.json b/src/installer/pkg/packaging/deb/dotnet-hostfxr-debian_config.json
deleted file mode 100644
index ba7090e7ebb7..000000000000
--- a/src/installer/pkg/packaging/deb/dotnet-hostfxr-debian_config.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "maintainer_name":".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
-
- "package_name": "%HOSTFXR_DEBIAN_PACKAGE_NAME%",
- "install_root": "/usr/share/dotnet",
-
- "short_description": "%HOSTFXR_BRAND_NAME% %HOSTFXR_NUGET_VERSION%",
- "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.",
- "homepage": "https://dot.net/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%HOSTFXR_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2017 Microsoft",
- "license": {
- "type": "MIT and ASL 2.0 and BSD",
- "full_text": "Copyright (c) 2017 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "debian_dependencies":{
- "dotnet-host" : {
- "package_version": "%SHARED_HOST_DEBIAN_VERSION%"
- },
- "libc6":{},
- "libgcc1":{},
- "libstdc++6":{}
- }
-}
diff --git a/src/installer/pkg/packaging/deb/dotnet-runtime-deps-debian_config.json b/src/installer/pkg/packaging/deb/dotnet-runtime-deps-debian_config.json
deleted file mode 100644
index ee2554263cf8..000000000000
--- a/src/installer/pkg/packaging/deb/dotnet-runtime-deps-debian_config.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "maintainer_name":".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
-
- "package_name": "%RUNTIME_DEPS_DEBIAN_PACKAGE_NAME%",
- "install_root": "/usr/share/dotnet",
-
- "short_description": "%RUNTIME_DEPS_DEBIAN_PACKAGE_NAME% %RUNTIME_DEPS_VERSION%",
- "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. This package installs all the system dependencies for .NET Runtime.",
- "homepage": "https://dot.net/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%RUNTIME_DEPS_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2018 Microsoft",
- "license": {
- "type": "MIT and ASL 2.0 and BSD",
- "full_text": "Copyright (c) 2018 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "debian_dependencies":{
- "libc6":{},
- "libgcc1":{},
- "libgssapi-krb5-2":{},
- "libstdc++6":{},
- "zlib1g":{},
- "%SSL_DEPENDENCY_LIST%" : {},
- "%LIBICU_DEPENDENCY_LIST%": {}
- },
-
- "debian_ignored_dependencies" : [
- "liblldb-3.5",
- "liblldb-3.6"
- ]
-}
diff --git a/src/installer/pkg/packaging/deb/dotnet-sharedframework-debian_config.json b/src/installer/pkg/packaging/deb/dotnet-sharedframework-debian_config.json
deleted file mode 100644
index b2d78ab93be6..000000000000
--- a/src/installer/pkg/packaging/deb/dotnet-sharedframework-debian_config.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "maintainer_name":".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
-
- "package_name": "%SHARED_FRAMEWORK_DEBIAN_PACKAGE_NAME%",
- "install_root": "/usr/share/dotnet",
-
- "short_description": "%SHARED_FRAMEWORK_BRAND_NAME% %SHARED_FRAMEWORK_NUGET_NAME% %SHARED_FRAMEWORK_NUGET_VERSION%",
- "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.",
- "homepage": "https://dot.net/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%SHARED_FRAMEWORK_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2017 Microsoft",
- "license": {
- "type": "MIT and ASL 2.0 and BSD",
- "full_text": "Copyright (c) 2017 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "debian_dependencies":{
- "%HOSTFXR_DEBIAN_PACKAGE_NAME%" : {
- "package_version": "%HOSTFXR_NUGET_VERSION%"
- },
- "%RUNTIME_DEPS_DEBIAN_PACKAGE_NAME%" : {
- "package_version": "%RUNTIME_DEPS_VERSION%"
- }
- }
-}
diff --git a/src/installer/pkg/packaging/deb/dotnet-sharedhost-debian_config.json b/src/installer/pkg/packaging/deb/dotnet-sharedhost-debian_config.json
deleted file mode 100644
index dde2c2e3ac9c..000000000000
--- a/src/installer/pkg/packaging/deb/dotnet-sharedhost-debian_config.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "maintainer_name":".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
-
- "package_name": "dotnet-host",
- "install_root": "/usr/share/dotnet",
-
- "short_description": "%SHARED_HOST_BRAND_NAME%",
- "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.",
- "homepage": "https://dot.net/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%SHARED_HOST_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2017 Microsoft",
- "license": {
- "type": "MIT and ASL 2.0 and BSD",
- "full_text": "Copyright (c) 2017 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "debian_dependencies":{
- "libc6":{},
- "libgcc1":{},
- "libstdc++6":{}
- },
-
- "package_conflicts" : [
- "dotnet",
- "dotnet-nightly"
- ],
-
- "symlinks": {
- "dotnet" : "/usr/bin/dotnet"
- }
-}
diff --git a/src/installer/pkg/packaging/deb/package.props b/src/installer/pkg/packaging/deb/package.props
deleted file mode 100644
index 6ba97aaf6803..000000000000
--- a/src/installer/pkg/packaging/deb/package.props
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
- $(PackagingRoot)deb/
- dotnet-host
- $(SharedHostDebPkgName.ToLower())
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/deb/package.targets b/src/installer/pkg/packaging/deb/package.targets
deleted file mode 100644
index da9b8feffc32..000000000000
--- a/src/installer/pkg/packaging/deb/package.targets
+++ /dev/null
@@ -1,358 +0,0 @@
-
-
-
-
-
-
-
- debian_config.json
-
-
-
-
-
-
-
-
-
-
- $(SharedHostDebPkgName)
- $(HostPackageVersion)
- $(SharedHostPublishRoot)
- $(SharedHostInstallerFile)
- dotnet-sharedhost-debian_config.json
- $(debPackaginfConfigPath)$(ConfigJsonName)
- $(PackagesIntermediateDir)$(DebPackageName)/$(DebPackageVersion)
-
-
-
- $(debIntermediatesDir)/debianLayoutDirectory/
- $(debLayoutDirectory)$
- $(debLayoutDirectory)package_root
- $(debLayoutDirectory)samples
- $(debLayoutDirectory)docs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(SharedHostBrandName)
-
-
- $(HostPackageRelease)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(HostFxrDebPkgName)
- $(HostResolverPackageVersion)
- $(HostFxrPublishRoot)
- $(HostFxrInstallerFile)
- dotnet-hostfxr-debian_config.json
- $(debPackaginfConfigPath)$(ConfigJsonName)
- $(PackagesIntermediateDir)$(DebPackageName)/$(DebPackageVersion)
-
-
-
- $(debIntermediatesDir)/debianLayoutDirectory/
- $(debLayoutDirectory)$
- $(debLayoutDirectory)package_root
- $(debLayoutDirectory)samples
- $(debLayoutDirectory)docs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(HostFxrBrandName)
-
-
- $(HostPackageVersion)
-
-
- $(HostResolverPackageVersion)
-
-
- $(DebPackageName)
-
-
- $(HostResolverPackageRelease)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(SharedFxDebPkgName)
- $(RuntimePackageVersion)
- $(SharedFrameworkPublishRoot)
- $(SharedFrameworkInstallerFile)
- dotnet-sharedframework-debian_config.json
- $(debPackaginfConfigPath)$(ConfigJsonName)
- $(PackagesIntermediateDir)$(DebPackageName)/$(DebPackageVersion)
-
-
-
- $(debIntermediatesDir)/debianLayoutDirectory/
- $(debLayoutDirectory)$
- $(debLayoutDirectory)package_root
- $(debLayoutDirectory)samples
- $(debLayoutDirectory)docs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(HostFxrDebPkgName)
-
-
- $(HostResolverPackageVersion)
-
-
- $(SharedFxDebPkgName)
-
-
- $(SharedFrameworkName)
-
-
- $(RuntimePackageVersion)
-
-
- $(SharedFrameworkBrandName)
-
-
- $(RuntimeDependenciesDebPkgName)
-
-
- $(RuntimeDepsDebPackageVersion)
-
-
- $(RuntimePackageRelease)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(RuntimeDependenciesDebPkgName)
- $(RuntimeDepsDebPackageVersion)
- $(DotnetRuntimeDependenciesPackageInstallerFile)
- dotnet-runtime-deps-debian_config.json
- $(debPackaginfConfigPath)$(ConfigJsonName)
- $(PackagesIntermediateDir)$(DebPackageName)/$(DebPackageVersion)
-
-
-
- $(debIntermediatesDir)/debianLayoutDirectory/
- $(debLayoutDirectory)$
- $(debLayoutDirectory)package_root
- $(debLayoutDirectory)samples
- $(debLayoutDirectory)docs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(RuntimeDependenciesDebPkgName)
-
-
- $(RuntimeDepsDebPackageVersion)
-
-
- $(RuntimeDepsDebPackageRelease)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/packaging/installers.proj b/src/installer/pkg/packaging/installers.proj
deleted file mode 100644
index a3494e48efae..000000000000
--- a/src/installer/pkg/packaging/installers.proj
+++ /dev/null
@@ -1,275 +0,0 @@
-
-
-
-
- true
-
-
-
-
-
-
- GetInstallerLocations;
- GenerateVersionBadge;
- GenerateCompressedFiles;
- GenerateInstallers;
- GenerateProjectInstallers;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_InstallerProject Include="$(InstallerProjectRoot)pkg\projects\**\*.pkgproj" />
- <_InstallerProject Include="$(InstallerProjectRoot)pkg\projects\**\*.sfxproj" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_NetHostOutputDir>$(ArtifactsBinDir)$(InstallerSourceOSPlatformConfig)\corehost\
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(MSBuildThisFileDirectory)version_badge.svg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GeneratePkgs;
- GenerateDebs;
- GenerateRpms;
-
-
-
-
-
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/cs.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/cs.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/cs.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/de.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/de.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/de.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/en.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/en.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/en.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/es.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/es.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/es.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/fr.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/fr.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/fr.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/it.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/it.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/it.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/ja.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/ja.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/ja.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/ko.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/ko.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/ko.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/pl.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/pl.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/pl.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/pt-br.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/pt-br.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/pt-br.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/ru.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/ru.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/ru.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/tr.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/tr.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/tr.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/zh-hans.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/zh-hans.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/zh-hans.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/zh-hant.lproj/conclusion.html b/src/installer/pkg/packaging/osx/hostfxr/resources/zh-hant.lproj/conclusion.html
deleted file mode 100644
index a7031e4d8dcd..000000000000
--- a/src/installer/pkg/packaging/osx/hostfxr/resources/zh-hant.lproj/conclusion.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
- Congratulations! You've successfully installed .NET CLI!
-
-
-
-
The installation was successful.
-
.NET CLI was successfully installed.
-
- Install dependencies
-
-
- In order to be able to use .NET on OS X, you need to install OpenSSL version 1.0.1/1.0.2.
- There are many ways to install/update your libssl. Using Homebrew is the easiest.
- You can view the instructions here or if you're updating, on this page.
-
- .NET is a development platform that you can use to build command-line applications, microservices and modern websites. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/dotnet/core). We happily accept issues and PRs.
-
-
- This package contains all the tools you will need to start writing applications with .NET. It includes the several tools, including the C# compiler and the NuGet package manager, and a copy of .NET for both you and the tools to use.
-
-
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/package.props b/src/installer/pkg/packaging/osx/package.props
deleted file mode 100644
index 447ffe38c7ef..000000000000
--- a/src/installer/pkg/packaging/osx/package.props
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
- $(PackagingRoot)osx/
-
-
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/osx/package.targets b/src/installer/pkg/packaging/osx/package.targets
deleted file mode 100644
index 722676fffc19..000000000000
--- a/src/installer/pkg/packaging/osx/package.targets
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(SharedFxComponentId)
- $(SharedFrameworkPublishRoot)
-
- $(PackagesIntermediateDir)$(SharedFxComponentId).pkg
- $(SharedFrameworkInstallerFile)
-
-
- $(SharedHostComponentId)
- $(SharedHostPublishRoot)
-
- $(PackagesIntermediateDir)$(SharedHostComponentId).pkg
- $(SharedHostInstallerFile)
-
-
- $(HostFxrComponentId)
- $(HostFxrPublishRoot)
-
- $(PackagesIntermediateDir)$(HostFxrComponentId).pkg
- $(HostFxrInstallerFile)
-
-
-
-
- /usr/local/share/dotnet
- --version $(SharedFrameworkNugetVersion) --install-location $(InstallLocation)
-
-
-
-
-
-
-
-
- $(OSXScriptRoot)sharedframework/
- $(PackagesIntermediateDir)resources
- $(CombinedInstallerFile)
- shared-framework-distribution-template.xml
- $(PackagesIntermediateDir)$(TemplateFile)
-
-
-
-
-
-
-
-
-
-
-
-
-
- conclusion.html
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/dotnetbackground.png b/src/installer/pkg/packaging/osx/sharedframework/resources/dotnetbackground.png
deleted file mode 100644
index 16a6bf22ba78..000000000000
Binary files a/src/installer/pkg/packaging/osx/sharedframework/resources/dotnetbackground.png and /dev/null differ
diff --git a/src/installer/pkg/packaging/osx/sharedframework/scripts/postinstall b/src/installer/pkg/packaging/osx/sharedframework/scripts/postinstall
deleted file mode 100755
index 734abc33de6e..000000000000
--- a/src/installer/pkg/packaging/osx/sharedframework/scripts/postinstall
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-#
-# Licensed to the .NET Foundation under one or more agreements.
-# The .NET Foundation licenses this file to you under the MIT license.
-#
-
-PACKAGE=$1
-INSTALL_DESTINATION=$2
-
-# A temporary fix for the permissions issue(s)
-chmod -R 755 $INSTALL_DESTINATION/shared
-
-exit 0
diff --git a/src/installer/pkg/packaging/osx/sharedframework/shared-framework-distribution-template.xml b/src/installer/pkg/packaging/osx/sharedframework/shared-framework-distribution-template.xml
deleted file mode 100644
index b910e9f83de2..000000000000
--- a/src/installer/pkg/packaging/osx/sharedframework/shared-framework-distribution-template.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
- {SharedFxBrandName} (x64)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {SharedFxComponentId}.pkg
- {HostFxrComponentId}.pkg
- {SharedHostComponentId}.pkg
-
diff --git a/src/installer/pkg/packaging/pack-managed.proj b/src/installer/pkg/packaging/pack-managed.proj
deleted file mode 100644
index acefdfff86d1..000000000000
--- a/src/installer/pkg/packaging/pack-managed.proj
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- $(NetCoreAppCurrent)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/packaging/rpm/dotnet-hostfxr-rpm_config.json b/src/installer/pkg/packaging/rpm/dotnet-hostfxr-rpm_config.json
deleted file mode 100644
index 2b2d08b4f29e..000000000000
--- a/src/installer/pkg/packaging/rpm/dotnet-hostfxr-rpm_config.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "maintainer_name": ".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
- "vendor": ".NET Foundation",
-
- "package_name": "%HOSTFXR_RPM_PACKAGE_NAME%",
- "install_root": "/usr/share/dotnet",
- "install_doc": "/usr/share/doc/%HOSTFXR_RPM_PACKAGE_NAME%/",
-
- "short_description": "%HOSTFXR_BRAND_NAME% %HOSTFXR_NUGET_VERSION%",
- "long_description": ".NET is a development platform that you can use to build command-line\napplications, microservices and modern websites. It is open source,\ncross-platform and is supported by Microsoft. We hope you enjoy using it!\nIf you do, please consider joining the active community of developers that are\ncontributing to the project on GitHub (https://github.com/dotnet/core).\nWe happily accept issues and PRs.",
- "homepage": "https://github.com/dotnet/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%HOSTFXR_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2017 Microsoft",
-
- "license": {
- "type": "MIT and ASL 2.0 and BSD",
- "full_text": "Copyright (c) 2017 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "rpm_dependencies": [{
- "package_name": "dotnet-host",
- "package_version": "%SHARED_HOST_RPM_VERSION%"
- }],
-
- "directories" : [
- "/usr/share/dotnet/host",
- "/usr/share/doc/%HOSTFXR_RPM_PACKAGE_NAME%"
- ]
-}
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_centos.7-x64.json b/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_centos.7-x64.json
deleted file mode 100644
index 2ab384b5923d..000000000000
--- a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_centos.7-x64.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "maintainer_name": ".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
- "vendor": ".NET Foundation",
-
- "package_name": "%RUNTIME_DEPS_RPM_PACKAGE_NAME%",
- "install_root": "/usr/share/dotnet",
-
- "short_description": "%RUNTIME_DEPS_RPM_PACKAGE_NAME% %RUNTIME_DEPS_VERSION%",
- "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. This package installs all the system dependencies for .NET Runtime.",
- "homepage": "https://dot.net/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%RUNTIME_DEPS_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2018 Microsoft",
- "license": {
- "type": "MIT",
- "full_text": "Copyright (c) 2018 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "rpm_dependencies":[{
- "package_name": "openssl-libs",
- "package_version": ""
- },
- {
- "package_name": "libicu",
- "package_version": ""
- },
- {
- "package_name": "krb5-libs",
- "package_version": ""
- }]
-}
diff --git a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_fedora.27-x64.json b/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_fedora.27-x64.json
deleted file mode 100644
index fb1c925c7064..000000000000
--- a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_fedora.27-x64.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "maintainer_name": ".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
- "vendor": ".NET Foundation",
-
- "package_name": "%RUNTIME_DEPS_RPM_PACKAGE_NAME%",
- "install_root": "/usr/share/dotnet",
-
- "short_description": "%RUNTIME_DEPS_RPM_PACKAGE_NAME% %RUNTIME_DEPS_VERSION%",
- "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. This package installs all the system dependencies for .NET Runtime.",
- "homepage": "https://dot.net/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%RUNTIME_DEPS_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2018 Microsoft",
- "license": {
- "type": "MIT",
- "full_text": "Copyright (c) 2018 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "rpm_dependencies":[{
- "package_name": "compat-openssl10",
- "package_version": ""
- },
- {
- "package_name": "libicu",
- "package_version": ""
- },
- {
- "package_name": "krb5-libs",
- "package_version": ""
- }]
-}
diff --git a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_opensuse.42-x64.json b/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_opensuse.42-x64.json
deleted file mode 100644
index 1c208459b79d..000000000000
--- a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_opensuse.42-x64.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "maintainer_name": ".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
- "vendor": ".NET Foundation",
-
- "package_name": "%RUNTIME_DEPS_RPM_PACKAGE_NAME%",
- "install_root": "/usr/share/dotnet",
-
- "short_description": "%RUNTIME_DEPS_RPM_PACKAGE_NAME% %RUNTIME_DEPS_VERSION%",
- "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. This package installs all the system dependencies for .NET Runtime.",
- "homepage": "https://dot.net/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%RUNTIME_DEPS_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2018 Microsoft",
- "license": {
- "type": "MIT",
- "full_text": "Copyright (c) 2018 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "rpm_dependencies":[{
- "package_name": "libopenssl1_0_0",
- "package_version": ""
- },
- {
- "package_name": "libicu",
- "package_version": ""
- },
- {
- "package_name": "krb5",
- "package_version": ""
- }]
-}
diff --git a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_oraclelinux.7-x64.json b/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_oraclelinux.7-x64.json
deleted file mode 100644
index 2ab384b5923d..000000000000
--- a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_oraclelinux.7-x64.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "maintainer_name": ".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
- "vendor": ".NET Foundation",
-
- "package_name": "%RUNTIME_DEPS_RPM_PACKAGE_NAME%",
- "install_root": "/usr/share/dotnet",
-
- "short_description": "%RUNTIME_DEPS_RPM_PACKAGE_NAME% %RUNTIME_DEPS_VERSION%",
- "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. This package installs all the system dependencies for .NET Runtime.",
- "homepage": "https://dot.net/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%RUNTIME_DEPS_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2018 Microsoft",
- "license": {
- "type": "MIT",
- "full_text": "Copyright (c) 2018 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "rpm_dependencies":[{
- "package_name": "openssl-libs",
- "package_version": ""
- },
- {
- "package_name": "libicu",
- "package_version": ""
- },
- {
- "package_name": "krb5-libs",
- "package_version": ""
- }]
-}
diff --git a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_rhel.7-x64.json b/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_rhel.7-x64.json
deleted file mode 100644
index 2ab384b5923d..000000000000
--- a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_rhel.7-x64.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "maintainer_name": ".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
- "vendor": ".NET Foundation",
-
- "package_name": "%RUNTIME_DEPS_RPM_PACKAGE_NAME%",
- "install_root": "/usr/share/dotnet",
-
- "short_description": "%RUNTIME_DEPS_RPM_PACKAGE_NAME% %RUNTIME_DEPS_VERSION%",
- "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. This package installs all the system dependencies for .NET Runtime.",
- "homepage": "https://dot.net/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%RUNTIME_DEPS_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2018 Microsoft",
- "license": {
- "type": "MIT",
- "full_text": "Copyright (c) 2018 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "rpm_dependencies":[{
- "package_name": "openssl-libs",
- "package_version": ""
- },
- {
- "package_name": "libicu",
- "package_version": ""
- },
- {
- "package_name": "krb5-libs",
- "package_version": ""
- }]
-}
diff --git a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_sles.12-x64.json b/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_sles.12-x64.json
deleted file mode 100644
index fc854bb6c957..000000000000
--- a/src/installer/pkg/packaging/rpm/dotnet-runtime-deps-rpm_config_sles.12-x64.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "maintainer_name": ".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
- "vendor": ".NET Foundation",
-
- "package_name": "%RUNTIME_DEPS_RPM_PACKAGE_NAME%",
- "install_root": "/usr/share/dotnet",
-
- "short_description": "%RUNTIME_DEPS_RPM_PACKAGE_NAME% %RUNTIME_DEPS_VERSION%",
- "long_description": ".NET is a development platform that you can use to build command-line applications, microservices and modern websites. This package installs all the system dependencies for .NET Runtime.",
- "homepage": "https://dot.net/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%RUNTIME_DEPS_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2018 Microsoft",
- "license": {
- "type": "MIT",
- "full_text": "Copyright (c) 2018 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "rpm_dependencies":[{
- "package_name": "libopenssl1_1",
- "package_version": ""
- },
- {
- "package_name": "libicu",
- "package_version": ""
- },
- {
- "package_name": "krb5",
- "package_version": ""
- }]
-}
diff --git a/src/installer/pkg/packaging/rpm/dotnet-sharedframework-rpm_config.json b/src/installer/pkg/packaging/rpm/dotnet-sharedframework-rpm_config.json
deleted file mode 100644
index e41d25617c87..000000000000
--- a/src/installer/pkg/packaging/rpm/dotnet-sharedframework-rpm_config.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "maintainer_name": ".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
- "vendor": ".NET Foundation",
-
- "package_name": "%SHARED_FRAMEWORK_RPM_PACKAGE_NAME%",
- "install_root": "/usr/share/dotnet",
- "install_doc": "/usr/share/doc/%SHARED_FRAMEWORK_RPM_PACKAGE_NAME%/",
-
- "short_description": "%SHARED_FRAMEWORK_BRAND_NAME% %SHARED_FRAMEWORK_NUGET_NAME%",
- "long_description": ".NET is a development platform that you can use to build command-line\napplications, microservices and modern websites. It is open source,\ncross-platform and is supported by Microsoft. We hope you enjoy using it!\nIf you do, please consider joining the active community of developers that are\ncontributing to the project on GitHub (https://github.com/dotnet/core).\nWe happily accept issues and PRs.",
- "homepage": "https://github.com/dotnet/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%SHARED_FRAMEWORK_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2017 Microsoft",
- "license": {
- "type": "MIT and ASL 2.0 and BSD",
- "full_text": "Copyright (c) 2017 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "rpm_dependencies": [{
- "package_name": "%HOSTFXR_RPM_PACKAGE_NAME%",
- "package_version": "%HOSTFXR_NUGET_VERSION%"
- },
- {
- "package_name": "%RUNTIME_DEPS_RPM_PACKAGE_NAME%",
- "package_version": "%RUNTIME_DEPS_VERSION%"
- }],
-
- "directories" : [
- "/usr/share/dotnet/shared",
- "/usr/share/doc/%SHARED_FRAMEWORK_RPM_PACKAGE_NAME%"
- ]
-}
diff --git a/src/installer/pkg/packaging/rpm/dotnet-sharedhost-rpm_config.json b/src/installer/pkg/packaging/rpm/dotnet-sharedhost-rpm_config.json
deleted file mode 100644
index e443287e6594..000000000000
--- a/src/installer/pkg/packaging/rpm/dotnet-sharedhost-rpm_config.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "maintainer_name": ".NET Team",
- "maintainer_email": "dotnetpackages@dotnetfoundation.org",
- "vendor": ".NET Foundation",
-
- "package_name": "dotnet-host",
- "install_root": "/",
- "install_doc": "/usr/share/doc/dotnet-host/",
- "install_man": "/usr/share/man/man1",
-
- "short_description": "%SHARED_HOST_BRAND_NAME%",
- "long_description": ".NET is a development platform that you can use to build command-line\napplications, microservices and modern websites. It is open source,\ncross-platform and is supported by Microsoft. We hope you enjoy using it!\nIf you do, please consider joining the active community of developers that are\ncontributing to the project on GitHub (https://github.com/dotnet/core).\nWe happily accept issues and PRs.",
- "homepage": "https://github.com/dotnet/core",
-
- "release":{
- "package_version":"1.0.0.0",
- "package_revision":"%SHARED_HOST_REVISION%",
- "urgency" : "low",
- "changelog_message" : "https://github.com/dotnet/core/tree/master/release-notes"
- },
-
- "control": {
- "priority":"standard",
- "section":"libs",
- "architecture":"amd64"
- },
-
- "copyright": "2017 Microsoft",
- "license": {
- "type": "MIT and ASL 2.0 and BSD",
- "full_text": "Copyright (c) 2017 Microsoft\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
- },
-
- "package_conflicts" : [
- "dotnet",
- "dotnet-nightly"
- ],
-
- "directories" : [
- "/usr/share/dotnet",
- "/usr/share/doc/dotnet-host"
- ]
-}
diff --git a/src/installer/pkg/packaging/rpm/package.props b/src/installer/pkg/packaging/rpm/package.props
deleted file mode 100644
index 90ab81b71917..000000000000
--- a/src/installer/pkg/packaging/rpm/package.props
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
- rpm_config.json
- $(PackagingRoot)rpm/
- dotnet-host
- $(SharedHostRpmPkgName.ToLower())
-
- $(RpmTemplatesDir)
- $(MSBuildThisFileDirectory)/scripts
-
-
diff --git a/src/installer/pkg/packaging/rpm/package.targets b/src/installer/pkg/packaging/rpm/package.targets
deleted file mode 100644
index 85cbbb5795fa..000000000000
--- a/src/installer/pkg/packaging/rpm/package.targets
+++ /dev/null
@@ -1,434 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(SharedHostRpmPkgName)
- $(HostPackageVersion)
- $(SharedHostPublishRoot)
- $(SharedHostInstallerFile)
- dotnet-sharedhost-rpm_config.json
- $(rpmPackagingConfigPath)$(ConfigJsonName)
- $(PackagesIntermediateDir)$(RpmPackageName)/$(RpmPackageVersion)
- usr/share/dotnet/
-
-
-
- $(RpmIntermediatesDir)/rpmLayoutDirectory/
- $(rpmLayoutDirectory)package_root/
- $(rpmLayoutPackageRoot)$(UsrShareDotnetPath)
- $(rpmLayoutPackageRoot)usr/bin/
- $(rpmLayoutDirectory)docs
- $(rpmLayoutDirectory)templates
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(SharedHostBrandName)
-
-
- $(HostPackageRelease)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(HostFxrRpmPkgName)
- $(HostResolverPackageVersion)
- $(HostFxrPublishRoot)
- $(HostFxrInstallerFile)
- dotnet-hostfxr-rpm_config.json
- $(rpmPackagingConfigPath)$(ConfigJsonName)
- $(PackagesIntermediateDir)$(RpmPackageName)/$(RpmPackageVersion)
-
-
-
- $(RpmIntermediatesDir)/rpmLayoutDirectory/
- $(rpmLayoutDirectory)package_root
- $(rpmLayoutDirectory)docs
- $(rpmLayoutDirectory)templates
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(HostFxrBrandName)
-
-
- $(HostPackageVersion)
-
-
- $(HostResolverPackageVersion)
-
-
- $(RpmPackageName)
-
-
- $(HostResolverPackageRelease)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(SharedFxRpmPkgName)
- $(RuntimePackageVersion)
- $(SharedFrameworkPublishRoot)
- $(SharedFrameworkInstallerFile)
- dotnet-sharedframework-rpm_config.json
- $(rpmPackagingConfigPath)$(ConfigJsonName)
- $(PackagesIntermediateDir)$(RpmPackageName)/$(RpmPackageVersion)
-
-
-
- $(RpmIntermediatesDir)/rpmLayoutDirectory/
- $(rpmLayoutDirectory)package_root
- $(rpmLayoutDirectory)docs
- $(rpmLayoutDirectory)templates
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(HostFxrRpmPkgName)
-
-
- $(HostResolverPackageVersion)
-
-
- $(RuntimeDependenciesRpmPkgName)
-
-
- $(RuntimeDepsRpmPackageVersion)
-
-
- $(SharedFxRpmPkgName)
-
-
- $(SharedFrameworkName)
-
-
- $(RuntimePackageVersion)
-
-
- $(SharedFrameworkBrandName)
-
-
- $(RuntimePackageRelease)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- rpmPackagingConfigPath=$(rpmPackagingConfigPath);
- DotnetRuntimeDependenciesPackageInstallerFile=$(DotnetRuntimeDependenciesPackageInstallerFile);
- OutputRid=$(OutputRid);
- RuntimeDependenciesRpmPkgName=$(RuntimeDependenciesRpmPkgName);
- RuntimeDepsRpmPackageVersion=$(RuntimeDepsRpmPackageVersion);
- RuntimeDepsRpmPackageRelease=$(RuntimeDepsRpmPackageRelease);
- TemplatesDir=$(TemplatesDir)
-
- dotnet-runtime-deps-rpm_config_
-
-
-
-
-
- DepsRid=$(OutputRid);$(SharedProperties)
-
-
-
-
-
-
-
-
- DepsRid=%(Rids.Identity);$(SharedProperties)
-
-
-
-
-
-
-
-
-
- $([System.String]::Copy('$(DotnetRuntimeDependenciesPackageInstallerFile)').Replace('$(OutputRid)', '$(DepsRid)'))
- $(RuntimeDependenciesRpmPkgName)
- $(RuntimeDepsRpmPackageVersion)
- dotnet-runtime-deps-rpm_config_$(DepsRid).json
- $(rpmPackagingConfigPath)$(ConfigJsonName)
- $(PackagesIntermediateDir)$(RpmPackageName)/$(RpmPackageVersion)
-
-
-
- $(RpmIntermediatesDir)/rpmLayoutDirectory/
- $(RpmLayoutDirectory)package_root
- $(RpmLayoutDirectory)docs
- $(RpmLayoutDirectory)templates
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(RpmPackageName)
-
-
- $(RuntimeDepsRpmPackageVersion)
-
-
- $(RuntimeDepsRpmPackageRelease)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/packaging/rpm/templates/changelog b/src/installer/pkg/packaging/rpm/templates/changelog
deleted file mode 100644
index e61dbc607cb8..000000000000
--- a/src/installer/pkg/packaging/rpm/templates/changelog
+++ /dev/null
@@ -1,2 +0,0 @@
-* {DATE} {MAINTAINER_NAME} <{MAINTAINER_EMAIL}> - {PACKAGE_VERSION}-{PACKAGE_REVISION}
-- {CHANGELOG_MESSAGE}
diff --git a/src/installer/pkg/packaging/rpm/templates/copyright b/src/installer/pkg/packaging/rpm/templates/copyright
deleted file mode 100644
index a44f2cbd6516..000000000000
--- a/src/installer/pkg/packaging/rpm/templates/copyright
+++ /dev/null
@@ -1,8 +0,0 @@
-Comment: Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license.
-
-Files: *
-Copyright: {COPYRIGHT_TEXT}
-License: {LICENSE_NAME}
-
-License: {LICENSE_NAME}
- {LICENSE_TEXT}
diff --git a/src/installer/pkg/packaging/snaps/dotnet-runtime-3.0/snap/snapcraft.yaml b/src/installer/pkg/packaging/snaps/dotnet-runtime-3.0/snap/snapcraft.yaml
deleted file mode 100644
index 9276af3d01f0..000000000000
--- a/src/installer/pkg/packaging/snaps/dotnet-runtime-3.0/snap/snapcraft.yaml
+++ /dev/null
@@ -1,45 +0,0 @@
-name: dotnet-runtime-30
-base: core18
-version: 3.0.2
-summary: Cross-Platform .NET Core Runtime.
-description: |
- .NET Core runtimes and libraries which are optimized for running .NET Core apps in production. See https://dot.net/core.
- .NET Core is a general purpose development platform maintained by Microsoft.
-
-grade: stable
-confinement: strict
-
-apps:
- dotnet:
- command: dotnet
- plugs:
- - network
- - network-bind
- - removable-media
- - home
-
-slots:
- dotnet-runtime:
- content: dotnet-runtime-30
- interface: content
- read: [/]
-
-parts:
- dotnet-runtime:
- plugin: dump
- source: https://download.visualstudio.microsoft.com/download/pr/7647815e-9c28-40a5-96ea-c6ac4ebe2020/c026b1e93a5d6750a7666d3fe36a87f5/dotnet-runtime-3.0.2-linux-x64.tar.gz
- source-checksum: sha512/c8f0e4eb220fa896c4a803a8d9d0c704ae7b8383801a977036f3089b1d779159f5a2d9293dc11ff5f4f6c76febc6f70f6cfcdff0debd3243cad5eb635f853d45
- stage-packages:
- - libicu60
- - libssl1.0.0
- - libcurl3
- - libgssapi-krb5-2
- - liblttng-ust0
- - libstdc++6
- - zlib1g
- - libgcc1
- - lldb
- - libunwind8
- - libtinfo5
- - libdb5.3
- - libc6
\ No newline at end of file
diff --git a/src/installer/pkg/packaging/version_badge.svg b/src/installer/pkg/packaging/version_badge.svg
deleted file mode 100644
index 956523b78df3..000000000000
--- a/src/installer/pkg/packaging/version_badge.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
diff --git a/src/installer/pkg/packaging/vs-insertion-packages.proj b/src/installer/pkg/packaging/vs-insertion-packages.proj
deleted file mode 100644
index fd69aea557f7..000000000000
--- a/src/installer/pkg/packaging/vs-insertion-packages.proj
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
- $(NetCoreAppCurrent)
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/projects/Directory.Build.props b/src/installer/pkg/projects/Directory.Build.props
index 9d6ae93d467c..d64e7f18c1f1 100644
--- a/src/installer/pkg/projects/Directory.Build.props
+++ b/src/installer/pkg/projects/Directory.Build.props
@@ -1,6 +1,5 @@
- AnyCPU
@@ -46,22 +45,9 @@
true
-
- NetCore
- VS.Redist.Common
-
-
-
+
-
-
-
-
@@ -165,8 +151,10 @@
@(RestoreBuildRID)
- $(PackageRID)
+ $(OutputRid)
-
+
+
+
diff --git a/src/installer/pkg/projects/Directory.Build.targets b/src/installer/pkg/projects/Directory.Build.targets
index 383e5549c36e..095938d03a4f 100644
--- a/src/installer/pkg/projects/Directory.Build.targets
+++ b/src/installer/pkg/projects/Directory.Build.targets
@@ -1,32 +1,13 @@
-
-
-
-
-
-
$(Version)
- true
-
-
-
- true
-
-
-
@@ -38,16 +19,6 @@
-
- .Mono
-
-
- .Mono.LLVM
-
-
- .Mono.LLVM.AOT
-
-
-
-
-
+
+
+
+
+
-
-
+
+
+
+ runtimes/$(PackageTargetRuntime)/native
+
+
+ tools
+
+
+
+
+
+
+
-
-
-
+
-
-
-
-
-
+
+
+
+
+
+
+ true
- true
+ true
-
+ runtimes/$(PackageTargetRuntime)/nativetrue
@@ -213,163 +199,6 @@
-
-
-
-
-
-
-
-
-
-
-
- <_PkgProjDependencyWithoutTFM Include="@(PkgProjDependency)" Condition="'%(PkgProjDependency.TargetFramework)' == '' AND '%(PkgProjDependency.TargetRuntime)' == '' AND '%(PkgProjDependency.DoNotExpand)' != 'true'" />
- <_AllPkgProjTFMs Include="%(PkgProjDependency.TargetFramework)" Condition="'%(PkgProjDependency.DependencyKind)' == 'Direct'" />
-
-
-
-
- %(_AllPkgProjTFMs.Identity)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(BuildTargetPath)$(Id).props
- $(BuildTargetPath)$(Id.Replace('.Internal', '')).PlatformManifest.txt
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_propsFileTemplateFile Condition="'%(_depprojDataFile.PropsFile)' == 'true'">%(_depprojDataFile.Identity)
-
-
-
- <_runtimeDependencyItems>@(RuntimeDependency)
- <_filledPropsFileContent>$([System.IO.File]::ReadAllText('$(_propsFileTemplateFile)')
- .Replace("__PackageId__", "$(Id.Replace('.', '_'))")
- .Replace("__PreferredPackages__", "$(Id);$(_runtimeDependencyItems)"))
-
-
- <_filledPropsFile>$(IntermediateOutputPath)$(MSBuildProjectName).props
-
-
-
-
-
-
-
-
-
-
-
-
- <_platformManifestFileTemplateFile Condition="'%(_depprojDataFile.PlatformManifestFile)' == 'true'">%(_depprojDataFile.Identity)
-
-
-
- <_runtimeDependencyItems>@(RuntimeDependency)
- <_filledPlatformManifestFileContent>$([System.IO.File]::ReadAllText('$(_platformManifestFileTemplateFile)')
- .Replace("__PackageId__", "$(Id)"))
-
-
- <_filledPlatformManifestFile>$(IntermediateOutputPath)PlatformManifest.txt
-
-
-
-
-
-
-
-
-
-
-
- FrameworkList.xml
- $(IntermediateOutputPath)$(FrameworkListFilename)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(FrameworkListTargetPath)
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/projects/Microsoft.NETCore.DotNetAppHost/Microsoft.NETCore.DotNetAppHost.pkgproj b/src/installer/pkg/projects/Microsoft.NETCore.DotNetAppHost/Microsoft.NETCore.DotNetAppHost.pkgproj
index a363542fa625..eeedb0faea01 100644
--- a/src/installer/pkg/projects/Microsoft.NETCore.DotNetAppHost/Microsoft.NETCore.DotNetAppHost.pkgproj
+++ b/src/installer/pkg/projects/Microsoft.NETCore.DotNetAppHost/Microsoft.NETCore.DotNetAppHost.pkgproj
@@ -1,8 +1,32 @@
AppHostVersion
- true
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ runtimes/$(PackageTargetRuntime)/native
+ true
+
+
diff --git a/src/installer/pkg/projects/Microsoft.NETCore.DotNetAppHost/Microsoft.NETCore.DotNetAppHost.props b/src/installer/pkg/projects/Microsoft.NETCore.DotNetAppHost/Microsoft.NETCore.DotNetAppHost.props
deleted file mode 100644
index 3f6f90f8cf47..000000000000
--- a/src/installer/pkg/projects/Microsoft.NETCore.DotNetAppHost/Microsoft.NETCore.DotNetAppHost.props
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- runtimes/$(PackageTargetRuntime)/native
- true
-
-
-
-
diff --git a/src/installer/pkg/projects/Microsoft.NETCore.DotNetHost/Microsoft.NETCore.DotNetHost.pkgproj b/src/installer/pkg/projects/Microsoft.NETCore.DotNetHost/Microsoft.NETCore.DotNetHost.pkgproj
index e8e11eb27314..a957392ccde4 100644
--- a/src/installer/pkg/projects/Microsoft.NETCore.DotNetHost/Microsoft.NETCore.DotNetHost.pkgproj
+++ b/src/installer/pkg/projects/Microsoft.NETCore.DotNetHost/Microsoft.NETCore.DotNetHost.pkgproj
@@ -4,52 +4,10 @@
HostVersiondotnet-host
- true
- true
-
-
- $(SharedHostBrandName)
- sharedhost
- Dotnet_CLI_SharedHost
- SharedHost
-
- $(IntermediateOutputPath)publishRoot/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ runtimes/$(PackageTargetRuntime)/nativetrue
diff --git a/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostPolicy/Microsoft.NETCore.DotNetHostPolicy.pkgproj b/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostPolicy/Microsoft.NETCore.DotNetHostPolicy.pkgproj
index ccca328154d6..43d12c53b96d 100644
--- a/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostPolicy/Microsoft.NETCore.DotNetHostPolicy.pkgproj
+++ b/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostPolicy/Microsoft.NETCore.DotNetHostPolicy.pkgproj
@@ -2,12 +2,17 @@
HostPolicyVersion
- true
-
+
+
+
+ runtimes/$(PackageTargetRuntime)/native
+ true
+
+
diff --git a/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostPolicy/Microsoft.NETCore.DotNetHostPolicy.props b/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostPolicy/Microsoft.NETCore.DotNetHostPolicy.props
deleted file mode 100644
index 6b1b70b6c206..000000000000
--- a/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostPolicy/Microsoft.NETCore.DotNetHostPolicy.props
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- runtimes/$(PackageTargetRuntime)/native
- true
-
-
-
-
diff --git a/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostResolver/Microsoft.NETCore.DotNetHostResolver.pkgproj b/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostResolver/Microsoft.NETCore.DotNetHostResolver.pkgproj
index bb16d54c5bce..a2d33da0e18b 100644
--- a/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostResolver/Microsoft.NETCore.DotNetHostResolver.pkgproj
+++ b/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostResolver/Microsoft.NETCore.DotNetHostResolver.pkgproj
@@ -4,48 +4,18 @@
HostResolverVersiondotnet-hostfxr
- true
- true
-
-
- $(HostFxrBrandName)
- hostfxr
- Dotnet_CLI_HostFxr
- HostFXR
-
- $(IntermediateOutputPath)publishRoot/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ runtimes/$(PackageTargetRuntime)/native
+ true
+
+
diff --git a/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostResolver/Microsoft.NETCore.DotNetHostResolver.props b/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostResolver/Microsoft.NETCore.DotNetHostResolver.props
deleted file mode 100644
index 81d8d72da34c..000000000000
--- a/src/installer/pkg/projects/Microsoft.NETCore.DotNetHostResolver/Microsoft.NETCore.DotNetHostResolver.props
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- runtimes/$(PackageTargetRuntime)/native
- true
-
-
-
-
diff --git a/src/installer/pkg/projects/descriptions.json b/src/installer/pkg/projects/descriptions.json
index 4b4ae7f6d83b..b262318a3b3c 100644
--- a/src/installer/pkg/projects/descriptions.json
+++ b/src/installer/pkg/projects/descriptions.json
@@ -28,25 +28,5 @@
"Name": "Microsoft.NETCore.DotNetHost",
"Description": "Provides an executable implementation of the Microsoft DotNet Framework and SDK launcher module",
"CommonTypes": [ ]
- },
- {
- "Name": "Microsoft.NETCore",
- "Description": "Provides a set of packages that can be used when building portable libraries on .NETCore based platforms.",
- "CommonTypes": [ ]
- },
- {
- "Name": "Microsoft.NETCore.App",
- "Description": "A set of .NET APIs that are included in the default .NET application model.",
- "CommonTypes": [ ]
- },
- {
- "Name": "Microsoft.NETCore.App.Internal",
- "Description": "Transport package for .NET App runtime assets.",
- "CommonTypes": [ ]
- },
- {
- "Name": "Microsoft.NETCore.App.Ref",
- "Description": "A set of .NET APIs that are included in the default .NET application model. Contains reference assemblies, documentation, and other design-time assets.",
- "CommonTypes": [ ]
}
]
diff --git a/src/installer/pkg/projects/host-packages.proj b/src/installer/pkg/projects/host-packages.proj
new file mode 100644
index 000000000000..705c3c92dcca
--- /dev/null
+++ b/src/installer/pkg/projects/host-packages.proj
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/installer/pkg/projects/netcoreapp/Directory.Build.props b/src/installer/pkg/projects/netcoreapp/Directory.Build.props
deleted file mode 100644
index 36885e8e8b63..000000000000
--- a/src/installer/pkg/projects/netcoreapp/Directory.Build.props
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
- windows
- Linux
- OSX
- iOS
- tvOS
- Android
- Browser
- FreeBSD
- NetBSD
- illumos
- Solaris
- $(CoreCLRTargetOS)
-
-
-
- dotnet
-
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/pkg/Directory.Build.props b/src/installer/pkg/projects/netcoreapp/pkg/Directory.Build.props
deleted file mode 100644
index 40e6a6f9e637..000000000000
--- a/src/installer/pkg/projects/netcoreapp/pkg/Directory.Build.props
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
- true
-
-
-
-
-
- $(NetCoreAppCurrentBrandName)
- $(NetCoreAppCurrentIdentifier)
- $(NetCoreAppCurrentVersion)
- $(SharedFrameworkName)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- RuntimeIdentifier=$(PackageTargetRuntime)
-
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Crossgen2.pkgproj b/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Crossgen2.pkgproj
deleted file mode 100644
index 32a1ce3ac47d..000000000000
--- a/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Crossgen2.pkgproj
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
- crossgen2
- true
- true
-
-
-
-
-
- $(ShortFrameworkName)-crossgen2-pack
- $(Crossgen2PackBrandName)
- Crossgen2Pack
-
-
-
-
- $(MSBuildThisFileDirectory)crossgenRIDs.props
-
-
-
-
-
-
-
-
-
-
-
-
- unix
- win
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- tools
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Host.pkgproj b/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Host.pkgproj
deleted file mode 100644
index 8daa78d3ec71..000000000000
--- a/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Host.pkgproj
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Ref.pkgproj b/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Ref.pkgproj
deleted file mode 100644
index 450e84155921..000000000000
--- a/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Ref.pkgproj
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
- true
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Runtime.pkgproj b/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Runtime.pkgproj
deleted file mode 100644
index 003e5b8c52b9..000000000000
--- a/src/installer/pkg/projects/netcoreapp/pkg/Microsoft.NETCore.App.Runtime.pkgproj
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- true
-
-
-
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/pkg/crossgenRIDs.props b/src/installer/pkg/projects/netcoreapp/pkg/crossgenRIDs.props
deleted file mode 100644
index f10ef9947ce6..000000000000
--- a/src/installer/pkg/projects/netcoreapp/pkg/crossgenRIDs.props
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- false
-
-
-
- $(OutputRid)
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/pkg/legacy/Directory.Build.props b/src/installer/pkg/projects/netcoreapp/pkg/legacy/Directory.Build.props
deleted file mode 100644
index 03473f6c66f5..000000000000
--- a/src/installer/pkg/projects/netcoreapp/pkg/legacy/Directory.Build.props
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
- true
- build/$(NetCoreAppCurrent)/
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/pkg/legacy/Microsoft.NETCore.App.Internal.pkgproj b/src/installer/pkg/projects/netcoreapp/pkg/legacy/Microsoft.NETCore.App.Internal.pkgproj
deleted file mode 100644
index a46f80401902..000000000000
--- a/src/installer/pkg/projects/netcoreapp/pkg/legacy/Microsoft.NETCore.App.Internal.pkgproj
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- $(MSBuildThisFileDirectory)Microsoft.NETCore.App.pkgproj
- true
-
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/pkg/legacy/Microsoft.NETCore.App.pkgproj b/src/installer/pkg/projects/netcoreapp/pkg/legacy/Microsoft.NETCore.App.pkgproj
deleted file mode 100644
index 5636c4b32e44..000000000000
--- a/src/installer/pkg/projects/netcoreapp/pkg/legacy/Microsoft.NETCore.App.pkgproj
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
- false
-
- true
-
- data/
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/pkg/workaround/Microsoft.NETCore.App.pkgproj b/src/installer/pkg/projects/netcoreapp/pkg/workaround/Microsoft.NETCore.App.pkgproj
deleted file mode 100644
index d5ae432d189a..000000000000
--- a/src/installer/pkg/projects/netcoreapp/pkg/workaround/Microsoft.NETCore.App.pkgproj
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
- true
-
-
-
-
-
-
- false
- false
-
-
- true
-
- false
-
- false
- true
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/Microsoft.NETCore.App.Bundle.bundleproj b/src/installer/pkg/projects/netcoreapp/sfx/Microsoft.NETCore.App.Bundle.bundleproj
deleted file mode 100644
index b7c0b1338615..000000000000
--- a/src/installer/pkg/projects/netcoreapp/sfx/Microsoft.NETCore.App.Bundle.bundleproj
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
- .NET Core Shared Framework Bundle Installer
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/Microsoft.NETCore.App.SharedFx.sfxproj b/src/installer/pkg/projects/netcoreapp/sfx/Microsoft.NETCore.App.SharedFx.sfxproj
deleted file mode 100644
index e2905a88d370..000000000000
--- a/src/installer/pkg/projects/netcoreapp/sfx/Microsoft.NETCore.App.SharedFx.sfxproj
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
- Microsoft.NETCore.App
- $(SfxIdentity).Internal
-
-
- $(SharedFrameworkPublishDir)
-
- true
-
-
- true
- true
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(SharedFrameworkInstallerFile)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(RestoreSources);$(LibrariesShippingPackagesDir)
- $(RestoreSources);$(LibrariesNonShippingPackagesDir)
-
-
-
- $(RestoreSources);$(LibrariesAllConfigShippingPackagesDir)
- $(RestoreSources);$(LibrariesAllConfigNonShippingPackagesDir)
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/src/localnetcoreapp.override.targets b/src/installer/pkg/projects/netcoreapp/src/localnetcoreapp.override.targets
deleted file mode 100644
index 47b1b703c424..000000000000
--- a/src/installer/pkg/projects/netcoreapp/src/localnetcoreapp.override.targets
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
- <_diaSymReaderPackageDir>$(NuGetPackageRoot)microsoft.diasymreader.native/$(MicrosoftDiaSymReaderNativeVersion)/
-
-
-
- <_crossHostArch>x86
-
-
- <_crossHostArch>x64
-
-
- <_crossHostArch>x64
-
-
- <_crossHostArch>x64
-
-
- <_crossDir Condition="'$(_crossHostArch)' != ''">/$(_crossHostArch)_$(TargetArchitecture)
-
-
-
-
-
-
- <_diaSymReaderAssembly Include="$(_diaSymReaderPackageDir)**\Microsoft.DiaSymReader.Native.*.dll" />
-
-
-
- <_runtimeDirectory>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'sharedFramework'))
- <_crossGenPath>$([MSBuild]::NormalizePath('$(CoreCLRArtifactsPath)', '$(CoreCLRCrossTargetComponentDirName)', 'sharedFramework', 'crossgen$(ApplicationFileExtension)'))
-
-
-
- <_coreLibDirectory>$(CoreCLRArtifactsPath)
- <_fxLibDirectory>$(LibrariesSharedFrameworkBinArtifactsPath)
-
-
-
- <_jitPath>$([MSBuild]::NormalizePath('$(CoreCLRArtifactsPath)', '$(CoreCLRCrossTargetComponentDirName)', 'sharedFramework', '$(LibraryFilePrefix)clrjit$(LibraryFileExtension)'))
-
-
-
- <_diaSymReaderToolDir>%(_diaSymReaderAssembly.RootDir)%(_diaSymReaderAssembly.Directory)
-
-
-
-
- <_diaSymReaderToolDir>$(IntermediateOutputPath)
-
-
-
-
- <_crossgenPlatformDirectories Include="%(_filesToCrossGen.RootDir)%(_filesToCrossGen.Directory)" />
-
- <_crossgenPlatformDirectories Include="$(_runtimeDirectory)" />
- <_crossgenPlatformDirectories Include="$(_coreLibDirectory)" />
- <_crossgenPlatformDirectories Include="$(_fxLibDirectory)" />
-
-
-
-
- <_pathSeparatorEscaped>$([MSBuild]::Escape($([System.IO.Path]::PathSeparator.ToString())))
- <_crossgenPlatformAssemblies>@(_crossgenPlatformDirectories->'%(Identity)', '$(_pathSeparatorEscaped)')
-
-
-
-
-
-
-
-
- true
-
-
-
-
- runtimes/$(PackageRID)/lib/$(PackageTargetFramework)
- runtimes/$(PackageRID)/native
-
-
-
- %(RidSpecificFilesToPackage.TargetPath)/%(RidSpecificFilesToPackage.DestinationSubDirectory)
-
-
-
-
-
-
-
-
-
-
- ref/$(PackageTargetFramework)
-
-
-
- <_docFilesToPackage Include="%(FilesToPackage.RootDir)%(FilesToPackage.Directory)**\%(FilesToPackage.FileName).xml" />
-
-
- ref/$(PackageTargetFramework)/%(RecursiveDir)
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/projects/netcoreapp/src/netcoreapp.depproj b/src/installer/pkg/projects/netcoreapp/src/netcoreapp.depproj
deleted file mode 100644
index 79bf46786a4c..000000000000
--- a/src/installer/pkg/projects/netcoreapp/src/netcoreapp.depproj
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
-
- Microsoft.NETCore.App
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_pastShimFiles Include="System.Globalization.Native.dylib" />
- <_pastShimFiles Include="System.Globalization.Native.so" />
- <_pastShimFiles Include="System.IO.Compression.Native.a" />
- <_pastShimFiles Include="System.IO.Compression.Native.dylib" />
- <_pastShimFiles Include="System.IO.Compression.Native.so" />
- <_pastShimFiles Include="System.Native.a" />
- <_pastShimFiles Include="System.Native.dylib" />
- <_pastShimFiles Include="System.Native.so" />
- <_pastShimFiles Include="System.Net.Http.Native.a" />
- <_pastShimFiles Include="System.Net.Http.Native.dylib" />
- <_pastShimFiles Include="System.Net.Http.Native.so" />
- <_pastShimFiles Include="System.Net.Security.Native.a" />
- <_pastShimFiles Include="System.Net.Security.Native.dylib" />
- <_pastShimFiles Include="System.Net.Security.Native.so" />
- <_pastShimFiles Include="System.Security.Cryptography.Native.Apple.a" />
- <_pastShimFiles Include="System.Security.Cryptography.Native.Apple.dylib" />
- <_pastShimFiles Include="System.Security.Cryptography.Native.OpenSsl.a" />
- <_pastShimFiles Include="System.Security.Cryptography.Native.OpenSsl.dylib" />
- <_pastShimFiles Include="System.Security.Cryptography.Native.OpenSsl.so" />
-
-
-
-
-
-
-
-
-
-
-
- runtimes/$(PackageRID)/native
-
-
-
- tools
-
-
-
- runtimes/$(PackageRID)/native/cross
-
-
- runtimes/$(PackageRID)/native/include/%(RecursiveDir)
-
-
-
- runtimes/$(CoreCLRCrossTargetComponentDirName)_$(TargetArchitecture)/native
-
-
- tools/$(CoreCLRCrossTargetComponentDirName)_$(TargetArchitecture)
-
-
- tools/$(CoreCLRCrossTargetComponentDirName)_$(TargetArchitecture)
-
-
- tools/$(CoreCLRCrossTargetComponentDirName)_$(TargetArchitecture)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_docFilesToPackage Include="$(ArtifactsBinDir)/docs/%(LibrariesRefAssemblies.FileName).xml" Condition="Exists('$(ArtifactsBinDir)/docs/%(LibrariesRefAssemblies.FileName).xml')"/>
-
-
-
-
-
-
diff --git a/src/installer/pkg/projects/netcoreappRIDs.props b/src/installer/pkg/projects/netcoreappRIDs.props
index 86a934d2b917..1382ff46b822 100644
--- a/src/installer/pkg/projects/netcoreappRIDs.props
+++ b/src/installer/pkg/projects/netcoreappRIDs.props
@@ -1,10 +1,6 @@
-
- $(OutputRid)
-
-
diff --git a/src/installer/pkg/sfx/Directory.Build.props b/src/installer/pkg/sfx/Directory.Build.props
new file mode 100644
index 000000000000..6c4517eb7b5b
--- /dev/null
+++ b/src/installer/pkg/sfx/Directory.Build.props
@@ -0,0 +1,23 @@
+
+
+ true
+
+
+
+
+ $(NetCoreAppCurrent)
+
+
+ $(RepoRoot)THIRD-PARTY-NOTICES.TXT
+
+ https://go.microsoft.com/fwlink/?LinkID=799417
+ https://dot.net
+ Microsoft
+ 2.12
+ $(RepoRoot)LICENSE.TXT
+ Microsoft .NET
+ true
+ true
+
+
diff --git a/src/installer/pkg/sfx/Directory.Build.targets b/src/installer/pkg/sfx/Directory.Build.targets
new file mode 100644
index 000000000000..0ea3761da20e
--- /dev/null
+++ b/src/installer/pkg/sfx/Directory.Build.targets
@@ -0,0 +1,19 @@
+
+
+
+
+ $(PackageId)
+ Internal implementation package not meant for direct consumption. Please do not reference directly.
+ When using NuGet 3.x, this package requires at least version 3.4.
+
+
+
+
+ $(RuntimeDisclaimer) %0A$(SourceRevisionId) %0A$(MinimumNuGet3VersionDescription)
+ $(RuntimeDisclaimer) %0A$(Description) %0A$(SourceRevisionId) %0A$(MinimumNuGet3VersionDescription)
+
+
+
+
diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props
new file mode 100644
index 000000000000..e62594ed671d
--- /dev/null
+++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props
@@ -0,0 +1,405 @@
+
+
+
+
+ Microsoft.NETCore.App
+ .NET Runtime
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_pastShimFiles Include="System.Globalization.Native.dylib" />
+ <_pastShimFiles Include="System.Globalization.Native.so" />
+ <_pastShimFiles Include="System.IO.Compression.Native.a" />
+ <_pastShimFiles Include="System.IO.Compression.Native.dylib" />
+ <_pastShimFiles Include="System.IO.Compression.Native.so" />
+ <_pastShimFiles Include="System.Native.a" />
+ <_pastShimFiles Include="System.Native.dylib" />
+ <_pastShimFiles Include="System.Native.so" />
+ <_pastShimFiles Include="System.Net.Http.Native.a" />
+ <_pastShimFiles Include="System.Net.Http.Native.dylib" />
+ <_pastShimFiles Include="System.Net.Http.Native.so" />
+ <_pastShimFiles Include="System.Net.Security.Native.a" />
+ <_pastShimFiles Include="System.Net.Security.Native.dylib" />
+ <_pastShimFiles Include="System.Net.Security.Native.so" />
+ <_pastShimFiles Include="System.Security.Cryptography.Native.Apple.a" />
+ <_pastShimFiles Include="System.Security.Cryptography.Native.Apple.dylib" />
+ <_pastShimFiles Include="System.Security.Cryptography.Native.OpenSsl.a" />
+ <_pastShimFiles Include="System.Security.Cryptography.Native.OpenSsl.dylib" />
+ <_pastShimFiles Include="System.Security.Cryptography.Native.OpenSsl.so" />
+
+
+
+
+ true
+ 10.0.19041.1
+ 14.12.25830.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_hostArch>$(TargetArchitecture)
+ <_longNameTargetArch>$(TargetArchitecture)
+ <_hostArch Condition="'$(_hostArch)' == 'x64'">amd64
+ <_longNameTargetArch Condition="'$(_longNameTargetArch)' == 'x64'">amd64
+
+
+ <_hostArch>x86
+
+
+ <_hostArch>amd64
+
+
+ <_hostArch>amd64
+
+
diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.targets b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.targets
new file mode 100644
index 000000000000..9859603f7eb8
--- /dev/null
+++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.targets
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Crossgen2.sfxproj b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Crossgen2.sfxproj
new file mode 100644
index 000000000000..fee0cf0102be
--- /dev/null
+++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Crossgen2.sfxproj
@@ -0,0 +1,110 @@
+
+
+
+
+
+ true
+ RuntimePack
+ Microsoft.NETCore.App.Crossgen2
+ Microsoft.NETCore.App.Crossgen2.$(RuntimeIdentifier)
+ dotnet-crossgen2
+ crossgen2
+ linux-x64;linux-musl-x64;osx-x64;win-x64
+ false
+
+ AddRuntimeFilesToPackage;
+ AddFrameworkFilesToPackage
+
+ true
+
+ false
+ tools/
+ true
+
+
+
+ unix
+ win
+ $(TargetOSComponent)-$(TargetArchitecture)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_diaSymArch Condition="'$(_hostArch)' != ''">$(_hostArch)
+ <_diaSymReaderPath>$(PkgMicrosoft_DiaSymReader_Native)/runtimes/win/native/Microsoft.DiaSymReader.Native.$(_diaSymArch).dll
+ <_diaSymReaderPathIfExists Condition="Exists('$(_diaSymReaderPath)')">$(_diaSymReaderPath)
+
+
+
+
+
+
+
+
+
+
+
+ <_crossTargetJit Include="@(CoreCLRCrossTargetFiles)" Condition="'%(FileName)' == '$(LibPrefix)clrjit' and '%(Extension)' == '$(LibSuffix)'" />
+ <_clrjit Include="@(RuntimeFiles)" Condition="'%(FileName)' == '$(LibPrefix)clrjit' and '%(Extension)' == '$(LibSuffix)'" />
+ <_crossTargetCrossgen Include="@(CoreCLRCrossTargetFiles)" Condition="'%(FileName)' == 'crossgen' and '%(Extension)' == '$(ExeSuffix)'" />
+ <_crossgen Include="@(RuntimeFiles)" Condition="'%(FileName)' == 'crossgen' and '%(Extension)' == '$(ExeSuffix)'" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_PackagedFilesToPublish Include="@(_FilesToPackage)" Condition="'%(_FilesToPackage.PackOnly)' != 'true'" />
+
+
+
+
+
+
diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Host.sfxproj b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Host.sfxproj
new file mode 100644
index 000000000000..eb264e1385fd
--- /dev/null
+++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Host.sfxproj
@@ -0,0 +1,66 @@
+
+
+
+
+ true
+ AppHostPack
+ true
+ dotnet-apphost-pack
+ dotnet-apphost-pack
+ NetCore.AppHostPack
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_SymbolFiles Condition="'$(TargetOS)' == 'windows'"
+ Include="@(NativeRuntimeAsset->'%(RootDir)%(Directory)PDB/%(Filename).pdb')"
+ IsSymbolFile="true"
+ IsNative="true" />
+ <_SymbolFiles Condition="'$(TargetOS)' != 'windows'"
+ Include="@(NativeRuntimeAsset->'%(RootDir)%(Directory)PDB/%(Filename)%(Extension)%(SymbolsSuffix)')"
+ IsSymbolFile="true"
+ IsNative="true" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Ref.sfxproj b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Ref.sfxproj
new file mode 100644
index 000000000000..327ba6421fd6
--- /dev/null
+++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Ref.sfxproj
@@ -0,0 +1,19 @@
+
+
+
+
+ TargetingPack
+ true
+ dotnet-targeting-pack
+ dotnet-targeting-pack
+ NetCore.TargetingPack
+ A set of .NET APIs that are included in the default .NET application model. Contains reference assemblies, documentation, and other design-time assets.
+
+
+
+
+
+
+
+
+
diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.sfxproj b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.sfxproj
new file mode 100644
index 000000000000..2402d7fbe2ef
--- /dev/null
+++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.sfxproj
@@ -0,0 +1,127 @@
+
+
+
+
+
+ RuntimePack
+ dotnet-runtime-internal
+ dotnet-runtime
+ dotnet-runtime-internal
+ true
+ dotnet-runtime-symbols
+ NetCore.SharedFramework
+ true
+
+ AddRuntimeFilesToPackage;
+ AddFrameworkFilesToPackage
+
+ true
+ false
+
+ false
+
+ true
+ true
+ The .NET Shared Framework
+
+
+
+ Mono
+
+
+ Mono.LLVM
+
+
+ Mono.LLVM.AOT
+
+
+ $(SharedFrameworkName).Runtime.$(RuntimeSpecificFrameworkSuffix).$(RuntimeIdentifier)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ runtimes/$(RuntimeIdentifier)/native
+
+
+
+ tools
+
+
+
+ runtimes/$(RuntimeIdentifier)/native/cross
+
+
+ runtimes/$(RuntimeIdentifier)/native/include/%(RecursiveDir)
+
+
+
+ runtimes/$(CoreCLRCrossTargetComponentDirName)_$(TargetArchitecture)/native
+
+
+ tools/$(CoreCLRCrossTargetComponentDirName)_$(TargetArchitecture)
+
+
+ tools/$(CoreCLRCrossTargetComponentDirName)_$(TargetArchitecture)
+
+
+ tools/$(CoreCLRCrossTargetComponentDirName)_$(TargetArchitecture)
+
+
+
+
+
+
+
+
+ runtimes/$(RuntimeIdentifier)/native/%(LibrariesRuntimeFiles.NativeSubDirectory)%(RecursiveDir)
+
+
+
+
+
+ <_diaSymArch Condition="'$(_hostArch)' != ''">$(_hostArch)
+ <_diaSymReaderPath>$(PkgMicrosoft_DiaSymReader_Native)/runtimes/win/native/Microsoft.DiaSymReader.Native.$(_diaSymArch).dll
+ <_diaSymReaderPathIfExists Condition="Exists('$(_diaSymReaderPath)')">$(_diaSymReaderPath)
+
+
+
+
+
+
+
+
+
+
+
+ <_crossTargetJit Include="@(CoreCLRCrossTargetFiles)" Condition="'%(FileName)' == '$(LibPrefix)clrjit' and '%(Extension)' == '$(LibSuffix)'" />
+ <_clrjit Include="@(RuntimeFiles)" Condition="'%(FileName)' == '$(LibPrefix)clrjit' and '%(Extension)' == '$(LibSuffix)'" />
+ <_crossTargetCrossgen Include="@(CoreCLRCrossTargetFiles)" Condition="'%(FileName)' == 'crossgen' and '%(Extension)' == '$(ExeSuffix)'" />
+ <_crossgen Include="@(RuntimeFiles)" Condition="'%(FileName)' == 'crossgen' and '%(Extension)' == '$(ExeSuffix)'" />
+
+
+
+
+
+
+
+
+
diff --git a/src/installer/pkg/projects/netcoreapp/pkg/PackageOverrides.txt b/src/installer/pkg/sfx/Microsoft.NETCore.App/PackageOverrides.txt
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/pkg/PackageOverrides.txt
rename to src/installer/pkg/sfx/Microsoft.NETCore.App/PackageOverrides.txt
diff --git a/src/installer/pkg/sfx/bundle/Microsoft.NETCore.App.Bundle.bundleproj b/src/installer/pkg/sfx/bundle/Microsoft.NETCore.App.Bundle.bundleproj
new file mode 100644
index 000000000000..9d3caba9e8ae
--- /dev/null
+++ b/src/installer/pkg/sfx/bundle/Microsoft.NETCore.App.Bundle.bundleproj
@@ -0,0 +1,39 @@
+
+
+
+
+ true
+ .NET Core Shared Framework Bundle Installer
+ $(MSBuildProjectDirectory)
+ dotnet-runtime
+ dotnet-runtime
+ win-x86;win-x64;win-arm64;osx-x64
+ Runtime
+ $(MSBuildProjectDirectory)/shared-framework-distribution-template.xml
+ com.microsoft.dotnet.Microsoft.NETCore.App.$(ProductVersion).osx.x64
+ osx_resources
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/bundle.thm b/src/installer/pkg/sfx/bundle/bundle.thm
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/bundle.thm
rename to src/installer/pkg/sfx/bundle/bundle.thm
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/bundle.wxl b/src/installer/pkg/sfx/bundle/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/bundle.wxl
rename to src/installer/pkg/sfx/bundle/bundle.wxl
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/cs.lproj/conclusion.html b/src/installer/pkg/sfx/bundle/osx_resources/cs.lproj/conclusion.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/cs.lproj/conclusion.html
rename to src/installer/pkg/sfx/bundle/osx_resources/cs.lproj/conclusion.html
diff --git a/src/installer/pkg/packaging/osx/resources/cs.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/cs.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/cs.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/cs.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/cs.lproj/welcome.html b/src/installer/pkg/sfx/bundle/osx_resources/cs.lproj/welcome.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/cs.lproj/welcome.html
rename to src/installer/pkg/sfx/bundle/osx_resources/cs.lproj/welcome.html
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/de.lproj/conclusion.html b/src/installer/pkg/sfx/bundle/osx_resources/de.lproj/conclusion.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/de.lproj/conclusion.html
rename to src/installer/pkg/sfx/bundle/osx_resources/de.lproj/conclusion.html
diff --git a/src/installer/pkg/packaging/osx/resources/de.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/de.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/de.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/de.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/de.lproj/welcome.html b/src/installer/pkg/sfx/bundle/osx_resources/de.lproj/welcome.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/de.lproj/welcome.html
rename to src/installer/pkg/sfx/bundle/osx_resources/de.lproj/welcome.html
diff --git a/src/installer/pkg/packaging/osx/hostfxr/resources/dotnetbackground.png b/src/installer/pkg/sfx/bundle/osx_resources/dotnetbackground.png
similarity index 100%
rename from src/installer/pkg/packaging/osx/hostfxr/resources/dotnetbackground.png
rename to src/installer/pkg/sfx/bundle/osx_resources/dotnetbackground.png
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/en.lproj/conclusion.html b/src/installer/pkg/sfx/bundle/osx_resources/en.lproj/conclusion.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/en.lproj/conclusion.html
rename to src/installer/pkg/sfx/bundle/osx_resources/en.lproj/conclusion.html
diff --git a/src/installer/pkg/packaging/osx/resources/en.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/en.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/en.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/en.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/en.lproj/welcome.html b/src/installer/pkg/sfx/bundle/osx_resources/en.lproj/welcome.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/en.lproj/welcome.html
rename to src/installer/pkg/sfx/bundle/osx_resources/en.lproj/welcome.html
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/es.lproj/conclusion.html b/src/installer/pkg/sfx/bundle/osx_resources/es.lproj/conclusion.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/es.lproj/conclusion.html
rename to src/installer/pkg/sfx/bundle/osx_resources/es.lproj/conclusion.html
diff --git a/src/installer/pkg/packaging/osx/resources/es.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/es.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/es.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/es.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/es.lproj/welcome.html b/src/installer/pkg/sfx/bundle/osx_resources/es.lproj/welcome.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/es.lproj/welcome.html
rename to src/installer/pkg/sfx/bundle/osx_resources/es.lproj/welcome.html
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/fr.lproj/conclusion.html b/src/installer/pkg/sfx/bundle/osx_resources/fr.lproj/conclusion.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/fr.lproj/conclusion.html
rename to src/installer/pkg/sfx/bundle/osx_resources/fr.lproj/conclusion.html
diff --git a/src/installer/pkg/packaging/osx/resources/fr.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/fr.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/fr.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/fr.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/fr.lproj/welcome.html b/src/installer/pkg/sfx/bundle/osx_resources/fr.lproj/welcome.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/fr.lproj/welcome.html
rename to src/installer/pkg/sfx/bundle/osx_resources/fr.lproj/welcome.html
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/it.lproj/conclusion.html b/src/installer/pkg/sfx/bundle/osx_resources/it.lproj/conclusion.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/it.lproj/conclusion.html
rename to src/installer/pkg/sfx/bundle/osx_resources/it.lproj/conclusion.html
diff --git a/src/installer/pkg/packaging/osx/resources/it.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/it.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/it.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/it.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/it.lproj/welcome.html b/src/installer/pkg/sfx/bundle/osx_resources/it.lproj/welcome.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/it.lproj/welcome.html
rename to src/installer/pkg/sfx/bundle/osx_resources/it.lproj/welcome.html
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/ja.lproj/conclusion.html b/src/installer/pkg/sfx/bundle/osx_resources/ja.lproj/conclusion.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/ja.lproj/conclusion.html
rename to src/installer/pkg/sfx/bundle/osx_resources/ja.lproj/conclusion.html
diff --git a/src/installer/pkg/packaging/osx/resources/ja.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/ja.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/ja.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/ja.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/ja.lproj/welcome.html b/src/installer/pkg/sfx/bundle/osx_resources/ja.lproj/welcome.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/ja.lproj/welcome.html
rename to src/installer/pkg/sfx/bundle/osx_resources/ja.lproj/welcome.html
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/ko.lproj/conclusion.html b/src/installer/pkg/sfx/bundle/osx_resources/ko.lproj/conclusion.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/ko.lproj/conclusion.html
rename to src/installer/pkg/sfx/bundle/osx_resources/ko.lproj/conclusion.html
diff --git a/src/installer/pkg/packaging/osx/resources/ko.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/ko.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/ko.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/ko.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/ko.lproj/welcome.html b/src/installer/pkg/sfx/bundle/osx_resources/ko.lproj/welcome.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/ko.lproj/welcome.html
rename to src/installer/pkg/sfx/bundle/osx_resources/ko.lproj/welcome.html
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/pl.lproj/conclusion.html b/src/installer/pkg/sfx/bundle/osx_resources/pl.lproj/conclusion.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/pl.lproj/conclusion.html
rename to src/installer/pkg/sfx/bundle/osx_resources/pl.lproj/conclusion.html
diff --git a/src/installer/pkg/packaging/osx/resources/pl.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/pl.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/pl.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/pl.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/pl.lproj/welcome.html b/src/installer/pkg/sfx/bundle/osx_resources/pl.lproj/welcome.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/pl.lproj/welcome.html
rename to src/installer/pkg/sfx/bundle/osx_resources/pl.lproj/welcome.html
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/pt-br.lproj/conclusion.html b/src/installer/pkg/sfx/bundle/osx_resources/pt-br.lproj/conclusion.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/pt-br.lproj/conclusion.html
rename to src/installer/pkg/sfx/bundle/osx_resources/pt-br.lproj/conclusion.html
diff --git a/src/installer/pkg/packaging/osx/resources/pt-br.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/pt-br.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/pt-br.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/pt-br.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/sharedframework/resources/pt-br.lproj/welcome.html b/src/installer/pkg/sfx/bundle/osx_resources/pt-br.lproj/welcome.html
similarity index 100%
rename from src/installer/pkg/packaging/osx/sharedframework/resources/pt-br.lproj/welcome.html
rename to src/installer/pkg/sfx/bundle/osx_resources/pt-br.lproj/welcome.html
diff --git a/src/installer/pkg/packaging/osx/resources/ru.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/ru.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/ru.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/ru.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/resources/tr.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/tr.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/tr.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/tr.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/resources/zh-hans.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/zh-hans.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/zh-hans.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/zh-hans.lproj/eula.rtf
diff --git a/src/installer/pkg/packaging/osx/resources/zh-hant.lproj/eula.rtf b/src/installer/pkg/sfx/bundle/osx_resources/zh-hant.lproj/eula.rtf
similarity index 100%
rename from src/installer/pkg/packaging/osx/resources/zh-hant.lproj/eula.rtf
rename to src/installer/pkg/sfx/bundle/osx_resources/zh-hant.lproj/eula.rtf
diff --git a/src/installer/pkg/sfx/bundle/shared-framework-distribution-template.xml b/src/installer/pkg/sfx/bundle/shared-framework-distribution-template.xml
new file mode 100644
index 000000000000..2a1f0b8c7242
--- /dev/null
+++ b/src/installer/pkg/sfx/bundle/shared-framework-distribution-template.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1028/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1028/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1028/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1028/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1029/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1029/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1029/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1029/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1031/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1031/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1031/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1031/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1033/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1033/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1033/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1033/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1036/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1036/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1036/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1036/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1040/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1040/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1040/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1040/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1041/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1041/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1041/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1041/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1042/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1042/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1042/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1042/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1045/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1045/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1045/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1045/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1046/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1046/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1046/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1046/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1049/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1049/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1049/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1049/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/1055/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/1055/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/1055/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/1055/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/2052/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/2052/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/2052/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/2052/bundle.wxl
diff --git a/src/installer/pkg/projects/netcoreapp/sfx/theme/3082/bundle.wxl b/src/installer/pkg/sfx/bundle/theme/3082/bundle.wxl
similarity index 100%
rename from src/installer/pkg/projects/netcoreapp/sfx/theme/3082/bundle.wxl
rename to src/installer/pkg/sfx/bundle/theme/3082/bundle.wxl
diff --git a/src/installer/pkg/sfx/installers.proj b/src/installer/pkg/sfx/installers.proj
new file mode 100644
index 000000000000..5e7d5908d7a5
--- /dev/null
+++ b/src/installer/pkg/sfx/installers.proj
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/installer/pkg/sfx/installers/Directory.Build.targets b/src/installer/pkg/sfx/installers/Directory.Build.targets
new file mode 100644
index 000000000000..d108af94975d
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/Directory.Build.targets
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/installer/pkg/sfx/installers/dotnet-host.proj b/src/installer/pkg/sfx/installers/dotnet-host.proj
new file mode 100644
index 000000000000..29f7a3d6e3e4
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/dotnet-host.proj
@@ -0,0 +1,64 @@
+
+
+ true
+ true
+ dotnet-host
+ dotnet-host-internal
+ Host
+ NetCore.SharedHost
+ true
+ true
+ sharedhost
+ Dotnet_CLI_SharedHost
+ HostSrc
+ false
+ true
+ sharedhost
+ false
+ osx_scripts/host
+ The .NET Shared Host.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/installer/pkg/sfx/installers/dotnet-hostfxr.proj b/src/installer/pkg/sfx/installers/dotnet-hostfxr.proj
new file mode 100644
index 000000000000..9b06423171e2
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/dotnet-hostfxr.proj
@@ -0,0 +1,45 @@
+
+
+ true
+ true
+ dotnet-hostfxr-internal
+ dotnet-hostfxr
+ dotnet-hostfxr-internal
+ Host FX Resolver
+ ToolPack
+ NetCore.HostFXR
+ true
+ hostfxr
+ Dotnet_CLI_HostFxr
+ HostFxrSrc
+ true
+ hostfxr
+ osx_scripts/hostfxr
+ The .NET HostFxr
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/installer/pkg/sfx/installers/dotnet-runtime-deps/Directory.Build.props b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/Directory.Build.props
new file mode 100644
index 000000000000..a6ee5fb0c073
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/Directory.Build.props
@@ -0,0 +1,9 @@
+
+
+
+
+ Runtime Dependencies
+ dotnet-runtime-deps
+ linux-$(TargetArchitecture)
+
+
\ No newline at end of file
diff --git a/src/installer/pkg/sfx/installers/dotnet-runtime-deps/Directory.Build.targets b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/Directory.Build.targets
new file mode 100644
index 000000000000..946b64573765
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/Directory.Build.targets
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-centos.7.proj b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-centos.7.proj
new file mode 100644
index 000000000000..687887134c41
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-centos.7.proj
@@ -0,0 +1,10 @@
+
+
+ false
+ centos.7
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-debian.proj b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-debian.proj
new file mode 100644
index 000000000000..cbdc40bdb2f5
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-debian.proj
@@ -0,0 +1,14 @@
+
+
+ false
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-fedora.27.proj b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-fedora.27.proj
new file mode 100644
index 000000000000..044f9326b4b7
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-fedora.27.proj
@@ -0,0 +1,10 @@
+
+
+ false
+ fedora.27
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-opensuse.42.proj b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-opensuse.42.proj
new file mode 100644
index 000000000000..6453d117728d
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-opensuse.42.proj
@@ -0,0 +1,10 @@
+
+
+ false
+ opensuse.42
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-oraclelinux.7.proj b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-oraclelinux.7.proj
new file mode 100644
index 000000000000..76afbe1850cd
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-oraclelinux.7.proj
@@ -0,0 +1,10 @@
+
+
+ false
+ oraclelinux.7
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-rhel.7.proj b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-rhel.7.proj
new file mode 100644
index 000000000000..258b3696d7b6
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-rhel.7.proj
@@ -0,0 +1,10 @@
+
+
+ false
+ rhel.7
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-sles.12.proj b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-sles.12.proj
new file mode 100644
index 000000000000..912692f5d7f2
--- /dev/null
+++ b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-sles.12.proj
@@ -0,0 +1,10 @@
+
+
+ false
+ sles.12
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/installer/pkg/projects/Microsoft.NETCore.DotNetHost/host.wxs b/src/installer/pkg/sfx/installers/host.wxs
similarity index 100%
rename from src/installer/pkg/projects/Microsoft.NETCore.DotNetHost/host.wxs
rename to src/installer/pkg/sfx/installers/host.wxs
diff --git a/src/installer/pkg/packaging/osx/sharedhost/scripts/postinstall b/src/installer/pkg/sfx/installers/osx_scripts/host/postinstall
old mode 100755
new mode 100644
similarity index 87%
rename from src/installer/pkg/packaging/osx/sharedhost/scripts/postinstall
rename to src/installer/pkg/sfx/installers/osx_scripts/host/postinstall
index 531cb93fd382..33d9db28f2fb
--- a/src/installer/pkg/packaging/osx/sharedhost/scripts/postinstall
+++ b/src/installer/pkg/sfx/installers/osx_scripts/host/postinstall
@@ -2,6 +2,7 @@
#
# Licensed to the .NET Foundation under one or more agreements.
# The .NET Foundation licenses this file to you under the MIT license.
+# See the LICENSE file in the project root for more information.
#
PACKAGE=$1
diff --git a/src/installer/pkg/packaging/osx/hostfxr/scripts/postinstall b/src/installer/pkg/sfx/installers/osx_scripts/hostfxr/postinstall
old mode 100755
new mode 100644
similarity index 85%
rename from src/installer/pkg/packaging/osx/hostfxr/scripts/postinstall
rename to src/installer/pkg/sfx/installers/osx_scripts/hostfxr/postinstall
index 2d0ceb827869..b8c5e60b92d9
--- a/src/installer/pkg/packaging/osx/hostfxr/scripts/postinstall
+++ b/src/installer/pkg/sfx/installers/osx_scripts/hostfxr/postinstall
@@ -2,6 +2,7 @@
#
# Licensed to the .NET Foundation under one or more agreements.
# The .NET Foundation licenses this file to you under the MIT license.
+# See the LICENSE file in the project root for more information.
#
PACKAGE=$1
diff --git a/src/installer/publish/Directory.Build.targets b/src/installer/publish/Directory.Build.targets
index 7c618f52986c..24576c885bc1 100644
--- a/src/installer/publish/Directory.Build.targets
+++ b/src/installer/publish/Directory.Build.targets
@@ -15,10 +15,16 @@
$(DownloadDirectory)IntermediateUnsignedArtifacts\Windows_x64\Shipping\a.nupkg
-->
+
+
+
+
@@ -26,7 +32,7 @@
+ Exclude="@(DownloadedSymbolNupkgFile);@(DownloadedNupkgFile);@(DownloadedWixPdbFile)" />
+
+
+
+
+
+
+
+ true
+
+
@@ -46,81 +56,19 @@
-
-
-
-
-
-
+
- $(PackagesUrl)Manifest.xml$(ArtifactsLogDir)AssetManifest/$(AssetManifestFilename)$(ArtifactsObjDir)TempWorkingDir\$([System.Guid]::NewGuid())\
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(PackagesUrl)
- Manifest_Installers.xml
- $(ArtifactsLogDir)AssetManifest/$(AssetManifestFilename)
-
-
- $(ArtifactsObjDir)TempWorkingDir\$([System.Guid]::NewGuid())\
-
+
$(ProductionVersion)$(ProductVersion)
-
@@ -129,29 +77,43 @@
Lines="$(ProductVersionTxtContents)"
Overwrite="true"
Encoding="ASCII" />
-
+
+
+
+
+
$(InstallersRelativePath)%(Filename)%(Extension)
+ true$(InstallersRelativePath)%(Filename)%(Extension)Checksum
+ true$(InstallersRelativePath)productVersion.txt
+ true
@@ -182,10 +143,8 @@
+ PreparePublishToAzureBlobFeed">
diff --git a/src/installer/signing/Directory.Build.props b/src/installer/signing/Directory.Build.props
deleted file mode 100644
index 7c45d0300be1..000000000000
--- a/src/installer/signing/Directory.Build.props
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
- $(NetCoreAppCurrent)
-
-
- true
-
-
diff --git a/src/installer/signing/Directory.Build.targets b/src/installer/signing/Directory.Build.targets
deleted file mode 100644
index 7d95c6c7b7f9..000000000000
--- a/src/installer/signing/Directory.Build.targets
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- $([System.DateTime]::UtcNow)
-
-
-
-
-
-
- $([System.DateTime]::UtcNow.Subtract($([System.DateTime]::Parse('$(SignStartTime)'))))
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/signing/SignBinaries.proj b/src/installer/signing/SignBinaries.proj
deleted file mode 100644
index 8b1f6811f442..000000000000
--- a/src/installer/signing/SignBinaries.proj
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/installer/signing/SignBurnBundleFiles.proj b/src/installer/signing/SignBurnBundleFiles.proj
deleted file mode 100644
index 55c7a8c5810d..000000000000
--- a/src/installer/signing/SignBurnBundleFiles.proj
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/installer/signing/SignBurnEngineFiles.proj b/src/installer/signing/SignBurnEngineFiles.proj
deleted file mode 100644
index 382eb202318f..000000000000
--- a/src/installer/signing/SignBurnEngineFiles.proj
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/signing/SignFinalPackages.proj b/src/installer/signing/SignFinalPackages.proj
deleted file mode 100644
index 35e3d8428b7c..000000000000
--- a/src/installer/signing/SignFinalPackages.proj
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/src/installer/signing/SignMsiFiles.proj b/src/installer/signing/SignMsiFiles.proj
deleted file mode 100644
index 55dd18dca673..000000000000
--- a/src/installer/signing/SignMsiFiles.proj
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/signing/SignR2RBinaries.proj b/src/installer/signing/SignR2RBinaries.proj
deleted file mode 100644
index f2f60ef725fa..000000000000
--- a/src/installer/signing/SignR2RBinaries.proj
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/installer/pkg/packaging/snaps/arm/dotnet-sdk-3.1/snap/snapcraft.yaml b/src/installer/snaps/arm/dotnet-sdk-3.1/snap/snapcraft.yaml
similarity index 100%
rename from src/installer/pkg/packaging/snaps/arm/dotnet-sdk-3.1/snap/snapcraft.yaml
rename to src/installer/snaps/arm/dotnet-sdk-3.1/snap/snapcraft.yaml
diff --git a/src/installer/pkg/packaging/snaps/arm/dotnet-sdk-5.0/snap/snapcraft.yaml b/src/installer/snaps/arm/dotnet-sdk-5.0/snap/snapcraft.yaml
similarity index 100%
rename from src/installer/pkg/packaging/snaps/arm/dotnet-sdk-5.0/snap/snapcraft.yaml
rename to src/installer/snaps/arm/dotnet-sdk-5.0/snap/snapcraft.yaml
diff --git a/src/installer/pkg/packaging/snaps/arm64/dotnet-sdk-5.0/snap/snapcraft.yaml b/src/installer/snaps/arm64/dotnet-sdk-5.0/snap/snapcraft.yaml
similarity index 100%
rename from src/installer/pkg/packaging/snaps/arm64/dotnet-sdk-5.0/snap/snapcraft.yaml
rename to src/installer/snaps/arm64/dotnet-sdk-5.0/snap/snapcraft.yaml
diff --git a/src/installer/pkg/packaging/snaps/dotnet-runtime-2.1/snap/snapcraft.yaml b/src/installer/snaps/dotnet-runtime-2.1/snap/snapcraft.yaml
similarity index 100%
rename from src/installer/pkg/packaging/snaps/dotnet-runtime-2.1/snap/snapcraft.yaml
rename to src/installer/snaps/dotnet-runtime-2.1/snap/snapcraft.yaml
diff --git a/src/installer/pkg/packaging/snaps/dotnet-runtime-3.1/snap/snapcraft.yaml b/src/installer/snaps/dotnet-runtime-3.1/snap/snapcraft.yaml
similarity index 100%
rename from src/installer/pkg/packaging/snaps/dotnet-runtime-3.1/snap/snapcraft.yaml
rename to src/installer/snaps/dotnet-runtime-3.1/snap/snapcraft.yaml
diff --git a/src/installer/pkg/packaging/snaps/dotnet-runtime-5.0/snap/snapcraft.yaml b/src/installer/snaps/dotnet-runtime-5.0/snap/snapcraft.yaml
similarity index 100%
rename from src/installer/pkg/packaging/snaps/dotnet-runtime-5.0/snap/snapcraft.yaml
rename to src/installer/snaps/dotnet-runtime-5.0/snap/snapcraft.yaml
diff --git a/src/installer/pkg/packaging/snaps/dotnet-sdk-2.1/snap/snapcraft.yaml b/src/installer/snaps/dotnet-sdk-2.1/snap/snapcraft.yaml
similarity index 100%
rename from src/installer/pkg/packaging/snaps/dotnet-sdk-2.1/snap/snapcraft.yaml
rename to src/installer/snaps/dotnet-sdk-2.1/snap/snapcraft.yaml
diff --git a/src/installer/pkg/packaging/snaps/dotnet-sdk-3.1/snap/snapcraft.yaml b/src/installer/snaps/dotnet-sdk-3.1/snap/snapcraft.yaml
similarity index 100%
rename from src/installer/pkg/packaging/snaps/dotnet-sdk-3.1/snap/snapcraft.yaml
rename to src/installer/snaps/dotnet-sdk-3.1/snap/snapcraft.yaml
diff --git a/src/installer/pkg/packaging/snaps/dotnet-sdk-5.0/snap/snapcraft.yaml b/src/installer/snaps/dotnet-sdk-5.0/snap/snapcraft.yaml
similarity index 100%
rename from src/installer/pkg/packaging/snaps/dotnet-sdk-5.0/snap/snapcraft.yaml
rename to src/installer/snaps/dotnet-sdk-5.0/snap/snapcraft.yaml
diff --git a/src/installer/pkg/packaging/snaps/dotnet-sdk/dotnet-runtime b/src/installer/snaps/dotnet-sdk/dotnet-runtime
old mode 100755
new mode 100644
similarity index 100%
rename from src/installer/pkg/packaging/snaps/dotnet-sdk/dotnet-runtime
rename to src/installer/snaps/dotnet-sdk/dotnet-runtime
diff --git a/src/installer/pkg/packaging/snaps/dotnet-sdk/snap/snapcraft.yaml b/src/installer/snaps/dotnet-sdk/snap/snapcraft.yaml
similarity index 100%
rename from src/installer/pkg/packaging/snaps/dotnet-sdk/snap/snapcraft.yaml
rename to src/installer/snaps/dotnet-sdk/snap/snapcraft.yaml
diff --git a/src/installer/tests/Assets/TestProjects/BundleProbeTester/Program.cs b/src/installer/tests/Assets/TestProjects/BundleProbeTester/Program.cs
index 187e5d4c6fce..ac963679797c 100644
--- a/src/installer/tests/Assets/TestProjects/BundleProbeTester/Program.cs
+++ b/src/installer/tests/Assets/TestProjects/BundleProbeTester/Program.cs
@@ -13,7 +13,7 @@ public static class Program
// The bundle-probe callback is only called from native code in the product
// Therefore the type on this test is adjusted to circumvent the failure.
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- public delegate byte BundleProbeDelegate([MarshalAs(UnmanagedType.LPWStr)] string path, IntPtr size, IntPtr offset);
+ public delegate byte BundleProbeDelegate([MarshalAs(UnmanagedType.LPUTF8Str)] string path, IntPtr size, IntPtr offset);
unsafe static bool Probe(BundleProbeDelegate bundleProbe, string path, bool isExpected)
{
diff --git a/src/installer/tests/Assets/TestProjects/Directory.Build.targets b/src/installer/tests/Assets/TestProjects/Directory.Build.targets
index 71982e083164..f6350ac71558 100644
--- a/src/installer/tests/Assets/TestProjects/Directory.Build.targets
+++ b/src/installer/tests/Assets/TestProjects/Directory.Build.targets
@@ -2,16 +2,16 @@
-
-
-
-
+
+
+
+
diff --git a/src/installer/tests/Directory.Build.targets b/src/installer/tests/Directory.Build.targets
index 7d93a0939983..7691ad32cee7 100644
--- a/src/installer/tests/Directory.Build.targets
+++ b/src/installer/tests/Directory.Build.targets
@@ -13,13 +13,9 @@
Set up the shared framework copy this set of tests should use. There's no known reason to have
one per test project, but RepoDirectoriesProvider may need some tweaking to share.
-->
-
-
-
-
-
+ $([System.IO.Path]::DirectorySeparatorChar)
- $([System.String]::Copy('$(TestsOutputDir)').Replace('/', '$(DirectorySeparatorChar)'))
- $([System.String]::Copy('$(SystemPathTestsOutputDir)').Replace('\', '$(DirectorySeparatorChar)'))
+ $(TestsOutputDir.Replace('/', '$(DirectorySeparatorChar)'))
+ $(SystemPathTestsOutputDir.Replace('\', '$(DirectorySeparatorChar)'))$(NetCoreRoot)
@@ -63,7 +59,7 @@
the same as the package's version. Fetch this directly from the project to avoid guesswork.
-->
@@ -102,27 +98,15 @@
-->
-
-
-
-
-
-
-
- $(HostRuntimeIdentifier)
+ $(PackageRID)$(MSBuildProjectName)$(ArtifactsDir)tests/$(Configuration)/
diff --git a/src/installer/tests/HostActivation.Tests/NativeHosting/Nethost.cs b/src/installer/tests/HostActivation.Tests/NativeHosting/Nethost.cs
index abcddd239481..40a8473c483f 100644
--- a/src/installer/tests/HostActivation.Tests/NativeHosting/Nethost.cs
+++ b/src/installer/tests/HostActivation.Tests/NativeHosting/Nethost.cs
@@ -105,7 +105,7 @@ public void GetHostFxrPath_DotNetRootParameter(bool explicitLoad, bool useAssemb
[InlineData(false, true, false, true)]
public void GetHostFxrPath_GlobalInstallation(bool explicitLoad, bool useAssemblyPath, bool useRegisteredLocation, bool isValid)
{
- // Overide the registry key for self-registered global installs.
+ // Override the registry key for self-registered global installs.
// If using the registered location, set the install location value to the valid/invalid root.
// If not using the registered location, do not set the value. When the value does not exist,
// the product falls back to the default install location.
diff --git a/src/installer/tests/HostActivation.Tests/RuntimeConfig.cs b/src/installer/tests/HostActivation.Tests/RuntimeConfig.cs
index 6e810dc5d7cd..eaa95cb2dcce 100644
--- a/src/installer/tests/HostActivation.Tests/RuntimeConfig.cs
+++ b/src/installer/tests/HostActivation.Tests/RuntimeConfig.cs
@@ -276,7 +276,9 @@ public void Save()
JObject configProperties = new JObject();
foreach (var property in _properties)
{
- configProperties.Add(property.Item1, property.Item2);
+ var tokenValue = (property.Item2 == "false" || property.Item2 == "true") ?
+ JToken.Parse(property.Item2) : property.Item2;
+ configProperties.Add(property.Item1, tokenValue);
}
runtimeOptions.Add("configProperties", configProperties);
diff --git a/src/installer/tests/HostActivation.Tests/SharedFxLookup.cs b/src/installer/tests/HostActivation.Tests/SharedFxLookup.cs
index a33195e54174..fd63e339ec05 100644
--- a/src/installer/tests/HostActivation.Tests/SharedFxLookup.cs
+++ b/src/installer/tests/HostActivation.Tests/SharedFxLookup.cs
@@ -156,48 +156,5 @@ public void Multiple_SharedFxLookup_Uber_Wins_Over_NetCoreApp_On_PatchRollForwar
.And.HaveStdErrContaining(Path.Combine("7777.0.0", "System.Collections.Immutable.dll"))
.And.NotHaveStdErrContaining(Path.Combine("9999.1.0", "System.Collections.Immutable.dll"));
}
-
- [Fact]
- public void CoreClrLookup_WithNoDirectorySeparatorInDeps()
- {
- var fixture = SharedFxLookupPortableAppFixture
- .Copy();
-
- var dotnet = fixture.BuiltDotnet;
- var appDll = fixture.TestProject.AppDll;
-
- string runtimeConfig = Path.Combine(fixture.TestProject.OutputDirectory, "SharedFxLookupPortableApp.runtimeconfig.json");
- SharedFramework.SetRuntimeConfigJson(runtimeConfig, "9999.0.0", null);
-
- // Add versions in the exe folders
- SharedFramework.AddAvailableSharedFxVersions(_builtSharedFxDir, _exeSharedFxBaseDir, "9999.0.0");
- string sharedFxPath = Path.Combine(_exeSharedFxBaseDir, "9999.0.0");
- string sharedFxDepsJsonPath = Path.Combine(sharedFxPath, "Microsoft.NETCore.App.deps.json");
-
- // Modify the .deps.json for Microsoft.NETCore.App FX
- JObject root = JObject.Parse(File.ReadAllText(sharedFxDepsJsonPath));
- IEnumerable netCoreAppNativeAssets = root["targets"]
- .Children().Where(p => p.Name.Contains("/"))
- .Children().Children().OfType().Where(p => p.Name.Contains("runtime") && p.Name.Contains("Microsoft.NETCore.App"))
- .Values()["native"].Children().OfType();
-
- // Change the coreclr.dll asset to specify only "coreclr.dll" as the relative path (no directories).
- string coreClrLibraryName = RuntimeInformationExtensions.GetSharedLibraryFileNameForCurrentPlatform("coreclr");
- JProperty coreClrProperty = netCoreAppNativeAssets.First(p => p.Name.Contains(coreClrLibraryName));
- JProperty newCoreClrProperty = new JProperty(coreClrProperty.Name.Substring(coreClrProperty.Name.LastIndexOf('/') + 1), coreClrProperty.Value);
- coreClrProperty.Parent.Add(newCoreClrProperty);
- coreClrProperty.Remove();
-
- File.WriteAllText(sharedFxDepsJsonPath, root.ToString());
-
- dotnet.Exec(appDll)
- .WorkingDirectory(_currentWorkingDir)
- .EnvironmentVariable("COREHOST_TRACE", "1")
- .CaptureStdOut()
- .CaptureStdErr()
- .Execute()
- .Should().Pass()
- .And.HaveStdErrContaining($"CoreCLR path = '{Path.Combine(sharedFxPath, coreClrLibraryName)}'");
- }
}
}
diff --git a/src/installer/tests/HostActivation.Tests/StartupHooks.cs b/src/installer/tests/HostActivation.Tests/StartupHooks.cs
index 12d9e23fc84a..3acb8b665650 100644
--- a/src/installer/tests/HostActivation.Tests/StartupHooks.cs
+++ b/src/installer/tests/HostActivation.Tests/StartupHooks.cs
@@ -13,6 +13,7 @@ public class StartupHooks : IClassFixture
{
private SharedTestState sharedTestState;
private string startupHookVarName = "DOTNET_STARTUP_HOOKS";
+ private string startupHookSupport = "System.StartupHookProvider.IsSupported";
public StartupHooks(StartupHooks.SharedTestState fixture)
{
@@ -639,6 +640,32 @@ public void Muxer_activation_of_StartupHook_With_Assembly_Resolver()
.And.ExitWith(2);
}
+ [Fact]
+ public void Muxer_activation_of_StartupHook_With_IsSupported_False()
+ {
+ var fixture = sharedTestState.PortableAppFixture.Copy();
+ var dotnet = fixture.BuiltDotnet;
+ var appDll = fixture.TestProject.AppDll;
+
+ var startupHookFixture = sharedTestState.StartupHookFixture.Copy();
+ var startupHookDll = startupHookFixture.TestProject.AppDll;
+
+ RuntimeConfig.FromFile(fixture.TestProject.RuntimeConfigJson)
+ .WithProperty(startupHookSupport, "false")
+ .Save();
+
+ // Startup hooks are not executed when the StartupHookSupport
+ // feature switch is set to false.
+ dotnet.Exec(appDll)
+ .EnvironmentVariable(startupHookVarName, startupHookDll)
+ .CaptureStdOut()
+ .CaptureStdErr()
+ .Execute()
+ .Should().Pass()
+ .And.NotHaveStdOutContaining("Hello from startup hook!")
+ .And.HaveStdOutContaining("Hello World");
+ }
+
public class SharedTestState : IDisposable
{
// Entry point projects
diff --git a/src/installer/tests/Microsoft.DotNet.CoreSetup.Packaging.Tests/NuGetArtifactTester.cs b/src/installer/tests/Microsoft.DotNet.CoreSetup.Packaging.Tests/NuGetArtifactTester.cs
index d5d1aa12a8af..4af9206f6b35 100644
--- a/src/installer/tests/Microsoft.DotNet.CoreSetup.Packaging.Tests/NuGetArtifactTester.cs
+++ b/src/installer/tests/Microsoft.DotNet.CoreSetup.Packaging.Tests/NuGetArtifactTester.cs
@@ -34,26 +34,12 @@ public class NuGetArtifactTester : IDisposable
{
id = id ?? project;
- string nuspecPath = Path.Combine(
- dirs.BaseArtifactsFolder,
- "packages",
- dirs.Configuration,
- "specs",
- $"{id}.nuspec");
-
- if (!File.Exists(nuspecPath))
- {
- return null;
- }
-
- PackageIdentity builtIdentity = new NuspecReader(nuspecPath).GetIdentity();
-
string nupkgPath = Path.Combine(
dirs.BaseArtifactsFolder,
"packages",
dirs.Configuration,
"Shipping",
- $"{builtIdentity}.nupkg");
+ $"{id}.{dirs.MicrosoftNETCoreAppVersion}.nupkg");
// If the nuspec exists, the nupkg should exist.
Assert.True(File.Exists(nupkgPath));
@@ -106,10 +92,7 @@ public void IsRuntimePack()
IsRuntimeSpecificPack();
HasOnlyTheseDataFiles(
- "data/RuntimeList.xml",
- "data/PlatformManifest.txt");
-
- HasGoodPlatformManifest();
+ "data/RuntimeList.xml");
ContainsFrameworkList("RuntimeList.xml");
}
diff --git a/src/installer/tests/PrepareTestAssets/PrepareTestAssets.proj b/src/installer/tests/PrepareTestAssets/PrepareTestAssets.proj
index 56ae5cbefef6..a93ca4447a0c 100644
--- a/src/installer/tests/PrepareTestAssets/PrepareTestAssets.proj
+++ b/src/installer/tests/PrepareTestAssets/PrepareTestAssets.proj
@@ -4,12 +4,10 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/installer/tests/TestUtils/RepoDirectoriesProvider.cs b/src/installer/tests/TestUtils/RepoDirectoriesProvider.cs
index 52b10e3e50c8..507773773d30 100644
--- a/src/installer/tests/TestUtils/RepoDirectoriesProvider.cs
+++ b/src/installer/tests/TestUtils/RepoDirectoriesProvider.cs
@@ -78,7 +78,7 @@ public class RepoDirectoriesProvider
Path.Combine(RepoRoot, ".packages");
CorehostPackages = corehostPackages ?? Path.Combine(Artifacts, "corehost");
- BuiltDotnet = builtDotnet ?? Path.Combine(BaseObjFolder, osPlatformConfig, "sharedFrameworkPublish");
+ BuiltDotnet = builtDotnet ?? Path.Combine(GetTestContextVariable("TEST_ARTIFACTS"), "sharedFrameworkPublish");
}
public string GetTestContextVariable(string name)
diff --git a/src/libraries/Common/Common.Tests.sln b/src/libraries/Common/Common.Tests.sln
index c1ef093cd7e7..e0c55f3d47db 100644
--- a/src/libraries/Common/Common.Tests.sln
+++ b/src/libraries/Common/Common.Tests.sln
@@ -1,43 +1,72 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26430.13
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Tests", "tests\Common.Tests.csproj", "{C72FD34C-539A-4447-9796-62A229571199}"
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Tests", "tests\Common.Tests.csproj", "{504E9212-C8FD-4147-8FB2-2A32AE1CD4EA}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{D5C979E6-ED08-4CF6-A5B2-E646481EC3A4}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestUtilities", "tests\TestUtilities\TestUtilities.csproj", "{10215DC2-1255-4B60-B0AC-D8B09BCEA179}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestUtilities", "tests\TestUtilities\TestUtilities.csproj", "{FE339F8D-E1DA-4F5D-9990-B4E270E20F5E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Win32.Registry", "..\Microsoft.Win32.Registry\ref\Microsoft.Win32.Registry.csproj", "{782D1DD8-81D0-400A-98FA-BC9FD9C6EC6A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestUtilities.Unicode", "tests\TestUtilities.Unicode\TestUtilities.Unicode.csproj", "{7AA91133-B0CB-4321-986B-323A7DED12C0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Runtime.CompilerServices.Unsafe", "..\System.Runtime.CompilerServices.Unsafe\ref\System.Runtime.CompilerServices.Unsafe.csproj", "{A0A180C4-8292-45EE-A4B9-0A359BC9C2FC}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Runtime.CompilerServices.Unsafe", "..\System.Runtime.CompilerServices.Unsafe\src\System.Runtime.CompilerServices.Unsafe.ilproj", "{2141FEEA-0422-4319-B88D-DA15CBD77599}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Security.AccessControl", "..\System.Security.AccessControl\ref\System.Security.AccessControl.csproj", "{3AAD1539-D958-4A4D-A563-F5B251BF3935}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Security.Principal.Windows", "..\System.Security.Principal.Windows\ref\System.Security.Principal.Windows.csproj", "{55D75024-D19D-4653-837A-D75DED03479C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{339EB701-0224-42BF-AC1A-2E39D52F9860}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ref", "ref", "{CA3E0F1A-955A-458B-8F2B-C834E1106146}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C1469BA2-6053-4ADB-8856-0C674DD64397}"
EndProject
Global
+ GlobalSection(NestedProjects) = preSolution
+ {504E9212-C8FD-4147-8FB2-2A32AE1CD4EA} = {339EB701-0224-42BF-AC1A-2E39D52F9860}
+ {10215DC2-1255-4B60-B0AC-D8B09BCEA179} = {339EB701-0224-42BF-AC1A-2E39D52F9860}
+ {782D1DD8-81D0-400A-98FA-BC9FD9C6EC6A} = {CA3E0F1A-955A-458B-8F2B-C834E1106146}
+ {A0A180C4-8292-45EE-A4B9-0A359BC9C2FC} = {CA3E0F1A-955A-458B-8F2B-C834E1106146}
+ {3AAD1539-D958-4A4D-A563-F5B251BF3935} = {CA3E0F1A-955A-458B-8F2B-C834E1106146}
+ {55D75024-D19D-4653-837A-D75DED03479C} = {CA3E0F1A-955A-458B-8F2B-C834E1106146}
+ {2141FEEA-0422-4319-B88D-DA15CBD77599} = {C1469BA2-6053-4ADB-8856-0C674DD64397}
+ EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C72FD34C-539A-4447-9796-62A229571199}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C72FD34C-539A-4447-9796-62A229571199}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C72FD34C-539A-4447-9796-62A229571199}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C72FD34C-539A-4447-9796-62A229571199}.Release|Any CPU.Build.0 = Release|Any CPU
- {FE339F8D-E1DA-4F5D-9990-B4E270E20F5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FE339F8D-E1DA-4F5D-9990-B4E270E20F5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FE339F8D-E1DA-4F5D-9990-B4E270E20F5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FE339F8D-E1DA-4F5D-9990-B4E270E20F5E}.Release|Any CPU.Build.0 = Release|Any CPU
- {7AA91133-B0CB-4321-986B-323A7DED12C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7AA91133-B0CB-4321-986B-323A7DED12C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7AA91133-B0CB-4321-986B-323A7DED12C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7AA91133-B0CB-4321-986B-323A7DED12C0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {504E9212-C8FD-4147-8FB2-2A32AE1CD4EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {504E9212-C8FD-4147-8FB2-2A32AE1CD4EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {504E9212-C8FD-4147-8FB2-2A32AE1CD4EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {504E9212-C8FD-4147-8FB2-2A32AE1CD4EA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {10215DC2-1255-4B60-B0AC-D8B09BCEA179}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {10215DC2-1255-4B60-B0AC-D8B09BCEA179}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {10215DC2-1255-4B60-B0AC-D8B09BCEA179}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {10215DC2-1255-4B60-B0AC-D8B09BCEA179}.Release|Any CPU.Build.0 = Release|Any CPU
+ {782D1DD8-81D0-400A-98FA-BC9FD9C6EC6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {782D1DD8-81D0-400A-98FA-BC9FD9C6EC6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {782D1DD8-81D0-400A-98FA-BC9FD9C6EC6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {782D1DD8-81D0-400A-98FA-BC9FD9C6EC6A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A0A180C4-8292-45EE-A4B9-0A359BC9C2FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A0A180C4-8292-45EE-A4B9-0A359BC9C2FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A0A180C4-8292-45EE-A4B9-0A359BC9C2FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A0A180C4-8292-45EE-A4B9-0A359BC9C2FC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2141FEEA-0422-4319-B88D-DA15CBD77599}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2141FEEA-0422-4319-B88D-DA15CBD77599}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2141FEEA-0422-4319-B88D-DA15CBD77599}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2141FEEA-0422-4319-B88D-DA15CBD77599}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3AAD1539-D958-4A4D-A563-F5B251BF3935}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3AAD1539-D958-4A4D-A563-F5B251BF3935}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3AAD1539-D958-4A4D-A563-F5B251BF3935}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3AAD1539-D958-4A4D-A563-F5B251BF3935}.Release|Any CPU.Build.0 = Release|Any CPU
+ {55D75024-D19D-4653-837A-D75DED03479C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {55D75024-D19D-4653-837A-D75DED03479C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {55D75024-D19D-4653-837A-D75DED03479C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {55D75024-D19D-4653-837A-D75DED03479C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {5E554AE7-CBC2-4C34-9FEA-1A6250CE5D3F}
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {FE339F8D-E1DA-4F5D-9990-B4E270E20F5E} = {D5C979E6-ED08-4CF6-A5B2-E646481EC3A4}
- {7AA91133-B0CB-4321-986B-323A7DED12C0} = {D5C979E6-ED08-4CF6-A5B2-E646481EC3A4}
+ SolutionGuid = {4543E82B-8616-438A-B58B-EE47079D6956}
EndGlobalSection
EndGlobal
diff --git a/src/libraries/Common/src/Extensions/ActivatorUtilities/ActivatorUtilities.cs b/src/libraries/Common/src/Extensions/ActivatorUtilities/ActivatorUtilities.cs
index 574fd893feba..1300db816487 100644
--- a/src/libraries/Common/src/Extensions/ActivatorUtilities/ActivatorUtilities.cs
+++ b/src/libraries/Common/src/Extensions/ActivatorUtilities/ActivatorUtilities.cs
@@ -50,7 +50,7 @@ static class ActivatorUtilities
ConstructorMatcher bestMatcher = default;
- if (!instanceType.GetTypeInfo().IsAbstract)
+ if (!instanceType.IsAbstract)
{
foreach (ConstructorInfo? constructor in instanceType.GetConstructors())
{
@@ -323,7 +323,7 @@ private static bool TryCreateParameterMap(ParameterInfo[] constructorParameters,
for (int i = 0; i < argumentTypes.Length; i++)
{
bool foundMatch = false;
- TypeInfo? givenParameter = argumentTypes[i].GetTypeInfo();
+ Type? givenParameter = argumentTypes[i];
for (int j = 0; j < constructorParameters.Length; j++)
{
@@ -333,7 +333,7 @@ private static bool TryCreateParameterMap(ParameterInfo[] constructorParameters,
continue;
}
- if (constructorParameters[j].ParameterType.GetTypeInfo().IsAssignableFrom(givenParameter))
+ if (constructorParameters[j].ParameterType.IsAssignableFrom(givenParameter))
{
foundMatch = true;
parameterMap[j] = i;
@@ -369,13 +369,13 @@ public int Match(object[] givenParameters)
int applyExactLength = 0;
for (int givenIndex = 0; givenIndex != givenParameters.Length; givenIndex++)
{
- TypeInfo? givenType = givenParameters[givenIndex]?.GetType().GetTypeInfo();
+ Type? givenType = givenParameters[givenIndex]?.GetType();
bool givenMatched = false;
for (int applyIndex = applyIndexStart; givenMatched == false && applyIndex != _parameters.Length; ++applyIndex)
{
if (_parameterValues[applyIndex] == null &&
- _parameters[applyIndex].ParameterType.GetTypeInfo().IsAssignableFrom(givenType))
+ _parameters[applyIndex].ParameterType.IsAssignableFrom(givenType))
{
givenMatched = true;
_parameterValues[applyIndex] = givenParameters[givenIndex];
diff --git a/src/libraries/Common/src/Extensions/Logging/NullExternalScopeProvider.cs b/src/libraries/Common/src/Extensions/Logging/NullExternalScopeProvider.cs
index 17936083a934..791ecc87152c 100644
--- a/src/libraries/Common/src/Extensions/Logging/NullExternalScopeProvider.cs
+++ b/src/libraries/Common/src/Extensions/Logging/NullExternalScopeProvider.cs
@@ -1,6 +1,8 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
+#nullable enable
+
using System;
namespace Microsoft.Extensions.Logging
@@ -20,12 +22,12 @@ private NullExternalScopeProvider()
public static IExternalScopeProvider Instance { get; } = new NullExternalScopeProvider();
///
- void IExternalScopeProvider.ForEachScope(Action