xref: /dpdk/buildtools/map-list-symbol.sh (revision 68a03efeed657e6e05f281479b33b51102797e15)
1#!/bin/sh
2# SPDX-License-Identifier: BSD-3-Clause
3# Copyright(c) 2018 David Marchand <david.marchand@redhat.com>
4
5section=all
6symbol=all
7quiet=
8
9while getopts 'S:s:q' name; do
10	case $name in
11	S)
12		[ $section = 'all' ] || {
13			echo 'Cannot list in multiple sections'
14			exit 1
15		}
16		section=$OPTARG
17	;;
18	s)
19		[ $symbol = 'all' ] || {
20			echo 'Cannot list multiple symbols'
21			exit 1
22		}
23		symbol=$OPTARG
24	;;
25	q)
26		quiet='y'
27	;;
28	?)
29		echo 'usage: $0 [-S section] [-s symbol] [-q]'
30		exit 1
31	;;
32	esac
33done
34
35shift $(($OPTIND - 1))
36
37for file in $@; do
38	cat "$file" |awk '
39	BEGIN {
40		current_section = "";
41		if ("'$section'" == "all" && "'$symbol'" == "all") {
42			ret = 0;
43		} else {
44			ret = 1;
45		}
46	}
47	/^.*\{/ {
48		if ("'$section'" == "all" || $1 == "'$section'") {
49			current_section = $1;
50		}
51	}
52	/.*}/ { current_section = ""; }
53	/^[^}].*[^:*];/ {
54		if (current_section != "") {
55			gsub(";","");
56			if ("'$symbol'" == "all" || $1 == "'$symbol'") {
57				ret = 0;
58				if ("'$quiet'" == "") {
59					print "'$file' "current_section" "$1;
60				}
61				if ("'$symbol'" != "all") {
62					exit 0;
63				}
64			}
65		}
66	}
67	END {
68		exit ret;
69	}'
70done
71