summaryrefslogtreecommitdiff
path: root/package/busybox/busybox-1.7.0-trylink.patch
diff options
context:
space:
mode:
authorPeter Korsgaard <jacmet@sunsite.dk>2007-09-10 07:38:03 +0000
committerPeter Korsgaard <jacmet@sunsite.dk>2007-09-10 07:38:03 +0000
commit2750d69835fb89ce804d173d5380c3b0074b6540 (patch)
treef7b17c7a523f5aaf769cda26791d787d0856c977 /package/busybox/busybox-1.7.0-trylink.patch
parent83ea1970176a85ac6189b0d007d9c4c0a0c9c626 (diff)
Busybox 1.7.0 patches
Diffstat (limited to 'package/busybox/busybox-1.7.0-trylink.patch')
-rw-r--r--package/busybox/busybox-1.7.0-trylink.patch89
1 files changed, 89 insertions, 0 deletions
diff --git a/package/busybox/busybox-1.7.0-trylink.patch b/package/busybox/busybox-1.7.0-trylink.patch
new file mode 100644
index 000000000..051f2af0e
--- /dev/null
+++ b/package/busybox/busybox-1.7.0-trylink.patch
@@ -0,0 +1,89 @@
+diff -urN busybox-1.7.0/scripts/trylink busybox-1.7.0-trylink/scripts/trylink
+--- busybox-1.7.0/scripts/trylink 2007-08-24 11:49:43.000000000 +0100
++++ busybox-1.7.0-trylink/scripts/trylink 2007-09-03 12:08:18.000000000 +0100
+@@ -14,37 +14,30 @@
+ BBOX_LIB_LIST=`echo "$BBOX_LIB_LIST" | xargs -n1 | sort | uniq | xargs`
+
+ # First link with all libs. If it fails, bail out
+-l_list=`echo "$BBOX_LIB_LIST" | sed -e 's/ / -l/g' -e 's/^/-l/'`
+ echo "Trying libraries: $BBOX_LIB_LIST"
+-try "-Wl,--start-group $l_list -Wl,--end-group" "$@" \
++l_list=`echo "$BBOX_LIB_LIST" | 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 "$l_list" "$@" \
+ || {
+ echo "Failed: $* -Wl,--start-group $l_list -Wl,--end-group"
+ cat busybox_ld.err
+ exit 1
+ }
+
+-#### Hack disabled: conflicts with ld --verbose flag in last link phase
+-
+-##### Hack: we are not supposed to know executable name,
+-##### but this hack cuts down link time
+-####mv busybox_unstripped busybox_unstripped.tmp
+-####mv busybox.map busybox.map.tmp
+-
+ # Now try to remove each lib and build without it.
+ # Stop when no lib can be removed.
+-####ever_discarded=false
+ while test "$BBOX_LIB_LIST"; do
+ $debug && echo "Trying libraries: $BBOX_LIB_LIST"
+ all_needed=true
+ for one in $BBOX_LIB_LIST; do
+ without_one=`echo " $BBOX_LIB_LIST " | sed "s/ $one / /g" | xargs`
+- l_list=`echo "$without_one" | sed -e 's/ / -l/g' -e 's/^/-l/'`
+- $debug && echo "Trying -l options: $l_list"
+- if try "-Wl,--start-group $l_list -Wl,--end-group" "$@"; then
++ 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"
++ $debug && echo "Trying -l options: '$l_list'"
++ if try "$l_list" "$@"; then
+ echo "Library $one is not needed"
+ BBOX_LIB_LIST="$without_one"
+ all_needed=false
+-#### ever_discarded=true
+ else
+ echo "Library $one is needed"
+ fi
+@@ -57,24 +50,19 @@
+ #{ echo "$BBOX_LIB_LIST" | grep -q ' '; } || break
+ done
+
+-####mv busybox_unstripped.tmp busybox_unstripped
+-####mv busybox.map.tmp busybox.map
+-####$ever_discarded && {
+- # 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/'`
+- # --verbose gives us gobs of info to stdout (e.g. linker script used)
+- if ! test -f busybox_ldscript; then
+- try "-Wl,--start-group $l_list -Wl,--end-group -Wl,--verbose" "$@" >busybox_ld.out ####|| exit 1
+- else
+- echo "Custom linker script 'busybox_ldscript' found, using it"
+- # Add SORT_BY_ALIGNMENT to linker script (found in busybox_ld.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).
+- try "-Wl,--start-group $l_list -Wl,--end-group -Wl,--verbose -Wl,-T -Wl,busybox_ldscript" "$@" >busybox_ld.out
+- fi
+-####}
+-####rm busybox_ld.err
+-####exit 0 # Ensure "success" exit code
++# 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$//'`
++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
++ try "$l_list -Wl,--verbose" "$@" >busybox_ld.out
++else
++ echo "Custom linker script 'busybox_ldscript' found, using it"
++ # Add SORT_BY_ALIGNMENT to linker script (found in busybox_ld.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).
++ try "$l_list -Wl,--verbose -Wl,-T -Wl,busybox_ldscript" "$@" >busybox_ld.out
++fi