1*bbaeed4dSRouven Czerwinski#!/usr/bin/env python3 21bb92983SJerome Forissier# SPDX-License-Identifier: BSD-2-Clause 35976a0a5SJens Wiklander# 45976a0a5SJens Wiklander# Copyright (c) 2017, Linaro Limited 55976a0a5SJens Wiklander# 65976a0a5SJens Wiklander 75976a0a5SJens Wiklanderimport sys 85976a0a5SJens Wiklanderimport re 95976a0a5SJens Wiklander 1051f42eb0SJerome Forissier 115976a0a5SJens Wiklanderdef usage(): 12666bec33SVolodymyr Babchuk print("Usage: {0} <section reg exp match> [<skip section>...]".format( 13666bec33SVolodymyr Babchuk sys.argv[0])) 145976a0a5SJens Wiklander sys.exit(1) 155976a0a5SJens Wiklander 1651f42eb0SJerome Forissier 175976a0a5SJens Wiklanderdef main(): 185976a0a5SJens Wiklander if len(sys.argv) < 2: 195976a0a5SJens Wiklander usage() 205976a0a5SJens Wiklander 215976a0a5SJens Wiklander in_shdr = False 225976a0a5SJens Wiklander section_headers = re.compile("Section Headers:") 235976a0a5SJens Wiklander key_to_flags = re.compile("Key to Flags:") 245976a0a5SJens Wiklander match_rule = re.compile(sys.argv[1]) 255976a0a5SJens Wiklander skip_sections = sys.argv[2:] 265976a0a5SJens Wiklander 275976a0a5SJens Wiklander for line in sys.stdin: 285976a0a5SJens Wiklander if section_headers.match(line): 2951f42eb0SJerome Forissier in_shdr = True 305976a0a5SJens Wiklander continue 315976a0a5SJens Wiklander if key_to_flags.match(line): 3251f42eb0SJerome Forissier in_shdr = False 335976a0a5SJens Wiklander continue 345976a0a5SJens Wiklander 355976a0a5SJens Wiklander if not in_shdr: 365976a0a5SJens Wiklander continue 375976a0a5SJens Wiklander 385976a0a5SJens Wiklander words = line.split() 395976a0a5SJens Wiklander 405976a0a5SJens Wiklander if len(words) < 3: 415976a0a5SJens Wiklander continue 425976a0a5SJens Wiklander 435976a0a5SJens Wiklander if words[0] == "[": 445976a0a5SJens Wiklander name_offs = 2 455976a0a5SJens Wiklander else: 4651f42eb0SJerome Forissier name_offs = 1 475976a0a5SJens Wiklander 485976a0a5SJens Wiklander sect_name = words[name_offs] 495976a0a5SJens Wiklander sect_type = words[name_offs + 1] 505976a0a5SJens Wiklander 515976a0a5SJens Wiklander if sect_type != "PROGBITS": 525976a0a5SJens Wiklander continue 535976a0a5SJens Wiklander 545976a0a5SJens Wiklander if not match_rule.match(sect_name): 555976a0a5SJens Wiklander continue 565976a0a5SJens Wiklander 575976a0a5SJens Wiklander if sect_name in skip_sections: 585976a0a5SJens Wiklander continue 595976a0a5SJens Wiklander 60666bec33SVolodymyr Babchuk print('\t*({0})'.format(sect_name)) 615976a0a5SJens Wiklander 6251f42eb0SJerome Forissier 635976a0a5SJens Wiklanderif __name__ == "__main__": 645976a0a5SJens Wiklander main() 65