This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Copying .group sections using BFD
- From: Alan Modra <amodra at gmail dot com>
- To: Andrew Geissler <geissonator at gmail dot com>
- Cc: binutils at sourceware dot org
- Date: Fri, 6 Feb 2015 14:36:38 +1030
- Subject: Re: Copying .group sections using BFD
- Authentication-results: sourceware.org; auth=none
- References: <CALLMt=oFWX=-gOYc+QbsS87zxRJVpo_Hio-ADNBp1b3kRMyDdw at mail dot gmail dot com>
On Wed, Jan 28, 2015 at 04:57:22PM -0600, Andrew Geissler wrote:
> And for reference, can anyone explain what a .group section is used
> for? I haven't been able to find a clear explanation of it.
See http://www.sco.com/developers/gabi/latest/ch4.sheader.html
SHT_GROUP sections are used to tell a linker that a certain group of
sections in a relocatable object file must be handled as a group.
For example, they must all be included in the final executable, or all
excluded.
On file, a SHT_GROUP section contents consists of an array of 32-bit
words. The first is a flag word, the rest are section indices
specifying which sections are members of the group. If you are using
BFD, then the section contents will have been translated to a flag
word followed by struct bfd_section pointers. On a 64-bit host that
means all elements of the array are 64-bit. However, you normally
wouldn't have any need to manipulate the SHT_GROUP section contents.
> I've done a lot of googling and searching but I haven't found much
> that has to do with copying a .group section over. The most obvious
> example is in objcopy.c but in setup_section() I see internal calls to
> code like group_signature (i.e. using Elf_Internal_Shdr) which is not
> available when compiling using the standard BFD libraries. I also see
> that the skip_section() interface will return true for SEC_GROUP
> sections so I'm assuming on a copy of a group, just the code in
> setup_section() is needed?
Yes, don't try to copy the group section contents yourself. Steal the
objcopy.c code, to have BFD recreate the group. In particular, you'll
need to set up the group signature symbol and call
bfd_copy_private_section_data.
--
Alan Modra
Australia Development Lab, IBM