diff --git a/ChangeLog b/ChangeLog
index 2dbd9cc..f6b4274 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2020-08-31  Bruno Haible  <bruno@clisp.org>
+
+	Fix some -Wcast-qual warning, reported by clang.
+	* lib/iconv.c (compare_by_name): Add more 'const'.
+	(iconv_canonicalize): Cast value to 'unsigned char', not pointer to 'unsigned char *'.
+	* lib/iconv_open1.h: Likewise.
+
 2020-08-30  Bruno Haible  <bruno@clisp.org>
 
 	Make sure that build-aux/compile is in the tarball.
diff --git a/lib/iconv.c b/lib/iconv.c
index 1201f12..3fc3f36 100644
--- a/lib/iconv.c
+++ b/lib/iconv.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1999-2008, 2011, 2016, 2018 Free Software Foundation, Inc.
+ * Copyright (C) 1999-2008, 2011, 2016, 2018, 2020 Free Software Foundation, Inc.
  * This file is part of the GNU LIBICONV Library.
  *
  * The GNU LIBICONV Library is free software; you can redistribute it
@@ -364,8 +364,8 @@
 
 static int compare_by_name (const void * arg1, const void * arg2)
 {
-  const char * name1 = *(const char **)arg1;
-  const char * name2 = *(const char **)arg2;
+  const char * name1 = *(const char * const *)arg1;
+  const char * name2 = *(const char * const *)arg2;
   /* Compare alphabetically, but put "CS" names at the end. */
   int sign = strcmp(name1,name2);
   if (sign != 0) {
@@ -507,7 +507,7 @@
   for (code = name;;) {
     /* Search code in the table. */
     for (cp = code, bp = buf, count = MAX_WORD_LENGTH+10+1; ; cp++, bp++) {
-      unsigned char c = * (unsigned char *) cp;
+      unsigned char c = (unsigned char) *cp;
       if (c >= 0x80)
         goto invalid;
       if (c >= 'a' && c <= 'z')
diff --git a/lib/iconv_open1.h b/lib/iconv_open1.h
index 0feb509..90cf869 100644
--- a/lib/iconv_open1.h
+++ b/lib/iconv_open1.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1999-2008, 2011, 2018 Free Software Foundation, Inc.
+ * Copyright (C) 1999-2008, 2011, 2018, 2020 Free Software Foundation, Inc.
  * This file is part of the GNU LIBICONV Library.
  *
  * The GNU LIBICONV Library is free software; you can redistribute it
@@ -46,7 +46,7 @@
   for (to_wchar = 0;;) {
     /* Search tocode in the table. */
     for (cp = tocode, bp = buf, count = MAX_WORD_LENGTH+10+1; ; cp++, bp++) {
-      unsigned char c = * (unsigned char *) cp;
+      unsigned char c = (unsigned char) *cp;
       if (c >= 0x80)
         goto invalid;
       if (c >= 'a' && c <= 'z')
@@ -138,7 +138,7 @@
   for (from_wchar = 0;;) {
     /* Search fromcode in the table. */
     for (cp = fromcode, bp = buf, count = MAX_WORD_LENGTH+10+1; ; cp++, bp++) {
-      unsigned char c = * (unsigned char *) cp;
+      unsigned char c = (unsigned char) *cp;
       if (c >= 0x80)
         goto invalid;
       if (c >= 'a' && c <= 'z')
