On Thu, 4 Jun 2015, patrick keshishian wrote:
> With the cp(1) change to use chflagsat(), systrace needs to be taught
> about chflagsat syscall. databases/db/v4 port fails with
> USE_SYSTRACE=Yes due to a "$(CP) -pr" use during install_docs.
>
> Could someone look over these changes and correct any mistakes. I am not
> 100% sure it is correct; specifically, I'm not sure about the
> print_atflags.
Hmm, the other *at calls don't seem to do special handling for the
atflags. As a first pass, perhaps the chflagsat support should do the
same, with support for atflag matching as a second pass?
If that's sane, then I think the diff, modelling on the existing fchmodat
support, just becomes this, no?
Philip Guenther
Index: register.c
===================================================================
RCS file: /data/src/openbsd/src/bin/systrace/register.c,v
retrieving revision 1.25
diff -u -p -r1.25 register.c
--- register.c 16 Jan 2015 00:19:12 -0000 1.25
+++ register.c 8 Jun 2015 08:44:16 -0000
@@ -258,6 +258,11 @@ systrace_initcb(void)
alias = systrace_new_alias("native", "fstatat", "native", "fsread");
systrace_alias_add_trans(alias, tl);
+ X(intercept_register_sccb("native", "chflagsat", trans_cb, NULL));
+ intercept_register_translation("native", "chflagsat", 1,
+ &ic_translate_filenameatflag);
+ intercept_register_translation("native", "chflagsat", 2, &ic_fileflags);
+
X(intercept_register_sccb("native", "linkat", trans_cb, NULL));
intercept_register_translation("native", "linkat", 1,
&ic_translate_unlinknameatflag);