Issue #25923: Added more const qualifiers to signatures of static and private functions.
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 978bad1..daa1355 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -921,7 +921,7 @@
 #undef PyErr_Warn
 
 PyAPI_FUNC(int)
-PyErr_Warn(PyObject *category, char *text)
+PyErr_Warn(PyObject *category, const char *text)
 {
     return PyErr_WarnEx(category, text, 1);
 }
diff --git a/Python/ceval.c b/Python/ceval.c
index dd9360c..6f74e86 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -125,7 +125,7 @@
 
 #ifdef LLTRACE
 static int lltrace;
-static int prtrace(PyObject *, char *);
+static int prtrace(PyObject *, const char *);
 #endif
 static int call_trace(Py_tracefunc, PyObject *,
                       PyThreadState *, PyFrameObject *,
@@ -4308,7 +4308,7 @@
 
 #ifdef LLTRACE
 static int
-prtrace(PyObject *v, char *str)
+prtrace(PyObject *v, const char *str)
 {
     printf("%s ", str);
     if (PyObject_Print(v, stdout, 0) != 0)
diff --git a/Python/dtoa.c b/Python/dtoa.c
index 3121cd6..e0665b6 100644
--- a/Python/dtoa.c
+++ b/Python/dtoa.c
@@ -2315,7 +2315,7 @@
 }
 
 static char *
-nrv_alloc(char *s, char **rve, int n)
+nrv_alloc(const char *s, char **rve, int n)
 {
     char *rv, *t;
 
diff --git a/Python/dynload_win.c b/Python/dynload_win.c
index 9fb0525..05050cf 100644
--- a/Python/dynload_win.c
+++ b/Python/dynload_win.c
@@ -41,7 +41,7 @@
 /* Case insensitive string compare, to avoid any dependencies on particular
    C RTL implementations */
 
-static int strcasecmp (char *string1, char *string2)
+static int strcasecmp (const char *string1, const char *string2)
 {
     int first, second;
 
diff --git a/Python/getargs.c b/Python/getargs.c
index c365fc2..7d45785 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -20,12 +20,12 @@
 
 #ifdef HAVE_DECLSPEC_DLL
 /* Export functions */
-PyAPI_FUNC(int) _PyArg_Parse_SizeT(PyObject *, char *, ...);
-PyAPI_FUNC(int) _PyArg_ParseTuple_SizeT(PyObject *, char *, ...);
+PyAPI_FUNC(int) _PyArg_Parse_SizeT(PyObject *, const char *, ...);
+PyAPI_FUNC(int) _PyArg_ParseTuple_SizeT(PyObject *, const char *, ...);
 PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
                                                   const char *, char **, ...);
 PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...);
-PyAPI_FUNC(int) _PyArg_VaParse_SizeT(PyObject *, char *, va_list);
+PyAPI_FUNC(int) _PyArg_VaParse_SizeT(PyObject *, const char *, va_list);
 PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
                                               const char *, char **, va_list);
 #endif
@@ -56,18 +56,18 @@
 /* Forward */
 static int vgetargs1(PyObject *, const char *, va_list *, int);
 static void seterror(Py_ssize_t, const char *, int *, const char *, const char *);
-static char *convertitem(PyObject *, const char **, va_list *, int, int *,
-                         char *, size_t, freelist_t *);
-static char *converttuple(PyObject *, const char **, va_list *, int,
-                          int *, char *, size_t, int, freelist_t *);
-static char *convertsimple(PyObject *, const char **, va_list *, int, char *,
-                           size_t, freelist_t *);
-static Py_ssize_t convertbuffer(PyObject *, void **p, char **);
-static int getbuffer(PyObject *, Py_buffer *, char**);
+static const char *convertitem(PyObject *, const char **, va_list *, int, int *,
+                               char *, size_t, freelist_t *);
+static const char *converttuple(PyObject *, const char **, va_list *, int,
+                                int *, char *, size_t, int, freelist_t *);
+static const char *convertsimple(PyObject *, const char **, va_list *, int,
+                                 char *, size_t, freelist_t *);
+static Py_ssize_t convertbuffer(PyObject *, void **p, const char **);
+static int getbuffer(PyObject *, Py_buffer *, const char**);
 
 static int vgetargskeywords(PyObject *, PyObject *,
                             const char *, char **, va_list *, int);
-static char *skipitem(const char **, va_list *, int);
+static const char *skipitem(const char **, va_list *, int);
 
 int
 PyArg_Parse(PyObject *args, const char *format, ...)
@@ -82,7 +82,7 @@
 }
 
 int
-_PyArg_Parse_SizeT(PyObject *args, char *format, ...)
+_PyArg_Parse_SizeT(PyObject *args, const char *format, ...)
 {
     int retval;
     va_list va;
@@ -107,7 +107,7 @@
 }
 
 int
-_PyArg_ParseTuple_SizeT(PyObject *args, char *format, ...)
+_PyArg_ParseTuple_SizeT(PyObject *args, const char *format, ...)
 {
     int retval;
     va_list va;
@@ -130,7 +130,7 @@
 }
 
 int
-_PyArg_VaParse_SizeT(PyObject *args, char *format, va_list va)
+_PyArg_VaParse_SizeT(PyObject *args, const char *format, va_list va)
 {
     va_list lva;
 
@@ -208,7 +208,7 @@
     int endfmt = 0;
     const char *formatsave = format;
     Py_ssize_t i, len;
-    char *msg;
+    const char *msg;
     int compat = flags & FLAG_COMPAT;
     freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
     freelist_t freelist;
@@ -416,7 +416,7 @@
       and msgbuf is returned.
 */
 
-static char *
+static const char *
 converttuple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
              int *levels, char *msgbuf, size_t bufsize, int toplevel,
              freelist_t *freelist)
@@ -474,7 +474,7 @@
 
     format = *p_format;
     for (i = 0; i < n; i++) {
-        char *msg;
+        const char *msg;
         PyObject *item;
         item = PySequence_GetItem(arg, i);
         if (item == NULL) {
@@ -501,11 +501,11 @@
 
 /* Convert a single item. */
 
-static char *
+static const char *
 convertitem(PyObject *arg, const char **p_format, va_list *p_va, int flags,
             int *levels, char *msgbuf, size_t bufsize, freelist_t *freelist)
 {
-    char *msg;
+    const char *msg;
     const char *format = *p_format;
 
     if (*format == '(' /* ')' */) {
@@ -530,7 +530,7 @@
 
 /* Format an error message generated by convertsimple(). */
 
-static char *
+static const char *
 converterr(const char *expected, PyObject *arg, char *msgbuf, size_t bufsize)
 {
     assert(expected != NULL);
@@ -566,7 +566,7 @@
    When you add new format codes, please don't forget poor skipitem() below.
 */
 
-static char *
+static const char *
 convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
               char *msgbuf, size_t bufsize, freelist_t *freelist)
 {
@@ -851,7 +851,7 @@
 
     case 'y': {/* any bytes-like object */
         void **p = (void **)va_arg(*p_va, char **);
-        char *buf;
+        const char *buf;
         Py_ssize_t count;
         if (*format == '*') {
             if (getbuffer(arg, (Py_buffer*)p, &buf) < 0)
@@ -898,7 +898,7 @@
                 PyBuffer_FillInfo(p, arg, sarg, len, 1, 0);
             }
             else { /* any bytes-like object */
-                char *buf;
+                const char *buf;
                 if (getbuffer(arg, p, &buf) < 0)
                     return converterr(buf, arg, msgbuf, bufsize);
             }
@@ -928,7 +928,7 @@
             }
             else { /* read-only bytes-like object */
                 /* XXX Really? */
-                char *buf;
+                const char *buf;
                 Py_ssize_t count = convertbuffer(arg, p, &buf);
                 if (count < 0)
                     return converterr(buf, arg, msgbuf, bufsize);
@@ -1275,7 +1275,7 @@
 }
 
 static Py_ssize_t
-convertbuffer(PyObject *arg, void **p, char **errmsg)
+convertbuffer(PyObject *arg, void **p, const char **errmsg)
 {
     PyBufferProcs *pb = Py_TYPE(arg)->tp_as_buffer;
     Py_ssize_t count;
@@ -1297,7 +1297,7 @@
 }
 
 static int
-getbuffer(PyObject *arg, Py_buffer *view, char **errmsg)
+getbuffer(PyObject *arg, Py_buffer *view, const char **errmsg)
 {
     if (PyObject_GetBuffer(arg, view, PyBUF_SIMPLE) != 0) {
         *errmsg = "bytes-like object";
@@ -1629,7 +1629,7 @@
 }
 
 
-static char *
+static const char *
 skipitem(const char **p_format, va_list *p_va, int flags)
 {
     const char *format = *p_format;
@@ -1722,7 +1722,7 @@
 
     case '(':           /* bypass tuple, not handled at all previously */
         {
-            char *msg;
+            const char *msg;
             for (;;) {
                 if (*format==')')
                     break;
diff --git a/Python/marshal.c b/Python/marshal.c
index 5b8de99..589eb80 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -643,7 +643,7 @@
     PyObject *refs;  /* a list */
 } RFILE;
 
-static char *
+static const char *
 r_string(Py_ssize_t n, RFILE *p)
 {
     Py_ssize_t read = -1;
@@ -729,7 +729,7 @@
         c = getc(p->fp);
     }
     else {
-        char *ptr = r_string(1, p);
+        const char *ptr = r_string(1, p);
         if (ptr != NULL)
             c = *(unsigned char *) ptr;
     }
@@ -740,9 +740,9 @@
 r_short(RFILE *p)
 {
     short x = -1;
-    unsigned char *buffer;
+    const unsigned char *buffer;
 
-    buffer = (unsigned char *) r_string(2, p);
+    buffer = (const unsigned char *) r_string(2, p);
     if (buffer != NULL) {
         x = buffer[0];
         x |= buffer[1] << 8;
@@ -756,9 +756,9 @@
 r_long(RFILE *p)
 {
     long x = -1;
-    unsigned char *buffer;
+    const unsigned char *buffer;
 
-    buffer = (unsigned char *) r_string(4, p);
+    buffer = (const unsigned char *) r_string(4, p);
     if (buffer != NULL) {
         x = buffer[0];
         x |= (long)buffer[1] << 8;
@@ -978,7 +978,8 @@
 
     case TYPE_FLOAT:
         {
-            char buf[256], *ptr;
+            char buf[256];
+            const char *ptr;
             double dx;
             n = r_byte(p);
             if (n == EOF) {
@@ -1001,9 +1002,9 @@
 
     case TYPE_BINARY_FLOAT:
         {
-            unsigned char *buf;
+            const unsigned char *buf;
             double x;
-            buf = (unsigned char *) r_string(8, p);
+            buf = (const unsigned char *) r_string(8, p);
             if (buf == NULL)
                 break;
             x = _PyFloat_Unpack8(buf, 1);
@@ -1016,7 +1017,8 @@
 
     case TYPE_COMPLEX:
         {
-            char buf[256], *ptr;
+            char buf[256];
+            const char *ptr;
             Py_complex c;
             n = r_byte(p);
             if (n == EOF) {
@@ -1053,15 +1055,15 @@
 
     case TYPE_BINARY_COMPLEX:
         {
-            unsigned char *buf;
+            const unsigned char *buf;
             Py_complex c;
-            buf = (unsigned char *) r_string(8, p);
+            buf = (const unsigned char *) r_string(8, p);
             if (buf == NULL)
                 break;
             c.real = _PyFloat_Unpack8(buf, 1);
             if (c.real == -1.0 && PyErr_Occurred())
                 break;
-            buf = (unsigned char *) r_string(8, p);
+            buf = (const unsigned char *) r_string(8, p);
             if (buf == NULL)
                 break;
             c.imag = _PyFloat_Unpack8(buf, 1);
@@ -1074,7 +1076,7 @@
 
     case TYPE_STRING:
         {
-            char *ptr;
+            const char *ptr;
             n = r_long(p);
             if (PyErr_Occurred())
                 break;
@@ -1119,7 +1121,7 @@
         }
     _read_ascii:
         {
-            char *ptr;
+            const char *ptr;
             ptr = r_string(n, p);
             if (ptr == NULL)
                 break;
@@ -1137,7 +1139,7 @@
         is_interned = 1;
     case TYPE_UNICODE:
         {
-        char *buffer;
+        const char *buffer;
 
         n = r_long(p);
         if (PyErr_Occurred())
diff --git a/Python/modsupport.c b/Python/modsupport.c
index 6c938dd..7e6a65b 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -301,7 +301,7 @@
         case 'U':   /* XXX deprecated alias */
         {
             PyObject *v;
-            char *str = va_arg(*p_va, char *);
+            const char *str = va_arg(*p_va, const char *);
             Py_ssize_t n;
             if (**p_format == '#') {
                 ++*p_format;
@@ -334,7 +334,7 @@
         case 'y':
         {
             PyObject *v;
-            char *str = va_arg(*p_va, char *);
+            const char *str = va_arg(*p_va, const char *);
             Py_ssize_t n;
             if (**p_format == '#') {
                 ++*p_format;
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index b7f6ec8..c84c46a 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1004,8 +1004,8 @@
 /* returns Py_None if the fd is not valid */
 static PyObject*
 create_stdio(PyObject* io,
-    int fd, int write_mode, char* name,
-    char* encoding, char* errors)
+    int fd, int write_mode, const char* name,
+    const char* encoding, const char* errors)
 {
     PyObject *buf = NULL, *stream = NULL, *text = NULL, *raw = NULL, *res;
     const char* mode;
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index cfe197b..8829699 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -1138,8 +1138,8 @@
 
 mod_ty
 PyParser_ASTFromFileObject(FILE *fp, PyObject *filename, const char* enc,
-                           int start, char *ps1,
-                           char *ps2, PyCompilerFlags *flags, int *errcode,
+                           int start, const char *ps1,
+                           const char *ps2, PyCompilerFlags *flags, int *errcode,
                            PyArena *arena)
 {
     mod_ty mod;
@@ -1171,8 +1171,8 @@
 
 mod_ty
 PyParser_ASTFromFile(FILE *fp, const char *filename_str, const char* enc,
-                     int start, char *ps1,
-                     char *ps2, PyCompilerFlags *flags, int *errcode,
+                     int start, const char *ps1,
+                     const char *ps2, PyCompilerFlags *flags, int *errcode,
                      PyArena *arena)
 {
     mod_ty mod;
diff --git a/Python/symtable.c b/Python/symtable.c
index 8431d51..806364a 100644
--- a/Python/symtable.c
+++ b/Python/symtable.c
@@ -160,7 +160,7 @@
 };
 
 static int symtable_analyze(struct symtable *st);
-static int symtable_warn(struct symtable *st, char *msg, int lineno);
+static int symtable_warn(struct symtable *st, const char *msg, int lineno);
 static int symtable_enter_block(struct symtable *st, identifier name,
                                 _Py_block_ty block, void *ast, int lineno,
                                 int col_offset);
@@ -903,7 +903,7 @@
 
 
 static int
-symtable_warn(struct symtable *st, char *msg, int lineno)
+symtable_warn(struct symtable *st, const char *msg, int lineno)
 {
     PyObject *message = PyUnicode_FromString(msg);
     if (message == NULL)