head	1.1;
branch	1.1.1;
access;
symbols
	netbsd-11-0-RC4:1.1.1.9
	netbsd-11-0-RC3:1.1.1.9
	netbsd-11-0-RC2:1.1.1.9
	binutils-2-46:1.1.1.11
	netbsd-11-0-RC1:1.1.1.9
	binutils-2-45:1.1.1.10
	perseant-exfatfs-base-20250801:1.1.1.9
	netbsd-11:1.1.1.9.0.2
	netbsd-11-base:1.1.1.9
	netbsd-10-1-RELEASE:1.1.1.7
	perseant-exfatfs-base-20240630:1.1.1.9
	binutils-2-42:1.1.1.9
	perseant-exfatfs:1.1.1.8.0.2
	perseant-exfatfs-base:1.1.1.8
	netbsd-8-3-RELEASE:1.1.1.5
	netbsd-9-4-RELEASE:1.1.1.7
	netbsd-10-0-RELEASE:1.1.1.7
	netbsd-10-0-RC6:1.1.1.7
	netbsd-10-0-RC5:1.1.1.7
	netbsd-10-0-RC4:1.1.1.7
	netbsd-10-0-RC3:1.1.1.7
	netbsd-10-0-RC2:1.1.1.7
	netbsd-10-0-RC1:1.1.1.7
	binutils-2-39:1.1.1.8
	netbsd-10:1.1.1.7.0.10
	netbsd-10-base:1.1.1.7
	netbsd-9-3-RELEASE:1.1.1.7
	cjep_sun2x-base1:1.1.1.7
	cjep_sun2x:1.1.1.7.0.8
	cjep_sun2x-base:1.1.1.7
	cjep_staticlib_x-base1:1.1.1.7
	netbsd-9-2-RELEASE:1.1.1.7
	cjep_staticlib_x:1.1.1.7.0.6
	cjep_staticlib_x-base:1.1.1.7
	netbsd-9-1-RELEASE:1.1.1.7
	phil-wifi-20200421:1.1.1.7
	phil-wifi-20200411:1.1.1.7
	is-mlppp:1.1.1.7.0.4
	is-mlppp-base:1.1.1.7
	phil-wifi-20200406:1.1.1.7
	binutils-2-34:1.1.1.7
	netbsd-8-2-RELEASE:1.1.1.5
	netbsd-9-0-RELEASE:1.1.1.7
	netbsd-9-0-RC2:1.1.1.7
	netbsd-9-0-RC1:1.1.1.7
	phil-wifi-20191119:1.1.1.7
	netbsd-9:1.1.1.7.0.2
	netbsd-9-base:1.1.1.7
	phil-wifi-20190609:1.1.1.7
	netbsd-8-1-RELEASE:1.1.1.5
	netbsd-8-1-RC1:1.1.1.5
	pgoyette-compat-merge-20190127:1.1.1.5.12.2
	pgoyette-compat-20190127:1.1.1.7
	pgoyette-compat-20190118:1.1.1.7
	pgoyette-compat-1226:1.1.1.7
	pgoyette-compat-1126:1.1.1.7
	binutils-2-31-1:1.1.1.7
	pgoyette-compat-1020:1.1.1.6
	pgoyette-compat-0930:1.1.1.6
	pgoyette-compat-0906:1.1.1.6
	netbsd-7-2-RELEASE:1.1.1.3
	pgoyette-compat-0728:1.1.1.6
	netbsd-8-0-RELEASE:1.1.1.5
	phil-wifi:1.1.1.6.0.2
	phil-wifi-base:1.1.1.6
	pgoyette-compat-0625:1.1.1.6
	netbsd-8-0-RC2:1.1.1.5
	pgoyette-compat-0521:1.1.1.6
	pgoyette-compat-0502:1.1.1.6
	pgoyette-compat-0422:1.1.1.6
	netbsd-8-0-RC1:1.1.1.5
	pgoyette-compat-0415:1.1.1.6
	binutils-2-30:1.1.1.6
	pgoyette-compat-0407:1.1.1.5
	pgoyette-compat-0330:1.1.1.5
	pgoyette-compat-0322:1.1.1.5
	pgoyette-compat-0315:1.1.1.5
	netbsd-7-1-2-RELEASE:1.1.1.3
	pgoyette-compat:1.1.1.5.0.12
	pgoyette-compat-base:1.1.1.5
	netbsd-7-1-1-RELEASE:1.1.1.3
	matt-nb8-mediatek:1.1.1.5.0.10
	matt-nb8-mediatek-base:1.1.1.5
	perseant-stdc-iso10646:1.1.1.5.0.8
	perseant-stdc-iso10646-base:1.1.1.5
	netbsd-8:1.1.1.5.0.6
	netbsd-8-base:1.1.1.5
	prg-localcount2-base3:1.1.1.5
	prg-localcount2-base2:1.1.1.5
	prg-localcount2-base1:1.1.1.5
	prg-localcount2:1.1.1.5.0.4
	prg-localcount2-base:1.1.1.5
	pgoyette-localcount-20170426:1.1.1.5
	bouyer-socketcan-base1:1.1.1.5
	pgoyette-localcount-20170320:1.1.1.5
	netbsd-7-1:1.1.1.3.0.10
	netbsd-7-1-RELEASE:1.1.1.3
	netbsd-7-1-RC2:1.1.1.3
	netbsd-7-nhusb-base-20170116:1.1.1.3
	bouyer-socketcan:1.1.1.5.0.2
	bouyer-socketcan-base:1.1.1.5
	pgoyette-localcount-20170107:1.1.1.5
	netbsd-7-1-RC1:1.1.1.3
	pgoyette-localcount-20161104:1.1.1.5
	binutils-2-27:1.1.1.5
	netbsd-7-0-2-RELEASE:1.1.1.3
	localcount-20160914:1.1.1.4
	netbsd-7-nhusb:1.1.1.3.0.8
	netbsd-7-nhusb-base:1.1.1.3
	pgoyette-localcount-20160806:1.1.1.4
	binutils-2-26-1:1.1.1.4
	pgoyette-localcount-20160726:1.1.1.4
	pgoyette-localcount:1.1.1.4.0.2
	pgoyette-localcount-base:1.1.1.4
	netbsd-7-0-1-RELEASE:1.1.1.3
	binutils-2-26:1.1.1.4
	netbsd-7-0:1.1.1.3.0.6
	netbsd-7-0-RELEASE:1.1.1.3
	netbsd-7-0-RC3:1.1.1.3
	netbsd-7-0-RC2:1.1.1.3
	netbsd-7-0-RC1:1.1.1.3
	netbsd-6-0-6-RELEASE:1.1.1.2
	netbsd-6-1-5-RELEASE:1.1.1.2
	netbsd-7:1.1.1.3.0.4
	netbsd-7-base:1.1.1.3
	yamt-pagecache-base9:1.1.1.3
	yamt-pagecache-tag8:1.1.1.2
	netbsd-6-1-4-RELEASE:1.1.1.2
	netbsd-6-0-5-RELEASE:1.1.1.2
	tls-earlyentropy:1.1.1.3.0.2
	tls-earlyentropy-base:1.1.1.3
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.3
	riastradh-drm2-base3:1.1.1.3
	netbsd-6-1-3-RELEASE:1.1.1.2
	netbsd-6-0-4-RELEASE:1.1.1.2
	binutils-2-23-2:1.1.1.3
	netbsd-6-1-2-RELEASE:1.1.1.2
	netbsd-6-0-3-RELEASE:1.1.1.2
	netbsd-6-1-1-RELEASE:1.1.1.2
	riastradh-drm2-base2:1.1.1.2
	riastradh-drm2-base1:1.1.1.2
	riastradh-drm2:1.1.1.2.0.12
	riastradh-drm2-base:1.1.1.2
	netbsd-6-1:1.1.1.2.0.16
	netbsd-6-0-2-RELEASE:1.1.1.2
	netbsd-6-1-RELEASE:1.1.1.2
	netbsd-6-1-RC4:1.1.1.2
	netbsd-6-1-RC3:1.1.1.2
	agc-symver:1.1.1.2.0.14
	agc-symver-base:1.1.1.2
	netbsd-6-1-RC2:1.1.1.2
	netbsd-6-1-RC1:1.1.1.2
	yamt-pagecache-base8:1.1.1.2
	netbsd-6-0-1-RELEASE:1.1.1.2
	yamt-pagecache-base7:1.1.1.2
	matt-nb6-plus-nbase:1.1.1.2
	yamt-pagecache-base6:1.1.1.2
	netbsd-6-0:1.1.1.2.0.10
	netbsd-6-0-RELEASE:1.1.1.2
	netbsd-6-0-RC2:1.1.1.2
	tls-maxphys:1.1.1.2.0.8
	tls-maxphys-base:1.1.1.3
	matt-nb6-plus:1.1.1.2.0.6
	matt-nb6-plus-base:1.1.1.2
	netbsd-6-0-RC1:1.1.1.2
	yamt-pagecache-base5:1.1.1.2
	yamt-pagecache-base4:1.1.1.2
	netbsd-6:1.1.1.2.0.4
	netbsd-6-base:1.1.1.2
	yamt-pagecache-base3:1.1.1.2
	yamt-pagecache-base2:1.1.1.2
	yamt-pagecache:1.1.1.2.0.2
	yamt-pagecache-base:1.1.1.2
	binutils-2-21-1a:1.1.1.2
	cherry-xenmp:1.1.1.1.0.4
	cherry-xenmp-base:1.1.1.1
	bouyer-quota2-nbase:1.1.1.1
	bouyer-quota2:1.1.1.1.0.2
	bouyer-quota2-base:1.1.1.1
	matt-mips64-premerge-20101231:1.1.1.1
	binutils-2-19-1-20090402:1.1.1.1
	matt-premerge-20091211:1.1.1.1
	binutils-2-19-1:1.1.1.1
	FSF:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2009.08.18.10.16.42;	author skrll;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2009.08.18.10.16.42;	author skrll;	state Exp;
branches;
next	1.1.1.2;

1.1.1.2
date	2011.09.24.22.47.06;	author christos;	state Exp;
branches
	1.1.1.2.2.1
	1.1.1.2.8.1;
next	1.1.1.3;

1.1.1.3
date	2013.09.29.13.39.42;	author christos;	state Exp;
branches;
next	1.1.1.4;
commitid	TyuuzSx830x3Yk7x;

1.1.1.4
date	2016.01.29.12.44.21;	author christos;	state Exp;
branches
	1.1.1.4.2.1;
next	1.1.1.5;
commitid	B0qHLT45wK2yhPSy;

1.1.1.5
date	2016.10.26.17.29.45;	author christos;	state Exp;
branches
	1.1.1.5.12.1;
next	1.1.1.6;
commitid	su5ccdRz6qdh9Grz;

1.1.1.6
date	2018.04.14.22.18.47;	author christos;	state Exp;
branches
	1.1.1.6.2.1;
next	1.1.1.7;
commitid	ShNerhdmcUZyxsyA;

1.1.1.7
date	2018.11.06.21.18.42;	author christos;	state Exp;
branches;
next	1.1.1.8;
commitid	6Ndf2Zuj4yZRAVYA;

1.1.1.8
date	2022.12.23.19.01.35;	author christos;	state Exp;
branches
	1.1.1.8.2.1;
next	1.1.1.9;
commitid	AaAP7ITTx5JnmI6E;

1.1.1.9
date	2024.06.30.16.00.08;	author christos;	state Exp;
branches;
next	1.1.1.10;
commitid	Eqxmo2uubpM9w1gF;

1.1.1.10
date	2025.08.25.14.42.09;	author christos;	state Exp;
branches;
next	1.1.1.11;
commitid	aUBKFf4jmEzPv78G;

1.1.1.11
date	2026.02.11.19.49.36;	author christos;	state Exp;
branches;
next	;
commitid	vybCSY05tblOMZtG;

1.1.1.2.2.1
date	2014.05.22.15.54.12;	author yamt;	state Exp;
branches;
next	;
commitid	LcfsdHQ4HK08ayBx;

1.1.1.2.8.1
date	2014.08.19.23.52.27;	author tls;	state Exp;
branches;
next	;
commitid	jTnpym9Qu0o4R1Nx;

1.1.1.4.2.1
date	2016.11.04.14.42.51;	author pgoyette;	state Exp;
branches;
next	;
commitid	2m1JRwYmpwPkOOsz;

1.1.1.5.12.1
date	2018.04.16.01.58.16;	author pgoyette;	state Exp;
branches;
next	1.1.1.5.12.2;
commitid	qk3nktk0szmTIByA;

1.1.1.5.12.2
date	2018.11.26.01.50.08;	author pgoyette;	state Exp;
branches;
next	;
commitid	Zj4q5SspGdKXto1B;

1.1.1.6.2.1
date	2019.06.10.21.52.11;	author christos;	state Exp;
branches;
next	;
commitid	jtc8rnCzWiEEHGqB;

1.1.1.8.2.1
date	2024.07.01.00.59.55;	author perseant;	state Exp;
branches;
next	;
commitid	NkoYLLCQWWw9v4gF;


desc
@@


1.1
log
@Initial revision
@
text
@@@section Linker Functions
@@cindex Linker
The linker uses three special entry points in the BFD target
vector.  It is not necessary to write special routines for
these entry points when creating a new BFD back end, since
generic versions are provided.  However, writing them can
speed up linking and make it use significantly less runtime
memory.

The first routine creates a hash table used by the other
routines.  The second routine adds the symbols from an object
file to the hash table.  The third routine takes all the
object files and links them together to create the output
file.  These routines are designed so that the linker proper
does not need to know anything about the symbols in the object
files that it is linking.  The linker merely arranges the
sections as directed by the linker script and lets BFD handle
the details of symbols and relocs.

The second routine and third routines are passed a pointer to
a @@code{struct bfd_link_info} structure (defined in
@@code{bfdlink.h}) which holds information relevant to the link,
including the linker hash table (which was created by the
first routine) and a set of callback functions to the linker
proper.

The generic linker routines are in @@code{linker.c}, and use the
header file @@code{genlink.h}.  As of this writing, the only back
ends which have implemented versions of these routines are
a.out (in @@code{aoutx.h}) and ECOFF (in @@code{ecoff.c}).  The a.out
routines are used as examples throughout this section.

@@menu
* Creating a Linker Hash Table::
* Adding Symbols to the Hash Table::
* Performing the Final Link::
@@end menu

@@node Creating a Linker Hash Table, Adding Symbols to the Hash Table, Linker Functions, Linker Functions
@@subsection Creating a linker hash table
@@cindex _bfd_link_hash_table_create in target vector
@@cindex target vector (_bfd_link_hash_table_create)
The linker routines must create a hash table, which must be
derived from @@code{struct bfd_link_hash_table} described in
@@code{bfdlink.c}.  @@xref{Hash Tables}, for information on how to
create a derived hash table.  This entry point is called using
the target vector of the linker output file.

The @@code{_bfd_link_hash_table_create} entry point must allocate
and initialize an instance of the desired hash table.  If the
back end does not require any additional information to be
stored with the entries in the hash table, the entry point may
simply create a @@code{struct bfd_link_hash_table}.  Most likely,
however, some additional information will be needed.

For example, with each entry in the hash table the a.out
linker keeps the index the symbol has in the final output file
(this index number is used so that when doing a relocatable
link the symbol index used in the output file can be quickly
filled in when copying over a reloc).  The a.out linker code
defines the required structures and functions for a hash table
derived from @@code{struct bfd_link_hash_table}.  The a.out linker
hash table is created by the function
@@code{NAME(aout,link_hash_table_create)}; it simply allocates
space for the hash table, initializes it, and returns a
pointer to it.

When writing the linker routines for a new back end, you will
generally not know exactly which fields will be required until
you have finished.  You should simply create a new hash table
which defines no additional fields, and then simply add fields
as they become necessary.

@@node Adding Symbols to the Hash Table, Performing the Final Link, Creating a Linker Hash Table, Linker Functions
@@subsection Adding symbols to the hash table
@@cindex _bfd_link_add_symbols in target vector
@@cindex target vector (_bfd_link_add_symbols)
The linker proper will call the @@code{_bfd_link_add_symbols}
entry point for each object file or archive which is to be
linked (typically these are the files named on the command
line, but some may also come from the linker script).  The
entry point is responsible for examining the file.  For an
object file, BFD must add any relevant symbol information to
the hash table.  For an archive, BFD must determine which
elements of the archive should be used and adding them to the
link.

The a.out version of this entry point is
@@code{NAME(aout,link_add_symbols)}.

@@menu
* Differing file formats::
* Adding symbols from an object file::
* Adding symbols from an archive::
@@end menu

@@node Differing file formats, Adding symbols from an object file, Adding Symbols to the Hash Table, Adding Symbols to the Hash Table
@@subsubsection Differing file formats
Normally all the files involved in a link will be of the same
format, but it is also possible to link together different
format object files, and the back end must support that.  The
@@code{_bfd_link_add_symbols} entry point is called via the target
vector of the file to be added.  This has an important
consequence: the function may not assume that the hash table
is the type created by the corresponding
@@code{_bfd_link_hash_table_create} vector.  All the
@@code{_bfd_link_add_symbols} function can assume about the hash
table is that it is derived from @@code{struct
bfd_link_hash_table}.

Sometimes the @@code{_bfd_link_add_symbols} function must store
some information in the hash table entry to be used by the
@@code{_bfd_final_link} function.  In such a case the output bfd
xvec must be checked to make sure that the hash table was
created by an object file of the same format.

The @@code{_bfd_final_link} routine must be prepared to handle a
hash entry without any extra information added by the
@@code{_bfd_link_add_symbols} function.  A hash entry without
extra information will also occur when the linker script
directs the linker to create a symbol.  Note that, regardless
of how a hash table entry is added, all the fields will be
initialized to some sort of null value by the hash table entry
initialization function.

See @@code{ecoff_link_add_externals} for an example of how to
check the output bfd before saving information (in this
case, the ECOFF external symbol debugging information) in a
hash table entry.

@@node Adding symbols from an object file, Adding symbols from an archive, Differing file formats, Adding Symbols to the Hash Table
@@subsubsection Adding symbols from an object file
When the @@code{_bfd_link_add_symbols} routine is passed an object
file, it must add all externally visible symbols in that
object file to the hash table.  The actual work of adding the
symbol to the hash table is normally handled by the function
@@code{_bfd_generic_link_add_one_symbol}.  The
@@code{_bfd_link_add_symbols} routine is responsible for reading
all the symbols from the object file and passing the correct
information to @@code{_bfd_generic_link_add_one_symbol}.

The @@code{_bfd_link_add_symbols} routine should not use
@@code{bfd_canonicalize_symtab} to read the symbols.  The point of
providing this routine is to avoid the overhead of converting
the symbols into generic @@code{asymbol} structures.

@@findex _bfd_generic_link_add_one_symbol
@@code{_bfd_generic_link_add_one_symbol} handles the details of
combining common symbols, warning about multiple definitions,
and so forth.  It takes arguments which describe the symbol to
add, notably symbol flags, a section, and an offset.  The
symbol flags include such things as @@code{BSF_WEAK} or
@@code{BSF_INDIRECT}.  The section is a section in the object
file, or something like @@code{bfd_und_section_ptr} for an undefined
symbol or @@code{bfd_com_section_ptr} for a common symbol.

If the @@code{_bfd_final_link} routine is also going to need to
read the symbol information, the @@code{_bfd_link_add_symbols}
routine should save it somewhere attached to the object file
BFD.  However, the information should only be saved if the
@@code{keep_memory} field of the @@code{info} argument is TRUE, so
that the @@code{-no-keep-memory} linker switch is effective.

The a.out function which adds symbols from an object file is
@@code{aout_link_add_object_symbols}, and most of the interesting
work is in @@code{aout_link_add_symbols}.  The latter saves
pointers to the hash tables entries created by
@@code{_bfd_generic_link_add_one_symbol} indexed by symbol number,
so that the @@code{_bfd_final_link} routine does not have to call
the hash table lookup routine to locate the entry.

@@node Adding symbols from an archive, , Adding symbols from an object file, Adding Symbols to the Hash Table
@@subsubsection Adding symbols from an archive
When the @@code{_bfd_link_add_symbols} routine is passed an
archive, it must look through the symbols defined by the
archive and decide which elements of the archive should be
included in the link.  For each such element it must call the
@@code{add_archive_element} linker callback, and it must add the
symbols from the object file to the linker hash table.

@@findex _bfd_generic_link_add_archive_symbols
In most cases the work of looking through the symbols in the
archive should be done by the
@@code{_bfd_generic_link_add_archive_symbols} function.  This
function builds a hash table from the archive symbol table and
looks through the list of undefined symbols to see which
elements should be included.
@@code{_bfd_generic_link_add_archive_symbols} is passed a function
to call to make the final decision about adding an archive
element to the link and to do the actual work of adding the
symbols to the linker hash table.

The function passed to
@@code{_bfd_generic_link_add_archive_symbols} must read the
symbols of the archive element and decide whether the archive
element should be included in the link.  If the element is to
be included, the @@code{add_archive_element} linker callback
routine must be called with the element as an argument, and
the elements symbols must be added to the linker hash table
just as though the element had itself been passed to the
@@code{_bfd_link_add_symbols} function.

When the a.out @@code{_bfd_link_add_symbols} function receives an
archive, it calls @@code{_bfd_generic_link_add_archive_symbols}
passing @@code{aout_link_check_archive_element} as the function
argument. @@code{aout_link_check_archive_element} calls
@@code{aout_link_check_ar_symbols}.  If the latter decides to add
the element (an element is only added if it provides a real,
non-common, definition for a previously undefined or common
symbol) it calls the @@code{add_archive_element} callback and then
@@code{aout_link_check_archive_element} calls
@@code{aout_link_add_symbols} to actually add the symbols to the
linker hash table.

The ECOFF back end is unusual in that it does not normally
call @@code{_bfd_generic_link_add_archive_symbols}, because ECOFF
archives already contain a hash table of symbols.  The ECOFF
back end searches the archive itself to avoid the overhead of
creating a new hash table.

@@node Performing the Final Link, , Adding Symbols to the Hash Table, Linker Functions
@@subsection Performing the final link
@@cindex _bfd_link_final_link in target vector
@@cindex target vector (_bfd_final_link)
When all the input files have been processed, the linker calls
the @@code{_bfd_final_link} entry point of the output BFD.  This
routine is responsible for producing the final output file,
which has several aspects.  It must relocate the contents of
the input sections and copy the data into the output sections.
It must build an output symbol table including any local
symbols from the input files and the global symbols from the
hash table.  When producing relocatable output, it must
modify the input relocs and write them into the output file.
There may also be object format dependent work to be done.

The linker will also call the @@code{write_object_contents} entry
point when the BFD is closed.  The two entry points must work
together in order to produce the correct output file.

The details of how this works are inevitably dependent upon
the specific object file format.  The a.out
@@code{_bfd_final_link} routine is @@code{NAME(aout,final_link)}.

@@menu
* Information provided by the linker::
* Relocating the section contents::
* Writing the symbol table::
@@end menu

@@node Information provided by the linker, Relocating the section contents, Performing the Final Link, Performing the Final Link
@@subsubsection Information provided by the linker
Before the linker calls the @@code{_bfd_final_link} entry point,
it sets up some data structures for the function to use.

The @@code{input_bfds} field of the @@code{bfd_link_info} structure
will point to a list of all the input files included in the
link.  These files are linked through the @@code{link_next} field
of the @@code{bfd} structure.

Each section in the output file will have a list of
@@code{link_order} structures attached to the @@code{map_head.link_order}
field (the @@code{link_order} structure is defined in
@@code{bfdlink.h}).  These structures describe how to create the
contents of the output section in terms of the contents of
various input sections, fill constants, and, eventually, other
types of information.  They also describe relocs that must be
created by the BFD backend, but do not correspond to any input
file; this is used to support -Ur, which builds constructors
while generating a relocatable object file.

@@node Relocating the section contents, Writing the symbol table, Information provided by the linker, Performing the Final Link
@@subsubsection Relocating the section contents
The @@code{_bfd_final_link} function should look through the
@@code{link_order} structures attached to each section of the
output file.  Each @@code{link_order} structure should either be
handled specially, or it should be passed to the function
@@code{_bfd_default_link_order} which will do the right thing
(@@code{_bfd_default_link_order} is defined in @@code{linker.c}).

For efficiency, a @@code{link_order} of type
@@code{bfd_indirect_link_order} whose associated section belongs
to a BFD of the same format as the output BFD must be handled
specially.  This type of @@code{link_order} describes part of an
output section in terms of a section belonging to one of the
input files.  The @@code{_bfd_final_link} function should read the
contents of the section and any associated relocs, apply the
relocs to the section contents, and write out the modified
section contents.  If performing a relocatable link, the
relocs themselves must also be modified and written out.

@@findex _bfd_relocate_contents
@@findex _bfd_final_link_relocate
The functions @@code{_bfd_relocate_contents} and
@@code{_bfd_final_link_relocate} provide some general support for
performing the actual relocations, notably overflow checking.
Their arguments include information about the symbol the
relocation is against and a @@code{reloc_howto_type} argument
which describes the relocation to perform.  These functions
are defined in @@code{reloc.c}.

The a.out function which handles reading, relocating, and
writing section contents is @@code{aout_link_input_section}.  The
actual relocation is done in @@code{aout_link_input_section_std}
and @@code{aout_link_input_section_ext}.

@@node Writing the symbol table, , Relocating the section contents, Performing the Final Link
@@subsubsection Writing the symbol table
The @@code{_bfd_final_link} function must gather all the symbols
in the input files and write them out.  It must also write out
all the symbols in the global hash table.  This must be
controlled by the @@code{strip} and @@code{discard} fields of the
@@code{bfd_link_info} structure.

The local symbols of the input files will not have been
entered into the linker hash table.  The @@code{_bfd_final_link}
routine must consider each input file and include the symbols
in the output file.  It may be convenient to do this when
looking through the @@code{link_order} structures, or it may be
done by stepping through the @@code{input_bfds} list.

The @@code{_bfd_final_link} routine must also traverse the global
hash table to gather all the externally visible symbols.  It
is possible that most of the externally visible symbols may be
written out when considering the symbols of each input file,
but it is still necessary to traverse the hash table since the
linker script may have defined some symbols that are not in
any of the input files.

The @@code{strip} field of the @@code{bfd_link_info} structure
controls which symbols are written out.  The possible values
are listed in @@code{bfdlink.h}.  If the value is @@code{strip_some},
then the @@code{keep_hash} field of the @@code{bfd_link_info}
structure is a hash table of symbols to keep; each symbol
should be looked up in this hash table, and only symbols which
are present should be included in the output file.

If the @@code{strip} field of the @@code{bfd_link_info} structure
permits local symbols to be written out, the @@code{discard} field
is used to further controls which local symbols are included
in the output file.  If the value is @@code{discard_l}, then all
local symbols which begin with a certain prefix are discarded;
this is controlled by the @@code{bfd_is_local_label_name} entry point.

The a.out backend handles symbols by calling
@@code{aout_link_write_symbols} on each input BFD and then
traversing the global hash table with the function
@@code{aout_link_write_other_symbol}.  It builds a string table
while writing out the symbols, which is written to the output
file at the end of @@code{NAME(aout,final_link)}.

@@findex bfd_link_split_section
@@subsubsection @@code{bfd_link_split_section}
@@strong{Synopsis}
@@example
bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
@@end example
@@strong{Description}@@*
Return nonzero if @@var{sec} should be split during a
reloceatable or final link.
@@example
#define bfd_link_split_section(abfd, sec) \
       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))

@@end example

@@findex bfd_section_already_linked
@@subsubsection @@code{bfd_section_already_linked}
@@strong{Synopsis}
@@example
void bfd_section_already_linked (bfd *abfd, asection *sec,
    struct bfd_link_info *info);
@@end example
@@strong{Description}@@*
Check if @@var{sec} has been already linked during a reloceatable
or final link.
@@example
#define bfd_section_already_linked(abfd, sec, info) \
       BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))

@@end example

@


1.1.1.1
log
@Import binutils 2.19.1 as requested by matt@@

OK'ed by board@@
@
text
@@


1.1.1.2
log
@from ftp.gnu.org
@
text
@d179 1
a179 4
symbols from the object file to the linker hash table.  (The
callback may in fact indicate that a replacement BFD should be
used, in which case the symbols from that BFD should be added
to the linker hash table instead.)
d199 1
a199 1
the element's symbols must be added to the linker hash table
d201 1
a201 5
@@code{_bfd_link_add_symbols} function.  The @@code{add_archive_element}
callback has the option to indicate that it would like to
replace the element archive with a substitute BFD, in which
case it is the symbols of that substitute BFD that must be
added to the linker hash table instead.
d213 1
a213 2
linker hash table - possibly those of a substitute BFD, if the
@@code{add_archive_element} callback avails itself of that option.
a381 31
@@findex bfd_generic_define_common_symbol
@@subsubsection @@code{bfd_generic_define_common_symbol}
@@strong{Synopsis}
@@example
bfd_boolean bfd_generic_define_common_symbol
   (bfd *output_bfd, struct bfd_link_info *info,
    struct bfd_link_hash_entry *h);
@@end example
@@strong{Description}@@*
Convert common symbol @@var{h} into a defined symbol.
Return TRUE on success and FALSE on failure.
@@example
#define bfd_define_common_symbol(output_bfd, info, h) \
       BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))

@@end example

@@findex bfd_find_version_for_sym 
@@subsubsection @@code{bfd_find_version_for_sym }
@@strong{Synopsis}
@@example
struct bfd_elf_version_tree * bfd_find_version_for_sym
   (struct bfd_elf_version_tree *verdefs,
    const char *sym_name, bfd_boolean *hide);
@@end example
@@strong{Description}@@*
Search an elf version script tree for symbol versioning
info and export / don't-export status for a given symbol.
Return non-NULL on success and NULL on failure; also sets
the output @@samp{hide} boolean parameter.

@


1.1.1.2.8.1
log
@Rebase to HEAD as of a few days ago.
@
text
@d378 1
a378 2
bfd_boolean bfd_section_already_linked (bfd *abfd,
    asection *sec,
d382 2
a383 2
Check if @@var{data} has been already linked during a reloceatable
or final link.  Return TRUE if it has.
a420 11
@@findex bfd_hide_sym_by_version
@@subsubsection @@code{bfd_hide_sym_by_version}
@@strong{Synopsis}
@@example
bfd_boolean bfd_hide_sym_by_version
   (struct bfd_elf_version_tree *verdefs, const char *sym_name);
@@end example
@@strong{Description}@@*
Search an elf version script tree for symbol versioning
info for a given symbol.  Return TRUE if the symbol is hidden.

@


1.1.1.2.2.1
log
@sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs.  ("Protocol error: too many arguments")
@
text
@d378 1
a378 2
bfd_boolean bfd_section_already_linked (bfd *abfd,
    asection *sec,
d382 2
a383 2
Check if @@var{data} has been already linked during a reloceatable
or final link.  Return TRUE if it has.
a420 11
@@findex bfd_hide_sym_by_version
@@subsubsection @@code{bfd_hide_sym_by_version}
@@strong{Synopsis}
@@example
bfd_boolean bfd_hide_sym_by_version
   (struct bfd_elf_version_tree *verdefs, const char *sym_name);
@@end example
@@strong{Description}@@*
Search an elf version script tree for symbol versioning
info for a given symbol.  Return TRUE if the symbol is hidden.

@


1.1.1.3
log
@from ftp.gnu.org
@
text
@d378 1
a378 2
bfd_boolean bfd_section_already_linked (bfd *abfd,
    asection *sec,
d382 2
a383 2
Check if @@var{data} has been already linked during a reloceatable
or final link.  Return TRUE if it has.
a420 11
@@findex bfd_hide_sym_by_version
@@subsubsection @@code{bfd_hide_sym_by_version}
@@strong{Synopsis}
@@example
bfd_boolean bfd_hide_sym_by_version
   (struct bfd_elf_version_tree *verdefs, const char *sym_name);
@@end example
@@strong{Description}@@*
Search an elf version script tree for symbol versioning
info for a given symbol.  Return TRUE if the symbol is hidden.

@


1.1.1.4
log
@Import binutils-2.26
@
text
@d187 4
a190 1
@@code{_bfd_generic_link_add_archive_symbols} function.
d194 6
a199 1
symbols to the linker hash table.  If the element is to
d204 5
a208 1
@@code{_bfd_link_add_symbols} function.
d265 1
a265 1
link.  These files are linked through the @@code{link.next} field
d408 2
a409 2
@@findex bfd_find_version_for_sym
@@subsubsection @@code{bfd_find_version_for_sym}
@


1.1.1.4.2.1
log
@Sync with HEAD
@
text
@a420 26
@@findex bfd_link_check_relocs
@@subsubsection @@code{bfd_link_check_relocs}
@@strong{Synopsis}
@@example
bfd_boolean bfd_link_check_relocs
   (bfd *abfd, struct bfd_link_info *info);
@@end example
@@strong{Description}@@*
Checks the relocs in ABFD for validity.
Does not execute the relocs.
Return TRUE if everything is OK, FALSE otherwise.
This is the external entry point to this code.

@@findex _bfd_generic_link_check_relocs
@@subsubsection @@code{_bfd_generic_link_check_relocs}
@@strong{Synopsis}
@@example
bfd_boolean _bfd_generic_link_check_relocs
   (bfd *abfd, struct bfd_link_info *info);
@@end example
@@strong{Description}@@*
Stub function for targets that do not implement reloc checking.
Return TRUE.
This is an internal function.  It should not be called from
outside the BFD library.

@


1.1.1.5
log
@Import binutils-2.27 minus the testsuites
@
text
@a420 26
@@findex bfd_link_check_relocs
@@subsubsection @@code{bfd_link_check_relocs}
@@strong{Synopsis}
@@example
bfd_boolean bfd_link_check_relocs
   (bfd *abfd, struct bfd_link_info *info);
@@end example
@@strong{Description}@@*
Checks the relocs in ABFD for validity.
Does not execute the relocs.
Return TRUE if everything is OK, FALSE otherwise.
This is the external entry point to this code.

@@findex _bfd_generic_link_check_relocs
@@subsubsection @@code{_bfd_generic_link_check_relocs}
@@strong{Synopsis}
@@example
bfd_boolean _bfd_generic_link_check_relocs
   (bfd *abfd, struct bfd_link_info *info);
@@end example
@@strong{Description}@@*
Stub function for targets that do not implement reloc checking.
Return TRUE.
This is an internal function.  It should not be called from
outside the BFD library.

@


1.1.1.5.12.1
log
@Sync with HEAD, resolve some conflicts
@
text
@a395 17
@@findex bfd_generic_define_start_stop
@@subsubsection @@code{bfd_generic_define_start_stop}
@@strong{Synopsis}
@@example
struct bfd_link_hash_entry *bfd_generic_define_start_stop
   (struct bfd_link_info *info,
    const char *symbol, asection *sec);
@@end example
@@strong{Description}@@*
Define a __start, __stop, .startof. or .sizeof. symbol.
Return the symbol or NULL if no such undefined symbol exists.
@@example
#define bfd_define_start_stop(output_bfd, info, symbol, sec) \
       BFD_SEND (output_bfd, _bfd_define_start_stop, (info, symbol, sec))

@@end example

a446 36
@@findex bfd_merge_private_bfd_data
@@subsubsection @@code{bfd_merge_private_bfd_data}
@@strong{Synopsis}
@@example
bfd_boolean bfd_merge_private_bfd_data
   (bfd *ibfd, struct bfd_link_info *info);
@@end example
@@strong{Description}@@*
Merge private BFD information from the BFD @@var{ibfd} to the
the output file BFD when linking.  Return @@code{TRUE} on success,
@@code{FALSE} on error.  Possible error returns are:

@@itemize @@bullet

@@item
@@code{bfd_error_no_memory} -
Not enough memory exists to create private data for @@var{obfd}.
@@end itemize
@@example
#define bfd_merge_private_bfd_data(ibfd, info) \
       BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \
                 (ibfd, info))
@@end example

@@findex _bfd_generic_verify_endian_match
@@subsubsection @@code{_bfd_generic_verify_endian_match}
@@strong{Synopsis}
@@example
bfd_boolean _bfd_generic_verify_endian_match
   (bfd *ibfd, struct bfd_link_info *info);
@@end example
@@strong{Description}@@*
Can be used from / for bfd_merge_private_bfd_data to check that
endianness matches between input and output file.  Returns
TRUE for a match, otherwise returns FALSE and emits an error.

@


1.1.1.5.12.2
log
@Sync with HEAD, resolve a couple of conflicts
@
text
@a395 18
@@findex _bfd_generic_link_hide_symbol
@@subsubsection @@code{_bfd_generic_link_hide_symbol}
@@strong{Synopsis}
@@example
void _bfd_generic_link_hide_symbol
   (bfd *output_bfd, struct bfd_link_info *info,
    struct bfd_link_hash_entry *h);
@@end example
@@strong{Description}@@*
Hide symbol @@var{h}.
This is an internal function.  It should not be called from
outside the BFD library.
@@example
#define bfd_link_hide_symbol(output_bfd, info, h) \
       BFD_SEND (output_bfd, _bfd_link_hide_symbol, (output_bfd, info, h))

@@end example

@


1.1.1.6
log
@2018-01-10  Nick Clifton  <nickc@@redhat.com>

	* config-ml.in: Sync with gcc sources.
	* config.guess: Likewise.
	* config.sub: Likewise.
	* configure.ac: Likewise.
	* configure: Regenerate.

2017-12-14  Nick Clifton  <nickc@@redhat.com>

	* COPYING.LIBGLOSS: Update address of FSF in copyright notice.

2017-12-12  Stafford Horne  <shorne@@gmail.com>

	* configure.ac: Remove logic adding gdb to noconfigsdirs for or1k.
	* configure: Regenerate.

2017-09-15  Nick Clifton  <nickc@@redhat.com>

	* src-release.sh (LZIPPROG): New define.  Provides the name of the
	lzip program.
	(do_lz): New function.  Compresses a tarball using the lzip
	program.
	(do_compress): Add support for lzip compression.
	(usage): Mention -l option.
	(build_release): Support -l option to invoke lzip compression.

2017-09-15  Alan Modra  <amodra@@gmail.com>

	* src-release.sh (do_proto_toplev): Revert last patch.  Enable or
	disable binutils, gas, gdb, gold, gprof, ld, libdecnumber, readline,
	and sim depending on $tool and $support_files.  Echo configure line.

2017-09-14  Matt Rice <ratmice@@gmail.com>

	* src-release.sh (do_proto_toplev): Enable gold during release process.

2017-04-13  Andrew Jenner  <andrew@@codesourcery.com>

	* config.sub: Sync with master version in config project.

2017-04-03  Andrew Jenner  <andrew@@codesourcery.com>

	* config.sub: Handle ia16 in $basic_machine.

	bfd/
	* config.bfd: Handle ia16.

	gas/
	* configure.tgt: Handle ia16.

	ld/
	* configure.tgt: Handle ia16.

2017-03-22  Nick Clifton  <nickc@@redhat.com>

	* config.sub: Sync with master version in config project.
	* config.guess: Likewise.

2017-01-23  Nick Clifton  <nickc@@redhat.com>

	* configure.ac: Update year in copyright notice.
	Sync from FSF GCC mainline, bringing in the following patches.
	* Makefile.def: Likewise.
	* Makefile.tpl: Likewise.
	* configure: Regenerate.
	* Makefile.in: Regenerate.

	2016-12-21  Jakub Jelinek  <jakub@@redhat.com>

	* configure.ac: Don't bootstrap libmpx unless --with-build-config
	includes bootstrap-mpx.

	2016-12-01  Matthias Klose  <doko@@ubuntu.com>

	* configure.ac: Don't use pkg-config to check for bdw-gc.

	2016-11-30  Matthias Klose  <doko@@ubuntu.com>

	* Makefile.def: Remove reference to boehm-gc target module.
  	* configure.ac: Include pkg.m4, check for --with-target-bdw-gc
	options and for the bdw-gc pkg-config module.

	2016-11-15  Matthias Klose  <doko@@ubuntu.com>

	* config-ml.in: Remove references to GCJ.
	* configure.ac: Likewise.

	2016-09-30  Jakub Jelinek  <jakub@@redhat.com>

	* configure.ac: Add target-libffi to target_libraries.
	Readd libgcj target disablings, modified to only target-libffi.
	Readd target addition of go to unsupported languages.

	2016-09-30  Andrew Haley  <aph@@redhat.com>

	* Makefile.def: Remove libjava.
	* Makefile.tpl: Likewise.
	* configure.ac: Likewise.

	2016-09-26  Anton Kolesov  <Anton.Kolesov@@synopsys.com>

	* configure.ac: Disable "sim" directory for arc*-*-*.

	2016-09-12  Maciej W. Rozycki  <macro@@imgtec.com>

	* configure.ac: Check for the minimum in-tree MPFR version
	handled.

2016-12-31  Alan Modra  <amodra@@gmail.com>

	* config.sub: Import from upstream.

2016-12-08  Alan Modra  <amodra@@gmail.com>

	* configure: Regenerate.

2016-12-02  Josh Conner  <joshconner@@google.com>

	* configure.ac: Add fuchsia to targets that use ELF.
	* configure: Regenerated.

2016-11-07  Doug Evans  <dje@@google.com>

	* config.sub: Sync with upstream version 2016-11-03.
	git://git.sv.gnu.org/config.git
	* config.guess: Sync with upstream version 2016-10-02.

2016-09-27  Simon Marchi  <simon.marchi@@polymtl.ca>

	* .gitignore: Add archives and make stamps.

2016-07-20  Yan-Ting Lin  <currygt52@@gmail.com>

	* configure.ac (nds32*-*-*): Remove entry to enable gdb.
	* configure: Regenerated.
@
text
@a395 17
@@findex bfd_generic_define_start_stop
@@subsubsection @@code{bfd_generic_define_start_stop}
@@strong{Synopsis}
@@example
struct bfd_link_hash_entry *bfd_generic_define_start_stop
   (struct bfd_link_info *info,
    const char *symbol, asection *sec);
@@end example
@@strong{Description}@@*
Define a __start, __stop, .startof. or .sizeof. symbol.
Return the symbol or NULL if no such undefined symbol exists.
@@example
#define bfd_define_start_stop(output_bfd, info, symbol, sec) \
       BFD_SEND (output_bfd, _bfd_define_start_stop, (info, symbol, sec))

@@end example

a446 36
@@findex bfd_merge_private_bfd_data
@@subsubsection @@code{bfd_merge_private_bfd_data}
@@strong{Synopsis}
@@example
bfd_boolean bfd_merge_private_bfd_data
   (bfd *ibfd, struct bfd_link_info *info);
@@end example
@@strong{Description}@@*
Merge private BFD information from the BFD @@var{ibfd} to the
the output file BFD when linking.  Return @@code{TRUE} on success,
@@code{FALSE} on error.  Possible error returns are:

@@itemize @@bullet

@@item
@@code{bfd_error_no_memory} -
Not enough memory exists to create private data for @@var{obfd}.
@@end itemize
@@example
#define bfd_merge_private_bfd_data(ibfd, info) \
       BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \
                 (ibfd, info))
@@end example

@@findex _bfd_generic_verify_endian_match
@@subsubsection @@code{_bfd_generic_verify_endian_match}
@@strong{Synopsis}
@@example
bfd_boolean _bfd_generic_verify_endian_match
   (bfd *ibfd, struct bfd_link_info *info);
@@end example
@@strong{Description}@@*
Can be used from / for bfd_merge_private_bfd_data to check that
endianness matches between input and output file.  Returns
TRUE for a match, otherwise returns FALSE and emits an error.

@


1.1.1.6.2.1
log
@Sync with HEAD
@
text
@a395 18
@@findex _bfd_generic_link_hide_symbol
@@subsubsection @@code{_bfd_generic_link_hide_symbol}
@@strong{Synopsis}
@@example
void _bfd_generic_link_hide_symbol
   (bfd *output_bfd, struct bfd_link_info *info,
    struct bfd_link_hash_entry *h);
@@end example
@@strong{Description}@@*
Hide symbol @@var{h}.
This is an internal function.  It should not be called from
outside the BFD library.
@@example
#define bfd_link_hide_symbol(output_bfd, info, h) \
       BFD_SEND (output_bfd, _bfd_link_hide_symbol, (output_bfd, info, h))

@@end example

@


1.1.1.7
log
@2018-07-18  Nick Clifton  <nickc@@redhat.com>

	2.31.1 Release point.

2018-07-18  Nick Clifton  <nickc@@redhat.com>

	* (DEVO_SUPPORT): Fix typo in previous delta.
	(do_proto_toplev): Add --quiet option to configure command line.

2018-07-16  Nick Clifton  <nickc@@redhat.com>

	* src-release.sh (DEVO_SUPPORT): Add test-driver and ar-lib.

2018-07-06  Sebastian Huber  <sebastian.huber@@embedded-brains.de>

	* config.sub: Sync with upstream version 2018-07-03.

2018-07-05  Sebastian Huber  <sebastian.huber@@embedded-brains.de>

	* config.guess: Sync with upstream version 2018-06-26.
	* config.sub: Sync with upstream version 2018-07-02.

2018-06-24  Nick Clifton  <nickc@@redhat.com>

	* configure: Regenerate.

2018-06-19  Simon Marchi  <simon.marchi@@ericsson.com>

	* libtool.m4: Use AC_LANG_SOURCE.
	* configure.ac: Remove AC_PREREQ, use AC_LANG_SOURCE.
	* README-maintainer-mode: Update version requirements.
	* ar-lib: New file.
	* test-driver: New file.
	* configure: Re-generate.

2018-06-18  Eric Botcazou  <ebotcazou@@adacore.com>

	* Makefile.def (fortran): Add check-target-libgomp-fortran.
	* Makefile.tpl (check-target-libgomp-fortran): New phony target.
	* Makefile.in: Regenerate.

	* configure: Regenerate.

2018-06-18  Simon Marchi  <simon.marchi@@ericsson.com>

	* configure.ac: Sync with GCC, remove MPX-related things.

2018-05-01  Nick Clifton  <nickc@@redhat.com>

	* config.guess: Synchronize with config project master sources.
	* config.sub: Likewise.

2018-05-01  Francois H. Theron  <francois.theron@@netronome.com>

	* configure.ac: Added "nfp" target.
	* configure: Regenerate.

2018-02-13  Maciej W. Rozycki  <macro@@mips.com>

	* configure.ac <wasm32-*-*> (noconfigdirs): Add `ld'.
	* configure: Regenerate.

2018-01-30  Nick Clifton  <nickc@@redhat.com>

	* src-release.sh (do_proto_toplev): Add patterns for more junk files
	to delete before creating the tarball.

2018-01-29  Nick Clifton  <nickc@@redhat.com>

	* src-release.sh (do_proto_toplev): Strip patch remnant files from
	the sources before creating the tarball.

2018-01-13  Nick Clifton  <nickc@@redhat.com>

	* src-release.sh: Update copyright notice.  Change reference to devo
	to be a reference to root.
@
text
@a395 18
@@findex _bfd_generic_link_hide_symbol
@@subsubsection @@code{_bfd_generic_link_hide_symbol}
@@strong{Synopsis}
@@example
void _bfd_generic_link_hide_symbol
   (bfd *output_bfd, struct bfd_link_info *info,
    struct bfd_link_hash_entry *h);
@@end example
@@strong{Description}@@*
Hide symbol @@var{h}.
This is an internal function.  It should not be called from
outside the BFD library.
@@example
#define bfd_link_hide_symbol(output_bfd, info, h) \
       BFD_SEND (output_bfd, _bfd_link_hide_symbol, (output_bfd, info, h))

@@end example

@


1.1.1.8
log
@Update binutils from 2.34 to 2.39

2022-07-08  Nick Clifton  <nickc@@redhat.com>

	* 2.39 branch created.

2022-07-04  Nick Clifton  <nickc@@redhat.com>

	* libiberty: Synchronize with GCC.  Bring in:
	2022-07-01  Nick Clifton  <nickc@@redhat.com>

	PR demangler/105039
	* rust-demangle.c (demangle_const): Add recursion limit.

	2022-06-26  Simon Marchi  <simon.marchi@@efficios.com>

	* configure.ac: Add AC_CONFIG_MACRO_DIRS call.
	* configure: Re-generate.

2022-04-12  Nick Clifton  <nickc@@redhat.com>

	* zlib: Rebase to the 1.2.12 release.

2022-04-08  Simon Marchi  <simon.marchi@@efficios.com>

	* configure.ac: Add AC_SUBST(PKG_CONFIG_PATH).
	* configure: Re-generate.
	* Makefile.tpl (HOST_EXPORTS): Pass PKG_CONFIG_PATH.
	(PKG_CONFIG_PATH): New.
	* Makefile.in: Re-generate.

2022-03-15  Jose E. Marchesi  <jose.marchesi@@oracle.com>

	* gprofng/src/gp-collect-app.cc (collect::check_args): Use
	fallthrough comment instead of attribute.

2022-03-11  Vladimir Mezentsev  <vladimir.mezentsev@@oracle.com>

	* Makefile.def: Add gprofng module.
	* configure.ac: Add --enable-gprofng option.
	* src-release.sh: Add gprofng.
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* gprofng: New directory.

2022-01-22  Nick Clifton  <nickc@@redhat.com>

	* 2.38 release branch created.

2022-01-17  Nick Clifton  <nickc@@redhat.com>

	Update config.[guess|sub] from upstream:

	2022-01-09  Idan Horowitz  <idan.horowitz@@gmail.com>

	config.guess: recognize SerenityOS
	* config.guess (*:SerenityOS:*:*): Recognize.
	(timestamp): Update.

	2022-01-03  Bernhard Voelker  <mail@@bernhard-voelker.de>

	Fix GPLv3 license headers to use a comma instead of semicolon
	See: https://www.gnu.org/licenses/gpl-3.0.html#howto

	Update license headers automatically using the following script:

	  $ git grep -l 'Foundation; either version 3' \
	    | xargs sed -i '/Foundation; either version 3/ s/n; e/n, e/'

	* config.guess: Adjust via the above command.
	(timestamp): Update.
	* config.sub: Likewise.
	* doc/config.guess.1: Regenerate.
	* doc/config.sub.1: Likewise.

	2022-01-01  Dmitry V. Levin  <ldv@@altlinux.org>

	Update copyright years
	* config.guess: Update copyright years.
	* config.sub: Likewise.

	2021-12-25  Dmitry V. Levin  <ldv@@altlinux.org>

	config.sub: alias armh to armv7l
	ALT uses armh as an alias for armv7l-alt-linux-gnueabihf since 2012.

	* config.sub (armh-unknown|armh-alt): Set cpu, vendor, and basic_os.
	(timestamp): Update.

	2021-12-24  Dmitry V. Levin  <ldv@@altlinux.org>

	config.sub: alias aarch64le to aarch64
	Apparently, QNX reports aarch64 as aarch64le on little-endian machines.

	* config.sub (aarch64le-*): Set cpu to aarch64.
	(timestamp): Update.

	2021-12-13  Dmitry V. Levin  <ldv@@altlinux.org>

	config.sub: fix typo in timestamp
	* config.sub: Fix timestamp.

	2021-11-30  Andreas F. Borchert  <github@@andreas-borchert.de>

	config.guess: x86_64-pc-solaris2.11 is not properly recognized
	config.guess guesses Solaris 11 to run on a 32-bit platform
	despite Solaris 11 no longer supporting any 32-bit platform.

	See the following code at lines 434 to 445:

	| SUN_ARCH=i386
	| # If there is a compiler, see if it is configured for 64-bit objects.
	| # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
	| # This test works for both compilers.
	| if test "$CC_FOR_BUILD" != no_compiler_found; then
	|     if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
	|         (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
	|         grep IS_64BIT_ARCH >/dev/null
	|     then
	|         SUN_ARCH=x86_64
	|     fi
	| fi

	If "cc" is installed, i.e. the Oracle Studio compiler, this one is
	chosen for $CC_FOR_BUILD.  This compiler, the gcc provided by Oracle
	and also gcc bootstrapped from sources on that platform with a default
	configuration will by default generate 32-bit binaries -- even on
	a 64-bit platform.  And __amd64 will not be defined for compilations
	targeting a 32-bit platform.  This is different from the corresponding
	behaviour on GNU/Linux systems where the local platform is targeted by
	default.

	Thus, as long as you do not add "-m64" or if you have a custom-built
	gcc which defaults to 64 bit, you will get 32-bit binaries on Solaris
	despite living on a 64-bit platform.

	* config.guess (i86pc:SunOS:5.*:* || i86xen:SunOS:5.*:*): Adapt the
	test by adding the "-m64" flag.  This will work properly for Solaris
	10 as well (the last Solaris release that supported x86 32-bit
	platforms).

	2021-10-27  Jordi Sanfeliu  <jordi@@fibranet.cat>

	Recognize Fiwix
	$ make check
	cd testsuite && bash config-guess.sh && rm uname
	PASS: config.guess checks (137 tests)
	cd testsuite && bash config-sub.sh
	PASS: config.sub checks (882 tests)
	PASS: config.sub idempotency checks (819 tests)
	PASS: config.sub canonicalise each config.guess testcase (137 tests)

	* config.guess (i*86:Fiwix:*:*): Recognize.
	* config.sub (fiwix*): Likewise.

	2021-10-18  Kinshuk Dua  <kinshukdua@@gmail.com>

	config.sub: Fix typo in comment
	Fixes: 5e531d391852a54e7fab2d8ff55625fca514b305

	2021-08-14  Nick Bowler  <nbowler@@draconx.ca>

	config.sub: work around command assignment bug in some shells
	When combining variable assignments with a shell command, some older
	shells (notably heirloom-sh and presumably also Solaris 10 /bin/sh)
	have a bug which causes the assignment to alter the current execution
	environment whenever the command is a shell built-in.  For example:

	  % dash -c 'x=good; x=bad echo >/dev/null; echo $x'
	  good

	  % jsh -c 'x=good; x=bad echo >/dev/null; echo $x'
	  bad

	The config.sub script contains a few commands of the form:

	  IFS=- read ...

	which triggers this bug, causing the IFS assignment to persist for the
	remainder of the script.  This can cause misbehaviour in certain cases,
	for example:

	  % jsh config.sub i386-linux-gnu
	  config.sub: test: unknown operator gnu

	  % jsh config.sub i386-gnu/linux
	  sed: can't read s|gnu/linux|gnu|: No such file or directory
	  Invalid configuration `i386-gnu/linux': OS `' not recognized

	* config.sub: Save and restore IFS explicitly to avoid shell bugs.
	* doc/config.sub.1: Regenerate.

	2021-08-04  Jeremy Soller  <jackpot51@@gmail.com>

	config.sub: add Linux Relibc Target
	$ make check
	cd testsuite && bash config-guess.sh && rm uname
	PASS: config.guess checks (136 tests)
	cd testsuite && bash config-sub.sh
	PASS: config.sub checks (881 tests)
	PASS: config.sub idempotency checks (818 tests)
	PASS: config.sub canonicalise each config.guess testcase (136 tests)

	* config.sub (relibc*): Recognize.
	* doc/config.sub.1: Regenerate.
	* testsuite/config-sub.data (x86_64-linux-relibc): New test.

	2021-07-06  Stephanos Ioannidis  <root@@stephanos.io>

	config.sub: add Zephyr RTOS support
	This adds the Zephyr RTOS targets in preparation for implementing the
	Zephyr RTOS-specific toolchain support.

	$ make check
	cd testsuite && bash config-guess.sh && rm uname
	PASS: config.guess checks (136 tests)
	cd testsuite && bash config-sub.sh
	PASS: config.sub checks (880 tests)
	PASS: config.sub idempotency checks (817 tests)
	PASS: config.sub canonicalise each config.guess testcase (136 tests)

	* config.sub (zephyr*): Recognize.
	* doc/config.sub.1: Regenerate.
	* testsuite/config-sub.data: Add testcases for *-zephyr.

	2021-07-03  Ozkan Sezer  <sezero@@users.sourceforge.net>

	config.sub: disable shellcheck SC2006 / SC2268 warnings
	This is in line with the recent config.guess change in commit
	12fcf67c9108f4c4b581eaa302088782f0ee40ea

	* config.sub (shellcheck disable): Add SC2006,SC2268.

	Suggested-by: Jacob Bachmeyer <jcb@@gnu.org>

	2021-07-03  Ozkan Sezer  <sezero@@users.sourceforge.net>

	config.sub: normalize the quoting in the `echo FOO | sed ...`
	Some cases quote the argument to echo and some do not.  At runtime
	it probably does not matter because the substituted values will never
	contain whitespace, but quoting them all would make shellcheck more
	useful.

	* config.sub: Consistently quote the argument of echo.
	* doc/config.sub.1: Regenerate.

	Suggested-by: Jacob Bachmeyer <jcb@@gnu.org>

	2021-07-02  Ozkan Sezer  <sezero@@users.sourceforge.net>

	config.sub: replace POSIX $( ) with classic ` ` throughout
	This is in line with the recent config.guess change in commit
	d70c4fa934de164178054c3a60aaa0024ed07c91.

	The patch was generated using patch-6.gawk script introduced in that
	commit.

	* config.sub: Revert POSIX command substitutions to classic form.

	2021-06-04  Vineet Gupta  <Vineet.Gupta1@@synopsys.com>

	Recognize arc32
	This is the 32-bit variant of ARCv3 ISA (which is not compatible with the
	32-bit ARCv2 ISA)

	| make check
	| cd testsuite && bash config-guess.sh && rm uname
	| PASS: config.guess checks (136 tests)
	| cd testsuite && bash config-sub.sh
	| PASS: config.sub checks (864 tests)
	| PASS: config.sub idempotency checks (801 tests)
	| PASS: config.sub canonicalise each config.guess testcase (136 tests)

	* config.guess (arc32:Linux:*:*): Recognize.
	* config.sub (arc32): Likewise.

	2021-05-27  Jacob Bachmeyer  <jcb@@gnu.org>

	Remove automatic patch generators
	These tools have served their purposes and need not be kept outside of
	the repository history any longer.  This patch as a diff also collects
	the contents of the various tools in one convenient place.

	* patch-1.gawk: Remove.
	* patch-3.gawk: Likewise.
	* patch-6.gawk: Likewise.

	2021-05-26  Jacob Bachmeyer  <jcb@@gnu.org>

	config.guess: manual fixups after previous automatic patch
	The tool could not handle command substitutions that span lines, but
	fortunately there were only two such substitutions in the script.

	The test for which universe is active on Pyramid is rewritten into a
	case block because it was the only use of a command substitution as an
	argument to the test command, which would require quoting.

	* config.guess: Rewrite "if" for Pyramid systems to "case".

	2021-05-26  Jacob Bachmeyer  <jcb@@gnu.org>

	config.guess: replace POSIX $( ) with classic ` ` throughout
	The previous replacement of backticks with POSIX command substitutions
	was ill-considered and illogical: this script recognizes many archaic
	machine types that probably never had POSIX shells, therefore it needs
	to be able to run successfully under pre-POSIX shells.

	This patch was generated using the included GNU Awk program.

	* config.guess: Revert POSIX command substitutions to classic form.
	* patch-6.gawk: Store the tool that produced the automated patch.

	2021-05-26  Jacob Bachmeyer  <jcb@@gnu.org>

	config.guess: manual fixup after previous automated patches
	This patch provides the special handling for the GNU system.  As these
	were two small and unique edits, they were not included in the scripts.

	This patch also cleans up other minor issues that must be addressed
	before reverting to classic command substitutions and updates
	"shellcheck" directives to account for changes in this script and the
	change in "shellcheck" towards reporting individual portability issues.

	2021-05-26  Jacob Bachmeyer  <jcb@@gnu.org>

	config.guess: automatic fixups after previous automated patch
	This patch was generated using the following command:

	  sed -i config.guess \
	      -e '/="[^"]\+"\(-\|$\)/s/="\([^"([:space:])]\+\)"/=\1/' \
	      -e '/="[^"]\+"[[:alnum:]]/s/="\$\([^([:space:])]\+\)"/=${\1}/' \
	      -e \
	'/\$(echo[^|]\+|/s/\([^[:space:]]\)[[:space:]]*|[[:space:]]*sed/\1 | sed/g'

	* config.guess: Remove unneeded quotes in other variable assignments,
	standardize spacing for "echo ... | sed" substitutions.

	2021-05-26  Jacob Bachmeyer  <jcb@@gnu.org>

	config.guess: remove unneeded quotes and factor command substitutions
	This is further cleanup and simplifies some constructs that can confuse
	Emacs' syntax highlighting while generally reducing required quoting.

	This patch was generated using the included GNU Awk program.

	* config.guess: Remove unneeded variable quotes and factor out command
	substitutions when setting GUESS.
	* patch-3.gawk: Store the tool that produced the automated patch.

	2021-05-25  Jacob Bachmeyer  <jcb@@gnu.org>

	config.guess: manual fixups after previous automatic patch
	* config.guess: Adjust a few "leftover" cases that the tool could not
	easily recognize and fixes comment indentation in a few other special
	cases.

	2021-05-25  Jacob Bachmeyer  <jcb@@gnu.org>

	config.guess: use intermediate variable with uname results
	This will allow quoting to be significantly simplified in another
	pass through the file.

	This patch was generated using the included GNU Awk program.

	* config.guess: Use GUESS variable to hold results of uname analysis.
	* patch-1.gawk: Store the tool that produced the automated patch.

	2021-05-25  Jacob Bachmeyer  <jcb@@gnu.org>

	config.guess: introduce intermediate variable with uname results
	This will allow quoting to be significantly simplified in another
	pass through the file.

	* config.guess: Introduce GUESS variable to hold results of uname analysis.

	2021-05-24  Dmitry V. Levin  <ldv@@altlinux.org>

	config.guess: fix shellcheck warning SC2154
	While, according to Plan 9 documentation, the environment variable
	$cputype is set to the name of the kernel's CPU's architecture,
	shellcheck warns that cputype is referenced but not assigned.
	Be on the safe side and do not use cputype if it is not defined
	or empty.

	* config.guess (*:Plan9:*:*): Fix shellcheck warning SC2154.

	2021-05-24  Dmitry V. Levin  <ldv@@altlinux.org>

	config.guess: remove redundant quotes in case commands
	According to the GNU Autoconf Portable Shell Programming manual,
	the Bourne shell does not systematically split variables and back-quoted
	expressions, in particular on the right-hand side of assignments and in
	the argument of 'case'.

	The change is made automatically using the following command:
	$ sed -E -i 's/(\<case )"(\$[^"]+)"( in\>)/\1\2\3/' config.guess

	* config.guess: Simplify case commands by removing quotes around the
	argument.

	Suggested-by: Jacob Bachmeyer <jcb@@gnu.org>

	2021-05-24  Dmitry V. Levin  <ldv@@altlinux.org>

	config.guess: simplify exit status workaround on alphaev67-dec-osf5.1
	Commit 29865ea8a5622cdd80b7a69a0afa78004b4cd311 introduced an exit trap
	reset before exiting to avoid a spurious non-zero exit status on
	alphaev67-dec-osf5.1.  Simplify that code a bit by moving the exit trap
	reset around.

	* config.guess (alpha:OSF1:*:*): Reset exit trap earlier.
	* doc/config.guess.1: Regenerate.

2021-10-29  Eli Zaretskii  <eliz@@gnu.org>

	* gdb/doc/gdb.texinfo (Command Options): (Data): Document
	'-memory-tag-violations'.  Update the example.

2021-09-28  Andrew Burgess  <andrew.burgess@@embecosm.com>

	* src-release.sh (GDB_SUPPPORT_DIRS): Add libbacktrace.

2021-09-27  Nick Alcock  <nick.alcock@@oracle.com>

	PR libctf/27967
	* libtool.m4 (LT_PATH_NM): Try BSDization flags with a user-provided
	NM, if there is one.  Run nm on itself, not on /dev/null, to avoid
	errors from nms that refuse to work on non-regular files.  Remove
	other workarounds for this problem.  Strip out blank lines from the
	nm output.

2021-09-27  Nick Alcock  <nick.alcock@@oracle.com>

	PR libctf/27967
	* libtool.m4 (lt_cv_sys_global_symbol_pipe): Augment symcode for
	Solaris 11.

2021-07-03  Nick Clifton  <nickc@@redhat.com>

	* 2.37 release branch created.

2021-07-03  Nick Clifton  <nickc@@redhat.com>

	* libiberty: Sync with gcc.  Bring in:
	2021-06-30  Gerald Pfeifer  <gerald@@pfeifer.com>

	* make-temp-file.c (usrtmp): Remove.
	(choose_tmpdir): Remove use of usrtmp.

	2021-06-28  Indu Bhagat  <indu.bhagat@@oracle.com>

	* simple-object.c (handle_lto_debug_sections): Copy over .BTF section.

	2021-06-28  Indu Bhagat  <indu.bhagat@@oracle.com>
	    David Faust  <david.faust@@oracle.com>
	    Jose E. Marchesi  <jose.marchesi@@oracle.com>
	    Weimin Pan  <weimin.pan@@oracle.com>

	* simple-object.c (handle_lto_debug_sections): Copy over .ctf
	sections.

	2021-06-05  John David Anglin  <danglin@@gcc.gnu.org>

	PR target/100734
	* configure.ac: Use libiberty snprintf and vsnprintf on
	hppa*-*-hpux*.
	* configure: Regenerate.

	2021-05-06  Tom Tromey  <tom@@tromey.com>

	* hashtab.c (htab_eq_string): New function.

	2021-05-04  Eric Botcazou  <ebotcazou@@adacore.com>

	* configure.ac: Make test for variables more robust.
	* configure: Regenerate.

	2021-05-03  H.J. Lu  <hjl.tools@@gmail.com>

	PR bootstrap/99703
	* configure: Regenerated.

	2021-04-21  Andreas Schwab  <schwab@@linux-m68k.org>

	PR demangler/100177
	* rust-demangle.c (demangle_const_char): Properly print the
	character value.

	2021-03-31  Patrick Palka  <ppalka@@redhat.com>

	PR c++/88115
	* cp-demangle.c (d_dump, d_make_comp, d_expression_1)
	(d_count_templates_scopes): Handle DEMANGLE_COMPONENT_VENDOR_EXPR.
	(d_print_comp_inner): Likewise.
	<case DEMANGLE_COMPONENT_EXTENDED_OPERATOR>: Revert r11-4926
	change.
	<case DEMANGLE_COMPONENT_UNARY>: Likewise.
	* testsuite/demangle-expected: Adjust __alignof__ tests.

	2021-03-16  Nick Clifton  <nickc@@redhat.com>

	* sha1.c (sha1_process_bytes): Use memmove in place of memcpy.

	2021-02-20  Mike Frysinger  <vapier@@gentoo.org>

	* Makefile.in (ACLOCAL, ACLOCAL_AMFLAGS, $(srcdir)/aclocal.m4): Define.
	(configure_deps): Rename to ...
	(aclocal_deps): ... this.  Replace aclocal.m4 with acinclude.m4.
	($(srcdir)/configure): Replace $(configure_deps) with
	$(srcdir)/aclocal.m4.
	* aclocal.m4: Move libiberty macros to acinclude.m4, then regenerate.
	* acinclude.m4: New file.
	* configure: Regenerate.

	2021-02-19  Ayush Mittal  <ayush.m@@samsung.com>

	* argv.c (expandargv): free allocated buffer if read fails.

	2021-02-01  Martin Sebor  <msebor@@redhat.com>

	* dyn-string.c (dyn_string_insert_cstr): Use memcpy instead of strncpy
	to avoid -Wstringop-truncation.

2021-05-29  Mike Frysinger  <vapier@@gentoo.org>

	* configure.ac: Add gnulib to configdirs for sim.
	* configure: Regenerate.

2021-05-24  Maciej W. Rozycki  <macro@@orcam.me.uk>

	* MAINTAINERS: Update path to readline config.{sub,guess} files.

2021-05-24  Maciej W. Rozycki  <macro@@orcam.me.uk>

	* config.guess: Import from upstream.
	* config.sub: Likewise.

2021-05-18  Mike Frysinger  <vapier@@gentoo.org>

	* Makefile.def: Add configure-sim dependency on all-gnulib.
	* Makefile.in: Regenerated.

2021-05-04  Nick Clifton  <nickc@@redhat.com>

	* configure.ac (AC_PROG_CC): Replace with AC_PROG_CC_C99.
	* configure: Regenerate.

2021-03-18  Nick Alcock  <nick.alcock@@oracle.com>

	PR libctf/27482
	* Makefile.def: Add install-bfd dependencies for install-libctf and
	install-ld, and install-strip-bfd dependencies for
	install-strip-libctf and install-strip-ld; move the install-ld
	dependency on install-libctf to join it.
	* Makefile.in: Regenerated.

2021-03-12  Mike Frysinger  <vapier@@gentoo.org>

	* Makefile.def: Remove all-sim dependency on configure-gdb.
	* Makefile.in: Regenerated.

2021-02-28  H.J. Lu  <hongjiu.lu@@intel.com>

	PR binutils/26766
	* Makefile.tpl (PGO_BUILD_TRAINING_FLAGS_TO_PASS): Add
	PGO_BUILD_TRAINING=yes.
	(PGO_BUILD_TRAINING_MFLAGS): New.
	(all): Pass $(PGO_BUILD_TRAINING_MFLAGS) to the PGO build.

2021-02-09  Alan Modra  <amodra@@gmail.com>

	* configure.ac: Delete arm*-*-symbianelf* entry.
	* configure: Regenerate.

2021-01-26  Nick Alcock  <nick.alcock@@oracle.com>

	* Makefile.def: Add install-libctf dependency to install-ld.
	* Makefile.in: Regenerated.

2021-01-12  Mike Frysinger  <vapier@@gentoo.org>

	* src-release.sh (do_proto_toplev): Rewrite indentation.

2021-01-11  H.J. Lu  <hongjiu.lu@@intel.com>

	PR binutils/26766
	* configure.ac:
	* configure: Regenerated.

2021-01-11  H.J. Lu  <hongjiu.lu@@intel.com>

	PR ld/27173
	* configure: Regenerated.
	* libtool.m4 (_LT_CMD_OLD_ARCHIVE): Check if AR works with
	--plugin and rc before enabling --plugin.

2021-01-09  H.J. Lu  <hongjiu.lu@@intel.com>

	PR binutils/26766
	* Makefile.tpl (BUILD_CFLAGS): New.
	(CFLAGS): Append $(BUILD_CFLAGS).
	(CXXFLAGS): Likewise.
	(PGO_BUILD_GEN_FLAGS_TO_PASS): New.
	(PGO_BUILD_TRAINING_CFLAGS): Likewise.
	(PGO_BUILD_TRAINING_CXXFLAGS): Likewise.
	(PGO_BUILD_TRAINING_FLAGS_TO_PASS): Likewise.
	(PGO_BUILD_TRAINING_MFLAGS): Likewise.
	(PGO_BUILD_USE_FLAGS_TO_PASS): Likewise.
	(PGO-TRAINING-TARGETS): Likewise.
	(PGO_BUILD_TRAINING): Likewise.
	(all): Add '+' to the command line for recursive make.  Support
	the PGO build.
	* configure.ac: Add --enable-pgo-build[=lto].
	AC_SUBST PGO_BUILD_GEN_CFLAGS, PGO_BUILD_USE_CFLAGS and
	PGO_BUILD_LTO_CFLAGS.  Enable the PGO build in Makefile.
	* Makefile.in: Regenerated.
	* configure: Likewise.

2021-01-09  H.J. Lu  <hongjiu.lu@@intel.com>

	* Makefile.tpl (AR): Add @@AR_PLUGIN_OPTION@@
	(RANLIB): Add @@RANLIB_PLUGIN_OPTION@@.
	* configure.ac: Include config/gcc-plugin.m4.
	AC_SUBST AR_PLUGIN_OPTION and RANLIB_PLUGIN_OPTION.
	* libtool.m4 (_LT_CMD_OLD_ARCHIVE): Pass --plugin to AR and
	RANLIB if possible.
	* Makefile.in: Regenerated.
	* configure: Likewise.

2021-01-09  Nick Clifton  <nickc@@redhat.com>

	* 2.36 release branch crated.

2021-01-07  Samuel Thibault  <samuel.thibault@@gnu.org>

	* libtool.m4: Match gnu* along with other GNU systems.

2021-01-07  Alan Modra  <amodra@@gmail.com>

	* config.sub: Accept OS of eabi* and gnueabi*.

2021-01-05  Nick Alcock  <nick.alcock@@oracle.com>

	* Makefile.def (libctf): No longer no_check.  Checking depends on
	all-ld.
	* Makefile.in: Regenerated.

2021-01-05  Nick Clifton  <nickc@@redhat.com>

	* libiberty: Sync with gcc.  Bring in:
	2021-01-04  Martin Liska  <mliska@@suse.cz>

	* strverscmp.c: Convert to utf8 from iso8859.

	2020-12-22  Jason Merrill  <jason@@redhat.com>

	PR c++/67343
	* cp-demangle.h (struct d_info): Add unresolved_name_state.
	* cp-demangle.c (d_prefix): Add subst parm.
	(d_nested_name): Pass it.
	(d_unresolved_name): Split out from...
	(d_expression_1): ...here.
	(d_demangle_callback): Maybe retry with old sr mangling.
	* testsuite/demangle-expected: Add test.

	2020-12-21  Jason Merrill  <jason@@redhat.com>

	* cp-demangle.c (d_expression_1): Recognize qualified-id
	on RHS of dt/pt.
	* testsuite/demangle-expected: Add test.

	2020-12-21  Jason Merrill  <jason@@redhat.com>

	* cp-demangle.c (d_unqualified_name): Clear is_expression.
	* testsuite/demangle-expected: Add tests.

	2020-11-25  Matthew Malcomson  <matthew.malcomson@@arm.com>

	* configure: Regenerate.
	* configure.ac: Avoid using sanitizer.

	2020-11-13  Eduard-Mihai Burtescu  <eddyb@@lyken.rs>

	* rust-demangle.c (struct rust_demangler): Add
	skipping_printing and bound_lifetime_depth fields.
	(eat): Add (v0-only).
	(parse_integer_62): Add (v0-only).
	(parse_opt_integer_62): Add (v0-only).
	(parse_disambiguator): Add (v0-only).
	(struct rust_mangled_ident): Add punycode{,_len} fields.
	(parse_ident): Support v0 identifiers.
	(print_str): Respect skipping_printing.
	(print_uint64): Add (v0-only).
	(print_uint64_hex): Add (v0-only).
	(print_ident): Respect skipping_printing,
	Support v0 identifiers.
	(print_lifetime_from_index): Add (v0-only).
	(demangle_binder): Add (v0-only).
	(demangle_path): Add (v0-only).
	(demangle_generic_arg): Add (v0-only).
	(demangle_type): Add (v0-only).
	(demangle_path_maybe_open_generics): Add (v0-only).
	(demangle_dyn_trait): Add (v0-only).
	(demangle_const): Add (v0-only).
	(demangle_const_uint): Add (v0-only).
	(basic_type): Add (v0-only).
	(rust_demangle_callback): Support v0 symbols.
	* testsuite/rust-demangle-expected: Add v0 testcases.

	2020-11-13  Seija Kijin  <doremylover456@@gmail.com>

	* strstr.c (strstr): Make implementation ANSI/POSIX compliant.

	2020-11-11  Patrick Palka  <ppalka@@redhat.com>

	PR c++/88115
	* cp-demangle.c (d_print_comp_inner)
	<case DEMANGLE_COMPONENT_EXTENDED_OPERATOR>: Don't print the
	"operator " prefix for __alignof__.
	<case DEMANGLE_COMPONENT_UNARY>: Always print parens around the
	operand of __alignof__.
	* testsuite/demangle-expected: Test demangling for __alignof__.

	2020-11-09  Christophe Lyon  <christophe.lyon@@linaro.org>

	* pex-win32.c (pex_win32_exec_child): Initialize orig_err.

	2020-10-06  Martin Liska  <mliska@@suse.cz>

	PR lto/97290
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	Use sh_link of a .symtab_shndx section.

2021-01-05  Alan Modra  <amodra@@gmail.com>

	* config.guess: Import from upstream.
	* config.sub: Likewise.

2020-12-16  Martin Liska  <mliska@@suse.cz>
	    Tom de Vries  <tdevries@@suse.de>

	* gdb/debuginfod-support.c (struct user_data): Remove has_printed
	field.  Add meter field.
	(progressfn): Print progress using meter.

2020-12-02  Enze Li  <lienze2010@@hotmail.com>

	* .gitignore: Add gnu global outputs.

2020-12-02  Simon Marchi  <simon.marchi@@polymtl.ca>

	* .gitignore: Sync with gcc.

2020-10-26  Andreas Rammhold <andreas@@rammhold.de>

	* src-release.sh: Use sha256sum instead of md5sum.

2020-10-14  Andrew Burgess  <andrew.burgess@@embecosm.com>

	* Makefile.in: Rebuild.
	* Makefile.def: Make distclean-gnulib depend on distclean-gdb and
	distclean-gdbserver.

2020-07-24  Aaron Merey  <amerey@@redhat.com>

	* configure: Rebuild.
	* configure.ac: Remove AC_DEBUGINFOD.

2020-07-04  Nick Clifton  <nickc@@redhat.com>

	Binutils 2.35 branch created.

2020-04-21  Stephen Casner  <casner@@acm.org>

	PR 25830
	* configure.ac (noconfigdirs): Exclude gdb & gprof for pdp11.
	* configure: Rebuild.

2020-03-12  Tom Tromey  <tom@@tromey.com>

	* Makefile.in: Rebuild.
	* Makefile.def (gdbserver): Depend on gdbsupport.

2020-03-12  Tom Tromey  <tom@@tromey.com>

	* Makefile.in: Rebuild.
	* Makefile.def (gdbsupport): Don't depend on bfd.

2020-03-12  Tom Tromey  <tom@@tromey.com>

	* Makefile.in: Rebuild.
	* Makefile.def (gdbsupport): Depend on intl.

2020-02-17  Tom Tromey  <tom@@tromey.com>

	* configure: Rebuild.
	* configure.ac (configdirs): Add gnulib and gdbsupport when building
	gdbserver.

2020-02-14  Tom Tromey  <tom@@tromey.com>

	* Makefile.in: Rebuild.
	* Makefile.def: Make gdbserver require gnulib and libiberty.

2020-02-07  Tom Tromey  <tom@@tromey.com>
	    Pedro Alves  <palves@@redhat.com>

	* src-release.sh (GDB_SUPPORT_DIRS): Add gdbserver.
	* gdbserver: New directory, moved from gdb/gdbserver.
	* configure.ac (host_tools): Add gdbserver.
	Only build gdbserver on certain systems.
	* Makefile.in, configure: Rebuild.
	* Makefile.def (host_modules, dependencies): Add gdbserver.
	* MAINTAINERS: Add gdbserver.

2020-01-28  Sergio Durigan Junior  <sergiodj@@redhat.com>

	* src-release.sh (getver): Look for gdbsupport's
	create-version.sh script at the current directory if tool is
	"gdb".

2020-01-19  Simon Marchi  <simon.marchi@@polymtl.ca>

	* remote-sim.c (gdbsim_target::wait): Return
	sim_data->remote_sim_ptid instead of inferior_ptid.
@
text
@d351 1
a351 1
bool bfd_link_split_section (bfd *abfd, asection *sec);
d366 1
a366 1
bool bfd_section_already_linked (bfd *abfd,
d383 1
a383 1
bool bfd_generic_define_common_symbol
d437 1
a437 1
    const char *sym_name, bool *hide);
d449 1
a449 1
bool bfd_hide_sym_by_version
d460 1
a460 1
bool bfd_link_check_relocs
d473 1
a473 1
bool _bfd_generic_link_check_relocs
d486 1
a486 1
bool bfd_merge_private_bfd_data
d510 1
a510 1
bool _bfd_generic_verify_endian_match
@


1.1.1.8.2.1
log
@Sync with HEAD.
@
text
@d349 5
a353 1
@@deftypefn {Function} bool bfd_link_split_section (bfd *abfd, asection *sec); 
a361 1
@@end deftypefn
d364 7
a370 1
@@deftypefn {Function} bool bfd_section_already_linked (bfd *abfd, asection *sec, struct bfd_link_info *info); 
a378 1
@@end deftypefn
d381 7
a387 1
@@deftypefn {Function} bool bfd_generic_define_common_symbol (bfd *output_bfd, struct bfd_link_info *info, struct bfd_link_hash_entry *h); 
a395 1
@@end deftypefn
d398 7
a404 1
@@deftypefn {Function} void _bfd_generic_link_hide_symbol (bfd *output_bfd, struct bfd_link_info *info, struct bfd_link_hash_entry *h); 
a413 1
@@end deftypefn
d416 7
a422 1
@@deftypefn {Function} struct bfd_link_hash_entry *bfd_generic_define_start_stop (struct bfd_link_info *info, const char *symbol, asection *sec); 
a430 1
@@end deftypefn
d433 7
a439 1
@@deftypefn {Function} struct bfd_elf_version_tree * bfd_find_version_for_sym (struct bfd_elf_version_tree *verdefs, const char *sym_name, bool *hide); 
a444 1
@@end deftypefn
d447 6
a452 1
@@deftypefn {Function} bool bfd_hide_sym_by_version (struct bfd_elf_version_tree *verdefs, const char *sym_name); 
a455 1
@@end deftypefn
d458 6
a463 1
@@deftypefn {Function} bool bfd_link_check_relocs (bfd *abfd, struct bfd_link_info *info); 
a468 1
@@end deftypefn
d471 6
a476 1
@@deftypefn {Function} bool _bfd_generic_link_check_relocs (bfd *abfd, struct bfd_link_info *info); 
a481 1
@@end deftypefn
d484 6
a489 1
@@deftypefn {Function} bool bfd_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info); 
a503 1

a505 1
@@end deftypefn
d508 6
a513 1
@@deftypefn {Function} bool _bfd_generic_verify_endian_match (bfd *ibfd, struct bfd_link_info *info); 
a517 1
@@end deftypefn
@


1.1.1.9
log
@Import binutils-2.42 (last was 2.39)

2024-01-15  Nick Clifton  <nickc@@redhat.com>

	* 2.42 branch point.

2023-11-15  Arsen Arsenović  <arsen@@aarsen.me>

	* intl: Remove directory.  Replaced with out-of-tree GNU
	gettext.
	* .gitignore: Add '/gettext*'.
	* configure.ac (host_libs): Replace intl with gettext.
	(hbaseargs, bbaseargs, baseargs): Split baseargs into
	{h,b}baseargs.
	(skip_barg): New flag.  Skips appending current flag to
	bbaseargs.
	<library exemptions>: Exempt --with-libintl-{type,prefix} from
	target and build machine argument passing.
	* configure: Regenerate.
	* Makefile.def (host_modules): Replace intl module with gettext
	module.
	(configure-ld): Depend on configure-gettext.
	* Makefile.in: Regenerate.
	* src-release.sh: Remove references to the intl/ directory.

2023-07-03  Nick Clifton  <nickc@@redhat.com>

	2.41 Branch Point.

2023-06-26  Nick Clifton  <nickc@@redhat.com>

	* Import these updates to the config scripts

	commit 4ad4bb7c30aca1e705448ba8d51a210bbd47bb52
	Author: Paul Eggert <eggert@@cs.ucla.edu>
	Date:   Fri Jun 23 09:55:10 2023 -0700

		Quote 'like this', not `like this'.

	commit 63acb96f92473ceb5e21d873d7c0aee266b3d6d3
	Author: Paul Eggert <eggert@@cs.ucla.edu>
	Date:   Sat Jan 21 00:15:01 2023 -0600

		Fix config.sub spelling typo for "athlon"

	commit 4ce12a5c9125cedc0d0ba584444a6865396923ec
	Author: Dmitry V. Levin <ldv@@altlinux.org>
	Date:   Sun Jan 1 08:00:00 2023 +0000

		Update copyright years

	commit c397e2c040bce50bcdccb131f90115ba7e8bfc19
	Author: Arsen Arsenovi <arsen@@aarsen.me>
	Date:   Sat Sep 17 23:34:48 2022 +0200

		config.sub: add linux-mlibc targets

	commit 9f9f9b0b13197269848c76e3e057a3ed0680b4bf
	Author: Arsen Arsenovi <arsen@@aarsen.me>
	Date:   Sat Sep 17 23:34:47 2022 +0200

		config.guess: support running on Managarm systems

	commit 87e6687749da7bb2ab158a79fa83721c19ed9246
	Author: Arsen Arsenovi <arsen@@aarsen.me>
	Date:   Sat Sep 17 23:34:46 2022 +0200

		config.sub: add managarm-{mlibc,kernel} targets

	commit 20403c5701973a4cbd7e0b4bbeb627fcd424a0f1
	Author: Xiaotian Wu <wuxiaotian@@loongson.cn>
	Date:   Mon Aug 1 16:05:29 2022 +0800

		Remove loongarchx32

	commit 02ba26b218d3d3db6c56e014655faf463cefa983
	Author: Alexander von Gluck IV <kallisti5@@unixzen.com>
	Date:   Wed May 25 15:43:13 2022 -0500

		config.guess: Update Haiku guesses

	commit f56a7140386d08a531bcfd444d632b28c61a6329
	Author: Bruno Haible <bruno@@clisp.org>
	Date:   Sun May 8 19:08:08 2022 +0200

		config.guess (x86_64:Linux:*:*): Detect 32-bit ABI.

2023-04-20  Nick Clifton  <nickc@@redhat.com>

	* SECURITY.txt: New file.
	* src-release.sh (DEVO_SUPPORT): Add SECURITY.txt.

2022-12-31  Nick Clifton  <nickc@@redhat.com>

	* 2.40 binutils branch created.

2022-10-10  Nick Clifton  <nickc@@redhat.com>

	* src-release.sh: Add "-r <date>" option to create reproducible
	tarballs based upon a fixed timestamp of <date>.
	* binutils/README-how-to-make-a-release: Add a line showing how to
	use -r <date> when creating a binutils release.

2022-10-04  Nick Clifton  <nickc@@redhat.com>

	* README-maintainer-mode: Add a minimum version of dejagnu
	requirement.

2022-09-08  Nick Clifton  <nickc@@redhat.com>

	* README-maintainer-mode: Update minimum version  of gettext
	required.
@
text
@d349 5
a353 1
@@deftypefn {Function} bool bfd_link_split_section (bfd *abfd, asection *sec); 
a361 1
@@end deftypefn
d364 7
a370 1
@@deftypefn {Function} bool bfd_section_already_linked (bfd *abfd, asection *sec, struct bfd_link_info *info); 
a378 1
@@end deftypefn
d381 7
a387 1
@@deftypefn {Function} bool bfd_generic_define_common_symbol (bfd *output_bfd, struct bfd_link_info *info, struct bfd_link_hash_entry *h); 
a395 1
@@end deftypefn
d398 7
a404 1
@@deftypefn {Function} void _bfd_generic_link_hide_symbol (bfd *output_bfd, struct bfd_link_info *info, struct bfd_link_hash_entry *h); 
a413 1
@@end deftypefn
d416 7
a422 1
@@deftypefn {Function} struct bfd_link_hash_entry *bfd_generic_define_start_stop (struct bfd_link_info *info, const char *symbol, asection *sec); 
a430 1
@@end deftypefn
d433 7
a439 1
@@deftypefn {Function} struct bfd_elf_version_tree * bfd_find_version_for_sym (struct bfd_elf_version_tree *verdefs, const char *sym_name, bool *hide); 
a444 1
@@end deftypefn
d447 6
a452 1
@@deftypefn {Function} bool bfd_hide_sym_by_version (struct bfd_elf_version_tree *verdefs, const char *sym_name); 
a455 1
@@end deftypefn
d458 6
a463 1
@@deftypefn {Function} bool bfd_link_check_relocs (bfd *abfd, struct bfd_link_info *info); 
a468 1
@@end deftypefn
d471 6
a476 1
@@deftypefn {Function} bool _bfd_generic_link_check_relocs (bfd *abfd, struct bfd_link_info *info); 
a481 1
@@end deftypefn
d484 6
a489 1
@@deftypefn {Function} bool bfd_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info); 
a503 1

a505 1
@@end deftypefn
d508 6
a513 1
@@deftypefn {Function} bool _bfd_generic_verify_endian_match (bfd *ibfd, struct bfd_link_info *info); 
a517 1
@@end deftypefn
@


1.1.1.10
log
@Import binutils 2.45 (previous was 2.42)

2.45 Release Notes
------------------

Assembler:

  All sframe information generated by the assembler is now in compliance
  with the SFrame V2 specification.

  The assembler now supports .errif and .warnif directives, permitting
  user-controlled diagnostics with conditionals that are evaluated only
  at the end of assembly.

  The assembler predefines the symbol "GAS(version)".

  The assembler now supports the generation of SFrame stack trace
  information (.sframe) from CFI directives on s390 64-bit (s390x).

  For RISC-V, the ".option arch, -ext" format is deprecated due to its
  controversial use.

  For RISC-V, stop generating mapping symbols $x and replace with $x<isa>.  The
  $x was defined to have the same ISA as previous $x<isa>, but now is defined
  to have the same ISA as elf architecture attribute.  Once both used .option
  arch/rvc/norvc/push/pop directives (some code have different architectures
  with file attribute) and data directives in text, then the file need to be
  rebuilt since 2.45.

  The assembler supports the latest architecture extensions for the
  RISC-V, LoongArch and AArch64 architectures.

Linker:

  The linker's --stats option can take an optional argument which if used is
  interpreted as a filename into which resource usage information should be
  stored.  As an alternative mechanism the LD_STATS environment variable can
  also be used to achieve the same results.  Resource usage information for
  various phases of the linking operation is now included in the report.
  If a map file is being produced then the information is also included there.
  The --no-stats option can be used to disable stat reporting, should it have
  been enabled.

  On s390 64-bit (s390x), generate SFrame stack trace information (.sframe)
  for the linker generated .plt section.  On s390 32-bit, generate
  ".eh_frame" unwind information for the linker generated .plt section.
  Both features are enabled by default and can be disabled using linker
  option --no-ld-generated-unwind-info.

  On RISC-V, add new PLT formats, and GNU property merge rules for zicfiss and
  zicfilp extensions.

  On AVR, the default linker scripts now assert that the .progmem sections
  don't extend past 0xffff since they are accessed by means of LPM.
  For data in program memory that may be located past 0xffff, a .progmemx
  section should be used.

  On LoongArch, linker relaxation time complexity is no longer quadratic with
  respect to relocation counts.  Linking time of large software should be
  improved.  In addition  R_LARCH_32_PCREL records are now checked for
  overflow.

Other binary utilities:

  New versioned release of libsframe: libsframe.so.2.  This release introduces
  versioned symbols with version node name LIBSFRAME_2.0.  Some new symbols
  have been added to support the new flag SFRAME_F_FDE_FUNC_START_PCREL and
  retrieving flags from SFrame decoder and encoder objects:
    - Addition of sframe_decoder_get_flags,
      sframe_decoder_get_offsetof_fde_start_addr, sframe_encoder_get_flags,
      sframe_encoder_get_offsetof_fde_start_addr.
  This release also includes backward-incompatible ABI changes:
    - Removal of sframe_get_funcdesc_with_addr.
    - Change in the behavior of sframe_decoder_get_funcdesc_v2,
      sframe_encoder_add_funcdesc_v2 and sframe_encoder_write.

  For SFrame stack trace format, the function start address in each SFrame
  FDE has a changed encoding:  The 32-bit signed integer now holds the offset
  of the start PC of the associated function from the sfde_func_start_address
  field itself (instead of the earlier where it was the offset from the start
  of the SFrame section itself).  All SFrame sections generated by gas and ld
  now default to this new encoding, setting the (new)
  SFRAME_F_FDE_FUNC_START_PCREL flag.

  Relocatable SFrame links are now fixed.

 Readelf now recognizes RISC-V GNU_PROPERTY_RISCV_FEATURE_1_CFI_SS and
  GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED for zicfiss and zicfilp
  extensions.

  The LoongArch disassembler now properly accepts multiple disassembly
  options given by -M, such as "-M no-aliases,numeric".  (Previously only the
  first option took effect.)


2.44 Release Notes
------------------

   Assembler:
      Support for new architecture extensions for AArch64, Risc-V and
      x86.

    Linker:
      The default maximum page size was changed from 16KiB to 64KiB for
      LoongArch.

      This now supports mixed LTO and non-LTO object files in
      relocatable output.

      The ELF forms of the linker support a --image-base=<ADDR> option
      for compatibility with LLD.

      The --build-id= option now accepts an argument of "xx" which
      enables the use of the xxhash library.  This produces a 128-bit
      hash and is 2-4x faster than md5 or sha1.

      The ELF linker option --package-metadata supports percent-encoded
      and %[string] encoded JSON payloads.

    Disassembler:
      The RISC-V disassembler now supports -M,max option like QEMU to
      dump instruction without checking architecture support as usual.

    GprofNG:
      Support added for hardware event counters for Neoverse-N1,
      Ampere-1, and Appliedmicro processors.

    Support for the Nios II target has been removed.

2.43 Release Notes
------------------

    Assembler:

* Add a .base64 directive to the assembler which allows base64 encoded
  binary data to be provided as strings.

* Assembler macros as well as the bodies of .irp / .irpc / .rept can now use
  the syntax \+ to access the number of times a given macro has been executed.
  This is similar to the already existing \@@ syntax, except that the count is
  maintained on a per-macro basis.

* References to FB and dollar labels, when supported, are no longer permitted
  in a radix other than 10.  (Note that definitions of such labels were
  already thus restricted, except that leading zeroes were permitted).

    Linker:

* Add support for DT_RELR type compressed runtime relocations for the
  AArch64 and LoongArch architectures.

* Add --rosegment option which changes the -z separate-code option so that
  only one read-only segment is created (instead of two).

* Add --section-ordering-file <FILE> option to add extra mapping of input
  sections to output sections.

* Add -plugin-save-temps to store plugin intermediate files permanently.

    Utilities:

* Readelf will now display DT_RELR relocations in full detail.

* Readelf now has a -j/--display-section option which takes the name
  or index of a section and displays its contents according to its
  type.  The option can be used multiple times on the command line to
  display multiple sections.

* When objdump or readelf are used to display the contents of a
  .eh_frame section they will now also display the contents of the
  .eh_frame_hdr section, if present.

    Gprofng:

* Improved the support for hardware event counters:
    - Re-designed and streamlined the implementation.
    - Defined a common set of events for ARM processors.
    - Added specific events for AMD ZEN3 / ZEN4, and Intel
      Ice Lake processors.
* Added a minimal support for RISC-V.

    General:

* Target specific improvements for many architectures.
@
text
@a346 40
@@findex _bfd_generic_link_add_one_symbol
@@subsubsection @@code{_bfd_generic_link_add_one_symbol}
@@deftypefn {Function} bool _bfd_generic_link_add_one_symbol (struct bfd_link_info *info, bfd *abfd, const char *name, flagword flags, asection *section, bfd_vma value, const char *string, bool copy, bool collect, struct bfd_link_hash_entry **hashp); 
Add a symbol to the global hash table.
ABFD is the BFD the symbol comes from.
NAME is the name of the symbol.
FLAGS is the BSF_* bits associated with the symbol.
SECTION is the section in which the symbol is defined; this may be
bfd_und_section_ptr or bfd_com_section_ptr.
VALUE is the value of the symbol, relative to the section.
STRING is used for either an indirect symbol, in which case it is
the name of the symbol to indirect to, or a warning symbol, in
which case it is the warning string.
COPY is TRUE if NAME or STRING must be copied into locally
allocated memory if they need to be saved.
COLLECT is TRUE if we should automatically collect gcc constructor
or destructor names as collect2 does.
HASHP, if not NULL, is a place to store the created hash table
entry; if *HASHP is not NULL, the caller has already looked up
the hash table entry, and stored it in *HASHP.

@@end deftypefn
@@findex bfd_link_align_section
@@subsubsection @@code{bfd_link_align_section}
@@deftypefn {Function} bool bfd_link_align_section (asection *, unsigned int); 
Increase section alignment if the current section alignment is
less than the requested value.  Adjust output section
alignment too, so that linker layout adjusts for alignment on
the current lang_size_sections pass.  This is important for
lang_size_relro_segment.  If the output section alignment
isn't adjusted, the linker will place the output section at an
address depending on its current alignment.  When sizing the
output section, input sections attached transfer any increase
in alignment to the output section, which will affect layout
for the next sizing pass.  Which is all well and good except
that lang_size_relro_segment for the current sizing pass uses
that possibly increased alignment with a layout that doesn't
suit.

@@end deftypefn
@


1.1.1.11
log
@Import binutils-2.46.0 (previous was 2.45)

Changes in 2.45:

* New versioned release of libsframe: libsframe.so.2.  This release introduces
  versioned symbols with version node name LIBSFRAME_2.0.  Some new symbols
  have been added to support the new flag SFRAME_F_FDE_FUNC_START_PCREL and
  retrieving flags from SFrame decoder and encoder objects:
    - Addition of sframe_decoder_get_flags,
      sframe_decoder_get_offsetof_fde_start_addr, sframe_encoder_get_flags,
      sframe_encoder_get_offsetof_fde_start_addr.
  This release also includes backward-incompatible ABI changes:
    - Removal of sframe_get_funcdesc_with_addr.
    - Change in the behavior of sframe_decoder_get_funcdesc_v2,
      sframe_encoder_add_funcdesc_v2 and sframe_encoder_write.

* On s390 64-bit (s390x), gas, ld, objdump, and readelf now support generating
  and processing SFrame V2 stack trace information (.sframe).  The assembler
  generates SFrame info from CFI directives with option "--gsframe".  The
  linker generates SFrame info for the linker-generated .plt section and merges
  all .sframe sections.  Both objdump and readelf dump SFrame info with option
  "--sframe[=<section-name>]".

* For SFrame stack trace format, the function start address in each SFrame
  FDE has a changed encoding:  The 32-bit signed integer now holds the offset
  of the start PC of the associated function from the sfde_func_start_address
  field itself (instead of the earlier where it was the offset from the start
  of the SFrame section itself).  All SFrame sections generated by gas and ld
  now default to this new encoding, setting the (new)
  SFRAME_F_FDE_FUNC_START_PCREL flag.

  Relocatable SFrame links are now fixed.

* Readelf now recognizes RISC-V GNU_PROPERTY_RISCV_FEATURE_1_CFI_SS and
  GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED for zicfiss and zicfilp
  extensions.

* For RISC-V dis-assembler, the definition of mapping symbol $x is changed,
  so the file needs to be rebuilt since 2.45 once used .option arch directives.

* The LoongArch disassembler now properly accepts multiple disassembly
  options given by -M, such as "-M no-aliases,numeric".  (Previously only the
  first option took effect.)
@
text
@d484 1
d502 1
@


