mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-13 02:45:02 +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:
@ -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>
|
2010-02-11 David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
* elfxx-sparc.c (_bfd_sparc_elf_check_relocs): For R_SPARC_GOTDATA_OP_HIX22
|
* 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;
|
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
|
static bfd_boolean
|
||||||
elf32_arm_output_arch_local_syms (bfd *output_bfd,
|
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;
|
struct elf32_arm_link_hash_table *htab;
|
||||||
bfd_vma offset;
|
bfd_vma offset;
|
||||||
bfd_size_type size;
|
bfd_size_type size;
|
||||||
|
bfd *input_bfd;
|
||||||
|
|
||||||
htab = elf32_arm_hash_table (info);
|
htab = elf32_arm_hash_table (info);
|
||||||
if (htab == NULL)
|
if (htab == NULL)
|
||||||
@ -13030,6 +13033,32 @@ elf32_arm_output_arch_local_syms (bfd *output_bfd,
|
|||||||
osi.info = info;
|
osi.info = info;
|
||||||
osi.func = func;
|
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. */
|
/* ARM->Thumb glue. */
|
||||||
if (htab->arm_glue_size > 0)
|
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>
|
2010-02-11 David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
* ld-sparc/gotop32.s: Add local symbol case.
|
* 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}
|
{"Relocation boundaries" "-defsym x=0 -defsym y=0 -defsym _start=0" "" {reloc-boundaries.s}
|
||||||
{{objdump -s reloc-boundaries.d}}
|
{{objdump -s reloc-boundaries.d}}
|
||||||
"reloc-boundaries"}
|
"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
|
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
|
Reference in New Issue
Block a user