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


> 
> Dave Nadler writes:
> 
> > Thanks Tamar - but, what is the heap base address _used_ for in
> semihosting?
> >
> IIRC, the sbrk system call implementation in libnosys uses it, not sure about
> rdimon.
> 
> Regards
> Senthil
> 
> > The heap storage is allocated starting during early start-up; so
> > hopefully it is not trying to use this memory...

Our default implementations don't use this for anything, it just makes it available.
The sbrk implementation in rdimon only uses __heap_limit from the SYS_HEAPINFO call.

That said the sbrk implementation is currently using "end" as the heap base.

> >
> > 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-
> en
> >> d-especially-arm-embedded
> >>
> >> Thanks in advance for any clarification, Best Regards, Dave


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