[U-Boot-Users] Arm-linux-gcc malloc get failure while arm-elf-gcc ok

Rui.Zhou at nokia.com
2007-01-27T11:46:54Z

hi there

after modifing some codes(forget what's the codes:() arm-elf-gcc also
get malloc failure,I have to think about my program has something wrong

actually malloc have got failure in the lib_arm/board.c:

a malloc will trigger *sbrk twice(why?)
test code in start_armboot()
...
void *testptr;
testptr=malloc(10);
...

in the void *sbrk (ptrdiff_t increment)
{
ulong old = mem_malloc_brk;
ulong new = old + increment;

if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
return (NULL);
}
mem_malloc_brk = new;

return ((void *) old);
}

I print out the debug information:

1st trigger:

increment: a2e2e4e?(so big?)
old: c6dfc00
new: 169c2a4e
mem_malloc_start: c6dfc00
mem_malloc_end: c700000

2nd:

increment: 1b2
old: c6dfc00
new: c6dfdb2
mem_malloc_start: c6dfc00
mem_malloc_end: c700000

seems the 2nd is ok
but testptr still =0

*****************
in the cpu/s3c44b0/start.S I create stack like that:

stack_setup:

ldr r0,=0xc700000 /* upper 128 KiB: relocated uboot */
sub r0, r0, #CFG_MALLOC_LEN /* malloc area 1024+128*1024 =1227204bytes
*/
sub r0, r0, #CFG_GBL_DATA_SIZE /* bdinfo 128 */
sub sp, r0, #12 /* leave 3 words for abort-stack */

i think it should be ok
******************

regards,
rui

________________________________

From: u-boot-users-bounces@lists.sourceforge.net
[mailto:u-boot-users-bounces at lists.sourceforge.net]
Sent: Saturday, January 27, 2007 12:11 PM
To: u-boot-users at lists.sourceforge.net
Subject: [U-Boot-Users] Arm-linux-gcc malloc get failure while
arm-elf-gcc ok

hi there

I wonder if I am the first one to get this problem

In common\lists.c

Handle NewHandle (unsigned int numBytes)
{
void *memPtr;
HandleRecord *hanPtr;

memPtr = calloc (numBytes, 1);
hanPtr = (HandleRecord *) calloc (sizeof (HandleRecord), 1);

Debug("memPtr:%d hanPtr:%d\n",memPtr ,hanPtr ); //arm-linux-gcc get 0
for both of the Ptr while arm-elf-gcc can malloc successfully

if (hanPtr && (memPtr || numBytes == 0)) {
hanPtr->ptr = memPtr;
hanPtr->size = numBytes;
return (Handle) hanPtr;
} else {
free (memPtr);
free (hanPtr);
return NULL;
}

}

Arm-elf-gcc is 3.4.0
Arm-linux-gcc is 3.3.2 (heard there are most problems in this version??)

Regards
Zhou rui

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.denx.de/pipermail/u-boot/attachments/20070127/fa7de896/attachment.htm