* elf32-arm.c (elf32_arm_symbian_begin_write_processing): Clear
D_PAGED. (elf32_arm_symbian_modify_segment_map): Don't reset includes_filehdr and includes_phdrs here.
This commit is contained in:
parent
7bea7009e2
commit
c3c766200a
2 changed files with 30 additions and 10 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2004-11-01 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
|
* elf32-arm.c (elf32_arm_symbian_begin_write_processing): Clear
|
||||||
|
D_PAGED.
|
||||||
|
(elf32_arm_symbian_modify_segment_map): Don't
|
||||||
|
reset includes_filehdr and includes_phdrs here.
|
||||||
|
|
||||||
2004-11-04 Daniel Jacobowitz <dan@debian.org>
|
2004-11-04 Daniel Jacobowitz <dan@debian.org>
|
||||||
|
|
||||||
* Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Replace
|
* Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Replace
|
||||||
|
|
|
@ -5575,6 +5575,25 @@ static struct bfd_elf_special_section const
|
||||||
static bfd_boolean
|
static bfd_boolean
|
||||||
elf32_arm_symbian_modify_segment_map
|
elf32_arm_symbian_modify_segment_map
|
||||||
PARAMS ((bfd *, struct bfd_link_info *));
|
PARAMS ((bfd *, struct bfd_link_info *));
|
||||||
|
static void
|
||||||
|
elf32_arm_symbian_begin_write_processing
|
||||||
|
PARAMS ((bfd *, bfd_boolean));
|
||||||
|
|
||||||
|
static void
|
||||||
|
elf32_arm_symbian_begin_write_processing (abfd, linker)
|
||||||
|
bfd *abfd;
|
||||||
|
bfd_boolean linker;
|
||||||
|
{
|
||||||
|
/* BPABI objects are never loaded directly by an OS kernel; they are
|
||||||
|
processed by a postlinker first, into an OS-specific format. If
|
||||||
|
the D_PAGED bit is set on the file, BFD will align segments on
|
||||||
|
page boundaries, so that an OS can directly map the file. With
|
||||||
|
BPABI objects, that just results in wasted space. In addition,
|
||||||
|
because we clear the D_PAGED bit, map_sections_to_segments will
|
||||||
|
recognize that the program headers should not be mapped into any
|
||||||
|
loadable segment. */
|
||||||
|
abfd->flags &= ~D_PAGED;
|
||||||
|
}
|
||||||
|
|
||||||
static bfd_boolean
|
static bfd_boolean
|
||||||
elf32_arm_symbian_modify_segment_map (abfd, info)
|
elf32_arm_symbian_modify_segment_map (abfd, info)
|
||||||
|
@ -5584,16 +5603,6 @@ elf32_arm_symbian_modify_segment_map (abfd, info)
|
||||||
struct elf_segment_map *m;
|
struct elf_segment_map *m;
|
||||||
asection *dynsec;
|
asection *dynsec;
|
||||||
|
|
||||||
/* The first PT_LOAD segment will have the program headers and file
|
|
||||||
headers in it by default -- but BPABI object files should not
|
|
||||||
include these headers in any loadable segment. */
|
|
||||||
for (m = elf_tdata (abfd)->segment_map; m != NULL; m = m->next)
|
|
||||||
if (m->p_type == PT_LOAD)
|
|
||||||
{
|
|
||||||
m->includes_filehdr = 0;
|
|
||||||
m->includes_phdrs = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* BPABI shared libraries and executables should have a PT_DYNAMIC
|
/* BPABI shared libraries and executables should have a PT_DYNAMIC
|
||||||
segment. However, because the .dynamic section is not marked
|
segment. However, because the .dynamic section is not marked
|
||||||
with SEC_LOAD, the generic ELF code will not create such a
|
with SEC_LOAD, the generic ELF code will not create such a
|
||||||
|
@ -5625,6 +5634,10 @@ elf32_arm_symbian_modify_segment_map (abfd, info)
|
||||||
#undef elf_backend_special_sections
|
#undef elf_backend_special_sections
|
||||||
#define elf_backend_special_sections elf32_arm_symbian_special_sections
|
#define elf_backend_special_sections elf32_arm_symbian_special_sections
|
||||||
|
|
||||||
|
#undef elf_backend_begin_write_processing
|
||||||
|
#define elf_backend_begin_write_processing \
|
||||||
|
elf32_arm_symbian_begin_write_processing
|
||||||
|
|
||||||
#undef elf_backend_modify_segment_map
|
#undef elf_backend_modify_segment_map
|
||||||
#define elf_backend_modify_segment_map elf32_arm_symbian_modify_segment_map
|
#define elf_backend_modify_segment_map elf32_arm_symbian_modify_segment_map
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue