Rouven Czerwinski | bbaeed4 | 2019-08-07 20:07:00 +0200 | [diff] [blame^] | 1 | #!/usr/bin/env python3 |
Jerome Forissier | 1bb9298 | 2017-12-15 14:27:02 +0100 | [diff] [blame] | 2 | # SPDX-License-Identifier: BSD-2-Clause |
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 3 | # |
4 | # Copyright (c) 2017, Linaro Limited | ||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 5 | # |
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 6 | |
7 | import sys | ||||
8 | import re | ||||
9 | |||||
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 10 | |
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 11 | def usage(): |
Volodymyr Babchuk | 666bec3 | 2018-12-18 23:55:26 +0200 | [diff] [blame] | 12 | print("Usage: {0} <section reg exp match> [<skip section>...]".format( |
13 | sys.argv[0])) | ||||
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 14 | sys.exit(1) |
15 | |||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 16 | |
17 | def main(): | ||||
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 18 | if len(sys.argv) < 2: |
19 | usage() | ||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 20 | |
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 21 | in_shdr = False |
22 | section_headers = re.compile("Section Headers:") | ||||
23 | key_to_flags = re.compile("Key to Flags:") | ||||
24 | match_rule = re.compile(sys.argv[1]) | ||||
25 | skip_sections = sys.argv[2:] | ||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 26 | |
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 27 | for line in sys.stdin: |
28 | if section_headers.match(line): | ||||
29 | in_shdr = True | ||||
30 | continue | ||||
31 | if key_to_flags.match(line): | ||||
32 | in_shdr = False | ||||
33 | continue | ||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 34 | |
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 35 | if not in_shdr: |
36 | continue | ||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 37 | |
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 38 | words = line.split() |
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 39 | |
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 40 | if len(words) < 3: |
41 | continue | ||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 42 | |
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 43 | if words[0] == "[": |
44 | name_offs = 2 | ||||
45 | else: | ||||
46 | name_offs = 1 | ||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 47 | |
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 48 | sect_name = words[name_offs] |
49 | sect_type = words[name_offs + 1] | ||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 50 | |
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 51 | if sect_type != "PROGBITS": |
52 | continue | ||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 53 | |
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 54 | if not match_rule.match(sect_name): |
55 | continue | ||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 56 | |
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 57 | if sect_name in skip_sections: |
58 | continue | ||||
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 59 | |
Volodymyr Babchuk | 666bec3 | 2018-12-18 23:55:26 +0200 | [diff] [blame] | 60 | print('\t*({0})'.format(sect_name)) |
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 61 | |
Jens Wiklander | 5976a0a | 2017-05-25 07:48:20 +0200 | [diff] [blame] | 62 | |
63 | if __name__ == "__main__": | ||||
Jerome Forissier | 51f42eb | 2018-11-14 11:02:49 +0100 | [diff] [blame] | 64 | main() |