Skip to content

Commit a5359b7

Browse files
BernardXiongRbb666
authored andcommitted
[vdso] use the default arch/abi flags in risc-v vDSO building.
1 parent 9a8dec3 commit a5359b7

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

components/lwp/vdso/user/arch/risc-v/SConstruct

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,39 @@
11
import os
22
import sys
3+
import subprocess
34

45
arguments = sys.argv[2]
56
vdso_usr = arguments
67
vdso_path = os.path.join(vdso_usr, '..', '..', '..')
78

89
EXEC_PATH = os.getenv('RTT_EXEC_PATH') or '/usr/bin'
910
PREFIX = os.getenv('RTT_CC_PREFIX') or 'riscv64-none-elf-'
10-
DEVICE = os.getenv('RTT_DEVICE') or ' -march=rv64imafdc -mabi=lp64'
11+
12+
def get_riscv64_default_arch_abi(gcc_bin):
13+
try:
14+
result = subprocess.check_output(
15+
[gcc_bin, '-Q', '--help=target'],
16+
universal_newlines=True
17+
)
18+
arch = None
19+
abi = None
20+
for line in result.splitlines():
21+
if '-march=' in line and '[default]' in line:
22+
arch = line.strip().split()[0]
23+
if '-mabi=' in line and '[default]' in line:
24+
abi = line.strip().split()[0]
25+
return arch, abi
26+
except Exception as e:
27+
print("Error getting arch/abi:", e)
28+
return None, None
29+
30+
# get the gcc path
31+
CC_BIN = PREFIX + 'gcc'
32+
arch, abi = get_riscv64_default_arch_abi(CC_BIN)
33+
if arch and abi:
34+
DEVICE = f' {arch} {abi} '
35+
else:
36+
DEVICE = ' -march=rv64imafdc -mabi=lp64' # fallback
1137

1238
CC = PREFIX + 'gcc'
1339
CPP = PREFIX + 'cpp'

0 commit comments

Comments
 (0)