--- htdocs/gcc-14/porting_to.html | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+)
diff --git a/htdocs/gcc-14/porting_to.html b/htdocs/gcc-14/porting_to.html index 123b5e9f..ab65c5e7 100644 --- a/htdocs/gcc-14/porting_to.html +++ b/htdocs/gcc-14/porting_to.html @@ -437,6 +437,49 @@ issues addressed in more recent versions.) Versions before 2.69 may have generic probes (for example for standard C support) that rely on C features that were removed in C99 and thus fail with GCC 14. +<p> +Older Autoconf versions (for example, Autoconf 2.13) generate core +probes that are incompatible with C99. These include the basic +compiler functionality check: + +<pre> +#include "confdefs.h" +main(){return(0);} +</pre> + +And a check for standard C compatibility: + +<pre> +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } +</pre> + +(Several variants with different line breaks and whitespace were in +use.) If it is not possible to port the configure script to current +Autoconf, these issues can be patched directly: + +<pre> +#include "confdefs.h" +<ins>int</ins> main(){return(0);} +</pre> + +And for the second probe: + +<pre> +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) <ins>return 2</ins>; +<ins>return 0</ins>; } +</pre> + +There is a long tail of less frequent issues, involving keyword +checking (for <code>inline</code>), and checks for <code>dlopen</code> +and <code>mmap</code>. A <code>setvbuf</code> probe was previously +expected to fail at run time because it triggered undefined behavior, +now it fails because of a compilation error. + <h4 id="errors-as-warnings">Turning errors back into warnings</h4> <p> base-commit: 1fcd61437d6a3d7bf24b993b09d525486dc9a2e5