Howto change flags of a section?
Thierry Bidault
thierry.bidault@st.com
Thu Oct 24 03:23:00 GMT 2002
Hello from France,
I'm using bfd 2.9.1
and I'm wrtting a binutil that adds the flag SEC_EXCLUDE to a given
section.
I have used bfd_set_section_flags for it, but the flags of this section
are not changed (for instance with objdump I can't see them).
Do you have any idea where this comes from?
Thank you very much for your help.
This is the code I wrote:
static void
set_section_flags (bfd *ibfd, sec_ptr isection, PTR obfdarg)
{
if (strcmp(isection->name, ".mysection") == 0) {
flagword flags;
flags = bfd_get_section_flags (ibfd, isection);
/* Add SEC_EXCLUDE flag to .profile_info section to tell the linker
to erase this section when creating a final binary*/
flags |= SEC_EXCLUDE;
if (!bfd_set_section_flags (ibfd, isection, flags))
{
fprintf(stderr,"set flags ERROR\n");
}
fprintf(stdout,"new flags for %s:0x%x\n", isection->name,
isection->flags);
}
}
int
main (int argc, char *argv[])
{
char *file = NULL;
int f;
bfd *abfd;
file = argv[1];
f = open (file, O_RDWR, 0);
if (f < 0)
{
bfd_set_error (bfd_error_system_call);
bfd_fatal (file);
}
abfd = bfd_fdopenr (file, (const char *) NULL, f);
if (abfd == NULL)
bfd_fatal (file);
if (!bfd_check_format (abfd, bfd_object))
{
fprintf (stderr, "Not a bfd_object %s ! \n", file);
exit (-1);
}
bfd_map_over_sections (abfd, set_section_flags, (void *) NULL);
if (!bfd_close (abfd))
bfd_fatal (file);
return 0;
}
--
Thierry Bidault
More information about the Binutils
mailing list