fixed matching of section type descriptors

This commit is contained in:
Julian Hammer
2019-12-19 12:01:51 +01:00
parent c23e52cdf6
commit dc02192d04
2 changed files with 13 additions and 7 deletions

View File

@@ -72,11 +72,12 @@ class ParserX86ATT(BaseParser):
) )
directive_parameter = ( directive_parameter = (
pp.quotedString pp.quotedString
| directive_option ^ directive_option
| identifier ^ identifier
| hex_number ^ hex_number
| decimal_number ^ decimal_number
| self.register ^ self.register
^ pp.Group(pp.Word(pp.alphanums + '_').setResultsName('name'))
) )
commaSeparatedList = pp.delimitedList(pp.Optional(directive_parameter), delim=',') commaSeparatedList = pp.delimitedList(pp.Optional(directive_parameter), delim=',')
self.directive = pp.Group( self.directive = pp.Group(

View File

@@ -49,11 +49,16 @@ class TestParserX86ATT(unittest.TestCase):
self._get_directive(self.parser, '\t.set\tL$set$0,LECIE1-LSCIE1').parameters, self._get_directive(self.parser, '\t.set\tL$set$0,LECIE1-LSCIE1').parameters,
[{'name': 'L$set$0'}, {'name': 'LECIE1-LSCIE1'}]) [{'name': 'L$set$0'}, {'name': 'LECIE1-LSCIE1'}])
self.assertEqual( 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' '\t.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support'
).parameters, ).parameters,
[{'name': v} for v in [{'name': v} for v in
['__TEXT', '__eh_frame', 'coalesced', 'no_toc+strip_static_syms+live_support']]) ['__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.assertEqual(
self._get_directive(self.parser, '\t.align\t16,0x90').parameters[1], '0x90' self._get_directive(self.parser, '\t.align\t16,0x90').parameters[1], '0x90'
) )
@@ -164,7 +169,7 @@ class TestParserX86ATT(unittest.TestCase):
instruction_form_3 = { instruction_form_3 = {
'instruction': None, 'instruction': None,
'operands': [], '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', 'comment': 'qed',
'label': None, 'label': None,
'line': '.quad .2.3_2__kmpc_loc_pack.2 #qed', 'line': '.quad .2.3_2__kmpc_loc_pack.2 #qed',