*: a few more NOINLINEs

function                                             old     new   delta
print_linkinfo                                         -     815    +815
do_msg                                                 -     783    +783
INET_setroute                                          -     757    +757
varvalue                                               -     746    +746
do_sem                                                 -     637    +637
inflate_codes                                          -     617    +617
INET6_setroute                                         -     491    +491
edir                                                   -     370    +370
sync_cursor                                            -     298    +298
update_utmp                                            -     246    +246
searchLines                                            -     165    +165
setup_alarm                                            -     144    +144
may_wakeup                                             -     101    +101
getNum                                               566     371    -195
refresh                                             1166     848    -318
rtcwake_main                                         809     479    -330
getty_main                                          2396    1921    -475
chpst_main                                          1373     746    -627
inflate_unzip_internal                              1335     567    -768
evalvar                                             1384     612    -772
ipaddr_list_or_flush                                2160    1246    -914
route_main                                          1585     245   -1340
ipcs_main                                           2523    1049   -1474
------------------------------------------------------------------------------
(add/remove: 13/0 grow/shrink: 0/10 up/down: 6170/-7213)    Total: -1043 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2009-10-08 14:35:37 +02:00
parent a7bb3c1396
commit adf922ec28
13 changed files with 89 additions and 13 deletions

View File

@ -503,7 +503,7 @@ static void inflate_codes_setup(STATE_PARAM unsigned my_bl, unsigned my_bd)
md = mask_bits[bd]; md = mask_bits[bd];
} }
/* called once from inflate_get_next_window */ /* called once from inflate_get_next_window */
static int inflate_codes(STATE_PARAM_ONLY) static NOINLINE int inflate_codes(STATE_PARAM_ONLY)
{ {
unsigned e; /* table entry flag/number of extra bits */ unsigned e; /* table entry flag/number of extra bits */
huft_t *t; /* pointer to table entry */ huft_t *t; /* pointer to table entry */

View File

@ -245,3 +245,7 @@ subCommand - 841 +841 loss
receive - 834 +834 loss receive - 834 +834 loss
855 bytes saved in total. 855 bytes saved in total.
scripts/mkdiff_obj_bloat may be useful to automate this process: run
"scripts/mkdiff_obj_bloat NORMALLY_BUILT_TREE FORCED_NOINLINE_TREE"
and select modules which shrank.

View File

@ -951,7 +951,7 @@ static void deleteLines(int num1, int num2)
* Returns the line number which matches, or 0 if there was no match * Returns the line number which matches, or 0 if there was no match
* with an error printed. * with an error printed.
*/ */
static int searchLines(const char *str, int num1, int num2) static NOINLINE int searchLines(const char *str, int num1, int num2)
{ {
const LINE *lp; const LINE *lp;
int len; int len;

View File

@ -1210,7 +1210,7 @@ static int next_tabstop(int col)
} }
//----- Synchronize the cursor to Dot -------------------------- //----- Synchronize the cursor to Dot --------------------------
static void sync_cursor(char *d, int *row, int *col) static NOINLINE void sync_cursor(char *d, int *row, int *col)
{ {
char *beg_cur; // begin and end of "d" line char *beg_cur; // begin and end of "d" line
char *tp; char *tp;

View File

@ -583,7 +583,7 @@ static void touch(const char *filename)
} }
/* update_utmp - update our utmp entry */ /* update_utmp - update our utmp entry */
static void update_utmp(const char *line, char *fakehost) static NOINLINE void update_utmp(const char *line, char *fakehost)
{ {
struct utmp ut; struct utmp ut;
struct utmp *utp; struct utmp *utp;

View File

@ -94,7 +94,7 @@ static void print_queuelen(char *name)
printf("qlen %d", ifr.ifr_qlen); printf("qlen %d", ifr.ifr_qlen);
} }
static int print_linkinfo(const struct nlmsghdr *n) static NOINLINE int print_linkinfo(const struct nlmsghdr *n)
{ {
struct ifinfomsg *ifi = NLMSG_DATA(n); struct ifinfomsg *ifi = NLMSG_DATA(n);
struct rtattr * tb[IFLA_MAX+1]; struct rtattr * tb[IFLA_MAX+1];

View File

@ -151,7 +151,7 @@ static int kw_lookup(const char *kwtbl, char ***pargs)
/* Add or delete a route, depending on action. */ /* Add or delete a route, depending on action. */
static void INET_setroute(int action, char **args) static NOINLINE void INET_setroute(int action, char **args)
{ {
struct rtentry rt; struct rtentry rt;
const char *netmask = NULL; const char *netmask = NULL;
@ -336,7 +336,7 @@ static void INET_setroute(int action, char **args)
#if ENABLE_FEATURE_IPV6 #if ENABLE_FEATURE_IPV6
static void INET6_setroute(int action, char **args) static NOINLINE void INET6_setroute(int action, char **args)
{ {
struct sockaddr_in6 sa6; struct sockaddr_in6 sa6;
struct in6_rtmsg rt; struct in6_rtmsg rt;

View File

@ -92,7 +92,7 @@ enum {
OPT_2 = (1 << 20) * ENABLE_CHPST, OPT_2 = (1 << 20) * ENABLE_CHPST,
}; };
static void edir(const char *directory_name) static NOINLINE void edir(const char *directory_name)
{ {
int wdir; int wdir;
DIR *dir; DIR *dir;

39
scripts/mkdiff_obj Executable file
View File

@ -0,0 +1,39 @@
#!/bin/sh
filter() {
# sed removes " address: " prefixes which mess up diff
sed $'s/^\\(\t*\\)[ ]*[0-9a-f][0-9a-f]*:[ \t]*/\\1/' \
| sed 's/__GI_//g'
}
test -d "$1" || exit 1
test -d "$2" || exit 1
{
(
cd "$1" || exit 1
find -name '*.o' -o -name '*.os' # -o -name '*.so'
)
(
cd "$2" || exit 1
find -name '*.o' -o -name '*.os' # -o -name '*.so'
)
} | sed 's:^\./::' | sort | uniq | \
tee LST | \
(
IFS=''
while read -r oname; do
if ! test -f "$1/$oname"; then
echo "Only $2/$oname"
continue
fi
if ! test -f "$2/$oname"; then
echo "Only $1/$oname"
continue
fi
diff -q -- "$1/$oname" "$2/$oname" >/dev/null && continue
(cd "$1"; objdump -dr "$oname" | filter >"$oname.disasm")
(cd "$2"; objdump -dr "$oname" | filter >"$oname.disasm")
diff -u "$1/$oname.disasm" "$2/$oname.disasm"
done
)

33
scripts/mkdiff_obj_bloat Executable file
View File

@ -0,0 +1,33 @@
#!/bin/sh
test -d "$1" || exit 1
test -d "$2" || exit 1
{
(
cd "$1" || exit 1
find -name '*.o' -o -name '*.os' # -o -name '*.so'
)
(
cd "$2" || exit 1
find -name '*.o' -o -name '*.os' # -o -name '*.so'
)
} | sed 's:^\./::' | sort | uniq | \
tee LST | \
(
IFS=''
while read -r oname; do
if ! test -f "$1/$oname"; then
echo "Only $2/$oname"
continue
fi
if ! test -f "$2/$oname"; then
echo "Only $1/$oname"
continue
fi
$1/scripts/bloat-o-meter $1/$oname $2/$oname | grep 'otal: 0 byte' >/dev/null && continue
$1/scripts/bloat-o-meter $1/$oname $2/$oname
size $1/$oname $2/$oname
echo
done
)

View File

@ -6376,7 +6376,7 @@ subevalvar(char *p, char *str, int strloc, int subtype,
* ash -c 'echo ${#$1}' name:'$=1' * ash -c 'echo ${#$1}' name:'$=1'
* ash -c 'echo ${#1#}' name:'1=#' * ash -c 'echo ${#1#}' name:'1=#'
*/ */
static ssize_t static NOINLINE ssize_t
varvalue(char *name, int varflags, int flags, struct strlist *var_str_list) varvalue(char *name, int varflags, int flags, struct strlist *var_str_list)
{ {
int num; int num;

View File

@ -242,7 +242,7 @@ static NOINLINE void do_shm(void)
} }
static void do_sem(void) static NOINLINE void do_sem(void)
{ {
int maxid, semid, id; int maxid, semid, id;
struct semid_ds semary; struct semid_ds semary;
@ -348,7 +348,7 @@ static void do_sem(void)
} }
static void do_msg(void) static NOINLINE void do_msg(void)
{ {
int maxid, msqid, id; int maxid, msqid, id;
struct msqid_ds msgque; struct msqid_ds msgque;

View File

@ -32,7 +32,7 @@
static time_t rtc_time; static time_t rtc_time;
static bool may_wakeup(const char *rtcname) static NOINLINE bool may_wakeup(const char *rtcname)
{ {
ssize_t ret; ssize_t ret;
char buf[128]; char buf[128];
@ -50,7 +50,7 @@ static bool may_wakeup(const char *rtcname)
return strncmp(buf, "enabled\n", 8) == 0; return strncmp(buf, "enabled\n", 8) == 0;
} }
static void setup_alarm(int fd, time_t *wakeup) static NOINLINE void setup_alarm(int fd, time_t *wakeup)
{ {
struct tm *tm; struct tm *tm;
struct linux_rtc_wkalrm wake; struct linux_rtc_wkalrm wake;