Skip to content

enable building of ld.gold in binutils 2.25#1885

Merged
boegel merged 18 commits intoeasybuilders:developfrom
ocaisa:patch-7
Aug 21, 2015
Merged

enable building of ld.gold in binutils 2.25#1885
boegel merged 18 commits intoeasybuilders:developfrom
ocaisa:patch-7

Conversation

@ocaisa
Copy link
Copy Markdown
Member

@ocaisa ocaisa commented Aug 19, 2015

Add support for ld.gold, PIC build and instructions on how to include libiberty in installation

Add support for ld.gold and option to build libiberty
@hpcugentbot
Copy link
Copy Markdown

Automatic reply from Jenkins: Can I test this?

@ocaisa
Copy link
Copy Markdown
Member Author

ocaisa commented Aug 19, 2015

ld.gold is significantly faster for C++ linking (I've read)

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 19, 2015

Jenkins: ok to test

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wait, what? this is the only/proper way? there's no way to make make install do this for you? hard to believe...

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

libiberty is built by default but not included in the installation (says in configure # Note that libiberty is not a target library). Libiberty source is hosted in GCC and that's the correct place to enable the library but on the mailing lists people said that they might have a non-PIC GCC build

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has popped up again in easybuilders/easybuild-easyblocks#969 (comment)

Not sure things have progressed within binutils since then, but from this thread including libiberty from binutils is non-standard so we should maybe think hard about it.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 19, 2015

Can you also apply this to the other binutils 2.25 easyconfigs? That way, we'll have ld.gold available in the 2015b toolchains too....

@hpcugentbot
Copy link
Copy Markdown

Refer to this link for build results (access rights to CI server needed):
https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/4055/
Easyconfigs unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/4055/console for more details).

This pull request is now ready for review/testing.

Please try and find someone who can tackle this; contact @boegel if you're not sure what to do.

@ocaisa
Copy link
Copy Markdown
Member Author

ocaisa commented Aug 19, 2015

Once we agree on the changes here I'll add them to the other easyconfigs.
libiberty is a bit of a strange beast in general judging by the usage advice. For us, having it in binutils within the core and all compilers depending on binutils means that the same version is available everywhere.

@ocaisa
Copy link
Copy Markdown
Member Author

ocaisa commented Aug 19, 2015

Will I dump the libiberty commented section? Maybe it's just a site-specific customisation.

@hpcugentbot
Copy link
Copy Markdown

Refer to this link for build results (access rights to CI server needed):
https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/4057/
Easyconfigs unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/4057/console for more details).

This pull request is now ready for review/testing.

Please try and find someone who can tackle this; contact @boegel if you're not sure what to do.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 19, 2015

@ocaisa: yes, I feel the libiberty stuff should be dropped, it looks like a can of worms to me (having a two libiberty.a's around, one provided by binutils (built with -fPIC), and one provided by GCC...)

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 19, 2015

@wpoely86: can you look into a test report on Debian for this one?

@ocaisa
Copy link
Copy Markdown
Member Author

ocaisa commented Aug 19, 2015

Well, it's not provided by GCC unless you explicitly ask for it...and then it becomes connected to a toolchain, that was kind of the problem.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 19, 2015

Test report by @boegel
FAILED
Build succeeded for 0 out of 1 (1 easyconfigs in this PR)
Linux SL 6.6, Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz, Python 2.6.6
See https://gist.github.com/68a0f7e0d59ee9a5001f for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 19, 2015

Test report by @boegel
FAILED
Build succeeded for 0 out of 1 (1 easyconfigs in this PR)
Linux SL 6.6, Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz, Python 2.6.6
See https://gist.github.com/b9cc07ca8f2c7ad36959 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 19, 2015

Hmm, looks troublesome on SL6:

script-c.h:221: error: ‘YYSTYPE’ was not declared in this scope                                                                                                                                                                                                           script-c.h:221: error: expected primary-expression before ‘,’ token                                                                                                                                                                                                        script-c.h:221: error: expected primary-expression before ‘void’   

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 19, 2015

Test report by @boegel
SUCCESS
Build succeeded for 1 out of 1 (1 easyconfigs in this PR)
Linux red hat enterprise linux computenode 6.5, Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz, Python 2.6.6
See https://gist.github.com/d2261533625e96c8c019 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 19, 2015

Not sure what to do about libiberty, but just including it because we vaguely remember it was needed for one particular build doesn't seem like a good idea.

Also, it seems like libiberty.a is there by default with binutils 2.22? See https://github.com/hpcugent/easybuild-easyconfigs/blob/master/easybuild/easyconfigs/b/binutils/binutils-2.22-goolf-1.4.10.eb#L32

Anyway, we'll need to figure out why the build is suddenly broken on SL6 now, see test reports that were submitted.

@wpoely86
Copy link
Copy Markdown
Member

Test report by @wpoely86
SUCCESS
Build succeeded for 1 out of 1 (1 easyconfigs in this PR)
Linux debian 8.1, Intel(R) Xeon(R) CPU 5130 @ 2.00GHz, Python 2.7.9
See https://gist.github.com/40fdb54256608feb5dfd for a full test report.

@wpoely86
Copy link
Copy Markdown
Member

Make the same change in all binutils-2.25 easyconfigs?

@boegel boegel added this to the v2.2.1 milestone Aug 20, 2015
@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 20, 2015

build problem on SL6 looks related to flex and/or Bison, so we'll need to include these a build deps?

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 20, 2015

@wpoely86
Copy link
Copy Markdown
Member

oh great, more build dependencies. Yeah, add them as build deps.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 20, 2015

tackled in ocaisa#5

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 20, 2015

SL6 (no Bison in the OS):

 rpm -qa | egrep -i 'flex|bison'
flex-2.5.35-9.el6.x86_64

RHEL6:

$ rpm -qa | egrep -i 'flex|bison'
bison-2.4.1-5.el6.x86_64
flex-2.5.35-8.el6.x86_64

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 20, 2015

Test report by @boegel
FAILED
Build succeeded for 6 out of 25 (16 easyconfigs in this PR)
Linux red hat enterprise linux computenode 6.5, Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz, Python 2.6.6
See https://gist.github.com/6cf7b5d29bc7c6507683 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 20, 2015

The latest failed test shows that we need to include binutils as a build dep in several of the added easyconfigs, to make things work on RHEL6 + Haswell, like we do in the existing zlib easyconfig:

builddependencies = [('binutils', '2.25', '', True)]

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 20, 2015

tackled in ocaisa#10

add binutils build dep in M4, flex, Bison easyconfigs
@hpcugentbot
Copy link
Copy Markdown

Refer to this link for build results (access rights to CI server needed):
https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/4073/
Easyconfigs unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/4073/console for more details).

This pull request is now ready for review/testing.

Please try and find someone who can tackle this; contact @boegel if you're not sure what to do.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 20, 2015

Test report by @boegel
SUCCESS
Build succeeded for 16 out of 16 (16 easyconfigs in this PR)
Linux SL 6.6, Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz, Python 2.6.6
See https://gist.github.com/484f38cd99bd6eb186d4 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 21, 2015

Test report by @boegel
FAILED
Build succeeded for 7 out of 23 (16 easyconfigs in this PR)
Linux red hat enterprise linux computenode 6.5, Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz, Python 2.6.6
See https://gist.github.com/6eed61f3e6b56eae3294 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 21, 2015

@ocaisa: GCC build fails on RHEL6 with:

ld.gold: -plugin: unknown option
ld.gold: use the --help option for usage information
collect2: error: ld returned 1 exit status

Either we screwed up the default ld, or GCC finds ld.gold, tries to use it, and fails...

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 21, 2015

@wpoely86
Copy link
Copy Markdown
Member

Can't we simply not enable gold for the bootstrap binutils? The only advantage is a slightly faster linking time. I would only do it for the binutils used for actually building codes.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 21, 2015

@wpoely86: sure, but we still needs --enable-plugins whenever we use --enable-gold

use --enable-plugins along with --enable-gold
@hpcugentbot
Copy link
Copy Markdown

Refer to this link for build results (access rights to CI server needed):
https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/4075/
Easyconfigs unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/4075/console for more details).

This pull request is now ready for review/testing.

Please try and find someone who can tackle this; contact @boegel if you're not sure what to do.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 21, 2015

Test report by @boegel
FAILED
Build succeeded for 15 out of 16 (16 easyconfigs in this PR)
Linux SL 6.6, Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz, Python 2.6.6
See https://gist.github.com/f768681999676d24a4ac for a full test report.

@ocaisa
Copy link
Copy Markdown
Member Author

ocaisa commented Aug 21, 2015

Typo - that will succeed now

@hpcugentbot
Copy link
Copy Markdown

Refer to this link for build results (access rights to CI server needed):
https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/4076/
Easyconfigs unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/4076/console for more details).

This pull request is now ready for review/testing.

Please try and find someone who can tackle this; contact @boegel if you're not sure what to do.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 21, 2015

Test report by @boegel
SUCCESS
Build succeeded for 16 out of 16 (16 easyconfigs in this PR)
Linux SL 6.6, Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz, Python 2.6.6
See https://gist.github.com/b07d9ac902bb4aae1dd5 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 21, 2015

Test report by @boegel
SUCCESS
Build succeeded for 16 out of 16 (16 easyconfigs in this PR)
Linux SL 6.6, Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz, Python 2.6.6
See https://gist.github.com/766e34fd4d5943cd4412 for a full test report.

@wpoely86
Copy link
Copy Markdown
Member

Test report by @wpoely86
SUCCESS
Build succeeded for 22 out of 22 (16 easyconfigs in this PR)
Linux debian 8.1, Intel(R) Xeon(R) CPU 5130 @ 2.00GHz, Python 2.7.9
See https://gist.github.com/e6f6ba6b1539c5ae24a3 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 21, 2015

Test report by @boegel
FAILED
Build succeeded for 22 out of 26 (16 easyconfigs in this PR)
Linux red hat enterprise linux computenode 6.5, Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz, Python 2.6.6
See https://gist.github.com/bece0c53cd88ecf53f62 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 21, 2015

The builds that fail in the last test report are the ones using the default binutils provided by the OS.

Since this is a RHEL6 Haswell systems, the default binutils is broken; it doesn't recognise AVX2 instructions which leads to errors like:

Error: no such instruction: `shlx %eax,%edx,%edx'

In short: it's normal that these builds fail.

Thus: good to go in. Thanks @ocaisa for diving into this!

boegel added a commit that referenced this pull request Aug 21, 2015
enable building of ld.gold in binutils 2.25
@boegel boegel merged commit 42a7d58 into easybuilders:develop Aug 21, 2015
@ocaisa ocaisa deleted the patch-7 branch December 15, 2015 11:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants