#include <err.h>
#include <stdlib.h>
#include <sys/corectl.h>
#include <libproc.h>
#include <signal.h>
extern int which_ff(uint32_t, uint32_t);
int
main(int argc, char *argv[])
{
pid_t me = getpid();
core_content_t content;
sigset_t set = { 0 };
if (argc != 3) {
errx(EXIT_FAILURE, "<content> <dump path>");
}
if (proc_str2content(argv[1], &content) != 0) {
err(EXIT_FAILURE, "failed to parse content %s", argv[1]);
}
if (core_set_process_content(&content, me) != 0) {
err(EXIT_FAILURE, "failed to set core content to %s", argv[1]);
}
if (core_set_process_path(argv[2], strlen(argv[2]) + 1, me) != 0) {
err(EXIT_FAILURE, "failed to set core path to %s", argv[2]);
}
(void) which_ff(6, 10);
for (;;) {
(void) sigsuspend(&set);
}
return (0);
}