12397f671SPavel Samolysov# RUN: rm -rf %t && mkdir -p %t && cd %t 22397f671SPavel Samolysov# RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o a.obj %S/Inputs/a.s 32397f671SPavel Samolysov# RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o b.obj %S/Inputs/b.s 4*350c89faSJacek Caban# RUN: llvm-lib /out:xfghashmap.lib b.obj a.obj 52397f671SPavel Samolysov 62397f671SPavel Samolysov## Replace a section in the library file with /<XFGHASHMAP>/ emulating 72397f671SPavel Samolysov## a library from the Windows SDK for Windows 11. 82397f671SPavel Samolysov# RUN: %python %s xfghashmap.lib b.obj/ 92397f671SPavel Samolysov 102397f671SPavel Samolysov## This should print the /<XFGHASHMAP>/ section as well as an .obj one. 112397f671SPavel Samolysov# RUN: llvm-lib /list %t/xfghashmap.lib | FileCheck %s 122397f671SPavel Samolysov 132397f671SPavel Samolysov# CHECK: /<XFGHASHMAP>/ 142397f671SPavel Samolysov# CHECK-NOT: b.obj 15*350c89faSJacek Caban# CHECK: a.obj 162397f671SPavel Samolysov 172397f671SPavel Samolysovimport sys 182397f671SPavel Samolysov 192397f671SPavel Samolysovif len(sys.argv) < 3: 202397f671SPavel Samolysov print("Use: python3 xfghashmap-list.test <LIBRARY_FILE> <TEMPLATE>") 212397f671SPavel Samolysov exit(1) 222397f671SPavel Samolysov 232397f671SPavel Samolysovtemplate = bytes(sys.argv[2], 'utf-8') 242397f671SPavel Samolysovxfghashmap = b'/<XFGHASHMAP>/' 252397f671SPavel Samolysov 262397f671SPavel Samolysovdata = None 272397f671SPavel Samolysovwith open(sys.argv[1], "rb") as inp: 282397f671SPavel Samolysov data = inp.read() 292397f671SPavel Samolysovwith open(sys.argv[1], "wb") as outp: 302397f671SPavel Samolysov pos = data.find(template) 312397f671SPavel Samolysov outp.write(data[:pos]) 322397f671SPavel Samolysov outp.write(xfghashmap) 332397f671SPavel Samolysov outp.write(data[pos + len(xfghashmap):]) 34