bfd/
2007-12-24 H.J. Lu <hongjiu.lu@intel.com> PR binutils/5488 * elf.c (IS_NOTE): New. (IS_COREFILE_NOTE): Use IS_NOTE. (IS_SECTION_IN_INPUT_SEGMENT): Use IS_NOTE instead of IS_COREFILE_NOTE. ld/testsuite/ 2007-12-24 H.J. Lu <hongjiu.lu@intel.com> PR binutils/5488 * ld-elf/note-2.d: New. * ld-elf/note-2.s: Likewise. * ld-elf/note-2.t: Likewise.
This commit is contained in:
parent
147d51c232
commit
0efc80c807
6 changed files with 66 additions and 6 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2007-12-24 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR binutils/5488
|
||||||
|
* elf.c (IS_NOTE): New.
|
||||||
|
(IS_COREFILE_NOTE): Use IS_NOTE.
|
||||||
|
(IS_SECTION_IN_INPUT_SEGMENT): Use IS_NOTE instead of
|
||||||
|
IS_COREFILE_NOTE.
|
||||||
|
|
||||||
2007-12-24 H.J. Lu <hongjiu.lu@intel.com>
|
2007-12-24 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR binutils/5449
|
PR binutils/5449
|
||||||
|
|
21
bfd/elf.c
21
bfd/elf.c
|
@ -5090,15 +5090,22 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
|
||||||
&& (section->lma + SECTION_SIZE (section, segment) \
|
&& (section->lma + SECTION_SIZE (section, segment) \
|
||||||
<= SEGMENT_END (segment, base)))
|
<= SEGMENT_END (segment, base)))
|
||||||
|
|
||||||
/* Special case: corefile "NOTE" section containing regs, prpsinfo etc. */
|
/* Handle PT_NOTE segment. */
|
||||||
#define IS_COREFILE_NOTE(p, s) \
|
#define IS_NOTE(p, s) \
|
||||||
(p->p_type == PT_NOTE \
|
(p->p_type == PT_NOTE \
|
||||||
&& bfd_get_format (ibfd) == bfd_core \
|
&& elf_section_type (s) == SHT_NOTE \
|
||||||
&& s->vma == 0 && s->lma == 0 \
|
|
||||||
&& (bfd_vma) s->filepos >= p->p_offset \
|
&& (bfd_vma) s->filepos >= p->p_offset \
|
||||||
&& ((bfd_vma) s->filepos + s->size \
|
&& ((bfd_vma) s->filepos + s->size \
|
||||||
<= p->p_offset + p->p_filesz))
|
<= p->p_offset + p->p_filesz))
|
||||||
|
|
||||||
|
/* Special case: corefile "NOTE" section containing regs, prpsinfo
|
||||||
|
etc. */
|
||||||
|
#define IS_COREFILE_NOTE(p, s) \
|
||||||
|
(IS_NOTE (p, s) \
|
||||||
|
&& bfd_get_format (ibfd) == bfd_core \
|
||||||
|
&& s->vma == 0 \
|
||||||
|
&& s->lma == 0)
|
||||||
|
|
||||||
/* The complicated case when p_vaddr is 0 is to handle the Solaris
|
/* The complicated case when p_vaddr is 0 is to handle the Solaris
|
||||||
linker, which generates a PT_INTERP section with p_vaddr and
|
linker, which generates a PT_INTERP section with p_vaddr and
|
||||||
p_memsz set to 0. */
|
p_memsz set to 0. */
|
||||||
|
@ -5117,7 +5124,8 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
|
||||||
A section will be included if:
|
A section will be included if:
|
||||||
1. It is within the address space of the segment -- we use the LMA
|
1. It is within the address space of the segment -- we use the LMA
|
||||||
if that is set for the segment and the VMA otherwise,
|
if that is set for the segment and the VMA otherwise,
|
||||||
2. It is an allocated segment,
|
2. It is an allocated section or a NOTE section in a PT_NOTE
|
||||||
|
segment.
|
||||||
3. There is an output section associated with it,
|
3. There is an output section associated with it,
|
||||||
4. The section has not already been allocated to a previous segment.
|
4. The section has not already been allocated to a previous segment.
|
||||||
5. PT_GNU_STACK segments do not include any sections.
|
5. PT_GNU_STACK segments do not include any sections.
|
||||||
|
@ -5130,7 +5138,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
|
||||||
? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr) \
|
? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr) \
|
||||||
: IS_CONTAINED_BY_VMA (section, segment)) \
|
: IS_CONTAINED_BY_VMA (section, segment)) \
|
||||||
&& (section->flags & SEC_ALLOC) != 0) \
|
&& (section->flags & SEC_ALLOC) != 0) \
|
||||||
|| IS_COREFILE_NOTE (segment, section)) \
|
|| IS_NOTE (segment, section)) \
|
||||||
&& segment->p_type != PT_GNU_STACK \
|
&& segment->p_type != PT_GNU_STACK \
|
||||||
&& (segment->p_type != PT_TLS \
|
&& (segment->p_type != PT_TLS \
|
||||||
|| (section->flags & SEC_THREAD_LOCAL)) \
|
|| (section->flags & SEC_THREAD_LOCAL)) \
|
||||||
|
@ -5664,6 +5672,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
|
||||||
#undef SECTION_SIZE
|
#undef SECTION_SIZE
|
||||||
#undef IS_CONTAINED_BY_VMA
|
#undef IS_CONTAINED_BY_VMA
|
||||||
#undef IS_CONTAINED_BY_LMA
|
#undef IS_CONTAINED_BY_LMA
|
||||||
|
#undef IS_NOTE
|
||||||
#undef IS_COREFILE_NOTE
|
#undef IS_COREFILE_NOTE
|
||||||
#undef IS_SOLARIS_PT_INTERP
|
#undef IS_SOLARIS_PT_INTERP
|
||||||
#undef IS_SECTION_IN_INPUT_SEGMENT
|
#undef IS_SECTION_IN_INPUT_SEGMENT
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
2007-12-24 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR binutils/5488
|
||||||
|
* ld-elf/note-2.d: New.
|
||||||
|
* ld-elf/note-2.s: Likewise.
|
||||||
|
* ld-elf/note-2.t: Likewise.
|
||||||
|
|
||||||
2007-12-20 Hans-Peter Nilsson <hp@axis.com>
|
2007-12-20 Hans-Peter Nilsson <hp@axis.com>
|
||||||
|
|
||||||
* ld-elf/seg.d: Restrict to linux and vxworks.
|
* ld-elf/seg.d: Restrict to linux and vxworks.
|
||||||
|
|
15
ld/testsuite/ld-elf/note-2.d
Normal file
15
ld/testsuite/ld-elf/note-2.d
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#ld: -Tnote-2.t
|
||||||
|
#objcopy_linked_file: -R .foo
|
||||||
|
#readelf: -l --wide
|
||||||
|
|
||||||
|
#...
|
||||||
|
Program Headers:
|
||||||
|
Type.*
|
||||||
|
LOAD +0x[0-9a-f]+ .*
|
||||||
|
NOTE +0x[0-9a-f]+ .*
|
||||||
|
|
||||||
|
#...
|
||||||
|
Segment Sections...
|
||||||
|
00[ \t]+.text *
|
||||||
|
01[ \t]+.note *
|
||||||
|
#pass
|
8
ld/testsuite/ld-elf/note-2.s
Normal file
8
ld/testsuite/ld-elf/note-2.s
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
.globl _entry
|
||||||
|
.text
|
||||||
|
_entry:
|
||||||
|
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
.section .foo,"awx",%progbits
|
||||||
|
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
.section .note,"",%note
|
||||||
|
.byte 0
|
13
ld/testsuite/ld-elf/note-2.t
Normal file
13
ld/testsuite/ld-elf/note-2.t
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
ENTRY(_entry)
|
||||||
|
PHDRS
|
||||||
|
{
|
||||||
|
data PT_LOAD;
|
||||||
|
note PT_NOTE;
|
||||||
|
}
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.text : { *(.text) } :data
|
||||||
|
.foo : { *(.foo) } :data
|
||||||
|
.note : { *(.note) } :note
|
||||||
|
/DISCARD/ : { *(*) }
|
||||||
|
}
|
Loading…
Reference in a new issue