www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Adjustments in .tbss section

reply Severin Teona <teona.severin9 gmail.com> writes:
Hi again guys!

I have been trying to develop a small-sized DRuntime for 
microcontrollers during SAoC2020. My last update is here[1]. At 
the moment, I have managed to build a DRuntime that can be linked 
with a simple application (not using classes or anything), for 
TockOS[2], and using the D userland I developed this spring[3].

But, in the linking process, I get the following warnings, that I 
believe are the cause of the faults on the microcontroller when I 
actually run the application:

/home/tock/gcc-arm-none-eabi-9-2020-q2-update/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../a
m-none-eabi/bin/ld: build/cortex-m4/cortex-m4.elf: section
.tbss._D4core9exception6_storeG128v lma 0x8002dd28 adjusted to 0x8002dd30
/home/tock/gcc-arm-none-eabi-9-2020-q2-update/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../a
m-none-eabi/bin/ld: build/cortex-m4/cortex-m4.elf: section
.tbss._D4core6thread10threadbase10ThreadBase7sm_thisCQBtQBrQBnQBe lma
0x8002dd28 adjusted to 0x8002ddb0
/home/tock/gcc-arm-none-eabi-9-2020-q2-update/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../a
m-none-eabi/bin/ld: build/cortex-m4/cortex-m4.elf: section
.tbss._D2gc4impl12conservativeQw14bytesAllocatedm lma 0x8002dd28 adjusted to
0x8002ddb4
/home/tock/gcc-arm-none-eabi-9-2020-q2-update/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../a
m-none-eabi/bin/ld: build/cortex-m4/cortex-m4.elf: section
.tbss._D2gc4impl12conservativeQw14ConservativeGC12_inFinalizerb lma 0x8002dd28
adjusted to 0x8002ddbc
/home/tock/gcc-arm-none-eabi-9-2020-q2-update/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../a
m-none-eabi/bin/ld: build/cortex-m4/cortex-m4.elf: section
.tbss._D2rt7dwarfeh15ExceptionHeader5stackPSQBkQBkQBf lma 0x8002dd28 adjusted
to 0x8002ddbd
/home/tock/gcc-arm-none-eabi-9-2020-q2-update/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../a
m-none-eabi/bin/ld: build/cortex-m4/cortex-m4.elf: section
.tbss._D2rt7dwarfeh15ExceptionHeader9ehstorageSQBnQBnQBi lma 0x8002dd28
adjusted to 0x8002ddc1
/home/tock/gcc-arm-none-eabi-9-2020-q2-update/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../a
m-none-eabi/bin/ld: build/cortex-m4/cortex-m4.elf: section
.tbss._D2rt8lifetime18__blkcache_storagePS4core6memory8BlkInfo_ lma 0x8002dd28
adjusted to 0x8002de31
/home/tock/gcc-arm-none-eabi-9-2020-q2-update/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../a
m-none-eabi/bin/ld: build/cortex-m4/cortex-m4.elf: section
.tbss._D2rt8lifetime12__nextBlkIdxi lma 0x8002dd28 adjusted to 0x8002de35

All the addresses are from the flash memory of the 
microcontroller, but I believe there are some problems with the 
memory alignment. The microcontroller I am using in running in 
Thumb mode (16-bit architecture).

Does anyone have any ideea what the cause might be? Or what 
compilation flag/option should I use to not get these warnings? I 
have build the DRuntime using the ldc-build-runtime tool and 
modifying the CMakeLists.txt file to compile and link only the 
modules I need (for now).

Thank you!

[1] : 
https://forum.dlang.org/post/xqiaphttdtbohfmwwppm forum.dlang.org
[2] : https://www.tockos.org
[3] : https://github.com/DLang-IoT/libtock-d
Dec 16 2020
parent Timo Sintonen <t.sintonen luukku.com> writes:
On Wednesday, 16 December 2020 at 11:51:52 UTC, Severin Teona 
wrote:
 Hi again guys!

 I have been trying to develop a small-sized DRuntime for 
 microcontrollers during SAoC2020. My last update is here[1]. At 
 the moment, I have managed to build a DRuntime that can be 
 linked with a simple application (not using classes or 
 anything), for TockOS[2], and using the D userland I developed 
 this spring[3].

 [...]
Have you looked at my work in https://bitbucket.org/timosi/minlibd/src/master/ There is my libdruntime port and working sample program for stm32. Tdata and tbss are handled special way in linker. They seem to be there but actually they are not. Look at https://bitbucket.org/timosi/minlibd/src/master/tools/stm32f4/ldscript for my workaround. I have not updated this project for a while although I have half ready version for gcc 11. There are issues with exceptions that I have not been able to fix. There is documentation in the directories and also in the wiki. Feel free to contact me if you want to ask something.
Dec 16 2020