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

README

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

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-2022 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.