dtrace4linux / linux

dtrace for linux - kernel driver and userland tools
http://crtags.blogspot.com
1.17k stars 226 forks source link

make all fails because: error: request for member 'val' in something not a structure or union #96

Open mikey- opened 9 years ago

mikey- commented 9 years ago

Hi ^___^

Firstly, here is what I'm working with:

mikey@some-server:~/linux$ lsb_release -a
No LSB modules are available.
Distributor ID:  Ubuntu
Description:     Ubuntu 12.04.5 LTS
Release:         12.04
Codename:        precise
mikey@some-server:~/linux$ uname -a
Linux some-sever 3.2.0-69-virtual #103-Ubuntu SMP Tue Sep 2 05:21:29 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

--------------------The Problem------------------- I'm trying to run make all and I received the exact same error that was reported in #91

I followed the advice ("comment out the offending lines. They aren't used") It made the problem go away for ctl.c (though note the warning about uid in the output below) but I'm now seeing a lot more errors. Not really sure what to do at this point. Any help would be super mad ^_^

Here is the output from make all:

  CC [M]  /home/mikey/linux/build-3.2.0-69-virtual/driver/ctl.o
/home/mikey/linux/build-3.2.0-69-virtual/driver/ctl.c: In function 'ctl_linux_ioctl.isra.0':
/home/mikey/linux/build-3.2.0-69-virtual/driver/ctl.c:283:12: warning: 'uid1' may be used uninitialized in this function [-Wuninitialized]
/home/mikey/linux/build-3.2.0-69-virtual/driver/ctl.c:283:12: warning: 'uid2' may be used uninitialized in this function [-Wuninitialized]
  CC [M]  /home/mikey/linux/build-3.2.0-69-virtual/driver/cpu_arm.o
  CC [M]  /home/mikey/linux/build-3.2.0-69-virtual/driver/cpu_x86.o
  CC [M]  /home/mikey/linux/build-3.2.0-69-virtual/driver/cyclic_linux.o
  CC [M]  /home/mikey/linux/build-3.2.0-69-virtual/driver/dcpc.o
  CC [M]  /home/mikey/linux/build-3.2.0-69-virtual/driver/dis_tables.o
  CC [M]  /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.o
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_priv_proc_common_user':
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1200:6: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1200:35: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1201:6: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1201:35: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1202:6: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1202:35: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1203:6: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1203:35: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1204:6: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1204:35: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1205:6: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1205:35: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_priv_probe':
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1393:7: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1393:36: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1394:7: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1394:36: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1395:7: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1395:36: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1396:7: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1396:36: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1397:7: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1397:36: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1398:7: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1398:36: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_dif_variable':
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:3353:21: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:3378:21: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_dif_subr':
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:4562:13: warning: assignment makes integer from pointer without a cast [enabled by default]
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:4569:13: warning: assignment makes integer from pointer without a cast [enabled by default]
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_cred2priv':
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:7300:11: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_register':
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:7801:34: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_ioctl':
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:16599:23: error: request for member 'val' in something not a structure or union
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: At top level:
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:15389:1: warning: 'dtrace_helpers_duplicate' defined but not used [-Wunused-function]
/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:15763:1: warning: 'dtrace_cpu_setup_initial' defined but not used [-Wunused-function]
make[3]: *** [/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.o] Error 1
make[2]: *** [_module_/home/mikey/linux/build-3.2.0-69-virtual/driver] Error 2
make[1]: *** [kernel] Error 2
tools/bug.sh
make: *** [all] Error 1

<3 mikey

dtrace4linux commented 9 years ago

try modifying dtrace_linux.h to use the other branch of the #if where the Kxxx_VALUE macros are defined.

On 12 January 2015 at 06:32, Mikey Battiston notifications@github.com wrote:

Hi ^___^

Firstly, here is what I'm working with:

mikey@some-server:~/linux$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 12.04.5 LTS Release: 12.04 Codename: precise

mikey@some-server:~/linux$ uname -a Linux some-sever 3.2.0-69-virtual #103-Ubuntu SMP Tue Sep 2 05:21:29 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

--------------------The Problem------------------- I'm trying to run make all and I received the exact same error that was reported in #91 https://github.com/dtrace4linux/linux/issues/91

I followed the advice ("comment out the offending lines. They aren't used") It made the problem go away for ctl.c (though note the warning about uid in the output below) but I'm now seeing a lot more errors. Not really sure what to do at this point. Any help would be super mad ^_^

Here is the output from make all:

CC [M] /home/mikey/linux/build-3.2.0-69-virtual/driver/ctl.o /home/mikey/linux/build-3.2.0-69-virtual/driver/ctl.c: In function 'ctl_linux_ioctl.isra.0': /home/mikey/linux/build-3.2.0-69-virtual/driver/ctl.c:283:12: warning: 'uid1' may be used uninitialized in this function [-Wuninitialized] /home/mikey/linux/build-3.2.0-69-virtual/driver/ctl.c:283:12: warning: 'uid2' may be used uninitialized in this function [-Wuninitialized] CC [M] /home/mikey/linux/build-3.2.0-69-virtual/driver/cpu_arm.o CC [M] /home/mikey/linux/build-3.2.0-69-virtual/driver/cpu_x86.o CC [M] /home/mikey/linux/build-3.2.0-69-virtual/driver/cyclic_linux.o CC [M] /home/mikey/linux/build-3.2.0-69-virtual/driver/dcpc.o CC [M] /home/mikey/linux/build-3.2.0-69-virtual/driver/dis_tables.o CC [M] /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.o /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_priv_proc_common_user': /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1200:6: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1200:35: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1201:6: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1201:35: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1202:6: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1202:35: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1203:6: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1203:35: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1204:6: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1204:35: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1205:6: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1205:35: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_priv_probe': /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1393:7: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1393:36: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1394:7: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1394:36: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1395:7: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1395:36: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1396:7: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1396:36: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1397:7: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1397:36: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1398:7: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:1398:36: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_dif_variable': /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:3353:21: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:3378:21: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_dif_subr': /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:4562:13: warning: assignment makes integer from pointer without a cast [enabled by default] /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:4569:13: warning: assignment makes integer from pointer without a cast [enabled by default] /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_cred2priv': /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:7300:11: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_register': /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:7801:34: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: In function 'dtrace_ioctl': /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:16599:23: error: request for member 'val' in something not a structure or union /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c: At top level: /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:15389:1: warning: 'dtrace_helpers_duplicate' defined but not used [-Wunused-function] /home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.c:15763:1: warning: 'dtrace_cpu_setup_initial' defined but not used [-Wunused-function] make[3]: * [/home/mikey/linux/build-3.2.0-69-virtual/driver/dtrace.o] Error 1 make[2]: * [module/home/mikey/linux/build-3.2.0-69-virtual/driver] Error 2 make[1]: * [kernel] Error 2 tools/bug.sh make: * [all] Error 1

<3 mikey

— Reply to this email directly or view it on GitHub https://github.com/dtrace4linux/linux/issues/96.

mikey- commented 9 years ago

I'll give it a go :sparkles::sparkling_heart::sparkles: thanks

mikey- commented 9 years ago

okay so here's the change I made:

mikey@some-server:~/linux$ git diff driver/dtrace_linux.h
diff --git a/driver/dtrace_linux.h b/driver/dtrace_linux.h
index a3595f8..a280fda 100644
--- a/driver/dtrace_linux.h
+++ b/driver/dtrace_linux.h
@@ -100,7 +100,7 @@ typedef uint32_t ipaddr_t;
 /*   Actually  -  its  another  Linux  mess. Centos 6.4 has a 2.6.32  */
 /*   kernel but with later semantics.                                */
 /**********************************************************************/
-#if defined(CONFIG_UIDGID_STRICT_TYPE_CHECKS) || LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)
+#if defined(CONFIG_UIDGID_STRICT_TYPE_CHECKS) && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)
 #      define  KUIDT_VALUE(v) v.val
 #      define  KGIDT_VALUE(v) v.val
 #else

After that I was able to make all. I did get the following warning though:

build/ctfconvert not available - so not building the linux.ctf file
NOTE: The build is complete, but build/ctfconvert is not available.
      This means you will get run time errors from the io.d and sched.d files
      due to undefined kernel structure definitions. Simply delete or rename
      these files until a fix can be put in place to handle older
      distros which do not have the required libdwarf dependencies.

      (Typical error is references to undefined struct definitions such
      as dtrace_cpu_t).

I'll let you know how it goes...

:sunglasses::two_hearts: Mikey

mikey- commented 9 years ago

I gave up on trying to make it work with 12.04 I upgraded what I was working on to 14.04 and I had no problems doing make all, make install, make load

Thanks for all your help.

phamtranquocviet commented 9 years ago

I am trying to install dtrace for the first time too and got the same error. What is 12.04?

mikey- commented 5 years ago

Dunno if you worked it out but 12.04 was the version of Ubuntu I was working with