aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/gen_ld_sects.py75
1 files changed, 39 insertions, 36 deletions
diff --git a/scripts/gen_ld_sects.py b/scripts/gen_ld_sects.py
index c5dc3a7b..f8c897d6 100755
--- a/scripts/gen_ld_sects.py
+++ b/scripts/gen_ld_sects.py
@@ -7,55 +7,58 @@
import sys
import re
+
def usage():
- print "Usage: {0} <section reg exp match> [<skip section>...]".format( \
- sys.argv[0])
- sys.exit (1)
+ print "Usage: {0} <section reg exp match> [<skip section>...]".format(
+ sys.argv[0])
+ sys.exit(1)
+
def main():
- if len(sys.argv) < 2 :
- usage()
+ if len(sys.argv) < 2:
+ usage()
+
+ in_shdr = False
+ section_headers = re.compile("Section Headers:")
+ key_to_flags = re.compile("Key to Flags:")
+ match_rule = re.compile(sys.argv[1])
+ skip_sections = sys.argv[2:]
- in_shdr = False
- section_headers = re.compile("Section Headers:")
- key_to_flags = re.compile("Key to Flags:")
- match_rule = re.compile(sys.argv[1])
- skip_sections = sys.argv[2:]
+ for line in sys.stdin:
+ if section_headers.match(line):
+ in_shdr = True
+ continue
+ if key_to_flags.match(line):
+ in_shdr = False
+ continue
- for line in sys.stdin:
- if section_headers.match(line) :
- in_shdr = True;
- continue
- if key_to_flags.match(line) :
- in_shdr = False;
- continue
+ if not in_shdr:
+ continue
- if not in_shdr :
- continue
+ words = line.split()
- words = line.split()
+ if len(words) < 3:
+ continue
- if len(words) < 3 :
- continue
+ if words[0] == "[":
+ name_offs = 2
+ else:
+ name_offs = 1
- if words[0] == "[" :
- name_offs = 2
- else :
- name_offs = 1;
+ sect_name = words[name_offs]
+ sect_type = words[name_offs + 1]
- sect_name = words[name_offs]
- sect_type = words[name_offs + 1]
+ if sect_type != "PROGBITS":
+ continue
- if sect_type != "PROGBITS" :
- continue
+ if not match_rule.match(sect_name):
+ continue
- if not match_rule.match(sect_name) :
- continue
+ if sect_name in skip_sections:
+ continue
- if sect_name in skip_sections :
- continue
+ print '\t*({0})'.format(sect_name)
- print '\t*({0})'.format(sect_name)
if __name__ == "__main__":
- main()
+ main()