| # RUN: rm -rf %t && mkdir -p %t && cd %t |
| # RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o a.obj %S/Inputs/a.s |
| # RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o b.obj %S/Inputs/b.s |
| # RUN: llvm-lib /out:xfghashmap.lib a.obj b.obj |
| |
| ## Replace a section in the library file with /<XFGHASHMAP>/ emulating |
| ## a library from the Windows SDK for Windows 11. |
| # RUN: %python %s xfghashmap.lib b.obj/ |
| |
| ## This should print the /<XFGHASHMAP>/ section as well as an .obj one. |
| # RUN: llvm-lib /list %t/xfghashmap.lib | FileCheck %s |
| |
| # CHECK: a.obj |
| # CHECK: /<XFGHASHMAP>/ |
| # CHECK-NOT: b.obj |
| |
| import sys |
| |
| if len(sys.argv) < 3: |
| print("Use: python3 xfghashmap-list.test <LIBRARY_FILE> <TEMPLATE>") |
| exit(1) |
| |
| template = bytes(sys.argv[2], 'utf-8') |
| xfghashmap = b'/<XFGHASHMAP>/' |
| |
| data = None |
| with open(sys.argv[1], "rb") as inp: |
| data = inp.read() |
| with open(sys.argv[1], "wb") as outp: |
| pos = data.find(template) |
| outp.write(data[:pos]) |
| outp.write(xfghashmap) |
| outp.write(data[pos + len(xfghashmap):]) |