From: Klee Dienes <klee@apple.com>
To: Eli Zaretskii <eliz@is.elta.co.il>
Cc: binutils@sources.redhat.com, gdb-patches@sources.redhat.com
Subject: Re: [RFA] Add stabs entries for coalesced symbols.
Date: Sun, 08 Dec 2002 17:00:00 -0000 [thread overview]
Message-ID: <4EBE70E3-0B0E-11D7-9779-00039396EEB8@apple.com> (raw)
In-Reply-To: <Pine.SUN.3.91.1021124161854.3627A-100000@is>
[-- Attachment #1: Type: text/plain, Size: 128 bytes --]
Thanks to everyone for the feedback. Hopefully this will be the final
version, though I'm certainly up for more suggestions:
[-- Attachment #2: coalesced.txt --]
[-- Type: text/plain, Size: 3433 bytes --]
--- cygnus.cygnus/src/gdb/doc/stabs.texinfo Sun Nov 24 05:21:06 2002
+++ cygnus.current/src/gdb/doc/stabs.texinfo Sun Dec 8 19:26:14 2002
@@ -404,6 +404,7 @@
* Procedures::
* Nested Procedures::
* Block Structure::
+* Coalesced Symbol Blocks:: Coalesced Symbol Blocks.
* Alternate Entry Points:: Entering procedures except at the beginning.
@end menu
@@ -740,6 +741,50 @@
name of the symbol is @samp{.bb}, then it is the beginning of the block;
if the name of the symbol is @samp{.be}; it is the end of the block.
+@node Coalesced Symbol Blocks
+@section Coalesced Symbol Blocks
+
+@findex N_BNSYM
+@findex N_ENSYM
+@cindex coalesced symbol
+On Mac OS X, a @dfn{coalesced symbol} is a true definition of a symbol
+that may appear one or more times in the compilation units generated
+by the compiler. The semantics of coalesced symbols are similar to
+those of sections with @code{SEC_LINK_DUPLICATES_DISCARD}
+(@code{COMDAT}) set, with the difference that coalesced symbols are
+processed on a per-symbol basis, rather than on a per-section basis.
+Currently, coalesced symbols are implemented only on Mac OS X.
+
+The static link editor allows multiple definitions of a coalesced
+symbol without any warnings or errors. The static link editor outputs
+only one instance of each coalesced symbol, using the first instance it
+encounters in the object files being linked. The static link editor
+always outputs an instance of a coalesced symbol if it appears in the
+object files being linked, even if it also appears in the dynamic
+libraries being referenced. The dynamic link editor then relocates
+such that only one instance of each coalesced symbol is used
+throughout the program.
+
+Coalesced symbols are placed by the compiler tools into sections
+flagged with the type bit @code{S_COALESCED}. The static and dynamic linker
+look at the section type to determine that a given symbol is a
+coalesced symbol and therefore to allow multiple definitions.
+
+The static link editor divides up a coalesced section on the
+boundaries of the symbols in that section, associating the bytes of
+the section after each symbol with the preceding symbol. An object
+file is considered malformed if a coalesced section does not have a
+symbol at the first address of the section.
+
+To allow the linker to properly manage the debug information for
+coalesced symbols, the stabs entries for a given coalesced symbol must
+be preceded by @code{N_BNSYM} and terminated with @code{N_ENSYM}. The
+value of the @code{N_BNYSM} stab should be the start address of the coalesced
+portion (the same value as the symbol that begins the portion), and
+the value of the @code{N_ENSYM} stab should be the end address of the
+coalesced portion (the same value as the next coalesced symbol, or the
+end of the whole coalesced section).
+
@node Alternate Entry Points
@section Alternate Entry Points
@@ -3240,6 +3285,9 @@
@item 0x2c N_ROSYM
Variable in @code{.rodata} section; see @ref{Statics}.
+@item 0x2e N_BNSYM
+Start of a relocatble symbolblock; see @ref{Relocatable Symbol Blocks}.
+
@item 0x30 N_PC
Global symbol (for Pascal); see @ref{N_PC}.
@@ -3281,6 +3329,9 @@
@item 0x4c N_FLINE
Function start/body/end line numbers (Solaris2).
+
+@item 0x4e N_ENSYM
+End of a relocatble symbol block; see @ref{Relocatable Symbol Blocks}.
@item 0x50 N_EHDECL
GNU C++ exception variable; see @ref{N_EHDECL}.
[-- Attachment #3: Type: text/plain, Size: 145 bytes --]
One question for Eli: are you sure you want a @cindex entry for
"coalesced symbols"? I ask only because it's the only one in the
document.
next prev parent reply other threads:[~2002-12-09 0:36 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <C774777A-FB47-11D6-84AF-00039396EEB8@apple.com>
2002-11-18 16:37 ` Klee Dienes
2002-11-18 22:22 ` Ian Lance Taylor
2002-11-24 2:25 ` Klee Dienes
2002-11-24 6:21 ` Eli Zaretskii
2002-12-08 17:00 ` Klee Dienes [this message]
2002-12-08 22:39 ` Eli Zaretskii
2002-12-09 10:22 ` Klee Dienes
2002-12-09 12:37 ` Eli Zaretskii
2002-11-24 9:46 ` Ian Lance Taylor
2002-11-24 14:22 ` Jim Blandy
2002-12-06 8:59 ` Nick Clifton
2002-11-18 22:59 Eli Zaretskii
[not found] <1038196445.11584.ezmlm@sources.redhat.com>
2002-11-24 20:21 ` Jim Ingham
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EBE70E3-0B0E-11D7-9779-00039396EEB8@apple.com \
--to=klee@apple.com \
--cc=binutils@sources.redhat.com \
--cc=eliz@is.elta.co.il \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox