diff --git a/contrib/hstore/hstore_gist.c b/contrib/hstore/hstore_gist.c
index 876b4359c6e49b1995c58ecffd0670b1712b3537..54e96fca38eb46188aa20b2c4d38582e48dc4c10 100644
--- a/contrib/hstore/hstore_gist.c
+++ b/contrib/hstore/hstore_gist.c
@@ -6,7 +6,7 @@
 #include "access/gist.h"
 #include "access/skey.h"
 #include "catalog/pg_type.h"
-#include "utils/pg_crc.h"
+#include "common/pg_crc.h"
 
 #include "hstore.h"
 
diff --git a/contrib/ltree/crc32.c b/contrib/ltree/crc32.c
index 1c08d264f720992142503a47a2365fcf8b249fae..9e04037575a48589d187174064c78146f83549df 100644
--- a/contrib/ltree/crc32.c
+++ b/contrib/ltree/crc32.c
@@ -20,7 +20,7 @@
 #define TOLOWER(x)	(x)
 #endif
 
-#include "utils/pg_crc.h"
+#include "common/pg_crc.h"
 #include "crc32.h"
 
 unsigned int
diff --git a/src/backend/utils/adt/tsquery.c b/src/backend/utils/adt/tsquery.c
index 5936c02234570ba3a72e26ac7248033a38c988f4..acabd94f08eee6e0557363494523ecacec318c8b 100644
--- a/src/backend/utils/adt/tsquery.c
+++ b/src/backend/utils/adt/tsquery.c
@@ -14,6 +14,7 @@
 
 #include "postgres.h"
 
+#include "common/pg_crc.h"
 #include "libpq/pqformat.h"
 #include "miscadmin.h"
 #include "tsearch/ts_locale.h"
diff --git a/src/common/Makefile b/src/common/Makefile
index 5f24eb38de9bfd4faf43504493cf94227b1c3ab8..372a21b99dce4b3e172cea61fe5ab0a94d97287d 100644
--- a/src/common/Makefile
+++ b/src/common/Makefile
@@ -23,7 +23,7 @@ include $(top_builddir)/src/Makefile.global
 override CPPFLAGS := -DFRONTEND $(CPPFLAGS)
 LIBS += $(PTHREAD_LIBS)
 
-OBJS_COMMON = exec.o pg_lzcompress.o pgfnames.o psprintf.o relpath.o \
+OBJS_COMMON = exec.o pg_crc.o pg_lzcompress.o pgfnames.o psprintf.o relpath.o \
 	rmtree.o string.o username.o wait_error.o
 
 OBJS_FRONTEND = $(OBJS_COMMON) fe_memutils.o
diff --git a/src/include/utils/pg_crc_tables.h b/src/common/pg_crc.c
similarity index 93%
rename from src/include/utils/pg_crc_tables.h
rename to src/common/pg_crc.c
index 5524fda43a03098f0f1d4abf396e97222aa633ea..faf5a66ad1d635f680ead7e8cc9e9dc6fd54bb9c 100644
--- a/src/include/utils/pg_crc_tables.h
+++ b/src/common/pg_crc.c
@@ -1,32 +1,28 @@
 /*-------------------------------------------------------------------------
  *
- * pg_crc_tables.h
- *	  Polynomial lookup tables for CRC macros
- *
- * We make these tables available as a .h file so that programs not linked
- * with libpgport can still use the macros in pg_crc.h.  They just need
- * to #include this header as well.
+ * pg_crc.c
+ *	  PostgreSQL CRC support
  *
  * See Ross Williams' excellent introduction
  * A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS, available from
  * http://www.ross.net/crc/download/crc_v3.txt or several other net sites.
  *
- * These lookup tables are for normal, not "reflected", in Williams' terms,
- * CRC.
- *
  * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * src/include/utils/pg_crc_tables.h
+ *
+ * IDENTIFICATION
+ *	  src/common/pg_crc.c
  *
  *-------------------------------------------------------------------------
  */
-#ifndef PG_CRC_TABLES_H
-#define PG_CRC_TABLES_H
+
+#include "c.h"
 
 /*
  * This table is based on the so-called Castagnoli polynomial (the same
- * that is used e.g. in iSCSI).
+ * that is used e.g. in iSCSI).  It is for normal, not "reflected", in
+ * Williams' terms, CRC.
  */
 const uint32 pg_crc32c_table[256] = {
 	0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4,
@@ -100,6 +96,7 @@ const uint32 pg_crc32c_table[256] = {
  * This table is based on the polynomial
  *	x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
  * (This is the same polynomial used in Ethernet checksums, for instance.)
+ * It is for normal, not "reflected", in Williams' terms, CRC.
  */
 const uint32 pg_crc32_table[256] = {
 	0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
@@ -167,5 +164,3 @@ const uint32 pg_crc32_table[256] = {
 	0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
 	0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
 };
-
-#endif   /* PG_CRC_TABLES_H */
diff --git a/src/include/access/xlogrecord.h b/src/include/access/xlogrecord.h
index ff77db803795240f0f315ae2fc3da8134beab07b..25a92657b852859e8f78c057640131cbeb21e569 100644
--- a/src/include/access/xlogrecord.h
+++ b/src/include/access/xlogrecord.h
@@ -13,9 +13,9 @@
 
 #include "access/rmgr.h"
 #include "access/xlogdefs.h"
+#include "common/pg_crc.h"
 #include "storage/block.h"
 #include "storage/relfilenode.h"
-#include "utils/pg_crc.h"
 
 /*
  * The overall layout of an XLOG record is:
diff --git a/src/include/catalog/pg_control.h b/src/include/catalog/pg_control.h
index cd6ae4083df9cdbf7d2893acf166cf65f03690c9..31232b13c5e6d7d86266603764ee30a7e7503642 100644
--- a/src/include/catalog/pg_control.h
+++ b/src/include/catalog/pg_control.h
@@ -16,8 +16,8 @@
 #define PG_CONTROL_H
 
 #include "access/xlogdefs.h"
+#include "common/pg_crc.h"
 #include "pgtime.h"				/* for pg_time_t */
-#include "utils/pg_crc.h"
 
 
 /* Version identifier for this pg_control format */
diff --git a/src/include/utils/pg_crc.h b/src/include/common/pg_crc.h
similarity index 99%
rename from src/include/utils/pg_crc.h
rename to src/include/common/pg_crc.h
index 9bbd6d25ec3a22a8ddf35a6af07fb401f73540d2..ea03dbf8403c9bc2aeddb782876f7146acf3b28f 100644
--- a/src/include/utils/pg_crc.h
+++ b/src/include/common/pg_crc.h
@@ -27,7 +27,7 @@
  * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * src/include/utils/pg_crc.h
+ * src/include/common/pg_crc.h
  */
 #ifndef PG_CRC_H
 #define PG_CRC_H
diff --git a/src/include/tsearch/ts_type.h b/src/include/tsearch/ts_type.h
index ae158fad0dab46a7dcc8b279daf4f0089b6f61b7..1cdfa82fb07eee2e26523401130d7e7dc4f89073 100644
--- a/src/include/tsearch/ts_type.h
+++ b/src/include/tsearch/ts_type.h
@@ -14,7 +14,6 @@
 
 #include "fmgr.h"
 #include "utils/memutils.h"
-#include "utils/pg_crc.h"
 
 
 /*
diff --git a/src/port/Makefile b/src/port/Makefile
index 1be4ff57a2f5fc46dba49c247dbd68532388cfe2..a0908bf5e3d45a82ca2b4b60f23bad978cdbf7f4 100644
--- a/src/port/Makefile
+++ b/src/port/Makefile
@@ -31,7 +31,7 @@ override CPPFLAGS := -I$(top_builddir)/src/port -DFRONTEND $(CPPFLAGS)
 LIBS += $(PTHREAD_LIBS)
 
 OBJS = $(LIBOBJS) chklocale.o dirmod.o erand48.o fls.o inet_net_ntop.o \
-	noblock.o path.o pgcheckdir.o pg_crc.o pgmkdirp.o pgsleep.o \
+	noblock.o path.o pgcheckdir.o pgmkdirp.o pgsleep.o \
 	pgstrcasecmp.o pqsignal.o \
 	qsort.o qsort_arg.o quotes.o sprompt.o tar.o thread.o
 
diff --git a/src/port/pg_crc.c b/src/port/pg_crc.c
deleted file mode 100644
index b944be10a7c2b11b401c3c0dcfdbf02e5e7630cb..0000000000000000000000000000000000000000
--- a/src/port/pg_crc.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * pg_crc.c
- *	  PostgreSQL CRC support
- *
- * This file simply #includes the CRC table definitions so that they are
- * available to programs linked with libpgport.
- *
- * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- *	  src/port/pg_crc.c
- *
- *-------------------------------------------------------------------------
- */
-
-#include "c.h"
-
-#include "utils/pg_crc_tables.h"