diff --git a/tools/ldgen/ldgen/generation.py b/tools/ldgen/ldgen/generation.py index 945884981f..794149aec8 100644 --- a/tools/ldgen/ldgen/generation.py +++ b/tools/ldgen/ldgen/generation.py @@ -1,5 +1,5 @@ # -# SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD +# SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD # SPDX-License-Identifier: Apache-2.0 # import collections @@ -83,11 +83,13 @@ class Placement: # # Placement can also be a basis if it has flags # (self.flags) or its basis has flags (self.basis.flags) - significant = (not self.basis or - self.target != self.basis.target or - (self.flags and not self.basis.flags) or - (not self.flags and self.basis.flags) or - self.force) + significant = ( + not self.basis + or self.target != self.basis.target + or (self.flags and not self.basis.flags) + or (not self.flags and self.basis.flags) + or self.force + ) if significant and not self.explicit and not self.sections: # The placement is significant, but it is an intermediate placement @@ -155,7 +157,7 @@ class EntityNode: assert name and name != Entity.ALL child = [c for c in self.children if c.name == name] - assert (len(child) <= 1) + assert len(child) <= 1 if not child: child = self.child_t(self, name) @@ -169,7 +171,7 @@ class EntityNode: commands = collections.defaultdict(list) def process_commands(cmds): - for (target, commands_list) in cmds.items(): + for target, commands_list in cmds.items(): commands[target].extend(commands_list) # Process the commands generated from this node @@ -221,16 +223,28 @@ class EntityNode: placement_sections = frozenset(placement.sections) command_sections = sections if sections == placement_sections else placement_sections - command = InputSectionDesc(placement.node.entity, command_sections, - [e.node.entity for e in placement.exclusions], keep, sort, tied) + command = InputSectionDesc( + placement.node.entity, + command_sections, + [e.node.entity for e in placement.exclusions], + keep, + sort, + tied, + ) commands[placement.target].append(command) # Generate commands for intermediate, non-explicit exclusion placements here, # so that they can be enclosed by flags that affect the parent placement. for subplacement in placement.subplacements: if not subplacement.flags and not subplacement.explicit: - command = InputSectionDesc(subplacement.node.entity, subplacement.sections, - [e.node.entity for e in subplacement.exclusions], keep, sort, tied) + command = InputSectionDesc( + subplacement.node.entity, + subplacement.sections, + [e.node.entity for e in subplacement.exclusions], + keep, + sort, + tied, + ) commands[placement.target].append(command) for flag in surround_type: @@ -319,7 +333,20 @@ class ObjectNode(EntityNode): if obj_sections: symbol = entity.symbol - remove_sections = [s.replace('.*', '.%s' % symbol) for s in sections if '.*' in s] + remove_sections = [s.replace('.*', f'.{symbol}') for s in sections if '.*' in s] + # As part of IPA optimization, the compiler may perform + # constant propagation and generate specialized versions of a + # function. For example, for the function spiflash_start_core, + # the compiler might also generate a + # spiflash_start_core.constprop.0 symbol, which will be placed + # in a separate input section named + # .text.spiflash_start_core.constprop.0. Ensure that such + # generated functions are placed into the appropriate marker as + # well. + remove_sections_patterns = [s.replace('.*', f'.{symbol}.*') for s in sections if '.*' in s] + for pattern in remove_sections_patterns: + remove_sections.extend(fnmatch.filter(obj_sections, pattern)) + filtered_sections = [s for s in obj_sections if s not in remove_sections] if set(filtered_sections) != set(obj_sections): @@ -404,7 +431,7 @@ class Generation: for scheme in self.schemes.values(): sections_bucket = collections.defaultdict(list) - for (sections_name, target_name) in scheme.entries: + for sections_name, target_name in scheme.entries: # Get the sections under the bucket 'target_name'. If this bucket does not exist # is created automatically sections_in_bucket = sections_bucket[target_name] @@ -420,7 +447,7 @@ class Generation: scheme_dictionary[scheme.name] = sections_bucket # Search for and raise exception on first instance of sections mapped to multiple targets - for (scheme_name, sections_bucket) in scheme_dictionary.items(): + for scheme_name, sections_bucket in scheme_dictionary.items(): for sections_a, sections_b in itertools.combinations(sections_bucket.values(), 2): set_a = set() set_b = set() @@ -453,15 +480,17 @@ class Generation: for mapping in self.mappings.values(): archive = mapping.archive - for (obj, symbol, scheme_name) in mapping.entries: + for obj, symbol, scheme_name in mapping.entries: entity = Entity(archive, obj, symbol) # Check the entity exists - if (self.check_mappings - and entity.specificity.value > Entity.Specificity.ARCHIVE.value - and mapping.name not in self.check_mapping_exceptions): + if ( + self.check_mappings + and entity.specificity.value > Entity.Specificity.ARCHIVE.value + and mapping.name not in self.check_mapping_exceptions + ): if not entities.check_exists(entity): - message = "'%s' not found" % str(entity) + message = f"'{entity}' not found" raise GenerationException(message, mapping) if (obj, symbol, scheme_name) in mapping.flags.keys(): @@ -469,16 +498,16 @@ class Generation: # Check if all section->target defined in the current # scheme. for flag in flags: - if (flag.target not in scheme_dictionary[scheme_name].keys() - or flag.section not in - [_s.name for _s in scheme_dictionary[scheme_name][flag.target]]): - message = "%s->%s not defined in scheme '%s'" % (flag.section, flag.target, scheme_name) + if flag.target not in scheme_dictionary[scheme_name].keys() or flag.section not in [ + _s.name for _s in scheme_dictionary[scheme_name][flag.target] + ]: + message = f"{flag.section}->{flag.target} not defined in scheme '{scheme_name}'" raise GenerationException(message, mapping) else: flags = None # Create placement for each 'section -> target' in the scheme. - for (target, sections) in scheme_dictionary[scheme_name].items(): + for target, sections in scheme_dictionary[scheme_name].items(): for section in sections: # Find the applicable flags _flags = [] @@ -509,9 +538,9 @@ class Generation: if _flags or existing.flags: if (_flags and not existing.flags) or (not _flags and existing.flags): _flags.extend(existing.flags) - entity_mappings[key] = Generation.EntityMapping(entity, - sections_str, - target, _flags) + entity_mappings[key] = Generation.EntityMapping( + entity, sections_str, target, _flags + ) elif _flags == existing.flags: pass else: @@ -552,8 +581,7 @@ class Generation: if fragment.name in dict_to_append_to: stored = dict_to_append_to[fragment.name].path new = fragment.path - message = "Duplicate definition of fragment '%s' found in %s and %s." % ( - fragment.name, stored, new) + message = f"Duplicate definition of fragment '{fragment.name}' found in {stored} and {new}." raise GenerationException(message) dict_to_append_to[fragment.name] = fragment @@ -573,6 +601,6 @@ class GenerationException(LdGenFailure): def __str__(self): if self.fragment: - return "%s\nIn fragment '%s' defined in '%s'." % (self.message, self.fragment.name, self.fragment.path) + return f"{self.message}\nIn fragment '{self.fragment.name}' defined in '{self.fragment.path}'." else: return self.message diff --git a/tools/ldgen/test/data/libspi_flash.a.txt b/tools/ldgen/test/data/libspi_flash.a.txt new file mode 100644 index 0000000000..3b626cfcb9 --- /dev/null +++ b/tools/ldgen/test/data/libspi_flash.a.txt @@ -0,0 +1,1242 @@ +In archive ./build/esp-idf/spi_flash/libspi_flash.a: + +flash_brownout_hook.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.spi_flash_needs_reset_check 00000020 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.spi_flash_set_erasing_flag 0000000a 00000000 00000000 00000054 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .text.spi_flash_brownout_need_reset 00000014 00000000 00000000 0000005e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .sbss.flash_erasing 00000001 00000000 00000000 00000072 2**0 + ALLOC + 7 .sbss.flash_brownout_needs_reset 00000001 00000000 00000000 00000072 2**0 + ALLOC + 8 .debug_info 000001eb 00000000 00000000 00000072 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 9 .debug_abbrev 0000012a 00000000 00000000 0000025d 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 10 .debug_aranges 00000030 00000000 00000000 00000387 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 11 .debug_ranges 00000020 00000000 00000000 000003b7 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 12 .debug_line 0000024b 00000000 00000000 000003d7 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 13 .debug_str 00000406 00000000 00000000 00000622 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .comment 00000030 00000000 00000000 00000a28 2**0 + CONTENTS, READONLY + 15 .note.GNU-stack 00000000 00000000 00000000 00000a58 2**0 + CONTENTS, READONLY + 16 .debug_frame 00000040 00000000 00000000 00000a58 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 17 .riscv.attributes 00000065 00000000 00000000 00000a98 2**0 + CONTENTS, READONLY + +spi_flash_chip_drivers.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .rodata.spi_flash_chip_list_check.str1.4 000000c5 00000000 00000000 00000034 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 4 .text.spi_flash_chip_list_check 00000144 00000000 00000000 000000fa 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .sdata.esp_flash_registered_chips 00000004 00000000 00000000 00000240 2**2 + CONTENTS, ALLOC, LOAD, RELOC, DATA + 6 .data.default_registered_chips 00000010 00000000 00000000 00000244 2**2 + CONTENTS, ALLOC, LOAD, RELOC, DATA + 7 .debug_info 00000f1b 00000000 00000000 00000254 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 8 .debug_abbrev 00000258 00000000 00000000 0000116f 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 9 .debug_loc 00000113 00000000 00000000 000013c7 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 10 .debug_aranges 00000020 00000000 00000000 000014da 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 11 .debug_ranges 00000010 00000000 00000000 000014fa 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 12 .debug_line 00000784 00000000 00000000 0000150a 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 13 .debug_str 00000b95 00000000 00000000 00001c8e 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .comment 00000030 00000000 00000000 00002823 2**0 + CONTENTS, READONLY + 15 .note.GNU-stack 00000000 00000000 00000000 00002853 2**0 + CONTENTS, READONLY + 16 .debug_frame 00000038 00000000 00000000 00002854 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 17 .riscv.attributes 00000065 00000000 00000000 0000288c 2**0 + CONTENTS, READONLY + +spi_flash_chip_generic.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.spi_flash_chip_generic_detect_size 00000032 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.spi_flash_chip_generic_probe 00000004 00000000 00000000 00000066 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 5 .text.spi_flash_chip_generic_reset 00000060 00000000 00000000 0000006a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .text.spi_flash_chip_generic_erase_chip 00000088 00000000 00000000 000000ca 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .text.spi_flash_chip_generic_set_write_protect 0000004c 00000000 00000000 00000152 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .text.spi_flash_chip_generic_read_reg 0000000a 00000000 00000000 0000019e 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 9 .text.spi_flash_chip_generic_wait_idle 000000a4 00000000 00000000 000001a8 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 10 .text.spi_flash_chip_generic_config_host_io_mode 0000013e 00000000 00000000 0000024c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 11 .text.spi_flash_chip_generic_get_caps 00000086 00000000 00000000 0000038a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 12 .text.spi_flash_chip_generic_suspend_cmd_conf 00000024 00000000 00000000 00000410 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 13 .rodata.spi_flash_chip_generic_read.str1.4 00000039 00000000 00000000 00000434 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 14 .text.spi_flash_chip_generic_read 000000ec 00000000 00000000 0000046e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 15 .text.spi_flash_chip_generic_write 000000b6 00000000 00000000 0000055a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 16 .text.spi_flash_chip_generic_yield 0000004a 00000000 00000000 00000610 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 17 .rodata.spi_flash_chip_generic_read_unique_id.str1.4 00000048 00000000 00000000 0000065c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 18 .text.spi_flash_chip_generic_read_unique_id 000000b0 00000000 00000000 000006a4 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 19 .text.spi_flash_chip_generic_get_write_protect 0000003a 00000000 00000000 00000754 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 20 .text.spi_flash_chip_generic_write_encrypted 000000f4 00000000 00000000 0000078e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 21 .text.spi_flash_common_read_qe_sr.constprop.0.isra.0 00000048 00000000 00000000 00000882 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 22 .text.spi_flash_common_read_status_16b_rdsr_rdsr2 00000048 00000000 00000000 000008ca 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 23 .text.spi_flash_common_write_qe_sr.isra.0 00000046 00000000 00000000 00000912 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 24 .text.spi_flash_common_write_status_16b_wrsr 00000010 00000000 00000000 00000958 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 25 .text.spi_flash_chip_generic_erase_block 000000cc 00000000 00000000 00000968 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 26 .text.spi_flash_chip_generic_erase_sector 000000cc 00000000 00000000 00000a34 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 27 .text.spi_flash_chip_generic_page_program 000000ba 00000000 00000000 00000b00 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 28 .text.spi_flash_chip_generic_read_unique_id_none 00000006 00000000 00000000 00000bba 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 29 .text.spi_flash_common_read_status_8b_rdsr2 00000010 00000000 00000000 00000bc0 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 30 .text.spi_flash_chip_generic_get_io_mode 00000024 00000000 00000000 00000bd0 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 31 .text.spi_flash_common_read_status_8b_rdsr 0000000e 00000000 00000000 00000bf4 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 32 .text.spi_flash_common_write_status_8b_wrsr 00000010 00000000 00000000 00000c02 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 33 .text.spi_flash_common_write_status_8b_wrsr2 00000012 00000000 00000000 00000c12 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 34 .text.spi_flash_common_set_io_mode 000000a2 00000000 00000000 00000c24 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 35 .text.spi_flash_chip_generic_set_io_mode 0000001c 00000000 00000000 00000cc6 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 36 .rodata.esp_flash_chip_generic 0000007c 00000000 00000000 00000ce4 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 37 .srodata.chip_name 00000008 00000000 00000000 00000d60 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 38 .rodata.TAG 0000000d 00000000 00000000 00000d68 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 39 .dram1.5 00000014 00000000 00000000 00000d78 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 40 .dram1.4 00000018 00000000 00000000 00000d8c 2**2 + CONTENTS, ALLOC, LOAD, RELOC, DATA + 41 .dram1.3 00000004 00000000 00000000 00000da4 2**2 + CONTENTS, ALLOC, LOAD, RELOC, DATA + 42 .dram1.2 00000004 00000000 00000000 00000da8 2**2 + CONTENTS, ALLOC, LOAD, RELOC, DATA + 43 .dram1.1 00000006 00000000 00000000 00000dac 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 44 .dram1.0 00000006 00000000 00000000 00000db4 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 45 .debug_info 00003096 00000000 00000000 00000dba 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 46 .debug_abbrev 00000616 00000000 00000000 00003e50 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 47 .debug_loc 00002153 00000000 00000000 00004466 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 48 .debug_aranges 00000110 00000000 00000000 000065b9 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 49 .debug_ranges 000001f0 00000000 00000000 000066c9 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 50 .debug_line 000024e8 00000000 00000000 000068b9 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 51 .debug_str 0000240c 00000000 00000000 00008da1 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 52 .comment 00000030 00000000 00000000 0000b1ad 2**0 + CONTENTS, READONLY + 53 .note.GNU-stack 00000000 00000000 00000000 0000b1dd 2**0 + CONTENTS, READONLY + 54 .debug_frame 00000484 00000000 00000000 0000b1e0 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 55 .riscv.attributes 00000065 00000000 00000000 0000b664 2**0 + CONTENTS, READONLY + +spi_flash_chip_issi.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.spi_flash_chip_issi_probe 00000018 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.spi_flash_chip_issi_get_caps 00000004 00000000 00000000 0000004c 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 5 .text.spi_flash_chip_issi_set_io_mode 0000001c 00000000 00000000 00000050 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .text.spi_flash_chip_issi_get_io_mode 00000024 00000000 00000000 0000006c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .rodata.esp_flash_chip_issi 0000007c 00000000 00000000 00000090 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 8 .srodata.chip_name 00000005 00000000 00000000 0000010c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 9 .debug_info 0000103d 00000000 00000000 00000111 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 10 .debug_abbrev 00000260 00000000 00000000 0000114e 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 11 .debug_loc 00000124 00000000 00000000 000013ae 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 12 .debug_aranges 00000038 00000000 00000000 000014d2 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 13 .debug_ranges 00000028 00000000 00000000 0000150a 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 14 .debug_line 0000043f 00000000 00000000 00001532 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 15 .debug_str 00000d47 00000000 00000000 00001971 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .comment 00000030 00000000 00000000 000026b8 2**0 + CONTENTS, READONLY + 17 .note.GNU-stack 00000000 00000000 00000000 000026e8 2**0 + CONTENTS, READONLY + 18 .debug_frame 00000060 00000000 00000000 000026e8 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 19 .riscv.attributes 00000065 00000000 00000000 00002748 2**0 + CONTENTS, READONLY + +spi_flash_chip_mxic.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.spi_flash_chip_mxic_probe 00000022 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.spi_flash_chip_mxic_detect_size 00000034 00000000 00000000 00000056 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .text.spi_flash_chip_mxic_get_caps 00000004 00000000 00000000 0000008a 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 6 .rodata.esp_flash_chip_mxic 0000007c 00000000 00000000 00000090 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 7 .srodata.chip_name 00000005 00000000 00000000 0000010c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .debug_info 0000137d 00000000 00000000 00000111 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 9 .debug_abbrev 00000229 00000000 00000000 0000148e 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 10 .debug_loc 00000165 00000000 00000000 000016b7 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 11 .debug_aranges 00000030 00000000 00000000 0000181c 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 12 .debug_ranges 00000020 00000000 00000000 0000184c 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 13 .debug_line 0000053d 00000000 00000000 0000186c 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 14 .debug_str 00001acb 00000000 00000000 00001da9 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .comment 00000030 00000000 00000000 00003874 2**0 + CONTENTS, READONLY + 16 .note.GNU-stack 00000000 00000000 00000000 000038a4 2**0 + CONTENTS, READONLY + 17 .debug_frame 00000040 00000000 00000000 000038a4 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 18 .riscv.attributes 00000065 00000000 00000000 000038e4 2**0 + CONTENTS, READONLY + +spi_flash_chip_gd.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.spi_flash_chip_gd_get_caps 00000014 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 4 .text.spi_flash_chip_gd_detect_size 00000026 00000000 00000000 00000048 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .text.spi_flash_chip_gd_suspend_cmd_conf 00000024 00000000 00000000 0000006e 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 6 .text.spi_flash_chip_gd_get_io_mode 00000024 00000000 00000000 00000092 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .text.spi_flash_chip_gd_probe 0000003c 00000000 00000000 000000b6 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .text.spi_flash_chip_gd_set_io_mode 00000050 00000000 00000000 000000f2 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 9 .rodata.esp_flash_chip_gd 0000007c 00000000 00000000 00000144 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 10 .srodata.chip_name 00000003 00000000 00000000 000001c0 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 11 .debug_info 000011c7 00000000 00000000 000001c3 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 12 .debug_abbrev 00000333 00000000 00000000 0000138a 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_loc 00000300 00000000 00000000 000016bd 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00000048 00000000 00000000 000019bd 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 15 .debug_ranges 00000068 00000000 00000000 00001a05 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 16 .debug_line 0000060a 00000000 00000000 00001a6d 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 17 .debug_str 00000ddc 00000000 00000000 00002077 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .comment 00000030 00000000 00000000 00002e53 2**0 + CONTENTS, READONLY + 19 .note.GNU-stack 00000000 00000000 00000000 00002e83 2**0 + CONTENTS, READONLY + 20 .debug_frame 0000008c 00000000 00000000 00002e84 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 21 .riscv.attributes 00000065 00000000 00000000 00002f10 2**0 + CONTENTS, READONLY + +spi_flash_chip_winbond.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.spi_flash_chip_winbond_probe 00000012 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.spi_flash_chip_winbond_get_caps 00000014 00000000 00000000 00000046 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 5 .text.spi_flash_chip_winbond_suspend_cmd_conf 00000024 00000000 00000000 0000005a 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 6 .rodata.spi_flash_chip_winbond_read.str1.4 00000039 00000000 00000000 00000080 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .text.spi_flash_chip_winbond_read 000000ec 00000000 00000000 000000ba 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .text.spi_flash_chip_winbond_erase_block 000000e6 00000000 00000000 000001a6 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 9 .text.spi_flash_chip_winbond_erase_sector 000000e2 00000000 00000000 0000028c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 10 .text.spi_flash_chip_winbond_page_program 000000b4 00000000 00000000 0000036e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 11 .rodata.esp_flash_chip_winbond 0000007c 00000000 00000000 00000424 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 12 .srodata.chip_name 00000008 00000000 00000000 000004a0 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 13 .srodata.TAG 00000008 00000000 00000000 000004a8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 14 .debug_info 00001764 00000000 00000000 000004b0 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 15 .debug_abbrev 000003c5 00000000 00000000 00001c14 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_loc 000009ea 00000000 00000000 00001fd9 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 17 .debug_aranges 00000050 00000000 00000000 000029c3 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 18 .debug_ranges 00000078 00000000 00000000 00002a13 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 19 .debug_line 00000d8c 00000000 00000000 00002a8b 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 20 .debug_str 00000eb0 00000000 00000000 00003817 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .comment 00000030 00000000 00000000 000046c7 2**0 + CONTENTS, READONLY + 22 .note.GNU-stack 00000000 00000000 00000000 000046f7 2**0 + CONTENTS, READONLY + 23 .debug_frame 00000150 00000000 00000000 000046f8 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 24 .riscv.attributes 00000065 00000000 00000000 00004848 2**0 + CONTENTS, READONLY + +spi_flash_chip_boya.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.spi_flash_chip_boya_probe 00000014 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.spi_flash_chip_boya_get_caps 00000004 00000000 00000000 00000048 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 5 .rodata.esp_flash_chip_boya 0000007c 00000000 00000000 0000004c 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 6 .srodata.chip_name 00000005 00000000 00000000 000000c8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .debug_info 00000f04 00000000 00000000 000000cd 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 8 .debug_abbrev 000001f8 00000000 00000000 00000fd1 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 9 .debug_loc 00000081 00000000 00000000 000011c9 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 10 .debug_aranges 00000028 00000000 00000000 0000124a 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 11 .debug_ranges 00000018 00000000 00000000 00001272 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 12 .debug_line 00000384 00000000 00000000 0000128a 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 13 .debug_str 00000ca6 00000000 00000000 0000160e 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .comment 00000030 00000000 00000000 000022b4 2**0 + CONTENTS, READONLY + 15 .note.GNU-stack 00000000 00000000 00000000 000022e4 2**0 + CONTENTS, READONLY + 16 .debug_frame 00000030 00000000 00000000 000022e4 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 17 .riscv.attributes 00000065 00000000 00000000 00002314 2**0 + CONTENTS, READONLY + +spi_flash_chip_mxic_opi.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.spi_flash_chip_mxic_opi_probe 00000020 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.spi_flash_chip_mxic_opi_detect_size 0000002c 00000000 00000000 00000054 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .text.spi_flash_chip_mxic_opi_get_caps 00000004 00000000 00000000 00000080 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 6 .text.spi_flash_chip_mxic_opi_set_write_protect 00000074 00000000 00000000 00000084 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .text.spi_flash_chip_mxic_opi_erase_chip 00000086 00000000 00000000 000000f8 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .text.spi_flash_chip_mxic_opi_erase_sector 00000090 00000000 00000000 0000017e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 9 .text.spi_flash_chip_mxic_opi_erase_block 00000090 00000000 00000000 0000020e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 10 .text.spi_flash_chip_xmic_opi_set_io_mode 00000004 00000000 00000000 0000029e 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 11 .text.spi_flash_chip_xmic_opi_config_host_io_mode 0000003a 00000000 00000000 000002a2 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 12 .text.spi_flash_chip_mxic_opi_write 000000b6 00000000 00000000 000002dc 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 13 .text.spi_flash_chip_mxic_opi_page_program 00000098 00000000 00000000 00000392 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 14 .text.spi_flash_chip_mxic_opi_get_data_length_zoom.part.0 00000014 00000000 00000000 0000042a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 15 .rodata.spi_flash_chip_mxic_opi_read_id.str1.4 0000001a 00000000 00000000 00000440 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 16 .text.spi_flash_chip_mxic_opi_read_id 000000fa 00000000 00000000 0000045a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 17 .text.spi_flash_chip_mxic_opi_get_write_protect 00000034 00000000 00000000 00000554 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 18 .text.spi_flash_chip_mxic_opi_get_io_mode 00000094 00000000 00000000 00000588 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 19 .text.spi_flash_chip_mxic_opi_read_reg 00000074 00000000 00000000 0000061c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 20 .rodata.esp_flash_chip_mxic_opi 0000007c 00000000 00000000 00000690 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 21 .rodata.chip_name 0000000b 00000000 00000000 0000070c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 22 .debug_info 00001fa4 00000000 00000000 00000717 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 23 .debug_abbrev 000004d6 00000000 00000000 000026bb 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 24 .debug_loc 00000efe 00000000 00000000 00002b91 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 25 .debug_aranges 00000098 00000000 00000000 00003a8f 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 26 .debug_ranges 00000130 00000000 00000000 00003b27 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 27 .debug_line 0000144a 00000000 00000000 00003c57 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 28 .debug_str 00001d92 00000000 00000000 000050a1 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 29 .comment 00000030 00000000 00000000 00006e33 2**0 + CONTENTS, READONLY + 30 .note.GNU-stack 00000000 00000000 00000000 00006e63 2**0 + CONTENTS, READONLY + 31 .debug_frame 00000248 00000000 00000000 00006e64 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 32 .riscv.attributes 00000065 00000000 00000000 000070ac 2**0 + CONTENTS, READONLY + +spi_flash_chip_th.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.spi_flash_chip_th_probe 00000014 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.spi_flash_chip_th_get_caps 00000004 00000000 00000000 00000048 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 5 .rodata.esp_flash_chip_th 0000007c 00000000 00000000 0000004c 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 6 .srodata.chip_name 00000003 00000000 00000000 000000c8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .debug_info 00000f04 00000000 00000000 000000cb 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 8 .debug_abbrev 000001f8 00000000 00000000 00000fcf 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 9 .debug_loc 00000081 00000000 00000000 000011c7 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 10 .debug_aranges 00000028 00000000 00000000 00001248 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 11 .debug_ranges 00000018 00000000 00000000 00001270 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 12 .debug_line 00000382 00000000 00000000 00001288 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 13 .debug_str 00000c9e 00000000 00000000 0000160a 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .comment 00000030 00000000 00000000 000022a8 2**0 + CONTENTS, READONLY + 15 .note.GNU-stack 00000000 00000000 00000000 000022d8 2**0 + CONTENTS, READONLY + 16 .debug_frame 00000030 00000000 00000000 000022d8 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 17 .riscv.attributes 00000065 00000000 00000000 00002308 2**0 + CONTENTS, READONLY + +memspi_host_driver.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.memspi_host_read_status_hs 00000046 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.memspi_host_erase_chip 00000030 00000000 00000000 0000007a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .text.memspi_host_set_write_protect 0000003c 00000000 00000000 000000aa 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .text.memspi_host_write_data_slicer 0000003e 00000000 00000000 000000e6 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .text.memspi_host_read_data_slicer 00000032 00000000 00000000 00000124 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .rodata.memspi_host_read_id_hs.str1.4 0000001a 00000000 00000000 00000158 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 9 .text.memspi_host_read_id_hs 0000009c 00000000 00000000 00000172 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 10 .text.memspi_host_flush_cache 0000002a 00000000 00000000 0000020e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 11 .text.memspi_host_erase_sector.part.0 00000014 00000000 00000000 00000238 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 12 .text.memspi_host_erase_sector 0000004e 00000000 00000000 0000024c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 13 .text.memspi_host_erase_block 0000004e 00000000 00000000 0000029a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 14 .text.memspi_host_program_page 00000060 00000000 00000000 000002e8 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 15 .text.memspi_host_init_pointers 00000042 00000000 00000000 00000348 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 16 .text.memspi_host_read 0000004e 00000000 00000000 0000038a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 17 .srodata.TAG 00000007 00000000 00000000 000003d8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 18 .rodata.esp_flash_gpspi_host 00000058 00000000 00000000 000003e0 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 19 .dram1.0 00000058 00000000 00000000 00000438 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 20 .debug_info 00004863 00000000 00000000 00000490 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 21 .debug_abbrev 000004f3 00000000 00000000 00004cf3 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 22 .debug_loc 00000b18 00000000 00000000 000051e6 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 23 .debug_aranges 00000080 00000000 00000000 00005cfe 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 24 .debug_ranges 00000088 00000000 00000000 00005d7e 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 25 .debug_line 00000f72 00000000 00000000 00005e06 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 26 .debug_str 00003945 00000000 00000000 00006d78 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 27 .comment 00000030 00000000 00000000 0000a6bd 2**0 + CONTENTS, READONLY + 28 .note.GNU-stack 00000000 00000000 00000000 0000a6ed 2**0 + CONTENTS, READONLY + 29 .debug_frame 0000019c 00000000 00000000 0000a6f0 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 30 .riscv.attributes 00000065 00000000 00000000 0000a88c 2**0 + CONTENTS, READONLY + +spi_flash_blockdev.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.esp_flash_blockdev_ioctl 00000010 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 4 .text.esp_flash_blockdev_sync_noop 0000000e 00000000 00000000 00000044 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 5 .text.esp_flash_release_blockdev 0000001c 00000000 00000000 00000052 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .text.esp_flash_blockdev_erase 00000020 00000000 00000000 0000006e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .text.esp_flash_blockdev_write 00000034 00000000 00000000 0000008e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .text.esp_flash_blockdev_read 00000030 00000000 00000000 000000c2 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 9 .text.esp_flash_get_blockdev 0000008c 00000000 00000000 000000f2 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 10 .rodata.esp_flash_blockdev_ops 00000018 00000000 00000000 00000180 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 11 .debug_info 0000131a 00000000 00000000 00000198 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 12 .debug_abbrev 000002aa 00000000 00000000 000014b2 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_loc 00000741 00000000 00000000 0000175c 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00000050 00000000 00000000 00001e9d 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 15 .debug_ranges 00000040 00000000 00000000 00001eed 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 16 .debug_line 00000781 00000000 00000000 00001f2d 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 17 .debug_str 00000c80 00000000 00000000 000026ae 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .comment 00000030 00000000 00000000 0000332e 2**0 + CONTENTS, READONLY + 19 .note.GNU-stack 00000000 00000000 00000000 0000335e 2**0 + CONTENTS, READONLY + 20 .debug_frame 000000a8 00000000 00000000 00003360 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 21 .riscv.attributes 00000065 00000000 00000000 00003408 2**0 + CONTENTS, READONLY + +cache_utils.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .iram1.6 00000038 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.spi_flash_init_lock 00000002 00000000 00000000 0000006c 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 5 .text.spi_flash_op_lock 00000008 00000000 00000000 0000006e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .text.spi_flash_op_unlock 00000008 00000000 00000000 00000076 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .iram1.1 00000020 00000000 00000000 0000007e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .iram1.3 00000018 00000000 00000000 0000009e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 9 .iram1.4 00000008 00000000 00000000 000000b6 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 10 .iram1.5 00000012 00000000 00000000 000000be 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 11 .iram1.0 0000002a 00000000 00000000 000000d0 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 12 .iram1.2 00000022 00000000 00000000 000000fa 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 13 .iram1.7 0000000c 00000000 00000000 0000011c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 14 .sbss.s_flash_op_cache_state 00000008 00000000 00000000 00000128 2**2 + ALLOC + 15 .debug_info 0000051b 00000000 00000000 00000128 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 16 .debug_abbrev 0000026e 00000000 00000000 00000643 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_loc 0000010b 00000000 00000000 000008b1 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 18 .debug_aranges 00000078 00000000 00000000 000009bc 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 19 .debug_ranges 00000068 00000000 00000000 00000a34 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 20 .debug_line 00000688 00000000 00000000 00000a9c 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 21 .debug_str 0000060d 00000000 00000000 00001124 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 22 .comment 00000030 00000000 00000000 00001731 2**0 + CONTENTS, READONLY + 23 .note.GNU-stack 00000000 00000000 00000000 00001761 2**0 + CONTENTS, READONLY + 24 .debug_frame 00000118 00000000 00000000 00001764 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 25 .riscv.attributes 00000069 00000000 00000000 0000187c 2**0 + CONTENTS, READONLY + +flash_mmap.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.s_find_non_contiguous_block_nums 0000002a 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.s_pages_to_bytes 00000018 00000000 00000000 0000005e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .text.s_merge_contiguous_pages 00000066 00000000 00000000 00000076 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .iram1.0 00000050 00000000 00000000 000000dc 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .text.spi_flash_mmap 000000c6 00000000 00000000 0000012c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .text.spi_flash_mmap_pages 0000013c 00000000 00000000 000001f2 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 9 .text.spi_flash_munmap 0000005e 00000000 00000000 0000032e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 10 .text.spi_flash_mmap_dump 00000010 00000000 00000000 0000038c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 11 .text.spi_flash_mmap_get_free_pages 00000028 00000000 00000000 0000039c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 12 .iram1.1 00000076 00000000 00000000 000003c4 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 13 .text.spi_flash_cache2phys 00000028 00000000 00000000 0000043a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 14 .text.spi_flash_phys2cache 0000003e 00000000 00000000 00000462 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 15 .debug_info 00000f32 00000000 00000000 000004a0 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 16 .debug_abbrev 000003a9 00000000 00000000 000013d2 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_loc 00000e0b 00000000 00000000 0000177b 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 18 .debug_aranges 00000078 00000000 00000000 00002586 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 19 .debug_ranges 00000148 00000000 00000000 000025fe 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 20 .debug_line 00001069 00000000 00000000 00002746 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 21 .debug_str 000008aa 00000000 00000000 000037af 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 22 .comment 00000030 00000000 00000000 00004059 2**0 + CONTENTS, READONLY + 23 .note.GNU-stack 00000000 00000000 00000000 00004089 2**0 + CONTENTS, READONLY + 24 .debug_frame 000001d8 00000000 00000000 0000408c 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 25 .riscv.attributes 00000065 00000000 00000000 00004264 2**0 + CONTENTS, READONLY + +flash_ops.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .iram1.2 0000000a 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .iram1.3 0000000a 00000000 00000000 0000003e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .iram1.4 00000002 00000000 00000000 00000048 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 6 .iram1.5 00000004 00000000 00000000 0000004a 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 7 .iram1.6 00000002 00000000 00000000 0000004e 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 8 .text.esp_mspi_get_io 0000002a 00000000 00000000 00000050 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 9 .text.esp_mspi_pin_reserve 0000005c 00000000 00000000 0000007a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 10 .iram1.7 00000004 00000000 00000000 000000d6 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 11 .srodata.s_mspi_io_num_default 00000006 00000000 00000000 000000dc 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 12 .sbss.s_flash_guard_ops 00000004 00000000 00000000 000000e4 2**2 + ALLOC + 13 .dram1.1 00000008 00000000 00000000 000000e4 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 14 .dram1.0 00000008 00000000 00000000 000000ec 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 15 .debug_info 0000039f 00000000 00000000 000000f4 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 16 .debug_abbrev 00000279 00000000 00000000 00000493 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_loc 000000ec 00000000 00000000 0000070c 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 18 .debug_aranges 00000058 00000000 00000000 000007f8 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 19 .debug_ranges 00000068 00000000 00000000 00000850 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 20 .debug_line 000004f4 00000000 00000000 000008b8 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 21 .debug_str 0000061d 00000000 00000000 00000dac 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 22 .comment 00000030 00000000 00000000 000013c9 2**0 + CONTENTS, READONLY + 23 .note.GNU-stack 00000000 00000000 00000000 000013f9 2**0 + CONTENTS, READONLY + 24 .debug_frame 000000bc 00000000 00000000 000013fc 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 25 .riscv.attributes 00000065 00000000 00000000 000014b8 2**0 + CONTENTS, READONLY + +spi_flash_wrap.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.spi_flash_wrap_probe_c0 00000014 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.spi_flash_wrap_enable_c0 00000032 00000000 00000000 00000048 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .text.spi_flash_wrap_enable_77 0000004e 00000000 00000000 0000007a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .text.spi_flash_wrap_clear_c0 00000024 00000000 00000000 000000c8 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .text.spi_flash_wrap_clear_77 0000003e 00000000 00000000 000000ec 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .text.spi_flash_wrap_probe 0000003e 00000000 00000000 0000012a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 9 .text.spi_flash_wrap_enable 0000000c 00000000 00000000 00000168 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 10 .text.spi_flash_wrap_disable 0000000c 00000000 00000000 00000174 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 11 .rodata.spi_flash_support_wrap_size.str1.4 00000042 00000000 00000000 00000180 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 12 .text.spi_flash_support_wrap_size 00000074 00000000 00000000 000001c2 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 13 .sbss.chip_wrap 00000004 00000000 00000000 00000238 2**2 + ALLOC + 14 .rodata.str1.4 00000010 00000000 00000000 00000238 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 15 .rodata.spi_flash_wrap_list 00000020 00000000 00000000 00000248 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 16 .debug_info 00000b4c 00000000 00000000 00000268 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 17 .debug_abbrev 000002c5 00000000 00000000 00000db4 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_loc 0000026a 00000000 00000000 00001079 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 19 .debug_aranges 00000060 00000000 00000000 000012e3 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 20 .debug_ranges 00000050 00000000 00000000 00001343 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 21 .debug_line 000007f4 00000000 00000000 00001393 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 22 .debug_str 0000153f 00000000 00000000 00001b87 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 23 .comment 00000030 00000000 00000000 000030c6 2**0 + CONTENTS, READONLY + 24 .note.GNU-stack 00000000 00000000 00000000 000030f6 2**0 + CONTENTS, READONLY + 25 .debug_frame 000000fc 00000000 00000000 000030f8 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 26 .riscv.attributes 00000065 00000000 00000000 000031f4 2**0 + CONTENTS, READONLY + +esp_flash_api.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.spiflash_end_default 00000022 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .text.flash_end_flush_cache 00000064 00000000 00000000 00000056 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .text.read_unique_id 00000042 00000000 00000000 000000ba 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .text.find_region 00000058 00000000 00000000 000000fc 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .text.spiflash_start_core.constprop.0 0000002c 00000000 00000000 00000154 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .text.spiflash_start_default 00000008 00000000 00000000 00000180 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 9 .text.esp_flash_chip_driver_initialized 00000008 00000000 00000000 00000188 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 10 .text.check_chip_pointer_default 00000036 00000000 00000000 00000190 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 11 .rodata.detect_spi_flash_chip.str1.4 0000001f 00000000 00000000 000001c8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 12 .text.detect_spi_flash_chip 000000b6 00000000 00000000 000001e8 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 13 .iram1.3 00000096 00000000 00000000 0000029e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 14 .text.esp_flash_read_chip_id 0000000a 00000000 00000000 00000334 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 15 .text.esp_flash_read_id 0000003e 00000000 00000000 0000033e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 16 .rodata.esp_flash_read_unique_chip_id.str1.4 0000007b 00000000 00000000 0000037c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 17 .text.esp_flash_read_unique_chip_id 000000ac 00000000 00000000 000003f8 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 18 .text.esp_flash_get_physical_size 00000066 00000000 00000000 000004a4 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 19 .rodata.esp_flash_init.str1.4 000000b2 00000000 00000000 0000050c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 20 .text.esp_flash_init 00000188 00000000 00000000 000005be 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 21 .text.esp_flash_init_main 000001be 00000000 00000000 00000746 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 22 .text.esp_flash_get_size 0000003c 00000000 00000000 00000904 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 23 .text.esp_flash_erase_region 00000200 00000000 00000000 00000940 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 24 .rodata.esp_flash_erase_chip.str1.4 0000003d 00000000 00000000 00000b40 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 25 .text.esp_flash_erase_chip 00000064 00000000 00000000 00000b7e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 26 .text.esp_flash_get_chip_write_protect 00000058 00000000 00000000 00000be2 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 27 .text.esp_flash_set_chip_write_protect 00000050 00000000 00000000 00000c3a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 28 .text.esp_flash_get_protectable_regions 0000004c 00000000 00000000 00000c8a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 29 .text.esp_flash_get_protected_region 000000a2 00000000 00000000 00000cd6 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 30 .text.esp_flash_set_protected_region 000000b0 00000000 00000000 00000d78 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 31 .text.esp_flash_read 00000122 00000000 00000000 00000e28 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 32 .text.esp_flash_write 000001a8 00000000 00000000 00000f4a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 33 .text.esp_flash_read_encrypted 00000090 00000000 00000000 000010f2 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 34 .text.esp_flash_get_io_mode 00000062 00000000 00000000 00001182 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 35 .text.esp_flash_set_io_mode 00000054 00000000 00000000 000011e4 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 36 .text.esp_flash_write_encrypted 0000025e 00000000 00000000 00001238 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 37 .rodata.esp_flash_suspend_cmd_init.str1.4 000000c0 00000000 00000000 00001498 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 38 .text.esp_flash_suspend_cmd_init 000000c0 00000000 00000000 00001558 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 39 .text.esp_flash_app_disable_protect 0000001c 00000000 00000000 00001618 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 40 .dram1.13 0000001b 00000000 00000000 00001634 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 41 .dram1.11 00000021 00000000 00000000 00001650 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 42 .dram1.9 0000003b 00000000 00000000 00001674 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 43 .dram1.7 0000003e 00000000 00000000 000016b0 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 44 .dram1.5 0000001b 00000000 00000000 000016f0 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 45 .dram1.2 00000004 00000000 00000000 0000170c 2**2 + CONTENTS, ALLOC, LOAD, RELOC, DATA + 46 .dram1.1 00000010 00000000 00000000 00001710 2**2 + CONTENTS, ALLOC, LOAD, RELOC, DATA + 47 .rodata.io_mode_str 000000b4 00000000 00000000 00001720 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 48 .dram1.0 0000000a 00000000 00000000 000017d4 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 49 .debug_info 0000519c 00000000 00000000 000017de 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 50 .debug_abbrev 0000063c 00000000 00000000 0000697a 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 51 .debug_loc 00002432 00000000 00000000 00006fb6 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 52 .debug_aranges 00000118 00000000 00000000 000093e8 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 53 .debug_ranges 00000318 00000000 00000000 00009500 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 54 .debug_line 00003c0e 00000000 00000000 00009818 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 55 .debug_str 00003475 00000000 00000000 0000d426 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 56 .comment 00000030 00000000 00000000 0001089b 2**0 + CONTENTS, READONLY + 57 .note.GNU-stack 00000000 00000000 00000000 000108cb 2**0 + CONTENTS, READONLY + 58 .debug_frame 00000580 00000000 00000000 000108cc 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 59 .riscv.attributes 00000065 00000000 00000000 00010e4c 2**0 + CONTENTS, READONLY + +esp_flash_spi_init.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.use_bus_lock 00000006 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 4 .text.bus_using_iomux 00000072 00000000 00000000 0000003a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .text.cs_using_iomux 0000003e 00000000 00000000 000000ac 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .text.get_host_id_from_chip 0000002a 00000000 00000000 000000ea 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .rodata.acquire_spi_device.str1.4 00000087 00000000 00000000 00000114 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .text.acquire_spi_device 000000f8 00000000 00000000 0000019c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 9 .iram1.0 00000132 00000000 00000000 00000294 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 10 .text.deinit_gpspi_clock 0000005c 00000000 00000000 000003c6 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 11 .text.s_spi_find_clock_src_pre_div.constprop.0 00000034 00000000 00000000 00000422 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 12 .text.init_gpspi_clock 000000ce 00000000 00000000 00000456 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 13 .text.spi_bus_remove_flash_device 00000050 00000000 00000000 00000524 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 14 .text.spi_bus_add_flash_device 00000154 00000000 00000000 00000574 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 15 .rodata.esp_flash_init_default_chip.str1.4 00000124 00000000 00000000 000006c8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 16 .text.esp_flash_init_default_chip 000001ca 00000000 00000000 000007ec 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 17 .text.esp_flash_app_init 00000030 00000000 00000000 000009b6 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 18 .rodata.__FUNCTION__.0 0000001c 00000000 00000000 000009e8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 19 .dram1.2 00000024 00000000 00000000 00000a04 2**2 + CONTENTS, ALLOC, LOAD, RELOC, DATA + 20 .dram1.1 00000030 00000000 00000000 00000a28 2**2 + CONTENTS, ALLOC, LOAD, DATA + 21 .sbss.esp_flash_default_chip 00000004 00000000 00000000 00000a58 2**2 + ALLOC + 22 .rodata.TAG 0000000a 00000000 00000000 00000a58 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 23 .debug_info 0000b318 00000000 00000000 00000a62 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 24 .debug_abbrev 00000732 00000000 00000000 0000bd7a 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 25 .debug_loc 00000a1d 00000000 00000000 0000c4ac 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 26 .debug_aranges 00000080 00000000 00000000 0000cec9 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 27 .debug_ranges 00000158 00000000 00000000 0000cf49 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 28 .debug_line 00001ae5 00000000 00000000 0000d0a1 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 29 .debug_str 000076a1 00000000 00000000 0000eb86 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 30 .comment 00000030 00000000 00000000 00016227 2**0 + CONTENTS, READONLY + 31 .note.GNU-stack 00000000 00000000 00000000 00016257 2**0 + CONTENTS, READONLY + 32 .debug_frame 000001d8 00000000 00000000 00016258 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 33 .riscv.attributes 00000065 00000000 00000000 00016430 2**0 + CONTENTS, READONLY + +spi_flash_os_func_app.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.use_bus_lock 00000006 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 4 .text.spi_flash_os_yield 00000034 00000000 00000000 0000003a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .text.spi_flash_os_check_yield 00000062 00000000 00000000 0000006e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .text.release_buffer_malloc 0000000a 00000000 00000000 000000d0 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 7 .text.get_buffer_malloc 00000054 00000000 00000000 000000da 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .text.delay_us 00000016 00000000 00000000 0000012e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 9 .iram1.3 0000000a 00000000 00000000 00000144 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 10 .text.spi23_end 0000002a 00000000 00000000 0000014e 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 11 .iram1.2 00000032 00000000 00000000 00000178 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 12 .text.spi23_start 00000008 00000000 00000000 000001aa 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 13 .text.main_flash_op_status 0000000a 00000000 00000000 000001b2 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 14 .text.main_flash_region_protected 00000046 00000000 00000000 000001bc 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 15 .iram1.1 00000008 00000000 00000000 00000202 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 16 .iram1.4 00000016 00000000 00000000 0000020a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 17 .iram1.0 00000008 00000000 00000000 00000220 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 18 .iram1.5 00000024 00000000 00000000 00000228 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 19 .text.esp_flash_init_os_functions 00000084 00000000 00000000 0000024c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 20 .text.esp_flash_deinit_os_functions 0000002c 00000000 00000000 000002d0 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 21 .text.esp_flash_init_main_bus_lock 00000006 00000000 00000000 000002fc 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 22 .text.esp_flash_app_enable_os_functions 00000032 00000000 00000000 00000302 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 23 .text.esp_flash_set_dangerous_write_protection 0000001a 00000000 00000000 00000334 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 24 .rodata.esp_flash_spi23_default_os_functions 00000028 00000000 00000000 00000350 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 25 .dram1.7 00000028 00000000 00000000 00000378 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 26 .dram1.6 00000014 00000000 00000000 000003a0 2**2 + CONTENTS, ALLOC, LOAD, DATA + 27 .debug_info 0000148e 00000000 00000000 000003b4 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 28 .debug_abbrev 000004a9 00000000 00000000 00001842 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 29 .debug_loc 00000a2e 00000000 00000000 00001ceb 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 30 .debug_aranges 000000c0 00000000 00000000 00002719 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 31 .debug_ranges 000000c8 00000000 00000000 000027d9 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 32 .debug_line 00000f25 00000000 00000000 000028a1 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 33 .debug_str 00000d86 00000000 00000000 000037c6 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 34 .comment 00000030 00000000 00000000 0000454c 2**0 + CONTENTS, READONLY + 35 .note.GNU-stack 00000000 00000000 00000000 0000457c 2**0 + CONTENTS, READONLY + 36 .debug_frame 00000238 00000000 00000000 0000457c 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 37 .riscv.attributes 00000065 00000000 00000000 000047b4 2**0 + CONTENTS, READONLY + +spi_flash_os_func_noos.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .text.delay_us 00000016 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 4 .iram1.1 00000022 00000000 00000000 0000004a 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 5 .iram1.0 00000022 00000000 00000000 0000006c 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 6 .text.get_temp_buffer_not_supported 00000004 00000000 00000000 0000008e 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 7 .text.esp_flash_app_disable_os_functions 0000000e 00000000 00000000 00000092 2**1 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE + 8 .dram1.2 00000028 00000000 00000000 000000a0 2**2 + CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA + 9 .debug_info 00000aa8 00000000 00000000 000000c8 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 10 .debug_abbrev 00000293 00000000 00000000 00000b70 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 11 .debug_loc 0000012d 00000000 00000000 00000e03 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 12 .debug_aranges 00000040 00000000 00000000 00000f30 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 13 .debug_ranges 00000050 00000000 00000000 00000f70 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 14 .debug_line 000005b4 00000000 00000000 00000fc0 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 15 .debug_str 000008a4 00000000 00000000 00001574 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .comment 00000030 00000000 00000000 00001e18 2**0 + CONTENTS, READONLY + 17 .note.GNU-stack 00000000 00000000 00000000 00001e48 2**0 + CONTENTS, READONLY + 18 .debug_frame 00000084 00000000 00000000 00001e48 2**2 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 19 .riscv.attributes 00000069 00000000 00000000 00001ecc 2**0 + CONTENTS, READONLY + +spi_flash_freq_limit.c.obj: file format elf32-little + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000000 00000000 00000000 00000034 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00000000 00000000 00000034 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 00000000 00000000 00000000 00000034 2**0 + ALLOC + 3 .debug_info 00000079 00000000 00000000 00000034 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 4 .debug_abbrev 00000026 00000000 00000000 000000ad 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 5 .debug_aranges 00000018 00000000 00000000 000000d3 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 6 .debug_line 00000072 00000000 00000000 000000eb 2**0 + CONTENTS, RELOC, READONLY, DEBUGGING, OCTETS + 7 .debug_str 000002ac 00000000 00000000 0000015d 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 8 .comment 00000030 00000000 00000000 00000409 2**0 + CONTENTS, READONLY + 9 .note.GNU-stack 00000000 00000000 00000000 00000439 2**0 + CONTENTS, READONLY + 10 .riscv.attributes 00000065 00000000 00000000 00000439 2**0 + CONTENTS, READONLY diff --git a/tools/ldgen/test/test_generation.py b/tools/ldgen/test/test_generation.py index 209621d83d..b4ea0588c2 100755 --- a/tools/ldgen/test/test_generation.py +++ b/tools/ldgen/test/test_generation.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD +# SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD # SPDX-License-Identifier: Apache-2.0 # import collections @@ -12,19 +12,27 @@ import unittest from io import StringIO try: - from ldgen.entity import Entity, EntityDB + from ldgen.entity import Entity + from ldgen.entity import EntityDB from ldgen.fragments import parse_fragment_file - from ldgen.generation import Generation, GenerationException + from ldgen.generation import Generation + from ldgen.generation import GenerationException from ldgen.linker_script import LinkerScript - from ldgen.output_commands import AlignAtAddress, InputSectionDesc, SymbolAtAddress + from ldgen.output_commands import AlignAtAddress + from ldgen.output_commands import InputSectionDesc + from ldgen.output_commands import SymbolAtAddress from ldgen.sdkconfig import SDKConfig except ImportError: sys.path.append(os.path.dirname(os.path.dirname(__file__))) - from ldgen.entity import Entity, EntityDB + from ldgen.entity import Entity + from ldgen.entity import EntityDB from ldgen.fragments import parse_fragment_file - from ldgen.generation import Generation, GenerationException + from ldgen.generation import Generation + from ldgen.generation import GenerationException from ldgen.linker_script import LinkerScript - from ldgen.output_commands import AlignAtAddress, InputSectionDesc, SymbolAtAddress + from ldgen.output_commands import AlignAtAddress + from ldgen.output_commands import InputSectionDesc + from ldgen.output_commands import SymbolAtAddress from ldgen.sdkconfig import SDKConfig ROOT = Entity('*') @@ -33,12 +41,12 @@ FREERTOS = Entity('libfreertos.a') CROUTINE = Entity('libfreertos.a', 'croutine') TIMERS = Entity('libfreertos.a', 'timers') TEMPERATURE_SENSOR_PERIPH = Entity('libsoc.a', 'temperature_sensor_periph') +ESP_FLASH_API = Entity('libspi_flash.a', 'esp_flash_api') FREERTOS2 = Entity('libfreertos2.a') class GenerationTest(unittest.TestCase): - def setUp(self): self.generation = Generation() self.entities = None @@ -72,6 +80,9 @@ class GenerationTest(unittest.TestCase): with open('data/libsoc.a.txt') as objdump: self.entities.add_sections_info(objdump) + with open('data/libspi_flash.a.txt') as objdump: + self.entities.add_sections_info(objdump) + with open('data/linker_script.ld') as linker_script: self.linker_script_expect = LinkerScript(linker_script) @@ -121,7 +132,6 @@ class GenerationTest(unittest.TestCase): class DefaultMappingTest(GenerationTest): - def test_rule_generation_default(self): # Checks that default rules are generated from # the default scheme properly and even if no mappings @@ -134,7 +144,7 @@ class DefaultMappingTest(GenerationTest): def test_default_mapping_lib(self): # Mapping a library with default mapping. This should not emit additional rules, # other than the default ones. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -146,7 +156,7 @@ entries: def test_default_mapping_obj(self): # Mapping an object with default mapping. This should not emit additional rules, # other than the default ones. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -158,7 +168,7 @@ entries: def test_default_mapping_symbol(self): # Mapping a symbol with default mapping. This should not emit additional rules, # other than the default ones. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -170,7 +180,7 @@ entries: def test_default_mapping_all(self): # Mapping a library, object, and symbol with default mapping. This should not emit additional rules, # other than the default ones. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -187,7 +197,7 @@ entries: # # This is a check needed to make sure generation does not generate # intermediate commands due to presence of symbol mapping. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -203,7 +213,7 @@ entries: # # This is a check needed to make sure generation does not generate # intermediate commands due to presence of symbol mapping. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -230,7 +240,7 @@ class BasicTest(GenerationTest): # iram0_text # *(.iram ...) # *libfreertos.a(.literal ...) B - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -260,14 +270,14 @@ entries: # There should be exclusions in the default commands for flash_text and flash_rodata: # # flash_text - # *((EXCLUDE_FILE(libfreertos.a:croutine)) .literal ...) A + # *((EXCLUDE_FILE(libfreertos.a:croutine)) .literal ...) A # # Commands placing the entire library in iram, dram should be generated: # # iram0_text # *(.iram ...) - # *libfreertos.a:croutine(.literal ...) B - mapping = u""" + # *libfreertos.a:croutine(.literal ...) B + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -295,19 +305,20 @@ entries: def test_nondefault_mapping_symbol(self): # Test mapping entry different from default for symbol. - # There should be exclusions in the default commands for flash_text, as well as the implicit intermediate object command + # There should be exclusions in the default commands for flash_text, as + # well as the implicit intermediate object command # with an exclusion from default: # # flash_text - # *((EXCLUDE_FILE(libfreertos.a:croutine)) .literal ...) A - # *libfreertos.a:croutine(.literal .literal.prvCheckDelayedList ...) B + # *((EXCLUDE_FILE(libfreertos.a:croutine)) .literal ...) A + # *libfreertos.a:croutine(.literal .literal.prvCheckDelayedList ...) B # # Commands placing the entire library in iram should be generated: # # iram0_text # *(.iram ...) - # *libfreertos.a:croutine(.text.prvCheckPendingReadyList .literal.prvCheckPendingReadyList) C - mapping = u""" + # *libfreertos.a:croutine(.text.prvCheckPendingReadyList .literal.prvCheckPendingReadyList) C + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -336,7 +347,76 @@ entries: flash_text.append(InputSectionDesc(CROUTINE, set(filtered_sections), [])) # Input section commands in iram_text for #1 C - iram0_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + iram0_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) + + self.compare_rules(expected, actual) + + def test_nondefault_mapping_symbol_with_suffix(self): + # Test a mapping entry that differs from the default for a symbol + # generated by the compiler, such as those created during IPA + # optimization for constant propagation. + # + # There should be exclusions in the default commands for flash_text, as + # well as the implicit intermediate object command with an exclusion + # from default: + # + # flash_text + # *((EXCLUDE_FILE(*libspi_flash.a:esp_flash_api.*)) .text ...) A + # *libspi_flash.a:esp_flash_api.*(.text.check_chip_pointer_default ...) B + # + # Commands for placing the generated symbol in iram should be created, + # and they must also include .text.spiflash_start_core.constprop.0, + # even though the placement is specified only for the + # spiflash_start_core symbol. + # + # iram0_text + # *(.iram ...) + # *libspi_flash.a:esp_flash_api.*(.literal.spiflash_start_core .text.spiflash_start_core + # .text.spiflash_start_core.constprop.0) C + mapping = """ +[mapping:test] +archive: libspi_flash.a +entries: + esp_flash_api:spiflash_start_core (noflash) #1 +""" + self.add_fragments(mapping) + actual = self.generation.generate(self.entities, False) + expected = self.generate_default_rules() + + flash_text = expected['flash_text'] + iram0_text = expected['iram0_text'] + + # Generate exclusion in flash_text A + flash_text[0].exclusions.add(ESP_FLASH_API) + + # Generate intermediate command B + # List all relevant sections except the symbol + # being mapped + esp_flash_api_sections = self.entities.get_sections('libspi_flash.a', 'esp_flash_api') + filtered_sections = fnmatch.filter(esp_flash_api_sections, '.literal.*') + filtered_sections.extend(fnmatch.filter(esp_flash_api_sections, '.text.*')) + + filtered_sections = [s for s in filtered_sections if not s.endswith('spiflash_start_core.constprop.0')] + filtered_sections.append('.text') + + flash_text.append(InputSectionDesc(ESP_FLASH_API, set(filtered_sections), [])) + + # Input section commands in iram_text for #1 C + iram0_text.append( + InputSectionDesc( + ESP_FLASH_API, + set( + [ + '.literal.spiflash_start_core', + '.text.spiflash_start_core', + '.text.spiflash_start_core.constprop.0', + ] + ), + [], + ) + ) self.compare_rules(expected, actual) @@ -351,14 +431,14 @@ entries: # object file, including .debug, .comment and other input section. # # flash.rodata - # *((EXCLUDE_FILE(*libsoc.a:temperature_sensor_periph.*)) .rodata.* ...) A - # # *libsoc.a:temperature_sensor_periph.* X + # *((EXCLUDE_FILE(*libsoc.a:temperature_sensor_periph.*)) .rodata.* ...) A + # # *libsoc.a:temperature_sensor_periph.* X # # Commands placing the entire library in iram should be generated: # # dram0_data - # *libsoc.a:temperature_sensor_periph.*(.rodata.temperature_sensor_attribute) B - mapping = u""" + # *libsoc.a:temperature_sensor_periph.*(.rodata.temperature_sensor_attribute) B + mapping = """ [mapping:test] archive: libsoc.a entries: @@ -376,14 +456,15 @@ entries: flash_rodata[0].exclusions.add(TEMPERATURE_SENSOR_PERIPH) # Input section commands in dram0_data for #1 B - dram0_data.append(InputSectionDesc(TEMPERATURE_SENSOR_PERIPH, - set(['.rodata.temperature_sensor_attributes']), - [])) + dram0_data.append( + InputSectionDesc(TEMPERATURE_SENSOR_PERIPH, set(['.rodata.temperature_sensor_attributes']), []) + ) self.compare_rules(expected, actual) def test_default_symbol_nondefault_lib(self): - # Test default symbol mapping with different lib mapping. This should create an implicit intermediate object command. + # Test default symbol mapping with different lib mapping. This should + # create an implicit intermediate object command. # The significant targets are flash_text, flash_rodata, iram0_text, dram0_data. # # flash_text @@ -403,7 +484,7 @@ entries: # libfreertos.a ( .rodata ...) C.2 # # Only default commands are in the other targets. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -440,7 +521,9 @@ entries: iram0_text.append(InputSectionDesc(CROUTINE, set(filtered_sections), [])) # Command for #2 B - flash_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + flash_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) self.compare_rules(expected, actual) @@ -465,7 +548,7 @@ entries: # *libfreertos.a:croutine(.rodata ....) C.2 # # Only default commands are in the other targets - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -499,7 +582,9 @@ entries: dram0_data.append(InputSectionDesc(CROUTINE, flash_rodata[0].sections, [])) # Command for #2 B - flash_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + flash_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) self.compare_rules(expected, actual) @@ -532,7 +617,7 @@ entries: # libfreertos.a (EXCLUDE_FILE(libfreertos:croutine) .rodata ...) C # # For the other targets only the default commands should be present. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -575,14 +660,16 @@ entries: flash_text.append(InputSectionDesc(CROUTINE, set(filtered_sections), [])) # Command for #3 D - iram0_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + iram0_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) self.compare_rules(expected, actual) def test_nondefault_but_same_lib_and_obj(self): # Extension of DefaultMappingTest. Commands should not be generated for #2, since it does similar mapping # to #1. Output is similar to test_different_mapping_lib. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -594,7 +681,7 @@ entries: def test_nondefault_but_same_lib_and_sym(self): # Extension of DefaultMappingTest. Commands should not be generated for #2, since it does similar mapping # to #1. Output is similar to test_different_mapping_lib. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -606,7 +693,7 @@ entries: def test_nondefault_but_same_obj_and_sym(self): # Commands should not be generated for #2, since it does similar mapping # to #1. Output is similar to test_different_mapping_obj. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -627,7 +714,7 @@ entries: # iram0_text # # - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -659,8 +746,12 @@ entries: flash_text.append(InputSectionDesc(CROUTINE, set(filtered_sections), [])) # Commands for #1 & 2 - iram0_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckDelayedList', '.literal.prvCheckDelayedList']), [])) - iram0_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + iram0_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckDelayedList', '.literal.prvCheckDelayedList']), []) + ) + iram0_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) self.compare_rules(expected, actual) @@ -671,7 +762,7 @@ entries: # iram0_text # * (.custom_section) A # * (.iram .iram.*) - mapping = u""" + mapping = """ [sections:custom_section] entries: .custom_section @@ -700,7 +791,6 @@ entries: class AdvancedTest(GenerationTest): - # Test valid but quirky cases, corner cases, failure cases, and # cases involving interaction between schemes, other mapping # fragments. @@ -727,7 +817,7 @@ class AdvancedTest(GenerationTest): # *(.data ..) # *(.dram ...) # *libfreertos.a:croutine(.rodata .rodata.*) D - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -781,7 +871,7 @@ entries: # *(.data ..) # *(.dram ...) # *libfreertos.a:croutine(.rodata .rodata.*) D - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -818,7 +908,7 @@ entries: # noflash = text -> iram0_text, rodata -> dram0_data # # This operation should fail. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -837,7 +927,7 @@ entries: # noflash = .text -> iram0_text, .rodata -> dram0_data # # This operation should fail. - mapping = u""" + mapping = """ [sections:custom_text] entries: .text+ @@ -861,42 +951,42 @@ entries: # using another. Another object and symbol is mapped the other way around. # # flash_text - # *(EXCLUDE_FILE(libfreertos.a:croutine libfreertos.a:timers) .text ...) A, B + # *(EXCLUDE_FILE(libfreertos.a:croutine libfreertos.a:timers) .text ...) A, B # # flash_rodata - # *(EXCLUDE_FILE(libfreertos.a:croutine libfreertos.a:timers) .rodata ...) A, B + # *(EXCLUDE_FILE(libfreertos.a:croutine libfreertos.a:timers) .rodata ...) A, B # # dram0_data - # *(EXCLUDE_FILES(libfreertos.a:timers) .data ..) B + # *(EXCLUDE_FILES(libfreertos.a:timers) .data ..) B # *(.dram ...) - # *libfreertos.a:croutine(.rodata .rodata.*) C - # *libfreertos.a:timers(.rodata.prvProcessReceivedCommands ...) E + # *libfreertos.a:croutine(.rodata .rodata.*) C + # *libfreertos.a:timers(.rodata.prvProcessReceivedCommands ...) E # # dram0_bss - # *(EXCLUDE_FILE(libfreertos.a:timers) .bss .bss.* ...) B - # *(EXCLUDE_FILE(libfreertos.a:timers) COMMON) B + # *(EXCLUDE_FILE(libfreertos.a:timers) .bss .bss.* ...) B + # *(EXCLUDE_FILE(libfreertos.a:timers) COMMON) B # # iram0_text # *(.iram ...) - # *libfreertos.a:croutine(.literal .literal.prvCheckDelayedList ...) C - # *libfreertos.a:timers(.literal .literal.prvProcessReceivedCommands ...) E + # *libfreertos.a:croutine(.literal .literal.prvCheckDelayedList ...) C + # *libfreertos.a:timers(.literal .literal.prvProcessReceivedCommands ...) E # # rtc_text # *(rtc.text .rtc.literal) - # libfreertos.a:croutine (.text.prvCheckPendingReadyList .literal.prvCheckPendingReadyList) F - # libfreertos.a:timers (.text .text.prvCheckForValidListAndQueue ...) D.2 + # libfreertos.a:croutine (.text.prvCheckPendingReadyList .literal.prvCheckPendingReadyList) F + # libfreertos.a:timers (.text .text.prvCheckForValidListAndQueue ...) D.2 # # rtc_data # *(rtc.data) # *(rtc.rodata) - # libfreertos.a:timers (.data .data.*) D - # libfreertos.a:timers (.rodata ...) D.2 + # libfreertos.a:timers (.data .data.*) D + # libfreertos.a:timers (.rodata ...) D.2 # # rtc_bss # *(rtc.bss .rtc.bss) - # libfreertos.a:timers (.bss .bss.*) D - # libfreertos.a:timers (COMMON) D - mapping = u""" + # libfreertos.a:timers (.bss .bss.*) D + # libfreertos.a:timers (COMMON) D + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -944,7 +1034,9 @@ entries: # Commands for #4 F # Processed first due to alphabetical ordering - rtc_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + rtc_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) # Commands for #2 D # List all relevant sections excluding #3 for text -> rtc_text and D.2 @@ -966,7 +1058,11 @@ entries: rtc_bss.append(InputSectionDesc(TIMERS, dram0_bss[1].sections, [])) # Commands for #3 E - iram0_text.append(InputSectionDesc(TIMERS, set(['.text.prvProcessReceivedCommands', '.literal.prvProcessReceivedCommands']), [])) + iram0_text.append( + InputSectionDesc( + TIMERS, set(['.text.prvProcessReceivedCommands', '.literal.prvProcessReceivedCommands']), [] + ) + ) dram0_data.append(InputSectionDesc(TIMERS, set(['.rodata.prvProcessReceivedCommands']), [])) self.compare_rules(expected, actual) @@ -983,7 +1079,7 @@ entries: # * (EXCLUDE_FILE(libfreertos.a libfreertos.a:croutine) .text ...) # # iram0_text - mapping = u""" + mapping = """ [mapping:test_1] archive: libfreertos.a entries: @@ -1028,7 +1124,7 @@ entries: # # Uses the same entries as C_05 but spreads them across # two fragments. The output should still be the same. - mapping = u""" + mapping = """ [mapping:test_1] archive: libfreertos.a entries: @@ -1046,7 +1142,7 @@ entries: def test_mapping_same_lib_in_multiple_fragments_conflict(self): # Test mapping fragments operating on the same archive # with conflicting mappings. - mapping = u""" + mapping = """ [mapping:test_1] archive: libfreertos.a entries: @@ -1078,7 +1174,7 @@ entries: # libfreertos:croutine(.text.prvCheckPendingReadyList .literal.prvCheckPendingReadyList) G # libfreertos2:croutine(.text .literal ...) D # libfreertos2:croutine2(.text .literal ...) E - mapping = u""" + mapping = """ [mapping:freertos2] archive: libfreertos2.a entries: @@ -1116,8 +1212,12 @@ entries: flash_text.append(InputSectionDesc(CROUTINE, set(filtered_sections), [])) # Command for - iram0_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckDelayedList', '.literal.prvCheckDelayedList']), [])) - iram0_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + iram0_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckDelayedList', '.literal.prvCheckDelayedList']), []) + ) + iram0_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) iram0_text.append(InputSectionDesc(Entity(FREERTOS2.archive, 'croutine'), flash_text[0].sections, [])) iram0_text.append(InputSectionDesc(Entity(FREERTOS2.archive, 'croutine2'), flash_text[0].sections, [])) @@ -1126,7 +1226,7 @@ entries: def test_ambigious_obj(self): # Command generation for ambiguous entry should fail. - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -1143,7 +1243,7 @@ entries: # # 'custom_scheme' entries conflict the 'default' scheme # entries. - mapping = u""" + mapping = """ [scheme:custom_scheme] entries: flash_text -> iram0_text @@ -1163,7 +1263,7 @@ entries: # # custom_scheme has the 'iram -> iram0_text' in common with # default scheme - mapping = u""" + mapping = """ [sections:custom_section] entries: .custom_section @@ -1198,7 +1298,7 @@ class ConfigTest(GenerationTest): def _test_conditional_on_scheme(self, perf, alt=None): # Test that proper commands are generated if using # schemes with conditional entries. - scheme = u""" + scheme = """ [sections:cond_text_data] entries: if PERFORMANCE_LEVEL >= 1: @@ -1215,7 +1315,7 @@ entries: cond_text_data -> dram0_data """ - mapping = u""" + mapping = """ [mapping:test] archive: lib.a entries: @@ -1250,7 +1350,7 @@ entries: def test_conditional_mapping(self, alt=None): # Test that proper commands are generated # in conditional mapping entries. - mapping = u""" + mapping = """ [mapping:default] archive: * entries: @@ -1299,7 +1399,7 @@ entries: def test_multiple_fragment_same_lib_conditional(self): # Test conditional entries on new mapping fragment grammar. # across multiple fragments. - mapping = u""" + mapping = """ [mapping:default] archive: * entries: @@ -1331,7 +1431,6 @@ entries: class FlagTest(GenerationTest): - # Test correct generation of mapping fragment entries # with flags. @@ -1362,7 +1461,7 @@ class FlagTest(GenerationTest): # libfreertos.a:croutine(.text .literal ...) I # . = ALIGN(4) G.2 # _sym1_end H.2 - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -1422,7 +1521,7 @@ entries: # iram0_text # *(.iram .iram.*) # libfreertos.a:croutine(.text.prvCheckPendingReadyList ...) D - mapping = u""" + mapping = """ [mapping:default] archive: * entries: @@ -1466,7 +1565,9 @@ entries: flash_text.append(SymbolAtAddress('_sym1_end')) # Command for #3 D - iram0_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + iram0_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) self.compare_rules(expected, actual) @@ -1484,7 +1585,7 @@ entries: # iram0_text # *(.iram .iram.*) # libfreertos.a:croutine(.text.prvCheckPendingReadyList ...) D - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -1523,7 +1624,9 @@ entries: flash_text.append(SymbolAtAddress('_sym1_end')) # Command for #3 C - iram0_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + iram0_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) self.compare_rules(expected, actual) @@ -1540,7 +1643,7 @@ entries: # iram0_text # *(.iram .iram.*) # libfreertos.a:croutine(.text.prvCheckPendingReadyList ...) C - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -1575,7 +1678,9 @@ entries: flash_text.append(SymbolAtAddress('_sym1_end')) # Command for #3 C - iram0_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + iram0_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) self.compare_rules(expected, actual) @@ -1591,7 +1696,7 @@ entries: # iram0_text # *(.iram .iram.*) # libfreertos.a:croutine(.text.prvCheckPendingReadyList ...) D - mapping = u""" + mapping = """ [mapping:default] archive: * entries: @@ -1636,7 +1741,9 @@ entries: flash_text.append(InputSectionDesc(CROUTINE, set(filtered_sections), [])) # Command for #4 D - iram0_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + iram0_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) self.compare_rules(expected, actual) @@ -1653,7 +1760,7 @@ entries: # iram0_text # *(.iram .iram.*) # libfreertos.a:croutine(.text.prvCheckPendingReadyList ...) D - mapping = u""" + mapping = """ [mapping:test] archive: libfreertos.a entries: @@ -1693,14 +1800,16 @@ entries: flash_text.append(InputSectionDesc(CROUTINE, set(filtered_sections), [])) # Command for #3 C - iram0_text.append(InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), [])) + iram0_text.append( + InputSectionDesc(CROUTINE, set(['.text.prvCheckPendingReadyList', '.literal.prvCheckPendingReadyList']), []) + ) self.compare_rules(expected, actual) def test_flag_additions(self): # Test ability to add flags as long as no other mapping fragments # does the same thing. - mapping = u""" + mapping = """ [mapping:default_add_flag] archive: * entries: @@ -1721,7 +1830,7 @@ entries: def test_flags_flag_additions_duplicate(self): # Test same flags added to same entity - these # are ignored. - mapping = u""" + mapping = """ [mapping:default_add_flag_1] archive: * entries: @@ -1748,7 +1857,7 @@ entries: def test_flags_flag_additions_conflict(self): # Test condition where multiple fragments specifies flags # to same entity - should generate exception. - mapping = u""" + mapping = """ [mapping:default_add_flag_1] archive: * entries: