File 0603-otp-Fix-a-bunch-of-links-and-function-references.patch of Package erlang

From 5c986902fdfc7c4f1ef093768547615146a0f95f Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Mon, 9 Oct 2023 15:40:37 +0200
Subject: [PATCH 03/13] otp: Fix a bunch of links and function references

---
 erts/doc/src/erlang.xml                        |  3 +--
 erts/doc/src/persistent_term.xml               |  4 ++--
 lib/common_test/doc/src/write_test_chapter.xml |  3 ++-
 lib/crypto/doc/src/crypto_app.xml              |  4 ++--
 lib/debugger/doc/src/debugger_chapter.xml      |  2 +-
 lib/erl_docgen/priv/bin/validate_links.escript |  3 ++-
 lib/erl_docgen/priv/xsl/db_html.xsl            |  5 +++--
 lib/et/doc/src/et_desc.xmlsrc                  |  2 +-
 lib/et/doc/src/et_intro.xml                    |  2 +-
 lib/kernel/doc/src/logger_cookbook.xml         |  4 ++--
 lib/kernel/doc/src/rpc.xml                     |  6 +++---
 lib/observer/doc/src/ttb.xml                   |  2 +-
 lib/observer/doc/src/ttb_ug.xml                | 15 ++++++++-------
 lib/snmp/doc/src/snmpc.xml                     |  2 +-
 lib/ssh/doc/src/hardening.xml                  | 12 ++++++------
 lib/ssh/doc/src/ssh.xml                        | 10 +++++-----
 lib/ssh/doc/src/ssh_sftp.xml                   |  2 +-
 lib/ssh/doc/src/using_ssh.xml                  |  2 +-
 lib/stdlib/doc/src/ets.xml                     |  4 ++--
 lib/stdlib/doc/src/gen_event.xml               |  6 +++---
 lib/stdlib/doc/src/proc_lib.xml                |  2 +-
 lib/stdlib/doc/src/qlc.xml                     |  6 ++++--
 lib/stdlib/doc/src/rand.xml                    | 18 ++++++++----------
 lib/stdlib/doc/src/sys.xml                     |  5 ++---
 .../doc/design_principles/release_handling.xml |  4 ++--
 system/doc/embedded/embedded_solaris.xml       |  4 ++--
 .../upcoming_incompatibilities.xml             |  1 -
 27 files changed, 67 insertions(+), 66 deletions(-)

diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml
index 54da652bb7..101016dea4 100644
--- a/erts/doc/src/erlang.xml
+++ b/erts/doc/src/erlang.xml
@@ -44,7 +44,7 @@
       BIFs listed with module prefix are not auto-imported.</p>
 
     <p>Predefined types are listed in the
-      <seeerl marker="#Predefined datatypes">Predefined datatypes</seeerl>
+      <seeerl marker="#predefined-datatypes">Predefined datatypes</seeerl>
       section of this reference manual and in the
       <seeguide marker="system/reference_manual:typespec">Types and Function Specifications</seeguide>
       section of the Erlang Reference Manual.</p>
diff --git a/erts/doc/src/persistent_term.xml b/erts/doc/src/persistent_term.xml
index c2e967b694..efebf1dd94 100644
--- a/erts/doc/src/persistent_term.xml
+++ b/erts/doc/src/persistent_term.xml
@@ -211,7 +211,7 @@
 	<p>If there existed a previous persistent term associated with
 	key <c><anno>Key</anno></c>, a global GC has been initiated
 	when <c>erase/1</c> returns. See <seeerl
-	marker="#description">Description</seeerl>.</p>
+	marker="persistent_term">Description</seeerl>.</p>
       </desc>
     </func>
 
@@ -286,7 +286,7 @@
 	<p>If there existed a previous persistent term associated with
 	key <c><anno>Key</anno></c>, a global GC has been initiated
 	when <c>put/2</c> returns. See <seeerl
-	marker="#description">Description</seeerl>.</p>
+	marker="persistent_term">Description</seeerl>.</p>
       </desc>
     </func>
   </funcs>
diff --git a/lib/common_test/doc/src/write_test_chapter.xml b/lib/common_test/doc/src/write_test_chapter.xml
index 6063127bf0..1a2cbe6d2f 100644
--- a/lib/common_test/doc/src/write_test_chapter.xml
+++ b/lib/common_test/doc/src/write_test_chapter.xml
@@ -672,7 +672,8 @@
       <c>init_per_suite</c> process. This group leader is the central I/O server
       process mentioned earlier. If, at a later time, <em>during parallel test case
       execution</em>, some event triggers process <c>P</c> to call
-      <c>io:format/1/2</c>, that call never returns (as the group leader
+      <seemfa marker="stdlib:io#format/1"><c>io:format/1/2</c></seemfa>,
+      that call never returns (as the group leader
       is in a non-responsive state) and causes <c>P</c> to hang.
     </p>
   </section>
diff --git a/lib/crypto/doc/src/crypto_app.xml b/lib/crypto/doc/src/crypto_app.xml
index 249841d851..86ae6e654d 100644
--- a/lib/crypto/doc/src/crypto_app.xml
+++ b/lib/crypto/doc/src/crypto_app.xml
@@ -62,8 +62,8 @@
   <section>
     <title>CONFIGURATION</title>
     <p>The following configuration parameters are defined for the
-    crypto application. See <c>app(3)</c> for more information about
-    configuration parameters.</p>
+      crypto application. See <seefile marker="kernel:app"><c>app(3)</c></seefile>
+      for more information about configuration parameters.</p>
     <taglist>
       <tag><c>fips_mode = boolean()</c></tag>
       <item>
diff --git a/lib/debugger/doc/src/debugger_chapter.xml b/lib/debugger/doc/src/debugger_chapter.xml
index fb8f5dfbfe..1c15218aff 100644
--- a/lib/debugger/doc/src/debugger_chapter.xml
+++ b/lib/debugger/doc/src/debugger_chapter.xml
@@ -531,7 +531,7 @@ c_break(Bindings) ->
 	  Does not affect existing debugged processes.</p>
 	  <list type="bulleted">
 	    <item><p><em>Use range of +pc flag</em> - Uses the printable
-	      character range set by the <c>erl(1)</c> flag
+	      character range set by the <seecom marker="erts:erl"><c>erl(1)</c></seecom> flag
 	      <seecom marker="erts:erl#printable_character_range"><c>+pc</c></seecom>.</p>
 	    </item>
 	  </list>
diff --git a/lib/erl_docgen/priv/bin/validate_links.escript b/lib/erl_docgen/priv/bin/validate_links.escript
index d1bccfa3fc..e83a0f5dd4 100755
--- a/lib/erl_docgen/priv/bin/validate_links.escript
+++ b/lib/erl_docgen/priv/bin/validate_links.escript
@@ -120,7 +120,8 @@ event({startElement, "datatype_title", []}, _Line, State, _) ->
     error = maps:find(characters,State),
     maps:put(characters,[],State);
 event({endElement, "datatype_title"}, _Line, State, _) ->
-    Id = lists:flatten(maps:get(characters,State)),
+    Id = string:lowercase(
+           re:replace(maps:get(characters,State),"[?: /()\"\r\n]","-",[global,{return,list}])),
     NewState = maps:put(markers, [Id|maps:get(markers, State, [])], State),
     maps:remove(characters,NewState);
 event({startElement, "description", _}, _Line, State, _) ->
diff --git a/lib/erl_docgen/priv/xsl/db_html.xsl b/lib/erl_docgen/priv/xsl/db_html.xsl
index 77b301347a..de475d5cf2 100644
--- a/lib/erl_docgen/priv/xsl/db_html.xsl
+++ b/lib/erl_docgen/priv/xsl/db_html.xsl
@@ -506,7 +506,7 @@
     <xsl:variable name="title" select="."/>
     <xsl:call-template name="title_link">
       <xsl:with-param name="title"><xsl:apply-templates/></xsl:with-param>
-      <xsl:with-param name="link" select="$title"/>
+      <xsl:with-param name="link" select="erl:to-link($title)"/>
     </xsl:call-template>
   </xsl:template>
 
@@ -1198,8 +1198,9 @@
   <xsl:template match="erlref/section/section|cref/section/section|comref/section/section|fileref/section/section|appref/section/section">
     <xsl:param name="chapnum"/>
     <xsl:param name="sectnum"/>
+    <xsl:param name="link" select="erl:to-link(title)"/>
     <section>
-      <h4 id="{title}">
+      <h4 id="{link}">
         <xsl:value-of select="title"/>
       </h4>
       <div class="REFBODY rb-4">
diff --git a/lib/et/doc/src/et_desc.xmlsrc b/lib/et/doc/src/et_desc.xmlsrc
index a1f9546db2..4d4540561d 100644
--- a/lib/et/doc/src/et_desc.xmlsrc
+++ b/lib/et/doc/src/et_desc.xmlsrc
@@ -267,7 +267,7 @@ ok]]></code>
         system by making use of the built-in trace support in the
         Erlang emulator. These Erlang traces can be directed to files
         or to ports. See the reference manual for
-        <c>erlang:trace/4</c>, <c>erlang:trace_pattern/3</c>,
+        <c>erlang:trace/3</c>, <c>erlang:trace_pattern/3</c>,
         <c>dbg</c> and <c>ttb</c> for more info.</p>
 
         <p>There are also corresponding trace client types that can
diff --git a/lib/et/doc/src/et_intro.xml b/lib/et/doc/src/et_intro.xml
index ae5bd7ffe2..182aae9b10 100644
--- a/lib/et/doc/src/et_intro.xml
+++ b/lib/et/doc/src/et_intro.xml
@@ -106,7 +106,7 @@
       </item>
 
       <item>
-        <p>documentation of basic tracing in <c>erlang:trace/4</c> and
+        <p>documentation of basic tracing in <c>erlang:trace/3</c> and
         <c>erlang:trace_pattern/3</c> and then the utilities derived
         from these: <c>dbg</c>, <c>observer</c>, <c>invisio</c> and
         <c>et</c>.</p>
diff --git a/lib/kernel/doc/src/logger_cookbook.xml b/lib/kernel/doc/src/logger_cookbook.xml
index fc6b0202b6..c16372251c 100644
--- a/lib/kernel/doc/src/logger_cookbook.xml
+++ b/lib/kernel/doc/src/logger_cookbook.xml
@@ -226,7 +226,7 @@ $ cat log/erlang.log
       <section>
         <title>See also</title>
         <list>
-          <item><seeerl marker="logger_std_h#description">logger_std_h&apos;s Description</seeerl></item>
+          <item><seeerl marker="logger_std_h">logger_std_h</seeerl></item>
           <item><seeguide marker="logger_chapter#handlers">Handlers</seeguide> in the Logging User&apos;s Guide</item>
         </list>
       </section>
@@ -280,7 +280,7 @@ ok
     <section>
       <title>See also</title>
         <list>
-          <item><seeerl marker="logger_std_h#description">logger_std_h&apos;s Description</seeerl></item>
+          <item><seeerl marker="logger_std_h">logger_std_h</seeerl></item>
           <item><seeguide marker="logger_chapter#filters">Filters</seeguide> in the Logging User&apos;s Guide</item>
         </list>
       </section>
diff --git a/lib/kernel/doc/src/rpc.xml b/lib/kernel/doc/src/rpc.xml
index c5b110f2e5..d7b3ee7013 100644
--- a/lib/kernel/doc/src/rpc.xml
+++ b/lib/kernel/doc/src/rpc.xml
@@ -38,7 +38,7 @@
       for collecting information on a remote node, or for running a
       function with some specific side effects on the remote node.</p>
       <note><p>
-	<c>rpc:call()</c> and friends makes it quite hard to distinguish
+	<c>rpc:call/4</c> and friends makes it quite hard to distinguish
 	between successful results, raised exceptions, and other errors.
 	This cannot be changed due to compatibility reasons. As of OTP 23,
 	a new module <seeerl marker="erpc"><c>erpc</c></seeerl> was
@@ -161,13 +161,13 @@
 	    <seemfa marker="#call/5"><c>rpc:call(<anno>Node</anno>,
 	    <anno>Module</anno>, <anno>Function</anno>,
 	    <anno>Args</anno>, <anno>Timeout</anno>)</c></seemfa> with
-	    the exception that it also blocks other <c>rpc:block_call()</c>
+	    the exception that it also blocks other <c>rpc:block_call/5</c>
 	    operations from executing concurrently on the node
 	    <c><anno>Node</anno></c>.
 	  </p>
 	  <warning><p>
 	    Note that it also blocks other operations than just
-	    <c>rpc:block_call()</c> operations, so use it with care.
+	    <c>rpc:block_call/5</c> operations, so use it with care.
 	  </p></warning>
       </desc>
     </func>
diff --git a/lib/observer/doc/src/ttb.xml b/lib/observer/doc/src/ttb.xml
index ab7b138762..02de068cdc 100644
--- a/lib/observer/doc/src/ttb.xml
+++ b/lib/observer/doc/src/ttb.xml
@@ -179,7 +179,7 @@ ttb:p(all, call).</input></pre>
        <tag><c>timer</c></tag>
        <item><p>Indicates that the trace is to be
           automatically stopped after <c>MSec</c> milliseconds. <c>StopOpts</c>
-          are passed to command <c>ttb:stop/2</c> if specified (default is <c>[]</c>).
+          are passed to command <c>ttb:stop/1</c> if specified (default is <c>[]</c>).
           Notice that the timing is approximate, as delays related to
           network communication are always present. The timer starts after
           <c>ttb:p/2</c> is issued, so you can set up your trace patterns before.</p></item>
diff --git a/lib/observer/doc/src/ttb_ug.xml b/lib/observer/doc/src/ttb_ug.xml
index 0411694c4e..982b2f3534 100644
--- a/lib/observer/doc/src/ttb_ug.xml
+++ b/lib/observer/doc/src/ttb_ug.xml
@@ -75,16 +75,17 @@
       </p>
       <p><em>Useful functions:</em></p>
       <taglist>
-       <tag><c>ttb:tracer/0,1,2</c></tag>
+       <tag><seemfa marker="ttb#tracer/0"><c>ttb:tracer/0,1,2</c></seemfa></tag>
        <item><p>Opens a trace port on each node to be traced. By default, 
        trace messages are written to binary files on remote nodes (the 
        binary trace log).</p></item>
-       <tag><c>ttb:p/2</c></tag>
+       <tag><seemfa marker="ttb#p/2"><c>ttb:p/2</c></seemfa></tag>
        <item><p>Specifies the processes to be traced. Trace flags specified 
        in this call specify what to trace on each process. This function can be 
        called many times if you like different trace flags to be set on different 
        processes.</p></item>
-       <tag><c>ttb:tp/2,3,4</c> or <c>ttb:tpl/2,3,4</c></tag>
+       <tag><seemfa marker="ttb#tp/2"><c>ttb:tp/2,3,4</c></seemfa> or
+         <seemfa marker="ttb#tpl/2"><c>ttb:tpl/2,3,4</c></seemfa></tag>
        <item><p>If you want to trace function calls (that is, if you have
       trace flag <c>call</c> set on any process), you must
       also set trace patterns on the required function(s) with
@@ -95,10 +96,10 @@
       function by using match specifications. Match specifications are
       described in the 
       <seeguide marker="erts:index">ERTS User's Guide</seeguide>.</p></item>
-       <tag><c>ttb:stop/0,1</c></tag>
+       <tag><seemfa marker="ttb#stop/0"><c>ttb:stop/0,1</c></seemfa></tag>
        <item><p>Stops tracing on all nodes, deletes all trace patterns, and 
        flushes the trace port buffer.</p></item>
-       <tag><c>ttb:format/1/2</c></tag>
+       <tag><seemfa marker="ttb#format/1"><c>ttb:format/1/2</c></seemfa></tag>
        <item><p>Translates the binary trace logs into something readable. 
        By default, <c>ttb</c> presents each trace message as a line of text, 
        but you can also write your own handler to make more complex interpretations 
@@ -342,12 +343,12 @@ do_print(Out,{trace_ts,P,return_from,{M,F,A},R,Ts},N) ->
             <c>true</c>, tracing is disabled on the selected node.</p>
           <p>Overload protection activated on one node does not
             affect other nodes, where the tracing continues as normal.
-            <c>ttb:stop/0,1</c> fetches data from all clients, including everything
+            <c>ttb:stop/0</c> fetches data from all clients, including everything
             collected before the activation of overload protection.</p>
 
 	  <note><p>
             It is not allowed to change trace details 
-	    (with <c>ttb:p</c> and <c>ttb:tp/tpl...</c>) once overload 
+	    (with <c>ttb:p/2</c> and <c>ttb:tp/tpl...</c>) once overload 
 	    protection is activated in one of the traced nodes. This is to 
 	    avoid trace setup being inconsistent between nodes.</p></note>
 
diff --git a/lib/snmp/doc/src/snmpc.xml b/lib/snmp/doc/src/snmpc.xml
index 2d208ba5d8..2651f5b128 100644
--- a/lib/snmp/doc/src/snmpc.xml
+++ b/lib/snmp/doc/src/snmpc.xml
@@ -228,7 +228,7 @@
           <c>group_check</c>, <c>deprecated</c>, <c>description</c>,
           <c>verbosity</c>, <c>imports</c> and <c>module_identity</c>
           have to be specified to <c>erlc</c> using the syntax 
-          <c>+term</c>.  See <c>erlc(1)</c> for details.
+          <c>+term</c>. See <seecom marker="erts:erlc"><c>erlc(1)</c></seecom> for details.
           </p>
 
 	  <marker id="is_consistent"></marker>
diff --git a/lib/ssh/doc/src/hardening.xml b/lib/ssh/doc/src/hardening.xml
index cc530ace0e..1aa10624e9 100644
--- a/lib/ssh/doc/src/hardening.xml
+++ b/lib/ssh/doc/src/hardening.xml
@@ -62,22 +62,22 @@
     <section>
       <title>Counters and parallelism</title>
       <taglist>
-	<tag><seeerl marker="ssh#hardening_daemon_options--max_sessions">max_sessions</seeerl></tag>
+	<tag><seeerl marker="ssh#hardening_daemon_options-max_sessions">max_sessions</seeerl></tag>
 	<item>
 	  The maximum number of simultaneous sessions that are accepted at any time for this daemon.
 	  This includes sessions that are being authorized. The default is that an unlimited number of
 	  simultaneous sessions are allowed. It is a good candidate to set if the capacity of the server
 	  is low or a capacity margin is needed.
 	</item>
-	<tag><seeerl marker="ssh#hardening_daemon_options--max_channels">max_channels</seeerl></tag>
+	<tag><seeerl marker="ssh#hardening_daemon_options-max_channels">max_channels</seeerl></tag>
 	<item>
 	  The maximum number of channels that are accepted for each connection. The default is unlimited.
 	</item>
-	<tag><seeerl marker="ssh#hardening_daemon_options--parallel_login">parallel_login</seeerl></tag>
+	<tag><seeerl marker="ssh#hardening_daemon_options-parallel_login">parallel_login</seeerl></tag>
 	<item>
 	  If set to false (the default value), only one login is handled at a time.
 	  If set to true, the number of simultaneous login attempts are limited by the value of the
-	  <seeerl marker="ssh#hardening_daemon_options--max_sessions">max_sessions</seeerl> option.
+	  <seeerl marker="ssh#hardening_daemon_options-max_sessions">max_sessions</seeerl> option.
 	</item>
       </taglist>
     </section>
@@ -140,7 +140,7 @@
 	  <item>
 	    For the default handler ssh_file, store the valid host keys in the file
 	    <seeerl marker="ssh_file#FILE-known_hosts"><c>known_hosts</c></seeerl> and set the option
-	    <seeerl marker="ssh#hardening_client_options--silently_accept_hosts">silently_accept_hosts</seeerl>
+	    <seeerl marker="ssh#hardening_client_options-silently_accept_hosts">silently_accept_hosts</seeerl>
 	    to <c>false</c>.
 	  </item>
 	  <item>or, write a specialized key handler using the <seeerl marker="ssh_client_key_api">SSH client key API</seeerl>
@@ -153,7 +153,7 @@
       <item>
 	<list>
 	  <item>
-	    <seeerl marker="ssh#hardening_client_options--silently_accept_hosts">silently_accept_hosts</seeerl>
+	    <seeerl marker="ssh#hardening_client_options-silently_accept_hosts">silently_accept_hosts</seeerl>
 	    <list>
 	      <item><seetype marker="ssh#accept_callback"><c>accept_callback()</c></seetype></item>
 	      <item><seetype marker="ssh#accept_hosts"><c>{HashAlgoSpec, accept_callback()}</c></seetype></item>
diff --git a/lib/ssh/doc/src/ssh.xml b/lib/ssh/doc/src/ssh.xml
index 7d3dfe2a51..2266b5f3e2 100644
--- a/lib/ssh/doc/src/ssh.xml
+++ b/lib/ssh/doc/src/ssh.xml
@@ -202,7 +202,7 @@
       <desc>
 	<taglist>
           <tag>
-	    <marker id="hardening_client_options--silently_accept_hosts"/>
+	    <marker id="hardening_client_options-silently_accept_hosts"/>
 	    <c>silently_accept_hosts</c>
 	  </tag>
 	  <item>
@@ -771,7 +771,7 @@
 	</p>
 	<taglist>
 	  <tag>
-	    <marker id="hardening_daemon_options--max_sessions"/>
+	    <marker id="hardening_daemon_options-max_sessions"/>
 	    <c>max_sessions</c>
 	  </tag>
 	  <item>
@@ -794,7 +794,7 @@
 	  </item>
 	
 	  <tag>
-	    <marker id="hardening_daemon_options--max_channels"/>
+	    <marker id="hardening_daemon_options-max_channels"/>
 	    <c>max_channels</c>
 	  </tag>
 	  <item>
@@ -805,7 +805,7 @@
 	  </item>
 
 	  <tag>
-	    <marker id="hardening_daemon_options--parallel_login"/>
+	    <marker id="hardening_daemon_options-parallel_login"/>
 	    <c>parallel_login</c>
 	  </tag>
 	  <item>
@@ -825,7 +825,7 @@
 	  </item>
 
 	  <tag>
-	    <marker id="hardening_daemon_options--minimal_remote_max_packet_size"/>
+	    <marker id="hardening_daemon_options-minimal_remote_max_packet_size"/>
 	    <c>minimal_remote_max_packet_size</c>
 	  </tag>
 	  <item>
diff --git a/lib/ssh/doc/src/ssh_sftp.xml b/lib/ssh/doc/src/ssh_sftp.xml
index 08aeee6796..29ecfc0456 100644
--- a/lib/ssh/doc/src/ssh_sftp.xml
+++ b/lib/ssh/doc/src/ssh_sftp.xml
@@ -293,7 +293,7 @@
 	in the ssh Users Guide.
 	</p>
 	<p>The <c>crypto</c> mode option is explained in the data types section above, see
-	<seeerl marker="#Crypto operations for open_tar">Crypto operations for open_tar</seeerl>.
+	<seeerl marker="#crypto-operations-for-open_tar">Crypto operations for open_tar</seeerl>.
 	Encryption is assumed if the <c>Mode</c> contains <c>write</c>, and
 	decryption if the <c>Mode</c> contains <c>read</c>.
 	</p>
diff --git a/lib/ssh/doc/src/using_ssh.xml b/lib/ssh/doc/src/using_ssh.xml
index 648b59ab23..2d8ad272f2 100644
--- a/lib/ssh/doc/src/using_ssh.xml
+++ b/lib/ssh/doc/src/using_ssh.xml
@@ -172,7 +172,7 @@ ok
 {channels,[]}
 7></pre>
 
-    <p>See <seeerl marker="ssh_connection#description">ssh_connection</seeerl> and
+    <p>See <seeerl marker="ssh_connection">ssh_connection</seeerl> and
     <seemfa marker="ssh_connection#exec/4">ssh_connection:exec/4</seemfa>
     for finding documentation of the channel messages.</p>
 
diff --git a/lib/stdlib/doc/src/ets.xml b/lib/stdlib/doc/src/ets.xml
index cc9eb6d4a9..792127131d 100644
--- a/lib/stdlib/doc/src/ets.xml
+++ b/lib/stdlib/doc/src/ets.xml
@@ -1179,7 +1179,7 @@ Error: fun containing local Erlang function calls
         <note>
           <p>This function has limited use in normal code. It is used by the
             <seeerl marker="dets"><c>dets</c></seeerl> module
-            to perform the <c>dets:select()</c> operations.</p>
+            to perform the <c>dets:select/1</c> operations.</p>
         </note>
       </desc>
     </func>
@@ -1215,7 +1215,7 @@ ets:select(Table, MatchSpec),</code>
         <note>
           <p>This function has limited use in normal code. It is used by the
             <seeerl marker="dets"><c>dets</c></seeerl> module
-            to perform the <c>dets:select()</c> operations and by
+            to perform the <c>dets:select/1</c> operations and by
             Mnesia during transactions.</p>
         </note>
       </desc>
diff --git a/lib/stdlib/doc/src/gen_event.xml b/lib/stdlib/doc/src/gen_event.xml
index 3c45eb94ec..bfe1d9b6d6 100644
--- a/lib/stdlib/doc/src/gen_event.xml
+++ b/lib/stdlib/doc/src/gen_event.xml
@@ -598,7 +598,7 @@ gen_event:stop             ----->  Module:terminate/2
 	</p>
 	<p>
 	  The return value <c>Reply</c> is defined in the return value
-	  of <c>Module:handle_call/3</c>.
+	  of <c>Module:handle_call/2</c>.
 	</p>
 	<p>
 	  If the specified event handler is not
@@ -810,7 +810,7 @@ gen_event:stop             ----->  Module:terminate/2
 	</p>
         <p>
 	  <c>Request</c> is any term that is passed as one of
-          the arguments to <c>Module:handle_call/3</c>.
+          the arguments to <c>Module:handle_call/2</c>.
 	</p>
       </desc>
     </func>
@@ -1147,7 +1147,7 @@ gen_event:stop             ----->  Module:terminate/2
 	</p>
 	<p>
 	  The return value <c>Reply</c> is defined in the return value
-	  of <c>Module:handle_call/3</c>.
+	  of <c>Module:handle_call/2</c>.
 	</p>
 	<p>
 	  If the specified event handler is not
diff --git a/lib/stdlib/doc/src/qlc.xml b/lib/stdlib/doc/src/qlc.xml
index 51a94fea28..42a664c6e0 100644
--- a/lib/stdlib/doc/src/qlc.xml
+++ b/lib/stdlib/doc/src/qlc.xml
@@ -391,7 +391,8 @@ R.]]></code>
     <p>If <c>QH2</c> is a call to the function for
       <seeerl marker="gb_trees"><c>gb_trees</c></seeerl>, as defined
       in section <seeerl marker="#implementing_a_qlc_table">Implementing
-      a QLC Table</seeerl>, then <c>gb_table:table/1</c>, the
+      a QLC Table</seeerl>, then <seeerl marker="#gb_table"><c>gb_table:table/1</c>
+      </seeerl>, the
       iterator for the gb-tree is initiated for each answer to
       <c>QH1</c>. The objects of the gb-tree are then returned one
       by one. This is probably the most efficient way of traversing
@@ -452,6 +453,7 @@ R.]]></code>
       how to use function <seemfa marker="#table/2"><c>table/2</c></seemfa>,
       the implementation of a QLC table for the <seeerl
       marker="gb_trees"><c>gb_trees</c></seeerl> module is given:</p>
+      <marker id="gb_table"/>
 
     <code type="none">
 <![CDATA[-module(gb_table).
@@ -1294,7 +1296,7 @@ ets:match_spec_run(
               <item>
                 <p>Other modules can provide a nullary
                   <c><anno>TraverseFun</anno></c>. An example is
-                  <c>gb_table:table/1</c> in section
+                  <seeerl marker="#gb_table"><c>gb_table:table/1</c></seeerl> in section
                   <seeerl marker="#implementing_a_qlc_table">Implementing a
                   QLC Table</seeerl>.</p>
               </item>
diff --git a/lib/stdlib/doc/src/rand.xml b/lib/stdlib/doc/src/rand.xml
index fb8075cb32..ce464fcae4 100644
--- a/lib/stdlib/doc/src/rand.xml
+++ b/lib/stdlib/doc/src/rand.xml
@@ -60,11 +60,11 @@
 
     <p>
       At the end of this module documentation there are also some
-      <seeerl marker="#niche_algorithms">
+      <seeerl marker="#niche-algorithms-api">
         niche algorithms
       </seeerl>
       to be used without this module's normal
-      <seeerl marker="#plug_in_api">
+      <seeerl marker="#plug-in-framework-api">
         plug-in framework API
       </seeerl>
       that may be useful for special purposes like
@@ -417,7 +417,6 @@ tests. We suggest to use a sign test to extract a random Boolean value.</pre>
 
   <funcs>
     <fsdescription>
-      <marker id="plug_in_api"/>
       <title>Plug-in framework API</title>
     </fsdescription>
     <func>
@@ -804,12 +803,11 @@ end.</pre>
 
   <funcs>
     <fsdescription>
-      <marker id="niche_algorithms"/>
       <title>Niche algorithms API</title>
       <p>
         This section contains special purpose algorithms
         that does not use the
-        <seeerl marker="#plug_in_api">plug-in framework API</seeerl>,
+        <seeerl marker="#plug-in-framework-api">plug-in framework API</seeerl>,
         for example for speed reasons.
       </p>
       <p>
@@ -1031,7 +1029,7 @@ end.</pre>
             It is easy to accidentally mess up the fairly good
             statistical properties of this generator when doing either.
             See the recepies at the start of this
-            <seeerl marker="#niche_algorithms">
+            <seeerl marker="#niche-algorithms-api">
               Niche algorithms API
             </seeerl>
             description.
@@ -1115,7 +1113,7 @@ end.</pre>
           or bit mask extracting the lowest bits to produce numbers
           in a range 16 bits or less.
           See the recepies at the start of this
-          <seeerl marker="#niche_algorithms">
+          <seeerl marker="#niche-algorithms-api">
             Niche algorithms API
           </seeerl>
           description.
@@ -1124,7 +1122,7 @@ end.</pre>
           On a typical 64 bit Erlang VM this generator executes
           in below 8% (1/13) of the time
           for the default algorithm in the
-          <seeerl marker="#plug_in_api">
+          <seeerl marker="#plug-in-framework-api">
             plug-in framework API
           </seeerl>
           of this module.  With the
@@ -1182,7 +1180,7 @@ end.</pre>
           of your generated values.
           Therefore it is in general safer to shift out low bits.
           See the recepies at the start of this
-          <seeerl marker="#niche_algorithms">
+          <seeerl marker="#niche-algorithms-api">
             Niche algorithms API
           </seeerl>
           description.
@@ -1217,7 +1215,7 @@ end.</pre>
           It is in general general better to use the high bits
           from this scrambler than the low.
           See the recepies at the start of this
-          <seeerl marker="#niche_algorithms">
+          <seeerl marker="#niche-algorithms-api">
             Niche algorithms API
           </seeerl>
           description.
diff --git a/lib/stdlib/doc/src/sys.xml b/lib/stdlib/doc/src/sys.xml
index 1aea4ba0dc..5b6c61d273 100644
--- a/lib/stdlib/doc/src/sys.xml
+++ b/lib/stdlib/doc/src/sys.xml
@@ -392,7 +392,7 @@
           <c>Class</c> and <c>Reason</c> indicate details of the exception.</p>
         <p>Function <c>system_get_state/1</c> is primarily useful for
           user-defined behaviors and modules that implement OTP
-          <seeerl marker="#special_process">special processes</seeerl>. 
+          <seeerl marker="#process-implementation-functions">special processes</seeerl>.
           The <c>gen_server</c>,
 	  <c>gen_statem</c>, and <c>gen_event</c> OTP
           behavior modules export this function, so callback modules for those
@@ -619,7 +619,7 @@
           <c>{callback_failed, StateFun, {Class, Reason}}</c>.</p>
         <p>Function <c>system_replace_state/2</c> is primarily useful for
           user-defined behaviors and modules that implement OTP
-          <seeerl marker="#special_process">special processes</seeerl>. The
+          <seeerl marker="#process-implementation-functions">special processes</seeerl>. The
           OTP behavior modules <c>gen_server</c>,
 	  <c>gen_statem</c>, and <c>gen_event</c>
 	  export this function, so callback modules for those
@@ -689,7 +689,6 @@
   <funcs>
     <fsdescription>
       <title>Process Implementation Functions</title>
-      <marker id="special_process"/>
       <p>The following functions are used when implementing a
         special process. This is an ordinary process, which does not use a
         standard behavior, but a process that understands the standard system
diff --git a/system/doc/design_principles/release_handling.xml b/system/doc/design_principles/release_handling.xml
index 29f9b910c1..3ac2158230 100644
--- a/system/doc/design_principles/release_handling.xml
+++ b/system/doc/design_principles/release_handling.xml
@@ -137,7 +137,7 @@
       information on how to do this, see Embedded System.</p>
     <p>For system reboots to work properly, it is also required that
       the system is started with heartbeat monitoring, see the
-      <c>erl(1)</c> manual page in ERTS and the <c>heart(3)</c>
+      <seecom marker="erts:erl"><c>erl(1)</c></seecom> manual page in ERTS and the <c>heart(3)</c>
       manual page in Kernel</p>
     <p>Other requirements:</p>
     <list type="bulleted">
@@ -323,7 +323,7 @@
 	is needed for another reason, the <c>restart_emulator</c>
 	instruction is to be used instead.</p>
       <p>This instruction requires that the system is started with
-        heartbeat monitoring, see the <c>erl(1)</c> manual page in
+        heartbeat monitoring, see the <seecom marker="erts:erl"><c>erl(1)</c></seecom> manual page in
 	ERTS and the <c>heart(3)</c> manual page in Kernel.</p>
       <p>The <c>restart_new_emulator</c> instruction must always be
         the first instruction in a relup. If the relup is
diff --git a/system/doc/embedded/embedded_solaris.xml b/system/doc/embedded/embedded_solaris.xml
index c70e5f26c0..8356de7df9 100644
--- a/system/doc/embedded/embedded_solaris.xml
+++ b/system/doc/embedded/embedded_solaris.xml
@@ -173,7 +173,7 @@ esac</pre>
         be combined with a call to <c>erl_call</c>, for example:</p>
       <pre>
         $SOME_PATH/erl_call -n Node init stop</pre>
-      <p>To take Erlang down gracefully, see the <c>erl_call(1)</c>
+      <p>To take Erlang down gracefully, see the <seecom marker="erl_interface:erl_call"><c>erl_call(1)</c></seecom>
         manual page in <c>erl_interface</c> for details on the use
 	of <c>erl_call</c>. However,
 	that requires that Erlang runs as a distributed node, which is
@@ -414,7 +414,7 @@ chown root mod_syslog]]></code>
       <title>Related Documents</title>
       <p>See the <c>os_mon(3)</c> application,
       the <c>application(3)</c> manual page in Kernel,
-      and the <c>erl(1)</c> manual page in ERTS.</p>
+      and the <seecom marker="erts:erl"><c>erl(1)</c></seecom> manual page in ERTS.</p>
     </section>
   </section>
 
-- 
2.35.3

openSUSE Build Service is sponsored by