52 Commits

Author SHA1 Message Date
Tijl Coosemans
caf5f7a84c In r253839 the default behaviour of ld(1) was changed such that all
libraries that need to be linked into an executable or library have to be
listed on the command line explicitly.  This commit fixes a bug in ld(1)
where it would scan dependencies of the libraries on the command line and
link them if needed if they were also found in ld.so.cache.

The important bit of the patch is the initialisation of needed.by such that
libraries found by scanning dependencies are marked as such and not used in
the link.

The patch is a backport of binutils git commit
d5c8b1f8561426b41aa5330ed60f578178fe6be2

The author gave permission to use it under GPLv2 terms.

PR:		192062
Exp-run by:	antoine
MFC after:	1 week
2014-08-28 18:33:42 +00:00
Dimitry Andric
400b97c789 Revert r234656, and apply a proper fix for binutils PR 10474, which
caused linking clang on 32-bit PowerPC to fail with "relocation
truncated to fit: R_PPC_REL24" errors.

Original diffs (relicensed under GPLv2 with permission from author):
http://sourceware.org/git/?p=binutils.git;a=commit;h=1fd262ff7d7ea5adf4894c6b960e092e7e43e3cd
http://sourceware.org/git/?p=binutils.git;a=commit;h=053c49fbff58bd33bd0d12200ea61302f92caceb

Tested by:	andreast
MFC after:	1 week
2012-05-07 17:13:36 +00:00
Dimitry Andric
ce8fb93178 Merge binutils 2.17.50 to head. This brings a number of improvements to
x86 CPU support, better support for powerpc64, some new directives, and
many other things.  Bump __FreeBSD_version, and add a note to UPDATING.

Thanks to the many people that have helped to test this.

Obtained from:	projects/binutils-2.17
2011-02-18 20:54:12 +00:00
Konstantin Belousov
434efabd4c On PowerPC64, linker emits a fake object into each linked object,
'linker stubs'. Add .note.GNU-stack for the stubs objects. Without this,
final binary will have RWE mode for PT_GNU_STACK regardless of the
actual requirements.

Tested by:	nwhitehorn
Reviewed by:	dim, nwhitehorn
2011-01-14 11:28:34 +00:00
Dimitry Andric
97d40d3d4a Merge ^/vendor/binutils/dist@214571 into contrib/binutils, which brings
us up to version 2.17.50.20070703, at the last GPLv2 commit.

Amongst others, this added upstream support for some FreeBSD-specific
things that we previously had to manually hack in, such as the OSABI
label support, and so on.

There are also quite a number of new files, some for cpu's (e.g. SPU)
that we may or may not be interested in, but those can be cleaned up
later on, if needed.
2010-11-01 19:35:33 +00:00
Dimitry Andric
dc9aea6cc4 Reapply change from r210245. In binutils 2.17, the code in question has
moved from ld/emultempl/elf32.em to ld/ldlang.c, so apply approximately
the same change as upstream, which has description:

* ldlang.c (lang_insert_orphan): Add __start_<section> symbol assignment
  inside output section statement.  Ensure only one set of symbols per
  output section.
* emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Add non-dollar
  sections before dollar sections.  Correct add_child list insertion.

Taken from upstream git commit 7e01d69a19a8fd079887f26853c8565da15ff340,
with permission to use it under GPLv2 from the author.
2010-10-21 19:27:27 +00:00
Dimitry Andric
dfd2f2d4bb Merge ^vendor/binutils/dist@214082 into contrib/binutils. 2010-10-21 19:11:14 +00:00
Andriy Gapon
517d9fc653 binutils/ld: fix incorrect placement of __start_SECNAME in some cases
__start_SECNAME and __stop_SECNAME symbols are automatically generated
by ld for orphan sections, i.e. those not explicitely referenced by a
linker script.  The symbols are supposed to be placed correspondingly
at the start and the end of the section in output file.  In some cases
__start_SECNAME may be placed at the address after the end of the
previous section (if any) and before the start the section.  This
happens when following conditions are met:
1. the orphan section is found in more than one input file
2. the orphan section has different alignment requirements across input
files
3. the first instance of the section encountered doesn't have the
greatest alignment requirement
In these conditions resulting output section will be placed at address
after the end of the previous section aligned to the greatest alignment
requirement in the inputs, but __start_SECNAME will be placed at address
after the end of the previous section aligned to the alignment
requirement of the first input in which the section is encountered.

See commit message of r196118 for a concrete example of problems caused
by this bug.

The fix is to place __start_SECNAME inside the section and use ABSOLUTE
directive, rather than placing __start_SECNAME outside the section and
trying to guess address alignment.

This fix is in line with upstream binutils change/fix made between
versions 2.19 and 2.20 in revision of 1.307 ldlang.c.

MFC after:	3 weeks
2010-07-19 18:20:44 +00:00
David E. O'Brien
f51ee0a16d Rename vendor/binutils/*/contrib to vendor/binutils/*/x
Binutils has a "contrib" subdirectory - thus flattening cannot happen
without renaming the upper level contrib directory in a first pass.

Also, don't record this move and remove any keyword expansion.
2009-01-19 17:25:17 +00:00
David E. O'Brien
b7e4108c6b Import of Binutils from the FSF 2.15 branch (just post-.0 release).
These bits are taken from the FSF anoncvs repo on 23-May-2004 04:41:00 UTC.
2008-05-29 02:29:59 +00:00
David E. O'Brien
de582f44b4 This commit was generated by cvs2svn to compensate for changes in r179404,
which included commits to RCS files with non-trunk default branches.
2008-05-29 02:29:59 +00:00
David E. O'Brien
e74f71ff7f Import of Binutils from the FSF 2.15 branch (just post-.0 release).
These bits are taken from the FSF anoncvs repo on 23-May-2004 04:41:00 UTC.
2004-07-06 19:16:23 +00:00
David E. O'Brien
3cc52aa5e0 This commit was generated by cvs2svn to compensate for changes in r131722,
which included commits to RCS files with non-trunk default branches.
2004-07-06 19:16:23 +00:00
David E. O'Brien
a7c7527613 Merge rev 1.2 (teach `ld' how to access FreeBSD's ld ELF hints) into
Binutils 2.15.
2004-06-16 06:09:06 +00:00
David E. O'Brien
da03bc7002 Import of Binutils from the FSF 2.15 branch (just post-.0 release).
These bits are taken from the FSF anoncvs repo on 23-May-2004 04:41:00 UTC.
2004-06-16 05:45:41 +00:00
David E. O'Brien
ad6e3f2b73 This commit was generated by cvs2svn to compensate for changes in r130561,
which included commits to RCS files with non-trunk default branches.
2004-06-16 05:45:41 +00:00
David E. O'Brien
fc91886f96 Merge rev 1.2 (teach `ld' how to access FreeBSD's ld ELF hints)
into the Binutils 2.13.2 20021128 snap.
2002-12-02 09:31:42 +00:00
David E. O'Brien
898696a8b3 Import of Binutils from the FSF 2.13 branch (just pre-.2 release).
These bits are taken from the FSF anoncvs repo on 27-Oct-2002 21:12:00 EST.
2002-12-02 09:06:04 +00:00
David E. O'Brien
6c3a332e94 This commit was generated by cvs2svn to compensate for changes in r107492,
which included commits to RCS files with non-trunk default branches.
2002-12-02 09:06:04 +00:00
David E. O'Brien
9c471f24a5 Merge rev 1.2 (teach `ld' how to access FreeBSD's ld ELF hints)
into Binutils 2.13.1 snap.
2002-10-11 06:15:47 +00:00
David E. O'Brien
88e5f95a93 Import of Binutils from the FSF 2.13 branch (just pre-.1 release).
These bits are taken from the FSF anoncvs repo on 11-Oct-2002 22:39:35 PDT.
2002-10-11 06:01:20 +00:00
David E. O'Brien
8febaae8e2 This commit was generated by cvs2svn to compensate for changes in r104834,
which included commits to RCS files with non-trunk default branches.
2002-10-11 06:01:20 +00:00
David E. O'Brien
c7549e32a4 Import of Binutils from the FSF 2.12 branch (just post-.1 release).
These bits are taken from the FSF anoncvs repo on 22-June-2002 23:28:00 EDT.
2002-07-05 20:16:34 +00:00
David E. O'Brien
95cd50e6d7 This commit was generated by cvs2svn to compensate for changes in r99461,
which included commits to RCS files with non-trunk default branches.
2002-07-05 20:16:34 +00:00
David E. O'Brien
694ba608d4 Merge rev 1.2 (teach `ld' how to access FreeBSD's ld ELF hints)
into Binutils 2.12.0.
2002-03-20 22:04:42 +00:00
David E. O'Brien
55ba99bb8d Import of Binutils from the FSF 2.12 branch (just post-.0 release).
These bits are taken from the FSF anoncvs repo on 20-March-2002 13:33:33 PST.
2002-03-20 21:37:13 +00:00
David E. O'Brien
9d34368f3a Merge rev 1.2 (teach `ld' how to access FreeBSD's ld ELF hints)
into Binutils 2.12_20020221_snap.
2002-02-22 04:52:00 +00:00
David E. O'Brien
eb1d121cb5 Import of Binutils from the FSF 2.12 branch (pre-.0 release).
These bits are taken from the FSF anoncvs repo on 21-Feburary-2002 20:15 PST.
2002-02-22 04:18:42 +00:00
David E. O'Brien
9e68b78882 This commit was generated by cvs2svn to compensate for changes in r91041,
which included commits to RCS files with non-trunk default branches.
2002-02-22 04:18:42 +00:00
David E. O'Brien
e6c1391fb2 Merge rev 1.2 (teach `ld' how to access FreeBSD's ld ELF hints)
into Binutils 2.12.0_snap.
2002-01-27 12:24:18 +00:00
David E. O'Brien
dbbf32dd39 Enlist the FreeBSD-CURRENT users as testers of what is to become Binutils
version 2.12.0.  These bits are taken from the FSF anoncvs repo on
27-January-2002 03:41 PST.
2002-01-27 12:00:11 +00:00
David E. O'Brien
e85f989710 This commit was generated by cvs2svn to compensate for changes in r89857,
which included commits to RCS files with non-trunk default branches.
2002-01-27 12:00:11 +00:00
David E. O'Brien
adc940bfc7 Halloween import of Binutils from the FSF 2.11 branch.
This fixes some IA-64 related bugs.
2001-11-01 09:24:29 +00:00
David E. O'Brien
71523ea656 This commit was generated by cvs2svn to compensate for changes in r85815,
which included commits to RCS files with non-trunk default branches.
2001-11-01 09:24:29 +00:00
David E. O'Brien
556571f3b7 This merges in the changes from the 2.11.2 release to the FSF anoncvs
19-July-2001 snapshot.
2001-07-20 03:48:47 +00:00
David E. O'Brien
e3bf29e1d6 Import of Binutils from the FSF 2.11 branch [checked out 19-July-2001].
This fixes an annoying `ld' bug.
2001-07-20 03:29:51 +00:00
David E. O'Brien
098abe2f2a Merge rev 1.2 (teach `ld' how to access FreeBSD's ld ELF hints)
into Binutils 2.11.2.
2001-06-26 17:57:37 +00:00
David E. O'Brien
fd66bf0071 Import of GNU Binutils version 2.11.2. 2001-06-26 16:57:43 +00:00
David E. O'Brien
2f5bf4fae2 This commit was generated by cvs2svn to compensate for changes in r78828,
which included commits to RCS files with non-trunk default branches.
2001-06-26 16:57:43 +00:00
David E. O'Brien
79a225640d Merge rev 1.2 into Binutils 2.11[.0].
Teach `ld' how to access FreeBSD's ld ELF hints.
2001-05-28 06:21:27 +00:00
David E. O'Brien
c9edceadd8 Import of GNU Binutils version 2.11.0.
Believe it or not, this is heavily stripped down.
2001-05-28 05:21:37 +00:00
David E. O'Brien
c8c29a6bbe This commit was generated by cvs2svn to compensate for changes in r77298,
which included commits to RCS files with non-trunk default branches.
2001-05-28 05:21:37 +00:00
David E. O'Brien
6a616ff41c * include/elf.h has been repo copied to include/elf-hints.h, and it no
longer includes machine/elf.h.
* consumers of elf.h now use the minimalist elf header possible.

This change is motivated by Binutils 2.11.0 and too much clashing over
our base elf headers and the Binutils elf headers.
2001-05-03 01:49:58 +00:00
David E. O'Brien
04fa5c9c88 Remove binutils 2.9.1 files that are not part of 2.10.x. 2000-11-25 10:23:21 +00:00
David E. O'Brien
b8637d9f22 Merge rev 1.2 into Binutils 2.10.1.
Teach `ld' about FreeBSD (ie, fix the All the World's Linux) and how to
access our ld ELF hints.
2000-11-15 21:26:21 +00:00
David E. O'Brien
98c12ca6b6 Import of GNU Binutils version 2.10.1.
Believe it or not, this is heavily stripped down.
2000-11-15 20:52:56 +00:00
David E. O'Brien
c6404fdf02 Merge in rev 1.2 (ld was kinly looking up the Linux /etc/ld.so.conf so teach
it about the FreeBSD equivalent)  This version of that patch selects the
Linux code only if the case is Linux.  This puts the Linux code on par with
the FreeBSD code.
2000-05-13 17:51:22 +00:00
David E. O'Brien
78ce21c1df Import of Binutils 2.10 snapshot. 2000-05-12 23:15:20 +00:00
David E. O'Brien
32dca8efe6 This commit was generated by cvs2svn to compensate for changes in r60484,
which included commits to RCS files with non-trunk default branches.
2000-05-12 23:15:20 +00:00
Peter Wemm
7cedcfa765 ld was kinly looking up the Linux /etc/ld.so.conf (which we don't have).
Teach it about the FreeBSD equivalent, because there are some funny things
going on with -rpath that I can't quite get a handle on.  It looks like
setting an rpath on a new shared object overrides all the implicit
DT_RPATH's from the dependencies, causing them to fail at link time
(but not runtime).
1999-01-07 14:03:27 +00:00