2008/10/10 Bernhard Reutner-Fischer <[EMAIL PROTECTED]>:
> On Fri, Oct 10, 2008 at 07:07:52PM +0200, walter harms wrote:
>>
>>
>>Bernhard Reutner-Fischer schrieb:
>>> On Fri, Oct 10, 2008 at 04:21:51PM +0200, Loïc Grenié wrote:
>>>> I've noticed that busybox uses few functions from libm.
>>>
>>> Actually, you can turn off ASH_MATH_SUPPORT_64 FEATURE_AWK_MATH and
>>> you don't need libm at all.
>>>
>>>> I've written some replacements for those functions. Right
>>>> now this is just the test program and I've not made the
>>>> effort of including them in Busybox. However I'd like to
>>>> have your opinion: would it be a good idea to include
>>>> them ?
>>>
>>> I don't think so (but perhaps vda likes it anyway). Just:
>>> 1) turn off the abovementioned two features
>>> or, if either of that is really needed desperately, you can
>>> 2a) link busybox statically (very likely in the scenarios you mention
>>> below)
>>> 2b) Use a trimmed libm which only contains those few functions that will
>>> be needed by your initramfs (usually 0, see #1 above).
>>>
>>>> They are neither very fast nor very precise (the
>>>> trigonometric functions are awful, up to 16 bits are
>>>> false) but libm is rather large and usually a user of
>>>> Busybox on an initrd or embedded platform does not
>>>> need neither speed nor excellent precision. Otherwise
>>>
>>> I think that neither of them need ASH_MATH_SUPPORT_64 FEATURE_AWK_MATH,
>>> so busybox wouldn't link against libm anyway.
>>
>>
>>Hi Bernhard,
>>you are right but the idea is nice and we do not have a lot of libm functions.
>
> text data bss dec hex filename
> 754 0 0 754 2f2 e_log.os (ex libm-mini.a)
> 12 0 0 12 c w_log.os (ex libm-mini.a)
> 688 0 0 688 2b0 e_exp.os (ex libm-mini.a)
> 12 0 0 12 c w_exp.os (ex libm-mini.a)
> 2340 0 0 2340 924 e_pow.os (ex libm-mini.a)
> 12 0 0 12 c w_pow.os (ex libm-mini.a)
> 316 0 0 316 13c k_cos.os (ex libm-mini.a)
> 236 0 0 236 ec s_cos.os (ex libm-mini.a)
> 246 0 0 246 f6 k_sin.os (ex libm-mini.a)
> 238 0 0 238 ee s_sin.os (ex libm-mini.a)
> 670 0 0 670 29e k_tan.os (ex libm-mini.a)
> 138 0 0 138 8a s_tan.os (ex libm-mini.a)
> 408 0 0 408 198 e_sqrt.os (ex libm-mini.a)
> 12 0 0 12 c w_sqrt.os (ex libm-mini.a)
> 660 0 0 660 294 e_atan2.os (ex libm-mini.a)
> 12 0 0 12 c w_atan2.os (ex libm-mini.a)
> 52 0 0 52 34 s_fabs.os (ex libm-mini.a)
> 1308 0 0 1308 51c e_rem_pio2.os (ex libm-mini.a)
> 1530 0 0 1530 5fa k_rem_pio2.os (ex libm-mini.a)
> 9644 0 0 9644 25ac (TOTALS)
> 10324 172 0 10496 2900 libm-mini.so
>
> $ file libm-mini.so
> libm-mini.so: ELF 32-bit MSB shared object, Motorola 68020, version 1
> (SYSV), dynamically linked, not stripped
>
> So approximately 10k for a random m68k smallish-libm with accurate
> precision.
>
> Loïc didnt' paste the size, but if they are not precise then it's easy
> to cut down on the size :)
Indeed. bloat-o-meter says:
function old new delta
myatan2 - 344 +344
mysqrt - 327 +327
myexp - 316 +316
mycos_or_sin - 289 +289
mylog - 285 +285
.rodata 8 136 +128
mytan - 58 +58
mypow - 35 +35
mysin - 27 +27
mycos - 27 +27
------------------------------------------------------------------------------
(add/remove: 9/0 grow/shrink: 1/1 up/down: 1836/0) Total: 1836 bytes
If there is a better solution, I don't mind !
Loïc
_______________________________________________
busybox mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/busybox