Jeffrey Walton wrote:
This fixes the issue for GCC 3.1 (Fedora 1) and GCC 3.3 (Ubuntu 4).

I don't see how that patch could fix the issue for GCC 3.1, since it simply changes a test to check for GCC 3.4 instead of 3.3, so GCC 3.1 should behave the same regardless of whether the patch is installed.

for file in $(find "$PWD" -name '*.h')
do
     if [[ ! -f "$file" ]]; then
         continue
     fi

     sed -e 's|__GNUC_PREREQ (3, 3)|__GNUC_PREREQ (3, 4)|g' "$file" >
"$file.fixed"
     mv "$file.fixed" "$file"
done

I don't know if the issue is present in GCC 3.4.

The only instance of '__GNUC_PREREQ (3, 3)' is the one in lib/cdefs.h, so I assume that's the only thing causing you problems. The '__GNUC_PREREQ (3, 3)' comes straight from glibc misc/sys/cdefs.h (installed as /usr/include/sys/cdefs.h on my platform). So if there's a problem here, presumably the problem is also in current glibc.

Can you investigate why current glibc's approach does not work for you, whereas old-fashioned glibc does? For example, what does /usr/include/sys/cdefs.h look like on these older platforms, and why do their definitions of __THROW work when Gnulib's doesn't?

As Bruno says, these ancient systems are low priority for Gnulib, but if we know why the fix is a good one we can install it (and I assume propagate the fix back to glibc....).

Reply via email to