pytorch
37 строк · 1.2 Кб
1import subprocess2
3
4def gen_linker_script(5filein: str = "cmake/prioritized_text.txt", fout: str = "cmake/linker_script.ld"6) -> None:7with open(filein) as f:8prioritized_text = f.readlines()9prioritized_text = [10line.replace("\n", "") for line in prioritized_text if line != "\n"11]12
13linker_script_lines = subprocess.check_output(["ld", "-verbose"], text=True).split(14"\n"15)16
17indices = [18i
19for i, x in enumerate(linker_script_lines)20if x == "=================================================="21]22linker_script_lines = linker_script_lines[indices[0] + 1 : indices[1]]23
24text_line_start = [25i for i, line in enumerate(linker_script_lines) if ".text :" in line26]27assert len(text_line_start) == 1, "The linker script has multiple text sections!"28text_line_start = text_line_start[0]29
30with open(fout, "w") as f:31for lineid, line in enumerate(linker_script_lines):32if lineid == text_line_start + 2:33f.write(" *(\n")34for plines in prioritized_text:35f.write(f" .text.{plines}\n")36f.write(" )\n")37f.write(f"{line}\n")38