This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Question about your patch
Thanks Nick. I just committed the following patch:
2009-01-28 Catherine Moore <clm@codesourcery.com>
* elf32-arm.c (elf32_arm_check_relocs): Set SEC_ALLOC and
SEC_LOAD for dynamic relocation sections.
Index: elf32-arm.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-arm.c,v
retrieving revision 1.168
retrieving revision 1.169
diff -p -r1.168 -r1.169
*** elf32-arm.c 19 Jan 2009 12:14:04 -0000 1.168
--- elf32-arm.c 28 Jan 2009 16:35:12 -0000 1.169
*************** elf32_arm_check_relocs (bfd *abfd, struc
*** 9643,9649 ****
flagword flags;
flags = bfd_get_section_flags (dynobj, sreloc);
! flags &= ~(SEC_LOAD | SEC_ALLOC);
bfd_set_section_flags (dynobj, sreloc, flags);
}
}
--- 9643,9649 ----
flagword flags;
flags = bfd_get_section_flags (dynobj, sreloc);
! flags |= (SEC_LOAD | SEC_ALLOC);
bfd_set_section_flags (dynobj, sreloc, flags);
}
}
Nick Clifton wrote:
Hi Catherine,
old part:
! if ((sec->flags & SEC_ALLOC) != 0
! /* BPABI objects never have dynamic
! relocations mapped. */
! && !htab->symbian_p)
! flags |= SEC_ALLOC | SEC_LOAD;
new part:
! /* BPABI objects never have dynamic relocations
mapped. */
! if (! htab->symbian_p)
{
! flagword flags;
! flags = bfd_get_section_flags (dynobj, sreloc);
! flags &= ~(SEC_LOAD | SEC_ALLOC);
! bfd_set_section_flags (dynobj, sreloc, flags);
What I'm seeing is that the SEC_ALLOC flag is missing for
.rel.somename sections that are created, which in turn is causing
these sections to be emitted to the output bfd instead of being placed
in the .rel.dyn section. In particular, it's happening during the
building of libc.so for arm-linux. Did you mean to make that change to
the flags to prevent the SEC_ALLOC flag from being set?
Nope - that is what they technically call a bug ... :-) Sorry about
that. Presumably you have a patch that fixes this ? If not please
consider it pre-approved, otherwise I'll write one myself.
Cheers
Nick