diff --git a/tools/ldgen/generation.py b/tools/ldgen/generation.py index 7c3c81bc34..b33d16612c 100644 --- a/tools/ldgen/generation.py +++ b/tools/ldgen/generation.py @@ -149,7 +149,7 @@ class RuleNode(): self.add_node_child(entity, sections, target, sections_db) def get_section_keys(self): - return sorted(self.sections.keys(), key=' '.join) + return sorted(self.sections.keys(), key=lambda x: sorted(x)) class SymbolNode(RuleNode): diff --git a/tools/ldgen/linker_script.py b/tools/ldgen/linker_script.py index f82747bed4..317032c294 100644 --- a/tools/ldgen/linker_script.py +++ b/tools/ldgen/linker_script.py @@ -66,8 +66,6 @@ class LinkerScript: target = member.target rules = member.rules - del rules[:] - rules.extend(mapping_rules[target]) except KeyError: message = GenerationException.UNDEFINED_REFERENCE + " to target '" + target + "'." diff --git a/tools/ldgen/test/test_generation.py b/tools/ldgen/test/test_generation.py index 575105a848..e184e4bc47 100755 --- a/tools/ldgen/test/test_generation.py +++ b/tools/ldgen/test/test_generation.py @@ -102,31 +102,22 @@ class GenerationTest(unittest.TestCase): def generate_default_rules(self): rules = collections.defaultdict(list) - rules['flash_text'].append(InputSectionDesc(ROOT, ['.literal', '.literal.*', '.text', '.text.*'], [])) - rules['flash_rodata'].append(InputSectionDesc(ROOT, ['.rodata', '.rodata.*'], [])) rules['dram0_data'].append(InputSectionDesc(ROOT, ['.data', '.data.*'], [])) rules['dram0_data'].append(InputSectionDesc(ROOT, ['.dram', '.dram.*'], [])) rules['dram0_bss'].append(InputSectionDesc(ROOT, ['.bss', '.bss.*'], [])) rules['dram0_bss'].append(InputSectionDesc(ROOT, ['COMMON'], [])) + rules['flash_text'].append(InputSectionDesc(ROOT, ['.literal', '.literal.*', '.text', '.text.*'], [])) + rules['flash_rodata'].append(InputSectionDesc(ROOT, ['.rodata', '.rodata.*'], [])) rules['iram0_text'].append(InputSectionDesc(ROOT, ['.iram', '.iram.*'], [])) - rules['rtc_text'].append(InputSectionDesc(ROOT, ['.rtc.text', '.rtc.literal'], [])) + rules['rtc_bss'].append(InputSectionDesc(ROOT, ['.rtc.bss'], [])) rules['rtc_data'].append(InputSectionDesc(ROOT, ['.rtc.data'], [])) rules['rtc_data'].append(InputSectionDesc(ROOT, ['.rtc.rodata'], [])) - rules['rtc_bss'].append(InputSectionDesc(ROOT, ['.rtc.bss'], [])) + rules['rtc_text'].append(InputSectionDesc(ROOT, ['.rtc.text', '.rtc.literal'], [])) return rules def compare_rules(self, expected, actual): - self.assertEqual(set(expected.keys()), set(actual.keys())) - - for target in sorted(actual.keys()): - a_cmds = actual[target] - e_cmds = expected[target] - - self.assertEqual(len(a_cmds), len(e_cmds)) - - for a, e in zip(a_cmds, e_cmds): - self.assertEqual(a, e) + self.assertEqual(expected, actual) def get_default(self, target, rules): return rules[target][0]