"""pdb_syms.py: the public symbols of a Windows DLL, from its .pdb (no other tools needed). build.py writes rac1_game.sym with it after linking: one line per function, "RVA name" in hex, sorted. The launcher deletes the .pdb (hundreds of MB) but keeps the .sym, and the crash handler names the function a crash is in from it (in rac1_log.txt).""" import struct def sections(dll): """(name, virtual size, RVA) of each section of a PE file""" with open(dll, "rb") as fh: d = fh.read(4096) pe = struct.unpack_from("