From dc02192d042cca57ae6a6b778c5b944fbd0569b6 Mon Sep 17 00:00:00 2001 From: Julian Hammer Date: Thu, 19 Dec 2019 12:01:51 +0100 Subject: [PATCH] fixed matching of section type descriptors --- osaca/parser/parser_x86att.py | 11 ++++++----- tests/test_parser_x86att.py | 9 +++++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/osaca/parser/parser_x86att.py b/osaca/parser/parser_x86att.py index 5eae9da..38437b8 100755 --- a/osaca/parser/parser_x86att.py +++ b/osaca/parser/parser_x86att.py @@ -72,11 +72,12 @@ class ParserX86ATT(BaseParser): ) directive_parameter = ( pp.quotedString - | directive_option - | identifier - | hex_number - | decimal_number - | self.register + ^ directive_option + ^ identifier + ^ hex_number + ^ decimal_number + ^ self.register + ^ pp.Group(pp.Word(pp.alphanums + '_').setResultsName('name')) ) commaSeparatedList = pp.delimitedList(pp.Optional(directive_parameter), delim=',') self.directive = pp.Group( diff --git a/tests/test_parser_x86att.py b/tests/test_parser_x86att.py index 2ee6423..1a4c4e5 100755 --- a/tests/test_parser_x86att.py +++ b/tests/test_parser_x86att.py @@ -49,11 +49,16 @@ class TestParserX86ATT(unittest.TestCase): self._get_directive(self.parser, '\t.set\tL$set$0,LECIE1-LSCIE1').parameters, [{'name': 'L$set$0'}, {'name': 'LECIE1-LSCIE1'}]) self.assertEqual( - self._get_directive(self.parser, + self._get_directive( + self.parser, '\t.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support' ).parameters, [{'name': v} for v in ['__TEXT', '__eh_frame', 'coalesced', 'no_toc+strip_static_syms+live_support']]) + self.assertEqual( + self._get_directive( + self.parser, '\t.section\t__TEXT,__literal16,16byte_literals').parameters, + [{'name': v} for v in ['__TEXT', '__literal16', '16byte_literals']]) self.assertEqual( self._get_directive(self.parser, '\t.align\t16,0x90').parameters[1], '0x90' ) @@ -164,7 +169,7 @@ class TestParserX86ATT(unittest.TestCase): instruction_form_3 = { 'instruction': None, 'operands': [], - 'directive': {'name': 'quad', 'parameters': ['.2.3_2__kmpc_loc_pack.2']}, + 'directive': {'name': 'quad', 'parameters': [{'name': '.2.3_2__kmpc_loc_pack.2'}]}, 'comment': 'qed', 'label': None, 'line': '.quad .2.3_2__kmpc_loc_pack.2 #qed',