bug#79139: cp --reflink truncates sparse files on ZFS

Paul Eggert <[email protected]>
Newsgroups gmane.comp.gnu.core-utils.bugs
Organization UCLA Computer Science Department
Message-ID <0be2f127-121a-4d53-aabb-f01c06158c05__16509.9608757131$1754155968$gmane$org@cs.ucla.edu>
On 2025-08-02 09:47, Sam James wrote:
> You can shorten sourceware (and gcc) bug URLs to:
> https://sourceware.org/PR123456
> https://gcc.gnu.org/PR123456

Thanks, I didn't know that. These URL shorthands are well supported so 
let's use them in the code and doc, as that's a readability win. I 
installed the attached patches to do that. I didn't alter ChangeLog 
partly due to laziness, partly as it's less important there.
0001-Shorten-glibc-bug-URLs.patch (text/x-patch, 80.1 KB)
From 9870493709c4d47e64f01502cc6bfdfa3f219a2e Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email protected]>
Date: Sat, 2 Aug 2025 10:21:36 -0700
Subject: [PATCH 1/2] Shorten glibc bug URLs

---
 config/srclist.txt                            | 14 +++++-----
 doc/glibc-functions/backtrace_symbols_fd.texi |  2 +-
 doc/glibc-functions/copy_file_range.texi      |  3 +-
 doc/glibc-functions/initstate_r.texi          |  2 +-
 doc/glibc-functions/renameat2.texi            |  2 +-
 doc/glibc-functions/strerrorname_np.texi      |  6 ++--
 doc/posix-functions/aligned_alloc.texi        |  2 +-
 doc/posix-functions/faccessat.texi            |  2 +-
 doc/posix-functions/fegetenv.texi             |  2 +-
 doc/posix-functions/fesetexcept.texi          |  4 +--
 doc/posix-functions/fesetexceptflag.texi      |  6 ++--
 doc/posix-functions/feupdateenv.texi          |  4 +--
 doc/posix-functions/fnmatch.texi              |  4 +--
 doc/posix-functions/futimens.texi             |  2 +-
 doc/posix-functions/getpayload.texi           |  2 +-
 doc/posix-functions/getpayloadf.texi          |  2 +-
 doc/posix-functions/getpayloadl.texi          |  2 +-
 doc/posix-functions/initstate.texi            |  2 +-
 doc/posix-functions/linkat.texi               |  2 +-
 doc/posix-functions/longjmp.texi              |  2 +-
 doc/posix-functions/mbrlen.texi               |  4 +--
 doc/posix-functions/mbrtoc16.texi             |  8 +++---
 doc/posix-functions/mbrtoc32.texi             |  8 +++---
 doc/posix-functions/mbrtowc.texi              | 10 +++----
 doc/posix-functions/mbsnrtowcs.texi           |  4 +--
 doc/posix-functions/mbsrtowcs.texi            |  4 +--
 doc/posix-functions/mbstowcs.texi             |  4 +--
 doc/posix-functions/mbtowc.texi               |  6 ++--
 doc/posix-functions/posix_memalign.texi       |  2 +-
 doc/posix-functions/swprintf.texi             |  2 +-
 doc/posix-functions/time.texi                 |  2 +-
 doc/posix-functions/totalorder.texi           |  2 +-
 doc/posix-functions/totalorderf.texi          |  2 +-
 doc/posix-functions/totalorderl.texi          |  2 +-
 doc/posix-functions/utimensat.texi            |  2 +-
 doc/posix-functions/wcscmp.texi               |  2 +-
 doc/posix-headers/stdlib.texi                 |  2 +-
 doc/posix-headers/sys_un.texi                 |  2 +-
 doc/regex.texi                                | 10 +++----
 lib/af_alg.c                                  |  2 +-
 lib/copy-file-range.c                         |  2 +-
 lib/duplocale.c                               |  2 +-
 lib/fchmodat.c                                |  2 +-
 lib/fpe-trapping.h                            |  2 +-
 lib/freading.c                                |  2 +-
 lib/gen-uni-tables.c                          |  4 +--
 lib/getlocalename_l-unsafe.c                  |  2 +-
 lib/glthread/lock.c                           |  2 +-
 lib/glthread/lock.h                           |  2 +-
 lib/lchmod.c                                  |  2 +-
 lib/mbtowc-lock.h                             |  2 +-
 lib/md5-stream.c                              |  2 +-
 lib/nproc.c                                   |  2 +-
 lib/sched.in.h                                |  2 +-
 lib/sha1-stream.c                             |  2 +-
 lib/sha256-stream.c                           |  2 +-
 lib/sha512-stream.c                           |  2 +-
 lib/stdio.in.h                                |  2 +-
 lib/strfmon_l.c                               |  2 +-
 lib/uniwidth/width.c                          |  4 +--
 lib/vasnprintf.c                              |  6 ++--
 m4/duplocale.m4                               |  2 +-
 m4/fenv-environment.m4                        |  6 ++--
 m4/fnmatch.m4                                 | 10 +++----
 m4/free.m4                                    |  4 +--
 m4/getpayload.m4                              |  6 ++--
 m4/mbrtowc.m4                                 |  2 +-
 m4/memchr.m4                                  |  2 +-
 m4/memmem.m4                                  |  2 +-
 m4/printf.m4                                  |  2 +-
 m4/pthread_rwlock_rdlock.m4                   |  2 +-
 m4/strcasestr.m4                              |  4 +--
 m4/strerrorname_np.m4                         |  6 ++--
 m4/strfmon_l.m4                               |  2 +-
 m4/strstr.m4                                  |  4 +--
 m4/strtok_r.m4                                |  2 +-
 m4/time.m4                                    |  2 +-
 m4/wchar_h.m4                                 |  2 +-
 tests/test-execute-script.c                   |  2 +-
 tests/test-exp2.h                             |  2 +-
 tests/test-fnmatch.c                          |  4 +--
 tests/test-getaddrinfo.c                      |  2 +-
 tests/test-getopt.h                           |  2 +-
 tests/test-getopt_long.h                      |  2 +-
 tests/test-gettimeofday.c                     |  2 +-
 tests/test-mbrtoc32-regular.c                 |  2 +-
 tests/test-perror2.c                          |  2 +-
 tests/test-posix_spawn-script.c               |  2 +-
 tests/test-posix_spawnp-script.c              |  2 +-
 tests/test-random_r.c                         |  2 +-
 tests/test-realloc-posix.c                    |  2 +-
 tests/test-sigsegv-catch-stackoverflow1.c     |  2 +-
 tests/test-sigsegv-catch-stackoverflow2.c     |  2 +-
 tests/test-snprintf-posix.h                   |  2 +-
 tests/test-spawn-pipe-script.c                |  2 +-
 tests/test-sprintf-posix.h                    |  2 +-
 tests/test-strfmon_l.c                        |  2 +-
 tests/test-strtod.h                           |  2 +-
 tests/test-strtof.h                           |  2 +-
 tests/test-strtold.h                          |  2 +-
 tests/test-timespec_get.c                     |  2 +-
 tests/test-vasnprintf-posix.c                 |  2 +-
 tests/test-vasnprintf-posix2.c                | 28 +++++++++----------
 tests/test-vasnwprintf-posix.c                |  2 +-
 tests/test-vasnwprintf-posix2.c               |  4 +--
 tests/test-vasprintf-posix.c                  |  2 +-
 tests/test-xstrtod.c                          |  2 +-
 tests/test-xstrtold.c                         |  2 +-
 108 files changed, 173 insertions(+), 174 deletions(-)

diff --git a/config/srclist.txt b/config/srclist.txt
index 13d16a246b..cd68f38c5d 100644
--- a/config/srclist.txt
+++ b/config/srclist.txt
@@ -116,7 +116,7 @@ $LIBCSRC stdlib/tst-stdc_trailing_zeros.c	tests/from-glibc
 #$LIBCSRC posix/getopt1.c		lib gpl
 #$LIBCSRC posix/getopt_int.h		lib gpl
 #
-# https://sourceware.org/bugzilla/show_bug.cgi?id=1293
+# https://sourceware.org/PR1293
 #$LIBCSRC libidn/iconvme.h		lib gpl
 #$LIBCSRC libidn/iconvme.c		lib gpl
 
@@ -127,7 +127,7 @@ $LIBCSRC stdlib/tst-stdc_trailing_zeros.c	tests/from-glibc
 # (gnulib needs config.h?) $LIBCSRC/string/memmem.c		lib gpl
 
 #
-# https://sourceware.org/bugzilla/show_bug.cgi?id=1439
+# https://sourceware.org/PR1439
 #$LIBCSRC crypt/md5.c			lib gpl
 #$LIBCSRC crypt/md5.h			lib gpl
 # These are close, but ...
@@ -137,10 +137,10 @@ $LIBCSRC stdlib/tst-stdc_trailing_zeros.c	tests/from-glibc
 #$LIBCSRC login/forkpty.c		lib gpl
 #$LIBCSRC login/programs/pt_chown.c	lib gpl
 #
-# https://sourceware.org/bugzilla/show_bug.cgi?id=321
+# https://sourceware.org/PR321
 #$LIBCSRC malloc/obstack.c		lib gpl
 #
-# https://sourceware.org/bugzilla/show_bug.cgi?id=321
+# https://sourceware.org/PR321
 #$LIBCSRC malloc/obstack.h		lib gpl
 #$LIBCSRC misc/error.c			lib gpl
 #$LIBCSRC misc/error.h			lib/error.in.h gpl
@@ -150,11 +150,11 @@ $LIBCSRC stdlib/tst-stdc_trailing_zeros.c	tests/from-glibc
 #$LIBCSRC posix/fnmatch.h		lib/fnmatch.in.h gpl
 #$LIBCSRC posix/fnmatch_loop.c		lib gpl
 #
-# https://sourceware.org/bugzilla/show_bug.cgi?id=1060
-# https://sourceware.org/bugzilla/show_bug.cgi?id=1062
+# https://sourceware.org/PR1060
+# https://sourceware.org/PR1062
 #$LIBCSRC posix/glob.c			lib gpl
 #
-# https://sourceware.org/bugzilla/show_bug.cgi?id=1060
+# https://sourceware.org/PR1060
 #$LIBCSRC posix/glob.h			lib/glob-libc.h gpl
 #
 #$LIBCSRC stdlib/putenv.c		lib gpl
diff --git a/doc/glibc-functions/backtrace_symbols_fd.texi b/doc/glibc-functions/backtrace_symbols_fd.texi
index 86cb71d272..b57d7a47f0 100644
--- a/doc/glibc-functions/backtrace_symbols_fd.texi
+++ b/doc/glibc-functions/backtrace_symbols_fd.texi
@@ -35,7 +35,7 @@ FreeBSD, NetBSD, OpenBSD.
 @item
 The strings printed by this function not the same as the strings returned by
 @code{backtrace_symbols} on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=31730
+@c https://sourceware.org/PR31730
 glibc 2.39.
 @item
 On platforms where the function is missing,
diff --git a/doc/glibc-functions/copy_file_range.texi b/doc/glibc-functions/copy_file_range.texi
index 80469d0994..36805321a7 100644
--- a/doc/glibc-functions/copy_file_range.texi
+++ b/doc/glibc-functions/copy_file_range.texi
@@ -36,8 +36,7 @@ error @code{ENOSYS}.
 @item
 This function returns an incorrect value when the number of bytes copied
 exceeds @code{INT_MAX} on systems using glibc version 2.41 or 2.42.
-See @url{glibc bug 33245,
-https://sourceware.org/bugzilla/show_bug.cgi?id=33245}.
+See @url{glibc bug 33245, https://sourceware.org/PR33245}.
 
 @item
 This function is provided on GNU/Hurd but it is only a stub: It always
diff --git a/doc/glibc-functions/initstate_r.texi b/doc/glibc-functions/initstate_r.texi
index 8a4fbfa687..a135ee0679 100644
--- a/doc/glibc-functions/initstate_r.texi
+++ b/doc/glibc-functions/initstate_r.texi
@@ -34,7 +34,7 @@ Portability problems not fixed by Gnulib:
 @itemize
 @item
 This function crashes if the state buffer is unaligned on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30584
+@c https://sourceware.org/PR30584
 glibc 2.36/sparc.
 @item
 This function has a slightly different (but compatible) declaration on some
diff --git a/doc/glibc-functions/renameat2.texi b/doc/glibc-functions/renameat2.texi
index 89d8d892ff..7d3240bcc6 100644
--- a/doc/glibc-functions/renameat2.texi
+++ b/doc/glibc-functions/renameat2.texi
@@ -23,7 +23,7 @@ Cygwin 3.4.6.
 @code{renameat2 (AT_FDCWD, "file", AT_FDCWD, "new/" ...)} succeeds
 instead of failing and setting @code{errno} to @code{ENOTDIR}, on some
 platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=32570
+@c https://sourceware.org/PR32570
 GNU/Hurd with glibc 2.41.
 @end itemize
 
diff --git a/doc/glibc-functions/strerrorname_np.texi b/doc/glibc-functions/strerrorname_np.texi
index aacfaf12b2..005e1c7f74 100644
--- a/doc/glibc-functions/strerrorname_np.texi
+++ b/doc/glibc-functions/strerrorname_np.texi
@@ -20,9 +20,9 @@ This function is missing on many platforms:
 glibc 2.31, macOS 14, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 34.
 @item
 This function returns wrong values on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=26555
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=29545
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=31080
+@c https://sourceware.org/PR26555
+@c https://sourceware.org/PR29545
+@c https://sourceware.org/PR31080
 @c https://www.illumos.org/issues/17134
 glibc 2.37, Solaris 11 OmniOS.
 @end itemize
diff --git a/doc/posix-functions/aligned_alloc.texi b/doc/posix-functions/aligned_alloc.texi
index 04631fe486..a8205d9912 100644
--- a/doc/posix-functions/aligned_alloc.texi
+++ b/doc/posix-functions/aligned_alloc.texi
@@ -41,7 +41,7 @@ glibc 2.15, macOS 10.14, FreeBSD 6.4, NetBSD 7.1, OpenBSD 6.0, Minix 3.1.8, AIX
 
 @item
 If the alignment and size are absurdly large, this function crashes:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=32301
+@c https://sourceware.org/PR32301
 glibc 2.41.
 @end itemize
 
diff --git a/doc/posix-functions/faccessat.texi b/doc/posix-functions/faccessat.texi
index 0179e4bfff..072601c684 100644
--- a/doc/posix-functions/faccessat.texi
+++ b/doc/posix-functions/faccessat.texi
@@ -32,7 +32,7 @@ which is supported by GNU @code{faccessat}.
 @item
 On some platforms, @code{faccessat} can mishandle @code{AT_EACCESS}
 after a process starts as root and then becomes non-root:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=18683
+@c https://sourceware.org/PR18683
 GNU/Linux with glibc 2.32.
 @end itemize
 
diff --git a/doc/posix-functions/fegetenv.texi b/doc/posix-functions/fegetenv.texi
index 57669502f4..3cd77fa6b1 100644
--- a/doc/posix-functions/fegetenv.texi
+++ b/doc/posix-functions/fegetenv.texi
@@ -14,7 +14,7 @@ This function is missing on some platforms:
 FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4.
 @item
 This function clears all exception trap bits on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=16198
+@c https://sourceware.org/PR16198
 glibc 2.19/x86_64,
 Mac OS X 10.5/i386, Mac OS X 10.5/x86_64.
 @item
diff --git a/doc/posix-functions/fesetexcept.texi b/doc/posix-functions/fesetexcept.texi
index 915fa42c55..d96d4cc0b2 100644
--- a/doc/posix-functions/fesetexcept.texi
+++ b/doc/posix-functions/fesetexcept.texi
@@ -20,9 +20,9 @@ This function is missing on all non-glibc platforms:
 glibc 2.24, macOS 14, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
 @item
 This function triggers floating-point exception traps although it shouldn't, on
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30989
+@c https://sourceware.org/PR30989
 glibc 2.37/i386,
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30988
+@c https://sourceware.org/PR30988
 glibc 2.37/powerpc.
 @end itemize
 
diff --git a/doc/posix-functions/fesetexceptflag.texi b/doc/posix-functions/fesetexceptflag.texi
index c5e6b0d343..3a9d0b7b54 100644
--- a/doc/posix-functions/fesetexceptflag.texi
+++ b/doc/posix-functions/fesetexceptflag.texi
@@ -14,14 +14,14 @@ This function is missing on some platforms:
 FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin 1.7.7, MSVC 9, Android 4.4.
 @item
 This function triggers floating-point exception traps although it shouldn't, on
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30990
+@c https://sourceware.org/PR30990
 glibc 2.37/i386, glibc 2.37/x86_64,
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30988
+@c https://sourceware.org/PR30988
 glibc 2.37/powerpc,
 musl libc, Mac OS X 10.5, Minix 3.3, mingw, Haiku.
 @item
 This function clears too many floating-point exception flags on
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30998
+@c https://sourceware.org/PR30998
 glibc 2.37/alpha.
 @item
 This function loses the @code{FE_INVALID} flag on
diff --git a/doc/posix-functions/feupdateenv.texi b/doc/posix-functions/feupdateenv.texi
index 5f9ae3a09f..d24c06484f 100644
--- a/doc/posix-functions/feupdateenv.texi
+++ b/doc/posix-functions/feupdateenv.texi
@@ -15,7 +15,7 @@ FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, Solaris 9, Cygwin
 @item
 This function crashes when given the argument @code{FE_DFL_ENV}
 on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=31022
+@c https://sourceware.org/PR31022
 glibc 2.37/riscv64.
 @item
 This function does not work on some platforms:
@@ -35,7 +35,7 @@ on some platforms:
 musl libc/i386, musl libc/x86_64, AIX 7.3, Solaris 10 and 11, mingw 10.
 @item
 This function does not trigger traps on
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=31023
+@c https://sourceware.org/PR31023
 glibc 2.37/hppa,
 musl libc/s390x,
 @c src/sys/arch/powerpc/include/fenv.h src/lib/libm/arch/powerpc/fenv.c
diff --git a/doc/posix-functions/fnmatch.texi b/doc/posix-functions/fnmatch.texi
index 12143902a3..9574fc977a 100644
--- a/doc/posix-functions/fnmatch.texi
+++ b/doc/posix-functions/fnmatch.texi
@@ -115,12 +115,12 @@ on some platforms:
 Solaris 11.4.
 @item
 Ranges that start or end with a backslash don't work right on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=361
+@c https://sourceware.org/PR361
 glibc 2.3.3.
 @item
 In the pattern, an opening bracket without closing bracket does not match
 a literal @code{'['} on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=12378
+@c https://sourceware.org/PR12378
 @c Failing test cases:
 @c fnmatch ("[[:alpha:]'[:alpha:]\0]", "a", 0) == FNM_NOMATCH
 @c fnmatch ("[a[.\0.]]", "a", 0) == FNM_NOMATCH
diff --git a/doc/posix-functions/futimens.texi b/doc/posix-functions/futimens.texi
index 4bae2837d9..c84a035c4d 100644
--- a/doc/posix-functions/futimens.texi
+++ b/doc/posix-functions/futimens.texi
@@ -35,7 +35,7 @@ glibc 2.11, musl libc, Solaris 11.
 Out-of-range values of @code{tv_nsec} do not lead to a failure on some
 platforms:
 NetBSD 10.0,
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=32803
+@c https://sourceware.org/PR32803
 GNU/Hurd with glibc 2.41.
 @end itemize
 
diff --git a/doc/posix-functions/getpayload.texi b/doc/posix-functions/getpayload.texi
index 0cb1aeac7d..4515b4bd44 100644
--- a/doc/posix-functions/getpayload.texi
+++ b/doc/posix-functions/getpayload.texi
@@ -22,7 +22,7 @@ This function is missing on all non-glibc platforms:
 glibc 2.24, macOS 14, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
 @item
 This function returns a wrong result for non-NaN arguments on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=26073
+@c https://sourceware.org/PR26073
 glibc 2.31.
 @end itemize
 
diff --git a/doc/posix-functions/getpayloadf.texi b/doc/posix-functions/getpayloadf.texi
index 4550ecc2b9..4c39ae30ec 100644
--- a/doc/posix-functions/getpayloadf.texi
+++ b/doc/posix-functions/getpayloadf.texi
@@ -22,7 +22,7 @@ This function is missing on all non-glibc platforms:
 glibc 2.24, macOS 14, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
 @item
 This function returns a wrong result for non-NaN arguments on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=26073
+@c https://sourceware.org/PR26073
 glibc 2.31.
 @end itemize
 
diff --git a/doc/posix-functions/getpayloadl.texi b/doc/posix-functions/getpayloadl.texi
index 45f9f72330..d79f1876a5 100644
--- a/doc/posix-functions/getpayloadl.texi
+++ b/doc/posix-functions/getpayloadl.texi
@@ -22,7 +22,7 @@ This function is missing on all non-glibc platforms:
 glibc 2.24, macOS 14, FreeBSD 14.0, NetBSD 10.0, OpenBSD 7.5, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
 @item
 This function returns a wrong result for non-NaN arguments on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=26073
+@c https://sourceware.org/PR26073
 glibc 2.31.
 @end itemize
 
diff --git a/doc/posix-functions/initstate.texi b/doc/posix-functions/initstate.texi
index 72df1e1596..40afe6261b 100644
--- a/doc/posix-functions/initstate.texi
+++ b/doc/posix-functions/initstate.texi
@@ -21,7 +21,7 @@ Portability problems not fixed by Gnulib:
 @itemize
 @item
 This function crashes if the state buffer is unaligned on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30584
+@c https://sourceware.org/PR30584
 glibc 2.36/sparc.
 @item
 The first parameter is @code{unsigned long} instead of @code{unsigned int} on
diff --git a/doc/posix-functions/linkat.texi b/doc/posix-functions/linkat.texi
index bb4fb5728f..8820b657e5 100644
--- a/doc/posix-functions/linkat.texi
+++ b/doc/posix-functions/linkat.texi
@@ -31,6 +31,6 @@ Portability problems not fixed by Gnulib:
 @code{linkat (fd, "directory", fd, "symlink/" ...)} sets @code{errno}
 to @code{EINVAL} instead of @code{EEXIST} or @code{ENOTDIR} on some
 platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=32569
+@c https://sourceware.org/PR32569
 GNU/Hurd with glibc 2.41.
 @end itemize
diff --git a/doc/posix-functions/longjmp.texi b/doc/posix-functions/longjmp.texi
index b6163c9dc5..8860133b6b 100644
--- a/doc/posix-functions/longjmp.texi
+++ b/doc/posix-functions/longjmp.texi
@@ -25,6 +25,6 @@ structure managed by the kernel.
 @item
 This function may crash when the invoker code was compiled with option
 @code{-D_FORTIFY_SOURCE=2},
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=32522
+@c https://sourceware.org/PR32522
 on Hurd.
 @end itemize
diff --git a/doc/posix-functions/mbrlen.texi b/doc/posix-functions/mbrlen.texi
index f37234a06e..07ece94fee 100644
--- a/doc/posix-functions/mbrlen.texi
+++ b/doc/posix-functions/mbrlen.texi
@@ -15,8 +15,8 @@ Minix 3.1.8, HP-UX 11.00, mingw.
 @item
 In the C or POSIX locales, this function can return @code{(size_t) -1}
 and set @code{errno} to @code{EILSEQ}:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=19932
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=29511
+@c https://sourceware.org/PR19932
+@c https://sourceware.org/PR29511
 glibc 2.35.
 @item
 This function returns 0 instead of @code{(size_t) -2} when the input
diff --git a/doc/posix-functions/mbrtoc16.texi b/doc/posix-functions/mbrtoc16.texi
index 9e5f13883c..c359a34d93 100644
--- a/doc/posix-functions/mbrtoc16.texi
+++ b/doc/posix-functions/mbrtoc16.texi
@@ -16,18 +16,18 @@ This function is missing on most non-glibc platforms:
 glibc 2.15, macOS 14, FreeBSD 6.4, NetBSD 10.0, OpenBSD 7.3, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 3.4.x, mingw, MSVC 9, Android 4.4.
 @item
 This function may crash when the first argument is NULL on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=28898
+@c https://sourceware.org/PR28898
 glibc 2.36.
 @item
 In the C or POSIX locales, this function can return @code{(size_t) -1}
 and set @code{errno} to @code{EILSEQ}:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=19932
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=29511
+@c https://sourceware.org/PR19932
+@c https://sourceware.org/PR29511
 glibc 2.36.
 @item
 This function returns 0 instead of @code{(size_t) -2} when the input
 is empty:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=16950
+@c https://sourceware.org/PR16950
 glibc 2.19,
 @c https://issuetracker.google.com/issues/289419880
 Android 11.
diff --git a/doc/posix-functions/mbrtoc32.texi b/doc/posix-functions/mbrtoc32.texi
index 7048bffa07..629a75dec4 100644
--- a/doc/posix-functions/mbrtoc32.texi
+++ b/doc/posix-functions/mbrtoc32.texi
@@ -18,13 +18,13 @@ glibc 2.15, macOS 14, FreeBSD 6.4, NetBSD 10.0, OpenBSD 7.3, Minix 3.1.8, AIX 7.
 @item
 In the C or POSIX locales, this function can return @code{(size_t) -1}
 and set @code{errno} to @code{EILSEQ}:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=19932
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=29511
+@c https://sourceware.org/PR19932
+@c https://sourceware.org/PR29511
 glibc 2.35.
 @item
 This function returns 0 instead of @code{(size_t) -2} when the input
 is empty:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=16950
+@c https://sourceware.org/PR16950
 glibc 2.19,
 mingw,
 @c https://issuetracker.google.com/issues/289419880
@@ -60,7 +60,7 @@ exactly one Unicode character and thus never returns @code{(size_t) -3}.
 @item
 This function behaves incorrectly when converting precomposed characters
 from the BIG5-HKSCS encoding:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30611
+@c https://sourceware.org/PR30611
 glibc 2.36.
 @end itemize
 
diff --git a/doc/posix-functions/mbrtowc.texi b/doc/posix-functions/mbrtowc.texi
index 8674478adf..241098ac21 100644
--- a/doc/posix-functions/mbrtowc.texi
+++ b/doc/posix-functions/mbrtowc.texi
@@ -15,13 +15,13 @@ Minix 3.1.8, HP-UX 11.00, mingw.
 @item
 In the C or POSIX locales, this function can return @code{(size_t) -1}
 and set @code{errno} to @code{EILSEQ}:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=19932
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=29511
+@c https://sourceware.org/PR19932
+@c https://sourceware.org/PR29511
 glibc 2.35.
 @item
 This function returns 0 instead of @code{(size_t) -2} when the input
 is empty:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=16950
+@c https://sourceware.org/PR16950
 glibc 2.19,
 mingw with UCRT, MSVC 14, Android 11.
 @item
@@ -51,8 +51,8 @@ Portability problems not fixed by Gnulib:
 @item
 In UTF-8 locales, this function may return wide characters up to 0x7FFFFFFF
 (that is, beyond 0x0010FFFF) on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=2373
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=26034
+@c https://sourceware.org/PR2373
+@c https://sourceware.org/PR26034
 glibc 2.34.
 @item
 On Windows and 32-bit AIX platforms, @code{wchar_t} is a 16-bit type and
diff --git a/doc/posix-functions/mbsnrtowcs.texi b/doc/posix-functions/mbsnrtowcs.texi
index eb324bf27f..543f7b4187 100644
--- a/doc/posix-functions/mbsnrtowcs.texi
+++ b/doc/posix-functions/mbsnrtowcs.texi
@@ -18,8 +18,8 @@ Solaris 11.4.
 @item
 In the C or POSIX locales, this function can return @code{(size_t) -1}
 and set @code{errno} to @code{EILSEQ}:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=19932
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=29511
+@c https://sourceware.org/PR19932
+@c https://sourceware.org/PR29511
 glibc 2.35.
 @end itemize
 
diff --git a/doc/posix-functions/mbsrtowcs.texi b/doc/posix-functions/mbsrtowcs.texi
index 67ee1601c8..3967a33bf5 100644
--- a/doc/posix-functions/mbsrtowcs.texi
+++ b/doc/posix-functions/mbsrtowcs.texi
@@ -18,8 +18,8 @@ HP-UX 11, Solaris 11 2010-11.
 @item
 In the C or POSIX locales, this function can return @code{(size_t) -1}
 and set @code{errno} to @code{EILSEQ}:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=19932
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=29511
+@c https://sourceware.org/PR19932
+@c https://sourceware.org/PR29511
 glibc 2.35.
 @item
 This function does not work when the first argument is NULL on some platforms:
diff --git a/doc/posix-functions/mbstowcs.texi b/doc/posix-functions/mbstowcs.texi
index 40a1676f0c..24f9a717a7 100644
--- a/doc/posix-functions/mbstowcs.texi
+++ b/doc/posix-functions/mbstowcs.texi
@@ -12,8 +12,8 @@ Portability problems fixed by Gnulib:
 @item
 In the C or POSIX locales, this function can return @code{(size_t) -1}
 and set @code{errno} to @code{EILSEQ}:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=19932
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=29511
+@c https://sourceware.org/PR19932
+@c https://sourceware.org/PR29511
 glibc 2.35.
 @end itemize
 
diff --git a/doc/posix-functions/mbtowc.texi b/doc/posix-functions/mbtowc.texi
index d423335944..5874d5a9b4 100644
--- a/doc/posix-functions/mbtowc.texi
+++ b/doc/posix-functions/mbtowc.texi
@@ -19,12 +19,12 @@ Portability problems not fixed by Gnulib:
 @item
 In UTF-8 locales, this function may return wide characters up to 0x7FFFFFFF
 (that is, beyond 0x0010FFFF) on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=2373
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=26034
+@c https://sourceware.org/PR2373
+@c https://sourceware.org/PR26034
 glibc 2.34.
 @item
 This function accumulates hidden state on some platforms:
-glibc 2.8 (see @url{https://sourceware.org/bugzilla/show_bug.cgi?id=9674}).
+glibc 2.8 (see @url{https://sourceware.org/PR9674}).
 @item
 On Windows and 32-bit AIX platforms, @code{wchar_t} is a 16-bit type and therefore cannot
 accommodate all Unicode characters.
diff --git a/doc/posix-functions/posix_memalign.texi b/doc/posix-functions/posix_memalign.texi
index 4ca65f3ddd..2ebe14f48d 100644
--- a/doc/posix-functions/posix_memalign.texi
+++ b/doc/posix-functions/posix_memalign.texi
@@ -28,7 +28,7 @@ This function is missing on some platforms:
 Mac OS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.1.
 @item
 If the alignment and size are absurdly large, this function crashes:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=32301
+@c https://sourceware.org/PR32301
 glibc 2.41.
 @end itemize
 
diff --git a/doc/posix-functions/swprintf.texi b/doc/posix-functions/swprintf.texi
index 219fe890f3..54d3aa0f4d 100644
--- a/doc/posix-functions/swprintf.texi
+++ b/doc/posix-functions/swprintf.texi
@@ -38,7 +38,7 @@ On Windows, this function does not take a buffer size as second argument.
 @item
 This function produces wrong values for the @samp{La} directive
 on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=13726
+@c https://sourceware.org/PR13726
 glibc 2.15,
 @c https://dev.haiku-os.org/ticket/18353
 Haiku,
diff --git a/doc/posix-functions/time.texi b/doc/posix-functions/time.texi
index e48d4b46bf..49d7bad5b5 100644
--- a/doc/posix-functions/time.texi
+++ b/doc/posix-functions/time.texi
@@ -12,7 +12,7 @@ Portability problems fixed by Gnulib:
 @item
 This function is not consistent with @code{gettimeofday} and @code{timespec_get}
 on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30200
+@c https://sourceware.org/PR30200
 glibc 2.31 or newer on Linux,
 @c Only seen on machines with 2 or more CPUs.
 FreeBSD 14.0,
diff --git a/doc/posix-functions/totalorder.texi b/doc/posix-functions/totalorder.texi
index e23873465e..4a4daee66b 100644
--- a/doc/posix-functions/totalorder.texi
+++ b/doc/posix-functions/totalorder.texi
@@ -34,6 +34,6 @@ Portability problems not fixed by Gnulib:
 @itemize
 @item
 This function treats signalling NaNs incorrectly on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30973
+@c https://sourceware.org/PR30973
 glibc 2.35/sh4.
 @end itemize
diff --git a/doc/posix-functions/totalorderf.texi b/doc/posix-functions/totalorderf.texi
index bbf044a414..52aa1b0fb9 100644
--- a/doc/posix-functions/totalorderf.texi
+++ b/doc/posix-functions/totalorderf.texi
@@ -34,6 +34,6 @@ Portability problems not fixed by Gnulib:
 @itemize
 @item
 This function treats signalling NaNs incorrectly on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30973
+@c https://sourceware.org/PR30973
 glibc 2.35/sh4.
 @end itemize
diff --git a/doc/posix-functions/totalorderl.texi b/doc/posix-functions/totalorderl.texi
index cf07a9965f..7d114c91c9 100644
--- a/doc/posix-functions/totalorderl.texi
+++ b/doc/posix-functions/totalorderl.texi
@@ -34,6 +34,6 @@ Portability problems not fixed by Gnulib:
 @itemize
 @item
 This function treats signalling NaNs incorrectly on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30973
+@c https://sourceware.org/PR30973
 glibc 2.35/sh4.
 @end itemize
diff --git a/doc/posix-functions/utimensat.texi b/doc/posix-functions/utimensat.texi
index 81dd365035..fcea06423e 100644
--- a/doc/posix-functions/utimensat.texi
+++ b/doc/posix-functions/utimensat.texi
@@ -37,7 +37,7 @@ Linux kernel 2.6.32, macOS 14, NetBSD 10.0, Solaris 11.1.
 Out-of-range values of @code{tv_nsec} do not lead to a failure on some
 platforms:
 Linux kernel 2.6.22.19 on hppa, NetBSD 10.0,
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=32802
+@c https://sourceware.org/PR32802
 GNU/Hurd with glibc 2.41.
 @item
 On some platforms, this function mis-handles a trailing slash:
diff --git a/doc/posix-functions/wcscmp.texi b/doc/posix-functions/wcscmp.texi
index 961e7e0122..13e1723ead 100644
--- a/doc/posix-functions/wcscmp.texi
+++ b/doc/posix-functions/wcscmp.texi
@@ -19,7 +19,7 @@ NetBSD 10.0, OpenBSD 7.2, Solaris 11.4.
 @item
 This function may return a wrong result if the two arguments are of different
 length, on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=30620
+@c https://sourceware.org/PR30620
 glibc 2.37 on arm and arm64 CPUs,
 AIX 7.2 in 64-bit mode.
 @end itemize
diff --git a/doc/posix-headers/stdlib.texi b/doc/posix-headers/stdlib.texi
index bd402b8d95..7cf4d8d990 100644
--- a/doc/posix-headers/stdlib.texi
+++ b/doc/posix-headers/stdlib.texi
@@ -36,7 +36,7 @@ MirBSD 10.
 @item
 The macro @code{WCOREDUMP} is not defined in this header file (only in
 @code{<sys/wait.h>}) on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=32551
+@c https://sourceware.org/PR32551
 glibc 2.41.
 @end itemize
 
diff --git a/doc/posix-headers/sys_un.texi b/doc/posix-headers/sys_un.texi
index 110de5391a..a14464a4c4 100644
--- a/doc/posix-headers/sys_un.texi
+++ b/doc/posix-headers/sys_un.texi
@@ -19,7 +19,7 @@ This header file does not define the @code{sa_family_t} type on some platforms:
 Cygwin 3.5.5, mingw, MSVC 14.
 @item
 This header file causes compilation errors in C++ mode on some platforms:
-@c https://sourceware.org/bugzilla/show_bug.cgi?id=32024
+@c https://sourceware.org/PR32024
 glibc 2.41.
 @end itemize
 
diff --git a/doc/regex.texi b/doc/regex.texi
index 925b0db639..f797a019db 100644
--- a/doc/regex.texi
+++ b/doc/regex.texi
@@ -1150,11 +1150,11 @@ programs to return incorrect answers or even crash, and fixing these
 bugs has often been low-priority: for example, as of 2020 the
 @url{https://sourceware.org/bugzilla/,GNU C library bug database}
 contained back-reference bugs
-@url{https://sourceware.org/bugzilla/show_bug.cgi?id=52,,52},
-@url{https://sourceware.org/bugzilla/show_bug.cgi?id=10844,,10844},
-@url{https://sourceware.org/bugzilla/show_bug.cgi?id=11053,,11053},
-@url{https://sourceware.org/bugzilla/show_bug.cgi?id=24269,,24269}
-and @url{https://sourceware.org/bugzilla/show_bug.cgi?id=25322,,25322},
+@url{https://sourceware.org/PR52,,52},
+@url{https://sourceware.org/PR10844,,10844},
+@url{https://sourceware.org/PR11053,,11053},
+@url{https://sourceware.org/PR24269,,24269}
+and @url{https://sourceware.org/PR25322,,25322},
 with little sign of forthcoming fixes.  Luckily,
 back-references are rarely useful and it should be little trouble to
 avoid them in practical applications.
diff --git a/lib/af_alg.c b/lib/af_alg.c
index cfa96954e5..29410e3e77 100644
--- a/lib/af_alg.c
+++ b/lib/af_alg.c
@@ -189,7 +189,7 @@ afalg_stream (FILE *stream, const char *alg,
             }
 
           /* Don't assume that EOF is sticky. See:
-             <https://sourceware.org/bugzilla/show_bug.cgi?id=19476>.  */
+             <https://sourceware.org/PR19476>.  */
           if (feof (stream))
             {
               result = 0;
diff --git a/lib/copy-file-range.c b/lib/copy-file-range.c
index 2465a55802..79132dcdaf 100644
--- a/lib/copy-file-range.c
+++ b/lib/copy-file-range.c
@@ -78,7 +78,7 @@ copy_file_range (int infd, off_t *pinoff,
     {
 #   if defined __GLIBC__ && ! (2 < __GLIBC__ + (43 <= __GLIBC_MINOR__))
       /* Work around glibc bug 33245
-         <https://sourceware.org/bugzilla/show_bug.cgi?id=33245>.
+         <https://sourceware.org/PR33245>.
          This bug is present in glibc 2.42 (2025) and fixed in 2.43,
          so this workaround, and the configure-time check for glibc,
          can be removed once glibc 2.42 and earlier is no longer a
diff --git a/lib/duplocale.c b/lib/duplocale.c
index 47a626e1e6..d1ba3aa772 100644
--- a/lib/duplocale.c
+++ b/lib/duplocale.c
@@ -33,7 +33,7 @@ duplocale (locale_t locale)
 {
   /* Implement duplocale(LC_GLOBAL_LOCALE) on platforms without locale_t.
      Also, work around crash in the duplocale function in glibc < 2.12.
-     See <https://sourceware.org/bugzilla/show_bug.cgi?id=10969>.
+     See <https://sourceware.org/PR10969>.
      Also, on AIX 7.1, duplocale(LC_GLOBAL_LOCALE) returns (locale_t)0 with
      errno set to EINVAL.
      Also, on NetBSD 7.0, duplocale(LC_GLOBAL_LOCALE) returns a locale that
diff --git a/lib/fchmodat.c b/lib/fchmodat.c
index 8853d7a3ae..eb82e1cafb 100644
--- a/lib/fchmodat.c
+++ b/lib/fchmodat.c
@@ -90,7 +90,7 @@ fchmodat (int dir, char const *file, mode_t mode, int flags)
       /* Open a file descriptor with O_NOFOLLOW, to make sure we don't
          follow symbolic links, if /proc is mounted.  O_PATH is used to
          avoid a failure if the file is not readable.
-         Cf. <https://sourceware.org/bugzilla/show_bug.cgi?id=14578>  */
+         Cf. <https://sourceware.org/PR14578>  */
       int fd = openat (dir, file, O_PATH | O_NOFOLLOW | O_CLOEXEC);
       if (fd < 0)
         return fd;
diff --git a/lib/fpe-trapping.h b/lib/fpe-trapping.h
index e8952751ef..25fe6bf924 100644
--- a/lib/fpe-trapping.h
+++ b/lib/fpe-trapping.h
@@ -36,7 +36,7 @@ sigfpe_on_invalid ()
      Also, possibly a bug in glibc/sysdeps/m68k/fpu/feenablxcpt.c: it sets
      only bit 13, but should better set bits 15, 14, 13 of the control
      register together.  See
-     <https://sourceware.org/bugzilla/show_bug.cgi?id=30993>.  */
+     <https://sourceware.org/PR30993>.  */
   int ret = feenableexcept (FE_INVALID);
   if (ret == -1)
     return -1;
diff --git a/lib/freading.c b/lib/freading.c
index 1a5d0e0dad..cfa0dbb9da 100644
--- a/lib/freading.c
+++ b/lib/freading.c
@@ -22,7 +22,7 @@
 #include "stdio-impl.h"
 
 /* Don't use glibc's __freading function in glibc < 2.7, see
-   <https://sourceware.org/bugzilla/show_bug.cgi?id=4359>  */
+   <https://sourceware.org/PR4359>  */
 #if !(HAVE___FREADING && (!defined __GLIBC__ || defined __UCLIBC__ || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 7)))
 
 bool
diff --git a/lib/gen-uni-tables.c b/lib/gen-uni-tables.c
index af6f33f17e..37f245d805 100644
--- a/lib/gen-uni-tables.c
+++ b/lib/gen-uni-tables.c
@@ -6833,8 +6833,8 @@ fill_width (const char *width_filename)
      in the U+3130..U+318F block, and these characters are mapped to legacy
      character sets, and traditional Japanese layout matters for them.
      2) glibc does the same thing, see
-     <https://sourceware.org/bugzilla/show_bug.cgi?id=21750>
-     <https://sourceware.org/bugzilla/show_bug.cgi?id=26120>
+     <https://sourceware.org/PR21750>
+     <https://sourceware.org/PR26120>
  */
 
 static bool
diff --git a/lib/getlocalename_l-unsafe.c b/lib/getlocalename_l-unsafe.c
index 66b2c74726..e27388294c 100644
--- a/lib/getlocalename_l-unsafe.c
+++ b/lib/getlocalename_l-unsafe.c
@@ -476,7 +476,7 @@ getlocalename_l_unsafe (int category, locale_t locale)
 #elif __GLIBC__ >= 2 && !defined __UCLIBC__
       /* Work around an incorrect definition of the _NL_LOCALE_NAME macro in
          glibc < 2.12.
-         See <https://sourceware.org/bugzilla/show_bug.cgi?id=10968>.  */
+         See <https://sourceware.org/PR10968>.  */
       const char *name =
         nl_langinfo_l (_NL_ITEM ((category), _NL_ITEM_INDEX (-1)), locale);
       if (name[0] == '\0')
diff --git a/lib/glthread/lock.c b/lib/glthread/lock.c
index dace4fdab6..a2c53dc7d6 100644
--- a/lib/glthread/lock.c
+++ b/lib/glthread/lock.c
@@ -255,7 +255,7 @@ glthread_recursive_lock_destroy (gl_recursive_lock_t *lock)
 #  if defined PTHREAD_RWLOCK_INITIALIZER || defined PTHREAD_RWLOCK_INITIALIZER_NP
 
 #   if !HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER
-     /* glibc with bug https://sourceware.org/bugzilla/show_bug.cgi?id=13701 */
+     /* glibc with bug https://sourceware.org/PR13701 */
 
 int
 glthread_rwlock_init_for_glibc (pthread_rwlock_t *lock)
diff --git a/lib/glthread/lock.h b/lib/glthread/lock.h
index d6ccc20271..1554115a88 100644
--- a/lib/glthread/lock.h
+++ b/lib/glthread/lock.h
@@ -239,7 +239,7 @@ typedef pthread_rwlock_t gl_rwlock_t;
 #    endif
 #    define glthread_rwlock_init(LOCK) \
        (pthread_in_use () ? pthread_rwlock_init (LOCK, NULL) : 0)
-#   else /* glibc with bug https://sourceware.org/bugzilla/show_bug.cgi?id=13701 */
+#   else /* glibc with bug https://sourceware.org/PR13701 */
 #    define gl_rwlock_initializer \
        PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP
 #    define glthread_rwlock_init(LOCK) \
diff --git a/lib/lchmod.c b/lib/lchmod.c
index 4391a4aa94..aabb15e359 100644
--- a/lib/lchmod.c
+++ b/lib/lchmod.c
@@ -43,7 +43,7 @@ lchmod (char const *file, mode_t mode)
   /* Open a file descriptor with O_NOFOLLOW, to make sure we don't
      follow symbolic links, if /proc is mounted.  O_PATH is used to
      avoid a failure if the file is not readable.
-     Cf. <https://sourceware.org/bugzilla/show_bug.cgi?id=14578>  */
+     Cf. <https://sourceware.org/PR14578>  */
   int fd = open (file, O_PATH | O_NOFOLLOW | O_CLOEXEC);
   if (fd < 0)
     return fd;
diff --git a/lib/mbtowc-lock.h b/lib/mbtowc-lock.h
index 500f74cc13..d257aaa8c8 100644
--- a/lib/mbtowc-lock.h
+++ b/lib/mbtowc-lock.h
@@ -23,7 +23,7 @@ mbtowc_unlocked (wchar_t *pwc, const char *p, size_t m)
 {
   /* Put the hidden internal state of mbtowc into an initial state.
      This is needed at least with glibc, uClibc, and MSVC CRT.
-     See <https://sourceware.org/bugzilla/show_bug.cgi?id=9674>.  */
+     See <https://sourceware.org/PR9674>.  */
   mbtowc (NULL, NULL, 0);
 
   return mbtowc (pwc, p, m);
diff --git a/lib/md5-stream.c b/lib/md5-stream.c
index fdbf97a682..a5d6a3109a 100644
--- a/lib/md5-stream.c
+++ b/lib/md5-stream.c
@@ -87,7 +87,7 @@ md5_stream (FILE *stream, void *resblock)
              or the fread() in afalg_stream may have gotten EOF.
              We need to avoid a subsequent fread() as EOF may
              not be sticky.  For details of such systems, see:
-             https://sourceware.org/bugzilla/show_bug.cgi?id=1190  */
+             https://sourceware.org/PR1190  */
           if (feof (stream))
             goto process_partial_block;
 
diff --git a/lib/nproc.c b/lib/nproc.c
index 83439aa0eb..cecf60bc6e 100644
--- a/lib/nproc.c
+++ b/lib/nproc.c
@@ -258,7 +258,7 @@ num_processors_ignoring_omp (enum nproc_query query)
      the /sys and /proc file systems (see
      glibc/sysdeps/unix/sysv/linux/getsysstats.c).
      In some situations these file systems are not mounted, and the sysconf call
-     returns 1 or 2 (<https://sourceware.org/bugzilla/show_bug.cgi?id=21542>),
+     returns 1 or 2 (<https://sourceware.org/PR21542>),
      which does not reflect the reality.  */
 
   if (query == NPROC_CURRENT)
diff --git a/lib/sched.in.h b/lib/sched.in.h
index 5b4034c340..c4103128c8 100644
--- a/lib/sched.in.h
+++ b/lib/sched.in.h
@@ -46,7 +46,7 @@
 
 /* Get pid_t.
    This is needed on glibc 2.11 (see
-   glibc bug <https://sourceware.org/bugzilla/show_bug.cgi?id=13198>)
+   glibc bug <https://sourceware.org/PR13198>)
    and Mac OS X 10.5.  */
 #include <sys/types.h>
 
diff --git a/lib/sha1-stream.c b/lib/sha1-stream.c
index 32faf44bf6..8e70dc10b2 100644
--- a/lib/sha1-stream.c
+++ b/lib/sha1-stream.c
@@ -75,7 +75,7 @@ sha1_stream (FILE *stream, void *resblock)
              or the fread() in afalg_stream may have gotten EOF.
              We need to avoid a subsequent fread() as EOF may
              not be sticky.  For details of such systems, see:
-             https://sourceware.org/bugzilla/show_bug.cgi?id=1190  */
+             https://sourceware.org/PR1190  */
           if (feof (stream))
             goto process_partial_block;
 
diff --git a/lib/sha256-stream.c b/lib/sha256-stream.c
index e266807877..0a587e881d 100644
--- a/lib/sha256-stream.c
+++ b/lib/sha256-stream.c
@@ -77,7 +77,7 @@ shaxxx_stream (FILE *stream, char const *alg, void *resblock,
              or the fread() in afalg_stream may have gotten EOF.
              We need to avoid a subsequent fread() as EOF may
              not be sticky.  For details of such systems, see:
-             https://sourceware.org/bugzilla/show_bug.cgi?id=1190  */
+             https://sourceware.org/PR1190  */
           if (feof (stream))
             goto process_partial_block;
 
diff --git a/lib/sha512-stream.c b/lib/sha512-stream.c
index 2458b339a1..791ee6e8ac 100644
--- a/lib/sha512-stream.c
+++ b/lib/sha512-stream.c
@@ -77,7 +77,7 @@ shaxxx_stream (FILE *stream, char const *alg, void *resblock,
              or the fread() in afalg_stream may have gotten EOF.
              We need to avoid a subsequent fread() as EOF may
              not be sticky.  For details of such systems, see:
-             https://sourceware.org/bugzilla/show_bug.cgi?id=1190  */
+             https://sourceware.org/PR1190  */
           if (feof (stream))
             goto process_partial_block;
 
diff --git a/lib/stdio.in.h b/lib/stdio.in.h
index e80862125d..e506e30991 100644
--- a/lib/stdio.in.h
+++ b/lib/stdio.in.h
@@ -945,7 +945,7 @@ _GL_CXXALIAS_SYS (fwrite, size_t,
                    FILE *restrict stream));
 
 /* Work around bug 11959 when fortifying glibc 2.4 through 2.15
-   <https://sourceware.org/bugzilla/show_bug.cgi?id=11959>,
+   <https://sourceware.org/PR11959>,
    which sometimes causes an unwanted diagnostic for fwrite calls.
    This affects only function declaration attributes under certain
    versions of gcc and clang, and is not needed for C++.  */
diff --git a/lib/strfmon_l.c b/lib/strfmon_l.c
index 2e1b07db26..63f14aea75 100644
--- a/lib/strfmon_l.c
+++ b/lib/strfmon_l.c
@@ -120,7 +120,7 @@ ssize_t
 rpl_strfmon_l (char *s, size_t maxsize, locale_t locale, const char *format, ...)
 {
   /* Work around glibc 2.23 bug
-     <https://sourceware.org/bugzilla/show_bug.cgi?id=19633>.  */
+     <https://sourceware.org/PR19633>.  */
   va_list argptr;
   locale_t orig_locale;
   directives_t directives;
diff --git a/lib/uniwidth/width.c b/lib/uniwidth/width.c
index c99a74cb21..5ada88d9e6 100644
--- a/lib/uniwidth/width.c
+++ b/lib/uniwidth/width.c
@@ -42,8 +42,8 @@
      in the U+3130..U+318F block, and these characters are mapped to legacy
      character sets, and traditional Japanese layout matters for them.
      2) glibc does the same thing, see
-     <https://sourceware.org/bugzilla/show_bug.cgi?id=21750>
-     <https://sourceware.org/bugzilla/show_bug.cgi?id=26120>
+     <https://sourceware.org/PR21750>
+     <https://sourceware.org/PR26120>
  */
 #include "uniwidth/width0.h"
 
diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c
index 3e421b87e2..9c68661204 100644
--- a/lib/vasnprintf.c
+++ b/lib/vasnprintf.c
@@ -7807,9 +7807,9 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                         /* glibc prefers to compare the width against the number
                            of characters as well, but only for numeric conversion
                            specifiers.  See
-                           <https://sourceware.org/bugzilla/show_bug.cgi?id=28943>
-                           <https://sourceware.org/bugzilla/show_bug.cgi?id=30883>
-                           <https://sourceware.org/bugzilla/show_bug.cgi?id=31542>  */
+                           <https://sourceware.org/PR28943>
+                           <https://sourceware.org/PR30883>
+                           <https://sourceware.org/PR31542>  */
                         switch (dp->conversion)
                           {
                           case 'd': case 'i': case 'u':
diff --git a/m4/duplocale.m4 b/m4/duplocale.m4
index dba412b0f7..26f37fe6c0 100644
--- a/m4/duplocale.m4
+++ b/m4/duplocale.m4
@@ -14,7 +14,7 @@ AC_DEFUN([gl_FUNC_DUPLOCALE],
   gl_CHECK_FUNCS_ANDROID([duplocale], [[#include <locale.h>]])
   if test $ac_cv_func_duplocale = yes; then
     dnl Check against glibc bug where duplocale crashes.
-    dnl See <https://sourceware.org/bugzilla/show_bug.cgi?id=10969>.
+    dnl See <https://sourceware.org/PR10969>.
     dnl Also, on AIX 7.1, duplocale(LC_GLOBAL_LOCALE) returns (locale_t)0 with
     dnl errno set to EINVAL.
     dnl Also, on NetBSD 7.0, duplocale(LC_GLOBAL_LOCALE) returns a locale that
diff --git a/m4/fenv-environment.m4 b/m4/fenv-environment.m4
index e5f08be2ce..c35a3372d2 100644
--- a/m4/fenv-environment.m4
+++ b/m4/fenv-environment.m4
@@ -145,7 +145,7 @@ AC_DEFUN([gl_FENV_ENVIRONMENT],
       *) REPLACE_FEHOLDEXCEPT=1 ;;
     esac
     dnl The fegetenv function does not work on glibc 2.19/x86_64
-    dnl (see <https://sourceware.org/bugzilla/show_bug.cgi?id=16198>)
+    dnl (see <https://sourceware.org/PR16198>)
     dnl and Mac OS X 10.5/{i386,x86_64}.
     AC_CACHE_CHECK([whether fegetenv works],
       [gl_cv_func_fegetenv_works],
@@ -301,9 +301,9 @@ AC_DEFUN([gl_FENV_ENVIRONMENT],
       *) REPLACE_FESETENV=1 ;;
     esac
     dnl The feupdateenv function does not work on glibc 2.37/riscv64
-    dnl (see <https://sourceware.org/bugzilla/show_bug.cgi?id=31022>)
+    dnl (see <https://sourceware.org/PR31022>)
     dnl and on glibc 2.37/hppa
-    dnl (see <https://sourceware.org/bugzilla/show_bug.cgi?id=31023>)
+    dnl (see <https://sourceware.org/PR31023>)
     dnl and on glibc 2.5/{i386,x86_64,ia64} (see
     dnl <https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=a8c79c4088e8c04e4297936efa0dee6c8e6e974d>)
     dnl and on Mac OS X 10.5/{i386,x86_64} (where it forgets about the currently
diff --git a/m4/fnmatch.m4 b/m4/fnmatch.m4
index 48f6c07aed..7e6a000767 100644
--- a/m4/fnmatch.m4
+++ b/m4/fnmatch.m4
@@ -81,7 +81,7 @@ AC_DEFUN([gl_FUNC_FNMATCH_POSIX],
                 return 1;
               if (!n ("*x", ".x", FNM_PERIOD))
                 return 1;
-              /* glibc bug <https://sourceware.org/bugzilla/show_bug.cgi?id=361>
+              /* glibc bug <https://sourceware.org/PR361>
                  exists in glibc 2.3.3, fixed in glibc 2.5.  */
               if (!y (Apat, "\\\\", 0))
                 result |= 2;
@@ -107,14 +107,14 @@ AC_DEFUN([gl_FUNC_FNMATCH_POSIX],
                 result |= 2;
               if (!(n (apat, bs01, 0) == ('a' < '\\\\')))
                 result |= 2;
-              /* glibc bug <https://sourceware.org/bugzilla/show_bug.cgi?id=12378>
+              /* glibc bug <https://sourceware.org/PR12378>
                  exists in glibc 2.12, fixed in glibc 2.13.  */
               if (!y ("[/b", "[/b", 0)) /*"]]"*/
                 result |= 4;
-              /* glibc bug <https://sourceware.org/bugzilla/show_bug.cgi?id=17062>
+              /* glibc bug <https://sourceware.org/PR17062>
                  is fixed in glibc 2.20.
-                 glibc bugs <https://sourceware.org/bugzilla/show_bug.cgi?id=18032>
-                            <https://sourceware.org/bugzilla/show_bug.cgi?id=18036>
+                 glibc bugs <https://sourceware.org/PR18032>
+                            <https://sourceware.org/PR18036>
                  are fixed in glibc 2.22.
                  These bugs are not easy to test for reliably (without mmap),
                  therefore test the glibc version.  */
diff --git a/m4/free.m4 b/m4/free.m4
index 485d82433e..bf03a7d190 100644
--- a/m4/free.m4
+++ b/m4/free.m4
@@ -14,10 +14,10 @@ AC_DEFUN([gl_FUNC_FREE],
 
   dnl In the next release of POSIX, free must preserve errno.
   dnl https://www.austingroupbugs.net/view.php?id=385
-  dnl https://sourceware.org/bugzilla/show_bug.cgi?id=17924
+  dnl https://sourceware.org/PR17924
   dnl So far, we know of three platforms that do this:
   dnl * glibc >= 2.33, thanks to the fix for this bug:
-  dnl   <https://sourceware.org/bugzilla/show_bug.cgi?id=17924>
+  dnl   <https://sourceware.org/PR17924>
   dnl * OpenBSD >= 4.5, thanks to this commit:
   dnl   <https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdlib/malloc.c.diff?r1=1.100&r2=1.101&f=h>
   dnl * Solaris, because its malloc() implementation is based on brk(),
diff --git a/m4/getpayload.m4 b/m4/getpayload.m4
index ba1358b09c..b403775810 100644
--- a/m4/getpayload.m4
+++ b/m4/getpayload.m4
@@ -18,7 +18,7 @@ AC_DEFUN([gl_FUNC_GETPAYLOADF],
     HAVE_GETPAYLOADF=0
   else
     dnl glibc versions < 2.32 return a wrong value,
-    dnl see <https://sourceware.org/bugzilla/show_bug.cgi?id=26073>.
+    dnl see <https://sourceware.org/PR26073>.
     AC_CACHE_CHECK([whether getpayloadf works],
       [gl_cv_func_getpayloadf_works],
       [
@@ -80,7 +80,7 @@ AC_DEFUN_ONCE([gl_FUNC_GETPAYLOAD],
     HAVE_GETPAYLOAD=0
   else
     dnl glibc versions < 2.32 return a wrong value,
-    dnl see <https://sourceware.org/bugzilla/show_bug.cgi?id=26073>.
+    dnl see <https://sourceware.org/PR26073>.
     AC_CACHE_CHECK([whether getpayload works],
       [gl_cv_func_getpayload_works],
       [
@@ -143,7 +143,7 @@ AC_DEFUN([gl_FUNC_GETPAYLOADL],
     HAVE_GETPAYLOADL=0
   else
     dnl glibc versions < 2.32 return a wrong value,
-    dnl see <https://sourceware.org/bugzilla/show_bug.cgi?id=26073>.
+    dnl see <https://sourceware.org/PR26073>.
     AC_CACHE_CHECK([whether getpayloadl works],
       [gl_cv_func_getpayloadl_works],
       [
diff --git a/m4/mbrtowc.m4 b/m4/mbrtowc.m4
index cc09a5fb5b..364295fe97 100644
--- a/m4/mbrtowc.m4
+++ b/m4/mbrtowc.m4
@@ -716,7 +716,7 @@ AC_DEFUN([gl_MBRTOWC_EMPTY_INPUT],
 dnl Test whether mbrtowc reports encoding errors in the C locale.
 dnl Although POSIX was never intended to allow this, the GNU C Library
 dnl and other implementations do it.  See:
-dnl https://sourceware.org/bugzilla/show_bug.cgi?id=19932
+dnl https://sourceware.org/PR19932
 dnl POSIX has now clarified it:
 dnl <https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbrtowc.html>
 dnl says: "In the POSIX locale an [EILSEQ] error cannot occur since all byte
diff --git a/m4/memchr.m4 b/m4/memchr.m4
index 1c2ecf1dd4..d5bce3935c 100644
--- a/m4/memchr.m4
+++ b/m4/memchr.m4
@@ -21,7 +21,7 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
   #   https://bugzilla.redhat.com/show_bug.cgi?id=499689
   # memchr should not dereference overestimated length after a match
   #   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737
-  #   https://sourceware.org/bugzilla/show_bug.cgi?id=10162
+  #   https://sourceware.org/PR10162
   # memchr should cast the second argument to 'unsigned char'.
   #   This bug exists in Android 4.3.
   # Assume that memchr works on platforms that lack mprotect.
diff --git a/m4/memmem.m4 b/m4/memmem.m4
index ce5b85990e..e940f8273f 100644
--- a/m4/memmem.m4
+++ b/m4/memmem.m4
@@ -23,7 +23,7 @@ AC_DEFUN([gl_FUNC_MEMMEM_SIMPLE],
   if test $ac_cv_have_decl_memmem = no; then
     HAVE_DECL_MEMMEM=0
   else
-    dnl Detect https://sourceware.org/bugzilla/show_bug.cgi?id=12092.
+    dnl Detect https://sourceware.org/PR12092.
     dnl Also check that we handle empty needles correctly.
     AC_CACHE_CHECK([whether memmem works],
       [gl_cv_func_memmem_works_always],
diff --git a/m4/printf.m4 b/m4/printf.m4
index 4619a40252..d48b892294 100644
--- a/m4/printf.m4
+++ b/m4/printf.m4
@@ -659,7 +659,7 @@ int main ()
           && strcmp (buf, "0x8.0p-2") != 0))
     result |= 16;
   /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a
-     glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>
+     glibc 2.4 bug <https://sourceware.org/PR2908>
      and a FreeBSD 6.4, NetBSD 10.0 bug.  */
   if (sprintf (buf, "%.1La", 1.999L) < 0
       || (strcmp (buf, "0x1.0p+1") != 0
diff --git a/m4/pthread_rwlock_rdlock.m4 b/m4/pthread_rwlock_rdlock.m4
index aec9f076d4..260bc28702 100644
--- a/m4/pthread_rwlock_rdlock.m4
+++ b/m4/pthread_rwlock_rdlock.m4
@@ -32,7 +32,7 @@ dnl https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_rwlock_rd
 dnl but this test verifies the guarantee regardless of TPS and regardless of
 dnl scheduling policy.
 dnl Glibc does not provide this guarantee (and never will on Linux), see
-dnl https://sourceware.org/bugzilla/show_bug.cgi?id=13701
+dnl https://sourceware.org/PR13701
 dnl https://bugzilla.redhat.com/show_bug.cgi?id=1410052
 AC_DEFUN([gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER],
 [
diff --git a/m4/strcasestr.m4 b/m4/strcasestr.m4
index eb2862f1aa..b1cd97f6e6 100644
--- a/m4/strcasestr.m4
+++ b/m4/strcasestr.m4
@@ -22,8 +22,8 @@ AC_DEFUN([gl_FUNC_STRCASESTR_SIMPLE],
     if test $REPLACE_MEMCHR = 1; then
       REPLACE_STRCASESTR=1
     else
-      dnl Detect https://sourceware.org/bugzilla/show_bug.cgi?id=12092
-      dnl and https://sourceware.org/bugzilla/show_bug.cgi?id=23637.
+      dnl Detect https://sourceware.org/PR12092
+      dnl and https://sourceware.org/PR23637.
       AC_CACHE_CHECK([whether strcasestr works],
         [gl_cv_func_strcasestr_works_always],
         [AC_RUN_IFELSE(
diff --git a/m4/strerrorname_np.m4 b/m4/strerrorname_np.m4
index 61e11f0ec4..3b7f2a7289 100644
--- a/m4/strerrorname_np.m4
+++ b/m4/strerrorname_np.m4
@@ -38,13 +38,13 @@ AC_DEFUN([gl_CHECK_STRERRORNAME_NP],
   if test $ac_cv_func_strerrorname_np = yes; then
     dnl In glibc 2.32, strerrorname_np returns English error descriptions, not
     dnl error names.
-    dnl See <https://sourceware.org/bugzilla/show_bug.cgi?id=26555>.
+    dnl See <https://sourceware.org/PR26555>.
     dnl In glibc 2.36, strerrorname_np returns NULL for EDEADLOCK on powerpc and
     dnl sparc platforms.
-    dnl See <https://sourceware.org/bugzilla/show_bug.cgi?id=29545>.
+    dnl See <https://sourceware.org/PR29545>.
     dnl In glibc 2.37, strerrorname_np returns NULL for ENOSYM and
     dnl EREMOTERELEASE on hppa platforms.
-    dnl See <https://sourceware.org/bugzilla/show_bug.cgi?id=31080>.
+    dnl See <https://sourceware.org/PR31080>.
     dnl In Solaris 11 OmniOS, strerrorname_np returns NULL for ERESTART
     dnl and ESTRPIPE.
     dnl see <https://www.illumos.org/issues/17134>.
diff --git a/m4/strfmon_l.m4 b/m4/strfmon_l.m4
index eba0a2c00a..e21fd21ce7 100644
--- a/m4/strfmon_l.m4
+++ b/m4/strfmon_l.m4
@@ -20,7 +20,7 @@ AC_DEFUN([gl_FUNC_STRFMON_L],
 
   AC_CHECK_FUNCS_ONCE([strfmon_l])
   if test $ac_cv_func_strfmon_l = yes; then
-    dnl Test for bug <https://sourceware.org/bugzilla/show_bug.cgi?id=19633>
+    dnl Test for bug <https://sourceware.org/PR19633>
     dnl which was fixed in glibc-2.24.
     AC_CACHE_CHECK([whether strfmon_l works],
       [gl_cv_strfmon_l_works],
diff --git a/m4/strstr.m4 b/m4/strstr.m4
index 1b5ef6c102..1be2721cac 100644
--- a/m4/strstr.m4
+++ b/m4/strstr.m4
@@ -14,8 +14,8 @@ AC_DEFUN([gl_FUNC_STRSTR_SIMPLE],
   if test $REPLACE_MEMCHR = 1; then
     REPLACE_STRSTR=1
   else
-    dnl Detect https://sourceware.org/bugzilla/show_bug.cgi?id=12092
-    dnl and https://sourceware.org/bugzilla/show_bug.cgi?id=23637.
+    dnl Detect https://sourceware.org/PR12092
+    dnl and https://sourceware.org/PR23637.
     AC_CACHE_CHECK([whether strstr works],
       [gl_cv_func_strstr_works_always],
       [AC_RUN_IFELSE(
diff --git a/m4/strtok_r.m4 b/m4/strtok_r.m4
index d40342bed4..e98dac605f 100644
--- a/m4/strtok_r.m4
+++ b/m4/strtok_r.m4
@@ -21,7 +21,7 @@ AC_DEFUN([gl_FUNC_STRTOK_R],
     dnl when the second argument to strtok_r is a constant string that has
     dnl exactly one byte and compiling with optimization.  This bug is, for
     dnl example, present in the glibc 2.7-18 package in Debian "lenny".
-    dnl See <https://sourceware.org/bugzilla/show_bug.cgi?id=5614>.
+    dnl See <https://sourceware.org/PR5614>.
     AC_CACHE_CHECK([whether strtok_r works], [gl_cv_func_strtok_r_works],
       [AC_RUN_IFELSE(
          [AC_LANG_PROGRAM([[
diff --git a/m4/time.m4 b/m4/time.m4
index f63ec12f87..8c3ec9444a 100644
--- a/m4/time.m4
+++ b/m4/time.m4
@@ -11,7 +11,7 @@ dnl From Bruno Haible.
 AC_DEFUN([gl_FUNC_TIME],
 [
   AC_REQUIRE([AC_CANONICAL_HOST])
-  dnl glibc has the bug https://sourceware.org/bugzilla/show_bug.cgi?id=30200 .
+  dnl glibc has the bug https://sourceware.org/PR30200 .
   AC_CACHE_CHECK([whether time() works],
     [gl_cv_func_time_works],
     [dnl Guess that it works except on
diff --git a/m4/wchar_h.m4 b/m4/wchar_h.m4
index 722fcfc2d6..053bafd2f3 100644
--- a/m4/wchar_h.m4
+++ b/m4/wchar_h.m4
@@ -65,7 +65,7 @@ dnl Check whether <wchar.h> is usable at all.
 AC_DEFUN([gl_WCHAR_H_INLINE_OK],
 [
   dnl Test whether <wchar.h> suffers due to the transition from '__inline' to
-  dnl 'gnu_inline'. See <https://sourceware.org/bugzilla/show_bug.cgi?id=4022>
+  dnl 'gnu_inline'. See <https://sourceware.org/PR4022>
   dnl and <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. In summary,
   dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and
   dnl the option -std=c99 or -std=gnu99, leads to a broken <wchar.h>.
diff --git a/tests/test-execute-script.c b/tests/test-execute-script.c
index ad5e23ffee..1304909837 100644
--- a/tests/test-execute-script.c
+++ b/tests/test-execute-script.c
@@ -34,7 +34,7 @@ main ()
 
   /* Check an invocation of an executable script.
      This should only be supported if the script has a '#!' marker; otherwise
-     it is unsecure: <https://sourceware.org/bugzilla/show_bug.cgi?id=13134>.
+     it is unsecure: <https://sourceware.org/PR13134>.
      POSIX says that the execlp() and execvp() functions support executing
      shell scripts
      <https://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html>,
diff --git a/tests/test-exp2.h b/tests/test-exp2.h
index bed46a2dac..7035b81078 100644
--- a/tests/test-exp2.h
+++ b/tests/test-exp2.h
@@ -35,7 +35,7 @@ test_function (void)
     DOUBLE y = EXP2 (x);
     ASSERT (y == L_(1.0));
   }
-  /* <https://sourceware.org/bugzilla/show_bug.cgi?id=13824> */
+  /* <https://sourceware.org/PR13824> */
 #if !(__GLIBC__ == 2 && __GLIBC_MINOR__ < 16 && (defined __sparc || defined __powerpc__))
   {
     int e;
diff --git a/tests/test-fnmatch.c b/tests/test-fnmatch.c
index c8447cd239..f3c119b498 100644
--- a/tests/test-fnmatch.c
+++ b/tests/test-fnmatch.c
@@ -574,7 +574,7 @@ main (int argc, char *argv[])
     ASSERT (fnmatch ("*x", ".x", FNM_PERIOD) == FNM_NOMATCH);
     if (argc == 1 || strcmp (argv[1], "1") == 0)
       {
-        /* glibc bug <https://sourceware.org/bugzilla/show_bug.cgi?id=361>
+        /* glibc bug <https://sourceware.org/PR361>
            exists in glibc 2.3.3, fixed in glibc 2.5.  */
         ASSERT (fnmatch (Apat, "\\", 0) == 0);
         ASSERT (fnmatch (Apat, "A", 0) == 0);
@@ -589,7 +589,7 @@ main (int argc, char *argv[])
         ASSERT (fnmatch (Apat, bs01, 0) == ('A' < '\\' ? FNM_NOMATCH : 0));
         ASSERT (fnmatch (apat, bs01, 0) == ('a' < '\\' ? FNM_NOMATCH : 0));
       }
-    /* glibc bug <https://sourceware.org/bugzilla/show_bug.cgi?id=12378>
+    /* glibc bug <https://sourceware.org/PR12378>
        exists in glibc 2.12, fixed in glibc 2.13.  */
     ASSERT (fnmatch ("[/b", "[/b", 0) == 0);
     /* This test fails on FreeBSD 13.2, NetBSD 9.3, Cygwin 3.4.6.  */
diff --git a/tests/test-getaddrinfo.c b/tests/test-getaddrinfo.c
index dfa794791e..de0f4b3208 100644
--- a/tests/test-getaddrinfo.c
+++ b/tests/test-getaddrinfo.c
@@ -223,7 +223,7 @@ int main (void)
 #endif
 #if !defined __GLIBC__
           /* avoid glibc bug, possibly
-             <https://sourceware.org/bugzilla/show_bug.cgi?id=32465> */
+             <https://sourceware.org/PR32465> */
           + simple (3, HOST1, SERV1)
           + simple (3, HOST2, SERV2)
           + simple (3, HOST3, SERV3)
diff --git a/tests/test-getopt.h b/tests/test-getopt.h
index 86ac014ef0..b244ead900 100644
--- a/tests/test-getopt.h
+++ b/tests/test-getopt.h
@@ -1368,7 +1368,7 @@ test_getopt (void)
     }
 
   /* Check that 'W' does not dump core:
-     https://sourceware.org/bugzilla/show_bug.cgi?id=12922
+     https://sourceware.org/PR12922
      Technically, POSIX says the presence of ';' in the opt-string
      gives unspecified behavior, so we only test this when GNU compliance
      is desired.  */
diff --git a/tests/test-getopt_long.h b/tests/test-getopt_long.h
index 33eea00734..73433cea3b 100644
--- a/tests/test-getopt_long.h
+++ b/tests/test-getopt_long.h
@@ -315,7 +315,7 @@ test_getopt_long (void)
   }
 
   /* Test that 'W' does not dump core:
-     https://sourceware.org/bugzilla/show_bug.cgi?id=12922  */
+     https://sourceware.org/PR12922  */
   {
     int argc = 0;
     const char *argv[10];
diff --git a/tests/test-gettimeofday.c b/tests/test-gettimeofday.c
index 4bd7a2b6e4..8b55ac002c 100644
--- a/tests/test-gettimeofday.c
+++ b/tests/test-gettimeofday.c
@@ -72,7 +72,7 @@ test_consistency ()
   /* Verify that the tv_sec field of the result is the same as time(NULL).  */
   /* Note: It's here that the dependency to the 'time' module is needed.
      Without it, this assertion would sometimes fail on glibc systems, see
-     https://sourceware.org/bugzilla/show_bug.cgi?id=30200  */
+     https://sourceware.org/PR30200  */
   ASSERT (tv1.tv_sec <= tt2);
   ASSERT (tt2 <= tv3.tv_sec);
   ASSERT (tv3.tv_sec <= tt4);
diff --git a/tests/test-mbrtoc32-regular.c b/tests/test-mbrtoc32-regular.c
index 4a7ce0f132..d4b7139eda 100644
--- a/tests/test-mbrtoc32-regular.c
+++ b/tests/test-mbrtoc32-regular.c
@@ -53,7 +53,7 @@ main (int argc, char *argv[])
      0x88 0xA5    U+00EA U+030C    LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON
 
      Test one of them.
-     See <https://sourceware.org/bugzilla/show_bug.cgi?id=30611>.  */
+     See <https://sourceware.org/PR30611>.  */
   mbstate_t state;
   memset (&state, '\0', sizeof (mbstate_t));
   char32_t c32 = (char32_t) 0xBADFACE;
diff --git a/tests/test-perror2.c b/tests/test-perror2.c
index b8999e1e89..a0c87b230f 100644
--- a/tests/test-perror2.c
+++ b/tests/test-perror2.c
@@ -126,7 +126,7 @@ main (void)
        https://sourceware.org/ml/newlib/2011/msg00228.html */
     ASSERT (errno > 0);
     /* Commented out until glibc behaves:
-       https://sourceware.org/bugzilla/show_bug.cgi?id=12792 */
+       https://sourceware.org/PR12792 */
     ASSERT (ferror (stderr));
 #endif
   }
diff --git a/tests/test-posix_spawn-script.c b/tests/test-posix_spawn-script.c
index ef002152d8..2eaa386045 100644
--- a/tests/test-posix_spawn-script.c
+++ b/tests/test-posix_spawn-script.c
@@ -37,7 +37,7 @@ main ()
 
   /* Check an invocation of an executable script.
      This should only be supported if the script has a '#!' marker; otherwise
-     it is unsecure: <https://sourceware.org/bugzilla/show_bug.cgi?id=13134>.
+     it is unsecure: <https://sourceware.org/PR13134>.
      POSIX says that the execlp() and execvp() functions support executing
      shell scripts
      <https://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html>,
diff --git a/tests/test-posix_spawnp-script.c b/tests/test-posix_spawnp-script.c
index 10f0ef39fb..52e7028487 100644
--- a/tests/test-posix_spawnp-script.c
+++ b/tests/test-posix_spawnp-script.c
@@ -37,7 +37,7 @@ main ()
 
   /* Check an invocation of an executable script.
      This should only be supported if the script has a '#!' marker; otherwise
-     it is unsecure: <https://sourceware.org/bugzilla/show_bug.cgi?id=13134>.
+     it is unsecure: <https://sourceware.org/PR13134>.
      POSIX says that the execlp() and execvp() functions support executing
      shell scripts
      <https://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html>,
diff --git a/tests/test-random_r.c b/tests/test-random_r.c
index 1c0ffdac5f..d86252e24e 100644
--- a/tests/test-random_r.c
+++ b/tests/test-random_r.c
@@ -32,7 +32,7 @@ SIGNATURE_CHECK (random_r, int, (struct random_data *, int32_t *));
 #include "macros.h"
 
 /* Note: This test crashes on glibc/SPARC systems.
-   Reported at <https://sourceware.org/bugzilla/show_bug.cgi?id=30584>.  */
+   Reported at <https://sourceware.org/PR30584>.  */
 
 static int
 test_failed (int alignment)
diff --git a/tests/test-realloc-posix.c b/tests/test-realloc-posix.c
index 93b3c4d5df..d50f860351 100644
--- a/tests/test-realloc-posix.c
+++ b/tests/test-realloc-posix.c
@@ -61,7 +61,7 @@ main (int argc, _GL_UNUSED char **argv)
       void *r = realloc (p, PTRDIFF_MAX + one);
       ASSERT (r == NULL);
       /* Avoid a test failure due to glibc bug
-         <https://sourceware.org/bugzilla/show_bug.cgi?id=27870>.  */
+         <https://sourceware.org/PR27870>.  */
       if (!getenv ("MALLOC_CHECK_"))
         ASSERT (errno == ENOMEM);
     }
diff --git a/tests/test-sigsegv-catch-stackoverflow1.c b/tests/test-sigsegv-catch-stackoverflow1.c
index 59a3163059..a37912f3dd 100644
--- a/tests/test-sigsegv-catch-stackoverflow1.c
+++ b/tests/test-sigsegv-catch-stackoverflow1.c
@@ -20,7 +20,7 @@
 
 /* On GNU/Hurd, when compiling with -D_FORTIFY_SOURCE=2, avoid an error
    "*** longjmp causes uninitialized stack frame ***: terminated".
-   Cf. <https://sourceware.org/bugzilla/show_bug.cgi?id=32522>  */
+   Cf. <https://sourceware.org/PR32522>  */
 #ifdef __gnu_hurd__
 # undef _FORTIFY_SOURCE
 # undef __USE_FORTIFY_LEVEL
diff --git a/tests/test-sigsegv-catch-stackoverflow2.c b/tests/test-sigsegv-catch-stackoverflow2.c
index 3bace66df5..1b49442d6a 100644
--- a/tests/test-sigsegv-catch-stackoverflow2.c
+++ b/tests/test-sigsegv-catch-stackoverflow2.c
@@ -20,7 +20,7 @@
 
 /* On GNU/Hurd, when compiling with -D_FORTIFY_SOURCE=2, avoid an error
    "*** longjmp causes uninitialized stack frame ***: terminated".
-   Cf. <https://sourceware.org/bugzilla/show_bug.cgi?id=32522>  */
+   Cf. <https://sourceware.org/PR32522>  */
 #ifdef __gnu_hurd__
 # undef _FORTIFY_SOURCE
 # undef __USE_FORTIFY_LEVEL
diff --git a/tests/test-snprintf-posix.h b/tests/test-snprintf-posix.h
index 3fc18c4ba0..918b992f5a 100644
--- a/tests/test-snprintf-posix.h
+++ b/tests/test-snprintf-posix.h
@@ -604,7 +604,7 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...))
 
   { /* Rounding can turn a ...FFF into a ...000.
        This shows a Mac OS X 10.3.9 (Darwin 7.9) bug and a
-       glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
+       glibc 2.4 bug <https://sourceware.org/PR2908>.  */
     int retval =
       my_snprintf (result, sizeof (result), "%.1La %d", 1.999L, 33, 44, 55);
     ASSERT (strcmp (result, "0x1.0p+1 33") == 0
diff --git a/tests/test-spawn-pipe-script.c b/tests/test-spawn-pipe-script.c
index 34e9af7fa8..fbeee01fa3 100644
--- a/tests/test-spawn-pipe-script.c
+++ b/tests/test-spawn-pipe-script.c
@@ -31,7 +31,7 @@ main ()
 {
   /* Check an invocation of an executable script.
      This should only be supported if the script has a '#!' marker; otherwise
-     it is unsecure: <https://sourceware.org/bugzilla/show_bug.cgi?id=13134>.
+     it is unsecure: <https://sourceware.org/PR13134>.
      POSIX says that the execlp() and execvp() functions support executing
      shell scripts
      <https://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html>,
diff --git a/tests/test-sprintf-posix.h b/tests/test-sprintf-posix.h
index aa09853651..f60a6e0a05 100644
--- a/tests/test-sprintf-posix.h
+++ b/tests/test-sprintf-posix.h
@@ -590,7 +590,7 @@ test_function (int (*my_sprintf) (char *, const char *, ...))
 
   { /* Rounding can turn a ...FFF into a ...000.
        This shows a Mac OS X 10.3.9 (Darwin 7.9) bug and a
-       glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
+       glibc 2.4 bug <https://sourceware.org/PR2908>.  */
     int retval =
       my_sprintf (result, "%.1La %d", 1.999L, 33, 44, 55);
     ASSERT (strcmp (result, "0x1.0p+1 33") == 0
diff --git a/tests/test-strfmon_l.c b/tests/test-strfmon_l.c
index a57ce0de2e..fce75e4048 100644
--- a/tests/test-strfmon_l.c
+++ b/tests/test-strfmon_l.c
@@ -52,7 +52,7 @@ main (void)
   }
 
   /* Test whether the decimal point comes from the right locale:
-     glibc bug <https://sourceware.org/bugzilla/show_bug.cgi?id=19633>.  */
+     glibc bug <https://sourceware.org/PR19633>.  */
   if (setlocale (LC_ALL, "en_US.UTF-8") == NULL)
     {
       if (test_exit_status != EXIT_SUCCESS)
diff --git a/tests/test-strtod.h b/tests/test-strtod.h
index 92c07ff690..75e14b44e9 100644
--- a/tests/test-strtod.h
+++ b/tests/test-strtod.h
@@ -567,7 +567,7 @@ test_function (double (*my_strtod) (const char *, char **))
     ASSERT (-DBL_MIN <= result && result <= 0.0);
 #endif
     /* Negative underflow.  Expect a negative sign, although POSIX allows +0.0.
-       See also <https://sourceware.org/bugzilla/show_bug.cgi?id=5995>.  */
+       See also <https://sourceware.org/PR5995>.  */
     ASSERT (!!signbit (result) == !!signbit (minus_zerod)); /* glibc-2.3.6, mingw */
     ASSERT (ptr == input + 10);
     ASSERT (errno == ERANGE);
diff --git a/tests/test-strtof.h b/tests/test-strtof.h
index 031a6c8a05..d137c4d514 100644
--- a/tests/test-strtof.h
+++ b/tests/test-strtof.h
@@ -567,7 +567,7 @@ test_function (float (*my_strtof) (const char *, char **))
     ASSERT (-FLT_MIN <= result && result <= 0.0f);
 #endif
     /* Negative underflow.  Expect a negative sign, although POSIX allows +0.0f.
-       See also <https://sourceware.org/bugzilla/show_bug.cgi?id=5995>.  */
+       See also <https://sourceware.org/PR5995>.  */
     ASSERT (!!signbit (result) == !!signbit (minus_zerof)); /* glibc-2.3.6, mingw */
     ASSERT (ptr == input + 10);
     ASSERT (errno == ERANGE);
diff --git a/tests/test-strtold.h b/tests/test-strtold.h
index 1fecfb8cc4..37f537fa83 100644
--- a/tests/test-strtold.h
+++ b/tests/test-strtold.h
@@ -575,7 +575,7 @@ test_function (long double (*my_strtold) (const char *, char **))
     ASSERT (-LDBL_MIN <= result && result <= 0.0L);
 #endif
     /* Negative underflow.  Expect a negative sign, although POSIX allows +0.0L.
-       See also <https://sourceware.org/bugzilla/show_bug.cgi?id=5995>.  */
+       See also <https://sourceware.org/PR5995>.  */
     ASSERT (!!signbit (result) == !!signbit (minus_zerol)); /* glibc-2.3.2, Haiku */
     ASSERT (ptr == input + 10);
     ASSERT (errno == ERANGE);
diff --git a/tests/test-timespec_get.c b/tests/test-timespec_get.c
index d837aa2b5e..eb9c047228 100644
--- a/tests/test-timespec_get.c
+++ b/tests/test-timespec_get.c
@@ -48,7 +48,7 @@ main (void)
   /* Verify that the tv_sec field of the result is the same as time(NULL).  */
   /* Note: It's here that the dependency to the 'time' module is needed.
      Without it, this assertion would sometimes fail on glibc systems, see
-     https://sourceware.org/bugzilla/show_bug.cgi?id=30200  */
+     https://sourceware.org/PR30200  */
   ASSERT (ts1.tv_sec <= tt2);
   ASSERT (tt2 <= ts3.tv_sec);
   ASSERT (ts3.tv_sec <= tt4);
diff --git a/tests/test-vasnprintf-posix.c b/tests/test-vasnprintf-posix.c
index e382a9ce5f..fe91cb4515 100644
--- a/tests/test-vasnprintf-posix.c
+++ b/tests/test-vasnprintf-posix.c
@@ -783,7 +783,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
 
   { /* Rounding can turn a ...FFF into a ...000.
        This shows a Mac OS X 10.3.9 (Darwin 7.9) bug and a
-       glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
+       glibc 2.4 bug <https://sourceware.org/PR2908>.  */
     size_t length;
     char *result =
       my_asnprintf (NULL, &length, "%.1La %d", 1.999L, 33, 44, 55);
diff --git a/tests/test-vasnprintf-posix2.c b/tests/test-vasnprintf-posix2.c
index 55af1f7484..3a27af1780 100644
--- a/tests/test-vasnprintf-posix2.c
+++ b/tests/test-vasnprintf-posix2.c
@@ -142,7 +142,7 @@ main (int argc, char *argv[])
         {
           /* But there are good arguments for adding the grouping character
              within the leading zeroes.
-             <https://sourceware.org/bugzilla/show_bug.cgi?id=23432>  */
+             <https://sourceware.org/PR23432>  */
           ASSERT (length == 10 + 3 * separator_len);
           ASSERT (memcmp (result, "0", 1) == 0
                   && memcmp (result + 1, separator, separator_len) == 0
@@ -171,7 +171,7 @@ main (int argc, char *argv[])
         {
           /* But there are good arguments for adding the grouping character
              within the leading zeroes.
-             <https://sourceware.org/bugzilla/show_bug.cgi?id=23432>  */
+             <https://sourceware.org/PR23432>  */
           ASSERT (length == 11 + 3 * separator_len);
           ASSERT (memcmp (result, "-0", 2) == 0
                   && memcmp (result + 2, separator, separator_len) == 0
@@ -204,9 +204,9 @@ main (int argc, char *argv[])
             {
               /* Result according to glibc, which measures the width in
                  multibyte characters or column positions.
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=28943>
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=30883>
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=31542>  */
+                 <https://sourceware.org/PR28943>
+                 <https://sourceware.org/PR30883>
+                 <https://sourceware.org/PR31542>  */
               ASSERT (length == 9 + separator_len);
               ASSERT (memcmp (result, "     1", 6) == 0
                       && memcmp (result + 6, separator, separator_len) == 0
@@ -241,9 +241,9 @@ main (int argc, char *argv[])
             {
               /* Result according to glibc, which measures the width in
                  multibyte characters or column positions.
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=28943>
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=30883>
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=31542>  */
+                 <https://sourceware.org/PR28943>
+                 <https://sourceware.org/PR30883>
+                 <https://sourceware.org/PR31542>  */
               ASSERT (length == 9 + separator_len);
               ASSERT (memcmp (result, "    -1", 6) == 0
                       && memcmp (result + 6, separator, separator_len) == 0
@@ -318,9 +318,9 @@ main (int argc, char *argv[])
             {
               /* Result according to glibc, which measures the width in
                  multibyte characters or column positions.
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=28943>
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=30883>
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=31542>  */
+                 <https://sourceware.org/PR28943>
+                 <https://sourceware.org/PR30883>
+                 <https://sourceware.org/PR31542>  */
               ASSERT (length == 9 + separator_len);
               ASSERT (memcmp (result, "000001", 6) == 0
                       && memcmp (result + 6, separator, separator_len) == 0
@@ -424,9 +424,9 @@ main (int argc, char *argv[])
             {
               /* Result according to glibc, which measures the width in
                  multibyte characters or column positions.
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=28943>
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=30883>
-                 <https://sourceware.org/bugzilla/show_bug.cgi?id=31542>  */
+                 <https://sourceware.org/PR28943>
+                 <https://sourceware.org/PR30883>
+                 <https://sourceware.org/PR31542>  */
               ASSERT (length == 9 + separator_len);
               ASSERT (memcmp (result, "000001", 6) == 0
                       && memcmp (result + 6, separator, separator_len) == 0
diff --git a/tests/test-vasnwprintf-posix.c b/tests/test-vasnwprintf-posix.c
index af7bd60bda..aad15df7aa 100644
--- a/tests/test-vasnwprintf-posix.c
+++ b/tests/test-vasnwprintf-posix.c
@@ -783,7 +783,7 @@ test_function (wchar_t * (*my_asnwprintf) (wchar_t *, size_t *, const wchar_t *,
 
   { /* Rounding can turn a ...FFF into a ...000.
        This shows a Mac OS X 10.3.9 (Darwin 7.9) bug and a
-       glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
+       glibc 2.4 bug <https://sourceware.org/PR2908>.  */
     size_t length;
     wchar_t *result =
       my_asnwprintf (NULL, &length, L"%.1La %d", 1.999L, 33, 44, 55);
diff --git a/tests/test-vasnwprintf-posix2.c b/tests/test-vasnwprintf-posix2.c
index 719c932a41..e48b9672c0 100644
--- a/tests/test-vasnwprintf-posix2.c
+++ b/tests/test-vasnwprintf-posix2.c
@@ -156,7 +156,7 @@ main (int argc, char *argv[])
         {
           /* But there are good arguments for adding the grouping character
              within the leading zeroes too.
-             <https://sourceware.org/bugzilla/show_bug.cgi?id=23432>  */
+             <https://sourceware.org/PR23432>  */
           ASSERT (length == 10 + 3 * separator_len);
           ASSERT (wmemcmp (result, L"0", 1) == 0
                   && wmemcmp (result + 1, separator, separator_len) == 0
@@ -185,7 +185,7 @@ main (int argc, char *argv[])
         {
           /* But there are good arguments for adding the grouping character
              within the leading zeroes too.
-             <https://sourceware.org/bugzilla/show_bug.cgi?id=23432>  */
+             <https://sourceware.org/PR23432>  */
           ASSERT (length == 11 + 3 * separator_len);
           ASSERT (wmemcmp (result, L"-0", 2) == 0
                   && wmemcmp (result + 2, separator, separator_len) == 0
diff --git a/tests/test-vasprintf-posix.c b/tests/test-vasprintf-posix.c
index fe929b65ad..df88c48f5b 100644
--- a/tests/test-vasprintf-posix.c
+++ b/tests/test-vasprintf-posix.c
@@ -764,7 +764,7 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
 
   { /* Rounding can turn a ...FFF into a ...000.
        This shows a Mac OS X 10.3.9 (Darwin 7.9) bug and a
-       glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
+       glibc 2.4 bug <https://sourceware.org/PR2908>.  */
     char *result;
     int retval =
       my_asprintf (&result, "%.1La %d", 1.999L, 33, 44, 55);
diff --git a/tests/test-xstrtod.c b/tests/test-xstrtod.c
index 7c894a41e9..d858da6a1e 100644
--- a/tests/test-xstrtod.c
+++ b/tests/test-xstrtod.c
@@ -694,7 +694,7 @@ main ()
     ASSERT (ok);
     ASSERT (result == 0.0);
     /* Negative underflow.  Expect a negative sign, although POSIX allows +0.0.
-       See also <https://sourceware.org/bugzilla/show_bug.cgi?id=5995>.  */
+       See also <https://sourceware.org/PR5995>.  */
     ASSERT (!!signbit (result) == !!signbit (minus_zerod));
     ASSERT (ptr == input + 10);
     ASSERT (errno == ERANGE);
diff --git a/tests/test-xstrtold.c b/tests/test-xstrtold.c
index 361a9ce9dd..2c4311c9d6 100644
--- a/tests/test-xstrtold.c
+++ b/tests/test-xstrtold.c
@@ -702,7 +702,7 @@ main ()
     ASSERT (ok);
     ASSERT (result == 0.0L);
     /* Negative underflow.  Expect a negative sign, although POSIX allows +0.0L.
-       See also <https://sourceware.org/bugzilla/show_bug.cgi?id=5995>.  */
+       See also <https://sourceware.org/PR5995>.  */
     ASSERT (!!signbit (result) == !!signbit (minus_zerol));
     ASSERT (ptr == input + 10);
     ASSERT (errno == ERANGE);
-- 
2.48.1
0002-Shorten-GCC-bug-URLs.patch (text/x-patch, 25.3 KB)
From 2410984b5bd06e4548dfbc09c85eee35e268e3dc Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email protected]>
Date: Sat, 2 Aug 2025 10:25:13 -0700
Subject: [PATCH 2/2] Shorten GCC bug URLs

---
 build-aux/gcc-warning.spec     |  2 +-
 doc/posix-headers/stddef.texi  |  2 +-
 lib/alignalloc.h               |  2 +-
 lib/c++defs.h                  |  4 ++--
 lib/careadlinkat.c             |  4 ++--
 lib/float.in.h                 |  8 ++++----
 lib/free.c                     |  2 +-
 lib/intprops-internal.h        |  4 ++--
 lib/realloc.c                  |  2 +-
 lib/savedir.c                  |  2 +-
 lib/signed-nan.h               | 12 ++++++------
 lib/stddef.in.h                |  4 ++--
 lib/strftime.c                 |  2 +-
 lib/string.in.h                |  2 +-
 lib/totalorder.c               |  2 +-
 lib/totalorderf.c              |  2 +-
 lib/totalordermag.c            |  2 +-
 lib/totalordermagf.c           |  2 +-
 lib/wchar.in.h                 |  2 +-
 m4/btowc.m4                    |  2 +-
 m4/extern-inline.m4            |  4 ++--
 m4/gnulib-common.m4            |  4 ++--
 m4/manywarnings.m4             |  2 +-
 m4/nullptr.m4                  |  2 +-
 m4/stdalign.m4                 |  4 ++--
 m4/stddef_h.m4                 |  4 ++--
 m4/wchar_h.m4                  |  2 +-
 modules/uniname/uniname        |  2 +-
 tests/test-canonicalize-lgpl.c |  2 +-
 tests/test-canonicalize.c      |  2 +-
 tests/test-intprops.c          |  2 +-
 tests/test-ptsname_r.c         |  2 +-
 tests/test-sprintf-posix.h     |  2 +-
 33 files changed, 49 insertions(+), 49 deletions(-)

diff --git a/build-aux/gcc-warning.spec b/build-aux/gcc-warning.spec
index e147f49149..926895883a 100644
--- a/build-aux/gcc-warning.spec
+++ b/build-aux/gcc-warning.spec
@@ -354,7 +354,7 @@
 -Wstringop-overread			default
 -Wstringop-truncation			default
 -Wsubobject-linkage			c++ and objc++
--Wsuggest-attribute=returns_nonnull	https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114833
+-Wsuggest-attribute=returns_nonnull	https://gcc.gnu.org/PR114833
 -Wsuggest-override			c++ and objc++
 -Wsurprising				fortran
 -Wswitch				enabled by -Wall
diff --git a/doc/posix-headers/stddef.texi b/doc/posix-headers/stddef.texi
index 7f7af3bdef..74516edba9 100644
--- a/doc/posix-headers/stddef.texi
+++ b/doc/posix-headers/stddef.texi
@@ -46,7 +46,7 @@ GCC 12, Clang 15, and other pre-2023 C compilers.
 @item
 Some platforms define @code{nullptr_t} even when @code{<stddef.h>} is
 not included:
-@c https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114869
+@c https://gcc.gnu.org/PR114869
 GCC 14
 
 @item
diff --git a/lib/alignalloc.h b/lib/alignalloc.h
index 2cd4050753..15974b5cbb 100644
--- a/lib/alignalloc.h
+++ b/lib/alignalloc.h
@@ -53,7 +53,7 @@ extern "C" {
 #endif
 
 /* Work around AddressSanitizer bug.
-   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104262
+   https://gcc.gnu.org/PR104262
    https://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20220124/1001910.html
    */
 #ifdef __SANITIZE_ADDRESS__
diff --git a/lib/c++defs.h b/lib/c++defs.h
index df98a5ae57..b77979a325 100644
--- a/lib/c++defs.h
+++ b/lib/c++defs.h
@@ -310,7 +310,7 @@
    _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
 # define _GL_CXXALIASWARN_1(func,namespace) \
    _GL_CXXALIASWARN_2 (func, namespace)
-/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+/* To work around GCC bug <https://gcc.gnu.org/PR43881>,
    we enable the warning only when not optimizing.  */
 # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
 #  define _GL_CXXALIASWARN_2(func,namespace) \
@@ -338,7 +338,7 @@
                         GNULIB_NAMESPACE)
 # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
    _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
-/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+/* To work around GCC bug <https://gcc.gnu.org/PR43881>,
    we enable the warning only when not optimizing.  */
 # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
diff --git a/lib/careadlinkat.c b/lib/careadlinkat.c
index 9ec3ca3322..8f4a3c1a70 100644
--- a/lib/careadlinkat.c
+++ b/lib/careadlinkat.c
@@ -45,7 +45,7 @@ enum { STACK_BUF_SIZE = 1024 };
    If GCC_LINT is defined, do not inline this function with GCC 10.1
    and later, to avoid creating a pointer to the stack that GCC
    -Wreturn-local-addr incorrectly complains about.  See:
-   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93644
+   https://gcc.gnu.org/PR93644
    Although the noinline attribute can hurt performance a bit, no better way
    to pacify GCC is known; even an explicit #pragma does not pacify GCC.
    When the GCC bug is fixed this workaround should be limited to the
@@ -174,7 +174,7 @@ careadlinkat (int fd, char const *filename,
      shrinking realloc.  */
   #ifdef GCC_BOGUS_WRETURN_LOCAL_ADDR
    #warning "GCC might issue a bogus -Wreturn-local-addr warning here."
-   #warning "See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93644>."
+   #warning "See <https://gcc.gnu.org/PR93644>."
   #endif
   char stack_buf[STACK_BUF_SIZE];
   return readlink_stk (fd, filename, buffer, buffer_size, alloc,
diff --git a/lib/float.in.h b/lib/float.in.h
index ab7ea6d561..3093f9a01d 100644
--- a/lib/float.in.h
+++ b/lib/float.in.h
@@ -135,7 +135,7 @@ extern const union gl_long_double_union gl_LDBL_MAX;
    which represents 0x1.fffffffffffff7ffffffffffff8p+1023L.
    Although computations can yield representations of numbers larger than this,
    these computations are considered to have overflowed and behavior is undefined.
-   See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120993>.  */
+   See <https://gcc.gnu.org/PR120993>.  */
 # undef LDBL_MAX
 # define LDBL_MAX 0x1.fffffffffffff7ffffffffffff8p+1023L
 
@@ -234,7 +234,7 @@ extern const union gl_long_double_union gl_LDBL_TRUE_MIN;
 # define FLT_NORM_MAX FLT_MAX
 #endif
 #ifndef FLT_SNAN
-/* For sh, beware of <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111814>.  */
+/* For sh, beware of <https://gcc.gnu.org/PR111814>.  */
 # if ((__GNUC__ + (__GNUC_MINOR__ >= 3) > 3) || defined __clang__) && !defined __sh__
 #  define FLT_SNAN __builtin_nansf ("")
 # else
@@ -258,7 +258,7 @@ extern gl_FLT_SNAN_t gl_FLT_SNAN;
 # define DBL_NORM_MAX DBL_MAX
 #endif
 #ifndef DBL_SNAN
-/* For sh, beware of <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111814>.  */
+/* For sh, beware of <https://gcc.gnu.org/PR111814>.  */
 # if ((__GNUC__ + (__GNUC_MINOR__ >= 3) > 3) || defined __clang__) && !defined __sh__
 #  define DBL_SNAN __builtin_nans ("")
 # else
@@ -290,7 +290,7 @@ extern gl_DBL_SNAN_t gl_DBL_SNAN;
 # endif
 #endif
 #ifndef LDBL_SNAN
-/* For sh, beware of <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111814>.  */
+/* For sh, beware of <https://gcc.gnu.org/PR111814>.  */
 # if ((__GNUC__ + (__GNUC_MINOR__ >= 3) > 3) || defined __clang__) && !defined __sh__
 #  define LDBL_SNAN __builtin_nansl ("")
 # else
diff --git a/lib/free.c b/lib/free.c
index 98ceafd7da..394d8d1390 100644
--- a/lib/free.c
+++ b/lib/free.c
@@ -33,7 +33,7 @@ rpl_free (void *p)
 {
 # if defined __GNUC__ && !defined __clang__
   /* An invalid GCC optimization
-     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98396>
+     <https://gcc.gnu.org/PR98396>
      would optimize away the assignments in the code below, when link-time
      optimization (LTO) is enabled.  Make the code more complicated, so that
      GCC does not grok how to optimize it.  */
diff --git a/lib/intprops-internal.h b/lib/intprops-internal.h
index 62de3c889e..ab1a94f86d 100644
--- a/lib/intprops-internal.h
+++ b/lib/intprops-internal.h
@@ -112,7 +112,7 @@
 #elif defined __has_builtin
 # define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow)
 /* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x,
-   see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98269>.  */
+   see <https://gcc.gnu.org/PR98269>.  */
 #elif 7 <= __GNUC__
 # define _GL_HAS_BUILTIN_ADD_OVERFLOW 1
 #else
@@ -184,7 +184,7 @@
 #endif
 
 /* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390.  See:
-   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193
+   https://gcc.gnu.org/PR68193
    https://llvm.org/bugs/show_bug.cgi?id=25390
    For now, assume GCC < 14 and all Clang versions generate bogus
    warnings for _Generic.  This matters only for compilers that
diff --git a/lib/realloc.c b/lib/realloc.c
index 4237501097..62efd5a39f 100644
--- a/lib/realloc.c
+++ b/lib/realloc.c
@@ -50,7 +50,7 @@ rpl_realloc (void *p, size_t n)
          undefined behavior even though C17 and earlier partially defined
          the behavior.  Let the programmer know.
          When the undefined-behaviour sanitizers report this case, i.e. when
-         <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117233> and
+         <https://gcc.gnu.org/PR117233> and
          <https://github.com/llvm/llvm-project/issues/113065>
          have been closed and new releases of GCC and clang have been made,
          we can revisit this code.  */
diff --git a/lib/savedir.c b/lib/savedir.c
index 40e3b8cebc..2e4f6f9a7c 100644
--- a/lib/savedir.c
+++ b/lib/savedir.c
@@ -41,7 +41,7 @@
 #include "attribute.h"
 #include "xalloc.h"
 
-/* Pacify GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113963>.  */
+/* Pacify GCC bug <https://gcc.gnu.org/PR113963>.  */
 #if _GL_GNUC_PREREQ (13, 0)
 # pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak"
 # pragma GCC diagnostic ignored "-Wanalyzer-null-dereference"
diff --git a/lib/signed-nan.h b/lib/signed-nan.h
index fcc12d34cf..41360db556 100644
--- a/lib/signed-nan.h
+++ b/lib/signed-nan.h
@@ -53,7 +53,7 @@ _GL_UNUSED static float
 positive_NaNf ()
 {
   /* 'volatile' works around a GCC bug:
-     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655>  */
+     <https://gcc.gnu.org/PR111655>  */
   float volatile nan = NaNf ();
   return (signbit (nan) ? minus_NaNf (nan) : nan);
 }
@@ -63,7 +63,7 @@ _GL_UNUSED static float
 negative_NaNf ()
 {
   /* 'volatile' works around a GCC bug:
-     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655>  */
+     <https://gcc.gnu.org/PR111655>  */
   float volatile nan = NaNf ();
   return (signbit (nan) ? nan : minus_NaNf (nan));
 }
@@ -91,7 +91,7 @@ _GL_UNUSED static double
 positive_NaNd ()
 {
   /* 'volatile' works around a GCC bug:
-     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655>  */
+     <https://gcc.gnu.org/PR111655>  */
   double volatile nan = NaNd ();
   return (signbit (nan) ? minus_NaNd (nan) : nan);
 }
@@ -101,7 +101,7 @@ _GL_UNUSED static double
 negative_NaNd ()
 {
   /* 'volatile' works around a GCC bug:
-     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655>  */
+     <https://gcc.gnu.org/PR111655>  */
   double volatile nan = NaNd ();
   return (signbit (nan) ? nan : minus_NaNd (nan));
 }
@@ -120,7 +120,7 @@ _GL_UNUSED static long double
 positive_NaNl ()
 {
   /* 'volatile' works around a GCC bug:
-     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655>  */
+     <https://gcc.gnu.org/PR111655>  */
   long double volatile nan = NaNl ();
   return (signbit (nan) ? minus_NaNl (nan) : nan);
 }
@@ -130,7 +130,7 @@ _GL_UNUSED static long double
 negative_NaNl ()
 {
   /* 'volatile' works around a GCC bug:
-     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111655>  */
+     <https://gcc.gnu.org/PR111655>  */
   long double volatile nan = NaNl ();
   return (signbit (nan) ? nan : minus_NaNl (nan));
 }
diff --git a/lib/stddef.in.h b/lib/stddef.in.h
index e8c55ff1cd..9ad768d785 100644
--- a/lib/stddef.in.h
+++ b/lib/stddef.in.h
@@ -32,7 +32,7 @@
      || defined __need_wint_t)                                      \
     /* Avoid warning triggered by "gcc -std=gnu23 -Wsystem-headers" \
        in GCC 13.3 and 14.2                                         \
-       <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114870>.  */   \
+       <https://gcc.gnu.org/PR114870>.  */   \
     && !@STDDEF_NOT_IDEMPOTENT@
 /* Special invocation convention inside gcc header files.  In
    particular, <stddef.h> in some ancient versions of GCC blindly
@@ -91,7 +91,7 @@ typedef long max_align_t;
 
 #  if !defined _GCC_NULLPTR_T && !@NULLPTR_T_NEEDS_STDDEF@
     /* Suppress unwanted nullptr_t typedef.  See
-       <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114869>.  */
+       <https://gcc.gnu.org/PR114869>.  */
 #   define _GCC_NULLPTR_T
 #  endif
 
diff --git a/lib/strftime.c b/lib/strftime.c
index 537172d8be..27e2ca0976 100644
--- a/lib/strftime.c
+++ b/lib/strftime.c
@@ -355,7 +355,7 @@ enum pad_style
 /* Avoid false GCC warning "'memset' specified size 18446744073709551615 exceeds
    maximum object size 9223372036854775807", caused by insufficient data flow
    analysis and value propagation of the 'width_add' expansion when GCC is not
-   optimizing.  Cf. <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88443>.  */
+   optimizing.  Cf. <https://gcc.gnu.org/PR88443>.  */
 #if _GL_GNUC_PREREQ (7, 0) && !__OPTIMIZE__
 # pragma GCC diagnostic ignored "-Wstringop-overflow"
 #endif
diff --git a/lib/string.in.h b/lib/string.in.h
index 9a039c7ba0..4333055993 100644
--- a/lib/string.in.h
+++ b/lib/string.in.h
@@ -96,7 +96,7 @@
 /* Applies to: functions.  Cannot be used on inline functions.  */
 #ifndef _GL_ATTRIBUTE_DEALLOC_FREE
 # if defined __cplusplus && defined __GNUC__ && !defined __clang__
-/* Work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108231> */
+/* Work around GCC bug <https://gcc.gnu.org/PR108231> */
 #  define _GL_ATTRIBUTE_DEALLOC_FREE \
      _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1)
 # else
diff --git a/lib/totalorder.c b/lib/totalorder.c
index 5824da836f..0da878d54a 100644
--- a/lib/totalorder.c
+++ b/lib/totalorder.c
@@ -60,7 +60,7 @@ totalorder (double const *x, double const *y)
 # if defined __GNUC__ || defined __clang__
   /* Prevent gcc and clang from reusing the values of *x and *y (fetched above)
      in optimized inlined memcpy expansions.
-     Seen with gcc <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114659>
+     Seen with gcc <https://gcc.gnu.org/PR114659>
      and with clang 16.0.6 on OpenBSD 7.5.  */
   __asm__ __volatile__ ("" : : : "memory");
 # endif
diff --git a/lib/totalorderf.c b/lib/totalorderf.c
index 88c8580f9d..ae4a2b3c98 100644
--- a/lib/totalorderf.c
+++ b/lib/totalorderf.c
@@ -60,7 +60,7 @@ totalorderf (float const *x, float const *y)
 # if defined __GNUC__ || defined __clang__
   /* Prevent gcc and clang from reusing the values of *x and *y (fetched above)
      in optimized inlined memcpy expansions.
-     Seen with gcc <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114659>
+     Seen with gcc <https://gcc.gnu.org/PR114659>
      and with clang 16.0.6 on OpenBSD 7.5.  */
   __asm__ __volatile__ ("" : : : "memory");
 # endif
diff --git a/lib/totalordermag.c b/lib/totalordermag.c
index 3893ccf94d..68f5becec2 100644
--- a/lib/totalordermag.c
+++ b/lib/totalordermag.c
@@ -60,7 +60,7 @@ totalordermag (double const *x, double const *y)
 #  if defined __GNUC__ || defined __clang__
   /* Prevent gcc and clang from reusing the values of *x and *y (fetched above)
      in optimized inlined memcpy expansions.
-     Seen with gcc <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114659>
+     Seen with gcc <https://gcc.gnu.org/PR114659>
      and with clang 16.0.6 on OpenBSD 7.5.  */
   __asm__ __volatile__ ("" : : : "memory");
 #  endif
diff --git a/lib/totalordermagf.c b/lib/totalordermagf.c
index b6879e2d27..9fec2cf7fc 100644
--- a/lib/totalordermagf.c
+++ b/lib/totalordermagf.c
@@ -60,7 +60,7 @@ totalordermagf (float const *x, float const *y)
 #  if defined __GNUC__ || defined __clang__
   /* Prevent gcc and clang from reusing the values of *x and *y (fetched above)
      in optimized inlined memcpy expansions.
-     Seen with gcc <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114659>
+     Seen with gcc <https://gcc.gnu.org/PR114659>
      and with clang 16.0.6 on OpenBSD 7.5.  */
   __asm__ __volatile__ ("" : : : "memory");
 #  endif
diff --git a/lib/wchar.in.h b/lib/wchar.in.h
index a6c52eb9c6..23d8b3c5bf 100644
--- a/lib/wchar.in.h
+++ b/lib/wchar.in.h
@@ -110,7 +110,7 @@
 /* Applies to: functions.  Cannot be used on inline functions.  */
 #ifndef _GL_ATTRIBUTE_DEALLOC_FREE
 # if defined __cplusplus && defined __GNUC__ && !defined __clang__
-/* Work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108231> */
+/* Work around GCC bug <https://gcc.gnu.org/PR108231> */
 #  define _GL_ATTRIBUTE_DEALLOC_FREE \
      _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1)
 # else
diff --git a/m4/btowc.m4 b/m4/btowc.m4
index 59d52be6f6..fd18db753e 100644
--- a/m4/btowc.m4
+++ b/m4/btowc.m4
@@ -13,7 +13,7 @@ AC_DEFUN([gl_FUNC_BTOWC],
 
   dnl Check whether <wchar.h> is usable at all, first. Otherwise the test
   dnl program below may lead to an endless loop. See
-  dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>.
+  dnl <https://gcc.gnu.org/PR42440>.
   AC_REQUIRE([gl_WCHAR_H_INLINE_OK])
 
   AC_CHECK_FUNCS_ONCE([btowc])
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4
index d4fe6d82a5..0ebcba3475 100644
--- a/m4/extern-inline.m4
+++ b/m4/extern-inline.m4
@@ -112,8 +112,8 @@ AC_DEFUN([gl_EXTERN_INLINE],
    suppress bogus "no previous prototype for 'FOO'"
    and "no previous declaration for 'FOO'" diagnostics,
    when FOO is an inline function in the header; see
-   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
-   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>.  */
+   <https://gcc.gnu.org/PR54113> and
+   <https://gcc.gnu.org/PR63877>.  */
 #if __GNUC__ == 4 && 6 <= __GNUC_MINOR__
 # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
 #  define _GL_INLINE_HEADER_CONST_PRAGMA
diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4
index 034dae69e6..134bfba21d 100644
--- a/m4/gnulib-common.m4
+++ b/m4/gnulib-common.m4
@@ -168,7 +168,7 @@ AC_DEFUN([gl_COMMON_BODY], [
       ======================================================================
       This gives a syntax error
         - in C mode with gcc
-          <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108796>, and
+          <https://gcc.gnu.org/PR108796>, and
         - in C++ mode with clang++ version < 16, and
         - in C++ mode, inside extern "C" {}, still in newer clang++ versions
           <https://github.com/llvm/llvm-project/issues/101990>.
@@ -451,7 +451,7 @@ AC_DEFUN([gl_COMMON_BODY], [
    yet.  */
 #ifndef _GL_ATTRIBUTE_DEALLOC_FREE
 # if defined __cplusplus && defined __GNUC__ && !defined __clang__
-/* Work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108231> */
+/* Work around GCC bug <https://gcc.gnu.org/PR108231> */
 #  define _GL_ATTRIBUTE_DEALLOC_FREE \
      _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1)
 # else
diff --git a/m4/manywarnings.m4 b/m4/manywarnings.m4
index eebba90180..bb5b4e10cd 100644
--- a/m4/manywarnings.m4
+++ b/m4/manywarnings.m4
@@ -198,7 +198,7 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC(C)],
   fi
 
   # This warning have too many false alarms in GCC 11.2.1.
-  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101713
+  # https://gcc.gnu.org/PR101713
   AS_VAR_APPEND([$1], [' -Wno-analyzer-malloc-leak'])
 
   AC_LANG_POP([C])
diff --git a/m4/nullptr.m4 b/m4/nullptr.m4
index aa457ed2b6..2c0bdde8aa 100644
--- a/m4/nullptr.m4
+++ b/m4/nullptr.m4
@@ -16,7 +16,7 @@ AC_DEFUN([gl_NULLPTR],
        [AC_COMPILE_IFELSE(
           [AC_LANG_SOURCE([[int *p = nullptr;]])],
           [gl_cv_c_nullptr=yes
-           # Work around <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114780>.
+           # Work around <https://gcc.gnu.org/PR114780>.
            gl_saved_CFLAGS=$CFLAGS
            CFLAGS="$CFLAGS -Wall -Werror"
            AC_COMPILE_IFELSE(
diff --git a/m4/stdalign.m4 b/m4/stdalign.m4
index 885feafdd8..d22360e107 100644
--- a/m4/stdalign.m4
+++ b/m4/stdalign.m4
@@ -30,7 +30,7 @@ AC_DEFUN([gl_ALIGNASOF],
 
             /* Test that alignof yields a result consistent with offsetof.
                This catches GCC bug 52023
-               <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>.  */
+               <https://gcc.gnu.org/PR52023>.  */
             #ifdef __cplusplus
                template <class t> struct alignof_helper { char a; t b; };
             # define ao(type) offsetof (alignof_helper<type>, b)
@@ -103,7 +103,7 @@ AC_DEFUN([gl_ALIGNASOF],
    want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc.  */
 
 /* GCC releases before GCC 4.9 had a bug in _Alignof.  See GCC bug 52023
-   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>.
+   <https://gcc.gnu.org/PR52023>.
    clang versions < 8.0.0 have the same bug.
    IBM XL C V16.1.0 cc (non-clang) has the same bug.  */
 #  if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \
diff --git a/m4/stddef_h.m4 b/m4/stddef_h.m4
index 127ec05b60..d52d549489 100644
--- a/m4/stddef_h.m4
+++ b/m4/stddef_h.m4
@@ -85,7 +85,7 @@ AC_DEFUN_ONCE([gl_STDDEF_H],
   dnl Provide gl_unreachable() unconditionally.
   GL_GENERATE_STDDEF_H=true
 
-  dnl https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114869
+  dnl https://gcc.gnu.org/PR114869
   AC_CACHE_CHECK([whether nullptr_t needs <stddef.h>],
     [gl_cv_nullptr_t_needs_stddef],
     [AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[nullptr_t x;]],
@@ -96,7 +96,7 @@ AC_DEFUN_ONCE([gl_STDDEF_H],
     GL_GENERATE_STDDEF_H=true
   fi
 
-  dnl https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114870
+  dnl https://gcc.gnu.org/PR114870
   dnl affects GCC 13.3 and 14.2.
   AC_CACHE_CHECK([whether <stddef.h> is idempotent],
     [gl_cv_stddef_idempotent],
diff --git a/m4/wchar_h.m4 b/m4/wchar_h.m4
index 053bafd2f3..f88294e7c4 100644
--- a/m4/wchar_h.m4
+++ b/m4/wchar_h.m4
@@ -66,7 +66,7 @@ AC_DEFUN([gl_WCHAR_H_INLINE_OK],
 [
   dnl Test whether <wchar.h> suffers due to the transition from '__inline' to
   dnl 'gnu_inline'. See <https://sourceware.org/PR4022>
-  dnl and <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. In summary,
+  dnl and <https://gcc.gnu.org/PR42440>. In summary,
   dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and
   dnl the option -std=c99 or -std=gnu99, leads to a broken <wchar.h>.
   AC_REQUIRE([AC_CANONICAL_HOST])
diff --git a/modules/uniname/uniname b/modules/uniname/uniname
index d0951d8472..5813e92ada 100644
--- a/modules/uniname/uniname
+++ b/modules/uniname/uniname
@@ -19,7 +19,7 @@ gl_LIBUNISTRING_MODULE([1.3], [uniname/uniname])
 Makefile.am:
 if LIBUNISTRING_COMPILE_UNINAME_UNINAME
 # Note: Compilation of this file takes a long time with gcc ≥ 11 and option
-# -fanalyzer. See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110112>.
+# -fanalyzer. See <https://gcc.gnu.org/PR110112>.
 # The best workaround is to install GNU libunistring first, and use module
 # 'libunistring-optional' in your package.
 # An alternative workaround would be to pass the option -fno-analyzer, using
diff --git a/tests/test-canonicalize-lgpl.c b/tests/test-canonicalize-lgpl.c
index 5450bb9b14..84f94f232d 100644
--- a/tests/test-canonicalize-lgpl.c
+++ b/tests/test-canonicalize-lgpl.c
@@ -125,7 +125,7 @@ main (void)
     /* This test works only if the canonicalize_file_name implementation
        comes from gnulib.  If it comes from libc, we have no way to prevent
        gcc from "optimizing" the null_ptr function in invalid ways.  See
-       <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93156>.  */
+       <https://gcc.gnu.org/PR93156>.  */
 #if GNULIB_defined_canonicalize_file_name
     errno = 0;
     result = canonicalize_file_name (null_ptr ());
diff --git a/tests/test-canonicalize.c b/tests/test-canonicalize.c
index 083bf1703a..662f9b0762 100644
--- a/tests/test-canonicalize.c
+++ b/tests/test-canonicalize.c
@@ -129,7 +129,7 @@ main (void)
     /* This test works only if the canonicalize_file_name implementation
        comes from gnulib.  If it comes from libc, we have no way to prevent
        gcc from "optimizing" the null_ptr function in invalid ways.  See
-       <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93156>.  */
+       <https://gcc.gnu.org/PR93156>.  */
 #if GNULIB_defined_canonicalize_file_name
     errno = 0;
     result1 = canonicalize_file_name (null_ptr ());
diff --git a/tests/test-intprops.c b/tests/test-intprops.c
index d16b67b5ce..cce1386e24 100644
--- a/tests/test-intprops.c
+++ b/tests/test-intprops.c
@@ -26,7 +26,7 @@
 # pragma GCC diagnostic ignored "-Wtype-limits"
 
 /* Work around a bug in GCC 6.1 and earlier; see:
-   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68971  */
+   https://gcc.gnu.org/PR68971  */
 # pragma GCC diagnostic ignored "-Woverflow"
 
 #endif
diff --git a/tests/test-ptsname_r.c b/tests/test-ptsname_r.c
index 270ff86a9d..b793805542 100644
--- a/tests/test-ptsname_r.c
+++ b/tests/test-ptsname_r.c
@@ -95,7 +95,7 @@ test_errors (int fd, const char *slave)
   /* This test works only if the ptsname_r implementation comes from gnulib.
      If it comes from libc, we have no way to prevent gcc from "optimizing"
      the null_ptr function in invalid ways.  See
-     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93156>.  */
+     <https://gcc.gnu.org/PR93156>.  */
 #if GNULIB_defined_ptsname_r
   result = ptsname_r (fd, null_ptr (), 0);
   ASSERT (result != 0);
diff --git a/tests/test-sprintf-posix.h b/tests/test-sprintf-posix.h
index f60a6e0a05..0b5110519d 100644
--- a/tests/test-sprintf-posix.h
+++ b/tests/test-sprintf-posix.h
@@ -3168,7 +3168,7 @@ test_function (int (*my_sprintf) (char *, const char *, ...))
     /* This test is known to fail
          - on musl libc,
          - with GCC 14.1, 13.2, 12.3, and 11.4
-           <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114876>  */
+           <https://gcc.gnu.org/PR114876>  */
     ASSERT (memcmp (result, "a\0z 33\0", 6 + 1) == 0);
     ASSERT (retval == 6);
   }
-- 
2.48.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.