Actions
Bug #12106
closedlibshell: cast between incompatible function types
Start date:
Due date:
% Done:
100%
Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:
External Bug:
Description
Build errors with gcc 8:
../common/sh/streval.c: In function 'arith_exec': ../common/sh/streval.c:394:13: error: cast between incompatible function types from 'Math_f' {aka 'long double (*)(long double, ...)'} to 'int (*)(long double)' [-Werror=cast-function-type] num = (*((Math_1i_f)fun))(num); ^ ../common/sh/streval.c:406:13: error: cast between incompatible function types from 'Math_f' {aka 'long double (*)(long double, ...)'} to 'int (*)(long double, long double)' [-Werror=cast-function-type] num = (*((Math_2i_f)fun))(sp[1],num); ^ In file included from ../common/data/strdata.c:104: ../i386/src/cmd/ksh93/FEATURE/math:133:20: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011fpclassify", (Math_f)local_fpclassify, ^ ../i386/src/cmd/ksh93/FEATURE/math:135:15: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011ilogb", (Math_f)ilogbl, ^ ../i386/src/cmd/ksh93/FEATURE/math:136:18: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011isfinite", (Math_f)local_isfinite, ^ ../i386/src/cmd/ksh93/FEATURE/math:137:19: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012isgreater", (Math_f)local_isgreater, ^ ../i386/src/cmd/ksh93/FEATURE/math:138:24: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012isgreaterequal", (Math_f)local_isgreaterequal, ^ ../i386/src/cmd/ksh93/FEATURE/math:139:15: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011isinf", (Math_f)local_isinf, ^ ../i386/src/cmd/ksh93/FEATURE/math:140:16: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012isless", (Math_f)local_isless, ^ ../i386/src/cmd/ksh93/FEATURE/math:141:21: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012islessequal", (Math_f)local_islessequal, ^ ../i386/src/cmd/ksh93/FEATURE/math:142:23: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012islessgreater", (Math_f)local_islessgreater, ^ ../i386/src/cmd/ksh93/FEATURE/math:143:15: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011isnan", (Math_f)isnanl, ^ ../i386/src/cmd/ksh93/FEATURE/math:144:18: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011isnormal", (Math_f)local_isnormal, ^ ../i386/src/cmd/ksh93/FEATURE/math:146:21: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011issubnormal", (Math_f)local_issubnormal, ^ ../i386/src/cmd/ksh93/FEATURE/math:148:21: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012isunordered", (Math_f)local_isunordered, ^ ../i386/src/cmd/ksh93/FEATURE/math:150:16: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011iszero", (Math_f)local_iszero, ^ ../i386/src/cmd/ksh93/FEATURE/math:154:12: error: cast between incompatible function types from 'long double (*)(int, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\002jn", (Math_f)jnl, ^ ../i386/src/cmd/ksh93/FEATURE/math:170:17: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011signbit", (Math_f)local_signbit, ^ ../i386/src/cmd/ksh93/FEATURE/math:180:12: error: cast between incompatible function types from 'long double (*)(int, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\002yn", (Math_f)ynl, ^ In file included from ../common/data/strdata.c:104: ../amd64/src/cmd/ksh93/FEATURE/math:133:20: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011fpclassify", (Math_f)local_fpclassify, ^ ../amd64/src/cmd/ksh93/FEATURE/math:135:15: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011ilogb", (Math_f)ilogbl, ^ ../amd64/src/cmd/ksh93/FEATURE/math:136:18: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011isfinite", (Math_f)local_isfinite, ^ ../amd64/src/cmd/ksh93/FEATURE/math:137:19: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012isgreater", (Math_f)local_isgreater, ^ ../amd64/src/cmd/ksh93/FEATURE/math:138:24: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012isgreaterequal", (Math_f)local_isgreaterequal, ^ ../amd64/src/cmd/ksh93/FEATURE/math:139:15: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011isinf", (Math_f)local_isinf, ^ ../amd64/src/cmd/ksh93/FEATURE/math:140:16: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012isless", (Math_f)local_isless, ^ ../amd64/src/cmd/ksh93/FEATURE/math:141:21: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012islessequal", (Math_f)local_islessequal, ^ ../amd64/src/cmd/ksh93/FEATURE/math:142:23: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012islessgreater", (Math_f)local_islessgreater, ^ ../amd64/src/cmd/ksh93/FEATURE/math:143:15: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011isnan", (Math_f)isnanl, ^ ../amd64/src/cmd/ksh93/FEATURE/math:144:18: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011isnormal", (Math_f)local_isnormal, ^ ../amd64/src/cmd/ksh93/FEATURE/math:146:21: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011issubnormal", (Math_f)local_issubnormal, ^ ../amd64/src/cmd/ksh93/FEATURE/math:148:21: error: cast between incompatible function types from 'int (*)(long double, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\012isunordered", (Math_f)local_isunordered, ^ ../amd64/src/cmd/ksh93/FEATURE/math:150:16: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011iszero", (Math_f)local_iszero, ^ ../amd64/src/cmd/ksh93/FEATURE/math:154:12: error: cast between incompatible function types from 'long double (*)(int, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\002jn", (Math_f)jnl, ^ ../amd64/src/cmd/ksh93/FEATURE/math:170:17: error: cast between incompatible function types from 'int (*)(long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\011signbit", (Math_f)local_signbit, ^ ../amd64/src/cmd/ksh93/FEATURE/math:180:12: error: cast between incompatible function types from 'long double (*)(int, long double)' to 'long double (*)(long double, ...)' [-Werror=cast-function-type] "\002yn", (Math_f)ynl, ^ cc1: all warnings being treated as errors
Cast over uintptr_t for quick fix.
Testing done: build/install/boot.
wsdiff compared to master branch:
libshell/i386/pics/data/strdata.o
NOTE: ELF .debug_info difference detected.
libshell/i386/pics/sh/streval.o
NOTE: ELF .debug_info difference detected.
libshell/amd64/pics/sh/streval.o
NOTE: ELF .rela.debug_info difference detected.
libshell/amd64/pics/data/strdata.o
NOTE: ELF .rela.debug_info difference detected.
Updated by Electric Monk almost 4 years ago
- Status changed from In Progress to Closed
- % Done changed from 90 to 100
git commit 2cac0f114247a29fba32510c4c0ea549c8c0a7c9
commit 2cac0f114247a29fba32510c4c0ea549c8c0a7c9 Author: Toomas Soome <tsoome@me.com> Date: 2020-01-13T17:42:07.000Z 12106 libshell: cast between incompatible function types Reviewed by: John Levon <john.levon@joyent.com> Approved by: Robert Mustacchi <rm@fingolfin.org>
Actions