2006-06-19 Vladimir Prus <vladimir@codesourcery.com>

bfd/
	* elf32-arm.c (elf32_arm_swap_symbol_out): Don't set low
	bit for undefined symbols.

	ld/testsuite
	* ld-arm/arm-elf.exp: New test.
	* ld-arm/use-thumb-lib.s: New file.
	* ld-arm/use-thumb-lib.sym: New file.
This commit is contained in:
Paul Brook 2006-06-19 14:22:27 +00:00
parent a6b96bebd2
commit 0fa3dcad7e
4 changed files with 28 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2006-06-19 Vladimir Prus <vladimir@codesourcery.com>
* elf32-arm.c (elf32_arm_swap_symbol_out): Don't set low
bit for undefined symbols.
2006-06-19 Alan Modra <amodra@bigpond.net.au>
* elf-bfd.h (struct elf_backend_data): Add bfd_link_info pointer

View File

@ -9172,6 +9172,19 @@ elf32_arm_swap_symbol_out (bfd *abfd,
{
newsym = *src;
newsym.st_info = ELF_ST_INFO (ELF_ST_BIND (src->st_info), STT_FUNC);
if (newsym.st_shndx != SHN_UNDEF)
{
/* Do this only for defined symbols. At link type, the static
linker will simulate the work of dynamic linker of resolving
symbols and will carry over the thumbness of found symbols to
the output symbol table. It's not clear how it happens, but
the thumbness of underfined symbols can well be different at
runtime, and writing '1' for them will be confusing for users
and possibly for dynamic linker itself.
*/
newsym.st_value |= 1;
}
newsym.st_value |= 1;
src = &newsym;

View File

@ -1,3 +1,9 @@
2006-06-19 Vladimir Prus <vladimir@codesourcery.com>
* ld-arm/arm-elf.exp: New test.
* ld-arm/use-thumb-lib.s: New file.
* ld-arm/use-thumb-lib.sym: New file.
2006-06-15 Mark Shinwell <shinwell@codesourcery.com>
* ld-arm/group-relocs-alu-bad.d: New test.

View File

@ -131,6 +131,10 @@ set armelftests {
{"BE8 Mapping Symbols" "-static -T arm.ld -EB --be8" "-EB" {arm-be8.s}
{{objdump -s arm-be8.d}}
"arm-be8"}
{"Using Thumb lib by another lib" "-shared tmpdir/mixed-lib.so" "" {use-thumb-lib.s}
{{readelf -Ds use-thumb-lib.sym}}
"use-thumb-lib.so"}
}
run_ld_link_tests $armelftests