Commit Graph

515 Commits

Author SHA1 Message Date
Ron Yorston
610c4c385b applet_tables: save space by removing applet name offsets
The array applet_nameofs consumes two bytes per applet.  It encodes

   nofork/noexec flags
   suid flags
   the offset of the applet name in the applet_name string

Change the applet_table build tool to store the flags in two separate
arrays (applet_flags and applet_suid).  Replace applet_nameofs[] with a
smaller version that only stores a limited number of offsets.

This requires changes to the macros APPLET_IS_NOFORK, APPLET_IS_NOEXEC
and APPLET_SUID.

   According to Valgrind the original find_applet_by_name required
   353 cycles per call, averaged over all names.  Adjusting the number
   of known offsets allows space to be traded off against execution time:

      KNOWN_OFFSETS     cycles     bytes (wrt KNOWN_OFFSETS = 0)

           0             9057        -
           2             4604       32
           4             2407       75
           8             1342       98
          16              908      130
          32              884      194

   This patch uses KNOWN_OFFSETS = 8.

v2:
   Remove some dead code from the applet_table tool;
   Treat the applet in the middle of the table as a special case.

v3:
   Use the middle applet to adjust the start of the linear search as
   well as the last applet found.

v4:
   Use an augmented linear search in find_applet_by_name.
   Drop the special treatment of the middle name from get_applet_name:
   most of the advantage now derives from the last stored value.

v5:
   Don't store index in applet_nameofs, it can be calculated.

v6:
   Tweaks by Denys

function                                             old     new   delta
find_applet_by_name                                   25     125    +100
applet_suid                                            -      92     +92
run_applet_no_and_exit                               452     460      +8
run_applet_and_exit                                  695     697      +2
applet_name_compare                                   31       -     -31
applet_nameofs                                       734      14    -720
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 3/1 up/down: 202/-751)         Total: -549 bytes
   text       data        bss        dec        hex    filename
 925464        906      17160     943530      e65aa    busybox_old
 924915        906      17160     942981      e6385    busybox_unstripped

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2016-03-30 00:44:11 +02:00
Denys Vlasenko
5fa6d1a632 Aboriginal linux/musl build fixes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2015-10-05 11:15:43 +02:00
Clayton Shotwell
b7ee7e1e13 applets: Add installation of individual binaries
Adding support to install individual binaries if the option is
enabled. This also installs the shared libbusybox.so.* library.

Signed-off-by: Clayton Shotwell <clshotwe@rockwellcollins.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2015-07-01 19:10:03 +02:00
Denys Vlasenko
cd7a38a87d false: make "false --help" exit with 1
function                                             old     new   delta
run_applet_no_and_exit                               447     445      -2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2014-09-18 00:47:05 +02:00
Denys Vlasenko
195c436f84 build system: use od -b instead of od -t x1
od -t is not available in non-CONFIG_DESKTOPed busybox od

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2013-11-26 14:56:29 +01:00
Denys Vlasenko
924a179cb7 build system: do not generate MAX_APPLET_NAME_LEN (unused)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2013-11-26 12:03:24 +01:00
Bernhard Reutner-Fischer
9078633fee buildsys: Add helper to list suid applets
Add a helper script that lists all applets that
- do or may require SUID provileges (busybox.cfg.suid)
- do not require SUID provileges (busybox.cfg.nosuid)

Some setups prefer to build two busybox binaries, one that is suid which
contains all applets that do or may require suid privileges, and a
second one for all the rest (which drops suid). To ease splitting these
two binaries, generate a list of CONFIG_ items for the suid binary.

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2013-07-26 13:39:46 +02:00
Denys Vlasenko
a0fd4a789c style fixes, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2012-09-02 14:29:14 +02:00
Denys Vlasenko
78a3b6739c Fix one-applet build for tcpsvd
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2012-03-19 04:38:00 +01:00
Denys Vlasenko
6d2d652cd3 applet_tables: fix single applet build failure. Closes 4009
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2011-09-16 14:28:32 +02:00
Denys Vlasenko
c0644cac0d applets/install.sh: afer quoting of variables
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2011-04-05 02:37:15 +02:00
Denys Vlasenko
12140e607c fix install.sh
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2011-04-04 03:53:23 +02:00
Denys Vlasenko
6ec1510f71 applet_tables: do not include libbb.h, that header ir for target builds
...and applets/applet_tables.c is built on *host*.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2011-03-28 01:23:38 +02:00
Denys Vlasenko
bff5f3f2b4 fix bit rot in scripts/Makefile.IMA #2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2011-03-06 23:48:24 +01:00
Bjørn Forsman
102b8bde3b .gitignore: add missing ignores
Ignore output files created by "make defconfig; make".

Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2011-03-06 19:54:15 +01:00
Bernd Jendrissek
55988aed47 fix "make install"
Signed-off-by: Bernd Jendrissek <bernd.jendrissek@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2011-02-20 05:50:04 +01:00
Denys Vlasenko
b7c9fb27cb whitespace fixes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2011-02-03 00:05:48 +01:00
Denys Vlasenko
0fdf2e1026 simpler check for od
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-16 15:46:20 +02:00
Denys Vlasenko
06a80bdbea build system: test that od is present in the host system
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-16 13:23:15 +02:00
Denys Vlasenko
0ef64bdb40 *: make GNU licensing statement forms more regular
This change retains "or later" state! No licensing _changes_ here,
only form is adjusted (article, space between "GPL" and "v2" and so on).

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-08-16 20:14:46 +02:00
Denys Vlasenko
9768a82eb0 *: fix "see file License ..." - the file is named LICENSE (in uppercase)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-08-16 03:04:14 +02:00
Denys Vlasenko
1d36f24bcb make usage_compressed.h generation _always_ update mtime
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-07-08 02:29:47 +02:00
Denys Vlasenko
9297dbc9d2 randomconfig fixes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-07-05 21:37:12 +02:00
Denys Vlasenko
08f0b784fd Yet another attempt to stamp out "make -j" problems
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-07-04 23:34:02 +02:00
Denys Vlasenko
1fcbff2fac build system: do not rebuild ash and hush on any change to any .c file
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-06-26 02:40:08 +02:00
Denys Vlasenko
2f32bf8be6 remove defconfig. Now "make defconfig" simply uses defaults from Config.in
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-06-06 04:14:28 +02:00
Denys Vlasenko
6c5bf0d347 make it possible to have include/applets.h-esque entries in .c files
As an example, bunzip2 and bzcat is changed to use it.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-06-06 00:53:45 +02:00
Denys Vlasenko
0e5ba0843b Remove requirement that include/applets.h must be sorted
First, I _again_ violated it - two xz-related applets are in wrong positions.
Second, planned in-applet help text thing will be so much easier without
this requirement...

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-06-05 23:11:07 +02:00
Denys Vlasenko
da929a95aa mass renaming Kbuild -> Kbuild.src, Config.in -> Config.src
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-06-04 20:10:51 +02:00
Denys Vlasenko
1497484839 ash,hush: make it possible to build them individually
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-03-23 01:08:26 +01:00
Denys Vlasenko
3581c62515 whitespace fixes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2010-01-25 13:39:24 +01:00
Denys Vlasenko
18221506e5 build system: more fixes to parallel build
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-11-25 00:22:31 +01:00
Denys Vlasenko
b24c1139fb build system: fix parallel make
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-11-24 22:23:21 +01:00
Bernhard Reutner-Fischer
b35e3a8612 applets/usage_compressed: combine many seds in one; hide dd stats
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-10-27 17:06:32 +01:00
Denys Vlasenko
149a32a19b mkfs_ext2: use compatible inode sizes; add -I <inodesize>. (by Vladimir)
function                                             old     new   delta
mkfs_ext2_main                                      2385    2495    +110
packed_usage                                       26400   26447     +47
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 157/0)             Total: 157 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-10-22 12:12:17 +02:00
Denys Vlasenko
f228913fed ok, last fix wasn't correct... this one is better
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-10-02 01:21:31 +02:00
Denys Vlasenko
963f52fc59 fix a typo in prev commit
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-10-02 01:13:45 +02:00
Denys Vlasenko
acabf8fcb8 Update documentation generator so that it sucks less
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-10-02 01:10:32 +02:00
Denys Vlasenko
263cff9a2f do not store 1st two bytes of compressed help text
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-08-20 23:34:01 +02:00
Mike Frysinger
3322351724 add .gitignore files
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2009-05-05 09:05:30 -04:00
Denis Vlasenko
f66fe9af89 another stab at fixing out-of-tree build 2009-04-19 14:12:50 +00:00
Denis Vlasenko
a29c935442 hopefully fix out-of-tree build broken by 26139 2009-04-19 12:15:51 +00:00
Denis Vlasenko
66cb86e489 build system: remove some unnecessary rebuilds 2009-04-17 21:56:02 +00:00
Denis Vlasenko
db12d1d733 Fix forgotten license comments 2008-12-07 00:52:58 +00:00
Denis Vlasenko
ea7c9b3366 whitespace fixes 2008-09-25 10:39:10 +00:00
Denis Vlasenko
63e49fa56f fix byte-swapping of compressed help on big-endian machines 2008-08-09 20:31:57 +00:00
Denis Vlasenko
a60f84ebf0 *: rename ATTRIBUTE_XXX to just XXX. 2008-07-05 09:18:54 +00:00
Denis Vlasenko
e0a7fc54eb uname,individual: fix improper printf usage
uname,awk: small code shrink

function                                             old     new   delta
uname_main                                           175     166      -9
nvalloc                                              167     157     -10
evaluate                                            6381    6370     -11
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-30)             Total: -30 bytes
2008-07-02 11:14:59 +00:00
Denis Vlasenko
21765fa063 udhcpc: kill undocumented -W, it was a no-op.
fix option parsing in the case some CONFIG_x are off.
 disable -b on NOMMU, make backgrounding work correctly
 (if a bit differently from MMU case). Previously,
 it wasn't working at all.
 stop using global data for flags in main(), opt
 bitfield works as well.

function                                             old     new   delta
cryptpw_main                                         177     153     -24
packed_usage                                       24478   24452     -26
client_background                                     26       -     -26
udhcpc_main                                         2462    2372     -90
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/3 up/down: 0/-166)           Total: -166 bytes
2008-06-13 20:44:05 +00:00
Bernhard Reutner-Fischer
5e25ddb7d3 - use STD*_FILENO some more. No object-code changes 2008-05-19 09:48:17 +00:00