brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.8 KiB · 6bdcc5c Raw
205 lines · plain
1REQUIRES: aarch64, x862RUN: split-file %s %t.dir && cd %t.dir3 4Test handlign of hybrid .pdata section on ARM64EC target.5 6RUN: llvm-mc -filetype=obj -triple=arm64-windows arm64-func-sym.s -o arm64-func-sym.obj7RUN: llvm-mc -filetype=obj -triple=arm64ec-windows arm64ec-func-sym.s -o arm64ec-func-sym.obj8RUN: llvm-mc -filetype=obj -triple=x86_64-windows x86_64-func-sym.s -o x86_64-func-sym.obj9RUN: llvm-mc -filetype=obj -triple=aarch64-windows %S/Inputs/loadconfig-arm64.s -o loadconfig-arm64.obj10RUN: llvm-mc -filetype=obj -triple=arm64ec-windows %p/Inputs/loadconfig-arm64ec.s -o loadconfig-arm64ec.obj11 12Only arm64ec code:13 14RUN: lld-link -out:test1.dll -machine:arm64ec arm64ec-func-sym.obj loadconfig-arm64ec.obj -dll -noentry15 16RUN: llvm-readobj --coff-load-config test1.dll | FileCheck -check-prefix=LOADCFG %s17LOADCFG:      ExtraRFETable: 0x400018LOADCFG-NEXT: ExtraRFETableSize: 0x819 20RUN: llvm-readobj --headers test1.dll | FileCheck -check-prefix=NODIR %s21NODIR: ExceptionTableSize: 0x022 23RUN: llvm-objdump -s --section=.pdata test1.dll | FileCheck -check-prefix=DATA %s24DATA: 180004000 00100000 1100000125 26Only x86_64 code:27 28RUN: lld-link -out:test2.dll -machine:arm64ec x86_64-func-sym.obj loadconfig-arm64ec.obj -dll -noentry29 30RUN: llvm-readobj --coff-load-config test2.dll | FileCheck -check-prefix=NOLOADCFG %s31NOLOADCFG: ExtraRFETableSize: 0x032 33RUN: llvm-readobj --headers test2.dll | FileCheck -check-prefix=DIR %s34DIR:      ExceptionTableRVA: 0x400035DIR-NEXT: ExceptionTableSize: 0xC36 37RUN: llvm-objdump -s --section=.pdata test2.dll | FileCheck -check-prefix=DATA2 %s38DATA2: 180004000 00100000 0e10000039 40Mixed arm64ec and x86_64 code:41 42RUN: lld-link -out:test3.dll -machine:arm64ec arm64ec-func-sym.obj x86_64-func-sym.obj \43RUN:          loadconfig-arm64ec.obj -dll -noentry44 45RUN: llvm-readobj --coff-load-config test3.dll | FileCheck -check-prefix=LOADCFG2 %s46LOADCFG2:      ExtraRFETable: 0x500047LOADCFG2-NEXT: ExtraRFETableSize: 0x848 49RUN: llvm-readobj --headers test3.dll | FileCheck -check-prefix=DIR2 %s50DIR2:      ExceptionTableRVA: 0x500851DIR2-NEXT: ExceptionTableSize: 0xC52 53RUN: llvm-objdump -s --section=.pdata test3.dll | FileCheck -check-prefix=DATA3 %s54DATA3: 180005000 00100000 11000001 00200000 0e20000055 56Mixed arm64x code:57 58RUN: lld-link -out:test4.dll -machine:arm64x arm64-func-sym.obj arm64ec-func-sym.obj \59RUN:          x86_64-func-sym.obj loadconfig-arm64.obj loadconfig-arm64ec.obj -dll -noentry60 61RUN: llvm-readobj --headers --coff-load-config test4.dll | FileCheck -check-prefix=DIR3 %s62DIR3:      ImageOptionalHeader {63DIR3:        DataDirectory {64DIR3:          ExceptionTableRVA: 0x600065DIR3-NEXT:     ExceptionTableSize: 0x1066DIR3:        }67DIR3:      }68DIR3:      CHPEMetadata [69DIR3:        ExtraRFETable: 0x601070DIR3-NEXT:   ExtraRFETableSize: 0xC71DIR3:      ]72DIR3:      HybridObject {73DIR3:        ImageOptionalHeader {74DIR3:          ExceptionTableRVA: 0x601075DIR3-NEXT:     ExceptionTableSize: 0xC76DIR3:        }77DIR3:        CHPEMetadata [78DIR3:          ExtraRFETable: 0x600079DIR3-NEXT:     ExtraRFETableSize: 0x1080DIR3:        ]81DIR3:      }82 83arm64x with no x86 .pdata:84 85RUN: llvm-objdump -s --section=.pdata test4.dll | FileCheck -check-prefix=DATA4 %s86DATA4: 180006000 00100000 11000001 00200000 11000001  ......... ......87DATA4: 180006010 00300000 0e30000088 89RUN: lld-link -out:testx2.dll -machine:arm64x arm64-func-sym.obj arm64ec-func-sym.obj \90RUN:          loadconfig-arm64.obj loadconfig-arm64ec.obj -dll -noentry91 92RUN: llvm-readobj --headers --coff-load-config testx2.dll | FileCheck -check-prefix=DIR4 %s93DIR4:      ImageOptionalHeader {94DIR4:        DataDirectory {95DIR4:          ExceptionTableRVA: 0x500096DIR4-NEXT:     ExceptionTableSize: 0x1097DIR4:        }98DIR4:      }99DIR4:      CHPEMetadata [100DIR4:        ExtraRFETable: 0x0101DIR4-NEXT:   ExtraRFETableSize: 0x0102DIR4:      ]103DIR4:      HybridObject {104DIR4:        ImageOptionalHeader {105DIR4:          ExceptionTableRVA: 0x0106DIR4-NEXT:     ExceptionTableSize: 0x0107DIR4:        }108DIR4:        CHPEMetadata [109DIR4:          ExtraRFETable: 0x5000110DIR4-NEXT:     ExtraRFETableSize: 0x10111DIR4:        ]112DIR4:      }113 114arm64x with no ARM .pdata:115 116RUN: lld-link -out:testx3.dll -machine:arm64x x86_64-func-sym.obj loadconfig-arm64.obj loadconfig-arm64ec.obj -dll -noentry117 118RUN: llvm-readobj --headers --coff-load-config testx3.dll | FileCheck -check-prefix=DIR5 %s119DIR5:      ImageOptionalHeader {120DIR5:        DataDirectory {121DIR5:          ExceptionTableRVA: 0x0122DIR5-NEXT:     ExceptionTableSize: 0x0123DIR5:        }124DIR5:      }125DIR5:      CHPEMetadata [126DIR5:        ExtraRFETable: 0x4000127DIR5-NEXT:   ExtraRFETableSize: 0xC128DIR5:      ]129DIR5:      HybridObject {130DIR5:        ImageOptionalHeader {131DIR5:          ExceptionTableRVA: 0x4000132DIR5-NEXT:     ExceptionTableSize: 0xC133DIR5:        }134DIR5:        CHPEMetadata [135DIR5:          ExtraRFETable: 0x0136DIR5-NEXT:     ExtraRFETableSize: 0x0137DIR5:        ]138DIR5:      }139 140Order of inputs doesn't matter, the data is sorted by type and RVA:141 142RUN: lld-link -out:test5.dll -machine:arm64ec x86_64-func-sym.obj arm64ec-func-sym.obj \143RUN:          loadconfig-arm64ec.obj -dll -noentry144RUN: llvm-readobj --coff-load-config test5.dll | FileCheck -check-prefix=LOADCFG2 %s145RUN: llvm-readobj --headers test5.dll | FileCheck -check-prefix=DIR2 %s146RUN: llvm-objdump -s --section=.pdata test5.dll | FileCheck -check-prefix=DATA3 %s147 148RUN: lld-link -out:test6.dll -machine:arm64x arm64ec-func-sym.obj x86_64-func-sym.obj \149RUN:          arm64-func-sym.obj loadconfig-arm64.obj loadconfig-arm64ec.obj -dll -noentry150RUN: llvm-readobj --headers --coff-load-config test6.dll | FileCheck -check-prefix=DIR3 %s151RUN: llvm-objdump -s --section=.pdata test6.dll | FileCheck -check-prefix=DATA4 %s152 153RUN: lld-link -out:test7.dll -machine:arm64x x86_64-func-sym.obj arm64ec-func-sym.obj \154RUN:          arm64-func-sym.obj loadconfig-arm64.obj loadconfig-arm64ec.obj -dll -noentry155RUN: llvm-readobj --headers --coff-load-config test7.dll | FileCheck -check-prefix=DIR3 %s156RUN: llvm-objdump -s --section=.pdata test7.dll | FileCheck -check-prefix=DATA4 %s157 158#--- arm64-func-sym.s159    .text160    .globl arm64_func_sym161    .p2align 2, 0x0162arm64_func_sym:163    .seh_proc arm64_func_sym164    sub sp, sp, #32165    .seh_stackalloc 32166    .seh_endprologue167    mov w0, #2168    .seh_startepilogue169    add sp, sp, #32170    .seh_stackalloc 32171    .seh_endepilogue172    ret173    .seh_endproc174 175#--- arm64ec-func-sym.s176    .text177    .globl arm64ec_func_sym178    .p2align 2, 0x0179arm64ec_func_sym:180    .seh_proc arm64ec_func_sym181    sub sp, sp, #32182    .seh_stackalloc 32183    .seh_endprologue184    mov w0, #3185    .seh_startepilogue186    add sp, sp, #32187    .seh_stackalloc 32188    .seh_endepilogue189    ret190    .seh_endproc191 192#--- x86_64-func-sym.s193    .text194    .globl x86_64_func_sym195    .p2align 2, 0x0196x86_64_func_sym:197    .seh_proc x86_64_func_sym198    subq    $40, %rsp199    .seh_stackalloc 40200    .seh_endprologue201    movl $4, %eax202    addq $40, %rsp203    retq204    .seh_endproc205