2006-06-19 Vladimir Prus <vladimir@codesourcery.com>
authorPaul Brook <paul@codesourcery.com>
Mon, 19 Jun 2006 14:22:33 +0000 (14:22 +0000)
committerPaul Brook <paul@codesourcery.com>
Mon, 19 Jun 2006 14:22:33 +0000 (14:22 +0000)
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.

ChangeLog.csl
bfd/elf32-arm.c
ld/testsuite/ld-arm/arm-elf.exp

index 173cfc5..54f22aa 100644 (file)
@@ -1,3 +1,14 @@
+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.
+
 2006-06-15  Mark Shinwell  <shinwell@codesourcery.com>
 
        * include/elf/arm.h: Correct names of R_ARM_LDC_G{0,1,2}
index 3c60384..9768d8c 100644 (file)
@@ -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;
index 0939506..e8e6a85 100644 (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