From: GNU Libc Maintainers Date: Tue, 27 May 2025 10:40:04 +0000 (+0100) Subject: check-unknown-symbols X-Git-Tag: archive/raspbian/2.31-13+rpi1+deb11u13^2~164 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=74b62b5e5e1fe46e1733309bb5c9661dc487a87d;p=glibc.git check-unknown-symbols 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 --- diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c index feb1a1125..a0a3a1572 100644 --- a/locale/programs/ld-collate.c +++ b/locale/programs/ld-collate.c @@ -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 {