Tested-by: Andrew Strauss <astraus...@gmail.com> Reviewed-by: Andrew Strauss <astraus...@gmail.com>
On Tue, Jun 1, 2021 at 5:07 AM Alex Bennée <alex.ben...@linaro.org> wrote: > The previous numbers were a guess at best. While we could extract the > information from a loaded ELF file via -kernel we could still get > tripped up by self decompressing or relocating code. Besides sane > library code has access to the same symbols in run time to make a > determination of the location of the heap. > > Signed-off-by: Alex Bennée <alex.ben...@linaro.org> > Cc: Andrew <astraus...@gmail.com> > --- > semihosting/arm-compat-semi.c | 19 ++++++++++--------- > 1 file changed, 10 insertions(+), 9 deletions(-) > > diff --git a/semihosting/arm-compat-semi.c b/semihosting/arm-compat-semi.c > index 1c29146dcf..041b4f6c04 100644 > --- a/semihosting/arm-compat-semi.c > +++ b/semihosting/arm-compat-semi.c > @@ -1165,12 +1165,10 @@ target_ulong do_common_semihosting(CPUState *cs) > case TARGET_SYS_HEAPINFO: > { > target_ulong retvals[4]; > - target_ulong limit; > int i; > #ifdef CONFIG_USER_ONLY > + target_ulong limit; > TaskState *ts = cs->opaque; > -#else > - target_ulong rambase = common_semi_rambase(cs); > #endif > > GET_ARG(0); > @@ -1201,12 +1199,15 @@ target_ulong do_common_semihosting(CPUState *cs) > retvals[2] = ts->stack_base; > retvals[3] = 0; /* Stack limit. */ > #else > - limit = current_machine->ram_size; > - /* TODO: Make this use the limit of the loaded application. > */ > - retvals[0] = rambase + limit / 2; > - retvals[1] = rambase + limit; > - retvals[2] = rambase + limit; /* Stack base */ > - retvals[3] = rambase; /* Stack limit. */ > + /* > + * Reporting 0 indicates we couldn't calculate the real > + * values which should force most software to fall back to > + * using information it has. > + */ > + retvals[0] = 0; /* Heap Base */ > + retvals[1] = 0; /* Heap Limit */ > + retvals[2] = 0; /* Stack base */ > + retvals[3] = 0; /* Stack limit. */ > #endif > > for (i = 0; i < ARRAY_SIZE(retvals); i++) { > -- > 2.20.1 > >