#include "kxld_array.h"
struct kxld_sect;
+struct kxld_symtab;
struct segment_command;
struct segment_command_64;
typedef struct kxld_seg KXLDSeg;
kern_return_t kxld_seg_finalize_object_segment(KXLDArray *segarray,
KXLDArray *section_order, u_long hdrsize)
__attribute__((nonnull, visibility("hidden")));
+
+kern_return_t kxld_seg_init_linkedit(KXLDArray *segs)
+ __attribute__((nonnull, visibility("hidden")));
#endif /* KXLD_USER_OR_OBJECT */
void kxld_seg_clear(KXLDSeg *seg)
u_long kxld_seg_get_macho_header_size(const KXLDSeg *seg, boolean_t is_32_bit)
__attribute__((pure, nonnull, visibility("hidden")));
+#if 0
+/* This is no longer used, but may be useful some day... */
u_long kxld_seg_get_macho_data_size(const KXLDSeg *seg)
__attribute__((pure, nonnull, visibility("hidden")));
+#endif
kern_return_t
kxld_seg_export_macho_to_file_buffer(const KXLDSeg *seg, u_char *buf,
void kxld_seg_set_vm_protections(KXLDSeg *seg, boolean_t strict_protections)
__attribute__((nonnull, visibility("hidden")));
-void kxld_seg_relocate(KXLDSeg *Seg, kxld_addr_t link_addr)
+void kxld_seg_relocate(KXLDSeg *seg, kxld_addr_t link_addr)
+ __attribute__((nonnull, visibility("hidden")));
+
+void kxld_seg_populate_linkedit(KXLDSeg *seg, const struct kxld_symtab *symtab,
+ boolean_t is_32_bit
+#if KXLD_PIC_KEXTS
+ , const struct kxld_array *locrelocs
+ , const struct kxld_array *extrelocs
+ , boolean_t target_supports_slideable_kexts
+#endif /* KXLD_PIC_KEXTS */
+ )
__attribute__((nonnull, visibility("hidden")));
#endif /* _KXLD_SEG_H_ */