diff --git a/ChangeLog b/ChangeLog
index ca9b9cacf6959b1cbed25645b9c5f108b75034cc..2a355ba5a05b6b1b953ecd92626feb0fe0408ced 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
 	* aes-internal.h: Delete name mangling of internal symbols. Update
 	all internal references to use _nettle prefix.
 	* camellia-internal.h: Likewise.
+	* ctr-internal.h: Likewise.
 	* dsa-internal.h: Likewise.
 
 2020-11-26  Niels Möller  <nisse@lysator.liu.se>
diff --git a/ctr-internal.h b/ctr-internal.h
index d8bc1365e345a068aa0464de7e9ede4496b3bf69..e0609ed2e8bdc1eb6b791952e82cdb06fdacb8de 100644
--- a/ctr-internal.h
+++ b/ctr-internal.h
@@ -34,9 +34,6 @@
 
 #include "nettle-types.h"
 
-/* Name mangling */
-#define _ctr_crypt16 _nettle_ctr_crypt16
-
 /* Size limit for temporary stack buffers. */
 #define CTR_BUFFER_LIMIT 512
 
@@ -47,10 +44,10 @@ typedef void
 nettle_fill16_func(uint8_t *ctr, size_t n, union nettle_block16 *buffer);
 
 void
-_ctr_crypt16(const void *ctx, nettle_cipher_func *f,
-	     nettle_fill16_func *fill, uint8_t *ctr,
-	     size_t length, uint8_t *dst,
-	     const uint8_t *src);
+_nettle_ctr_crypt16(const void *ctx, nettle_cipher_func *f,
+		    nettle_fill16_func *fill, uint8_t *ctr,
+		    size_t length, uint8_t *dst,
+		    const uint8_t *src);
 
 
 #endif /* NETTLE_CTR_INTERNAL_H_INCLUDED */
diff --git a/ctr.c b/ctr.c
index c6601547fd55094cb9fb338ab420df2a6dee9de7..8c6b462667fa708c748d000fd5e05751ff907a4b 100644
--- a/ctr.c
+++ b/ctr.c
@@ -117,7 +117,7 @@ ctr_crypt(const void *ctx, nettle_cipher_func *f,
 #if USE_CTR_CRYPT16
   if (block_size == 16)
     {
-      _ctr_crypt16(ctx, f, ctr_fill16, ctr, length, dst, src);
+      _nettle_ctr_crypt16(ctx, f, ctr_fill16, ctr, length, dst, src);
       return;
     }
 #endif
diff --git a/ctr16.c b/ctr16.c
index 7e1c23d20832660d1bb8ef1688ca4eff02b9eb34..d744d2a97199455a59d4e4a8ea6130a05309341e 100644
--- a/ctr16.c
+++ b/ctr16.c
@@ -47,10 +47,10 @@
 #define MIN(a,b) (((a) < (b)) ? (a) : (b))
 
 void
-_ctr_crypt16(const void *ctx, nettle_cipher_func *f,
-	     nettle_fill16_func *fill, uint8_t *ctr,
-	     size_t length, uint8_t *dst,
-	     const uint8_t *src)
+_nettle_ctr_crypt16(const void *ctx, nettle_cipher_func *f,
+		    nettle_fill16_func *fill, uint8_t *ctr,
+		    size_t length, uint8_t *dst,
+		    const uint8_t *src)
 {
   if (dst != src && !((uintptr_t) dst % sizeof(uint64_t)))
     {
diff --git a/gcm.c b/gcm.c
index d6d68070f39fef89da216523038ce28839b768cf..d1f21d3a9206f2fd7c947c096ba117fcca079b35 100644
--- a/gcm.c
+++ b/gcm.c
@@ -430,7 +430,7 @@ gcm_encrypt (struct gcm_ctx *ctx, const struct gcm_key *key,
 {
   assert(ctx->data_size % GCM_BLOCK_SIZE == 0);
 
-  _ctr_crypt16(cipher, f, gcm_fill, ctx->ctr.b, length, dst, src);
+  _nettle_ctr_crypt16(cipher, f, gcm_fill, ctx->ctr.b, length, dst, src);
   _nettle_gcm_hash(key, &ctx->x, length, dst);
 
   ctx->data_size += length;
@@ -444,7 +444,7 @@ gcm_decrypt(struct gcm_ctx *ctx, const struct gcm_key *key,
   assert(ctx->data_size % GCM_BLOCK_SIZE == 0);
 
   _nettle_gcm_hash(key, &ctx->x, length, src);
-  _ctr_crypt16(cipher, f, gcm_fill, ctx->ctr.b, length, dst, src);
+  _nettle_ctr_crypt16(cipher, f, gcm_fill, ctx->ctr.b, length, dst, src);
 
   ctx->data_size += length;
 }