object_rewrite.c (1067B)
1 #include <kit/object.h> 2 3 #include "core/diag.h" 4 #include "obj/format.h" 5 6 KitStatus kit_obj_rewrite_linked(const KitContext* ctx, KitSlice name, 7 const KitSlice* input, 8 const KitLinkedRewriteOptions* opts, 9 KitWriter* out, 10 KitLinkedRewriteReport* report_out) { 11 KitBinFmt bin; 12 const ObjFormatImpl* fmt; 13 if (!ctx || !input || !opts || !out || 14 (opts->strip_level != KIT_LINKED_STRIP_DEBUG && 15 opts->strip_level != KIT_LINKED_STRIP_ALL)) 16 return KIT_INVALID; 17 bin = kit_detect_fmt(input->data, input->len); 18 fmt = (bin == KIT_BIN_PE) ? obj_format_lookup(KIT_OBJ_COFF) 19 : obj_format_lookup_bin(bin); 20 if (!fmt || !fmt->rewrite_linked) { 21 kit_ctx_diagf(ctx, "%.*s: linked-image rewrite is unsupported for this " 22 "format", 23 KIT_SLICE_ARG(name)); 24 return KIT_UNSUPPORTED; 25 } 26 return fmt->rewrite_linked(ctx, name, input, opts, out, report_out); 27 }