Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

First commit for ppc64le support #67378

Closed
wants to merge 709 commits into from

Conversation

Sapana-Khemkar
Copy link
Contributor

This commit supports mono and library cross build for ppc64le platform.

Mono and library code is cross compiled on x86. Artifacts copied to ppc64le machine and verified all library tests. Mono is crashing during few test cases execution on main branch. Same code when tested on v6.0.2 all lib test cases has passed.

We are working on fixing mono crash observed on main branch. Also PAL layer code changes are still in progress.

dotnet-maestro bot and others added 30 commits October 20, 2021 07:00
…/runtime-assets dotnet/arcade (dotnet#60495)

* Update dependencies from https://github.com/dotnet/runtime-assets build 20211015.1

Microsoft.DotNet.CilStrip.Sources , System.ComponentModel.TypeConverter.TestData , System.Drawing.Common.TestData , System.IO.Compression.TestData , System.IO.Packaging.TestData , System.Net.TestData , System.Private.Runtime.UnicodeData , System.Runtime.Numerics.TestData , System.Runtime.TimeZoneData , System.Security.Cryptography.X509Certificates.TestData , System.Windows.Extensions.TestData
 From Version 6.0.0-beta.21514.1 -> To Version 6.0.0-beta.21515.1

* Update dependencies from https://github.com/dotnet/arcade build 20211015.3

Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.ApiCompat , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.GenFacades , Microsoft.DotNet.GenAPI , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SharedFramework.Sdk
 From Version 6.0.0-beta.21514.2 -> To Version 6.0.0-beta.21515.3

* Update dependencies from https://github.com/dotnet/icu build 20211015.1

Microsoft.NETCore.Runtime.ICU.Transport
 From Version 6.0.0-rtm.21513.2 -> To Version 6.0.0-rtm.21515.1

* Update dependencies from https://github.com/dotnet/emsdk build 20211018.1

Microsoft.NET.Workload.Emscripten.Manifest-6.0.100
 From Version 6.0.0-rtm.21514.1 -> To Version 6.0.0

* Update dependencies from https://github.com/dotnet/emsdk build 20211018.2

Microsoft.NET.Workload.Emscripten.Manifest-6.0.100
 From Version 6.0.0-rtm.21514.1 -> To Version 6.0.0

* [wasm] Fix workload install for tests, with 6.0.0

Move to using the generated nuget.config, which has the feeds added by
darc. The target is a duplicate from
`src/installer/tests/PrepareTestAssets/PrepareTestAssets.proj`, and
should be moved to a common location in future.

Thanks to @lewing for the suggestion.

* [wasm] Remove unused bits

* Update dependencies from https://github.com/dotnet/runtime-assets build 20211018.1

Microsoft.DotNet.CilStrip.Sources , System.ComponentModel.TypeConverter.TestData , System.Drawing.Common.TestData , System.IO.Compression.TestData , System.IO.Packaging.TestData , System.Net.TestData , System.Private.Runtime.UnicodeData , System.Runtime.Numerics.TestData , System.Runtime.TimeZoneData , System.Security.Cryptography.X509Certificates.TestData , System.Windows.Extensions.TestData
 From Version 6.0.0-beta.21514.1 -> To Version 6.0.0-beta.21518.1

* Update dependencies from https://github.com/dotnet/arcade build 20211019.3

Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.ApiCompat , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.GenFacades , Microsoft.DotNet.GenAPI , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SharedFramework.Sdk
 From Version 6.0.0-beta.21514.2 -> To Version 6.0.0-beta.21519.3

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Ankit Jain <[email protected]>
Co-authored-by: Matt Mitchell <[email protected]>
…arget (dotnet#60695)

* Tweak workload build to use _GenerateMsiVersionString target

Replaces GenerateVersions that wasn't quite accurate enough for what we need

* Pulled in arcade target that will be removed at a later date

* More tweaks

* Forget dependsontargets

Co-authored-by: Steve Pfister <[email protected]>
…t#60684)

* Update dependencies from https://github.com/dotnet/icu build 20211019.1

Microsoft.NETCore.Runtime.ICU.Transport
 From Version 6.0.0-rtm.21515.1 -> To Version 6.0.0-rtm.21519.1

* Update dependencies from https://github.com/dotnet/emsdk build 20211020.1

Microsoft.NET.Workload.Emscripten.Manifest-6.0.100
 From Version 6.0.0 -> To Version 6.0.0

* Update dependencies from https://github.com/dotnet/emsdk build 20211020.3

Microsoft.NET.Workload.Emscripten.Manifest-6.0.100
 From Version 6.0.0 -> To Version 6.0.0

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
…on CI (dotnet#59154)

Backport of dotnet#58965 to release/6.0

This allows us to not run the CMake configure step separately for each libraries test suite which speeds up the build.

Helps with dotnet#58549
…eturning to a wasm page. (dotnet#60777)

* Fix loading a non wasm page and then returning to a wasm page.

* Adding non-wasm-page.html

* fixing other method

* addressing @radical comments

* adding last empty line

Co-authored-by: DESKTOP-GEPIA6N\Thays <[email protected]>
…022.3 (dotnet#60783)

Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.ApiCompat , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.GenFacades , Microsoft.DotNet.GenAPI , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SharedFramework.Sdk
 From Version 6.0.0-beta.21519.3 -> To Version 6.0.0-beta.21522.3

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
The VS4Mac team found two issues preventing them from successfully diagnosing VS4Mac failures
on .NET:

1) Multiple "crashed" threads in the crash report json (dotnet#60932).
2) No flag or way to generate the crash report for hangs via the diagnostic server IPC commands (dotnet#60775).

Add new generate core dump IPC command that allows the generate crash report flag to be passed through to createdump for
VS4Mac. VS4Mac needs to distinguish between WriteDump/no signal and unknown signal ExceptionType. Change unknown signal
exception type to 0.

Issue: dotnet#60775

Fix how the load bias is calculate for shared modules

Local testing with the SOS tests. VS4Mac team testing and verification.

Low risk because it only affects createdump, dump IPC command and the runtime dump generation path.
Fix dotnet#57141 in windows build.

Set the stack size (reserve) to 8MB, which is usually a default
on linux. This way we should get similar behavior on windows.

Co-authored-by: Radek Doulik <[email protected]>
The subset `host.pkg` is not producing the DotNetHost* NuGet packages. This is because the "Pack" target is getting invoked on the pkgprojs, but pkgprojs expect the "Build" target to be called. Since the "Pack" target is overriden in the Directory.Build.targets to be empty, no one is calling the "Build" target on the pkgprojs.

In an official build, a later subset `packs.tests` comes through and builds `Microsoft.DotNet.CoreSetup.Packaging.Tests.csproj`, which explicitly calls "Build" on the pkgprojs. So official builds still get these packages produced.

In source-build, we are no longer building the `packs.tests` subset, so the packages are not produced.

Co-authored-by: Eric Erhardt <[email protected]>
…es (dotnet#60835)

* Revise descriptions of VS workloads, and add missing ones

* typo

Co-authored-by: Jo Shields <[email protected]>
…ity (dotnet#60881)

* Disable package validation in source-build for reliability

* Add tracking issue to comment

* Switch from property overwrite to a condition
…ggregated COMWrappers RCW. (dotnet#61283)

* Don't create a COM weak reference if the object is an aggregated COMWrappers RCW.

* Add test for weak reference + aggregation with native weak reference impl.

* Apply suggestions from code review

Co-authored-by: Aaron Robinson <[email protected]>

Co-authored-by: Jeremy Koritzinsky <[email protected]>
Co-authored-by: Jeremy Koritzinsky <[email protected]>
Co-authored-by: Aaron Robinson <[email protected]>
…61341)

* Fix incorrect CCW decoding in GetObjectForCCW

* Fix linux/mac build
* Fix for dotnet#60532

In stable package mode we should be setting CoreLib informational
version to the ProductVersion according to the discussion on the
issue thread. I have verified locally that this fixes the processinfo2
test for me that was previously failing in the StabilizePackageVersion
mode. Please let me know how to proceed with the fix, whether you
want me to just merge it into dotnet/runtime main, whether I should
pursue its backport into 6.0 release and / or whether Matt considers
cherry-picking my change to his stabilization PR.

Thanks

Tomas

* Port InformationVersion fix to Mono corelib (dotnet#60614)

dotnet#60572 for Mono's corelib.

Co-authored-by: Tomas Rylek <[email protected]>
Co-authored-by: Alexander Köplinger <[email protected]>
* fix HttpClientHandlerTest.RemoteServer.cs

* fix HttpClientHandlerTest.Authentication.cs

* fix HttpClientHandlerTest.cs
* [wasm] Change dotnet.wasm link optimization

Context: dotnet#60349

When we switched to Emscripten 2.0.21, we stopped using deprecated
`--llvm-opts 2` option. This caused unwanted performance degradation.
Switching to `-O2` get us similar performance as with `--llvm-opts`.

Blazor wasm test app `Time to first UI` benchmark times:

    branch/commit        link option    time    dotnet.wasm size
    --------------------+------------+--------+-----------------
    release/6.0 92ff02       -Oz       491ms    2,430,639
    release/6.0 92ff02       -O2       457ms    2,474,518
    release/6.0 92ff02       -O3       444ms    2,555,824

* Fix native build too

Co-authored-by: Larry Ewing <[email protected]>
…tiveIP API for VS4Mac (dotnet#61298)

* Add System.Diagnostics.StackFrame.GetMethodInfoFromNativeIP API for VS4Mac

VS4Mac needs a way to symbolize managed IPs when rethrowing a native NSException from Objective C++. This is a short term API needed for the next 6.0 service release discoverable only through reflection.

Issue: dotnet#61186

* Code review feedback

* Remove unneccesary blank line
* RID work for macOS 12 (dotnet#59066)

* fix rid processing on macOS (dotnet#60494)

* fix rid processing on macOS

* Update src/native/corehost/hostmisc/pal.unix.cpp

* Update src/native/corehost/hostmisc/pal.unix.cpp

* remove extra size calculation

* Fix "fix rid processing on macOS" (dotnet#60668)

The `else if (major == 12)` is dead code, since the previous if `if (major > 11)` would be true for `major == 12`. Judging by the comment and code, it looks like the intention of this `else if` statement was to match `major == 11`.

* add the packaging for platforms package

Co-authored-by: Austin Wise <[email protected]>
Co-authored-by: Anirudh Agnihotry <[email protected]>
@ghost ghost added the community-contribution Indicates that the PR has been added by a community member label Mar 31, 2022
@dotnet-issue-labeler
Copy link

Note regarding the new-api-needs-documentation label:

This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change.

@dotnet-issue-labeler
Copy link

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@dnfadmin
Copy link

dnfadmin commented Mar 31, 2022

CLA assistant check
All CLA requirements met.

@@ -1157,6 +1157,8 @@ get_call_info (MonoMethodSignature *sig)
if (is_all_floats) {
rest = PPC_LAST_FPARG_REG - fr + 1;
}


Copy link
Contributor

Choose a reason for hiding this comment

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

Extra whitespace.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

removed

@vargaz
Copy link
Contributor

vargaz commented Mar 31, 2022

The mono changes look ok.

@@ -138,6 +138,15 @@ while :; do
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp5//')
unset __LLDB_Package
;;
ppc64le)
Copy link
Member

@am11 am11 Mar 31, 2022

Choose a reason for hiding this comment

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

Changes under eng/common should be reverted. eng/common is a mirror directory, changes (when needed) should go in https://github.com/dotnet/arcade/tree/main/eng/common and the bot will mirror it (otherwise these changes will be overwritten with the next update).

Copy link
Contributor Author

@Sapana-Khemkar Sapana-Khemkar Apr 1, 2022

Choose a reason for hiding this comment

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

Done. Changes already done in arcade and merged to runtime.

@@ -11830,6 +11830,7 @@ public enum Architecture
S390x = 5,
LoongArch64 = 6,
Armv6 = 7,
PPC64le = 8,
Copy link
Member

Choose a reason for hiding this comment

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

Public surface change usually require API review https://aka.ms/apireview.
e.g. #63042

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done #67428

@@ -23,6 +23,7 @@ enum
ARCH_ARM64,
ARCH_WASM,
ARCH_S390X,
ARCH_POWERPC,
Copy link
Member

Choose a reason for hiding this comment

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

The order has to be same as System.Runtime.InteropServices.Architecture enum

This needs to be added as last item here.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

updated

@Sapana-Khemkar
Copy link
Contributor Author

Broken up this PR in smaller PRs as below
#68802
#68806
#68809
Closing this PR

@ghost ghost locked as resolved and limited conversation to collaborators Aug 28, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-Build-mono community-contribution Indicates that the PR has been added by a community member new-api-needs-documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.