#if defined(__MWERKS__) && !defined(__private_extern__)
#define __private_extern__ __declspec(private_extern)
#endif
#ifndef RLD
__private_extern__ char **search_dirs;
__private_extern__ unsigned long nsearch_dirs;
__private_extern__ char *standard_dirs[];
__private_extern__ char **framework_dirs;
__private_extern__ unsigned long nframework_dirs;
__private_extern__ char *standard_framework_dirs[];
__private_extern__ struct merged_segment *base_obj_segments;
__private_extern__ char *bsearch_strings;
#ifndef RLD
__private_extern__ struct nlist *bsearch_symbols;
#endif
enum library_type {
DYLIB,
SORTED_ARCHIVE,
UNSORTED_ARCHIVE,
BUNDLE_LOADER
};
struct dynamic_library {
enum library_type type;
char *dylib_name;
struct dylib_command *dl;
char *umbrella_name;
char *library_name;
enum bool indirect_twolevel_ref_flagged;
enum bool some_non_weak_refs;
enum bool some_symbols_referenced;
struct object_file *definition_obj;
char *dylib_file;
struct dylib_table_of_contents *tocs;
struct nlist *symbols;
char *strings;
struct dylib_module *mods;
struct prebound_dylib_command *pbdylib;
char *linked_modules;
unsigned long ndependent_images;
struct dynamic_library **dependent_images;
enum bool sub_images_setup;
unsigned long nsub_images;
struct dynamic_library **sub_images;
enum bool twolevel_searched;
char *file_name;
char *file_addr;
unsigned long file_size;
unsigned long nranlibs;
struct ranlib *ranlibs;
char *ranlib_strings;
enum bool rc_trace_archive_printed;
struct dynamic_library *next;
};
__private_extern__ struct dynamic_library *dynamic_libs;
#endif
__private_extern__ void pass1(
char *filename,
enum bool lname,
enum bool base_name,
enum bool framework_name,
enum bool bundle_loader);
__private_extern__ void merge(
enum bool dylib_only,
enum bool bundle_loader);
__private_extern__ void check_fat(
char *file_name,
unsigned long file_size,
struct fat_header *fat_header,
struct fat_arch *fat_archs,
char *ar_name,
unsigned long ar_name_size);
#ifndef RLD
__private_extern__ void search_dynamic_libs(
void);
__private_extern__ void prebinding_check_for_dylib_override_symbols(
void);
__private_extern__ void twolevel_namespace_check_for_unused_dylib_symbols(
void);
__private_extern__ struct dynamic_library *add_dynamic_lib(
enum library_type type,
struct dylib_command *dl,
struct object_file *definition_obj);
__private_extern__ int dylib_bsearch(
const char *symbol_name,
const struct dylib_table_of_contents *toc);
#endif
#ifdef RLD
__private_extern__ void merge_base_program(
char *basefile_name,
struct mach_header *basefile_addr,
struct segment_command *seg_linkedit,
struct nlist *symtab,
unsigned long nsyms,
char *strtab,
unsigned long strsize);
#endif