gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gold / README
CommitLineData
bae7f79e 1gold is an ELF linker. It is intended to have complete support for
874c5b28
ILT
2ELF and to run as fast as possible on modern systems. For normal use
3it is a drop-in replacement for the older GNU linker.
bae7f79e 4
874c5b28
ILT
5gold is part of the GNU binutils. See ../binutils/README for more
6general notes, including where to send bug reports.
7
8gold was originally developed at Google, and was contributed to the
9Free Software Foundation in March 2008. At Google it was designed by
10Ian Lance Taylor, with major contributions by Cary Coutant, Craig
11Silverstein, and Andrew Chatham.
12
13The existing GNU linker manual is intended to be accurate
14documentation for features which gold supports. gold supports most of
15the features of the GNU linker for ELF targets. Notable
16omissions--features of the GNU linker not currently supported in
17gold--are:
874c5b28 18 * MRI compatible linker scripts
874c5b28 19 * cross-reference reports (--cref)
874c5b28
ILT
20 * various other minor options
21
22
23Notes on the code
24=================
25
26These are some notes which may be helpful to people working on the
27source code of gold itself.
28
29gold is written in C++. It is a GNU program, and therefore follows
30the GNU formatting standards as modified for C++. Source documents in
31order of decreasing precedence:
bae7f79e 32 http://www.gnu.org/prep/standards/
8952bc69 33 http://gcc.gnu.org/onlinedocs/libstdc++/manual/source_code_style.html
bae7f79e
ILT
34 http://www.zembu.com/eng/procs/c++style.html
35
36The linker is intended to have complete support for cross-compilation,
874c5b28
ILT
37while still supporting the normal case of native linking as fast as
38possible. In order to do this, many classes are actually templates
39whose parameter is the ELF file class (e.g., 32 bits or 64 bits). The
40C++ code is the same, but we don't pay the execution time cost of
41always using 64-bit integers if the target is 32 bits. Many of these
42class templates also have an endianness parameter: true for
43big-endian, false for little-endian.
bae7f79e 44
874c5b28
ILT
45The linker is multi-threaded. The Task class represents a single unit
46of work. Task objects are stored on a single Workqueue object. Tasks
47communicate via Task_token objects. Task_token objects are only
48manipulated while holding the master Workqueue lock. Relatively few
49mutexes are used.
14359ca0
ILT
50
51
52Build requirements
53==================
54
55The gold source code uses templates heavily. Building it requires a
9a5ce24c
ILT
56recent version of g++. g++ 4.0.3 and 4.1.3 are known to work. g++
573.2, 3.4.3, and 4.1.2 are known to fail.
14359ca0
ILT
58
59The linker script parser uses features which are only in newer
60versions of bison. bison 2.3 is known to work. bison 1.26 is known
61to fail. If you are building gold from an official binutils release,
62the bison output should already be included.
5bf135a7
NC
63
64\f
b3adc24a 65Copyright (C) 2012-2020 Free Software Foundation, Inc.
5bf135a7
NC
66
67Copying and distribution of this file, with or without modification,
68are permitted in any medium without royalty provided the copyright
69notice and this notice are preserved.
This page took 0.609547 seconds and 4 git commands to generate.