|
Message-ID: <CAK1hOcNCtW1KTFxewiLKv6rfgfKQt_eEvsugkQ7tr8m4G+f66g@mail.gmail.com> Date: Wed, 28 Oct 2015 10:53:41 +0100 From: Denys Vlasenko <vda.linux@...glemail.com> To: musl <musl@...ts.openwall.com>, Rich Felker <dalias@...c.org> Subject: Re: [PATCH] configure: add gcc flags for better link-time optimization On Tue, Oct 27, 2015 at 10:01 PM, Rich Felker <dalias@...c.org> wrote: >> After -ffunction-sections -fdata-sections are added to gcc command line, >> "nm" output does change, the entire difference is as follows: >> >> --- libc.so.nm.OLD 2015-10-27 19:57:52.971964518 +0100 >> +++ libc.so.nm 2015-10-27 19:58:28.544115009 +0100 >> @@ -18,7 +18,6 @@ >> 0000000000000001 T setutxent >> 0000000000000001 W updwtmp >> 0000000000000001 T updwtmpx >> -0000000000000002 T dlclose >> 0000000000000002 T __stack_chk_fail >> 0000000000000003 T catclose >> 0000000000000003 T dirfd >> @@ -84,6 +83,7 @@ >> 0000000000000005 T catopen >> 0000000000000005 T creall >> 0000000000000005 T dladdr >> +0000000000000005 T dlclose >> 0000000000000005 T dlinfo >> 0000000000000005 T __fbufsize >> 0000000000000005 T __freadptrinc >> @@ -328,7 +328,6 @@ >> 000000000000000b T recv >> 000000000000000b T send >> 000000000000000b T setprotoent >> -000000000000000b T tfind >> 000000000000000b T __xstat >> 000000000000000b W __xstat64 >> 000000000000000c T __acquire_ptc >> @@ -417,6 +416,7 @@ >> 000000000000000e T tcflow >> 000000000000000e T tcflush >> 000000000000000e T tcsendbreak >> +000000000000000e T tfind >> 000000000000000f T dcgettext >> 000000000000000f T execv >> 000000000000000f T execvp >> @@ -986,8 +986,6 @@ >> 0000000000000032 T pthread_rwlock_init >> 0000000000000032 T putchar_unlocked >> 0000000000000032 T sem_init >> -0000000000000032 T __stdio_exit >> -0000000000000032 W __stdio_exit_needed >> 0000000000000032 T wcschr >> 0000000000000033 T pthread_rwlock_tryrdlock >> 0000000000000033 T pthread_setcanceltype >> @@ -1011,6 +1009,8 @@ >> 0000000000000035 T pthread_sigmask >> 0000000000000035 T pwritev >> 0000000000000035 W pwritev64 >> +0000000000000035 T __stdio_exit >> +0000000000000035 W __stdio_exit_needed >> 0000000000000035 W thrd_detach >> 0000000000000035 T __tre_mem_destroy >> 0000000000000035 T tsearch >> >> As you see, not a single label was eliminated. >> >> >> The visible small differences in size for a few functions are caused >> by the need to always use "near" jumps (not "short" ones) >> for tail call optimizations now, since they now jump across sections: >> >> Before: >> 00000000000274a6 <dlclose>: >> 274a6: eb c8 jmp 27470 <__reset_tls+0x1f0> >> After: >> 000000000002795f <dlclose>: >> 2795f: e9 c5 ff ff ff jmpq 27929 <__reset_tls+0x1f0> > > I see. That's probably not a big deal. > > Did you see any symbols disappear when adding --gc-sections? Yes, I do. $ nm --size-sort busybox_unstripped >busybox_unstripped.nm $ nm --size-sort busybox_unstripped--gc-sections >busybox_unstripped--gc-sections.nm $ diff -u busybox_unstripped.nm busybox_unstripped--gc-sections.nm | grep '^[^ @]' --- busybox_unstripped.nm 2015-10-28 10:48:16.362304813 +0100 +++ busybox_unstripped--gc-sections.nm 2015-10-28 10:48:26.056294599 +0100 -0000000000000001 t reinit_unicode_for_ash -0000000000000001 t reinit_unicode_for_hush -0000000000000007 T xmalloc_sockaddr2host -0000000000000008 b cur.1926 -0000000000000008 b dummy -0000000000000008 b dummy_file -0000000000000008 b end.1927 -0000000000000008 b lock.1928 -0000000000000008 T xstrtoi_range -0000000000000008 T xstrtoll_range -000000000000000a T bb_internal_getpwnam_r -000000000000000a T ipneigh_main -000000000000000c T xsocket_stream -000000000000000e T xgid2group -0000000000000010 T selinux_or_die -0000000000000011 T xatoi_range_sfx -0000000000000011 T xatou_range_sfx -0000000000000012 T xstrtoi -0000000000000013 T xatoll_range_sfx -0000000000000015 T replace -0000000000000017 T xatoi_sfx -0000000000000017 T xspawn -0000000000000018 T replace_underscores -000000000000001a T bb_iswspace -000000000000001b T bb_internal_setpwent -000000000000001b T xgetgrgid -000000000000001c T llist_rev -000000000000001c T xstrtoll -000000000000001d T xread_char -000000000000001e T monotonic_ns -0000000000000021 T xatoll_sfx -0000000000000021 T xmalloc_fgetline_str -0000000000000022 T bb_iswpunct -0000000000000023 T bb_iswalnum -000000000000002f T bb_internal_endpwent -000000000000002f T isrv_want_wr -0000000000000033 T bb_delete_module -000000000000003c T index_in_str_array -000000000000003e T rewind -0000000000000043 T is_suffixed_with -000000000000004b T moderror -0000000000000054 T executable_exists -000000000000005a T rta_addattr_l -0000000000000062 T string_to_llist -0000000000000088 T bb_init_module -00000000000000ae T bb_herror_msg -00000000000000c3 T parse_cmdline_module_options -000000000000010d T __simple_malloc
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.