Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
parse_test.py
00001 import sys 00002 from io import open 00003 from os import sep 00004 from os.path import isfile, join, dirname 00005 import json 00006 00007 import pytest 00008 00009 from tools.memap import MemapParser, _ArmccParser 00010 from copy import deepcopy 00011 00012 00013 PARSED_ARM_DATA = { 00014 "startup/startup.o": {".text": 0xc0}, 00015 "[lib]/c_p.l/__main.o": {".text": 8}, 00016 "irqs/irqs.o": {".text": 0x98}, 00017 "data/data.o": {".data": 0x18, ".bss": 0x198}, 00018 "main.o": {".text": 0x36}, 00019 } 00020 00021 def test_parse_armcc(): 00022 memap = MemapParser() 00023 memap.parse(join(dirname(__file__), "arm.map"), "ARM") 00024 00025 parsed_data_os_agnostic = dict() 00026 for k in PARSED_ARM_DATA: 00027 parsed_data_os_agnostic[k.replace('/', sep)] = PARSED_ARM_DATA[k] 00028 00029 assert memap.modules == parsed_data_os_agnostic 00030 00031 PARSED_IAR_DATA = { 00032 "startup/startup.o": {".text": 0xc0}, 00033 "[lib]/d16M_tlf.a/__main.o": {".text": 8}, 00034 "irqs/irqs.o": {".text": 0x98}, 00035 "data/data.o": {".data": 0x18, ".bss": 0x198}, 00036 "main.o": {".text": 0x36}, 00037 } 00038 00039 def test_parse_iar(): 00040 memap = MemapParser() 00041 memap.parse(join(dirname(__file__), "iar.map"), "IAR") 00042 00043 parsed_data_os_agnostic = dict() 00044 for k in PARSED_IAR_DATA: 00045 parsed_data_os_agnostic[k.replace('/', sep)] = PARSED_IAR_DATA[k] 00046 00047 assert memap.modules == parsed_data_os_agnostic 00048 00049 PARSED_GCC_DATA = { 00050 "startup/startup.o": {".text": 0xc0}, 00051 "[lib]/d16M_tlf.a/__main.o": {".text": 8}, 00052 "[lib]/misc/foo.o": {".text": 8}, 00053 "irqs/irqs.o": {".text": 0x98}, 00054 "data/data.o": {".data": 0x18, ".bss": 0x198}, 00055 "main.o": {".text": 0x36}, 00056 } 00057 00058 def test_parse_gcc(): 00059 memap = MemapParser() 00060 memap.parse(join(dirname(__file__), "gcc.map"), "GCC_ARM") 00061 00062 parsed_data_os_agnostic = dict() 00063 for k in PARSED_GCC_DATA: 00064 parsed_data_os_agnostic[k.replace('/', sep)] = PARSED_GCC_DATA[k] 00065 00066 assert memap.modules == parsed_data_os_agnostic 00067 00068 00069 def test_add_empty_module(): 00070 memap = _ArmccParser() 00071 old_modules = deepcopy(memap.modules) 00072 memap.module_add("", 8, ".data") 00073 assert(old_modules == memap.modules) 00074 memap.module_add("main.o", 0, ".text") 00075 assert(old_modules == memap.modules) 00076 memap.module_add("main.o", 8, "") 00077 assert(old_modules == memap.modules) 00078 00079 def test_add_full_module(): 00080 memap = _ArmccParser() 00081 old_modules = deepcopy(memap.modules) 00082 memap.module_add("main.o", 8, ".data") 00083 assert(old_modules != memap.modules) 00084 assert("main.o" in memap.modules) 00085 assert(".data" in memap.modules["main.o"]) 00086 assert(memap.modules["main.o"][".data"] == 8)
Generated on Tue Jul 12 2022 12:45:41 by
1.7.2