Node:section prototypes, Previous:typedef asection, Up:Sections
These are the functions exported by the section handling part of BFD.
bfd_section_list_clear
Synopsis
void bfd_section_list_clear (bfd *);Description
bfd_get_section_by_name
Synopsis
asection *bfd_get_section_by_name(bfd *abfd, const char *name);Description
asections whose name matches name, otherwise NULL.
See Sections, for more information.
This should only be used in special cases; the normal way to process
all sections of a given name is to use bfd_map_over_sections and
strcmp on the name (or better yet, base it on the section flags
or something else) for each section.
bfd_get_unique_section_name
Synopsis
char *bfd_get_unique_section_name(bfd *abfd,
const char *templat,
int *count);
Descriptionbfd_make_section_old_way
Synopsis
asection *bfd_make_section_old_way(bfd *abfd, const char *name);Description
It has the funny name since this is the way it used to be before it was rewritten....
Possible errors are:
bfd_error_invalid_operation -
If output has already started for this BFD.
bfd_error_no_memory -
If memory allocation fails.
bfd_make_section_anyway
Synopsis
asection *bfd_make_section_anyway(bfd *abfd, const char *name);Description
Return NULL and set bfd_error on error; possible errors are:
bfd_error_invalid_operation - If output has already started for abfd.
bfd_error_no_memory - If memory allocation fails.
bfd_make_section
Synopsis
asection *bfd_make_section(bfd *, const char *name);Description
bfd_make_section_anyway, but return NULL (without calling
bfd_set_error ()) without changing the section chain if there is already a
section named name. If there is an error, return NULL and set
bfd_error.
bfd_set_section_flags
Synopsis
boolean bfd_set_section_flags(bfd *abfd, asection *sec, flagword flags);Description
true on success,
false on error. Possible error returns are:
bfd_error_invalid_operation -
The section cannot have one or more of the attributes
requested. For example, a .bss section in a.out may not
have the SEC_HAS_CONTENTS field set.
bfd_map_over_sections
Synopsis
void bfd_map_over_sections(bfd *abfd,
void (*func) (bfd *abfd,
asection *sect,
PTR obj),
PTR obj);
Descriptionfunc(abfd, the_section, obj);
This is the prefered method for iterating over sections; an
alternative would be to use a loop:
section *p;
for (p = abfd->sections; p != NULL; p = p->next)
func(abfd, p, ...)
bfd_set_section_size
Synopsis
boolean bfd_set_section_size(bfd *abfd, asection *sec, bfd_size_type val);Description
true is returned, else false.
Possible error returns:
bfd_error_invalid_operation -
Writing has started to the BFD, so setting the size is invalid.
bfd_set_section_contents
Synopsis
boolean bfd_set_section_contents (bfd *abfd, asection *section,
PTR data, file_ptr offset,
bfd_size_type count);
DescriptionNormally true is returned, else false. Possible error
returns are:
bfd_error_no_contents -
The output section does not have the SEC_HAS_CONTENTS
attribute, so nothing can be written to it.
_bfd_set_section_contents.
bfd_get_section_contents
Synopsis
boolean bfd_get_section_contents (bfd *abfd, asection *section,
PTR location, file_ptr offset,
bfd_size_type count);
DescriptionIf the contents of a constructor with the SEC_CONSTRUCTOR
flag set are requested or if the section does not have the
SEC_HAS_CONTENTS flag set, then the location is filled
with zeroes. If no errors occur, true is returned, else
false.
bfd_copy_private_section_data
Synopsis
boolean bfd_copy_private_section_data (bfd *ibfd, asection *isec,
bfd *obfd, asection *osec);
Descriptiontrue on success, false on error. Possible error
returns are:
bfd_error_no_memory -
Not enough memory exists to create private data for osec.
#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
BFD_SEND (obfd, _bfd_copy_private_section_data, \
(ibfd, isection, obfd, osection))
_bfd_strip_section_from_output
Synopsis
void _bfd_strip_section_from_output (struct bfd_link_info *info, asection *section);Description