VirtualBox

Ignore:
Timestamp:
Aug 13, 2013 10:19:25 AM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
87893
Message:

VBoxDef2LazyLoad.cpp: Attempt at correct stack alignment.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bldprogs/VBoxDef2LazyLoad.cpp

    r46559 r47685  
    374374            "    lea     rsi, [g_hMod wrt rip]  ; phLdrMod\n"
    375375            "    lea     rdi, [.szLib wrt rip]  ; pszFilename\n"
     376            "    sub     rsp, 08h\n"
    376377            "    call    IMP2(SUPR3HardenedLdrLoadAppPriv)\n"
     378            "    add     rsp, 08h\n"
    377379            "\n"
    378380            "%%elifdef ASM_CALL64_MSC\n"
     
    381383            "    lea     rdx, [g_hMod wrt rip]  ; phLdrMod\n"
    382384            "    lea     rcx, [.szLib wrt rip]  ; pszFilename\n"
    383             "    sub     rsp, 20h\n"
     385            "    sub     rsp, 28h\n"
    384386            "    call    IMP2(SUPR3HardenedLdrLoadAppPriv)\n"
    385             "    add     rsp, 20h\n"
     387            "    add     rsp, 28h\n"
    386388            "\n"
    387389            "%%elifdef RT_ARCH_X86\n"
     390            "    sub     rsp, 0ch\n"
    388391            "    push    0              ; pErrInfo\n"
    389392            "    push    0              ; fFlags (local load)\n"
     
    391394            "    push    .szLib         ; pszFilename\n"
    392395            "    call    IMP2(SUPR3HardenedLdrLoadAppPriv)\n"
    393             "    add     esp, 10h\n"
     396            "    add     esp, 1ch\n"
    394397            "%%else\n"
    395398            " %%error \"Unsupported architecture\"\n"
     
    427430            "    push    rcx\n"
    428431            "    push    rdx\n"
     432            "    push    r12\n"
    429433            " %%ifdef ASM_CALL64_GCC\n"
    430434            "    push    rsi\n"
    431435            "    push    rdi\n"
     436            "    mov     r12, rsp\n"
    432437            " %%else\n"
     438            "    mov     r12, rsp\n"
    433439            "    sub     rsp, 20h\n"
    434440            " %%endif\n"
     441            "    and     rsp, 0fffffff0h ; Try make sure the stack is aligned\n"
    435442            "\n"
    436443            "    call    NAME(LazyLoading) ; returns handle in rcx\n"
     
    451458            ".symok:\n"
    452459            "\n"
     460            "    mov     rsp, r12\n"
    453461            " %%ifdef ASM_CALL64_GCC\n"
    454462            "    pop     rdi\n"
    455463            "    pop     rsi\n"
    456             " %%else\n"
    457             "    add     rsp, 20h\n"
    458464            " %%endif\n"
     465            "    pop     r12\n"
    459466            "    pop     rdx\n"
    460467            "    pop     rcx\n"
     
    471478            "    push    ecx\n"
    472479            "    push    edx\n"
     480            "    and     esp, 0fffffff0h\n"
    473481            "\n"
    474482            ".loaded:\n"
     
    480488            "    mov     ecx, [g_hMod]\n"
    481489            "    call    IMP2(RTLdrGetSymbol)\n"
    482             "    add     esp, 12\n"
    483490            "    or      eax, eax\n"
    484491            ".badsym:\n"
     
    487494            "    jmp     .badsym\n"
    488495            ".symok:\n"
     496            "    lea     esp, [ebp - 0ch]\n"
    489497            "    pop     edx\n"
    490498            "    pop     ecx\n"
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette