check-unknown-symbols
authorGNU Libc Maintainers <debian-glibc@lists.debian.org>
Tue, 5 May 2020 18:12:38 +0000 (19:12 +0100)
committerAurelien Jarno <aurel32@debian.org>
Tue, 5 May 2020 18:12:38 +0000 (19:12 +0100)
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 6baab6cfb0cc0b1cdd77213e41766a27480dd1e0..2cc89c579863955696900d4d5e85ee90e60ae3d7 100644 (file)
@@ -3492,8 +3492,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
            {