blob: fd821ebfb465015a6a6080b67d01e2f5929dbe69 [file] [log] [blame]
Jens Wiklander5976a0a2017-05-25 07:48:20 +02001#!/usr/bin/env python
Jerome Forissier1bb92982017-12-15 14:27:02 +01002# SPDX-License-Identifier: BSD-2-Clause
Jens Wiklander5976a0a2017-05-25 07:48:20 +02003#
4# Copyright (c) 2017, Linaro Limited
5# All rights reserved.
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions are met:
9#
10# 1. Redistributions of source code must retain the above copyright notice,
11# this list of conditions and the following disclaimer.
12#
13# 2. Redistributions in binary form must reproduce the above copyright notice,
14# this list of conditions and the following disclaimer in the documentation
15# and/or other materials provided with the distribution.
16#
17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27# POSSIBILITY OF SUCH DAMAGE.
28#
29
30import sys
31import re
32
33def usage():
Andrew F. Davis85ab3582017-09-22 10:51:26 -050034 print "Usage: {0} <section reg exp match> [<skip section>...]".format( \
Jens Wiklander5976a0a2017-05-25 07:48:20 +020035 sys.argv[0])
36 sys.exit (1)
37
38def main():
39 if len(sys.argv) < 2 :
40 usage()
41
42 in_shdr = False
43 section_headers = re.compile("Section Headers:")
44 key_to_flags = re.compile("Key to Flags:")
45 match_rule = re.compile(sys.argv[1])
46 skip_sections = sys.argv[2:]
47
48 for line in sys.stdin:
49 if section_headers.match(line) :
50 in_shdr = True;
51 continue
52 if key_to_flags.match(line) :
53 in_shdr = False;
54 continue
55
56 if not in_shdr :
57 continue
58
59 words = line.split()
60
61 if len(words) < 3 :
62 continue
63
64 if words[0] == "[" :
65 name_offs = 2
66 else :
67 name_offs = 1;
68
69 sect_name = words[name_offs]
70 sect_type = words[name_offs + 1]
71
72 if sect_type != "PROGBITS" :
73 continue
74
75 if not match_rule.match(sect_name) :
76 continue
77
78 if sect_name in skip_sections :
79 continue
80
Andrew F. Davis85ab3582017-09-22 10:51:26 -050081 print '\t*({0})'.format(sect_name)
Jens Wiklander5976a0a2017-05-25 07:48:20 +020082
83if __name__ == "__main__":
84 main()