Date: Wed, 23 Nov 2011 11:10:47 -0800 From: mdf@FreeBSD.org To: Mikolaj Golub <trociny@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r227873 - head/usr.bin/procstat Message-ID: <CAMBSHm9=kToWP8kmc5YqfMeAC%2BeX_677MPsVK5cqrNaHekSctA@mail.gmail.com> In-Reply-To: <201111230734.pAN7YA78032998@svn.freebsd.org> References: <201111230734.pAN7YA78032998@svn.freebsd.org>
index | next in thread | previous in thread | raw e-mail
On Tue, Nov 22, 2011 at 11:34 PM, Mikolaj Golub <trociny@freebsd.org> wrote: > Author: trociny > Date: Wed Nov 23 07:34:09 2011 > New Revision: 227873 > URL: http://svn.freebsd.org/changeset/base/227873 > > Log: > Fix build, hopefully. > > Reviewed by: kib > > Modified: > head/usr.bin/procstat/procstat_auxv.c > > Modified: head/usr.bin/procstat/procstat_auxv.c > ============================================================================== > --- head/usr.bin/procstat/procstat_auxv.c Wed Nov 23 07:12:26 2011 (r227872) > +++ head/usr.bin/procstat/procstat_auxv.c Wed Nov 23 07:34:09 2011 (r227873) > @@ -42,14 +42,13 @@ > > #include "procstat.h" > > -static char auxv[sizeof(Elf_Auxinfo) * 256]; > +static Elf_Auxinfo auxv[256]; > > void > procstat_auxv(struct kinfo_proc *kipp) > { > - Elf_Auxinfo *aux; > - int i, error, name[4]; > - size_t len; > + int error, name[4]; > + size_t len, i; > > if (!hflag) > printf("%5s %-16s %-53s\n", "PID", "COMM", "AUXV"); > @@ -58,7 +57,7 @@ procstat_auxv(struct kinfo_proc *kipp) > name[1] = KERN_PROC; > name[2] = KERN_PROC_AUXV; > name[3] = kipp->ki_pid; > - len = sizeof(auxv); > + len = sizeof(auxv) * sizeof(*auxv); > error = sysctl(name, 4, auxv, &len, NULL, 0); > if (error < 0 && errno != ESRCH) { > warn("sysctl: kern.proc.auxv: %d: %d", kipp->ki_pid, errno); > @@ -72,106 +71,116 @@ procstat_auxv(struct kinfo_proc *kipp) > printf(" -\n"); > return; > } > - for (aux = (Elf_Auxinfo *)auxv, i = 0; i < 256; i++, aux++) { > - switch(aux->a_type) { > + for (i = 0; i < len; i++) { > + switch(auxv[i].a_type) { > case AT_NULL: > - printf(" (%d)\n", i + 1); > + printf(" (%zu)\n", i + 1); > return; > case AT_IGNORE: > printf(" AT_IGNORE=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); I didn't see this before, but this gives very misleading output. The 0x prefix implies the output will be hex, but it's printed as decimal, here and below. I don't know if there's a style preference for 0x%lx versus %#lx, though, or a preference for a different type for the print (uintmax_t, for example). There is probably a preference for using u_long rather than unsigned long, since it's shorter. Thanks, matthew > break; > case AT_EXECFD: > printf(" AT_EXECFD=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_PHDR: > printf(" AT_PHDR=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_PHENT: > printf(" AT_PHENT=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_PHNUM: > printf(" AT_PHNUM=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_PAGESZ: > printf(" AT_PAGESZ=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_BASE: > printf(" AT_BASE=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_FLAGS: > printf(" AT_FLAGS=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_ENTRY: > printf(" AT_ENTRY=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > +#ifdef AT_NOTELF > case AT_NOTELF: > printf(" AT_NOTELF=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > +#endif > +#ifdef AT_UID > case AT_UID: > printf(" AT_UID=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > +#endif > +#ifdef AT_EUID > case AT_EUID: > printf(" AT_EUID=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > +#endif > +#ifdef AT_GID > case AT_GID: > printf(" AT_GID=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > +#endif > +#ifdef AT_EGID > case AT_EGID: > printf(" AT_EGID=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > +#endif > case AT_EXECPATH: > printf(" AT_EXECPATH=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_CANARY: > printf(" AT_CANARY=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_CANARYLEN: > printf(" AT_CANARYLEN=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_OSRELDATE: > printf(" AT_OSRELDATE=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_NCPUS: > printf(" AT_NCPUS=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_PAGESIZES: > printf(" AT_PAGESIZES=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_PAGESIZESLEN: > printf(" AT_PAGESIZESLEN=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_STACKPROT: > printf(" AT_STACKPROT=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > case AT_COUNT: > printf(" AT_COUNT=0x%lu", > - (unsigned long)aux->a_un.a_val); > + (unsigned long)auxv[i].a_un.a_val); > break; > default: > - printf(" %ld=0x%lu", (long)aux->a_type, > - (unsigned long)aux->a_un.a_val); > + printf(" %ld=0x%lu", (long)auxv[i].a_type, > + (unsigned long)auxv[i].a_un.a_val); > break; > } > } >help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAMBSHm9=kToWP8kmc5YqfMeAC%2BeX_677MPsVK5cqrNaHekSctA>
