Apply lash_patch35 from vodz, which brings several nice size_optimizations.
No binary (build failed)
—
(log yok)
| @@ -18,12 +18,15 @@ const char *applet_name; | |
| * this should be consistent w/ the enum, busybox.h::Location, | |
| * or else... | |
| */ | |
| - | static char* install_dir[] = { |
| - | "/", |
| - | "/bin", |
| - | "/sbin", |
| - | "/usr/bin", |
| - | "/usr/sbin", |
| + | static const char usr_bin [] ="/usr/bin"; |
| + | static const char usr_sbin[] ="/usr/sbin"; |
| + | |
| + | static const char* const install_dir[] = { |
| + | &usr_bin [8], /* "", equivalent to "/" for concat_path_file() */ |
| + | &usr_bin [4], /* "/bin" */ |
| + | &usr_sbin[4], /* "/sbin" */ |
| + | usr_bin, |
| + | usr_sbin |
| }; | |
| /* abstract link() */ | |
| @@ -35,7 +38,7 @@ typedef int (*__link_f)(const char *, const char *); | |
| * malloc'd string w/ full pathname of busybox's location | |
| * NULL on failure | |
| */ | |
| - | static char *busybox_fullpath(void) |
| + | static inline char *busybox_fullpath(void) |
| { | |
| return xreadlink("/proc/self/exe"); | |
| } | |
| @@ -119,7 +119,7 @@ extern int ln_main(int argc, char **argv) | |
| status = EXIT_FAILURE; | |
| optind++; | |
| } | |
| - | exit(status); |
| + | return status; |
| } | |
| /* | |
| @@ -20,5 +20,11 @@ if [ "$CONFIG_INSMOD" = "y" ]; then | |
| bool 'Support image in kernel memory optimization (uClinux only)' CONFIG_FEATURE_INSMOD_LOADINKMEM | |
| fi | |
| + | if [ "$CONFIG_LSMOD" = "y" ]; then |
| + | if [ "$CONFIG_FEATURE_NEW_MODULE_INTERFACE" = "y" ]; then |
| + | bool 'Support lsmod query_module interface (add 638 bytes)' CONFIG_FEATURE_QUERY_MODULE_INTERFACE |
| + | fi |
| + | fi |
| + | |
| endmenu | |
| @@ -41,7 +41,7 @@ | |
| - | #ifdef CONFIG_FEATURE_NEW_MODULE_INTERFACE |
| + | #ifdef CONFIG_FEATURE_QUERY_MODULE_INTERFACE |
| struct module_info | |
| { | |
| @@ -81,7 +81,7 @@ static struct swap_header_v1 { | |
| unsigned int badpages[1]; | |
| } *p; | |
| - | static void init_signature_page(void) |
| + | static inline void init_signature_page(void) |
| { | |
| pagesize = getpagesize(); | |
| @@ -94,7 +94,7 @@ static void init_signature_page(void) | |
| p = (struct swap_header_v1 *) signature_page; | |
| } | |
| - | static void write_signature(char *sig) |
| + | static inline void write_signature(char *sig) |
| { | |
| char *sp = (char *) signature_page; | |
| @@ -147,7 +147,7 @@ It is roughly 2GB on i386, PPC, m68k, ARM, 1GB on sparc, 512MB on mips, | |
| #define MAX_BADPAGES ((pagesize-1024-128*sizeof(int)-10)/sizeof(int)) | |
| - | static void bit_set(unsigned int *addr, unsigned int nr) |
| + | static inline void bit_set(unsigned int *addr, unsigned int nr) |
| { | |
| unsigned int r, m; | |
| @@ -179,7 +179,7 @@ static void page_ok(int page) | |
| bit_set(signature_page, page); | |
| } | |
| - | static void page_bad(int page) |
| + | static inline void page_bad(int page) |
| { | |
| if (version == 0) | |
| bit_test_and_clear(signature_page, page); | |
| @@ -469,9 +469,8 @@ singlemount: | |
| string_flags = xstrdup(string_flags); | |
| rc = EXIT_SUCCESS; | |
| #ifdef CONFIG_NFSMOUNT | |
| - | if (strchr(device, ':') != NULL) |
| + | if (strchr(device, ':') != NULL) { |
| filesystemType = "nfs"; | |
| - | if (strcmp(filesystemType, "nfs") == 0) { |
| if (nfsmount (device, directory, &flags, &extra_opts, | |
| &string_flags, 1)) { | |
| perror_msg("nfsmount failed"); | |