mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
2010-02-12 Daniel Gutson <dgutson@codesourcery.com>
bfd/ * elf32-arm.c (elf32_arm_output_arch_local_syms): add missing mapping symbol to data only sections. ld/testsuite/ * ld-arm/arm-elf.exp (armelftests): New test case added. * ld-arm/data-only-map.s: New file. * ld-arm/data-only-map.d: New file. * ld-arm/data-only-map.ld: New file.
This commit is contained in:
parent
77551a33a8
commit
3381116249
@ -1,3 +1,8 @@
|
||||
2010-02-12 Daniel Gutson <dgutson@codesourcery.com>
|
||||
|
||||
* elf32-arm.c (elf32_arm_output_arch_local_syms): add
|
||||
missing mapping symbol to data only sections.
|
||||
|
||||
2010-02-11 David S. Miller <davem@davemloft.net>
|
||||
|
||||
* elfxx-sparc.c (_bfd_sparc_elf_check_relocs): For R_SPARC_GOTDATA_OP_HIX22
|
||||
|
@ -13004,7 +13004,9 @@ arm_map_one_stub (struct bfd_hash_entry * gen_entry,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Output mapping symbols for linker generated sections. */
|
||||
/* Output mapping symbols for linker generated sections,
|
||||
and for those data-only sections that do not have a
|
||||
$d. */
|
||||
|
||||
static bfd_boolean
|
||||
elf32_arm_output_arch_local_syms (bfd *output_bfd,
|
||||
@ -13019,6 +13021,7 @@ elf32_arm_output_arch_local_syms (bfd *output_bfd,
|
||||
struct elf32_arm_link_hash_table *htab;
|
||||
bfd_vma offset;
|
||||
bfd_size_type size;
|
||||
bfd *input_bfd;
|
||||
|
||||
htab = elf32_arm_hash_table (info);
|
||||
if (htab == NULL)
|
||||
@ -13030,6 +13033,32 @@ elf32_arm_output_arch_local_syms (bfd *output_bfd,
|
||||
osi.info = info;
|
||||
osi.func = func;
|
||||
|
||||
/* Add a $d mapping symbol to data-only sections that
|
||||
don't have any mapping symbol. This may result in (harmless) redundant
|
||||
mapping symbols. */
|
||||
for (input_bfd = info->input_bfds;
|
||||
input_bfd != NULL;
|
||||
input_bfd = input_bfd->link_next)
|
||||
{
|
||||
if ((input_bfd->flags & (BFD_LINKER_CREATED | HAS_SYMS)) == HAS_SYMS)
|
||||
for (osi.sec = input_bfd->sections;
|
||||
osi.sec != NULL;
|
||||
osi.sec = osi.sec->next)
|
||||
{
|
||||
if (osi.sec->output_section != NULL
|
||||
&& (osi.sec->flags & (SEC_HAS_CONTENTS | SEC_LINKER_CREATED))
|
||||
== SEC_HAS_CONTENTS
|
||||
&& get_arm_elf_section_data (osi.sec) != NULL
|
||||
&& get_arm_elf_section_data (osi.sec)->mapcount == 0)
|
||||
{
|
||||
osi.sec_shndx = _bfd_elf_section_from_bfd_section
|
||||
(output_bfd, osi.sec->output_section);
|
||||
if (osi.sec_shndx != (int)SHN_BAD)
|
||||
elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ARM->Thumb glue. */
|
||||
if (htab->arm_glue_size > 0)
|
||||
{
|
||||
|
@ -1,3 +1,10 @@
|
||||
2010-02-12 Daniel Gutson <dgutson@codesourcery.com>
|
||||
|
||||
* ld-arm/arm-elf.exp (armelftests): New test case added.
|
||||
* ld-arm/data-only-map.s: New file.
|
||||
* ld-arm/data-only-map.d: New file.
|
||||
* ld-arm/data-only-map.ld: New file.
|
||||
|
||||
2010-02-11 David S. Miller <davem@davemloft.net>
|
||||
|
||||
* ld-sparc/gotop32.s: Add local symbol case.
|
||||
|
@ -241,6 +241,9 @@ set armelftests {
|
||||
{"Relocation boundaries" "-defsym x=0 -defsym y=0 -defsym _start=0" "" {reloc-boundaries.s}
|
||||
{{objdump -s reloc-boundaries.d}}
|
||||
"reloc-boundaries"}
|
||||
{"Data only mapping symbols" "-T data-only-map.ld -Map map" "" {data-only-map.s}
|
||||
{{objdump -dr data-only-map.d}}
|
||||
"data-only-map"}
|
||||
}
|
||||
|
||||
run_ld_link_tests $armelftests
|
||||
|
13
ld/testsuite/ld-arm/data-only-map.d
Normal file
13
ld/testsuite/ld-arm/data-only-map.d
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
[^:]*: file format elf32-littlearm
|
||||
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
00000000 <_start>:
|
||||
0: eb01 0002 add\.w r0, r1, r2
|
||||
4: eb010002 \.word 0xeb010002
|
||||
8: eb01 0002 add\.w r0, r1, r2
|
||||
c: eb01 0200 add\.w r2, r1, r0
|
||||
10: eb010002 \.word 0xeb010002
|
||||
14: eb010002 \.word 0xeb010002
|
16
ld/testsuite/ld-arm/data-only-map.ld
Normal file
16
ld/testsuite/ld-arm/data-only-map.ld
Normal file
@ -0,0 +1,16 @@
|
||||
/* Script for ld testsuite */
|
||||
OUTPUT_ARCH(arm)
|
||||
ENTRY(_start)
|
||||
SECTIONS
|
||||
{
|
||||
.text :
|
||||
{
|
||||
*(.text)
|
||||
*(.after1)
|
||||
*(.after2)
|
||||
*(.after3)
|
||||
*(.after4)
|
||||
*(.after5)
|
||||
} =0
|
||||
}
|
||||
|
20
ld/testsuite/ld-arm/data-only-map.s
Normal file
20
ld/testsuite/ld-arm/data-only-map.s
Normal file
@ -0,0 +1,20 @@
|
||||
.syntax unified
|
||||
.thumb
|
||||
.global _start
|
||||
_start:
|
||||
add.w r0, r1, r2
|
||||
|
||||
.section .after1
|
||||
.word 0xeb010002
|
||||
|
||||
.section .after2
|
||||
add.w r0, r1, r2
|
||||
|
||||
.section .after3
|
||||
add.w r2, r1, r0
|
||||
|
||||
.section .after4
|
||||
.word 0xeb010002
|
||||
|
||||
.section .after5
|
||||
.word 0xeb010002
|
Loading…
Reference in New Issue
Block a user