Joakim Tjernlund wrote on Wednesday, March 10, 2010 6:29 PM: > "Martin Krause" <martin.kra...@tqs.de> wrote on 2010/03/10 17:52:40: >> >> Hi Jocke, >> >> Joakim Tjernlund wrote on Wednesday, March 10, 2010 5:36 PM: >>>> Andrew Dyer wrote on Wednesday, March 10, 2010 4:50 PM: [SNIP] >>>> >>>> Hm, on the wikipedia article for the 'variable length arrays' >>>> (VLA) I read, that the GNU C compiler always uses the stack for >>>> this type of variables. So I think, if the stack is working for >>>> all other local variables, it should not be an memory layout >>>> problem. >>>> >>>> Eventually the following might be interesting. I have tried to make >>>> the VLA much bigger, to eliminate 'normal' buffer overrun problems: >>>> >>>> char filename[dirent.namelen + 1 + 2048] >>>> >>>> But this leads to the same result, U-Boot dies. With an fixed >>>> length array of comparable length it works: >>>> >>>> char filename[2048] >>>> >>>> Both (local) variables should end up on the stack. >>> >>> Try alloca to see if stack allocs works at all in your toolchain. >> >> I didn't find alloca(), so I tried it with __builtin_alloca(). > > Did you do #include <alloca.h> ?
Yes, but then I get an "ext2fs.c:31:20: error: alloca.h: No such file or directory" error. I'm using an older Version of U-Boot, though ... (U-Boot 1.3.4). > __builtin_alloca should work too. > >> The result is the same as with variable length array - u-boot >> dies during the ext2ls command call. >> >> Does this mean, my toolchain is broken? I use ELDK4.2 for ARM. > > I belive so, how many bytes is in dirent.namelen? alloca can not In the first call 2 bytes, in the second call 3 bytes, and then U-Boot dies. > handle to big allocs (arch dependant) and will silently fail is it is > too big. > > VLA might be impl. using alloca so if alloca is broken, probably VLA > too. This sounds plausible. I compiled the original code with VLA with ELDK4.1 and there everything works. And also the '__builtin_alloca' Version works with ELDK4.1. Regards, Martin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot