Files
Richard Sandiford 33bb52fb4e bfd/
* elf32-mips.c (elf_backend_hide_symbol): Delete.
	* elfn32-mips.c (elf_backend_hide_symbol): Likewise.
	* elf64-mips.c (elf_backend_hide_symbol): Likewise.
	* elfxx-mips.h (elf_backend_hide_symbol): Likewise.
	* elfxx-mips.c (mips_elf_link_hash_entry): Remove "forced_local"
	and add "needs_lazy_stub".
	(mips_elf_link_hash_newfunc): Update accordingly.
	(mips_elf_link_hash_table): Remove "computed_got_sizes" and
	add "lazy_stub_count".
	(_bfd_mips_elf_link_hash_table_create): Update accordingly.
	(mips_elf_output_extsym): Use hd->needs_lazy_stub to detect
	cases where a lazy stub is being used.
	(mips_elf_sort_hash_table_f): Use h->root.forced_local instead
	of h->forced_local.
	(mips_elf_record_global_got_symbol): Use _bfd_elf_link_hash_hide_symbol
	instead of _bfd_mips_elf_hide_symbol.  Do not increment local_gotno
	here.
	(mips_elf_allocate_dynamic_relocations): Move before new first use.
	(mips_elf_check_recreate_got, mips_elf_recreate_got): New functions.
	(mips_elf_resolve_final_got_entries): Move earlier in file.  Make at
	most two passes over the hash table.  Use mips_elf_check_recreate_got
	to see if there are any indirect or warning entries and
	mips_elf_recreate_got to create a new GOT without them.
	Return a boolean success value.
	(mips_elf_count_forced_local_got_entries): New function.
	(mips_elf_make_got_per_bfd): Check h->root.forced_local instead of
	h->forced_local.
	(mips_elf_set_global_got_offset): Likewise.
	(mips_elf_set_no_stub): Replace with...
	(mips_elf_forbid_lazy_stubs): ...this new function.
	(mips_elf_resolve_final_got_entry): Delete.
	(mips_elf_multi_got): Fix formatting.  Use mips_elf_forbid_lazy_stubs
	instead of mips_elf_set_no_stub.  Move the code that sets
	global offsets and allocates dynamic relocations from the main
	_bfd_mips_elf_size_dynamic_sections loop to here.
	(_bfd_mips_elf_adjust_dynamic_symbol): Do not allocate room in
	.MIPS.stubs here; just set hmips->needs_lazy_stub and increment
	htab->lazy_stub_count.
	(_bfd_mips_elf_always_size_sections): Move the stub-estimation
	code to mips_elf_estimate_stub_size and the GOT-sizing code to
	mips_elf_lay_out_got.  Do not call these functions here.
	(mips_elf_estimate_stub_size): New function, split
	out from _bfd_mips_elf_always_size_sections.  Call
	mips_elf_resolve_final_got_entries earlier.  Count the number
	of forced-local entries.  Do not add stub sizes to loadable_size;
	after this patch, the stub sizes are already included in the main
	estimate.  Allocate dynamic relocations here rather than in the
	main _bfd_mips_elf_size_dynamic_sections loop.
	(mips_elf_estimate_stub_size): New function, split out from
	_bfd_mips_elf_always_size_sections.
	(mips_elf_allocate_lazy_stub): New function.
	(mips_elf_lay_out_lazy_stubs): Likewise.
	(_bfd_mips_elf_size_dynamic_sections): Call mips_elf_estimate_stub_size,
	mips_elf_lay_out_got and mips_elf_lay_out_lazy_stubs.  Do not handle
	the allocation of sreldyn specially.
	(_bfd_mips_elf_hide_symbol): Delete.

ld/testsuite/
	* ld-mips-elf/tlsdyn-o32-2.got, ld-mips-elf/tlsdyn-o32-3.got,
	ld-mips-elf/tlsdyn-o32-2.d, ld-mips-elf/tlsdyn-o32-3.d: Change the
	GOT layout as follows:

	         BEFORE                  AFTER
	   +0x08 %call16(__tls_get_addr) %call16(__tls_get_addr)
	   +0x0c %tlsldm(tlsbin_ld)      %gottprel(tlsvar_ie)
	   +0x10   "  "                  %tlsgd(tlsvar_gd)
	   +0x14 %tlsgd(tlsvar_gd)          "  "
	   +0x18   "  "                  %tlsgd(tlsbin_gd)
	   +0x1c %gottprel(tlsvar_ie)       "  "
	   +0x20 %tlsgd(tlsbin_gd)       %tlsldm(tlsbin_ld)
	   +0x24   "  "                     "  "
	   +0x28 %gottprel(tlsbin_ie)    %gottprel(tlsbin_ie)
2008-08-07 19:57:28 +00:00
..
2008-07-10 01:32:23 +00:00
2007-06-14 15:31:01 +00:00
2008-04-23 16:11:47 +00:00
2008-04-14 11:01:38 +00:00
2008-08-06 19:44:47 +00:00
2008-07-28 04:07:32 +00:00
2008-02-20 17:42:36 +00:00
2008-02-20 17:42:36 +00:00
2008-08-07 19:57:28 +00:00
2008-07-30 04:34:58 +00:00
2008-07-30 04:34:58 +00:00
2008-02-15 03:35:53 +00:00
2008-07-10 01:32:23 +00:00
2008-07-10 01:32:23 +00:00
2008-07-10 01:32:23 +00:00
2008-07-10 01:32:23 +00:00
2007-09-11 16:07:50 +00:00
2008-02-04 19:15:52 +00:00
2008-07-30 04:34:58 +00:00
2008-07-30 04:34:58 +00:00
2008-02-14 15:20:26 +00:00
2008-02-14 15:20:26 +00:00
2008-02-14 15:20:26 +00:00
2008-02-14 15:20:26 +00:00
2008-01-09 12:29:08 +00:00
2008-07-30 04:34:58 +00:00
2008-03-12 08:37:09 +00:00
2008-07-28 18:07:05 +00:00
2008-07-30 04:34:58 +00:00
2008-07-30 04:34:58 +00:00
2008-03-12 08:37:09 +00:00
2008-07-30 04:34:58 +00:00
2008-08-07 19:57:28 +00:00
2008-07-30 04:34:58 +00:00
2008-02-12 11:32:31 +00:00
2008-07-30 04:34:58 +00:00
2008-03-25 18:56:02 +00:00
2008-06-16 16:16:31 +00:00
2007-09-26 13:45:32 +00:00
2007-09-26 13:45:32 +00:00
2008-05-07 23:13:09 +00:00
2008-02-15 03:35:53 +00:00
2008-07-30 04:34:58 +00:00
2008-08-07 19:57:28 +00:00
2008-06-30 20:51:58 +00:00
2008-01-15 07:25:49 +00:00
2008-02-12 11:32:31 +00:00
2008-02-15 03:35:53 +00:00
2008-07-28 18:07:05 +00:00
2008-03-12 08:37:09 +00:00
2008-02-20 17:42:36 +00:00
2008-08-07 19:57:28 +00:00
2008-08-07 19:57:28 +00:00
2008-08-07 19:57:28 +00:00
2008-04-16 08:51:18 +00:00
2008-01-21 04:56:47 +00:00
2007-09-19 12:08:34 +00:00
2008-02-15 03:35:53 +00:00
2007-09-11 16:07:50 +00:00
2008-03-28 06:49:44 +00:00
2008-02-20 17:42:36 +00:00
2008-08-06 19:44:47 +00:00
2008-07-30 04:34:58 +00:00
2008-02-15 03:35:53 +00:00
2008-02-15 03:35:53 +00:00
2008-07-30 04:34:58 +00:00
2008-03-28 06:49:44 +00:00
2007-11-04 23:49:09 +00:00
2008-07-30 04:34:58 +00:00
2008-02-14 15:20:26 +00:00
2008-07-30 04:34:58 +00:00
2008-07-30 04:34:58 +00:00
2008-08-06 19:44:47 +00:00
2008-02-15 10:35:46 +00:00
2007-12-29 01:36:40 +00:00
2008-02-15 03:35:53 +00:00
2008-02-20 17:42:36 +00:00
2008-02-15 03:35:53 +00:00
2008-06-30 20:51:58 +00:00
2008-02-14 15:20:26 +00:00
2008-08-07 00:00:05 +00:00
2008-07-30 04:34:58 +00:00
2008-02-20 17:42:36 +00:00
2008-02-20 17:42:36 +00:00
2008-02-04 19:43:51 +00:00
2008-02-15 03:35:53 +00:00
2008-07-30 04:34:58 +00:00
2008-03-03 23:23:41 +00:00

BFD is an object file library.  It permits applications to use the
same routines to process object files regardless of their format.

BFD is used by the GNU debugger, assembler, linker, and the binary
utilities.

The documentation on using BFD is scanty and may be occasionally
incorrect.  Pointers to documentation problems, or an entirely
rewritten manual, would be appreciated.

There is some BFD internals documentation in doc/bfdint.texi which may
help programmers who want to modify BFD.

BFD is normally built as part of another package.  See the build
instructions for that package, probably in a README file in the
appropriate directory.

BFD supports the following configure options:

  --target=TARGET
	The default target for which to build the library.  TARGET is
	a configuration target triplet, such as sparc-sun-solaris.
  --enable-targets=TARGET,TARGET,TARGET...
	Additional targets the library should support.  To include
	support for all known targets, use --enable-targets=all.
  --enable-64-bit-bfd
	Include support for 64 bit targets.  This is automatically
	turned on if you explicitly request a 64 bit target, but not
	for --enable-targets=all.  This requires a compiler with a 64
	bit integer type, such as gcc.
  --enable-shared
	Build BFD as a shared library.
  --with-mmap
	Use mmap when accessing files.  This is faster on some hosts,
	but slower on others.  It may not work on all hosts.

Report bugs with BFD to bug-binutils@gnu.org.

Patches are encouraged.  When sending patches, always send the output
of diff -u or diff -c from the original file to the new file.  Do not
send default diff output.  Do not make the diff from the new file to
the original file.  Remember that any patch must not break other
systems.  Remember that BFD must support cross compilation from any
host to any target, so patches which use ``#ifdef HOST'' are not
acceptable.  Please also read the ``Reporting Bugs'' section of the
gcc manual.

Bug reports without patches will be remembered, but they may never get
fixed until somebody volunteers to fix them.