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

Skip to content

Conversation

kunalspathak
Copy link
Contributor

Resolves #104584 and resolves #104441

@kunalspathak
Copy link
Contributor Author

@dotnet/jit-contrib

@ghost ghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jul 25, 2024
Copy link
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

@kunalspathak
Copy link
Contributor Author

/azp run runtime-coreclr superpmi-diffs

Copy link

Azure Pipelines could not run because the pipeline triggers exclude this branch/path.

if (IsSpmiTarget64Bit())
{
if (relocType == IMAGE_REL_BASED_DIR64)
if (!wasRelocHandled && (relocType == IMAGE_REL_BASED_DIR64))
Copy link
Contributor

Choose a reason for hiding this comment

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

I might be missing something here, but if relocType == IMAGE_REL_BASED_DIR64, shouldn't wasRelocHandled always be false? I don't see this reloc type handled in any of the above switch statements, and those are the only places where wasRelocHandled can be set to true.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yes, that's because IMAGE_REL_BASED_DIR64 and IMAGE_REL_ARM64_SECREL_HIGH12A share the same enum value 0x9. IMAGE_REL_BASED_DIR64 is used in xarch, while IMAGE_REL_ARM64_SECREL_HIGH12A is for arm64. So yes, wasRelocHandled will mostly be false, except for arm64/IMAGE_REL_ARM64_SECREL_HIGH12A in which case we should not handle it here. If we do, it just overwrites the codestream leading to "decoding failures". Ideally, this handling should be just for SPMI_TARGET_ARCHITECTURE_X86 and SPMI_TARGET_ARCHITECTURE_AMD64, but I was not sure if there was any historic reason to do so. Wanted to do minimal change to address the underlying issue for arm64.

See the discussion in #104282 (comment).

Copy link
Contributor

Choose a reason for hiding this comment

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

Got it, thank you for explaining this!

@kunalspathak kunalspathak merged commit 7f1fd4e into dotnet:main Jul 26, 2024
@kunalspathak kunalspathak deleted the smoketest branch July 26, 2024 16:50
@github-actions github-actions bot locked and limited conversation to collaborators Aug 27, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

asmdiff failed for checked and release for smoke_tests.nativeaot.windows.arm64 JIT: Spurious 0-sized diffs in smoke_tests.nativeaot.windows.arm64
2 participants