return err;
 }
 
-int bpf_program__pin_instance(struct bpf_program *prog, const char *path,
-                             int instance)
+static int bpf_program_pin_instance(struct bpf_program *prog, const char *path, int instance)
 {
        char *cp, errmsg[STRERR_BUFSIZE];
        int err;
        return 0;
 }
 
-int bpf_program__unpin_instance(struct bpf_program *prog, const char *path,
-                               int instance)
+static int bpf_program_unpin_instance(struct bpf_program *prog, const char *path, int instance)
 {
        int err;
 
        return 0;
 }
 
+__attribute__((alias("bpf_program_pin_instance")))
+int bpf_object__pin_instance(struct bpf_program *prog, const char *path, int instance);
+
+__attribute__((alias("bpf_program_unpin_instance")))
+int bpf_program__unpin_instance(struct bpf_program *prog, const char *path, int instance);
+
 int bpf_program__pin(struct bpf_program *prog, const char *path)
 {
        int i, err;
 
        if (prog->instances.nr == 1) {
                /* don't create subdirs when pinning single instance */
-               return bpf_program__pin_instance(prog, path, 0);
+               return bpf_program_pin_instance(prog, path, 0);
        }
 
        for (i = 0; i < prog->instances.nr; i++) {
                        goto err_unpin;
                }
 
-               err = bpf_program__pin_instance(prog, buf, i);
+               err = bpf_program_pin_instance(prog, buf, i);
                if (err)
                        goto err_unpin;
        }
                else if (len >= PATH_MAX)
                        continue;
 
-               bpf_program__unpin_instance(prog, buf, i);
+               bpf_program_unpin_instance(prog, buf, i);
        }
 
        rmdir(path);
 
        if (prog->instances.nr == 1) {
                /* don't create subdirs when pinning single instance */
-               return bpf_program__unpin_instance(prog, path, 0);
+               return bpf_program_unpin_instance(prog, path, 0);
        }
 
        for (i = 0; i < prog->instances.nr; i++) {
                else if (len >= PATH_MAX)
                        return libbpf_err(-ENAMETOOLONG);
 
-               err = bpf_program__unpin_instance(prog, buf, i);
+               err = bpf_program_unpin_instance(prog, buf, i);
                if (err)
                        return err;
        }
 
 LIBBPF_API int bpf_program__load(struct bpf_program *prog, char *license,
                                 __u32 kern_version);
 LIBBPF_API int bpf_program__fd(const struct bpf_program *prog);
+LIBBPF_DEPRECATED_SINCE(0, 7, "multi-instance bpf_program support is deprecated")
 LIBBPF_API int bpf_program__pin_instance(struct bpf_program *prog,
                                         const char *path,
                                         int instance);
+LIBBPF_DEPRECATED_SINCE(0, 7, "multi-instance bpf_program support is deprecated")
 LIBBPF_API int bpf_program__unpin_instance(struct bpf_program *prog,
                                           const char *path,
                                           int instance);
  * one instance. In this case bpf_program__fd(prog) is equal to
  * bpf_program__nth_fd(prog, 0).
  */
-
+LIBBPF_DEPRECATED_SINCE(0, 7, "use bpf_program__insns() for getting bpf_program instructions")
 struct bpf_prog_prep_result {
        /*
         * If not NULL, load new instruction array.
                                  struct bpf_insn *insns, int insns_cnt,
                                  struct bpf_prog_prep_result *res);
 
+LIBBPF_DEPRECATED_SINCE(0, 7, "use bpf_program__insns() for getting bpf_program instructions")
 LIBBPF_API int bpf_program__set_prep(struct bpf_program *prog, int nr_instance,
                                     bpf_program_prep_t prep);
 
+LIBBPF_DEPRECATED_SINCE(0, 7, "multi-instance bpf_program support is deprecated")
 LIBBPF_API int bpf_program__nth_fd(const struct bpf_program *prog, int n);
 
 /*