error: comparison of integers of different signs: ‘int‘ and ‘const u32‘ (aka ‘const unsigned int‘)

When compiling the third-party ethtool tool, many of the following error messages appear:

external/ethtool/fec.c:204:26: error: comparison of integers of different signs: 'int' and '__u32' (aka 'unsigned int') [-Werror,-Wsign-compare]
        for (offset = 0; offset < regs->len; offset += 4) {
                         ~~~~~~ ^ ~~~~~~~~~
1 error generated.
[ 98% 3672/3714] //external/ethtool:ethtool clang ibm_emac.c
FAILED: out/soong/.intermediates/external/ethtool/ethtool/android_arm_armv7-a-neon_cortex-a15_core/obj/external/ethtool/ibm_emac.o 
PWD=/proc/self/cwd prebuilts/misc/linux-x86/ccache/ccache prebuilts/clang/host/linux-x86/clang-4691093/bin/clang -c -Iexternal/ethtool -mthumb -Os -fomit-frame-pointer -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -no-canonical-prefixes -DNDEBUG -UDEBUG -fno-exceptions -Wno-multichar -O2 -g -fno-strict-aliasing -fdebug-prefix-map=/proc/self/cwd= -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument -fcolor-diagnostics -Wno-expansion-to-defined -Wno-zero-as-null-pointer-constant -fdebug-prefix-map=$PWD/= -ffunction-sections -fdata-sections -fno-short-enums -funwind-tables -fstack-protector-strong -Wa,--noexecstack -D_FORTIFY_SOURCE=2 -Wstrict-aliasing=2 -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Werror=date-time -Werror=format-security -nostdlibinc -msoft-float -march=armv7-a -mfloat-abi=softfp -mfpu=neon -mcpu=cortex-a15 -mfpu=neon-vfpv4 -D__ARM_FEATURE_LPAE=1 -Iexternal/libcxx/include -Iexternal/libcxxabi/include -Ibionic/libc/system_properties/include -Isystem/core/property_service/libpropertyinfoparser/include -Isystem/core/include -Isystem/media/audio/include -Ihardware/libhardware/include -Ihardware/libhardware_legacy/include -Ihardware/ril/include -Ilibnativehelper/include -Iframeworks/native/include -Iframeworks/native/opengl/include -Iframeworks/av/include -isystem bionic/libc/include -isystem bionic/libc/kernel/uapi -isystem bionic/libc/kernel/uapi/asm-arm -isystem bionic/libc/kernel/android/scsi -isystem bionic/libc/kernel/android/uapi -Ilibnativehelper/include_jni -Werror -Wsign-compare -Wno-missing-field-initializers '-DPACKAGE="ethtool"' '-DVERSION="5.3"' -std=gnu11 -target arm-linux-androideabi -Bprebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/arm-linux-androideabi/bin -fPIE -D_USING_LIBCXX -std=gnu99  -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Werror=address-of-temporary -Werror=return-type -Wno-tautological-constant-compare -Wno-null-pointer-arithmetic -Wno-enum-compare -Wno-enum-compare-switch -MD -MF out/soong/.intermediates/external/ethtool/ethtool/android_arm_armv7-a-neon_cortex-a15_core/obj/external/ethtool/ibm_emac.o.d -o out/soong/.intermediates/external/ethtool/ethtool/android_arm_armv7-a-neon_cortex-a15_core/obj/external/ethtool/ibm_emac.o external/ethtool/ibm_emac.c
external/ethtool/ibm_emac.c:253:16: error: comparison of integers of different signs: 'int' and 'u32' (aka 'unsigned int') [-Werror,-Wsign-compare]
        for (i = 0; i < p->tx_count; ++i) {
                    ~ ^ ~~~~~~~~~~~
external/ethtool/ibm_emac.c:259:16: error: comparison of integers of different signs: 'int' and 'u32' (aka 'unsigned int') [-Werror,-Wsign-compare]
        for (i = 0; i < p->rx_count; ++i) {
                    ~ ^ ~~~~~~~~~~~
external/ethtool/ibm_emac.c:265:16: error: comparison of integers of different signs: 'int' and 'u32' (aka 'unsigned int') [-Werror,-Wsign-compare]
        for (i = 0; i < p->rx_count; ++i) {
                    ~ ^ ~~~~~~~~~~~
3 errors generated.

error: comparison of integers of different signs: 'int' and 'u32' (aka 'unsigned int') [-Werror,-Wsign-compare]

In fact, this error is caused by the compiler not ignoring the error of the warning, and directly turning the warning into an error.

Here you need to find Android.bp under the tool

    cflags: [
        "-Wno-missing-field-initializers",
        "-DPACKAGE=\"ethtool\"",
        "-DVERSION=\"5.3\"",
        "-std=gnu11",
    ]

Add "-Wno-sign-compare", this addition actually has a careful comparison of skills:

[-Werror,-Wsign-compare]

 "-Wno-sign-compare",


-Wsign-compare  ===》 -Wno-sign-compare

    cflags: [
        +"-Wno-sign-compare",
        "-Wno-missing-field-initializers",
        "-DPACKAGE=\"ethtool\"",
        "-DVERSION=\"5.3\"",
        "-std=gnu11",
    ]

This ignores compilation errors like this

Guess you like

Origin blog.csdn.net/m0_56343264/article/details/131807469