public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: "H.J. Lu" <hjl.tools@gmail.com>
To: Dave Korn <dave.korn.cygwin@gmail.com>
Cc: "binutils@sourceware.org" <binutils@sourceware.org>
Subject: Re: [PATCH,trunk+2.20] Fix issues in ld.bfd plugin interface [0/6]
Date: Sat, 26 Feb 2011 02:14:00 -0000	[thread overview]
Message-ID: <AANLkTikKVKEogY17trUu+S0ZtjXzJ0bf96p0dAeU4-0c@mail.gmail.com> (raw)
In-Reply-To: <4D684CB8.6020106@gmail.com>

On Fri, Feb 25, 2011 at 4:43 PM, Dave Korn <dave.korn.cygwin@gmail.com> wrote:
>
>  After my patches, LD gives the following results:
>
>> FAIL: ld-plugin/lto-4r-a
>> FAIL: ld-plugin/lto-4r-b
>> FAIL: ld-plugin/lto-4r-c
>> FAIL: ld-plugin/lto-4r-d
>> FAIL: LTO 4a
>> FAIL: LTO 4c
>> FAIL: LTO 4d
>> FAIL: LTO 10
>> FAIL: LTO 12a
>> FAIL: LTO 12b
>> FAIL: LTO 15
>
>  Relative to current LD, that has fixes to 12365, 5 symbol, 3b and 5.  The
> new FAILures on 12a/b and 15 are actually a difference of interpretation about
> how the linker is supposed to work between me and HJ's code.  The tests assume
> that it is not possible to override builtins such as __udivdi3 or memcpy, but
> it works OK with the attached patches, so I'm not sure why these tests do what
> they do.  For example, test LTO 15 has this source file compiled as an object:
>
>> #include <stdio.h>
>>
>> int main(int argc, char **argv)
>> {
>>   printf ("PASS\n");
>>   return (int) ((unsigned long long) argc / argv[0][0]);
>> }
>
> ... and this one in a library archive member:
>
>> extern void abort (void);
>> unsigned long long
>> __udivdi3(unsigned long long n, unsigned long long d)
>> {
>>   abort ();
>>   return n + d;
>> }
>
> ... so I would have thought that the ideal case would be for an LTO link to
> mimic a non-LTO link, and pull in the definition of __udivdi3 there and abort.
>
>  That aside, the only thing that LD still doesn't handle after these patches
> is mixed object files that are created by using "ld -r" to merge multiple IR
> and non-IR object files.
>

The question is if LTO linker should link in non-LTO copy of the same function
and ignore the LTO-IR copy:

[hjl@gnu-6 pr12496-2]$ make
as --32  -o start.o start.s
/usr/gcc-4.6/bin/gcc -m32 -B./ -flto   -c -o main.o main.c
/usr/gcc-4.6/bin/gcc -m32 -B./ -flto   -c -o div.o div.c
ar rv libdiv.a div.o
ar: creating libdiv.a
a - div.o
/usr/gcc-4.6/bin/gcc -m32 -B./ -O2 -flto -nostdlib -o prog
-Wl,--start-group start.o main.o libdiv.a -Wl,--end-group

Here div.o is compiled with -O0 -flto and the final link is compiled
with -O2 -flto. I would expect div.c is compiled with -O2 -flto, not -O0,
if div.c is linked in. Am I expecting too much?


-- 
H.J.

  parent reply	other threads:[~2011-02-26  2:14 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-26  0:44 Dave Korn
2011-02-26  0:45 ` [PATCH,trunk+2.21] " Dave Korn
2011-02-26  0:45   ` [1/6][PATCH] Fix PE-COFF bug in orphan section alignment handling Dave Korn
2011-02-26  9:14     ` Alan Modra
2011-02-26  0:46   ` [3/6][PATCH] Revise linker plugin API to better preserve link order Dave Korn
2011-02-26  9:15     ` Alan Modra
2011-02-26  0:46   ` [4/6][PATCH] Fix issue from GCC PR47527: no ELF flags, EABI attribs, etc. in dummy IR BFD Dave Korn
2011-02-26  0:48     ` Dave Korn
2011-02-26  9:16       ` Alan Modra
2011-02-26  0:46   ` [2/6][PATCH] Do not use dummy bfd suffix for recognition, make it human-readable instead Dave Korn
2011-02-26  0:46   ` [5/6][PATCH] Perform second link stage and ignore now-obsolete linker -pass-through= option Dave Korn
2011-02-26  0:48     ` Dave Korn
2011-02-26  4:03     ` Rafael Ávila de Espíndola
2011-02-27 18:54       ` Ian Lance Taylor
2011-02-27 19:11         ` Rafael Ávila de Espíndola
2011-02-27 19:22           ` Ian Lance Taylor
2011-02-27 19:37             ` Rafael Ávila de Espíndola
2011-02-26  9:05     ` Alan Modra
2011-02-26  0:47   ` [x/6][PATCH] Portability tweaks for LTO tests Dave Korn
2011-02-26  0:49     ` Dave Korn
2011-02-26  3:50     ` H.J. Lu
2011-02-26  5:33       ` H.J. Lu
2011-02-26  0:47   ` [6/6][PATCH] Respect symbol wrappers when computing symbol resolutions Dave Korn
2011-02-26  0:49     ` Dave Korn
2011-02-26  4:50     ` H.J. Lu
2011-02-26  9:28     ` Alan Modra
2011-02-26  2:14 ` H.J. Lu [this message]
2011-02-26  3:37   ` [PATCH,trunk+2.20] Fix issues in ld.bfd plugin interface [0/6] Dave Korn
2011-02-26  3:48     ` H.J. Lu
2011-03-10 10:43 ` Dave Korn

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=AANLkTikKVKEogY17trUu+S0ZtjXzJ0bf96p0dAeU4-0c@mail.gmail.com \
    --to=hjl.tools@gmail.com \
    --cc=binutils@sourceware.org \
    --cc=dave.korn.cygwin@gmail.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).