merge from gcc
[deliverable/binutils-gdb.git] / ld / NEWS
CommitLineData
252b5132 1-*- text -*-
ce11ba6c 2
a0c402a5
L
3* ELF: --warn-alternate-em option to warn if an object has alternate
4 ELF machine code.
5
4a93e180
NC
6* New script function REGION_ALIAS to add alias names to memory regions.
7
88183869
DK
8* PE targets no longer make use of the long section names PE extension to
9 the COFF format when generating executable images, by default. The old
10 (slightly non-conformant) behaviour can still be invoked by using the
3efd345c
DK
11 new '--enable-long-section-names' command-line option. It is also enabled
12 automatically in the presence of un-stripped debug information, as GDB
13 needs to be able to find the debug info sections by their full names.
88183869 14
28024d9d
L
15* --as-needed now links in a dynamic library if it satisfies undefined
16 symbols in regular objects, or in other dynamic libraries. In the
17 latter case the library is not linked if it is found in a DT_NEEDED
18 entry of one of the libraries already linked.
19
258795f5
L
20* Add a new command line option, -Ttext-segment ADDR, for ELF targets
21 to set the address of the first byte of the text segment.
22
c3b7224a
NC
23* Add support for Sunplus score architecture.
24
ce11ba6c
KT
25* Add new option --use-nul-prefixed-import-tables to ld for PE targets to
26 allow fallback to old import table generation with null element prefix.
27
e1c37eb5
DK
28* Windows PE systems now support a new --exclude-modules-for-implib option,
29 allowing users to partition object files and archive members between a DLL
30 and its associated import library as they are generated during linking.
31
84e94c90
NC
32* Add support for Lattice Mico32 (lm32) architecture.
33
7251ccbf
SR
34* Add CR16 ELF --embedded-relocs (used to embedded relocations into binaries
35 for Embedded-PIC code) option.
36
6cb442d3
KT
37* Add to the PE/PE+ targets the support of two different kinds of
38 pseudo-relocations. They can be selected by the switches
39 --enable-runtime-pseudo-reloc-v1 and --enable-runtime-pseudo-reloc-v2.
40 For the switch --enable-runtime-pseudo-reloc it uses for 32-bit
41 runtime pseudo relocation version one, for 64-bit the version two.
42
6e33da12
TG
43Changes in 2.19:
44
66c103b7
AM
45* Linker scripts support a new INSERT command that makes it easier to
46 augment the default script.
47
967928e9 48* Linker script input section filespecs may now specify a file within an
66c103b7 49 archive by writing "archive:file".
967928e9 50
de7dd2bd
NC
51* The --sort-common switch now has an optional argument which specifies the
52 direction of sorting.
53
7fb9f789
NC
54* The M68K linker now supports multiple GOT generation schemes controlled via
55 the --got=<type> command line option.
56
66c103b7
AM
57* The ARM EABI linker will now generate stubs for function calls to symbols
58 that are too far away. The placement of the stubs is controlled by a new
59 linker command line option: --stub-group-size=N.
726150b7 60
7c3d153f
NC
61Changes in 2.18:
62
f96b4a7b
NC
63* Linker sources now released under version 3 of the GNU General Public
64 License.
65
c0065db7
RM
66* ELF: New --build-id option to generate a unique per-binary identifier
67 embedded in a note section.
68
3d3d428f 69* Added support for National Semicondutor CompactRISC (ie CR16) target.
a19bcec6 70
bcb674cf
RS
71* -l:foo now searches the library path for a filename called foo,
72 without converting it to libfoo.a or libfoo.so.
73
14be8564
L
74* Add a new command line option '--default-script=FILE' or '-dT FILE'
75 which specifies a replacement for the built in, default linker
76 script.
77
40b36307
L
78* ELF: Add -Bsymbolic-functions, --dynamic-list-cpp-new, which puts C++
79 operator new and delete on the dynamic list, and --dynamic-list-data,
80 builtin list for --dynamic-list, which puts global data symbols on the
81 dynamic list.
82
99ad8390
NC
83* Add support for x86_64 PE+ target.
84
1c0d3aa6
NC
85* Add support for Score target.
86
55255dae
L
87* ELF: Add --dynamic-list option to specify a list of global symbols
88 whose references shouldn't be bound to the definition within the
89 shared library, or a list of symbols which should be added to the
90 symbol table in the executable.
91
dc0b6aa0
AM
92* The default output section LMA has changed for allocatable sections from
93 being equal to VMA, to keeping the difference between LMA and VMA the same as
94 the previous output section in the same region. This is a more useful
95 default when using overlays and other cases where you specify an LMA
96 differing from the VMA for some sections.
97
c17d87de
NC
98* New switch: --print-gc-sections to list any sections removed by garabge
99 collection.
100
c6dd86c6 101* ARM: Added --vfp11-denorm-fix option to work around an erratum in current
f96b4a7b 102 VFP11 coprocessors.
c6dd86c6 103
c17d87de 104Changes in 2.17:
cf88bb9f 105
d70c5fc7
NC
106* Support for the Infineon XC16X has been added by KPIT Cummins Infosystems.
107
dfcffada
AM
108* Modify the Linux linker search order to better match ld.so search order.
109 Look for DT_NEEDED libraries in paths specified by ld.so.conf before
110 searching the default directories, rather than vice versa.
111 Use $prefix/etc/ld.so.conf if it exists, otherwise /etc/ld.so.conf.
c1446dba 112
4b5bd4e7
DS
113* PE-COFF: Forward exports from DLL's can now be specified in .def files
114 passed directly to ld.
115
3c9b82ba
NC
116* Support for the Z80 processor family has been added.
117
3e8a519c
MM
118* Add support for the "@<file>" syntax to the command line, so that extra
119 switches can be read from <file>.
120
957d91c1
NC
121Changes in 2.16:
122
319850b4
JB
123* Support for the R_ARM_V4BX relocation as defined in the ARM AAELF
124 specification has been added via the --fix-v4bx command-line option.
125
b717d30e
JJ
126* New linker script construct AS_NEEDED(), which sets the --as-needed flag
127 for input files listed inside of it.
128
e2243057
RS
129* A new command-line option, --sysroot, can be used to override the
130 default sysroot location. It only applies to toolchains that were
131 configured using --with-sysroot.
132
3ec57632
NC
133* New linker script functions: ORIGIN() and LENGTH() which return information
134 about a specified memory region.
135
7499d566
NC
136* Port to MAXQ processor contributed by HCL Tech.
137
ba916c8a
MM
138* Added SEGMENT_START to the linker script language to permit the user to
139 override the base address for a segment from the command-line.
140
8fdd7217
NC
141* ELF: --warn-shared-textrel option to warn if adding a DT_TEXTREL to a shared
142 object.
143
bcaa7b3e
L
144* Added SORT_BY_NAME and SORT_BY_ALIGNMENT to the linker script
145 language to permit sorting sections by section name or section
146 maximum alignment.
147
148* Added a new linker command line switch, --sort-section name|alignment,
149 to sort sections by section name or maximum alignment.
150
8fdd7217
NC
151* ELF: --add-needed/--no-add-needed options to control if a DT_NEEDED tag
152 should be added when a shared library comes from DT_NEEDED tags.
14b3c463 153
1fe1f39c
NC
154* Support for the crx-elf target added.
155
1a320fbb 156* Support for the sh-symbianelf target added.
1fe1f39c 157
2d643429
NC
158* A new linker command line switch has been added which allows the hash table
159 size to be set to a suitable prime value near to its argument. This switch
160 is --hash-size=<NUMBER>. Also if the switch --reduce-memory-overheads is
161 used, and --hash-size has not been used, then the default value will be set
162 to 1021.
163
35835446
JR
164* Linker map files are now generated with an O(N) algorithm for finding symbols
165 that are defined in each section. This uses about 40% more memory for
166 symbols than the old O(N^2) algorithm. You can use the new
167 --reduce-memory-overheads option to select the old algorithm; this option
168 might also be used in the future to select similar tradeoffs.
169
2d643429 170Changes in 2.15:
14b3c463 171
8fdd7217
NC
172* ELF: --as-needed/--no-as-needed options to control if a DT_NEEDED tag should
173 be added only when a shared library is referenced.
c0065db7 174
8fdd7217 175* PE: --large-address-aware option to indicate executables support virtual
26d2d8a2
BF
176 addresses greater than 2 gigabytes.
177
1b169501
BF
178* DWARF 2 support for i386pe added.
179
c894ddfb
HPN
180* The linker script operator DEFINED() will now yield 1 only for a symbol that
181 is defined before the statement where DEFINED is used.
182
7a7f4e42
CD
183* The MIPS --embedded-relocs (used to embed relocations into binaries for
184 Embedded-PIC code) is deprecated and will be removed in a future release.
185
0949843d
NC
186* cr16c support added by NSC.
187
6edf0760
NC
188* m32r Linux (ELF) support added by Renesas.
189
560e09e9
NC
190* Improved linker's handling of unresolved symbols. The switch
191 --unresolved-symbols=<method> has been added to tell the linker when it
192 should report them and the switch --warn-unresolved-symbols has been added to
193 make reports be issued as warning messages rather than errors.
194
43c58ae6
CD
195Changes in 2.14:
196
e8fd7476
NC
197* Added support for Xtensa architecture.
198
9c8ebd6a
DJ
199* Added --with-sysroot configure switch to specify a target system root, for
200 linking against a target filesystem image.
201
312b768e
NC
202* Added --accept-unknown-linker-format to restore old linker behaviour (pre
203 2.14) of silently accepting and linking in any files in an unknown binary
204 file format.
205
63fd3b82
NC
206* Added --no-omagic to undo the effects of the -N option.
207
004d9caf
NC
208* Support for Texas Instruments TMS320C4x and TMS320C3x series of
209 DSP's contributed by Michael Hayes and Svein E. Seldal.
c0065db7 210
8e523c23
NC
211* Added --with-lib-path configure switch to specify default value for
212 LIB_PATH.
213
7e392df6
NC
214* ARM port to QNX operating system added by Graeme Peterson.
215
cf88bb9f
NC
216* IP2K support added by Denis Chertykov.
217
2cbb2eef
NC
218Changes in 2.13:
219
220* Support for the Fujitsu FRV architecture added by Red Hat. Models for FR400
221 and FR500 included.
7d553a40 222
37020578
JT
223Changes in version 2.13:
224
225* DEC VAX ELF support, by Matt Thomas.
226
9a66911f
NC
227Changes in version 2.12:
228
49fda6c8
HPN
229* Support for Don Knuth's MMIX, by Hans-Peter Nilsson.
230
3b16e843
NC
231* Support for the OpenRISC 32-bit embedded processor by OpenCores.
232
8bd621d8
AM
233* Support for -z nocopyreloc in the x86 ELF linker, which disables
234 production of copy relocs. Warning: using this option may result in
235 non-sharable applications.
5b343f5a 236
db6751f2
JJ
237* Support for -z combreloc in the ELF linker, which puts dynamic
238 relocations against the same symbol together, so that dynamic linker
239 can use an one-entry symbol lookup cache.
240
241* Support for ELF SHF_MERGE section merging, by Jakub Jelinek.
242
9a66911f
NC
243Changes in version 2.11:
244
b8355149
JH
245* Support for AMD x86-64 architecture, by Jan Hubicka, SuSE Labs.
246
18e03609
NC
247* Support added for eliminating duplicate DWARF2 debug information by
248 having the compiler generate the information in sections called
249 .gnu.linkonce.wi.XXXX where XXXX is a checksum for the contents. The
250 linker then merges these sections together into the normal .debug_info
251 section.
252b5132 252
ec4eb78a
L
253* The native ELF linker now searches the directories in DT_RUNPATH or
254 DT_RPATH of a shared library for shared libraries needed by it.
255
2d30b3da
TW
256* TI C54x support, by Timothy Wall.
257
176355da 258* Added command line switch --section-start to set the start address of any
c0065db7 259 specified section.
176355da 260
a712da20
NC
261* Added ability to emit full relocation information in linked executables,
262 enabled by --emit-relocs. Some post-linkage optimization tools need
263 this information in order to be able to correctly identify and perform
264 symbol relative addressing in the event of changes in section contents
265 (instructions being added or deleted, extending data sections, etc.)
266
22b36938
JE
267* Support for i860, by Jason Eckhardt (preliminary, alpha quality).
268
5bcac8a4
HPN
269* Support for CRIS (Axis Communications ETRAX series).
270
500800ca
NC
271* Support for PDP-11 and 2.11BSD a.out format, by Lars Brinkhoff.
272
919e4093
AM
273Changes in version 2.10:
274
c0065db7 275* Added AT> to the linker script language to allow load-time allocation of
5948916f
TW
276 sections into regions.
277
c0065db7 278* Added garbage collection of unused sections, enabled by --gc-sections.
252b5132 279 It does require a bit of backend support; currently implemented are
4667035e
AM
280 arm-elf, avr-elf, d10v-elf, fr30-elf, i386-elf, m32r-elf, m68k-elf,
281 mcore-elf, mips-elf, mn10300-elf, ppc-elf, sh-elf, sparc-elf, and v850-elf.
987fd5b4 282 Others will ignore the option.
252b5132
RH
283
284* Added SORT to the linker script language to permit sorting sections by file
285 name or section name.
286
287* Added EXTERN to the linker script language as an equivalent to the -u
288 command-line option.
289
290* Added ASSERT to the linker script language.
291
277c9afe
ILT
292* Added EXCLUDE_FILE to the linker script language for further control over
293 wildcard file names.
294
252b5132 295* Added -O option to optimize linker output (as of this writing, this only
500800ca 296 affects ELF shared library generation).
252b5132
RH
297
298* The -e option now accepts a number as well as a symbol name.
299
2575273d
ILT
300* Added --no-undefined option to disallow undefined symbols when creating a
301 shared library.
302
9b1d3b78
ILT
303* The linker now issues a warning, not an error, for an undefined symbol when
304 using -Bsymbolic; use the new --no-undefined option to get the old
305 behaviour.
306
252b5132
RH
307* Added --demangle and --no-demangle options.
308
309Changes in version 2.9:
310
311* Added SQUAD to the linker script language.
312
313* New option --no-warn-mismatch.
314
315* The MEMORY command now parses the attributes to determine where sections that
316 are not placed in a specific memory region are placed.
317
318Changes in version 2.8:
319
320* Linker scripts may now contain shell wildcard characters for file and section
321 names.
322
323* The linker now supports symbol versions in ELF.
324
325* The NOCROSSREFS command was added to the linker script language.
326
327* The LOADADDR expression was added to the linker script language.
328
329* MAX and MIN functions were added to the linker script language.
330
331* The OVERLAY construct was added to the linker script language.
332
333* New option --warn-section-align to warn when the address of an output section
334 changes due to alignment of an input section.
335
336* New options --filter/-F and --auxiliary/-f.
337
338Changes in version 2.7:
339
340* New option --cref to print out a cross reference table.
341
342* New option --wrap SYMBOL.
343
344* New option --no-whole-archive, to turn off the effect of --whole-archive.
345
346* Input sections assigned to the output section /DISCARD/ in the linker script
347 are not included in the output file.
348
349* The SunOS and ELF linkers now merge stabs debugging information which uses
350 the N_BINCL and N_EINCL stab types. This reduces the amount of debugging
351 information generated.
352
353Changes in version 2.6:
354
355* When an ELF section name is representable as a C identifier (this is not true
45f111cc
NC
356of most ELF section names), the linker will automatically define symbols
357__start_SECNAME and __stop_SECNAME, where SECNAME is the section name, at the
358beginning and the end of the section. This is used by glibc.
359
360 Addendum: Current versions of the linker (at least for version 2.18 onwards
361and possibly much earlier as well) place two restrictions on this feature: The
362symbols are only implemented for orphaned sections, not for explicitly placed
363sections and they are PROVIDEd rather than being defined.
252b5132
RH
364
365* When an ELF section named .gnu.warning is encountered in an input file, the
366contents of the section are displayed as an error message, and the section is
367not copied into the output file. This is used by glibc.
368
369* When an ELF section named .gnu.warning.SYMBOL is encountered in an input
370file, and the symbol SYMBOL is referenced by some object file, the contents of
371the section are displayed as an error message. The section is not copied into
1049f94e 372the output file, unless doing a relocatable or shared link. This is used by
252b5132
RH
373glibc.
374
375* New options -split-by-reloc and -split-by-file.
376
377* The linker now supports linking PIC compiled code on SPARC SunOS. It can
378also create SPARC SunOS shared libraries, and, like the native SunOS linker,
379will do so whenever there is an undefined symbol in the link and neither the -e
380nor the -r option was used.
381
382* The -rpath option may be used on SunOS to set the list of directories to be
383searched at run time. This overrides the default of building the list from the
384-L options.
385
386* The COFF linker now combines debugging information for structs, unions, and
387enums, so that even if the same type is defined in multiple input files it will
388only be defined once in the output file. The --traditional-format switch will
389prevent this optimization.
390
391Changes in version 2.5:
392
393* The linker now supports linking against SunOS shared libraries. It still can
394not link SunOS PIC (Position Independent Code) files, so it can not be used to
07f3b6ad 395generate shared libraries.
252b5132
RH
396
397* The linker now supports linking against ELF shared libraries for the i386
398(UnixWare) and SPARC (Solaris). It can also link ELF PIC files, and can be
399used to generate shared libraries. Shared library generation is not well
400tested; please report any problems encountered. The linker is now enabled for
401Solaris again.
402
403* Eric Youngdale has contributed Linux support code, including linking against
404Linux a.out shared libraries. The linker produces Linux QMAGIC binaries.
405
406* The ELF backend has been converted to the new linker code. To use the new
407ELF linker, each particular target requires a relocation function. So far,
408this function has been written for i386 (UnixWare), SPARC (Solaris) MIPS (Irix
4095), and HPPA ELF targets.
410
411* The -( (--start-group) and -) (--end-group) options have been added to
412support searching a group of archives as though they were a single archive.
413This can also be used in a linker script, as GROUP ( files ).
414
415* When a file is named on the command line, and the linker does not recognize
416it as an object file, the linker will now treat the file as a linker script
417file. A linker script named in this way augments, but does not replace, the
418default linker script.
419
420* The -warn-once option was added. It causes the linker to only warn once per
421undefined symbol, rather than once per reference.
422
423* The COFF backend has been converted to the new linker code. As with ELF, to
424use the new linker, each particular target requires a relocation function. So
425far, this function has been written for the i386, m68k, a29k and SH targets.
426
427* The -V flag was made a synonym for -v, for SVR4 compatibility. The old -V
428behaviour is available via --verbose.
429
430Changes in version 2.4:
431
432* New linker code, by Steve Chamberlain and Ian Taylor. For a.out and ecoff
433 formats (so far), this should result in considerable savings in time
434 and memory used while linking; slightly poorer performance than
435 before for formats not converted yet.
436
437* Command-line parsing is no longer done with flex. This means
438 oddball characters in filenames won't get treated as argument
439 separators.
440
441* HP-PA ELF support, by Jeff Law. (No SOM support yet.)
442
443* Mach i386 support, by David Mackenzie.
444
445* Irix 4 shared libraries are now supported (Irix 5 uses ELF, and ELF shared
446 libraries are not yet supported).
447
448* COFF shared libraries (as on SCO) should work as well.
449
450* The linker is disabled for Solaris. (Actually, it was in 2.3 also, I just
451 forgot to note it.) Some of their C library routines don't work when
452 statically linked, and the GNU linker doesn't support dynamic linking yet.
453
454Changes in version 2.3:
455
456* Weak symbols are now supported.
457
458* ELF support has been added. The linker has been bootstrapped on
459 UnixWare and Solaris.
460
461* Alpha OSF/1 support has been added (non dynamic linking only).
462
463Changes in version 2.2:
464
465* The `bfd' library has been updated to reduce a.out-format string
466 table size. The effect of this is that files linked from many input
467 files with duplicate symbols (`-g' debugging records, or identical
468 static symbols) should be much smaller.
469
470Changes in version 2.1:
471
472* The ld -ySYMBOL flag (to trace references to SYMBOL) is now implemented.
473
474* There is now support for writing ECOFF files, so ld and the
475 other utilities should work on Risc/Ultrix and Irix.
476
477\f
478Local variables:
479fill-column: 79
480End:
This page took 0.440639 seconds and 4 git commands to generate.