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

[Linux/arm32 R2R] Cross-Bitness Support for CrossGen #9786

Closed
21 of 24 tasks
echesakov opened this issue Feb 22, 2018 · 4 comments
Closed
21 of 24 tasks

[Linux/arm32 R2R] Cross-Bitness Support for CrossGen #9786

echesakov opened this issue Feb 22, 2018 · 4 comments
Assignees
Milestone

Comments

@echesakov
Copy link
Contributor

Currently, when build Linux/arm coreclr on Linux/x64 dev machine the following two sets of user environments must be installed:

  1. x64/arm compiler for native build;
  2. x64/x84 for cross-components used for crossgen/AOT to improve performance.

Purpose: Adapting crossgen and coreclr to be able to generate 32-bit ReadyToRun images on a 64-bit host without requiring to install x64/x84 Linux environment.

Backlog:

  • For example, RtlUnwindEx RtlVirtualUnwind are needed during x86_arm on Windows and on x64_arm on Linux but not on x64_arm on Windows
  • Many functions in src/inc/regdisp.h never reachable from crossgen but causes compilation errors
  • Consider splitting GenTreeIntCon into "a tree node that holds handles (i.e. pointers to host functions)" and "a tree node that never holds host pointers - i.e. pure integer constant"

  • Handling VNForPtrSizeIntCon and genTreeHashAdd in JIT in crossbitness scenario

  • Even after these some code in JIT would cause compilation warnings - requires either explicit casting or refactoring (e.g. roundUp)

  • EEClass::AddChunk must append methods (not prepend them as it now) in order to produce same output in both same-bitness and cross-bitness scenarios

@echesakov echesakov self-assigned this Feb 22, 2018
@BredPet
Copy link
Contributor

BredPet commented Feb 27, 2018

@dotnet/arm32-contrib

@AndyAyersMS
Copy link
Member

Is this something we want to track for 2.1?

@RussKeldorph
Copy link
Contributor

@AndyAyersMS I'd like to get this in for 2.1 if possible. For preview 2, we are going to have to use a workaround (using 32-bit tools and new Docker images), but it could still make the release. Since we can validate by simple binary output comparison on a fixed set of inputs (the framework binaries), it should be low risk.

@RussKeldorph
Copy link
Contributor

Getting late for 2.1, and we should be unblocked with the x86 work, so moving out. If it becomes ready, we may consider for 2.1.

@msftgits msftgits transferred this issue from dotnet/coreclr Jan 31, 2020
@msftgits msftgits added this to the Future milestone Jan 31, 2020
@ghost ghost locked as resolved and limited conversation to collaborators May 10, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants