[PATCH] eliminate des.c static buffers (resend)

Denis Vlasenko vda.linux at googlemail.com
Thu Jul 5 00:45:34 UTC 2007


Hi Mike,

des.c has by far the biggest static buffers in entire uclibc - 70k,
which is bad for NOMMU.

These two patches eliminate buffers in statically allocated data section
and allocate them on first use using malloc.

This has a drawback that malloc can fail and we segfault.
(however, in this case static buffers won't work also - program simply
will fail to load - ENOMEM).

Since uclibc has more places where we may want to convert static
buffers into dynamically-allocated-on-first-use ones,
we can deal with malloc failure priblem by having specialized
__uc_malloc which provides user callback on malloc failure
(a pointer of user function to call, etc) and concerned users
can hook on that callback.

Attached patch #1 moves some static variables into des_init(),
since they are only used there and there's no reason to keep them
global.

Second patch is moving all non-constant data into malloc space.
Only two pointer variables remain in data section.

Please apply first patch as it seems to be trivially correct,
and consider applying second one too.

If you don't like second patch, please let me know why.

sizes:

   text    data     bss     dec     hex filename
   4091       0   70760   74851   12463 uClibc.t0/libcrypt/des.o
   4151       0   70240   74391   12297 uClibc.t1/libcrypt/des.o
   4501       0       8    4509    119d uClibc.t3/libcrypt/des.o

--
vda
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 1.patch
Type: text/x-diff
Size: 1063 bytes
Desc: not available
Url : http://lists.busybox.net/pipermail/uclibc/attachments/20070705/075c7cad/attachment-0004.bin 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 2.patch
Type: text/x-diff
Size: 5425 bytes
Desc: not available
Url : http://lists.busybox.net/pipermail/uclibc/attachments/20070705/075c7cad/attachment-0005.bin 


More information about the uClibc mailing list