Memory Usage View improvements

* Add special handling for unknown sizes, to avoid possible overflows
when converting to C types.

* Fetch any available memory usage data when opening the view, to refresh
it on opening if a map file is already present

* Display properly exceptions that occur when parsing map files, making sure
they appear in the Messages view when running the testsuite.

* Add another automatic test.

For eng/ide/gnatstudio#402
This commit is contained in:
Anthony Leonardo Gracio
2024-10-24 15:57:12 +00:00
parent 83e5a584e2
commit 48e3fde298
12 changed files with 704 additions and 59 deletions

View File

@@ -19,15 +19,16 @@ with Ada.Strings.Hash_Case_Insensitive;
with Ada.Unchecked_Deallocation;
with GNATCOLL.Arg_Lists;
with GNATCOLL.Traces; use GNATCOLL.Traces;
with GPS.Kernel.Hooks; use GPS.Kernel.Hooks;
with Gtkada.MDI;
with Glib.Object; use Glib.Object;
package body Memory_Usage_Views.Providers is
Me : constant Trace_Handle := Create ("GPS.MEMORY_USAGE.PROVIDERS");
package Memory_Usage_Provider_Maps is
new Ada.Containers.Indefinite_Hashed_Maps
package Memory_Usage_Provider_Maps is new
Ada.Containers.Indefinite_Hashed_Maps
(Key_Type => String,
Element_Type => Memory_Usage_Provider,
Hash => Ada.Strings.Hash_Case_Insensitive,
@@ -41,10 +42,10 @@ package body Memory_Usage_Views.Providers is
-- Used to store the registered providers
type On_Compilation_Finished is new Compilation_Finished_Hooks_Function
with null record;
with null record;
overriding procedure Execute
(Self : On_Compilation_Finished;
Kernel : not null access Kernel_Handle_Record'Class;
(Self : On_Compilation_Finished;
Kernel : not null access Kernel_Handle_Record'Class;
Category, Target, Mode : String;
Shadow, Background : Boolean;
Status : Integer;
@@ -61,36 +62,74 @@ package body Memory_Usage_Views.Providers is
-- Ask the currently selected memory usage provider to fetch the data
-- that needs to be displayed in the memory usage view.
procedure MDI_Child_Added
(MDI : access GObject_Record'Class; Kernel : Kernel_Handle);
-- Called when a new MDI child is added
procedure Async_Fetch_Memory_Usage_Data
(Kernel : not null access Kernel_Handle_Record'Class);
-- If there is a regitsred memory usage provider, asynchronously fetch the
-- memory usage data.
---------------------
-- MDI_Child_Added --
---------------------
procedure MDI_Child_Added
(MDI : access GObject_Record'Class; Kernel : Kernel_Handle)
is
pragma Unreferenced (MDI);
use Memory_Usage_MDI_Views;
View : constant Memory_Usage_MDI_Views.View_Access :=
Memory_Usage_MDI_Views.Retrieve_View (Kernel);
begin
if View /= null then
Async_Fetch_Memory_Usage_Data (Kernel);
end if;
end MDI_Child_Added;
-----------------------------
-- Fecth_Memory_Usage_Data --
-----------------------------
procedure Async_Fetch_Memory_Usage_Data
(Kernel : not null access Kernel_Handle_Record'Class) is
begin
declare
Provider : constant Memory_Usage_Provider :=
(if Global_Data.Providers.Contains ("LD")
then Global_Data.Providers ("LD")
else null);
begin
if Provider /= null and then Provider.Is_Enabled then
Provider.Async_Fetch_Memory_Usage_Data
(Visitor =>
new Provider_Task_Visitor_Type'
(Kernel => Kernel_Handle (Kernel)));
end if;
end;
end Async_Fetch_Memory_Usage_Data;
-------------
-- Execute --
-------------
overriding procedure Execute
(Self : On_Compilation_Finished;
Kernel : not null access Kernel_Handle_Record'Class;
(Self : On_Compilation_Finished;
Kernel : not null access Kernel_Handle_Record'Class;
Category, Target, Mode : String;
Shadow, Background : Boolean;
Status : Integer;
Cmd : GNATCOLL.Arg_Lists.Arg_List) is
Cmd : GNATCOLL.Arg_Lists.Arg_List)
is
pragma Unreferenced (Self, Mode, Category, Background, Shadow, Status);
pragma Unreferenced (Cmd);
begin
-- ??? use the currently selected provider once we have the
-- possibility to choose the memory usage provider to use.
if Target = "Build All" or else Target = "Build Main" then
declare
Provider : constant Memory_Usage_Provider :=
(if Global_Data.Providers.Contains ("LD") then
Global_Data.Providers ("LD")
else
null);
begin
if Provider /= null and then Provider.Is_Enabled then
Provider.Async_Fetch_Memory_Usage_Data
(Visitor => new Provider_Task_Visitor_Type'
(Kernel => Kernel_Handle (Kernel)));
end if;
end;
Async_Fetch_Memory_Usage_Data (Kernel => Kernel);
end if;
end Execute;
@@ -103,15 +142,15 @@ package body Memory_Usage_Views.Providers is
Kernel : not null access Kernel_Handle_Record'Class)
is
Provider : constant Memory_Usage_Provider :=
(if Global_Data.Providers.Contains ("LD") then
Global_Data.Providers ("LD")
else
null);
(if Global_Data.Providers.Contains ("LD")
then Global_Data.Providers ("LD")
else null);
begin
if Provider /= null and then Provider.Is_Enabled then
Provider.Async_Fetch_Memory_Usage_Data
(Visitor => new Provider_Task_Visitor_Type'
(Kernel => Kernel_Handle (Kernel)));
(Visitor =>
new Provider_Task_Visitor_Type'
(Kernel => Kernel_Handle (Kernel)));
end if;
end Execute;
@@ -120,8 +159,10 @@ package body Memory_Usage_Views.Providers is
----------
procedure Free (Self : in out Provider_Task_Visitor) is
procedure Unchecked_Free is new Ada.Unchecked_Deallocation
(Provider_Task_Visitor_Type'Class, Provider_Task_Visitor);
procedure Unchecked_Free is new
Ada.Unchecked_Deallocation
(Provider_Task_Visitor_Type'Class,
Provider_Task_Visitor);
begin
if Self /= null then
Self.all.Free;
@@ -139,9 +180,8 @@ package body Memory_Usage_Views.Providers is
is
function Has_Memory_Overflow return Boolean
is
(for some Region of Memory_Regions =>
Region.Used_Size > Region.Length);
is (for some Region of Memory_Regions
=> Region.Used_Size > Region.Length);
begin
if not Memory_Regions.Is_Empty then
@@ -149,24 +189,23 @@ package body Memory_Usage_Views.Providers is
use Memory_Usage_MDI_Views;
View : Memory_Usage_MDI_Views.View_Access :=
Memory_Usage_MDI_Views.Retrieve_View
(Kernel => Self.Kernel,
Visible_Only => True);
Memory_Usage_MDI_Views.Retrieve_View
(Kernel => Self.Kernel, Visible_Only => True);
Give_Focus : constant Boolean :=
(View = null or else Has_Memory_Overflow);
(View = null or else Has_Memory_Overflow);
begin
-- Raise the view only if it was not there before or if a memory
-- overflow occured.
View := Memory_Usage_MDI_Views.Get_Or_Create_View
(Self.Kernel,
Focus => Give_Focus,
Init => Memory_Usage_Views.On_Init'Access);
View :=
Memory_Usage_MDI_Views.Get_Or_Create_View
(Self.Kernel,
Focus => Give_Focus,
Init => Memory_Usage_Views.On_Init'Access);
-- Highlight the view when it does not gain the focus to warn
-- users that the view has been refreshed.
if not Give_Focus then
Highlight_Child
(Memory_Usage_MDI_Views.Child_From_View (View));
Highlight_Child (Memory_Usage_MDI_Views.Child_From_View (View));
end if;
View.Refresh (Memory_Regions => Memory_Regions);
@@ -188,8 +227,7 @@ package body Memory_Usage_Views.Providers is
Trace (Me, Name & " memory usage provider registered");
Provider.Name := To_Unbounded_String (Name);
Global_Data.Providers.Include
(Key => Name,
New_Item => Memory_Usage_Provider (Provider));
(Key => Name, New_Item => Memory_Usage_Provider (Provider));
end Register_Provider;
---------------------
@@ -197,12 +235,15 @@ package body Memory_Usage_Views.Providers is
---------------------
procedure Register_Module
(Kernel : not null access GPS.Kernel.Kernel_Handle_Record'Class)
is
pragma Unreferenced (Kernel);
(Kernel : not null access GPS.Kernel.Kernel_Handle_Record'Class) is
begin
Compilation_Finished_Hook.Add (new On_Compilation_Finished);
Project_View_Changed_Hook.Add (new On_Project_View_Changed);
Kernel_Callback.Connect
(Widget => Get_MDI (Kernel),
Name => Gtkada.MDI.Signal_Child_Added,
Cb => MDI_Child_Added'Access,
User_Data => Kernel_Handle (Kernel));
end Register_Module;
end Memory_Usage_Views.Providers;

View File

@@ -308,11 +308,11 @@ package body Memory_Usage_Views.Scripts is
Used_Size => 0.0,
Sections => <>);
begin
-- If the memory region's length is equal to -1, it means
-- that it's unknown for the linker: set it to Integer'Last
-- If the memory region's length is negative, it means
-- that it's unknown for the linker: set it to Float'Last
-- to keep percentages etc. The view will set the length
-- to 'unknown' after.
if Memory_Region.Length = -1.0 then
if Memory_Region.Length < 0.0 then
Memory_Region.Length := Float'Last;
end if;

View File

@@ -14,6 +14,8 @@ xml = """
GPS.current_context())" />
"""
PARSING_ERROR_MSG = "Exception while parsing map file:"
@core.register_memory_usage_provider("LD")
class LD(core.MemoryUsageProvider):
@@ -143,7 +145,12 @@ class LD(core.MemoryUsageProvider):
region_addr = int(region[1], 16)
region_size = region[2]
if addr >= region_addr and addr < (region_addr + region_size):
# Check if the section's address is contained in the region's
# range. Consider that it's the case when a region has a negative
# size, which means that its size is an unknown for the linker.
if addr >= region_addr and (
region_size < 0.0 or addr < (region_addr + region_size)
):
return region[0]
return ""
@@ -180,7 +187,22 @@ class LD(core.MemoryUsageProvider):
m = region_r.search(line)
if m:
return (m.group("name"), m.group("origin"), int(m.group("length"), 16))
name = m.group("name")
origin = m.group("origin")
length = m.group("length")
# Memory regions that have a '0xffffffffffffffff' have an unknown
# size for the linker: in that case set it to a negative size to
# avoid possible overflows when converting to C types.
# The Memory Usage View will then set this region's size to 'unknown'
# when displaying it.
length = (
float(int(length, 16))
if not length.startswith("0xffffffffffffffff")
else -1.0
)
return (name, origin, length)
else:
return None
@@ -290,12 +312,20 @@ class LD(core.MemoryUsageProvider):
sections = [s for s in sections if is_section_allocated(s)]
GPS.Console().write("regions: %s\n" % str(regions))
GPS.Console().write("sections: %s\n" % str(sections))
visitor.on_memory_usage_data_fetched(regions, sections, modules)
except Exception:
logger = GPS.Logger("GPS.MEMORY_USAGE.SCRIPTS.LD")
logger.log("Exception caught while parsing ld's map file:")
logger.log(traceback.format_exc())
tb = traceback.format_exc()
GPS.Logger("MEMORY_USAGE.SCRIPTS.LD").log(PARSING_ERROR_MSG)
GPS.Logger("MEMORY_USAGE.SCRIPTS.LD").log(tb)
# Log the exception in the Messages view if we are running the testsuite
if GPS.Logger("TESTSUITE"):
GPS.Console().write("%s\n" % PARSING_ERROR_MSG)
GPS.Console().write(tb)
GPS.parse_xml(xml)

View File

@@ -237,7 +237,7 @@ END GROUP
.rodata 0x00000000000085d8 0x139
*(.rodata .rodata.* .gnu.linkonce.r.*)
.rodata 0x00000000000085d8 0xb main_2.o
*fill* 0x00000000000085e3 0x1
*fill* 0x00000000000085e3 0x1
.rodata 0x00000000000085e4 0x3c b__main_2.o
0x00000000000085ec __gnat_version
0x0000000000008614 __gnat_ada_main_program_name
@@ -251,7 +251,7 @@ END GROUP
0x000000000000867c test__my_typeT
.rodata.__gnat_last_chance_handler.str1.4
0x0000000000008690 0x5a /home/leonardo/Development/releases/gnatpro-arm-elf-21.2/arm-eabi/lib/gnat/zfp-cortex-m4/adalib/libgnat.a(a-elchha.o)
*fill* 0x00000000000086ea 0x2
*fill* 0x00000000000086ea 0x2
.rodata 0x00000000000086ec 0x18 /home/leonardo/Development/releases/gnatpro-arm-elf-21.2/arm-eabi/lib/gnat/zfp-cortex-m4/adalib/libgnat.a(a-elchha.o)
.rodata 0x0000000000008704 0xd /home/leonardo/Development/releases/gnatpro-arm-elf-21.2/arm-eabi/lib/gnat/zfp-cortex-m4/adalib/libgnat.a(s-secsta.o)
@@ -393,7 +393,7 @@ END GROUP
0x000000000001872a 0x1 /home/leonardo/Development/releases/gnatpro-arm-elf-21.2/arm-eabi/lib/gnat/zfp-cortex-m4/adalib/libgnat.a(s-textio.o)
0x000000000001872a system__text_io__initialized
.data 0x000000000001872b 0x0 /home/leonardo/Development/releases/gnatpro-arm-elf-21.2/arm-eabi/lib/gnat/zfp-cortex-m4/adalib/libgnat.a(s-semiho.o)
*fill* 0x000000000001872b 0x1
*fill* 0x000000000001872b 0x1
.data.system__semihosting_E
0x000000000001872c 0x2 /home/leonardo/Development/releases/gnatpro-arm-elf-21.2/arm-eabi/lib/gnat/zfp-cortex-m4/adalib/libgnat.a(s-semiho.o)
0x000000000001872c system__semihosting_E

View File

@@ -0,0 +1,6 @@
project Default is
for Target use "riscv32-elf";
for Runtime ("ada") use "light-hifive1";
end Default;

View File

@@ -0,0 +1,10 @@
project Fake_Executables is
for Source_Dirs use ("src");
for Object_Dir use "obj";
for Exec_Dir use "bin";
for Main use ("riscv32_elf_ld.adb");
package Builder is
for Executable ("riscv32_elf_ld.adb") use "riscv32-elf-ld";
end Builder;
end Fake_Executables;

View File

@@ -0,0 +1,24 @@
------------------------------------------------------------------------------
-- GNAT Studio --
-- --
-- Copyright (C) 2020-2023, AdaCore --
-- --
-- This is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. This software is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
-- License for more details. You should have received a copy of the GNU --
-- General Public License distributed with this software; see file --
-- COPYING3. If not, go to http://www.gnu.org/licenses for a complete copy --
-- of the license. --
------------------------------------------------------------------------------
with Ada.Text_IO; use Ada.Text_IO;
procedure Riscv32_Elf_Ld is
begin
Put_Line
("-M, --print-map Print map file on standard output");
end Riscv32_Elf_Ld;

View File

@@ -0,0 +1,4 @@
procedure Main is
begin
null;
end Main;

View File

@@ -0,0 +1,479 @@
Archive member included to satisfy reference by file (symbol)
C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o)
C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o (__gnat_last_chance_handler)
C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o) (gnat__io__put__2)
C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-macres.o)
C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o) (__gnat_stop)
C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o) (system__text_io__initialize)
C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(start-rom.o)
(_start_rom)
C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o (__addsf3)
C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o (__eqsf2)
C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o) (__clzsi2)
C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o) (__clz_tab)
There are no discarded input sections
Memory Configuration
Name Origin Length Attributes
flash 0x20400000 0x20000000 axrl!w
ram 0x80000000 0x00004000 axw!rl
*default* 0x00000000 0xffffffff
Linker script and memory map
LOAD test_sensors.o
LOAD b__test_sensors.o
LOAD C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
LOAD C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
LOAD C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a
LOAD C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a
LOAD C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc_eh.a
0x00000800 _DEFAULT_STACK_SIZE = 0x800
.text 0x20400000 0x9ea
*(SORT_NONE(.start))
.start 0x20400000 0x60 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(start-rom.o)
0x20400000 _start_rom
0x20400050 _exit
0x20400050 __gnat_exit
*(.text .text.* .gnu.linkonce.t*)
.text 0x20400060 0x24 test_sensors.o
0x20400060 _ada_test_sensors
.text 0x20400084 0x5a b__test_sensors.o
0x20400084 adainit
0x204000bc main
.text 0x204000de 0x10e C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
0x204000de sensors__sensorIP
0x20400118 sensors___size
0x20400132 sensors__Oeq
0x20400160 sensors___assign
0x20400190 sensors__notify_probe
0x204001d2 sensors__n_probes_on
.text 0x204001ec 0x128 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
0x204001ec sensors__pressure_sensors__pressure_sensorIP
0x20400240 sensors__pressure_sensors___size__2
0x2040025a sensors__pressure_sensors__Oeq__2
0x204002a2 sensors__pressure_sensors___assign__2
0x204002d6 sensors__pressure_sensors__probe
.text 0x20400314 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o)
.text.ada__exceptions__last_chance_handler__put.0
0x20400314 0x2c C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o)
.text.__gnat_last_chance_handler
0x20400340 0x60 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o)
0x20400340 __gnat_last_chance_handler
.text 0x204003a0 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
.text.gnat__io__put__2
0x204003a0 0x38 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
0x204003a0 gnat__io__put__2
.text.gnat__io__new_line
0x204003d8 0x26 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
0x204003d8 gnat__io__new_line
.text.gnat__io__put
0x204003fe 0x86 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
0x204003fe gnat__io__put
.text.gnat__io__put__3
0x20400484 0x36 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
0x20400484 gnat__io__put__3
.text.gnat__io__put_line
0x204004ba 0x38 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
0x204004ba gnat__io__put_line
.text 0x204004f2 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-macres.o)
.text.__gnat_stop
0x204004f2 0x6 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-macres.o)
0x204004f2 __gnat_stop
.text.abort 0x204004f8 0x6 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-macres.o)
0x204004f8 abort
.text 0x204004fe 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
.text.system__text_io__get
0x204004fe 0x6 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
0x204004fe system__text_io__get
.text.system__text_io__initialize
0x20400504 0x50 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
0x20400504 system__text_io__initialize
.text.system__text_io__is_rx_ready
0x20400554 0x20 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
0x20400554 system__text_io__is_rx_ready
.text.system__text_io__is_tx_ready
0x20400574 0xe C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
0x20400574 system__text_io__is_tx_ready
.text.system__text_io__put
0x20400582 0xa C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
0x20400582 system__text_io__put
.text.system__text_io__use_cr_lf_for_new_line
0x2040058c 0x4 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
0x2040058c system__text_io__use_cr_lf_for_new_line
.text 0x20400590 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(start-rom.o)
.text 0x20400590 0x392 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
0x20400590 __addsf3
.text 0x20400922 0x5a C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
0x20400922 __eqsf2
0x20400922 __nesf2
.text 0x2040097c 0x6e C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
0x2040097c __clzsi2
.text 0x204009ea 0x0 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
*(.gnu.warning)
.rodata 0x204009ec 0x2a4
*(.rdata)
*(.rodata .rodata.* .gnu.linkonce.r*)
.rodata 0x204009ec 0x3a b__test_sensors.o
0x204009ec __gnat_version
0x20400a14 __gnat_ada_main_program_name
*fill* 0x20400a26 0x2
.rodata 0x20400a28 0x70 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
0x20400a34 sensors__sensorE9s
0x20400a44 sensors__sensorB13s
0x20400a60 sensors__sensorR11s___UNC
0x20400a84 sensors__sensorT
.rodata 0x20400a98 0x88 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
0x20400a98 sensors__pressure_sensors__pressure_sensorE9s
0x20400ac4 sensors__pressure_sensors__pressure_sensorB13s
0x20400ae4 sensors__pressure_sensors__pressure_sensorR11s___UNC
0x20400b08 sensors__pressure_sensors__pressure_sensorT
.rodata.__gnat_last_chance_handler.str1.4
0x20400b20 0x6f C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o)
0x6b (size before relaxing)
*fill* 0x20400b8f 0x1
.rodata 0x20400b90 0x100 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
0x20400b90 __clz_tab
0x20400c90 . = ALIGN (0x4)
0x20400c90 __rom_end = .
.data 0x80000000 0x0 load address 0x20400c90
0x80000000 __data_start = .
*(.data .data.* .gnu.linkonce.d*)
.data 0x80000000 0x0 test_sensors.o
.data 0x80000000 0x0 b__test_sensors.o
.data 0x80000000 0x0 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
.data 0x80000000 0x0 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
.data 0x80000000 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o)
.data 0x80000000 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
.data 0x80000000 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-macres.o)
.data 0x80000000 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
.data 0x80000000 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(start-rom.o)
.data 0x80000000 0x0 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.data 0x80000000 0x0 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.data 0x80000000 0x0 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.data 0x80000000 0x0 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
.srodata 0x80000000 0x3c load address 0x20400c90
0x80000800 PROVIDE (__global_pointer$ = (. + 0x800))
*(.srodata.cst16)
*(.srodata.cst8)
*(.srodata.cst4)
*(.srodata.cst2)
*(.srodata .srodata.*)
.srodata 0x80000000 0x4 b__test_sensors.o
0x80000000 __gnat_version_address
.srodata 0x80000004 0xc C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
0x80000004 sensors__sensorY
0x80000008 sensors__sensorP
0x8000000c sensors__sensorR11s
.srodata 0x80000010 0xc C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
0x80000010 sensors__pressure_sensors__pressure_sensorY
0x80000014 sensors__pressure_sensors__pressure_sensorP
0x80000018 sensors__pressure_sensors__pressure_sensorR11s
.srodata 0x8000001c 0x20 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o)
.sdata 0x8000003c 0x16 load address 0x20400ccc
*(.sdata .sdata.*)
.sdata 0x8000003c 0x2 b__test_sensors.o
0x8000003c ada_main_E
.sdata 0x8000003e 0x2 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
0x8000003e sensors_E
.sdata 0x80000040 0x8 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
0x80000040 sensors__pressure_sensors_E
.sdata.ada__exceptions__last_chance_handler_E
0x80000048 0x2 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o)
0x80000048 ada__exceptions__last_chance_handler_E
.sdata.gnat__io_E
0x8000004a 0x2 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
0x8000004a gnat__io_E
.sdata.system__machine_reset_E
0x8000004c 0x2 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-macres.o)
0x8000004c system__machine_reset_E
.sdata.system__text_io__last_rx
0x8000004e 0x1 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
.sdata.system__text_io__initialized
0x8000004f 0x1 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
0x8000004f system__text_io__initialized
.sdata.system__text_io_E
0x80000050 0x2 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
0x80000050 system__text_io_E
*(.gnu.linkonce.s.*)
.sdata2
*(.sdata2 .sdata2.*)
*(.gnu.linkonce.s2.*)
0x80000052 __data_end = .
0x00000014 __data_words = ((__data_end - __data_start) >> 0x2)
0x20400c90 __data_load = LOADADDR (.data)
.bss 0x80000052 0x80e load address 0x20400ce2
0x80000058 . = ALIGN (0x8)
*fill* 0x80000052 0x6
0x80000058 __bss_start = .
*(.sbss*)
*(.gnu.linkonce.sb.*)
*(.bss .bss.*)
.bss 0x80000058 0x0 test_sensors.o
.bss 0x80000058 0x0 b__test_sensors.o
.bss 0x80000058 0x0 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
.bss 0x80000058 0x0 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
.bss 0x80000058 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o)
.bss 0x80000058 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
.bss 0x80000058 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-macres.o)
.bss 0x80000058 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
.bss 0x80000058 0x0 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(start-rom.o)
.bss 0x80000058 0x0 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.bss 0x80000058 0x0 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.bss 0x80000058 0x0 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.bss 0x80000058 0x0 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
*(.gnu.linkonce.b.*)
*(COMMON)
0x80000058 __interrupt_stack_start = .
*(.interrupt_stacks)
0x80000060 . = ALIGN (0x10)
*fill* 0x80000058 0x8
0x80000060 __interrupt_stack_end = .
0x80000060 __stack_start = .
0x80000860 . = (. + DEFINED (__stack_size)?__stack_size:_DEFAULT_STACK_SIZE)
*fill* 0x80000060 0x800
0x80000860 . = ALIGN (0x10)
0x80000860 __stack_end = .
0x80000860 _end = .
0x80000860 __heap_start = .
0x80004000 __heap_end = (ORIGIN (ram) + LENGTH (ram))
0x80000860 __bss_end = .
0x00000202 __bss_words = ((__bss_end - __bss_start) >> 0x2)
.debug
*(.debug)
.line
*(.line)
.debug_srcinfo
*(.debug_srcinfo)
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x00000000 0xf8
*(.debug_aranges)
.debug_aranges
0x00000000 0x20 test_sensors.o
.debug_aranges
0x00000020 0x20 b__test_sensors.o
.debug_aranges
0x00000040 0x20 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
.debug_aranges
0x00000060 0x20 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
.debug_aranges
0x00000080 0x20 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.debug_aranges
0x000000a0 0x20 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.debug_aranges
0x000000c0 0x20 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.debug_aranges
0x000000e0 0x18 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
.debug_pubnames
*(.debug_pubnames)
.debug_info 0x00000000 0xce9
*(.debug_info .gnu.linkonce.wi.*)
.debug_info 0x00000000 0x10b test_sensors.o
.debug_info 0x0000010b 0x123 b__test_sensors.o
.debug_info 0x0000022e 0x1cc C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
.debug_info 0x000003fa 0x1eb C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
.debug_info 0x000005e5 0x2ec C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.debug_info 0x000008d1 0x1fe C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.debug_info 0x00000acf 0x142 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.debug_info 0x00000c11 0xd8 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
.debug_abbrev 0x00000000 0x813
*(.debug_abbrev)
.debug_abbrev 0x00000000 0xe9 test_sensors.o
.debug_abbrev 0x000000e9 0xf3 b__test_sensors.o
.debug_abbrev 0x000001dc 0x12a C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
.debug_abbrev 0x00000306 0x131 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
.debug_abbrev 0x00000437 0x164 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.debug_abbrev 0x0000059b 0x13e C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.debug_abbrev 0x000006d9 0xca C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.debug_abbrev 0x000007a3 0x70 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
.debug_line 0x00000000 0x152c
*(.debug_line .debug_line.* .debug_line_end)
.debug_line 0x00000000 0x76 test_sensors.o
.debug_line 0x00000076 0xad b__test_sensors.o
.debug_line 0x00000123 0xb6 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
.debug_line 0x000001d9 0x8f C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
.debug_line 0x00000268 0xeef C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.debug_line 0x00001157 0x281 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.debug_line 0x000013d8 0x115 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.debug_line 0x000014ed 0x3f C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
.debug_frame 0x00000000 0x2e0
*(.debug_frame)
.debug_frame 0x00000000 0x38 test_sensors.o
.debug_frame 0x00000038 0x5c b__test_sensors.o
.debug_frame 0x00000094 0xec C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
.debug_frame 0x00000180 0xd0 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
.debug_frame 0x00000250 0x50 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.debug_frame 0x000002a0 0x20 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.debug_frame 0x000002c0 0x20 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.debug_str 0x00000000 0x8a5
*(.debug_str)
.debug_str 0x00000000 0x8a5 test_sensors.o
0x25b (size before relaxing)
.debug_str 0x000008a5 0x29f b__test_sensors.o
.debug_str 0x000008a5 0x2e4 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
.debug_str 0x000008a5 0x36e C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
.debug_str 0x000008a5 0x25d C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.debug_str 0x000008a5 0x190 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.debug_str 0x000008a5 0x1a9 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.debug_str 0x000008a5 0x18c C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
.debug_loc
*(.debug_loc)
.debug_macinfo
*(.debug_macinfo)
.debug_weaknames
*(.debug_weaknames)
.debug_funcnames
*(.debug_funcnames)
.debug_typenames
*(.debug_typenames)
.debug_varnames
*(.debug_varnames)
.debug_pubtypes
*(.debug_pubtypes)
.debug_ranges
*(.debug_ranges)
.debug_addr
*(.debug_addr)
.debug_line_str
0x00000000 0x355
*(.debug_line_str)
.debug_line_str
0x00000000 0x355 test_sensors.o
0x1c9 (size before relaxing)
.debug_line_str
0x00000355 0x147 b__test_sensors.o
.debug_line_str
0x00000355 0x1a8 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
.debug_line_str
0x00000355 0x1f8 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
.debug_line_str
0x00000355 0x106 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.debug_line_str
0x00000355 0x113 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.debug_line_str
0x00000355 0xfa C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.debug_line_str
0x00000355 0xfa C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
.debug_loclists
0x00000000 0x826
*(.debug_loclists)
.debug_loclists
0x00000000 0x734 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.debug_loclists
0x00000734 0x62 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.debug_loclists
0x00000796 0x90 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.debug_macro
*(.debug_macro)
.debug_names
*(.debug_names)
.debug_rnglists
0x00000000 0x174
*(.debug_rnglists)
.debug_rnglists
0x00000000 0x141 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.debug_rnglists
0x00000141 0x1d C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.debug_rnglists
0x0000015e 0x16 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.comment 0x00000000 0x39
.comment 0x00000000 0x39 test_sensors.o
0x3a (size before relaxing)
.comment 0x00000039 0x3a b__test_sensors.o
.comment 0x00000039 0x3a C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
.comment 0x00000039 0x3a C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
.comment 0x00000039 0x3a C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o)
.comment 0x00000039 0x3a C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
.comment 0x00000039 0x3a C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-macres.o)
.comment 0x00000039 0x3a C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
.comment 0x00000039 0x3a C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.comment 0x00000039 0x3a C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.comment 0x00000039 0x3a C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.comment 0x00000039 0x3a C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
.riscv.attributes
0x00000000 0x34
.riscv.attributes
0x00000000 0x34 test_sensors.o
.riscv.attributes
0x00000034 0x34 b__test_sensors.o
.riscv.attributes
0x00000068 0x34 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors.o
.riscv.attributes
0x0000009c 0x34 C:\home\itmgr\ancr\src\examples\bareboard-examples\monitor\obj\sensors-pressure_sensors.o
.riscv.attributes
0x000000d0 0x34 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(a-elchha.o)
.riscv.attributes
0x00000104 0x34 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(g-io.o)
.riscv.attributes
0x00000138 0x34 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-macres.o)
.riscv.attributes
0x0000016c 0x34 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(s-textio.o)
.riscv.attributes
0x000001a0 0x32 C:\home\itmgr\ancr\wave\riscv32-elf-windows64\gnat\install\riscv32-elf\lib\gnat\light-hifive1\adalib\libgnat.a(start-rom.o)
.riscv.attributes
0x000001d2 0x34 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(addsf3.o)
.riscv.attributes
0x00000206 0x34 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(eqsf2.o)
.riscv.attributes
0x0000023a 0x34 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clzsi2.o)
.riscv.attributes
0x0000026e 0x34 C:/home/itmgr/ancr/wave/riscv32-elf-windows64/gnat/install/bin/../lib/gcc/riscv32-elf/13.3.1/rv32imac/ilp32\libgcc.a(_clz.o)
.debug_str_offsets
*(.debug_str_offsets)
.debug_sup
*(.debug_sup)
.gnu.attributes
*(.gnu.attributes)
/DISCARD/
*(.note.GNU-stack)
*(.gnu_debuglink)
*(.gnu.lto_*)
OUTPUT(test_sensors elf32-littleriscv)

View File

@@ -0,0 +1,4 @@
gprbuild -P ./install/fake_executables.gpr -p -q
PATH=`pwd`/install/bin:$PATH
export PATH
$GPS --load=python:test.py

View File

@@ -0,0 +1,46 @@
"""
This test checks that the ld plugin hanles unknown memory regions
in the generated map file.
"""
from time import time
import GPS
from gs_utils.internal.utils import *
PARSING_ERROR_MSG = "Exception while parsing map file:"
@run_test_driver
def run_test():
# Open the Memory Usage View
GPS.execute_action("open Memory Usage")
yield wait_for_mdi_child("Memory Usage")
# Get Memory Usage view's model
memory_usage_view = GPS.MDI.get("Memory Usage").get_child().pywidget()
tree = get_widgets_by_type(Gtk.TreeView, memory_usage_view)[0]
tree.expand_all()
model = tree.get_model()
# Verify that we have the 'ram' region: this means that we did not
# get any exception while parsing the map file
gps_assert(
model.get_value(model.get_iter_first(), 1),
"ram",
"The Memory Usage View is empty while it should not",
)
# Check its size too
gps_assert(
model.get_value(model.get_iter_first(), 3),
"2.09 KB / 16 KB",
"Wrong size computed for the 'ram' region",
)
# Check that we don't have any parsing error message in the
# Messages view
gps_assert(
PARSING_ERROR_MSG not in GPS.Console().get_text(),
True,
"Parsing error message found in the Messages view",
)

View File

@@ -0,0 +1 @@
title: 'gs.402.memory_usage.too_large_int'