📄 bfdt.texi
字号:
@examplebfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);@end example@strong{Description}@*Set the flag word in the BFD @var{abfd} to the value @var{flags}.Possible errors are:@itemize @bullet@item@code{bfd_error_wrong_format} - The target bfd was not of object format.@item@code{bfd_error_invalid_operation} - The target bfd was open for reading.@item@code{bfd_error_invalid_operation} -The flag word contained a bit which was not applicable to thetype of file. E.g., an attempt was made to set the @code{D_PAGED} biton a BFD format which does not support demand paging.@end itemize@findex bfd_get_arch_size@subsubsection @code{bfd_get_arch_size}@strong{Synopsis}@exampleint bfd_get_arch_size (bfd *abfd);@end example@strong{Description}@*Returns the architecture address size, in bits, as determinedby the object file's format. For ELF, this information isincluded in the header.@strong{Returns}@*Returns the arch size in bits if known, @code{-1} otherwise.@findex bfd_get_sign_extend_vma@subsubsection @code{bfd_get_sign_extend_vma}@strong{Synopsis}@exampleint bfd_get_sign_extend_vma (bfd *abfd);@end example@strong{Description}@*Indicates if the target architecture "naturally" sign extendsan address. Some architectures implicitly sign extend addressvalues when they are converted to types larger than the sizeof an address. For instance, bfd_get_start_address() willreturn an address sign extended to fill a bfd_vma when this isthe case.@strong{Returns}@*Returns @code{1} if the target architecture is known to signextend addresses, @code{0} if the target architecture is known tonot sign extend addresses, and @code{-1} otherwise.@findex bfd_set_start_address@subsubsection @code{bfd_set_start_address}@strong{Synopsis}@examplebfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);@end example@strong{Description}@*Make @var{vma} the entry point of output BFD @var{abfd}.@strong{Returns}@*Returns @code{TRUE} on success, @code{FALSE} otherwise.@findex bfd_get_gp_size@subsubsection @code{bfd_get_gp_size}@strong{Synopsis}@exampleunsigned int bfd_get_gp_size (bfd *abfd);@end example@strong{Description}@*Return the maximum size of objects to be optimized using the GPregister under MIPS ECOFF. This is typically set by the @code{-G}argument to the compiler, assembler or linker.@findex bfd_set_gp_size@subsubsection @code{bfd_set_gp_size}@strong{Synopsis}@examplevoid bfd_set_gp_size (bfd *abfd, unsigned int i);@end example@strong{Description}@*Set the maximum size of objects to be optimized using the GPregister under ECOFF or MIPS ELF. This is typically set bythe @code{-G} argument to the compiler, assembler or linker.@findex bfd_scan_vma@subsubsection @code{bfd_scan_vma}@strong{Synopsis}@examplebfd_vma bfd_scan_vma (const char *string, const char **end, int base);@end example@strong{Description}@*Convert, like @code{strtoul}, a numerical expression@var{string} into a @code{bfd_vma} integer, and return that integer.(Though without as many bells and whistles as @code{strtoul}.)The expression is assumed to be unsigned (i.e., positive).If given a @var{base}, it is used as the base for conversion.A base of 0 causes the function to interpret the stringin hex if a leading "0x" or "0X" is found, otherwisein octal if a leading zero is found, otherwise in decimal.If the value would overflow, the maximum @code{bfd_vma} value isreturned.@findex bfd_copy_private_header_data@subsubsection @code{bfd_copy_private_header_data}@strong{Synopsis}@examplebfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);@end example@strong{Description}@*Copy private BFD header information from the BFD @var{ibfd} to thethe BFD @var{obfd}. This copies information that may requiresections to exist, but does not require symbol tables. Return@code{true} on success, @code{false} on error.Possible error returns are:@itemize @bullet@item@code{bfd_error_no_memory} -Not enough memory exists to create private data for @var{obfd}.@end itemize@example#define bfd_copy_private_header_data(ibfd, obfd) \ BFD_SEND (obfd, _bfd_copy_private_header_data, \ (ibfd, obfd))@end example@findex bfd_copy_private_bfd_data@subsubsection @code{bfd_copy_private_bfd_data}@strong{Synopsis}@examplebfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);@end example@strong{Description}@*Copy private BFD information from the BFD @var{ibfd} to thethe BFD @var{obfd}. Return @code{TRUE} on success, @code{FALSE} on error.Possible error returns are:@itemize @bullet@item@code{bfd_error_no_memory} -Not enough memory exists to create private data for @var{obfd}.@end itemize@example#define bfd_copy_private_bfd_data(ibfd, obfd) \ BFD_SEND (obfd, _bfd_copy_private_bfd_data, \ (ibfd, obfd))@end example@findex bfd_merge_private_bfd_data@subsubsection @code{bfd_merge_private_bfd_data}@strong{Synopsis}@examplebfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);@end example@strong{Description}@*Merge private BFD information from the BFD @var{ibfd} to thethe output file BFD @var{obfd} when linking. Return @code{TRUE}on success, @code{FALSE} on error. Possible error returns are:@itemize @bullet@item@code{bfd_error_no_memory} -Not enough memory exists to create private data for @var{obfd}.@end itemize@example#define bfd_merge_private_bfd_data(ibfd, obfd) \ BFD_SEND (obfd, _bfd_merge_private_bfd_data, \ (ibfd, obfd))@end example@findex bfd_set_private_flags@subsubsection @code{bfd_set_private_flags}@strong{Synopsis}@examplebfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);@end example@strong{Description}@*Set private BFD flag information in the BFD @var{abfd}.Return @code{TRUE} on success, @code{FALSE} on error. Possible errorreturns are:@itemize @bullet@item@code{bfd_error_no_memory} -Not enough memory exists to create private data for @var{obfd}.@end itemize@example#define bfd_set_private_flags(abfd, flags) \ BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))@end example@findex Other functions@subsubsection @code{Other functions}@strong{Description}@*The following functions exist but have not yet been documented.@example#define bfd_sizeof_headers(abfd, reloc) \ BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, reloc))#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \ BFD_SEND (abfd, _bfd_find_nearest_line, \ (abfd, sec, syms, off, file, func, line))#define bfd_debug_info_start(abfd) \ BFD_SEND (abfd, _bfd_debug_info_start, (abfd))#define bfd_debug_info_end(abfd) \ BFD_SEND (abfd, _bfd_debug_info_end, (abfd))#define bfd_debug_info_accumulate(abfd, section) \ BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))#define bfd_stat_arch_elt(abfd, stat) \ BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))#define bfd_update_armap_timestamp(abfd) \ BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))#define bfd_set_arch_mach(abfd, arch, mach)\ BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))#define bfd_relax_section(abfd, section, link_info, again) \ BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))#define bfd_gc_sections(abfd, link_info) \ BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))#define bfd_merge_sections(abfd, link_info) \ BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))#define bfd_is_group_section(abfd, sec) \ BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))#define bfd_discard_group(abfd, sec) \ BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))#define bfd_link_hash_table_create(abfd) \ BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))#define bfd_link_hash_table_free(abfd, hash) \ BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))#define bfd_link_add_symbols(abfd, info) \ BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))#define bfd_link_just_syms(sec, info) \ BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))#define bfd_final_link(abfd, info) \ BFD_SEND (abfd, _bfd_final_link, (abfd, info))#define bfd_free_cached_info(abfd) \ BFD_SEND (abfd, _bfd_free_cached_info, (abfd))#define bfd_get_dynamic_symtab_upper_bound(abfd) \ BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))#define bfd_print_private_bfd_data(abfd, file)\ BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \ BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \ BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \ dyncount, dynsyms, ret))#define bfd_get_dynamic_reloc_upper_bound(abfd) \ BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \ BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))extern bfd_byte *bfd_get_relocated_section_contents (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, bfd_boolean, asymbol **);@end example@findex bfd_alt_mach_code@subsubsection @code{bfd_alt_mach_code}@strong{Synopsis}@examplebfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);@end example@strong{Description}@*When more than one machine code number is available for thesame machine type, this function can be used to switch betweenthe preferred one (alternative == 0) and any others. Currently,only ELF supports this feature, with up to two alternatemachine codes.@examplestruct bfd_preserve@{ void *marker; void *tdata; flagword flags; const struct bfd_arch_info *arch_info; struct bfd_section *sections; struct bfd_section **section_tail; unsigned int section_count; struct bfd_hash_table section_htab;@};@end example@findex bfd_preserve_save@subsubsection @code{bfd_preserve_save}@strong{Synopsis}@examplebfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);@end example@strong{Description}@*When testing an object for compatibility with a particulartarget back-end, the back-end object_p function needs to setup certain fields in the bfd on successfully recognizing theobject. This typically happens in a piecemeal fashion, withfailures possible at many points. On failure, the bfd issupposed to be restored to its initial state, which isvirtually impossible. However, restoring a subset of the bfdstate works in practice. This function stores the subset andreinitializes the bfd.@findex bfd_preserve_restore@subsubsection @code{bfd_preserve_restore}@strong{Synopsis}@examplevoid bfd_preserve_restore (bfd *, struct bfd_preserve *);@end example@strong{Description}@*This function restores bfd state saved by bfd_preserve_save.If MARKER is non-NULL in struct bfd_preserve then that blockand all subsequently bfd_alloc'd memory is freed.@findex bfd_preserve_finish@subsubsection @code{bfd_preserve_finish}@strong{Synopsis}@examplevoid bfd_preserve_finish (bfd *, struct bfd_preserve *);@end example@strong{Description}@*This function should be called when the bfd state saved bybfd_preserve_save is no longer needed. ie. when the back-endobject_p function returns with success.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -