Re: [PATCH] staging: fbtft: Use ARRAY_SIZE() to get argument count

From: Deepak R Varma
Date: Fri Nov 04 2022 - 08:02:05 EST


On Mon, Oct 31, 2022 at 01:05:32PM +0100, Julia Lawall wrote:
>
>
> I took a look, but it's pretty complex. You could take the code and
> reorganize it so that it is more readable, and then take the definition of
> the ARRAY_SIZE macro, to better see what is going on.
>
> julia
>

Hello Greg, Julia,
I was able to successfully build the fbtft object file for arm architecture as
well. I used gcc 6.5.0 and 9.5.0 tool chains. It was successful using both. I
have attached the build log from my machine for your reference.

I am also looking at the .i file and rearrange the expanded macro to understand
it. However, since it is built successfully, I am not sure if that is truly the
problem area.

Should I resend the patch and check if it still errors the kernel build bot?
Anything else I can try?

Thank you,
./drv
drv@qemulion:~/git/kernels/staging$ git status
On branch patches-11022022
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: drivers/staging/fbtft/fbtft.h

no changes added to commit (use "git add" and/or "git commit -a")
drv@qemulion:~/git/kernels/staging$ git diff
diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h
index 2c2b5f1c1df3..f2ed23123849 100644
--- a/drivers/staging/fbtft/fbtft.h
+++ b/drivers/staging/fbtft/fbtft.h
@@ -231,7 +231,7 @@ struct fbtft_par {
bool polarity;
};

-#define NUMARGS(...) (sizeof((int[]){__VA_ARGS__}) / sizeof(int))
+#define NUMARGS(...) ARRAY_SIZE(((int[]){ __VA_ARGS__ }))

#define write_reg(par, ...) \
((par)->fbtftops.write_register(par, NUMARGS(__VA_ARGS__), __VA_ARGS__))
drv@qemulion:~/git/kernels/staging$ make CROSS_COMPILE=/opt/gcc-9.5.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi- --jobs=8 ARCH=arm drivers/staging/fbtft/fbtft-core.o
CALL scripts/checksyscalls.sh
CC drivers/staging/fbtft/fbtft-core.o
drv@qemulion:~/git/kernels/staging$ make CROSS_COMPILE=/opt/gcc-9.5.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi- --jobs=8 ARCH=arm drivers/staging/fbtft/
CALL scripts/checksyscalls.sh
CC drivers/staging/fbtft/fbtft-sysfs.o
CC drivers/staging/fbtft/fbtft-bus.o
CC drivers/staging/fbtft/fbtft-io.o
CC drivers/staging/fbtft/fb_agm1264k-fl.o
CC drivers/staging/fbtft/fb_bd663474.o
CC drivers/staging/fbtft/fb_hx8340bn.o
CC drivers/staging/fbtft/fb_hx8347d.o
CC drivers/staging/fbtft/fb_hx8353d.o
CC drivers/staging/fbtft/fb_hx8357d.o
CC drivers/staging/fbtft/fb_ili9163.o
CC drivers/staging/fbtft/fb_ili9320.o
CC drivers/staging/fbtft/fb_ili9325.o
CC drivers/staging/fbtft/fb_ili9340.o
CC drivers/staging/fbtft/fb_ili9341.o
CC drivers/staging/fbtft/fb_ili9481.o
CC drivers/staging/fbtft/fb_ili9486.o
CC drivers/staging/fbtft/fb_pcd8544.o
CC drivers/staging/fbtft/fb_ra8875.o
CC drivers/staging/fbtft/fb_s6d02a1.o
CC drivers/staging/fbtft/fb_s6d1121.o
CC drivers/staging/fbtft/fb_seps525.o
CC drivers/staging/fbtft/fb_sh1106.o
CC drivers/staging/fbtft/fb_ssd1289.o
CC drivers/staging/fbtft/fb_ssd1305.o
CC drivers/staging/fbtft/fb_ssd1306.o
CC drivers/staging/fbtft/fb_ssd1325.o
CC drivers/staging/fbtft/fb_ssd1331.o
CC drivers/staging/fbtft/fb_ssd1351.o
CC drivers/staging/fbtft/fb_st7735r.o
CC drivers/staging/fbtft/fb_st7789v.o
CC drivers/staging/fbtft/fb_tinylcd.o
CC drivers/staging/fbtft/fb_tls8204.o
CC drivers/staging/fbtft/fb_uc1611.o
CC drivers/staging/fbtft/fb_uc1701.o
CC drivers/staging/fbtft/fb_upd161704.o
AR drivers/staging/fbtft/built-in.a
drv@qemulion:~/git/kernels/staging$