From: Paul Brook Date: Mon, 19 Jun 2006 14:22:33 +0000 (+0000) Subject: 2006-06-19 Vladimir Prus X-Git-Tag: binutils-csl-sourcerygxx-3_4_4-21~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff8424a680efe129a04dbeda1786cea15d4319d3;p=thirdparty%2Fbinutils-gdb.git 2006-06-19 Vladimir Prus 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. --- diff --git a/ChangeLog.csl b/ChangeLog.csl index 173cfc5c0ae..54f22aacf8a 100644 --- a/ChangeLog.csl +++ b/ChangeLog.csl @@ -1,3 +1,14 @@ +2006-06-19 Vladimir Prus + + 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. + 2006-06-15 Mark Shinwell * include/elf/arm.h: Correct names of R_ARM_LDC_G{0,1,2} diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 3c603840089..9768d8c88c8 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -9155,6 +9155,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; diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp index 09395069870..e8e6a852469 100644 --- a/ld/testsuite/ld-arm/arm-elf.exp +++ b/ld/testsuite/ld-arm/arm-elf.exp @@ -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