Message ID | 20210903012236.160858-1-lizhijian@cn.fujitsu.com |
---|---|
State | Superseded |
Headers | show |
Series | [v2] selftests/gpio: Fix gpio compiling error | expand |
ping On 03/09/2021 09:22, Li Zhijian wrote: > [root@iaas-rpma gpio]# make > gcc gpio-mockup-cdev.c -o /home/lizhijian/linux/tools/testing/selftests/gpio/gpio-mockup-cdev > gpio-mockup-cdev.c: In function ‘request_line_v2’: > gpio-mockup-cdev.c:24:30: error: storage size of ‘req’ isn’t known > 24 | struct gpio_v2_line_request req; > | ^~~ > gpio-mockup-cdev.c:32:14: error: ‘GPIO_V2_LINE_FLAG_OUTPUT’ undeclared (first use in this function); did you mean ‘GPIOLINE_FLAG_IS_OUT’? > 32 | if (flags & GPIO_V2_LINE_FLAG_OUTPUT) { > | ^~~~~~~~~~~~~~~~~~~~~~~~ > > gpio-mockup-cdev.c includes <linux/gpio.h> which could be provided by > kernel-headers package, and where it's expected to declare > GPIO_V2_LINE_FLAG_OUTPUT. However distros or developers will not always > install the same kernel-header as we are compiling. > > So we can tell compiler to search headers from linux tree simply like others, > such as sched. > > CC: Philip Li <philip.li@intel.com> > Reported-by: kernel test robot <lkp@intel.com> > Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com> > > --- > V2: add more details about the fix > --- > tools/testing/selftests/gpio/Makefile | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/tools/testing/selftests/gpio/Makefile b/tools/testing/selftests/gpio/Makefile > index 39f2bbe8dd3d..42ea7d2aa844 100644 > --- a/tools/testing/selftests/gpio/Makefile > +++ b/tools/testing/selftests/gpio/Makefile > @@ -3,5 +3,6 @@ > TEST_PROGS := gpio-mockup.sh > TEST_FILES := gpio-mockup-sysfs.sh > TEST_GEN_PROGS_EXTENDED := gpio-mockup-cdev > +CFLAGS += -I../../../../usr/include > > include ../lib.mk
Hi Li, thanks for your patch! It needs to be sent directly to Bartosz Golaszewski so he can apply it to the GPIO tree. Thanks! Linus Walleij On Fri, Sep 3, 2021 at 3:18 AM Li Zhijian <lizhijian@cn.fujitsu.com> wrote: > > [root@iaas-rpma gpio]# make > gcc gpio-mockup-cdev.c -o /home/lizhijian/linux/tools/testing/selftests/gpio/gpio-mockup-cdev > gpio-mockup-cdev.c: In function ‘request_line_v2’: > gpio-mockup-cdev.c:24:30: error: storage size of ‘req’ isn’t known > 24 | struct gpio_v2_line_request req; > | ^~~ > gpio-mockup-cdev.c:32:14: error: ‘GPIO_V2_LINE_FLAG_OUTPUT’ undeclared (first use in this function); did you mean ‘GPIOLINE_FLAG_IS_OUT’? > 32 | if (flags & GPIO_V2_LINE_FLAG_OUTPUT) { > | ^~~~~~~~~~~~~~~~~~~~~~~~ > > gpio-mockup-cdev.c includes <linux/gpio.h> which could be provided by > kernel-headers package, and where it's expected to declare > GPIO_V2_LINE_FLAG_OUTPUT. However distros or developers will not always > install the same kernel-header as we are compiling. > > So we can tell compiler to search headers from linux tree simply like others, > such as sched. > > CC: Philip Li <philip.li@intel.com> > Reported-by: kernel test robot <lkp@intel.com> > Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com> > > --- > V2: add more details about the fix > --- > tools/testing/selftests/gpio/Makefile | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/tools/testing/selftests/gpio/Makefile b/tools/testing/selftests/gpio/Makefile > index 39f2bbe8dd3d..42ea7d2aa844 100644 > --- a/tools/testing/selftests/gpio/Makefile > +++ b/tools/testing/selftests/gpio/Makefile > @@ -3,5 +3,6 @@ > TEST_PROGS := gpio-mockup.sh > TEST_FILES := gpio-mockup-sysfs.sh > TEST_GEN_PROGS_EXTENDED := gpio-mockup-cdev > +CFLAGS += -I../../../../usr/include > > include ../lib.mk > -- > 2.31.1 > > >
On Fri, Oct 01, 2021 at 12:39:42AM +0200, Linus Walleij wrote: > Hi Li, > > thanks for your patch! > > It needs to be sent directly to Bartosz Golaszewski so he can apply > it to the GPIO tree. > > Thanks! > Linus Walleij > > On Fri, Sep 3, 2021 at 3:18 AM Li Zhijian <lizhijian@cn.fujitsu.com> wrote: > > > > [root@iaas-rpma gpio]# make > > gcc gpio-mockup-cdev.c -o /home/lizhijian/linux/tools/testing/selftests/gpio/gpio-mockup-cdev > > gpio-mockup-cdev.c: In function ‘request_line_v2’: > > gpio-mockup-cdev.c:24:30: error: storage size of ‘req’ isn’t known > > 24 | struct gpio_v2_line_request req; > > | ^~~ > > gpio-mockup-cdev.c:32:14: error: ‘GPIO_V2_LINE_FLAG_OUTPUT’ undeclared (first use in this function); did you mean ‘GPIOLINE_FLAG_IS_OUT’? > > 32 | if (flags & GPIO_V2_LINE_FLAG_OUTPUT) { > > | ^~~~~~~~~~~~~~~~~~~~~~~~ > > > > gpio-mockup-cdev.c includes <linux/gpio.h> which could be provided by > > kernel-headers package, and where it's expected to declare > > GPIO_V2_LINE_FLAG_OUTPUT. However distros or developers will not always > > install the same kernel-header as we are compiling. > > > > So we can tell compiler to search headers from linux tree simply like others, > > such as sched. > > > > CC: Philip Li <philip.li@intel.com> > > Reported-by: kernel test robot <lkp@intel.com> > > Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com> > > > > --- > > V2: add more details about the fix > > --- > > tools/testing/selftests/gpio/Makefile | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/tools/testing/selftests/gpio/Makefile b/tools/testing/selftests/gpio/Makefile > > index 39f2bbe8dd3d..42ea7d2aa844 100644 > > --- a/tools/testing/selftests/gpio/Makefile > > +++ b/tools/testing/selftests/gpio/Makefile > > @@ -3,5 +3,6 @@ > > TEST_PROGS := gpio-mockup.sh > > TEST_FILES := gpio-mockup-sysfs.sh > > TEST_GEN_PROGS_EXTENDED := gpio-mockup-cdev > > +CFLAGS += -I../../../../usr/include > > While this fixes the bug at hand, I think the root cause is that I removed all the CFLAGS, assuming they were only relevant for the old code and that lib.mk set sensible defaults (it doesn't), when in fact most of it should've been retained, specifically: CFLAGS += -O2 -g -Wall -I../../../../usr/include/ The -Wall turns up an uninitialised variable warning. It is a false positive, but should be fixed regardless. Any problems with me creating a series to do that, with the first patch fixing the uninitialised variable and the second being this patch, though with the full CFLAGS restored? Cheers, Kent.
diff --git a/tools/testing/selftests/gpio/Makefile b/tools/testing/selftests/gpio/Makefile index 39f2bbe8dd3d..42ea7d2aa844 100644 --- a/tools/testing/selftests/gpio/Makefile +++ b/tools/testing/selftests/gpio/Makefile @@ -3,5 +3,6 @@ TEST_PROGS := gpio-mockup.sh TEST_FILES := gpio-mockup-sysfs.sh TEST_GEN_PROGS_EXTENDED := gpio-mockup-cdev +CFLAGS += -I../../../../usr/include include ../lib.mk
[root@iaas-rpma gpio]# make gcc gpio-mockup-cdev.c -o /home/lizhijian/linux/tools/testing/selftests/gpio/gpio-mockup-cdev gpio-mockup-cdev.c: In function ‘request_line_v2’: gpio-mockup-cdev.c:24:30: error: storage size of ‘req’ isn’t known 24 | struct gpio_v2_line_request req; | ^~~ gpio-mockup-cdev.c:32:14: error: ‘GPIO_V2_LINE_FLAG_OUTPUT’ undeclared (first use in this function); did you mean ‘GPIOLINE_FLAG_IS_OUT’? 32 | if (flags & GPIO_V2_LINE_FLAG_OUTPUT) { | ^~~~~~~~~~~~~~~~~~~~~~~~ gpio-mockup-cdev.c includes <linux/gpio.h> which could be provided by kernel-headers package, and where it's expected to declare GPIO_V2_LINE_FLAG_OUTPUT. However distros or developers will not always install the same kernel-header as we are compiling. So we can tell compiler to search headers from linux tree simply like others, such as sched. CC: Philip Li <philip.li@intel.com> Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com> --- V2: add more details about the fix --- tools/testing/selftests/gpio/Makefile | 1 + 1 file changed, 1 insertion(+)