public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Roland McGrath <roland@hack.frob.com>
To: Ian Lance Taylor <iant@google.com>
Cc: Alan Modra <amodra@gmail.com>,
	   "GNU C. Library" <libc-alpha@sourceware.org>,
	   Binutils <binutils@sourceware.org>
Subject: Re: gold vs libc
Date: Mon, 31 Mar 2014 20:04:00 -0000	[thread overview]
Message-ID: <20140331200446.A09B074430@topped-with-meat.com> (raw)
In-Reply-To: Ian Lance Taylor's message of  Monday, 31 March 2014 12:03:31 -0700 <CAKOQZ8wPgdHfA9QJWQ9yVO9gVQKL=HF-rpuipCBxzsx3=TcqwA@mail.gmail.com>

> I don't fully understand this, but it seems to me that gold's
> behaviour is correct and GNU ld's behaviour is incorrect.  GNU ld is
> effectively discarding the exception frame information in crt1.o, and
> gold is retaining it.

That is neither true nor relevant.  I did not lodge any complaint
about what contents wind up in the .eh_frame output section.  The
problem is how it's treating a symbol defined in an input section.

GNU ld produces an __EH_FRAME_BEGIN__ symbol that points to the place
in the output .eh_frame section that corresponds to the order of input
files' .eh_frame sections.  This does indeed point past the crt1.o
CFI, but that is correct given the input file order (crt1.o and its
.eh_frame content before crtbeginT.o and its __EH_FRAME_BEGIN__
symbol).

Gold produces an __EH_FRAME_BEGIN__ symbol that points to the end of
the .eh_frame output section.  The effect of this is that gold is
"effectively discarding" the entirety of the CFI.  There is no logic
of input sections and symbols and their order by which this result
makes any kind of sense.

The fact that it's CFI data is secondary IMHO.  If the linker wants to
optimize CFI data, then that's a fine thing.  But its starting mandate
has to be that it doesn't break the general rules of how link order
and symbol values would come out if it were any other random rodata
section rather than .eh_frame.

> To put it another way: what principle should gold follow to get the
> result you want?

When an input file contains a symbol pointing to a location in an
input section, the output file should define that symbol so it points
to the part of the output section that corresponds to the origin input
location.  When the symbol points to input contents of at least one
byte, what this means is pretty incontrovertibly clear.  In this case,
it points to an empty input section.  But I claim that it's adequately
clear what it should mean in this case too.


Thanks,
Roland

  reply	other threads:[~2014-03-31 20:04 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-30  4:25 Roland McGrath
2014-03-30  4:56 ` Alan Modra
2014-03-30  5:09   ` Roland McGrath
2014-03-31 19:03     ` Ian Lance Taylor
2014-03-31 20:04       ` Roland McGrath [this message]
2014-03-31 20:53         ` Ian Lance Taylor
2014-03-31 21:40           ` Roland McGrath
2014-04-01 18:25             ` Ian Lance Taylor
2014-09-10 20:56               ` Cary Coutant
2014-09-10 22:05                 ` Rafael Espíndola
2014-09-11  0:32                   ` Alan Modra
2014-09-10 22:52                 ` Roland McGrath
2014-09-11  0:04                   ` Ian Lance Taylor
2014-12-20 13:58                     ` PATCH: PR gold/14675: No eh_frame info registered in exception_static_test H.J. Lu
2014-12-22 17:37                       ` Cary Coutant
2014-12-22 22:40                         ` H.J. Lu
2014-12-23  0:58                           ` H.J. Lu
2015-01-07 13:17                         ` H.J. Lu
2015-01-07 14:43                           ` H.J. Lu
2015-01-07 18:50                             ` Cary Coutant
2015-01-26 17:22                               ` H.J. Lu
2015-03-02 16:03                                 ` H.J. Lu
2015-03-09 17:16                                   ` Cary Coutant
2015-03-09 17:22                                     ` H.J. Lu
2015-03-20 15:41                                     ` H.J. Lu
2014-09-11 16:00                   ` gold vs libc Cary Coutant
2014-09-11 16:05                     ` Cary Coutant
2014-09-11 16:45                       ` Rafael Espíndola
2014-09-11 16:21                     ` Ian Lance Taylor
2014-09-11 18:33                     ` Roland McGrath
2014-03-30 18:28 ` Carlos O'Donell

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=20140331200446.A09B074430@topped-with-meat.com \
    --to=roland@hack.frob.com \
    --cc=amodra@gmail.com \
    --cc=binutils@sourceware.org \
    --cc=iant@google.com \
    --cc=libc-alpha@sourceware.org \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).