Broken .hidden support in current binutils on ia32

H . J . Lu
Mon Jun 5 15:11:00 GMT 2000

On Mon, Jun 05, 2000 at 11:49:10PM +0200, Martin v. Loewis wrote:
> > At the moment, I'm talking about the 2.10 release candidate. But I'll check
> > the latest binutils release and see if it works.
> Oops, the release candidate. I believe the recent changes to the ELF
> visibility support have not been propagated to the release branch.
> Since the ELF visibility support in binutils 2.10 will be broken
> without these changes, and since GCC 3 will rely on a working support
> for .hidden (or none at all), I think it is really important that
> these patches get merged into the release branch. 
> HJ, would you agree with this judgement? If so, (and if there is a
> chance to get this into 2.10.0), would you be able to identify the
> relevant patches? I could also try to do this - again, if there is a
> chance that this still gets into 2.10.

There are quite a few changes for the ELF visibility to work right. I
can try to create a patch for 2.10. But I am afraid I don't have the
time to make sure it work correctly for 2.10.

BTW, I am enclosing the ChangLog entries here.

2000-06-05  H.J. Lu  <>

	* elflink.c (_bfd_elf_link_record_dynamic_symbol): Don't flag
	an error when seeing an undefined symbol with hidden/internal
	attribute. It is handled in *_relocate_section ().

2000-05-30  H.J. Lu  <>

	* elflink.c (_bfd_elf_link_record_dynamic_symbol): Clear the
	visibility bits if the symbol is undefined. Correctly handle
	weak undefined symbols with hidden and internal attributes.

	* elflink.h (elf_link_add_object_symbols): Always turn the
	symbol into local if it has the hidden or internal attribute.

2000-05-23  H.J. Lu  <>

	* elf64-alpha.c (elf64_alpha_relocate_section): Check
	h->root.other not h->other.
	* elf32-mips.c (mips_elf_calculate_relocation): Likewise.

	* elf32-ppc.c (ppc_elf_relocate_section): Fix a typo.

2000-05-23  H.J. Lu  <>

	* elf32-i386.c (elf_i386_relocate_section): Don't allow the
	undefined symbol with the non-default visibility attributes.
	* elf-hppa.h (elf_hppa_relocate_section): Likewise.
	* elf32-arm.h (elf32_arm_relocate_section): Likewise.
	* elf32-i370.c (i370_elf_relocate_section): Likewise.
	* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
	* elf32-mcore.c (mcore_elf_relocate_section): Likewise.
	* elf32-mips.c (mips_elf_calculate_relocation): Likewise.
	* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
	* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
	* elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
	* elf64-ia64.c (elf64_ia64_relocate_section): Likewise.
	* elf64-sparc.c (sparc64_elf_relocate_section): Likewise.

2000-05-22  H.J. Lu  <>

	* elflink.h (elf_link_output_extsym): Clear the visibility
	field for symbols not defined locally.

2000-05-03  Martin v. Löwis  <>

	* elflink.h (elf_link_add_object_symbols): Reset dynindx for
	hidden and internal symbols.
	(elf_fix_symbol_flags): Clear NEEDS_PLT for symbols with
	* elflink.c (_bfd_elf_link_record_dynamic_symbol): Do not
	assign a PLT or GOT entry to symbols with hidden and
	internal visibility.

More information about the Binutils mailing list