H.J. Lu 0fd153457c Feed right input object to x86_64_mov_to_lea1[12] %!s(int64=9) %!d(string=hai) anos
..
po 1e1b2efc46 Update French Translations for LD and GOLD. %!s(int64=9) %!d(string=hai) anos
testsuite 0fd153457c Feed right input object to x86_64_mov_to_lea1[12] %!s(int64=9) %!d(string=hai) anos
ChangeLog 0fd153457c Feed right input object to x86_64_mov_to_lea1[12] %!s(int64=9) %!d(string=hai) anos
Makefile.am bdd2d2b7e6 Add diststuff target to Makefile. %!s(int64=9) %!d(string=hai) anos
Makefile.in bdd2d2b7e6 Add diststuff target to Makefile. %!s(int64=9) %!d(string=hai) anos
NEWS b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
README b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
TODO 70752818b0 * TODO: New file. %!s(int64=16) %!d(string=hai) anos
aarch64-reloc-property.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
aarch64-reloc-property.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
aarch64-reloc.def 6b0ad2ebf6 Support AARCH64_TLSLD_ADD_DTPREL_* relocations. %!s(int64=9) %!d(string=hai) anos
aarch64.cc 3b0357dada gold: fix ABI pagesize for aarch64 %!s(int64=9) %!d(string=hai) anos
aclocal.m4 ae2eea65c6 * configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS. %!s(int64=12) %!d(string=hai) anos
archive.cc cb5cf5e26e Fix internal error when linking an archive library with no preceding objects. %!s(int64=9) %!d(string=hai) anos
archive.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
arm-reloc-property.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
arm-reloc-property.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
arm-reloc.def b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
arm.cc cdb061674c 2015-07-23 Ian Coolidge <icoolidge@google.com> %!s(int64=9) %!d(string=hai) anos
attributes.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
attributes.h 5b07cd848d Fix an internal error in do_print_to_mapfile on Arm. %!s(int64=9) %!d(string=hai) anos
binary.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
binary.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
common.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
common.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
compressed_output.cc 19a7fe52ae Make default compression gABI compliant %!s(int64=9) %!d(string=hai) anos
compressed_output.h 480586639d Add SHF_COMPRESSED section decompression to gold %!s(int64=9) %!d(string=hai) anos
config.in 918357b955 Regenerate configure in gold %!s(int64=9) %!d(string=hai) anos
configure 37a42ee9ad Regenerate configure files %!s(int64=9) %!d(string=hai) anos
configure.ac 918357b955 Regenerate configure in gold %!s(int64=9) %!d(string=hai) anos
configure.tgt b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
copy-relocs.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
copy-relocs.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
cref.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
cref.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
debug.h 437ddf0c4c Improve ODR checking in gold. %!s(int64=9) %!d(string=hai) anos
defstd.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
defstd.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
descriptors.cc 8265ef9502 Add extra debugging output for files and descriptors. %!s(int64=9) %!d(string=hai) anos
descriptors.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
dirsearch.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
dirsearch.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
dwarf_reader.cc 437ddf0c4c Improve ODR checking in gold. %!s(int64=9) %!d(string=hai) anos
dwarf_reader.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
dwp.cc 0d5bbdb0e1 Support compressed debug sections in dynamic object files. %!s(int64=9) %!d(string=hai) anos
dwp.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
dynobj.cc b45e00b3ed Fix symbol versioning problems in PR 18703. %!s(int64=9) %!d(string=hai) anos
dynobj.h 480586639d Add SHF_COMPRESSED section decompression to gold %!s(int64=9) %!d(string=hai) anos
ehframe.cc e16631979e Fix failure in exception_static_test. %!s(int64=9) %!d(string=hai) anos
ehframe.h e16631979e Fix failure in exception_static_test. %!s(int64=9) %!d(string=hai) anos
errors.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
errors.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
expression.cc 1757d35c8a Fix internal error in gold when script uses section address in assignment. %!s(int64=9) %!d(string=hai) anos
ffsll.c b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
fileread.cc 8265ef9502 Add extra debugging output for files and descriptors. %!s(int64=9) %!d(string=hai) anos
fileread.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
freebsd.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
ftruncate.c b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
gc.cc 4277535cdc Use LIFO instead of FIFO to implement gc's transitive closure. %!s(int64=9) %!d(string=hai) anos
gc.h efc6fa128f Change Section_id type to use Relobj* instead of Object*. %!s(int64=9) %!d(string=hai) anos
gdb-index.cc 2d9afefe22 [gold] Recognize DWARF5/GCC5 DW_LANG_Fortran03 and DW_LANG_Fortran08. %!s(int64=9) %!d(string=hai) anos
gdb-index.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
gold-threads.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
gold-threads.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
gold.cc 9c7fe3c5c2 PR 17819: Fix --build-id=tree when using --compress-debug-sections. %!s(int64=9) %!d(string=hai) anos
gold.h 970cdef261 [GOLD] Fix handling of __start/__stop symbols %!s(int64=9) %!d(string=hai) anos
i386.cc 01f573ad8a Add EM_IAMCU support to gold %!s(int64=9) %!d(string=hai) anos
icf.cc efc6fa128f Change Section_id type to use Relobj* instead of Object*. %!s(int64=9) %!d(string=hai) anos
icf.h efc6fa128f Change Section_id type to use Relobj* instead of Object*. %!s(int64=9) %!d(string=hai) anos
incremental-dump.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
incremental.cc 0ed4b0bf3d Remove redundant include of "output.h". %!s(int64=9) %!d(string=hai) anos
incremental.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
int_encoding.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
int_encoding.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
layout.cc f54f5e31ce Clear SHF_COMPRESSED flag bit from input to output %!s(int64=9) %!d(string=hai) anos
layout.h dd68f8fa8e Fix bug where SECTIONS clause does not handle compressed debug sections. %!s(int64=9) %!d(string=hai) anos
main.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
mapfile.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
mapfile.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
merge.cc 400f89447b Use a std::vector instead of a std::map to hold Input_merge_map. %!s(int64=9) %!d(string=hai) anos
merge.h 400f89447b Use a std::vector instead of a std::map to hold Input_merge_map. %!s(int64=9) %!d(string=hai) anos
mips.cc 40fc1451c6 [MIPS] Map 'move' to 'or'. %!s(int64=9) %!d(string=hai) anos
mremap.c b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
nacl.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
nacl.h 775ed62ec5 Fix Sniff_file to get an aligned view. %!s(int64=9) %!d(string=hai) anos
object.cc 4bfacfd359 Fix --no-as-needed when shared library is listed twice on the command line. %!s(int64=9) %!d(string=hai) anos
object.h 4bfacfd359 Fix --no-as-needed when shared library is listed twice on the command line. %!s(int64=9) %!d(string=hai) anos
options.cc cd3c333f43 Change default to discard temporary local symbols in merge sections. %!s(int64=9) %!d(string=hai) anos
options.h 6457197210 Don't ignore "-m emulation" command line option %!s(int64=9) %!d(string=hai) anos
output.cc efc6fa128f Change Section_id type to use Relobj* instead of Object*. %!s(int64=9) %!d(string=hai) anos
output.h fb8b9dbc14 Extend --compress-debug-sections in gold %!s(int64=9) %!d(string=hai) anos
parameters.cc 6457197210 Don't ignore "-m emulation" command line option %!s(int64=9) %!d(string=hai) anos
parameters.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
plugin.cc efc6fa128f Change Section_id type to use Relobj* instead of Object*. %!s(int64=9) %!d(string=hai) anos
plugin.h 480586639d Add SHF_COMPRESSED section decompression to gold %!s(int64=9) %!d(string=hai) anos
powerpc.cc d49044c753 [GOLD] ppc64 out-of-line register save/restore functions %!s(int64=9) %!d(string=hai) anos
pread.c b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
readsyms.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
readsyms.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
reduced_debug_output.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
reduced_debug_output.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
reloc-types.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
reloc.cc 480586639d Add SHF_COMPRESSED section decompression to gold %!s(int64=9) %!d(string=hai) anos
reloc.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
resolve.cc 3d4fde6974 Fix internal error caused by IFUNC patch. %!s(int64=9) %!d(string=hai) anos
script-c.h 410da591ba PR gold/18048: Fix INCLUDE directive support for gold %!s(int64=9) %!d(string=hai) anos
script-sections.cc 7c61d651fd Fix problem where script specified both address and region for a section. %!s(int64=9) %!d(string=hai) anos
script-sections.h 7c61d651fd Fix problem where script specified both address and region for a section. %!s(int64=9) %!d(string=hai) anos
script.cc 1757d35c8a Fix internal error in gold when script uses section address in assignment. %!s(int64=9) %!d(string=hai) anos
script.h 1757d35c8a Fix internal error in gold when script uses section address in assignment. %!s(int64=9) %!d(string=hai) anos
sparc.cc 9eacb935ac Fix bug when applying R_SPARC_GOTDATA_OP* relocations to local symbols. %!s(int64=9) %!d(string=hai) anos
stringpool.cc 1c582fe718 Fix bug when optimizing string pools of aligned strings. %!s(int64=9) %!d(string=hai) anos
stringpool.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
symtab.cc 3d4fde6974 Fix internal error caused by IFUNC patch. %!s(int64=9) %!d(string=hai) anos
symtab.h b45e00b3ed Fix symbol versioning problems in PR 18703. %!s(int64=9) %!d(string=hai) anos
system.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
target-reloc.h 9215b98bb2 gold --emit-relocs %!s(int64=9) %!d(string=hai) anos
target-select.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
target-select.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
target.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
target.h efc6fa128f Change Section_id type to use Relobj* instead of Object*. %!s(int64=9) %!d(string=hai) anos
tilegx.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
timer.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
timer.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
tls.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
token.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
version.cc af759df025 Correct printed year in copyright notices for gold. %!s(int64=9) %!d(string=hai) anos
workqueue-internal.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
workqueue-threads.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
workqueue.cc b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
workqueue.h b90efa5b79 ChangeLog rotatation and copyright year update %!s(int64=9) %!d(string=hai) anos
x86_64.cc 1fa29f1060 [Gold,x86_64] Convert mov foo@GOTPCREL(%rip), %reg to lea foo(%rip), %reg %!s(int64=9) %!d(string=hai) anos
yyscript.y 410da591ba PR gold/18048: Fix INCLUDE directive support for gold %!s(int64=9) %!d(string=hai) anos

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.


Copyright (C) 2012-2015 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.