How about removing non-Linux code?

Denys Vlasenko dvlasenk at
Tue Feb 7 13:06:24 UTC 2012

Hi Dmitry,

Non-linux code (FreeBSD/SunOS/SVR4) appears to be dead.

I looked through changelog and all changes to this code
since at least 2005 only keep it in line with evolution
of Linux code (such as changing the name of a struct field).

I don't see a single build failure fix. Or a genuine bug fix.
In fact I would be surprised if this code even compiles -
it's likely no one tests that.

Are FreeBSD/SunOS/SVR4 in fact build their strace from
our code? I would be mightily surprised if they do...

Since there is a lot of this code, it makes actual, live code
harder to understand because of additional ifdefs:

         int pfd;                /* proc file descriptor */
#ifdef SVR4
         int pfd_stat;
         int pfd_as;
         pstatus_t status;
# else
         prstatus_t status;      /* procfs status structure */
# endif
#ifdef FREEBSD
         struct procfs_status status;
         int pfd_reg;
         int pfd_status;

^^^^^^^^ half of the screen of cruft.

#ifdef SYS_vfork
         if (known_scno(tcp) == SYS_vfork) {
                 /* Attempt to make vfork into fork, which we can follow. */
                 if (change_syscall(tcp, SYS_fork) < 0)
                         dont_follow = 1;

^^^^^^^^^ Do we do this? No. Why? Because it sits in two-screenful-large
"#ifndef LINUX" - which isn't immediately obvious when one reads the code.

What do you think about removing all non-Linux code after the next release?


More information about the Strace-devel mailing list