library: fix 'smaps' bug preventing a build with clang
As a result of the issue referenced below, we'll trade our homegrown offset generator for an 'offsetof' macro found in the stddef.h header file. This pleases clang. [ and thanks to Daniel Kolesa for the report and fix ] Reference(s): . bug report & recommended solution https://gitlab.com/procps-ng/procps/-/issues/235 . clang error message proc/readproc.c:673:9: error: initializer element is not a compile-time constant mkENT(Rss), ^~~~~~~~~~ proc/readproc.c:661:34: note: expanded from macro 'mkENT' #define mkENT(F) { #F ":", -1, (int)((void*)&q->smap_ ## F - (void*)&q->fZERO) } ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
parent
7279cd8e4d
commit
9e77e138c1
1
NEWS
1
NEWS
@ -4,6 +4,7 @@ procps-ng-NEXT
|
|||||||
* ps: threads again display when -L is used with -q issue #234
|
* ps: threads again display when -L is used with -q issue #234
|
||||||
* ps: proper aix format string behavior was restored
|
* ps: proper aix format string behavior was restored
|
||||||
* sysctl: print dotted keys again
|
* sysctl: print dotted keys again
|
||||||
|
* top: fix 'smaps' bug preventing build under clang issue #235
|
||||||
|
|
||||||
procps-ng-4.0.0
|
procps-ng-4.0.0
|
||||||
---------------
|
---------------
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
@ -658,10 +659,9 @@ static void smaps2proc (const char *s, proc_t *restrict P) {
|
|||||||
// 1st proc_t data field
|
// 1st proc_t data field
|
||||||
#define fZERO tid
|
#define fZERO tid
|
||||||
// a smaptab entry generator
|
// a smaptab entry generator
|
||||||
#define mkENT(F) { #F ":", -1, (int)((void*)&q->smap_ ## F - (void*)&q->fZERO) }
|
#define mkENT(F) { #F ":", -1, offsetof(proc_t, smap_ ## F) }
|
||||||
// make a target field
|
// make a target field
|
||||||
#define mkOBJ(X) ( (unsigned long *)((void *)&P->fZERO + smaptab[X].offs) )
|
#define mkOBJ(X) ( (unsigned long *)((void *)&P->fZERO + smaptab[X].offs) )
|
||||||
static const proc_t *q;
|
|
||||||
static struct {
|
static struct {
|
||||||
const char *item;
|
const char *item;
|
||||||
int slen;
|
int slen;
|
||||||
|
Loading…
Reference in New Issue
Block a user