check-unknown-symbols
authorGNU Libc Maintainers <debian-glibc@lists.debian.org>
Sun, 13 Apr 2025 19:40:49 +0000 (21:40 +0200)
committerAurelien Jarno <aurel32@debian.org>
Sun, 13 Apr 2025 19:40:49 +0000 (21:40 +0200)
Check for unknown symbols in collation rules.  This is useful to detect
broken locales since unknown symbols are always wrong.

This request has not been submitted upstream yet.

# DP: Dpatch author: Denis Barbier
# DP: Patch author: Denis Barbier
# DP: Upstream status: not submitted
# DP: Date: 2006-01-08

Gbp-Pq: Topic locale
Gbp-Pq: Name check-unknown-symbols.diff

locale/programs/ld-collate.c

index 7de3ba064d8bb6ecba10c574c5478610cb18bb1f..b978a573107721b88962ba40f3540c7bfc4eca9f 100644 (file)
@@ -3515,8 +3515,20 @@ error while adding equivalent collating symbol"));
            }
          else if (arg != NULL)
            {
+             void *ptr = NULL;
              symstr = arg->val.str.startmb;
              symlen = arg->val.str.lenmb;
+             if (state != 5
+                 && find_entry (&charmap->char_table, symstr, symlen, &ptr) != 0
+                 && (repertoire == NULL ||
+                     find_entry (&repertoire->char_table, symstr, symlen, &ptr) != 0)
+                 && find_entry (&collate->elem_table, symstr, symlen, &ptr) != 0
+                 && find_entry (&collate->sym_table, symstr, symlen, &ptr) != 0)
+               {
+                 if (verbose)
+                   lr_error (ldfile, _("%s: symbol `%.*s' not known"),
+                             "LC_COLLATE", (int) symlen, symstr);
+               }
            }
          else
            {