
Removes the invalid-string-quote disable from the //testing pylintrc file and fixes all resulting errors. Bug: 353942917 Change-Id: I4e8ef60d4f7b7645fee7ee86d579032bb0c24eb1 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5784807 Commit-Queue: Ben Pastene <bpastene@chromium.org> Auto-Submit: Brian Sheedy <bsheedy@chromium.org> Reviewed-by: Ben Pastene <bpastene@chromium.org> Commit-Queue: Brian Sheedy <bsheedy@chromium.org> Cr-Commit-Position: refs/heads/main@{#1341341}
66 lines
2.0 KiB
Python
Executable File
66 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#
|
|
# Copyright 2016 The Chromium Authors
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
"""Archive all source files that are references in binary debug info.
|
|
|
|
Invoked by libfuzzer buildbots. Executes dwarfdump to parse debug info.
|
|
"""
|
|
|
|
from __future__ import print_function
|
|
|
|
import argparse
|
|
import os
|
|
import re
|
|
import subprocess
|
|
import zipfile
|
|
|
|
compile_unit_re = re.compile('.*DW_TAG_compile_unit.*')
|
|
at_name_re = re.compile('.*DW_AT_name.*"(.*)".*')
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description='Zip binary sources.')
|
|
parser.add_argument('--binary', required=True, help='binary file to read')
|
|
parser.add_argument('--workdir',
|
|
required=True,
|
|
help='working directory to use to resolve relative paths')
|
|
parser.add_argument(
|
|
'--srcdir',
|
|
required=True,
|
|
help='sources root directory to calculate zip entry names')
|
|
parser.add_argument('--output', required=True, help='output zip file name')
|
|
parser.add_argument('--dwarfdump',
|
|
required=False,
|
|
default='dwarfdump',
|
|
help='path to dwarfdump utility')
|
|
args = parser.parse_args()
|
|
|
|
# Dump .debug_info section.
|
|
out = subprocess.check_output([args.dwarfdump, '-i', args.binary])
|
|
|
|
looking_for_unit = True
|
|
compile_units = set()
|
|
|
|
# Look for DW_AT_name within DW_TAG_compile_unit
|
|
for line in out.splitlines():
|
|
if looking_for_unit and compile_unit_re.match(line):
|
|
looking_for_unit = False
|
|
elif not looking_for_unit:
|
|
match = at_name_re.match(line)
|
|
if match:
|
|
compile_units.add(match.group(1))
|
|
looking_for_unit = True
|
|
|
|
# Zip sources.
|
|
with zipfile.ZipFile(args.output, 'w') as z:
|
|
for compile_unit in sorted(compile_units):
|
|
src_file = os.path.abspath(os.path.join(args.workdir, compile_unit))
|
|
print(src_file)
|
|
z.write(src_file, os.path.relpath(src_file, args.srcdir))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|