Test memap parsing for ARMC6 and IAR

pull/5125/head
Jimmy Brisson 2017-09-19 15:14:43 -05:00
parent fdd4ae3056
commit bcd89dae18
3 changed files with 169 additions and 0 deletions

47
tools/test/memap/arm.map Normal file
View File

@ -0,0 +1,47 @@
Component: ARM Compiler 5.06 update 5 (build 528) Tool: armlink [4d35e2]
==============================================================================
Memory Map of the image
Image Entry point : 0x0001b0c1
Load Region LR_IROM1 (Base: 0x0001b000, Size: 0x0000ed04, Max: 0x00025000, ABSOLUTE, COMPRESSED[0x0000e23c])
Execution Region ER_IROM1 (Base: 0x0001b000, Size: 0x0000e1c4, Max: 0x00025000, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x0001b000 0x000000c0 Data RO 7002 RESET /common/path/startup/startup.o
0x0001b0c0 0x00000008 Code RO 8820 * !!!main /installed/libs/../lib/armlib/c_p.l(__main.o)
0x0001b26c 0x00000098 Code RO 6076 .text /common/path/irqs/irqs.o
0x000206a0 0x00000036 Code RO 27 i._Z9time_funcPN4mbed5TimerEi /common/path/main.o
0x200039b4 0x00000018 Data RW 8092 .data /common/path/data/data.o
0x20003af8 0x00000198 Zero RW 57 .bss /common/path/data/data.o
==============================================================================
Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
344 368 0 24 408 36188 Object Totals
8 0 0 0 0 7596 Library Totals
==============================================================================
Code (inc. data) RO Data RW Data ZI Data Debug
352 376 0 24 408 17208 Grand Totals
352 376 0 24 408 17208 ELF Image Totals (compressed)
352 376 0 24 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 352 ( 0.35kB)
Total RW Size (RW Data + ZI Data) 432 ( 0.43kB)
Total ROM Size (Code + RO Data + RW Data) 376 ( 0.37kB)
==============================================================================

86
tools/test/memap/iar.map Normal file
View File

@ -0,0 +1,86 @@
###############################################################################
#
# IAR ELF Linker V7.80.1.28/LNX for ARM 18/Sep/2017 14:26:09
# Copyright 2007-2016 IAR Systems AB.
#
# Output file =
# /common/path/project.elf
# Map file =
# /common/path/project.map
# Command line =
# -f
# /common/path/.link_files.txt
# (-o
# --map=/common/path/project.map
# /common/path/project.elf
# /common/path/main.o
# /common/path/startup/startup.o
# /common/path/irqs/irqs.o
# /common/path/data/data.o
#
###############################################################################
*******************************************************************************
*** RUNTIME MODEL ATTRIBUTES
***
CppFlavor = *
__CPP_Exceptions = Disabled
__CPP_Language = C++
__Heap_Handler = DLMalloc
__SystemLibrary = DLib
__dlib_dynamic_initialization = postponed
__dlib_has_iterator_debugging = 0
__dlib_jmp_buf_num_elements = 8
*******************************************************************************
*** PLACEMENT SUMMARY
***
"A0": place at 0x0001b000 { ro section .intvec };
"P1": place in [from 0x0001b0c0 to 0x0003ffff] { ro };
"P2": place in [from 0x20002ef8 to 0x20007fff] { rw, block HEAP, block CSTACK };
do not initialize { section .noinit };
initialize by copy { rw };
{ section .intvec };
Section Kind Address Size Object
------- ---- ------- ---- ------
"A0": 0xc0
.intvec ro code 0x0001b000 0xc0 startup.o [4]
- 0x0001b0c0 0xc0
"P1": 0x
.text ro code 0x0001c753 0x36 main.o [3]
.text ro code 0x0001cfff 0x98 irqs.o [5]
.text ro code 0x0001c778 0x8 __main.o [67]
"P2", part 1 of 2: 0x18
P2-1 0x20002ef8 0x18 <Init block>
.data inited 0x20002fa8 0x18 data.o [6]
"P2", part 2 of 2: 0x198
P2-2 0x20005388 0x198 <Init block>
.bss zero 0x20002fa8 0x198 data.o [6]
*******************************************************************************
*** INIT TABLE
***
*******************************************************************************
*** MODULE SUMMARY
***
d16M_tlf.a: [67]
__main.o 8
------------------------------------------------
Total: 8
Linker created
---------------------------------------------------
Grand Total:
*******************************************************************************
*** ENTRY LIST
***

View File

@ -0,0 +1,36 @@
import sys
from io import open
from os.path import isfile, join, dirname
import json
import pytest
from tools.memap import MemapParser
from copy import deepcopy
PARSED_ARM_DATA = {
"startup/startup.o": {".text": 0xc0},
"[lib]/c_p.l/__main.o": {".text": 8},
"irqs/irqs.o": {".text": 0x98},
"data/data.o": {".data": 0x18, ".bss": 0x198},
"main.o": {".text": 0x36},
}
def test_parse_armcc():
memap = MemapParser()
memap.parse_map_file_armcc(open(join(dirname(__file__), "arm.map")))
assert memap.modules == PARSED_ARM_DATA
PARSED_IAR_GCC_DATA = {
"startup/startup.o": {".text": 0xc0},
"[lib]/d16M_tlf.a/__main.o": {".text": 8},
"irqs/irqs.o": {".text": 0x98},
"data/data.o": {".data": 0x18, ".bss": 0x198},
"main.o": {".text": 0x36},
}
def test_parse_iar():
memap = MemapParser()
memap.parse_map_file_iar(open(join(dirname(__file__), "iar.map")))
assert memap.modules == PARSED_IAR_GCC_DATA