This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Newlib][libgloss]ARM - semihosting use of __end__symbol in crt0.S


Thanks Tamar - but, what is the heap base address _used_ for in semihosting?

The heap storage is allocated starting during early start-up;
so hopefully it is not trying to use this memory...

Thanks!
Best Regards, Dave

On 7/5/2017 11:16 AM, Tamar Christina wrote:
Hi Dave,

The use of __end__ relates to the semihosting call SYS_HEAPINFO.
Likely the link originally pointed tohttp://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471f/Bacbefaa.html.

Basically at the startup r0 will contain the given 4 byte structure, where the first entry is the heap_base.
If this is 0 it means the system was unable to calculate it.
__end__ is then used as a fall back for this.
The reason __end__ is used instead of __bss_end___ has to do with the alignment requirements.

The same question was asked on the bug-fix patch that introduced it:
http://newlib.sourceware.narkive.com/bcyUamAh/rfa-libgloss-arm-handle-zero-heap-base-from-semihosting

I am not completely certain, but this seems to indicate that not all of semihosting is supported on systems with multiple stacks.

Cheers,
Tamar
________________________________________
From: Dave Nadler<drn@nadler.com>
Sent: Wednesday, July 5, 2017 2:32:18 PM
To: Tamar Christina;newlib@sourceware.org
Cc: nd
Subject: [Newlib][libgloss]ARM - semihosting use of __end__symbol in crt0.S

Hi Tamar - Perhaps as you are working on ARM crt0 and semihosting, you
can help
with a question regarding crt0's use of the symbol __end__ for semihosting.
I read the code but I'm not expert at ARM assembly and do not understand
what __end__ is being used for, and the comments do not explain the
intent/purpose...

I am concerned that there is an assumption within semihosting about
available memory or memory boundaries that may be incorrect in systems where
heap and stack are not contiguous, for example embedded systems with multiple
stacks.

I asked the question on stack exchange but (surprise) didn't get any
useful response:
https://stackoverflow.com/questions/44853442/meaning-of-gnu-symbol-end-especially-arm-embedded

Thanks in advance for any clarification,
Best Regards, Dave


--
Dave Nadler, USA East Coast voice (978) 263-0097,drn@nadler.com, Skype
 Dave.Nadler1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]