On Thu, Dec 17, 2009 at 11:32:44AM +0100, Uwe Kleine-König wrote: > Hello Peter, > > On Thu, Dec 17, 2009 at 11:24:55AM +0100, Peter Korsgaard wrote: > > >>>>> "Sascha" == Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> writes: > > > > >> > doh! I'm out of brown paper bags. > > >> instead of sizeof("...") - 1, strlen should work. > > > > Sascha> Yes, it works, but adds to the binary space. This doesn't matter in this > > Sascha> case since the binary size does not really matter for the sandbox, but > > Sascha> we don't want other people to copy such things. > > > > Notice that this is in fs/cramfs/crams.c, so not specific to sandbox. I > > would imagine gcc would be smart enough to replace strlen("/dev/") with > > the constant 5, but apparently not: > > > > nm -S fs/cramfs/cramfs.o{.orig,}|grep cramfs_probe > > 0000000000000053 000000000000015d t cramfs_probe > > 0000000000000053 000000000000016f t cramfs_probe > hmmmm, I have here: > > ukleinek@cassiopeia:~$ cat test.c > #include <string.h> > > size_t strlen(const char *s) > { > return 2; > } > > int main(int argc, char **argv) > { > printf("strlen(\"Peter Korsgaard\") = %d\n", strlen("Peter Korsgaard")); > return 0; > } > > ukleinek@cassiopeia:~$ gcc test.c -o test > ukleinek@cassiopeia:~$ ./test > strlen("Peter Korsgaard") = 15 > > So the compiler *is* smart. (Maybe even smarter than most people > expect.) The -fno-builtin makes the difference here. In barebox strlen is called no matter what. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox