kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

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 }