Index: bfd/elf32-arm.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-arm.c,v retrieving revision 1.274 diff -u -p -r1.274 elf32-arm.c --- bfd/elf32-arm.c 9 Aug 2011 13:10:43 -0000 1.274 +++ bfd/elf32-arm.c 26 Aug 2011 14:54:03 -0000 @@ -14506,7 +14506,8 @@ elf32_arm_output_arch_local_syms (bfd *o == SEC_HAS_CONTENTS && get_arm_elf_section_data (osi.sec) != NULL && get_arm_elf_section_data (osi.sec)->mapcount == 0 - && osi.sec->size > 0) + && osi.sec->size > 0 + && (osi.sec->flags & SEC_EXCLUDE) == 0) { osi.sec_shndx = _bfd_elf_section_from_bfd_section (output_bfd, osi.sec->output_section); Index: ld/testsuite/ld-arm/arm-elf.exp =================================================================== RCS file: /cvs/src/src/ld/testsuite/ld-arm/arm-elf.exp,v retrieving revision 1.89 diff -u -p -r1.89 arm-elf.exp --- ld/testsuite/ld-arm/arm-elf.exp 9 Aug 2011 13:10:44 -0000 1.89 +++ ld/testsuite/ld-arm/arm-elf.exp 26 Aug 2011 14:54:05 -0000 @@ -323,6 +323,9 @@ set armelftests { {"Data only mapping symbols" "-T data-only-map.ld -Map map" "" {data-only-map.s} {{objdump -dr data-only-map.d}} "data-only-map"} + {"Data only mapping symbols for merged sections" "-T rodata-merge-map.ld" "" {rodata-merge-map1.s rodata-merge-map2.s rodata-merge-map3.s} + {{readelf -s rodata-merge-map.sym}} + "rodata-merge-map"} {"GOT relocations in executables (setup)" "-shared" "" {exec-got-1a.s} {} Index: ld/testsuite/ld-arm/rodata-merge-map.ld =================================================================== RCS file: ld/testsuite/ld-arm/rodata-merge-map.ld diff -N ld/testsuite/ld-arm/rodata-merge-map.ld --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-arm/rodata-merge-map.ld 26 Aug 2011 14:54:05 -0000 @@ -0,0 +1,9 @@ +/* Script for ld testsuite */ +OUTPUT_ARCH(arm) +SECTIONS +{ + .rodata : + { + *(.rodata*) + } +} Index: ld/testsuite/ld-arm/rodata-merge-map.sym =================================================================== RCS file: ld/testsuite/ld-arm/rodata-merge-map.sym diff -N ld/testsuite/ld-arm/rodata-merge-map.sym --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-arm/rodata-merge-map.sym 26 Aug 2011 14:54:05 -0000 @@ -0,0 +1,8 @@ + +Symbol table '.symtab' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 00000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000 0 SECTION LOCAL DEFAULT 1 + 2: 00000000 0 SECTION LOCAL DEFAULT 2 + 3: 00000000 0 NOTYPE LOCAL DEFAULT 1 \$d + 4: 0000000c 0 NOTYPE LOCAL DEFAULT 1 \$d Index: ld/testsuite/ld-arm/rodata-merge-map1.s =================================================================== RCS file: ld/testsuite/ld-arm/rodata-merge-map1.s diff -N ld/testsuite/ld-arm/rodata-merge-map1.s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-arm/rodata-merge-map1.s 26 Aug 2011 14:54:05 -0000 @@ -0,0 +1,8 @@ +@ Test to ensure that no nameless mapping symbol is inserted +@ within a merged section. +@ This file contains the 1st contribution, which is expected to +@ generate a $d symbol at its beginning. + + .section .rodata.str1.1,"aMS",%progbits,1 +.LC0: + .string "Hello world" Index: ld/testsuite/ld-arm/rodata-merge-map2.s =================================================================== RCS file: ld/testsuite/ld-arm/rodata-merge-map2.s diff -N ld/testsuite/ld-arm/rodata-merge-map2.s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-arm/rodata-merge-map2.s 26 Aug 2011 14:54:05 -0000 @@ -0,0 +1,9 @@ +@ This file contains the 2nd contribution, which is expected to +@ be fully merged into the 1st contribution (from +@ rodata-merge-map1.s), and generate no mapping symbol (which +@ would otherwise be converted in a symbol table entry with no +@ name). + + .section .rodata.str1.1,"aMS",%progbits,1 +.LC0: + .string "world" Index: ld/testsuite/ld-arm/rodata-merge-map3.s =================================================================== RCS file: ld/testsuite/ld-arm/rodata-merge-map3.s diff -N ld/testsuite/ld-arm/rodata-merge-map3.s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ld/testsuite/ld-arm/rodata-merge-map3.s 26 Aug 2011 14:54:05 -0000 @@ -0,0 +1,9 @@ +@ This file contains the 3rd contribution, which is expected to +@ be partially merged into the 1st contribution (from +@ rodata-merge-map1.s), and generate a (redundant, but harmless) +@ $d mapping symbol. + + .section .rodata.str1.1,"aMS",%progbits,1 +.LC0: + .string "foo" + .string "world"