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

[LoongArch64] Add ProbeLoongArch64Quirks() for R2RDump tool. #102146

Merged
merged 5 commits into from
May 18, 2024

Conversation

LuckyXu-HF
Copy link
Contributor

Add ProbeLoongArch64Quirks() for R2RDump to display the call method name and the branch address. This makes the r2rdump log more readable.

@dotnet-issue-labeler dotnet-issue-labeler bot added the area-R2RDump-coreclr Ready-to-run image dump tool label May 13, 2024
@dotnet-policy-service dotnet-policy-service bot added the community-contribution Indicates that the PR has been added by a community member label May 13, 2024
@LuckyXu-HF
Copy link
Contributor Author

This is mentioned by #101683 (comment)
@am11 , thanks again for your notification!

After implement ProbeLoongArch64Quirks(), the change is liking:
e.g: S.P.C.dll - PE32+ : string Interop+Kernel32.GetAndTrimString(System.Span`1<char>)
Before:

string Interop+Kernel32.GetAndTrimString(System.Span`1<char>)
Handle: 0x06000053
Rid: 83
EntryPointRuntimeFunctionId: 76
Number of RuntimeFunctions: 1
Number of fixups: 1
    TableIndex 5, Offset 06DB: System.Span`1<char> (TYPE_HANDLE)

string Interop+Kernel32.GetAndTrimString(System.Span`1<char>)
Id: 76
StartAddress: 0x00144E80
Size: 176 bytes
UnwindRVA: 0x00011428

Debug Info
    Bounds:
    Native Offset: 0x0, Prolog, Source Types: StackEmpty
    Native Offset: 0x18, IL Offset: 0x0000, Source Types: StackEmpty
    Native Offset: 0x20, IL Offset: 0x000a, Source Types: StackEmpty
    Native Offset: 0x24, IL Offset: 0x000e, Source Types: StackEmpty
    Native Offset: 0x2C, IL Offset: 0x0012, Source Types: StackEmpty
    Native Offset: 0x50, IL Offset: 0x0021, Source Types: StackEmpty
    Native Offset: 0x64, IL Offset: 0x002b, Source Types: StackEmpty
    Native Offset: 0x78, Epilog, Source Types: StackEmpty
    Native Offset: 0x88, IL Offset: 0x0021, Source Types: StackEmpty
    Native Offset: 0x9C, NoMapping, Source Types: StackEmpty

    Variable Locations:
    Variable Number: 0
    Start Offset: 0x0
    End Offset: 0x18
    Loc Type: VLT_REG
    Register: A0

    Variable Number: 1
    Start Offset: 0x1C
    End Offset: 0x5C
    Loc Type: VLT_REG
    Register: T8

144e80: 02ff8063    addi.d  $sp, $sp, -32
144e84: 29c04076    st.d    $r22, $sp, 16
144e88: 29c06061    st.d    $ra, $sp, 24
144e8c: 02c04076    addi.d  $r22, $sp, 16
144e90: 29ffc2c0    st.d    $zero, $r22, -16
144e94: 004080a5    slli.w  $r5, $r5, 0
144e98: 004080b4    slli.w  $r20, $r5, 0
144e9c: 50000800    b       8
144ea0: 004080d4    slli.w  $r20, $r6, 0
144ea4: 00408295    slli.w  $r21, $r20, 0
144ea8: 64002815    bge     $zero, $r21, 40
144eac: 02bffe86    addi.w  $r6, $r20, -1
144eb0: 004080d5    slli.w  $r21, $r6, 0
144eb4: 6c006aa5    bgeu    $r21, $r5, 104
144eb8: 00df00c7    bstrpick.d $r7, $r6, 31, 0
144ebc: 004104e7    slli.d  $r7, $r7, 1
144ec0: 38241c87    ldx.hu  $r7, $r4, $r7
144ec4: 004080f5    slli.w  $r21, $r7, 0
144ec8: 02808001    addi.w  $ra, $zero, 32
144ecc: 67ffd435    bge     $ra, $r21, -44
144ed0: 00df0281    bstrpick.d $ra, $r20, 31, 0
144ed4: 00df00b5    bstrpick.d $r21, $r5, 31, 0
144ed8: 680032a1    bltu    $r21, $ra, 48
144edc: 29ffc2c4    st.d    $r4, $r22, -16
144ee0: 29bfe2d4    st.w    $r20, $r22, -8
144ee4: 02ffc2c4    addi.d  $r4, $r22, -16
                    A0 is dead
144ee8: 1c016f14    pcaddu12i $r20, 2936
144eec: 02dd6294    addi.d  $r20, $r20, 1880
144ef0: 28c00285    ld.d    $r5, $r20, 0
144ef4: 4c0000a1    jirl    $ra, $r5, 0
144ef8: 28c06061    ld.d    $ra, $sp, 24
144efc: 28c04076    ld.d    $r22, $sp, 16
144f00: 02c08063    addi.d  $sp, $sp, 32
144f04: 4c000020    jirl    $zero, $ra, 0
144f08: 1c016e14    pcaddu12i $r20, 2928
144f0c: 02d1c294    addi.d  $r20, $r20, 1136
144f10: 28c00284    ld.d    $r4, $r20, 0
144f14: 4c000081    jirl    $ra, $r4, 0
144f18: 002a0005    break   5
144f1c: 1c016be4    pcaddu12i $r4, 2911
144f20: 02fd9084    addi.d  $r4, $r4, -156
144f24: 28c00084    ld.d    $r4, $r4, 0
144f28: 4c000081    jirl    $ra, $r4, 0
144f2c: 002a0005    break   5

After:

string Interop+Kernel32.GetAndTrimString(System.Span`1<char>)
Handle: 0x06000053
Rid: 83
EntryPointRuntimeFunctionId: 76
Number of RuntimeFunctions: 1
Number of fixups: 1
    TableIndex 5, Offset 06DB: System.Span`1<char> (TYPE_HANDLE)

string Interop+Kernel32.GetAndTrimString(System.Span`1<char>)
Id: 76
StartAddress: 0x00144E80
Size: 176 bytes
UnwindRVA: 0x00011428

Debug Info
    Bounds:
    Native Offset: 0x0, Prolog, Source Types: StackEmpty
    Native Offset: 0x18, IL Offset: 0x0000, Source Types: StackEmpty
    Native Offset: 0x20, IL Offset: 0x000a, Source Types: StackEmpty
    Native Offset: 0x24, IL Offset: 0x000e, Source Types: StackEmpty
    Native Offset: 0x2C, IL Offset: 0x0012, Source Types: StackEmpty
    Native Offset: 0x50, IL Offset: 0x0021, Source Types: StackEmpty
    Native Offset: 0x64, IL Offset: 0x002b, Source Types: StackEmpty
    Native Offset: 0x78, Epilog, Source Types: StackEmpty
    Native Offset: 0x88, IL Offset: 0x0021, Source Types: StackEmpty
    Native Offset: 0x9C, NoMapping, Source Types: StackEmpty

    Variable Locations:
    Variable Number: 0
    Start Offset: 0x0
    End Offset: 0x18
    Loc Type: VLT_REG
    Register: A0

    Variable Number: 1
    Start Offset: 0x1C
    End Offset: 0x5C
    Loc Type: VLT_REG
    Register: T8

144e80: 02ff8063    addi.d  $sp, $sp, -32
144e84: 29c04076    st.d    $r22, $sp, 16
144e88: 29c06061    st.d    $ra, $sp, 24
144e8c: 02c04076    addi.d  $r22, $sp, 16
144e90: 29ffc2c0    st.d    $zero, $r22, -16
144e94: 004080a5    slli.w  $r5, $r5, 0
144e98: 004080b4    slli.w  $r20, $r5, 0
144e9c: 50000800    b       0x144ea4
144ea0: 004080d4    slli.w  $r20, $r6, 0
144ea4: 00408295    slli.w  $r21, $r20, 0
144ea8: 64002815    bge     $zero, $r21, 0x144ed0
144eac: 02bffe86    addi.w  $r6, $r20, -1
144eb0: 004080d5    slli.w  $r21, $r6, 0
144eb4: 6c006aa5    bgeu    $r21, $r5, 0x144f1c
144eb8: 00df00c7    bstrpick.d $r7, $r6, 31, 0
144ebc: 004104e7    slli.d  $r7, $r7, 1
144ec0: 38241c87    ldx.hu  $r7, $r4, $r7
144ec4: 004080f5    slli.w  $r21, $r7, 0
144ec8: 02808001    addi.w  $ra, $zero, 32
144ecc: 67ffd435    bge     $ra, $r21, 0x144ea0
144ed0: 00df0281    bstrpick.d $ra, $r20, 31, 0
144ed4: 00df00b5    bstrpick.d $r21, $r5, 31, 0
144ed8: 680032a1    bltu    $r21, $ra, 0x144f08
144edc: 29ffc2c4    st.d    $r4, $r22, -16
144ee0: 29bfe2d4    st.w    $r20, $r22, -8
144ee4: 02ffc2c4    addi.d  $r4, $r22, -16
                    A0 is dead
144ee8: 1c016f14    pcaddu12i $r20, 2936
144eec: 02dd6294    addi.d  $r20, $r20, 1880
144ef0: 28c00285    ld.d    $r5, $r20, 0
144ef4: 4c0000a1    jirl    $ra, $r5, 0 // string System.Span`1<char>.ToString() (METHOD_ENTRY)
144ef8: 28c06061    ld.d    $ra, $sp, 24
144efc: 28c04076    ld.d    $r22, $sp, 16
144f00: 02c08063    addi.d  $sp, $sp, 32
144f04: 4c000020    jirl    $zero, $ra, 0
144f08: 1c016e14    pcaddu12i $r20, 2928
144f0c: 02d1c294    addi.d  $r20, $r20, 1136
144f10: 28c00284    ld.d    $r4, $r20, 0
144f14: 4c000081    jirl    $ra, $r4, 0 // void System.ThrowHelper.ThrowArgumentOutOfRangeException() (METHOD_ENTRY_DEF_TOKEN)
144f18: 002a0005    break   5
144f1c: 1c016be4    pcaddu12i $r4, 2911
144f20: 02fd9084    addi.d  $r4, $r4, -156
144f24: 28c00084    ld.d    $r4, $r4, 0
144f28: 4c000081    jirl    $ra, $r4, 0 // RNG_CHK_FAIL (HELPER)
144f2c: 002a0005    break   5

Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
@LuckyXu-HF
Copy link
Contributor Author

@shushanhf @jkotas Could you please review this PR? Thanks.

@LuckyXu-HF
Copy link
Contributor Author

Hi @shushanhf @jkotas @ivdiazsa
Could you please review this PR if you have time? Thanks.

Copy link
Contributor

@shushanhf shushanhf left a comment

Choose a reason for hiding this comment

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

LGTM
thanks

@jkotas
Copy link
Member

jkotas commented May 17, 2024

Could you please resolve the conflicts?

@LuckyXu-HF
Copy link
Contributor Author

Could you please resolve the conflicts?

OK, I have resolved the conflicts.

@jkotas jkotas merged commit af11dbc into dotnet:main May 18, 2024
87 checks passed
@jkotas
Copy link
Member

jkotas commented May 18, 2024

Thanks!

@LuckyXu-HF LuckyXu-HF deleted the main-LA64 branch May 18, 2024 06:02
Ruihan-Yin pushed a commit to Ruihan-Yin/runtime that referenced this pull request May 30, 2024
…102146)

* [LoongArch64] Add ProbeLoongArch64Quirks() for R2RDump tool.

* Update src/coreclr/tools/r2rdump/CoreDisTools.cs

Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>

---------

Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
@github-actions github-actions bot locked and limited conversation to collaborators Jun 17, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-loongarch64 area-R2RDump-coreclr Ready-to-run image dump tool community-contribution Indicates that the PR has been added by a community member
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants