diff --git a/doc/src/sgml/ref/pgupgrade.sgml b/doc/src/sgml/ref/pgupgrade.sgml
index a83c63cd98..7352936a94 100644
--- a/doc/src/sgml/ref/pgupgrade.sgml
+++ b/doc/src/sgml/ref/pgupgrade.sgml
@@ -299,15 +299,18 @@ make prefix=/usr/local/pgsql.new install
    </step>
 
    <step>
-    <title>Install custom shared object files</title>
+    <title>Install extension shared object files</title>
 
     <para>
-     Install any custom shared object files (or DLLs) used by the old cluster
-     into the new cluster, e.g., <filename>pgcrypto.so</filename>,
-     whether they are from <filename>contrib</filename>
-     or some other source. Do not install the schema definitions, e.g.,
-     <command>CREATE EXTENSION pgcrypto</command>, because these will be upgraded
-     from the old cluster.
+     If the old cluster used extensions, whether from
+     <filename>contrib</filename> or some other source, it used
+     shared object files (or DLLs) to implement these extensions, e.g.,
+     <filename>pgcrypto.so</filename>.  Now, shared object files matching
+     the new server binary must be installed in the new cluster, usually
+     via operating system commands.  Do not load the schema definitions,
+     e.g., <command>CREATE EXTENSION pgcrypto</command>, because these
+     will be recreated from the old cluster.  (The extensions may be
+     upgraded later using <literal>ALTER EXTENSION ... UPGRADE</literal>.)
      Also, any custom full text search files (dictionary, synonym,
      thesaurus, stop words) must also be copied to the new cluster.
     </para>
@@ -494,10 +497,10 @@ pg_upgrade.exe
      </step>
 
      <step>
-      <title>Install custom shared object files</title>
+      <title>Install extension shared object files</title>
 
       <para>
-       Install the same custom shared object files on the new standbys
+       Install the same extension shared object files on the new standbys
        that you installed in the new primary cluster.
       </para>
      </step>
