Commit graph

142 commits

Author SHA1 Message Date
Dimitry Andric
e7cde49997 Remove weird double-pasted sections in armelfb?_fbsd.sh. 2010-10-21 20:29:16 +00:00
Dimitry Andric
5c049bc266 Regenerate config.h for ld. 2010-10-21 20:28:23 +00:00
Nathan Whitehorn
2cf64c8006 Teach our toolchain how to generate 64-bit PowerPC binaries. This fixes
a variety of bugs in binutils related to handling of 64-bit PPC ELF,
provides a GCC configuration for 64-bit PowerPC on FreeBSD, and
associated build systems tweaks.

Obtained from:	projects/ppc64
2010-07-10 02:29:22 +00:00
Jayachandran C.
d12582eb67 Add an alignment of 8 for sections in the n32 ABI. The default alignment
of of 4 causes _end to be word aligned, which will be returned by sbrk.

malloc(3), when compiled for n32, expects sbrk to return an 8-byte aligned
value.

Approved by:	rrs (mentor)
2010-06-25 05:07:42 +00:00
Juli Mallett
5619a3e4bf Add/improve mips64r2, Octeon, n32 and n64 support in the toolchain.
o) Add TARGET_ABI to the MIPS toolchain build process.  This sets the default
   ABI to one of o32, n32 or n64.  If it is not set, o32 is assumed as that is
   the current default.
o) Set the default GCC cpu type to any specified TARGET_CPUTYPE.  This is
   necessary to have a working "cc" if e.g. mips64 is specified, as binutils
   will refuse to link objects using different ISAs in some cases.
o) Add support for n32 and n64 ABIs to binutils and GCC.
o) Add additional required libgcc2 stubs for n32 and n64.
o) Add support for the "mips64r2" architecture to GCC.  Add the "octeon"
o) When static linking, wrap default libraries in --start-group and
   --end-group.  This is required for static linking to work on n64 with the
   interdependencies between libraries there.  This is what other OSes that
   support n64 seem to do, as well.
o) Fix our GCC spec to define __mips64 for 64-bit targets, not __mips64__, the
   former being what libgcc, etc., check and the latter seemingly being a
   misspelling of a hand merge from a Linux spec.
o) When no TARGET_CPUTYPE is specified at build time, make GCC take the default
   ISA from the ABI.  Our old defaults were too liberal and assumed that 64-bit
   ABIs should default to the MIPS64 ISA and that 32-bit ABIs should default to
   the MIPS32 ISA, when we are supporting or will support some systems based on
   earlier 32-bit and 64-bit ISAs, most notably MIPS-III.
o) Merge a new opcode file (and support code) from a later version of binutils
   and add flags and code necessary to support Octeon-specific instructions.
   This should also make merging opcodes for other modern architectures easier.

Reviewed by:	imp
2010-06-02 11:06:03 +00:00
Warner Losh
9737f6898d Make the n32 scripts actually generate, ummm, n32 binaries... <blush>
Submitted by:	jmallet
2010-03-04 04:30:16 +00:00
Warner Losh
69be831fc8 Add n32 ABI generators...
Submitted by:	neel, jmallet
2010-03-02 05:43:04 +00:00
Warner Losh
8f2411c3b5 Remove alpha support from here too. FreeBSD 6 was the last branch to
support it.
2010-02-03 18:32:29 +00:00
Warner Losh
7eb498c3b5 Merge r195575 and 195530 from projects/mips to head by hand:
r195575 | imp | 2009-07-10 12:24:02 -0600 (Fri, 10 Jul 2009) | 2 lines
quick hack for the problem gonzo is seeing.

r195530 | imp | 2009-07-10 01:18:30 -0600 (Fri, 10 Jul 2009) | 5 lines
Always build all 4 emulators into the mips toolchain.
# I think we have a gcc spec file issue with abi=64 since I have to do other
# hacks to get it mostly kinda right.
2010-01-08 23:09:11 +00:00
Warner Losh
d7aeea2745 Push mips support for ld into the tree. 2008-12-11 08:18:45 +00:00
Marcel Moolenaar
af025ea9a7 Force -O1 compilation when targeted for ia64. GCC 4 generates
bad code at -O2. Since this is likely caused by the low-level
optimizer, testing TARGET_ARCH rather than MACHINE_ARCH should
handle ia64 cross-compilation as well. With this work-around
in place, we can release using the current GCC and Binutils
code at the default optimization level on ia64.

Approved by: re (kensmith)
2007-09-26 01:31:28 +00:00
David E. O'Brien
6a859d67c1 Reduce diff to vendor for maintance purposes.
Approved by:	re(ken)
2007-09-19 14:19:32 +00:00
Thomas Quinot
a0b65c7be0 In the case of a native build, set NATIVE to yes so that the code circuits
that need to be activated specifically for the case of a native linker
actually are enabled. Specifically, this makes ld(1) look for shared
libraries in LD_LIBRARY_PATH in the native case, as documented in the
man page.

PR:		gnu/96481
Approved by:	re (kensmith)
MFC after:	2 weeks
2007-09-19 12:17:39 +00:00
Warner Losh
70e66c2fbd scripts for the arm port.
Submitted by: cognet@
Reviewed by: obrien and kan
2006-09-14 07:46:32 +00:00
Warner Losh
a8e874edc2 Fix the build and minor cleanup. 2006-09-14 07:44:05 +00:00
David E. O'Brien
25024d95e9 Build 'ld' supporting a big endian ARM if "TARGET_BIG_ENDIAN" is defined. 2006-09-12 06:59:39 +00:00
David E. O'Brien
dbff1be7a8 Be consistent in quoting. 2006-07-22 14:37:17 +00:00
David E. O'Brien
0b47627195 Create a genscripts driver based on the PowerPC one. 2006-07-22 14:36:15 +00:00
Ruslan Ermilov
83c7ade90a NOSHARED -> NO_SHARED 2004-12-21 09:59:45 +00:00
David E. O'Brien
7d0fc2f49e MAJOR cleanup of the Bmake framework.
This includes removing all vestiges of the old not-really supported
ability to build cross tools targeting non-FreeBSD systems, such as
m68k Lynx and NetBSD.  Move as much duplicated code from platform
Makefiles into the shared Makefiles.  Add a simple mechanism for
specifying ELF 'ldscripts'.  Also share as many .h files as possible
(now a single bfd.h vs. one per platform).
2004-07-08 17:05:34 +00:00
David E. O'Brien
34d55919fb Our 'TOOLS_PREFIX' and not 'DESTDIR' matches what the stock GNU build
framework wants.
2004-06-20 01:44:58 +00:00
David E. O'Brien
e223c68bfc Updated Bmake framework for Binutils 2.15. 2004-06-16 07:09:44 +00:00
Johan Karlsson
7ff8c436d3 style.Makefile(5):
Use WARNS?= instead of WARNS=

For this to work properly for all part is the subdirectories
the WARNS assignments in Makefile.inc0 are moved to the correspondning
Makefile.inc.

Approved by:	obrien (binutils maintainer)
Tested by:	make universe
2004-02-24 19:23:33 +00:00
David E. O'Brien
9d6f37e490 Properly quote the lib path. 2003-08-19 17:30:46 +00:00
David E. O'Brien
21df0f6f8f Stage 3 of dynamic root support, con't.
'ld' should also search /lib for dynamic libraries.
2003-08-17 21:45:26 +00:00
David E. O'Brien
34f8bdbf6a s/x86_64/amd64/g where possible. 2003-08-17 20:53:21 +00:00
David E. O'Brien
3e1521419b Add elf_i386_fbsd emulation.
Obtained from:	p4
2003-07-01 17:12:55 +00:00
David E. O'Brien
584a637fee The AMD64 Hammer bits. 2003-04-26 03:28:21 +00:00
David E. O'Brien
0d6a130e24 Remove first attempt at x86-64 bits. We're going to call it "amd64" now.
Sponsored by:	Microsoft
2003-04-26 03:24:26 +00:00
Ruslan Ermilov
6b09ae934b Removed invasion into these makefiles by the "legacy" stuff;
I have a better fix in the works.
2003-04-12 14:44:49 +00:00
Ruslan Ermilov
cc59b11e0f libbinutils.a needs basename(3); when the latter is provided
by -legacy, liblegacy.a should come last in the LDADD list.
2003-04-11 18:02:10 +00:00
Warner Losh
30aaff1192 Migrate to a new way of dealing with building from old revisions of
FreeBSD.  This method attempts to centralize all the necessary hacks
or work arounds in one of two places in the tree (src/Makefile.inc1
and src/tools/build).  We build a small compatibility library
(libbuild.a) as well as selectively installing necessary include
files.  We then include this directory when building host binaries.

This removes all the past release compatibilty hacks from various
places in the tree.  We still build on tip of stable and current.  I
will work with those that want to support more, although I anticipate
it will just work.

Many thanks to ru@, obrien@ and jhb@ for providing valuable input at
various stage of implementation, as well as for working together to
positively effect a change for the better.
2003-04-05 20:30:30 +00:00
David E. O'Brien
61de3d8db1 The PowerPC-specfic scripttempl file was depreciated in favor of the generic
ELF one.
2003-01-21 06:12:56 +00:00
David E. O'Brien
3e17ea404e Change the default emulation to elf64_sparc_fbsd. This emulation knows the
correct spelling of our rtld.
2002-12-05 18:25:09 +00:00
David E. O'Brien
a91d8d9644 Change the default emulation to elf64_ia64_fbsd. This knows the proper
spelling of our rtld.
2002-12-05 18:23:08 +00:00
David E. O'Brien
f5debc7cfc Update for the Binutils 2.13.2 20021127 snapshot import. 2002-12-02 09:45:51 +00:00
David E. O'Brien
597e16e012 We HAVE_STPCPY now. 2002-10-20 07:50:20 +00:00
David E. O'Brien
dffd8409be Update for 2.13 10-Oct-2002 import. 2002-10-12 04:24:35 +00:00
David E. O'Brien
71cd0da063 Sync with 2.13. Reduce forking by using multiple sed expressions rather
than piping thru tr(1).  Also prefer case over for+test, as case will
handle regex's nicely.

Note we can't exactly follow the real 2.13 genscripts.sh as we wind up with
multiple "'s in search paths.  It is too late tonight to track down why.
2002-10-11 10:07:46 +00:00
David E. O'Brien
20109e1f9a witch over to the new FreeBSD bfd vec and emulation 2002-10-11 09:36:20 +00:00
David E. O'Brien
6551b26de7 Switch over to the new FreeBSD emulation and bfd vec 2002-10-11 09:31:55 +00:00
Ruslan Ermilov
d2893b161b Drop support for COPY, -c has been the default mode of install(1)
for a long time now.

Approved by:	bde
2002-07-29 09:40:17 +00:00
David E. O'Brien
da87c431b3 The AMD x86-64 Hammer bits. 2002-05-18 11:57:01 +00:00
David E. O'Brien
e3dd58ccbc Update to Binutils 2.12.0 and stick to the native emulation for now.
This lets us get on the with the task at hand -- porting FreeBSD.
We can get fancy later on.
2002-05-17 03:10:33 +00:00
David E. O'Brien
eb294035cb Make it easier to change the native emulation.
Tested on:	alpha, i386, sparc64
2002-03-29 00:41:01 +00:00
David E. O'Brien
615836eeac Update to Binutils 2.12.0 release. 2002-03-20 23:05:19 +00:00
David E. O'Brien
1f85384086 Uggg!! LD ME HARDER!!
Rev 1.2 changed the default emulation from ``elf64_sparc'' to ``elf32_sparc''
and I never noticed it after my review of rev 1.1.  Backing the change of
the default emulation out, and Wa-la!, I can now build a native [and usable]
binutils.  WTF, the "-m elf64_sparc" parameter handed to `ld' by `gcc'
wasn't DTRT is beyond me.
2002-03-15 07:42:47 +00:00
David E. O'Brien
87120eee8e Support linking with -z combreloc (combine and sort reloc sections) and with
--shared -z combreloc (shared library, combine & sort relocs)

Submitted by:		peter
Bribed by:		peter
Fixes:			IA-64, Kaffe, and QT
Doesn't fix ports by:	kris
Tested on:		make(1) release w/docproj
Desired for:		5.0-DP#1
Approved by:		murray
Seconded by:		jhb
2002-03-13 18:26:59 +00:00
David E. O'Brien
2cadc0a98e Turn up WARNS as high as possible.
Tested by:	gcc31, gcc32, /usr/bin/cc
2002-03-13 05:14:31 +00:00
David E. O'Brien
25a59bcfe7 Set the SCRIPTDIR to be rooted at TOOLS_PREFIX rather than DESTDIR.
(the two may be different (ie, build vs. runtime))
Allow ldscript's SEARCH_DIR do be rooted somewhere other than `/'.
(in this case at TOOLS_PREFIX)

These changes are most helpful during `make buildworld' so that the shared
libs built in the middle of `make buildworld' are used vs. the ones in
/usr/lib on the build machine.

Submitted by:	ru
2002-02-07 01:37:53 +00:00
David E. O'Brien
a1a1118a96 Change the way the version strings are handled. 2002-01-27 22:47:22 +00:00
David E. O'Brien
e1382dde0b Binutils 2.11.2 build framework for the FreeBSD/IA-64 target. 2001-10-15 02:13:26 +00:00
David E. O'Brien
b3119f80e8 You know the last revision will work better if the TARGET_TUPLE is set
conditionally....
2001-10-14 02:13:55 +00:00
David E. O'Brien
4ac9161617 Allow easier override of the configure tuple, in case you wanted to build
as "powerpc-obrien-freebsd" rahter than "powerpc-unknown-freebsd" for example.
2001-10-14 02:12:40 +00:00
David E. O'Brien
8f0d33af07 Clean up a little bit more. 2001-10-14 01:58:18 +00:00
David E. O'Brien
4ab605cf6d Clean up the formatting. 2001-10-14 01:57:19 +00:00
David E. O'Brien
80eaeb4242 We do "sparc64", not "sparc". 2001-10-14 01:57:07 +00:00
Ruslan Ermilov
946b7fa17e Fixed the buildworld breakage in cross-tools caused by
misuse of /usr/src/include headers.  This REALLY fixes
the 20010919 src/UPDATING entry.

With this patch the 4.2-RELEASE box was able to survive
the 5.0-CURRENT "make world".

Beat over the head with this patch:	obrien
2001-09-24 09:25:05 +00:00
David E. O'Brien
21bb5468b7 Minor style reformatting. 2001-06-01 05:31:02 +00:00
David E. O'Brien
0644c58328 Upgrade to Binutils 2.11.0. 2001-06-01 05:30:31 +00:00
David E. O'Brien
f99372a0e4 Upgrade to Binutils 2.11.0. 2001-05-28 09:19:47 +00:00
David E. O'Brien
bb59398935 Total hack to fix broken bootstrap. Add -I/usr/src/include at the tail
end of the include searching.  We really need a real fix for the issue of
which set of headers to use in compiling the cross-tools -- /usr/include,
or /usr/src/include.
2001-05-03 21:37:06 +00:00
David E. O'Brien
370d222b7f Remove MIPS support.
It has rotted quite badly and no one has provided updates for it.
2001-04-11 00:12:48 +00:00
David E. O'Brien
16833ea1d9 Allow "NOSHARED" to be overridden.
Submitted by:	bde
2001-02-28 10:46:50 +00:00
David E. O'Brien
23d39e7247 Make critical toolchain binaries staticly linked in this development
version of the OS.
2001-02-27 11:25:43 +00:00
David E. O'Brien
688292859a Our OS name is "freebsd", not "freebsdelf" 2001-02-21 11:43:35 +00:00
David E. O'Brien
5ce16708c7 stringify.sed' has been replaced by astring.sed' [on ANSI-C systems]. 2000-11-25 13:56:28 +00:00
David E. O'Brien
7f3d7f20f8 Pull the switch and activate our Binutils to a snapshot of the up and
comming 2.10 release.
2000-05-22 08:09:42 +00:00
Steve Price
d07cc88aff Build and install the elf32_sparc ld(1) scripts and make elf32_sparc
the default emulation.
2000-04-03 03:42:07 +00:00
Steve Price
5e59c5460c First cut at the (non-contrib) bits needed to build the binutils
distribution for FreeBSD/Sparc64.

Reviewed by:	obrien
2000-04-02 22:36:56 +00:00
Steve Price
78d3fce125 The ld directory is in ${SRCDIR} not ${BINUTILSDISTDIR}. 2000-04-02 20:23:58 +00:00
Bruce Evans
6a18627411 Use ${dir}/libfoo.a' instead of -L${dir} -lfoo' for local static
libraries in LDADD so that `make checkdpadd' doesn't report non-errors.

Fixed some style bugs (the usual ones for DPADD and LDADD, and misformatting
of $FreeBSD$).
2000-03-27 18:02:04 +00:00
Marcel Moolenaar
ecc4dcbd82 s/MACHINE_ARCH/TARGET_ARCH/g
The target machine is represented by TARGET_ARCH. MACHINE_ARCH always
represents the host machine. When TARGET_ARCH is not defined, it is
assumed to be equal to MACHINE_ARCH. This means that we're building a
native toolset by default. We're creating cross-compilation tools when
MACHINE_ARCH != TARGET_ARCH.

TARGET_ARCH is defined when building binutils as part of the bootstrap
build and is set to reflect the architecture we're currently cross-
building. With this change binutils is ready for cross-building.
1999-12-17 15:50:45 +00:00
John Birrell
4ed1406b4c Replace freebsdelf with freebsd in most places.
Requested by: obrien
1999-11-07 06:01:35 +00:00
John Birrell
4fecd2e259 Add support for additional architectures. 1999-11-06 22:52:33 +00:00
John Birrell
86f001b84c Use the simplified genscripts.sh and set the cross-compiled library
directory to /usr/cross/${MACHINE_ARCH}-freebsdelf/usr/lib so that
the cross tools behave the same way that the host versions do. When
building cross tools, Cygnus doesn't set the default library directory.
This doesn't suit FreeBSD IMHO.

Add WinNT emulation support too. You only get this if you've set
BINUTILSDISTDIR because the contrib/binutils repository doesn't
contain the required sources.
1999-11-06 22:46:45 +00:00
John Birrell
08d64a6b65 Use the simplified genscripts.sh and set the cross-compiled library
directory to /usr/cross/${MACHINE_ARCH}-freebsdelf/usr/lib so that
the cross tools behave the same way that the host versions do. When
building cross tools, Cygnus doesn't set the default library directory.
This doesn't suit FreeBSD IMHO.
1999-11-06 22:44:32 +00:00
John Birrell
6eb9b41026 This is a simplified version of the binutils script which better suits
the (few) things that the FreeBSD makefiles need to specify.
1999-11-06 22:40:15 +00:00
John Birrell
a719bd2fd1 Add a BINUTILSDISTDIR hook here too. 1999-11-06 22:36:40 +00:00
Peter Wemm
9b7a44a60e $Id$ -> $FreeBSD$ 1999-08-27 23:37:10 +00:00
Warner Losh
f1b48216be TARGET was being defined wrong, causing ld to always fail. It is the
name of the bfd target, not the gnu-standard target name.  Corrected
to be elf32-{big,little}mips from mipse[bl]-unknown-freebsd.

DEFAULT_EMULATION was bogusly defined, causing ld to always fail (this
was masked by the TARGET bogosity).  Define correctly as elf32bmip and
elf32lmip.  Mips doesn't follow the same conventions as i386 and alpha
do in this area.

ld now appears to work correctly for the uncommitted mips changes to
egcs.
1999-04-21 07:46:06 +00:00
Warner Losh
7408d8ff34 Add TARGET_ARCH=mipsel and TARGET_ARCH=mipseb as a valid targets.
Unlike the unisex architecutres we've had so far, mips is bisexual.
These tools can produce either byte sex, and the compiler/make
determines the proper gender to use.  Otherwise, we'd have to have had
mipsel and mipseb in all the places that we have just mips.  And there
are other complications with doing that (binutils doesn't like to
build mips tools without both byte genders, it seems).

Introduced BINUTIL_ARCH so that other bisexual architectures can a
generic mechanism.

We cannot just define MACHINE_ARCH as mips because we need to
differentiate big and little endian types of binaries.  Discussions on
freebsd-arch have hashed out this issue (and the parallel libc
issues).  NetBSD is moving towards mipsel and mipseb for their two
flavors of mips ports (in time for 1.4, if this change hasn't already
been accomplished).

I've been building i386 worlds with this tree for a three months with
these files in place with no ill effects.
1999-03-01 04:01:57 +00:00
John Polstra
34d2198035 Update for import of binutils-2.9.1.
Submitted by:	Doug Rabson <dfr>
1998-09-06 23:01:53 +00:00
Bruce Evans
365f9d17e4 Removed superfluous beforedepends. Their files were already in SRCS. 1998-06-04 06:38:17 +00:00
Bruce Evans
c35f4af578 Don't use beforedepend; just put generated headers in SRCS. ldgram.h
was already put in SRCS by the general yacc rules.  Putting ldemul-list.h
in SRCS fixes races in `make -jN' when .depend hasn't been made.

Don't forget to clean ldemul-list.h.
1998-06-04 06:26:23 +00:00
Peter Wemm
fb8bc13e4e Add missing DPADD's. 1998-06-03 18:01:04 +00:00
John Birrell
978b3eee15 The yacc makefile changes don't seem to know when to generate the
header file and when not to, so for the time being make sure the
sucker gets generated up front.
1998-05-11 09:33:55 +00:00
John Birrell
c8c066f7e3 Work out the list of emulations based on the cross-architectures
defined. The TARGET is now set from an included makefile.
1998-05-04 21:38:46 +00:00
John Birrell
a9ab354c8d Add cross-architecture support. 1998-05-04 21:29:54 +00:00
Bruce Evans
e6abc0de81 Fixed races in `make -jN' using new yacc rules. This also fixes plain
`make' (without a previous `make depend').
1998-05-04 16:31:41 +00:00
John Polstra
98ad0dae72 Give up on a.out support in binutils. It has too many problems to
be worth much effort.  Install all i386 binutils programs in
"/usr/libexec/elf".  Disable a.out support in libbfd.  It's too
dangerous to leave it in.  Some of the utilities think they can
handle a.out, but they generate bad object files.
1998-03-30 02:21:27 +00:00
John Polstra
ab5ad3a4b5 Restructure the binutils hierarchy somewhat in order to better
support building it for variant architectures.  It was already
becoming clear that the former structure was too rigid and didn't
scale well.

The usual sort of makefile magic arranges to .include an architecture
specific makefile "Makefile.${MACHINE_ARCH}" in each directory
where it exists.  Also, sources will be found in each subdirectory
"${MACHINE_ARCH}" that exists.  This is all taken care of automatically
by the top level "Makefile.inc0".

This all seems to work right for the i386 now.  I have also converted
those alpha pieces already present to the new schema as best I
could.

Also: change the BINDIR on the i386 to /usr/libexec/elf for "ar"
and "ranlib".  They are not object format independent enough to
put into /usr/bin.
1998-03-12 02:55:43 +00:00