#ifndef LDEMUL_H
#define LDEMUL_H
struct option;
extern void ldemul_hll
(char *);
extern void ldemul_syslib
(char *);
extern void ldemul_after_parse
(void);
extern void ldemul_before_parse
(void);
extern void ldemul_after_open
(void);
extern void ldemul_after_allocation
(void);
extern void ldemul_before_allocation
(void);
extern void ldemul_set_output_arch
(void);
extern char *ldemul_choose_target
(int, char**);
extern void ldemul_choose_mode
(char *);
extern void ldemul_list_emulations
(FILE *);
extern void ldemul_list_emulation_options
(FILE *);
extern char *ldemul_get_script
(int *isfile);
extern void ldemul_finish
(void);
extern void ldemul_set_symbols
(void);
extern void ldemul_create_output_section_statements
(void);
extern bfd_boolean ldemul_place_orphan
(struct lang_input_statement_struct *, asection *);
extern bfd_boolean ldemul_parse_args
(int, char **);
extern void ldemul_add_options
(int, char **, int, struct option **, int, struct option **);
extern bfd_boolean ldemul_handle_option
(int);
extern bfd_boolean ldemul_unrecognized_file
(struct lang_input_statement_struct *);
extern bfd_boolean ldemul_recognized_file
(struct lang_input_statement_struct *);
extern bfd_boolean ldemul_open_dynamic_archive
(const char *, struct search_dirs *, struct lang_input_statement_struct *);
extern char *ldemul_default_target
(int, char**);
extern void after_parse_default
(void);
extern void after_open_default
(void);
extern void after_allocation_default
(void);
extern void before_allocation_default
(void);
extern void set_output_arch_default
(void);
extern void syslib_default
(char*);
extern void hll_default
(char*);
extern int ldemul_find_potential_libraries
(char *, struct lang_input_statement_struct *);
extern struct bfd_elf_version_expr *ldemul_new_vers_pattern
(struct bfd_elf_version_expr *);
typedef struct ld_emulation_xfer_struct {
void (*before_parse) (void);
void (*syslib) (char *);
void (*hll) (char *);
void (*after_parse) (void);
void (*after_open) (void);
void (*after_allocation) (void);
void (*set_output_arch) (void);
char * (*choose_target) (int, char**);
void (*before_allocation) (void);
char * (*get_script) (int *isfile);
char *emulation_name;
char *target_name;
void (*finish) (void);
void (*create_output_section_statements) (void);
bfd_boolean (*open_dynamic_archive)
(const char *arch, struct search_dirs *,
struct lang_input_statement_struct *entry);
bfd_boolean (*place_orphan)
(struct lang_input_statement_struct *, asection *);
void (*set_symbols) (void);
bfd_boolean (*parse_args) (int, char **);
void (*add_options)
(int, char **, int, struct option **, int, struct option **);
bfd_boolean (*handle_option) (int);
bfd_boolean (*unrecognized_file)
(struct lang_input_statement_struct *);
void (* list_options) (FILE *);
bfd_boolean (*recognized_file)
(struct lang_input_statement_struct *);
int (* find_potential_libraries)
(char *, struct lang_input_statement_struct *);
struct bfd_elf_version_expr * (*new_vers_pattern)
(struct bfd_elf_version_expr *);
} ld_emulation_xfer_type;
typedef enum {
intel_ic960_ld_mode_enum,
default_mode_enum,
intel_gld960_ld_mode_enum
} lang_emulation_mode_enum_type;
extern ld_emulation_xfer_type *ld_emulations[];
#endif