xref: /llvm-project/llvm/test/tools/llvm-lib/xfghashmap-list.test (revision 350c89fa75a089060baea83a7ed88ed360f6e918)
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