summaryrefslogtreecommitdiffstats
path: root/test cases/common/226 link depends indexed custom target/check_arch.py
blob: 927bf87c0dfe459cf2833133daa9ebda8eb327a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/env python3

import re
import sys
import shutil
import subprocess

exepath = sys.argv[1]
want_arch = sys.argv[2]
dummy_output = sys.argv[3]

with open(dummy_output, 'w') as f:
    f.write('')

if not shutil.which('dumpbin'):
    print('dumpbin not found, skipping')
    sys.exit(0)

out = subprocess.check_output(['dumpbin', '/HEADERS', exepath],
                              universal_newlines=True)
for line in out.split('\n'):
    m = re.match(r'.* machine \(([A-Za-z0-9]+)\)$', line)
    if m:
        arch = m.groups()[0].lower()

if arch == 'arm64':
    arch = 'aarch64'
elif arch == 'x64':
    arch = 'x86_64'

if arch != want_arch:
    raise RuntimeError(f'Wanted arch {want_arch} but exe uses {arch}')