--- /dev/null
+diff -aur procps-3.2.8.orig/proc/sig.c procps-3.2.8/proc/sig.c
+--- procps-3.2.8.orig/proc/sig.c 2003-03-19 01:52:39.000000000 +0100
++++ procps-3.2.8/proc/sig.c 2010-06-25 20:39:06.081194787 +0200
+@@ -231,7 +231,7 @@
+ }
+
+ /* sanity check */
+-static int init_signal_list(void) __attribute__((constructor));
++static int init_signal_list(void) __attribute__((constructor(0)));
+ static int init_signal_list(void){
+ if(number_of_signals != 31){
+ fprintf(stderr, "WARNING: %d signals -- adjust and recompile.\n", number_of_signals);
+diff -aur procps-3.2.8.orig/proc/sysinfo.c procps-3.2.8/proc/sysinfo.c
+--- procps-3.2.8.orig/proc/sysinfo.c 2008-03-24 05:33:43.000000000 +0100
++++ procps-3.2.8/proc/sysinfo.c 2010-06-25 20:41:33.254192147 +0200
+@@ -209,7 +209,7 @@
+ return !!rc;
+ }
+
+-static void init_libproc(void) __attribute__((constructor));
++static void init_libproc(void) __attribute__((constructor(2)));
+ static void init_libproc(void){
+ have_privs = check_for_privs();
+ // ought to count CPUs in /proc/stat instead of relying
+diff -aur procps-3.2.8.orig/proc/version.c procps-3.2.8/proc/version.c
+--- procps-3.2.8.orig/proc/version.c 2003-01-29 02:11:43.000000000 +0100
++++ procps-3.2.8/proc/version.c 2010-06-25 20:39:12.126192267 +0200
+@@ -33,7 +33,7 @@
+
+ int linux_version_code;
+
+-static void init_Linux_version(void) __attribute__((constructor));
++static void init_Linux_version(void) __attribute__((constructor(1)));
+ static void init_Linux_version(void) {
+ static struct utsname uts;
+ int x = 0, y = 0, z = 0; /* cleared in case sscanf() < 3 */