tags 621137 + patch stop See attached patch (I didn't test this actual debdiff as I prepared the debdiff on my laptop, but I did confirm that this fixes the issue).
-- Loïc Minier
diff -Nru busybox-1.18.4/debian/changelog busybox-1.18.4/debian/changelog --- busybox-1.18.4/debian/changelog 2011-03-18 13:32:34.000000000 +0100 +++ busybox-1.18.4/debian/changelog 2011-04-07 02:45:46.000000000 +0200 @@ -1,3 +1,11 @@ +busybox (1:1.18.4-1.1) unstable; urgency=low + + * Remove all referneces to tryexec's applet_no in patch applets-fallback as + this param is not unused; this has the side effect of working around a + toolchain issue breaking busybox' exec on ARM; closes: #621137. + + -- Loïc Minier <loic.min...@linaro.org> Thu, 07 Apr 2011 02:44:33 +0200 + busybox (1:1.18.4-1) unstable; urgency=low * new upstream bugfix release (1.18.4) diff -Nru busybox-1.18.4/debian/patches/applets-fallback.patch busybox-1.18.4/debian/patches/applets-fallback.patch --- busybox-1.18.4/debian/patches/applets-fallback.patch 2011-03-18 13:32:34.000000000 +0100 +++ busybox-1.18.4/debian/patches/applets-fallback.patch 2011-04-07 02:44:25.000000000 +0200 @@ -1,11 +1,11 @@ --- a/shell/ash.c +++ b/shell/ash.c -@@ -7345,25 +7345,10 @@ static int builtinloc = -1; /* index +@@ -7345,25 +7345,10 @@ static void -tryexec(IF_FEATURE_SH_STANDALONE(int applet_no,) char *cmd, char **argv, char **envp) -+tryexec(IF_FEATURE_SH_STANDALONE(int applet_no UNUSED_PARAM,) char *cmd, char **argv, char **envp) ++tryexec(char *cmd, char **argv, char **envp) { int repeated = 0; @@ -27,7 +27,13 @@ repeat: #ifdef SYSV do { -@@ -7413,14 +7398,14 @@ shellexec(char **argv, const char *path, +@@ -7407,20 +7392,17 @@ + int e; + char **envp; + int exerrno; +-#if ENABLE_FEATURE_SH_STANDALONE +- int applet_no = -1; +-#endif clearredir(/*drop:*/ 1); envp = listvars(VEXPORT, VUNSET, /*end:*/ NULL); @@ -36,8 +42,9 @@ - || (applet_no = find_applet_by_name(argv[0])) >= 0 -#endif - ) { +- tryexec(IF_FEATURE_SH_STANDALONE(applet_no,) argv[0], argv, envp); + if (strchr(argv[0], '/') != NULL) { - tryexec(IF_FEATURE_SH_STANDALONE(applet_no,) argv[0], argv, envp); ++ tryexec(argv[0], argv, envp); e = errno; } else { +#if ENABLE_FEATURE_SH_STANDALONE @@ -59,7 +66,7 @@ /* check if path points to an executable file; * return 1 if found; * return 0 otherwise; -@@ -68,12 +71,60 @@ int FAST_FUNC exists_execable(const char +@@ -68,12 +71,60 @@ } #if ENABLE_FEATURE_PREFER_APPLETS @@ -124,7 +131,7 @@ --- a/libbb/messages.c +++ b/libbb/messages.c -@@ -36,6 +36,15 @@ const char bb_msg_standard_output[] ALIG +@@ -36,6 +36,15 @@ const char bb_hexdigits_upcase[] ALIGN1 = "0123456789ABCDEF"; const char bb_busybox_exec_path[] ALIGN1 = CONFIG_BUSYBOX_EXEC_PATH; @@ -142,7 +149,7 @@ * but I want to save a few bytes here. Check libbb.h before changing! */ --- a/include/libbb.h +++ b/include/libbb.h -@@ -842,11 +842,11 @@ int exists_execable(const char *filename +@@ -842,11 +842,11 @@ * but it may exec busybox and call applet instead of searching PATH. */ #if ENABLE_FEATURE_PREFER_APPLETS @@ -158,7 +165,7 @@ #else #define BB_EXECVP(prog,cmd) execvp(prog,cmd) #define BB_EXECLP(prog,cmd,...) execlp(prog,cmd, __VA_ARGS__) -@@ -1612,6 +1612,7 @@ extern const char bb_path_wtmp_file[]; +@@ -1612,6 +1612,7 @@ #define bb_dev_null "/dev/null" extern const char bb_busybox_exec_path[]; @@ -168,7 +175,7 @@ extern const char bb_PATH_root_path[]; /* "PATH=/sbin:/usr/sbin:/bin:/usr/bin" */ --- a/Config.in +++ b/Config.in -@@ -411,13 +411,10 @@ config FEATURE_PREFER_APPLETS +@@ -411,13 +411,10 @@ config BUSYBOX_EXEC_PATH string "Path to BusyBox executable" @@ -186,7 +193,7 @@ --- a/coreutils/chroot.c +++ b/coreutils/chroot.c -@@ -30,5 +30,7 @@ int chroot_main(int argc UNUSED_PARAM, c +@@ -30,5 +30,7 @@ argv[1] = (char *) "-i"; }