[Efi332] newlib stack size requirement?

David Eicher sailors3
Fri Aug 19 02:01:53 UTC 2005


Yep, printf uses 144 bytes on the stack, it appears vfprintf uses 1840
bytes. That 32k offset was on a pointer in r30 and I don't know where it's
pointing I suppose I should step through and see.

 

Regards,

 

Dave

 

 

  _____  

From: efi332-bounces at diy-efi.org [mailto:efi332-bounces at diy-efi.org] On
Behalf Of bowtievette at aol.com
Sent: Thursday, August 18, 2005 5:55 PM
To: efi332 at diy-efi.org
Subject: Re: [Efi332] newlib stack size requirement?

 

Yeah, 32k for a stack for printf is rediculous. If it needs that much
something is wrong. Testing if thats the case is easy though. Just allocate
a huge stack, fill it with 0xFFFF's and see how much it uses. To me it seems
unlikely that this is the problem though. 

Does sprintf work? Probably not since it probably relies on the same low
level code.

 
-----Original Message-----
From: David Eicher <sailors3 at comcast.net>
To: efi332 at diy-efi.org
Sent: Thu, 18 Aug 2005 18:20:34 -0700
Subject: RE: [Efi332] newlib stack size requirement?

Hi Jeff,

 

I?m just wondering how much deeper libc will take me into the stack (worst
case) to make sure my stack is sized correctly. Vfprintf looks like this:

 

int 

_DEFUN(_VFPRINTF_R, (data, fp, fmt0, ap),

       struct _reent *data _AND

       FILE * fp           _AND

       _CONST char *fmt0   _AND

       va_list ap)

{

      70:  94 21 f8 d0        stwu    r1,-1840(r1)

 

So it is using just 1840 bytes, I was afraid it was bigger than that.  

 

Code like this is executing in the locale.c file:

 

struct lconv *

_DEFUN_VOID(localeconv)

{

 170:     94 21 ff e0         stwu    r1,-32(r1)

 174:     7c 08 02 a6       mflr    r0

 178:     42 9f 00 05        bcl-    20,4*cr7+so,17c <localeconv+0xc>

 17c:     93 c1 00 18       stw     r30,24(r1)

 180:     7f c8 02 a6        mflr    r30

 184:     90 01 00 24       stw     r0,36(r1)

 188:     80 1e ff f0          lwz     r0,-16(r30)

 18c:     7f c0 f2 14         add     r30,r0,r30

  return _localeconv_r (_REENT);

}

 190:     80 01 00 24       lwz     r0,36(r1)

 194:     81 3e 80 10       lwz     r9,-32752(r30)

 198:     7c 08 03 a6       mtlr    r0

 19c:     83 c1 00 18       lwz     r30,24(r1)

 1a0:     80 69 00 00       lwz     r3,0(r9)

 1a4:     3

 

Look at that instruction at address 194: What is that??? A 32k offset on
some access. I guess that is the one I thought at first might have been a
stack access. It must be something else but haven?t checked to see where it
goes. 

 

It looks like I?m probably okay on stack at 4k unless some of the other lib
calls are nested and big stack users.

 

Regards,

 

Dave

 

 

  _____  

From: efi332-bounces at diy-efi.org [mailto:efi332-bounces at diy-efi.org] On
Behalf Of BowTieVette at aol.com
Sent: Thursday, August 18, 2005 8:46 AM
To: efi332 at diy-efi.org
Subject: Re: [Efi332] newlib stack size requirement?

 

In a message dated 8/18/2005 10:14:04 AM Eastern Standard Time,
sailors3 at comcast.net writes:

Does anyone know how large a stack is required for newlib libc, libmbx, and
libgloss?

Not exactly sure what you mean by that Dave. Stack usage is a runtime
dependent thing that depends on what functions you are currently running
from those libraries. 

_______________________________________________

Efi332 mailing list

Efi332 at diy-efi.org <mailto:Efi332%40diy-efi.org> 

http://lists.diy-efi.org/mailman/listinfo/efi332

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.diy-efi.org/pipermail/efi332/attachments/20050818/59f53c93/attachment.html 



More information about the Efi332 mailing list