From 76a6b236a9e2654e8c296c61cf71e0cf8bf4a64c Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Sun, 7 Oct 2007 17:05:42 +0000 Subject: reviving libbusybox, adding CONFIG_INDIVIDUAL part 2 --- Makefile.flags | 13 +++++-------- scripts/trylink | 28 +++++++++++++++------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/Makefile.flags b/Makefile.flags index c64a5c838..764ce16e8 100644 --- a/Makefile.flags +++ b/Makefile.flags @@ -59,27 +59,24 @@ ifeq ($(CONFIG_STATIC),y) LDFLAGS += -static endif -BBOX_LIB_LIST = m crypt +LDLIBS = m crypt ifeq ($(CONFIG_PAM),y) -BBOX_LIB_LIST += pam pam_misc +LDLIBS += pam pam_misc endif ifeq ($(CONFIG_SELINUX),y) -BBOX_LIB_LIST += selinux sepol +LDLIBS += selinux sepol endif ifeq ($(CONFIG_EFENCE),y) -BBOX_LIB_LIST += efence +LDLIBS += efence endif ifeq ($(CONFIG_DMALLOC),y) -BBOX_LIB_LIST += dmalloc +LDLIBS += dmalloc endif -# For scripts/trylink -export BBOX_LIB_LIST - #LDFLAGS += -nostdlib LDFLAGS_ELF2FLT = -Wl,-elf2flt diff --git a/scripts/trylink b/scripts/trylink index 19b0ba715..c621b7c01 100755 --- a/scripts/trylink +++ b/scripts/trylink @@ -21,12 +21,12 @@ A_FILES="$5" LDLIBS="$6" # Sanitize lib list (dups, extra spaces etc) -BBOX_LIB_LIST=`echo "$BBOX_LIB_LIST" | xargs -n1 | sort | uniq | xargs` +LDLIBS=`echo "$LDLIBS" | xargs -n1 | sort | uniq | xargs` # First link with all libs. If it fails, bail out -echo "Trying libraries: $BBOX_LIB_LIST" +echo "Trying libraries: $LDLIBS" # "lib1 lib2 lib3" -> "-llib1 -llib2 -llib3" -l_list=`echo "$BBOX_LIB_LIST" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'` +l_list=`echo "$LDLIBS" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'` test "x$l_list" != "x" && l_list="-Wl,--start-group $l_list -Wl,--end-group" try $CC $LDFLAGS \ -o $EXE -Wl,-Map -Wl,$EXE.map \ @@ -42,11 +42,11 @@ try $CC $LDFLAGS \ # Now try to remove each lib and build without it. # Stop when no lib can be removed. -while test "$BBOX_LIB_LIST"; do - $debug && echo "Trying libraries: $BBOX_LIB_LIST" +while test "$LDLIBS"; do + $debug && echo "Trying libraries: $LDLIBS" all_needed=true - for one in $BBOX_LIB_LIST; do - without_one=`echo " $BBOX_LIB_LIST " | sed "s/ $one / /g" | xargs` + for one in $LDLIBS; do + without_one=`echo " $LDLIBS " | sed "s/ $one / /g" | xargs` # "lib1 lib2 lib3" -> "-llib1 -llib2 -llib3" l_list=`echo "$without_one" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'` test "x$l_list" != "x" && l_list="-Wl,--start-group $l_list -Wl,--end-group" @@ -59,7 +59,7 @@ while test "$BBOX_LIB_LIST"; do >/dev/null if test $? = 0; then echo "Library $one is not needed" - BBOX_LIB_LIST="$without_one" + LDLIBS="$without_one" all_needed=false else echo "Library $one is needed" @@ -70,12 +70,12 @@ while test "$BBOX_LIB_LIST"; do # If there is no space char, the list has just one lib. # I'm not sure that in this case lib really is 100% needed. # Let's try linking without it anyway... thus commented out. - #{ echo "$BBOX_LIB_LIST" | grep -q ' '; } || break + #{ echo "$LDLIBS" | grep -q ' '; } || break done # Make the binary with final, minimal list of libs -echo "Final link with: $BBOX_LIB_LIST" -l_list=`echo "$BBOX_LIB_LIST" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'` +echo "Final link with: $LDLIBS" +l_list=`echo "$LDLIBS" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'` test "x$l_list" != "x" && l_list="-Wl,--start-group $l_list -Wl,--end-group -Wl,--verbose" # --verbose gives us gobs of info to stdout (e.g. linker script used) if ! test -f busybox_ldscript; then @@ -87,11 +87,11 @@ if ! test -f busybox_ldscript; then >/dev/null else echo "Custom linker script 'busybox_ldscript' found, using it" - # Add SORT_BY_ALIGNMENT to linker script (found in ${EXE}_ld.out): + # Add SORT_BY_ALIGNMENT to linker script (found in $EXE.out): # .rodata : { *(.rodata SORT_BY_ALIGNMENT(.rodata.*) .gnu.linkonce.r.*) } # *(.data SORT_BY_ALIGNMENT(.data.*) .gnu.linkonce.d.*) # *(.bss SORT_BY_ALIGNMENT(.bss.*) .gnu.linkonce.b.*) - # This will eliminate most of the data padding (~3kb). + # This will eliminate most of the padding (~3kb). try $CC $LDFLAGS \ -o $EXE -Wl,-Map -Wl,$EXE.map \ -Wl,--warn-common -Wl,--sort-common -Wl,--gc-sections \ @@ -118,6 +118,7 @@ try $CC $LDFLAGS \ echo "Linking $EXE failed" exit 1 } +strip -s --remove-section=.note --remove-section=.comment $EXE EXE="0lib/busybox" try $CC $LDFLAGS \ @@ -131,3 +132,4 @@ try $CC $LDFLAGS \ echo "Linking $EXE failed" exit 1 } +strip -s --remove-section=.note --remove-section=.comment $EXE -- cgit v1.2.3