linux-imx: include/uapi/linux/ipu.h redefines standard integer types

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

linux-imx: include/uapi/linux/ipu.h redefines standard integer types

173 Views
ernest_tdx
Contributor III

Hi,

I'm using the Toradex BSP master branch to build for the Verdin iMX8MM. This BSP uses the meta-freescale layer to support the NXP SoCs. There, things are being updated to follow NXP BSP 6.18.2.  In particular, imx-gst1.0-plugin is now at version "MM_04.10.03_2512_L6.18.2", and linux-imx and linux-imx-headers are now at lf-6.18.y.

When building imx-gst1.0-plugin with Yocto/OE for the verdin-imx8mm, I noticed the following build error:
MACHINE=verdin-imx8mm bitbake imx-gst1.0-plugin:

  | In file included from ../sources/imx-gst1.0-plugin-4.10.3+git/libs/v4l2_core/gstimxv4l2.c:29:
  | /workdir/oe/tmp/work/armv8a-mx8mm-tdx-linux/imx-gst1.0-plugin/4.10.3+git/recipe-sysroot/usr/include/imx/linux/ipu.h:42:17: error: two or more data types in declaration specifiers
  |    42 | #define uint8_t unsigned char
  |       |                 ^~~~~~~~
  | /workdir/oe/tmp/work/armv8a-mx8mm-tdx-linux/imx-gst1.0-plugin/4.10.3+git/recipe-sysroot/usr/include/imx/linux/ipu.h:42:26: error: two or more data types in declaration specifiers
  |    42 | #define uint8_t unsigned char
  |       |                          ^~~~
  | /workdir/oe/tmp/work/armv8a-mx8mm-tdx-linux/imx-gst1.0-plugin/4.10.3+git/recipe-sysroot/usr/include/imx/linux/ipu.h:41:18: error: two or more data types in declaration specifiers
  |    41 | #define uint16_t unsigned short
  |       |                  ^~~~~~~~
  | /workdir/oe/tmp/work/armv8a-mx8mm-tdx-linux/imx-gst1.0-plugin/4.10.3+git/recipe-sysroot/usr/include/imx/linux/ipu.h:41:27: error: two or more data types in declaration specifiers
  |    41 | #define uint16_t unsigned short
  |       |                           ^~~~~
  | /workdir/oe/tmp/work/armv8a-mx8mm-tdx-linux/imx-gst1.0-plugin/4.10.3+git/recipe-sysroot/usr/include/imx/linux/ipu.h:40:18: error: two or more data types in declaration specifiers
  |    40 | #define uint32_t unsigned int
  |       |                  ^~~~~~~~
  | /workdir/oe/tmp/work/armv8a-mx8mm-tdx-linux/imx-gst1.0-plugin/4.10.3+git/recipe-sysroot/usr/include/imx/linux/ipu.h:40:27: error: two or more data types in declaration specifiers
  |    40 | #define uint32_t unsigned int
  |       |                           ^~~

[...]

  | ninja: build stopped: subcommand failed.
  | INFO: autodetecting backend as ninja
  | INFO: calculating backend command to run: /workdir/oe/tmp/work/armv8a-mx8mm-tdx-linux/imx-gst1.0-plugin/4.10.3+git/recipe-sysroot-native/usr/bin/ninja -j 64 -v
  | WARNING: exit code 1 from a shell command.
  NOTE: recipe imx-gst1.0-plugin-4.10.3+git-r0: task do_compile: Failed
  ERROR: Task (/workdir/oe/build/../layers/meta-freescale/recipes-multimedia/gstreamer/imx-gst1.0-plugin_git.bb:do_compile) failed with exit code '1'
  NOTE: recipe gstreamer1.0-plugins-bad-1.26.6.imx-r0: task do_package: Succeeded
  NOTE: Tasks Summary: Attempted 10003 tasks of which 8796 didn't need to be rerun and 1 failed.
  NOTE: Writing buildhistory
  NOTE: Writing buildhistory took: 6 seconds
  
  Summary: 1 task failed:
    /workdir/oe/build/../layers/meta-freescale/recipes-multimedia/gstreamer/imx-gst1.0-plugin_git.bb:do_compile
      log: /workdir/oe/tmp/work/armv8a-mx8mm-tdx-linux/imx-gst1.0-plugin/4.10.3+git/temp/log.do_compile.827805
  Summary: There was 1 WARNING message.
  Summary: There was 1 ERROR message, returning a non-zero exit code.

 
This happens because "include/imx/linux/ipu.h" is redefining types that are already set as a typedef in "linux/types.h", which is included by ipu.h. It is probably pure chance that this error was not triggered by a userspace program consuming this header before, due to a different include order.

The solution seems relatively straightforward to me: remove the macro defines of uint*_t, which already exist anyways. My assumption is these just remained from some historical growth but there should be no reason for them in a Linux context.

I've attached a patch with what I believe is a decent solution, on top of lf-6.18.y, which fixes my build problems. Any feedback or the integration of this patch would certainly be appreciated.

Thanks,
Ernest - Toradex

Labels (2)
0 Kudos
Reply
0 Replies
%3CLINGO-SUB%20id%3D%22lingo-sub-2359396%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Elinux-imx%3A%20include%2Fuapi%2Flinux%2Fipu.h%20redefines%20standard%20integer%20types%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2359396%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%3CP%3EI'm%20using%20the%20Toradex%20BSP%20master%20branch%20to%20build%20for%20the%20Verdin%20iMX8MM.%20This%20BSP%20uses%20the%20meta-freescale%20layer%20to%20support%20the%20NXP%20SoCs.%20There%2C%20things%20are%20being%20updated%20to%20follow%20NXP%20BSP%206.18.2.%26nbsp%3B%20In%20particular%2C%20imx-gst1.0-plugin%20is%20now%20at%20version%20%22MM_04.10.03_2512_L6.18.2%22%2C%20and%20linux-imx%20and%20linux-imx-headers%20are%20now%20at%20lf-6.18.y.%3C%2FP%3E%3CP%3EWhen%20building%26nbsp%3Bimx-gst1.0-plugin%20with%20Yocto%2FOE%20for%20the%20verdin-imx8mm%2C%20I%20noticed%20the%20following%20build%20error%3A%3CBR%20%2F%3EMACHINE%3Dverdin-imx8mm%20bitbake%20imx-gst1.0-plugin%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%20%20%7C%20In%20file%20included%20from%20..%2Fsources%2Fimx-gst1.0-plugin-4.10.3%2Bgit%2Flibs%2Fv4l2_core%2Fgstimxv4l2.c%3A29%3A%0A%20%20%7C%20%2Fworkdir%2Foe%2Ftmp%2Fwork%2Farmv8a-mx8mm-tdx-linux%2Fimx-gst1.0-plugin%2F4.10.3%2Bgit%2Frecipe-sysroot%2Fusr%2Finclude%2Fimx%2Flinux%2Fipu.h%3A42%3A17%3A%20error%3A%20two%20or%20more%20data%20types%20in%20declaration%20specifiers%0A%20%20%7C%20%20%20%2042%20%7C%20%23define%20uint8_t%20unsigned%20char%0A%20%20%7C%20%20%20%20%20%20%20%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5E~~~~~~~%0A%20%20%7C%20%2Fworkdir%2Foe%2Ftmp%2Fwork%2Farmv8a-mx8mm-tdx-linux%2Fimx-gst1.0-plugin%2F4.10.3%2Bgit%2Frecipe-sysroot%2Fusr%2Finclude%2Fimx%2Flinux%2Fipu.h%3A42%3A26%3A%20error%3A%20two%20or%20more%20data%20types%20in%20declaration%20specifiers%0A%20%20%7C%20%20%20%2042%20%7C%20%23define%20uint8_t%20unsigned%20char%0A%20%20%7C%20%20%20%20%20%20%20%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5E~~~%0A%20%20%7C%20%2Fworkdir%2Foe%2Ftmp%2Fwork%2Farmv8a-mx8mm-tdx-linux%2Fimx-gst1.0-plugin%2F4.10.3%2Bgit%2Frecipe-sysroot%2Fusr%2Finclude%2Fimx%2Flinux%2Fipu.h%3A41%3A18%3A%20error%3A%20two%20or%20more%20data%20types%20in%20declaration%20specifiers%0A%20%20%7C%20%20%20%2041%20%7C%20%23define%20uint16_t%20unsigned%20short%0A%20%20%7C%20%20%20%20%20%20%20%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5E~~~~~~~%0A%20%20%7C%20%2Fworkdir%2Foe%2Ftmp%2Fwork%2Farmv8a-mx8mm-tdx-linux%2Fimx-gst1.0-plugin%2F4.10.3%2Bgit%2Frecipe-sysroot%2Fusr%2Finclude%2Fimx%2Flinux%2Fipu.h%3A41%3A27%3A%20error%3A%20two%20or%20more%20data%20types%20in%20declaration%20specifiers%0A%20%20%7C%20%20%20%2041%20%7C%20%23define%20uint16_t%20unsigned%20short%0A%20%20%7C%20%20%20%20%20%20%20%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5E~~~~%0A%20%20%7C%20%2Fworkdir%2Foe%2Ftmp%2Fwork%2Farmv8a-mx8mm-tdx-linux%2Fimx-gst1.0-plugin%2F4.10.3%2Bgit%2Frecipe-sysroot%2Fusr%2Finclude%2Fimx%2Flinux%2Fipu.h%3A40%3A18%3A%20error%3A%20two%20or%20more%20data%20types%20in%20declaration%20specifiers%0A%20%20%7C%20%20%20%2040%20%7C%20%23define%20uint32_t%20unsigned%20int%0A%20%20%7C%20%20%20%20%20%20%20%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5E~~~~~~~%0A%20%20%7C%20%2Fworkdir%2Foe%2Ftmp%2Fwork%2Farmv8a-mx8mm-tdx-linux%2Fimx-gst1.0-plugin%2F4.10.3%2Bgit%2Frecipe-sysroot%2Fusr%2Finclude%2Fimx%2Flinux%2Fipu.h%3A40%3A27%3A%20error%3A%20two%20or%20more%20data%20types%20in%20declaration%20specifiers%0A%20%20%7C%20%20%20%2040%20%7C%20%23define%20uint32_t%20unsigned%20int%0A%20%20%7C%20%20%20%20%20%20%20%7C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5E~~%0A%0A%5B...%5D%0A%0A%20%20%7C%20ninja%3A%20build%20stopped%3A%20subcommand%20failed.%0A%20%20%7C%20INFO%3A%20autodetecting%20backend%20as%20ninja%0A%20%20%7C%20INFO%3A%20calculating%20backend%20command%20to%20run%3A%20%2Fworkdir%2Foe%2Ftmp%2Fwork%2Farmv8a-mx8mm-tdx-linux%2Fimx-gst1.0-plugin%2F4.10.3%2Bgit%2Frecipe-sysroot-native%2Fusr%2Fbin%2Fninja%20-j%2064%20-v%0A%20%20%7C%20WARNING%3A%20exit%20code%201%20from%20a%20shell%20command.%0A%20%20NOTE%3A%20recipe%20imx-gst1.0-plugin-4.10.3%2Bgit-r0%3A%20task%20do_compile%3A%20Failed%0A%20%20ERROR%3A%20Task%20(%2Fworkdir%2Foe%2Fbuild%2F..%2Flayers%2Fmeta-freescale%2Frecipes-multimedia%2Fgstreamer%2Fimx-gst1.0-plugin_git.bb%3Ado_compile)%20failed%20with%20exit%20code%20'1'%0A%20%20NOTE%3A%20recipe%20gstreamer1.0-plugins-bad-1.26.6.imx-r0%3A%20task%20do_package%3A%20Succeeded%0A%20%20NOTE%3A%20Tasks%20Summary%3A%20Attempted%2010003%20tasks%20of%20which%208796%20didn't%20need%20to%20be%20rerun%20and%201%20failed.%0A%20%20NOTE%3A%20Writing%20buildhistory%0A%20%20NOTE%3A%20Writing%20buildhistory%20took%3A%206%20seconds%0A%20%20%0A%20%20Summary%3A%201%20task%20failed%3A%0A%20%20%20%20%2Fworkdir%2Foe%2Fbuild%2F..%2Flayers%2Fmeta-freescale%2Frecipes-multimedia%2Fgstreamer%2Fimx-gst1.0-plugin_git.bb%3Ado_compile%0A%20%20%20%20%20%20log%3A%20%2Fworkdir%2Foe%2Ftmp%2Fwork%2Farmv8a-mx8mm-tdx-linux%2Fimx-gst1.0-plugin%2F4.10.3%2Bgit%2Ftemp%2Flog.do_compile.827805%0A%20%20Summary%3A%20There%20was%201%20WARNING%20message.%0A%20%20Summary%3A%20There%20was%201%20ERROR%20message%2C%20returning%20a%20non-zero%20exit%20code.%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3CBR%20%2F%3EThis%20happens%20because%20%22include%2Fimx%2Flinux%2Fipu.h%22%20is%20redefining%20types%20that%20are%20already%20set%20as%20a%20typedef%20in%20%22linux%2Ftypes.h%22%2C%20which%20is%20included%20by%20ipu.h.%20It%20is%20probably%20pure%20chance%20that%20this%20error%20was%20not%20triggered%20by%20a%20userspace%20program%20consuming%20this%20header%20before%2C%20due%20to%20a%20different%20include%20order.%3CBR%20%2F%3E%3CBR%20%2F%3EThe%20solution%20seems%20relatively%20straightforward%20to%20me%3A%20remove%20the%20macro%20defines%20of%20uint*_t%2C%20which%20already%20exist%20anyways.%20My%20assumption%20is%20these%20just%20remained%20from%20some%20historical%20growth%20but%20there%20should%20be%20no%20reason%20for%20them%20in%20a%20Linux%20context.%3CBR%20%2F%3E%3CBR%20%2F%3EI've%20attached%20a%20patch%20with%20what%20I%20believe%20is%20a%20decent%20solution%2C%20on%20top%20of%20lf-6.18.y%2C%20which%20fixes%20my%20build%20problems.%20Any%20feedback%20or%20the%20integration%20of%20this%20patch%20would%20certainly%20be%20appreciated.%3CBR%20%2F%3E%3CBR%20%2F%3EThanks%2C%3CBR%20%2F%3EErnest%20-%20Toradex%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2359396%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3ELinux%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EYocto%20Project%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E