You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sandy 99da0f2c72 pl286 release code 4 years ago
..
po pl286 release code 4 years ago
testsuite pl286 release code 4 years ago
ChangeLog pl286 release code 4 years ago
Makefile.am pl286 release code 4 years ago
Makefile.in pl286 release code 4 years ago
NEWS pl286 release code 4 years ago
README pl286 release code 4 years ago
TODO pl286 release code 4 years ago
aarch64-reloc-property.cc pl286 release code 4 years ago
aarch64-reloc-property.h pl286 release code 4 years ago
aarch64-reloc.def pl286 release code 4 years ago
aarch64.cc pl286 release code 4 years ago
aclocal.m4 pl286 release code 4 years ago
archive.cc pl286 release code 4 years ago
archive.h pl286 release code 4 years ago
arm-reloc-property.cc pl286 release code 4 years ago
arm-reloc-property.h pl286 release code 4 years ago
arm-reloc.def pl286 release code 4 years ago
arm.cc pl286 release code 4 years ago
attributes.cc pl286 release code 4 years ago
attributes.h pl286 release code 4 years ago
binary.cc pl286 release code 4 years ago
binary.h pl286 release code 4 years ago
common.cc pl286 release code 4 years ago
common.h pl286 release code 4 years ago
compressed_output.cc pl286 release code 4 years ago
compressed_output.h pl286 release code 4 years ago
config.in pl286 release code 4 years ago
configure pl286 release code 4 years ago
configure.ac pl286 release code 4 years ago
configure.tgt pl286 release code 4 years ago
copy-relocs.cc pl286 release code 4 years ago
copy-relocs.h pl286 release code 4 years ago
cref.cc pl286 release code 4 years ago
cref.h pl286 release code 4 years ago
debug.h pl286 release code 4 years ago
defstd.cc pl286 release code 4 years ago
defstd.h pl286 release code 4 years ago
descriptors.cc pl286 release code 4 years ago
descriptors.h pl286 release code 4 years ago
dirsearch.cc pl286 release code 4 years ago
dirsearch.h pl286 release code 4 years ago
dwarf_reader.cc pl286 release code 4 years ago
dwarf_reader.h pl286 release code 4 years ago
dwp.cc pl286 release code 4 years ago
dwp.h pl286 release code 4 years ago
dynobj.cc pl286 release code 4 years ago
dynobj.h pl286 release code 4 years ago
ehframe.cc pl286 release code 4 years ago
ehframe.h pl286 release code 4 years ago
errors.cc pl286 release code 4 years ago
errors.h pl286 release code 4 years ago
expression.cc pl286 release code 4 years ago
ffsll.c pl286 release code 4 years ago
fileread.cc pl286 release code 4 years ago
fileread.h pl286 release code 4 years ago
freebsd.h pl286 release code 4 years ago
ftruncate.c pl286 release code 4 years ago
gc.cc pl286 release code 4 years ago
gc.h pl286 release code 4 years ago
gdb-index.cc pl286 release code 4 years ago
gdb-index.h pl286 release code 4 years ago
gold-threads.cc pl286 release code 4 years ago
gold-threads.h pl286 release code 4 years ago
gold.cc pl286 release code 4 years ago
gold.h pl286 release code 4 years ago
i386.cc pl286 release code 4 years ago
icf.cc pl286 release code 4 years ago
icf.h pl286 release code 4 years ago
incremental-dump.cc pl286 release code 4 years ago
incremental.cc pl286 release code 4 years ago
incremental.h pl286 release code 4 years ago
int_encoding.cc pl286 release code 4 years ago
int_encoding.h pl286 release code 4 years ago
layout.cc pl286 release code 4 years ago
layout.h pl286 release code 4 years ago
main.cc pl286 release code 4 years ago
mapfile.cc pl286 release code 4 years ago
mapfile.h pl286 release code 4 years ago
merge.cc pl286 release code 4 years ago
merge.h pl286 release code 4 years ago
mips.cc pl286 release code 4 years ago
mremap.c pl286 release code 4 years ago
nacl.cc pl286 release code 4 years ago
nacl.h pl286 release code 4 years ago
object.cc pl286 release code 4 years ago
object.h pl286 release code 4 years ago
options.cc pl286 release code 4 years ago
options.h pl286 release code 4 years ago
output.cc pl286 release code 4 years ago
output.h pl286 release code 4 years ago
parameters.cc pl286 release code 4 years ago
parameters.h pl286 release code 4 years ago
plugin.cc pl286 release code 4 years ago
plugin.h pl286 release code 4 years ago
powerpc.cc pl286 release code 4 years ago
pread.c pl286 release code 4 years ago
readsyms.cc pl286 release code 4 years ago
readsyms.h pl286 release code 4 years ago
reduced_debug_output.cc pl286 release code 4 years ago
reduced_debug_output.h pl286 release code 4 years ago
reloc-types.h pl286 release code 4 years ago
reloc.cc pl286 release code 4 years ago
reloc.h pl286 release code 4 years ago
resolve.cc pl286 release code 4 years ago
script-c.h pl286 release code 4 years ago
script-sections.cc pl286 release code 4 years ago
script-sections.h pl286 release code 4 years ago
script.cc pl286 release code 4 years ago
script.h pl286 release code 4 years ago
sparc.cc pl286 release code 4 years ago
stringpool.cc pl286 release code 4 years ago
stringpool.h pl286 release code 4 years ago
symtab.cc pl286 release code 4 years ago
symtab.h pl286 release code 4 years ago
system.h pl286 release code 4 years ago
target-reloc.h pl286 release code 4 years ago
target-select.cc pl286 release code 4 years ago
target-select.h pl286 release code 4 years ago
target.cc pl286 release code 4 years ago
target.h pl286 release code 4 years ago
tilegx.cc pl286 release code 4 years ago
timer.cc pl286 release code 4 years ago
timer.h pl286 release code 4 years ago
tls.h pl286 release code 4 years ago
token.h pl286 release code 4 years ago
version.cc pl286 release code 4 years ago
workqueue-internal.h pl286 release code 4 years ago
workqueue-threads.cc pl286 release code 4 years ago
workqueue.cc pl286 release code 4 years ago
workqueue.h pl286 release code 4 years ago
x86_64.cc pl286 release code 4 years ago
yyscript.y pl286 release code 4 years ago

README

gold is an ELF linker.  It is intended to have complete support for
ELF and to run as fast as possible on modern systems. For normal use
it is a drop-in replacement for the older GNU linker.

gold is part of the GNU binutils. See ../binutils/README for more
general notes, including where to send bug reports.

gold was originally developed at Google, and was contributed to the
Free Software Foundation in March 2008. At Google it was designed by
Ian Lance Taylor, with major contributions by Cary Coutant, Craig
Silverstein, and Andrew Chatham.

The existing GNU linker manual is intended to be accurate
documentation for features which gold supports. gold supports most of
the features of the GNU linker for ELF targets. Notable
omissions--features of the GNU linker not currently supported in
gold--are:
* MRI compatible linker scripts
* cross-reference reports (--cref)
* various other minor options


Notes on the code
=================

These are some notes which may be helpful to people working on the
source code of gold itself.

gold is written in C++. It is a GNU program, and therefore follows
the GNU formatting standards as modified for C++. Source documents in
order of decreasing precedence:
http://www.gnu.org/prep/standards/
http://gcc.gnu.org/onlinedocs/libstdc++/manual/source_code_style.html
http://www.zembu.com/eng/procs/c++style.html

The linker is intended to have complete support for cross-compilation,
while still supporting the normal case of native linking as fast as
possible. In order to do this, many classes are actually templates
whose parameter is the ELF file class (e.g., 32 bits or 64 bits). The
C++ code is the same, but we don't pay the execution time cost of
always using 64-bit integers if the target is 32 bits. Many of these
class templates also have an endianness parameter: true for
big-endian, false for little-endian.

The linker is multi-threaded. The Task class represents a single unit
of work. Task objects are stored on a single Workqueue object. Tasks
communicate via Task_token objects. Task_token objects are only
manipulated while holding the master Workqueue lock. Relatively few
mutexes are used.


Build requirements
==================

The gold source code uses templates heavily. Building it requires a
recent version of g++. g++ 4.0.3 and 4.1.3 are known to work. g++
3.2, 3.4.3, and 4.1.2 are known to fail.

The linker script parser uses features which are only in newer
versions of bison. bison 2.3 is known to work. bison 1.26 is known
to fail. If you are building gold from an official binutils release,
the bison output should already be included.

<span class="escaped-code-point" data-escaped="[U+000C]"><span class="char"> </span></span>
Copyright (C) 2012-2014 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.