java-readline
java-readline copied to clipboard
Build failure with GCC 14 (initialization from incompatible pointer type)
Hi,
Readline fails to build with GCC 14, we get the following error in Debian:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1075200
gcc -I /usr/lib/jvm/default-java/include -I /usr/lib/jvm/default-java/include/linux -I /usr/lib/jvm/default-java/include -I /usr/lib/jvm/default-java/include/linux -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/libreadline-java-0.8.0.1+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -fPIC -DPOSIX -fPIC -DPOSIX -DJavaReadline \
-c org_gnu_readline_Readline.c
org_gnu_readline_Readline.c:85:3: error: initialization of 'int *' from incompatible pointer type 'long unsigned int *' [-Wincompatible-pointer-types]
85 | &rl_readline_state,
| ^
org_gnu_readline_Readline.c:85:3: note: (near initialization for 'globalIntegerInternals[2]')
org_gnu_readline_Readline.c:120:14: error: initialization of 'char **' from incompatible pointer type 'const char **' [-Wincompatible-pointer-types]
120 | /* const */ &rl_library_version,
| ^
org_gnu_readline_Readline.c:120:14: note: (near initialization for 'globalStringInternals[0]')
org_gnu_readline_Readline.c:121:14: error: initialization of 'char **' from incompatible pointer type 'const char **' [-Wincompatible-pointer-types]
121 | /* const */ &rl_readline_name,
| ^
org_gnu_readline_Readline.c:121:14: note: (near initialization for 'globalStringInternals[1]')
org_gnu_readline_Readline.c:124:14: error: initialization of 'char **' from incompatible pointer type 'const char **' [-Wincompatible-pointer-types]
124 | /* const */ &rl_terminal_name,
| ^
org_gnu_readline_Readline.c:124:14: note: (near initialization for 'globalStringInternals[4]')
org_gnu_readline_Readline.c:126:14: error: initialization of 'char **' from incompatible pointer type 'const char **' [-Wincompatible-pointer-types]
126 | /* const */ &rl_basic_word_break_characters,
| ^
org_gnu_readline_Readline.c:126:14: note: (near initialization for 'globalStringInternals[6]')
org_gnu_readline_Readline.c:127:14: error: initialization of 'char **' from incompatible pointer type 'const char **' [-Wincompatible-pointer-types]
127 | /* const */ &rl_completer_word_break_characters,
| ^
org_gnu_readline_Readline.c:127:14: note: (near initialization for 'globalStringInternals[7]')
org_gnu_readline_Readline.c:128:14: error: initialization of 'char **' from incompatible pointer type 'const char **' [-Wincompatible-pointer-types]
128 | /* const */ &rl_completer_quote_characters,
| ^
org_gnu_readline_Readline.c:128:14: note: (near initialization for 'globalStringInternals[8]')
org_gnu_readline_Readline.c:129:14: error: initialization of 'char **' from incompatible pointer type 'const char **' [-Wincompatible-pointer-types]
129 | /* const */ &rl_basic_quote_characters,
| ^
org_gnu_readline_Readline.c:129:14: note: (near initialization for 'globalStringInternals[9]')
org_gnu_readline_Readline.c:130:14: error: initialization of 'char **' from incompatible pointer type 'const char **' [-Wincompatible-pointer-types]
130 | /* const */ &rl_filename_quote_characters,
| ^
org_gnu_readline_Readline.c:130:14: note: (near initialization for 'globalStringInternals[10]')
org_gnu_readline_Readline.c:131:14: error: initialization of 'char **' from incompatible pointer type 'const char **' [-Wincompatible-pointer-types]
131 | /* const */ &rl_special_prefixes,
| ^
org_gnu_readline_Readline.c:131:14: note: (near initialization for 'globalStringInternals[11]')
Thanks @ebourg. I have handled all of these apart from:
org_gnu_readline_Readline.c:98:3: error: initialization of ‘int *’ from incompatible pointer type ‘long unsigned int *’ [-Wincompatible-pointer-types]
98 | &rl_readline_state,
| ^
org_gnu_readline_Readline.c:98:3: note: (near initialization for ‘globalIntegerInternals[2]’)
this is from an ABI change introduced in readline 7.0 where rl_readline_state changed from int to long unsigned int.
I raised an issue to track that (#45), and I need to think about how I best want to do it. I guess it will also be a breaking change for anything using java-readline if I bubble up the type change to java-readline's interface too.
These should all be resolved now on master. I will cut a release soon