Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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.

  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