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