-It should not be necessary for the linker to process the @code{.stab}
-section in any special way, so (except for Solaris 2.2 and earlier, see
-below) none of the addresses in the @code{n_value} field of the stabs
-are relocated by the linker. Instead they are relative to the source
-file (or some entity smaller than a source file, like a function). To
-find the address of each section corresponding to a given source file,
-the (compiler? assembler?) puts out symbols giving the address of each
-section for a given source file. Since these are ELF (not stab)
-symbols, the linker can relocate them correctly. They are named
-@code{Bbss.bss} for the bss section, @code{Ddata.data} for the data
-section, and @code{Drodata.rodata} for the rodata section. For the text
-section, there is no such symbol. The linker provided with Solaris 2.2
-and earlier relocates stabs using relocation information from a
-@code{.rela.stabs} section, which means that the value of an
-@code{N_FUN} stab in an executable is the actual address. For Solaris
-2.3 and later, the value of the @code{N_FUN} stab is zero and the
-address of the function can be obtained from the ELF (non-stab) symbols.
-Sun, in reference to bug 1142109, has verified that this is intentional.
+To keep linking fast, it is a bad idea to have the linker relocating
+stabs, so (except for Solaris 2.2 and earlier, see below) none of the
+addresses in the @code{n_value} field of the stabs are relocated by the
+linker. Instead they are relative to the source file (or some entity
+smaller than a source file, like a function). To find the address of
+each section corresponding to a given source file, the compiler puts out
+symbols giving the address of each section for a given source file.
+Since these are ELF (not stab) symbols, the linker can relocate them
+correctly. They are named @code{Bbss.bss} for the bss section,
+@code{Ddata.data} for the data section, and @code{Drodata.rodata} for
+the rodata section. For the text section, there is no such symbol. GCC
+does not provide these symbols; it instead relies on the stabs getting
+relocated, which loses for Solaris 2.3 (see below). Thus address which
+would normally be relative to @code{Bbss.bss}, etc., are absolute. The
+linker provided with Solaris 2.2 and earlier relocates stabs using
+relocation information from a @code{.rela.stab} section, which means
+that the value of an @code{N_FUN} stab in an executable is the actual
+address. I think this is pretty much just standard ELF relocations, as
+it would do for any section, rather than a special-purpose stabs hack.
+For Solaris 2.3 and later, the linker ignores relocations for the stabs
+section. The value of a @code{N_FUN} stab is zero and the address of a
+function can be obtained from the ELF (non-stab) symbols. Sun, in
+reference to bug 1142109, has verified that this is intentional.