38 lines
1.2 KiB
Diff
38 lines
1.2 KiB
Diff
Description: Call libproc constructors in strict order
|
|
Having one constructor depend on another means if the order is reversed
|
|
you get a different result. Patched based on idea by Tom Evans.
|
|
Bug-Debian: http://bugs.debian.org/460331
|
|
Author: Craig Small <csmall@debian.org>
|
|
--- a/proc/sysinfo.c
|
|
+++ b/proc/sysinfo.c
|
|
@@ -213,6 +213,7 @@
|
|
static void init_libproc(void) __attribute__((constructor));
|
|
static void init_libproc(void){
|
|
have_privs = check_for_privs();
|
|
+ init_Linux_version(); /* Must be called before we check code */
|
|
// ought to count CPUs in /proc/stat instead of relying
|
|
// on glibc, which foolishly tries to parse /proc/cpuinfo
|
|
//
|
|
--- a/proc/version.c
|
|
+++ b/proc/version.c
|
|
@@ -33,8 +33,7 @@
|
|
|
|
int linux_version_code;
|
|
|
|
-static void init_Linux_version(void) __attribute__((constructor));
|
|
-static void init_Linux_version(void) {
|
|
+void init_Linux_version(void) {
|
|
int x = 0, y = 0, z = 0; /* cleared in case sscanf() < 3 */
|
|
FILE *fp;
|
|
char buf[256];
|
|
--- a/proc/version.h
|
|
+++ b/proc/version.h
|
|
@@ -14,6 +14,7 @@
|
|
|
|
EXTERN_C_BEGIN
|
|
|
|
+void init_Linux_version(void); /* Get Linux version */
|
|
extern void display_version(void); /* display suite version */
|
|
extern const char procps_version[]; /* global buf for suite version */
|
|
|