-diff -u -r ../procps-ng-3.3.11/Makefile.in ./Makefile.in
---- ../procps-ng-3.3.11/Makefile.in 2015-08-09 03:57:07.937259593 -0400
-+++ ./Makefile.in 2015-12-15 06:46:35.530449934 -0500
-@@ -296,9 +296,11 @@
- tload_LDADD = $(LDADD)
- tload_DEPENDENCIES = ./proc/libprocps.la
+Bionic lacks strverscmp as well.
+
+diff -u -r ../procps-ng-3.3.12/Makefile.in ./Makefile.in
+--- ../procps-ng-3.3.12/Makefile.in 2016-07-10 01:32:11.170237828 -0400
++++ ./Makefile.in 2016-08-14 18:07:17.324636393 -0400
+@@ -112,7 +112,7 @@
+ @WITH_NCURSES_TRUE@ watch.1 \
+ @WITH_NCURSES_TRUE@ top/top.1
+
+-@CYGWIN_TRUE@@WITH_NCURSES_TRUE@am__append_10 = lib/strverscmp.c
++@WITH_NCURSES_TRUE@am__append_10 = lib/strverscmp.c
+ @BUILD_SKILL_TRUE@am__append_11 = \
+ @BUILD_SKILL_TRUE@ skill \
+ @BUILD_SKILL_TRUE@ snice
+@@ -308,8 +308,8 @@
+ tload_DEPENDENCIES = ./proc/libprocps.la $(am__DEPENDENCIES_2)
am__top_top_SOURCES_DIST = top/top.h top/top.c top/top_nls.h \
-+ top/strverscmp.c \
- top/top_nls.c lib/fileutils.c
+ top/top_nls.c lib/fileutils.c lib/strverscmp.c
+-@CYGWIN_TRUE@@WITH_NCURSES_TRUE@am__objects_1 = \
+-@CYGWIN_TRUE@@WITH_NCURSES_TRUE@ lib/strverscmp.$(OBJEXT)
++@WITH_NCURSES_TRUE@am__objects_1 = \
++@WITH_NCURSES_TRUE@ lib/strverscmp.$(OBJEXT)
@WITH_NCURSES_TRUE@am_top_top_OBJECTS = top/top.$(OBJEXT) \
@WITH_NCURSES_TRUE@ top/top_nls.$(OBJEXT) \
-+@WITH_NCURSES_TRUE@ top/strverscmp.$(OBJEXT) \
- @WITH_NCURSES_TRUE@ lib/fileutils.$(OBJEXT)
- top_top_OBJECTS = $(am_top_top_OBJECTS)
- @WITH_NCURSES_TRUE@top_top_DEPENDENCIES = $(LDADD) \
-@@ -661,6 +663,7 @@
- @WITH_NCURSES_TRUE@top_top_SOURCES = \
- @WITH_NCURSES_TRUE@ top/top.h \
- @WITH_NCURSES_TRUE@ top/top.c \
-+@WITH_NCURSES_TRUE@ top/strverscmp.c \
- @WITH_NCURSES_TRUE@ top/top_nls.h \
- @WITH_NCURSES_TRUE@ top/top_nls.c \
- @WITH_NCURSES_TRUE@ lib/fileutils.c
+ @WITH_NCURSES_TRUE@ lib/fileutils.$(OBJEXT) $(am__objects_1)
+++ /dev/null
-diff -N -u -r ../procps-ng-3.3.9/top/strverscmp.c ./top/strverscmp.c
---- ../procps-ng-3.3.9/top/strverscmp.c 1970-01-01 01:00:00.000000000 +0100
-+++ ./top/strverscmp.c 2014-07-06 07:26:13.650946884 +0200
-@@ -0,0 +1,156 @@
-+/* Compare strings while treating digits characters numerically.\r
-+ Copyright (C) 1997, 2002, 2005 Free Software Foundation, Inc.\r
-+ This file is part of the libiberty library.\r
-+ Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.\r
-+\r
-+ Libiberty is free software; you can redistribute it and/or\r
-+ modify it under the terms of the GNU Lesser General Public\r
-+ License as published by the Free Software Foundation; either\r
-+ version 2.1 of the License, or (at your option) any later version.\r
-+\r
-+ Libiberty is distributed in the hope that it will be useful,\r
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-+ Lesser General Public License for more details.\r
-+\r
-+ You should have received a copy of the GNU Lesser General Public\r
-+ License along with the GNU C Library; if not, write to the Free\r
-+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA\r
-+ 02110-1301 USA. */\r
-+\r
-+#include <ctype.h>\r
-+\r
-+/*\r
-+@deftypefun int strverscmp (const char *@var{s1}, const char *@var{s2})\r
-+The @code{strverscmp} function compares the string @var{s1} against\r
-+@var{s2}, considering them as holding indices/version numbers. Return\r
-+value follows the same conventions as found in the @code{strverscmp}\r
-+function. In fact, if @var{s1} and @var{s2} contain no digits,\r
-+@code{strverscmp} behaves like @code{strcmp}.\r
-+\r
-+Basically, we compare strings normally (character by character), until\r
-+we find a digit in each string - then we enter a special comparison\r
-+mode, where each sequence of digits is taken as a whole. If we reach the\r
-+end of these two parts without noticing a difference, we return to the\r
-+standard comparison mode. There are two types of numeric parts:\r
-+"integral" and "fractional" (those begin with a '0'). The types\r
-+of the numeric parts affect the way we sort them:\r
-+\r
-+@itemize @bullet\r
-+@item\r
-+integral/integral: we compare values as you would expect.\r
-+\r
-+@item\r
-+fractional/integral: the fractional part is less than the integral one.\r
-+Again, no surprise.\r
-+\r
-+@item\r
-+fractional/fractional: the things become a bit more complex.\r
-+If the common prefix contains only leading zeroes, the longest part is less\r
-+than the other one; else the comparison behaves normally.\r
-+@end itemize\r
-+\r
-+@smallexample\r
-+strverscmp ("no digit", "no digit")\r
-+ @result{} 0 // @r{same behavior as strcmp.}\r
-+strverscmp ("item#99", "item#100")\r
-+ @result{} <0 // @r{same prefix, but 99 < 100.}\r
-+strverscmp ("alpha1", "alpha001")\r
-+ @result{} >0 // @r{fractional part inferior to integral one.}\r
-+strverscmp ("part1_f012", "part1_f01")\r
-+ @result{} >0 // @r{two fractional parts.}\r
-+strverscmp ("foo.009", "foo.0")\r
-+ @result{} <0 // @r{idem, but with leading zeroes only.}\r
-+@end smallexample\r
-+\r
-+This function is especially useful when dealing with filename sorting,\r
-+because filenames frequently hold indices/version numbers.\r
-+@end deftypefun\r
-+\r
-+*/\r
-+\r
-+/* states: S_N: normal, S_I: comparing integral part, S_F: comparing\r
-+ fractional parts, S_Z: idem but with leading Zeroes only */\r
-+#define S_N 0x0\r
-+#define S_I 0x4\r
-+#define S_F 0x8\r
-+#define S_Z 0xC\r
-+\r
-+/* result_type: CMP: return diff; LEN: compare using len_diff/diff */\r
-+#define CMP 2\r
-+#define LEN 3\r
-+\r
-+\r
-+/* Compare S1 and S2 as strings holding indices/version numbers,\r
-+ returning less than, equal to or greater than zero if S1 is less than,\r
-+ equal to or greater than S2 (for more info, see the Glibc texinfo doc). */\r
-+\r
-+int\r
-+strverscmp (const char *s1, const char *s2)\r
-+{\r
-+ const unsigned char *p1 = (const unsigned char *) s1;\r
-+ const unsigned char *p2 = (const unsigned char *) s2;\r
-+ unsigned char c1, c2;\r
-+ int state;\r
-+ int diff;\r
-+\r
-+ /* Symbol(s) 0 [1-9] others (padding)\r
-+ Transition (10) 0 (01) d (00) x (11) - */\r
-+ static const unsigned int next_state[] =\r
-+ {\r
-+ /* state x d 0 - */\r
-+ /* S_N */ S_N, S_I, S_Z, S_N,\r
-+ /* S_I */ S_N, S_I, S_I, S_I,\r
-+ /* S_F */ S_N, S_F, S_F, S_F,\r
-+ /* S_Z */ S_N, S_F, S_Z, S_Z\r
-+ };\r
-+\r
-+ static const int result_type[] =\r
-+ {\r
-+ /* state x/x x/d x/0 x/- d/x d/d d/0 d/-\r
-+ 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */\r
-+\r
-+ /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,\r
-+ CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,\r
-+ /* S_I */ CMP, -1, -1, CMP, +1, LEN, LEN, CMP,\r
-+ +1, LEN, LEN, CMP, CMP, CMP, CMP, CMP,\r
-+ /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,\r
-+ CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,\r
-+ /* S_Z */ CMP, +1, +1, CMP, -1, CMP, CMP, CMP,\r
-+ -1, CMP, CMP, CMP\r
-+ };\r
-+\r
-+ if (p1 == p2)\r
-+ return 0;\r
-+\r
-+ c1 = *p1++;\r
-+ c2 = *p2++;\r
-+ /* Hint: '0' is a digit too. */\r
-+ state = S_N | ((c1 == '0') + (isdigit (c1) != 0));\r
-+\r
-+ while ((diff = c1 - c2) == 0 && c1 != '\0')\r
-+ {\r
-+ state = next_state[state];\r
-+ c1 = *p1++;\r
-+ c2 = *p2++;\r
-+ state |= (c1 == '0') + (isdigit (c1) != 0);\r
-+ }\r
-+\r
-+ state = result_type[state << 2 | (((c2 == '0') + (isdigit (c2) != 0)))];\r
-+\r
-+ switch (state)\r
-+ {\r
-+ case CMP:\r
-+ return diff;\r
-+\r
-+ case LEN:\r
-+ while (isdigit (*p1++))\r
-+ if (!isdigit (*p2++))\r
-+ return 1;\r
-+\r
-+ return isdigit (*p2) ? -1 : diff;\r
-+\r
-+ default:\r
-+ return state;\r
-+ }\r
-+}\r