Line 6... |
Line 6... |
/* libbfd.h -- Declarations used by bfd library *implementation*.
|
/* libbfd.h -- Declarations used by bfd library *implementation*.
|
(This include file is not for users of the library.)
|
(This include file is not for users of the library.)
|
|
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
|
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
|
2010
|
2010, 2011
|
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
|
|
Written by Cygnus Support.
|
Written by Cygnus Support.
|
|
|
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
Line 456... |
Line 456... |
(bfd *, asection *, struct bfd_link_info *, bfd_boolean *)) \
|
(bfd *, asection *, struct bfd_link_info *, bfd_boolean *)) \
|
bfd_false)
|
bfd_false)
|
#define _bfd_nolink_bfd_gc_sections \
|
#define _bfd_nolink_bfd_gc_sections \
|
((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
|
((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
|
bfd_false)
|
bfd_false)
|
|
#define _bfd_nolink_bfd_lookup_section_flags \
|
|
((void (*) (struct bfd_link_info *, struct flag_info *)) \
|
|
bfd_0)
|
#define _bfd_nolink_bfd_merge_sections \
|
#define _bfd_nolink_bfd_merge_sections \
|
((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
|
((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
|
bfd_false)
|
bfd_false)
|
#define _bfd_nolink_bfd_is_group_section \
|
#define _bfd_nolink_bfd_is_group_section \
|
((bfd_boolean (*) (bfd *, const struct bfd_section *)) \
|
((bfd_boolean (*) (bfd *, const struct bfd_section *)) \
|
Line 481... |
Line 484... |
#define _bfd_nolink_bfd_final_link \
|
#define _bfd_nolink_bfd_final_link \
|
((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
|
((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
|
#define _bfd_nolink_bfd_link_split_section \
|
#define _bfd_nolink_bfd_link_split_section \
|
((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
|
((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
|
#define _bfd_nolink_section_already_linked \
|
#define _bfd_nolink_section_already_linked \
|
((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
|
((bfd_boolean (*) (bfd *, asection *, \
|
|
struct bfd_link_info *)) bfd_false)
|
#define _bfd_nolink_bfd_define_common_symbol \
|
#define _bfd_nolink_bfd_define_common_symbol \
|
((bfd_boolean (*) (bfd *, struct bfd_link_info *, \
|
((bfd_boolean (*) (bfd *, struct bfd_link_info *, \
|
struct bfd_link_hash_entry *)) bfd_false)
|
struct bfd_link_hash_entry *)) bfd_false)
|
|
|
/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
|
/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
|
Line 601... |
Line 605... |
(bfd *, struct bfd_link_info *);
|
(bfd *, struct bfd_link_info *);
|
|
|
extern bfd_boolean _bfd_generic_link_split_section
|
extern bfd_boolean _bfd_generic_link_split_section
|
(bfd *, struct bfd_section *);
|
(bfd *, struct bfd_section *);
|
|
|
extern void _bfd_generic_section_already_linked
|
extern bfd_boolean _bfd_generic_section_already_linked
|
(bfd *, struct bfd_section *, struct bfd_link_info *);
|
(bfd *, asection *, struct bfd_link_info *);
|
|
|
/* Generic reloc_link_order processing routine. */
|
/* Generic reloc_link_order processing routine. */
|
extern bfd_boolean _bfd_generic_reloc_link_order
|
extern bfd_boolean _bfd_generic_reloc_link_order
|
(bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
|
(bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
|
|
|
Line 848... |
Line 852... |
Otherwise, a value of -1 is returned (and <<bfd_error>> is set). */
|
Otherwise, a value of -1 is returned (and <<bfd_error>> is set). */
|
int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
|
int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
|
int (*bclose) (struct bfd *abfd);
|
int (*bclose) (struct bfd *abfd);
|
int (*bflush) (struct bfd *abfd);
|
int (*bflush) (struct bfd *abfd);
|
int (*bstat) (struct bfd *abfd, struct stat *sb);
|
int (*bstat) (struct bfd *abfd, struct stat *sb);
|
/* Just like mmap: (void*)-1 on failure, mmapped address on success. */
|
/* Mmap a part of the files. ADDR, LEN, PROT, FLAGS and OFFSET are the usual
|
|
mmap parameter, except that LEN and OFFSET do not need to be page
|
|
aligned. Returns (void *)-1 on failure, mmapped address on success.
|
|
Also write in MAP_ADDR the address of the page aligned buffer and in
|
|
MAP_LEN the size mapped (a page multiple). Use unmap with MAP_ADDR and
|
|
MAP_LEN to unmap. */
|
void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len,
|
void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len,
|
int prot, int flags, file_ptr offset);
|
int prot, int flags, file_ptr offset,
|
|
void **map_addr, bfd_size_type *map_len);
|
};
|
};
|
extern const struct bfd_iovec _bfd_memory_iovec;
|
extern const struct bfd_iovec _bfd_memory_iovec;
|
/* Extracted from bfdwin.c. */
|
/* Extracted from bfdwin.c. */
|
struct _bfd_window_internal {
|
struct _bfd_window_internal {
|
struct _bfd_window_internal *next;
|
struct _bfd_window_internal *next;
|
Line 1060... |
Line 1070... |
"BFD_RELOC_ALPHA_TPREL64",
|
"BFD_RELOC_ALPHA_TPREL64",
|
"BFD_RELOC_ALPHA_TPREL_HI16",
|
"BFD_RELOC_ALPHA_TPREL_HI16",
|
"BFD_RELOC_ALPHA_TPREL_LO16",
|
"BFD_RELOC_ALPHA_TPREL_LO16",
|
"BFD_RELOC_ALPHA_TPREL16",
|
"BFD_RELOC_ALPHA_TPREL16",
|
"BFD_RELOC_MIPS_JMP",
|
"BFD_RELOC_MIPS_JMP",
|
|
"BFD_RELOC_MICROMIPS_JMP",
|
"BFD_RELOC_MIPS16_JMP",
|
"BFD_RELOC_MIPS16_JMP",
|
"BFD_RELOC_MIPS16_GPREL",
|
"BFD_RELOC_MIPS16_GPREL",
|
"BFD_RELOC_HI16",
|
"BFD_RELOC_HI16",
|
"BFD_RELOC_HI16_S",
|
"BFD_RELOC_HI16_S",
|
"BFD_RELOC_LO16",
|
"BFD_RELOC_LO16",
|
Line 1074... |
Line 1085... |
"BFD_RELOC_MIPS16_CALL16",
|
"BFD_RELOC_MIPS16_CALL16",
|
"BFD_RELOC_MIPS16_HI16",
|
"BFD_RELOC_MIPS16_HI16",
|
"BFD_RELOC_MIPS16_HI16_S",
|
"BFD_RELOC_MIPS16_HI16_S",
|
"BFD_RELOC_MIPS16_LO16",
|
"BFD_RELOC_MIPS16_LO16",
|
"BFD_RELOC_MIPS_LITERAL",
|
"BFD_RELOC_MIPS_LITERAL",
|
|
"BFD_RELOC_MICROMIPS_LITERAL",
|
|
"BFD_RELOC_MICROMIPS_7_PCREL_S1",
|
|
"BFD_RELOC_MICROMIPS_10_PCREL_S1",
|
|
"BFD_RELOC_MICROMIPS_16_PCREL_S1",
|
|
"BFD_RELOC_MICROMIPS_GPREL16",
|
|
"BFD_RELOC_MICROMIPS_HI16",
|
|
"BFD_RELOC_MICROMIPS_HI16_S",
|
|
"BFD_RELOC_MICROMIPS_LO16",
|
"BFD_RELOC_MIPS_GOT16",
|
"BFD_RELOC_MIPS_GOT16",
|
|
"BFD_RELOC_MICROMIPS_GOT16",
|
"BFD_RELOC_MIPS_CALL16",
|
"BFD_RELOC_MIPS_CALL16",
|
|
"BFD_RELOC_MICROMIPS_CALL16",
|
"BFD_RELOC_MIPS_GOT_HI16",
|
"BFD_RELOC_MIPS_GOT_HI16",
|
|
"BFD_RELOC_MICROMIPS_GOT_HI16",
|
"BFD_RELOC_MIPS_GOT_LO16",
|
"BFD_RELOC_MIPS_GOT_LO16",
|
|
"BFD_RELOC_MICROMIPS_GOT_LO16",
|
"BFD_RELOC_MIPS_CALL_HI16",
|
"BFD_RELOC_MIPS_CALL_HI16",
|
|
"BFD_RELOC_MICROMIPS_CALL_HI16",
|
"BFD_RELOC_MIPS_CALL_LO16",
|
"BFD_RELOC_MIPS_CALL_LO16",
|
|
"BFD_RELOC_MICROMIPS_CALL_LO16",
|
"BFD_RELOC_MIPS_SUB",
|
"BFD_RELOC_MIPS_SUB",
|
|
"BFD_RELOC_MICROMIPS_SUB",
|
"BFD_RELOC_MIPS_GOT_PAGE",
|
"BFD_RELOC_MIPS_GOT_PAGE",
|
|
"BFD_RELOC_MICROMIPS_GOT_PAGE",
|
"BFD_RELOC_MIPS_GOT_OFST",
|
"BFD_RELOC_MIPS_GOT_OFST",
|
|
"BFD_RELOC_MICROMIPS_GOT_OFST",
|
"BFD_RELOC_MIPS_GOT_DISP",
|
"BFD_RELOC_MIPS_GOT_DISP",
|
|
"BFD_RELOC_MICROMIPS_GOT_DISP",
|
"BFD_RELOC_MIPS_SHIFT5",
|
"BFD_RELOC_MIPS_SHIFT5",
|
"BFD_RELOC_MIPS_SHIFT6",
|
"BFD_RELOC_MIPS_SHIFT6",
|
"BFD_RELOC_MIPS_INSERT_A",
|
"BFD_RELOC_MIPS_INSERT_A",
|
"BFD_RELOC_MIPS_INSERT_B",
|
"BFD_RELOC_MIPS_INSERT_B",
|
"BFD_RELOC_MIPS_DELETE",
|
"BFD_RELOC_MIPS_DELETE",
|
"BFD_RELOC_MIPS_HIGHEST",
|
"BFD_RELOC_MIPS_HIGHEST",
|
|
"BFD_RELOC_MICROMIPS_HIGHEST",
|
"BFD_RELOC_MIPS_HIGHER",
|
"BFD_RELOC_MIPS_HIGHER",
|
|
"BFD_RELOC_MICROMIPS_HIGHER",
|
"BFD_RELOC_MIPS_SCN_DISP",
|
"BFD_RELOC_MIPS_SCN_DISP",
|
|
"BFD_RELOC_MICROMIPS_SCN_DISP",
|
"BFD_RELOC_MIPS_REL16",
|
"BFD_RELOC_MIPS_REL16",
|
"BFD_RELOC_MIPS_RELGOT",
|
"BFD_RELOC_MIPS_RELGOT",
|
"BFD_RELOC_MIPS_JALR",
|
"BFD_RELOC_MIPS_JALR",
|
|
"BFD_RELOC_MICROMIPS_JALR",
|
"BFD_RELOC_MIPS_TLS_DTPMOD32",
|
"BFD_RELOC_MIPS_TLS_DTPMOD32",
|
"BFD_RELOC_MIPS_TLS_DTPREL32",
|
"BFD_RELOC_MIPS_TLS_DTPREL32",
|
"BFD_RELOC_MIPS_TLS_DTPMOD64",
|
"BFD_RELOC_MIPS_TLS_DTPMOD64",
|
"BFD_RELOC_MIPS_TLS_DTPREL64",
|
"BFD_RELOC_MIPS_TLS_DTPREL64",
|
"BFD_RELOC_MIPS_TLS_GD",
|
"BFD_RELOC_MIPS_TLS_GD",
|
|
"BFD_RELOC_MICROMIPS_TLS_GD",
|
"BFD_RELOC_MIPS_TLS_LDM",
|
"BFD_RELOC_MIPS_TLS_LDM",
|
|
"BFD_RELOC_MICROMIPS_TLS_LDM",
|
"BFD_RELOC_MIPS_TLS_DTPREL_HI16",
|
"BFD_RELOC_MIPS_TLS_DTPREL_HI16",
|
|
"BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16",
|
"BFD_RELOC_MIPS_TLS_DTPREL_LO16",
|
"BFD_RELOC_MIPS_TLS_DTPREL_LO16",
|
|
"BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16",
|
"BFD_RELOC_MIPS_TLS_GOTTPREL",
|
"BFD_RELOC_MIPS_TLS_GOTTPREL",
|
|
"BFD_RELOC_MICROMIPS_TLS_GOTTPREL",
|
"BFD_RELOC_MIPS_TLS_TPREL32",
|
"BFD_RELOC_MIPS_TLS_TPREL32",
|
"BFD_RELOC_MIPS_TLS_TPREL64",
|
"BFD_RELOC_MIPS_TLS_TPREL64",
|
"BFD_RELOC_MIPS_TLS_TPREL_HI16",
|
"BFD_RELOC_MIPS_TLS_TPREL_HI16",
|
|
"BFD_RELOC_MICROMIPS_TLS_TPREL_HI16",
|
"BFD_RELOC_MIPS_TLS_TPREL_LO16",
|
"BFD_RELOC_MIPS_TLS_TPREL_LO16",
|
|
"BFD_RELOC_MICROMIPS_TLS_TPREL_LO16",
|
|
|
"BFD_RELOC_MIPS_COPY",
|
"BFD_RELOC_MIPS_COPY",
|
"BFD_RELOC_MIPS_JUMP_SLOT",
|
"BFD_RELOC_MIPS_JUMP_SLOT",
|
|
|
"BFD_RELOC_MOXIE_10_PCREL",
|
"BFD_RELOC_MOXIE_10_PCREL",
|
Line 2456... |
Line 2496... |
bfd_boolean *);
|
bfd_boolean *);
|
|
|
bfd_boolean bfd_generic_gc_sections
|
bfd_boolean bfd_generic_gc_sections
|
(bfd *, struct bfd_link_info *);
|
(bfd *, struct bfd_link_info *);
|
|
|
|
void bfd_generic_lookup_section_flags
|
|
(struct bfd_link_info *, struct flag_info *);
|
|
|
bfd_boolean bfd_generic_merge_sections
|
bfd_boolean bfd_generic_merge_sections
|
(bfd *, struct bfd_link_info *);
|
(bfd *, struct bfd_link_info *);
|
|
|
bfd_byte *bfd_generic_get_relocated_section_contents
|
bfd_byte *bfd_generic_get_relocated_section_contents
|
(bfd *abfd,
|
(bfd *abfd,
|