From: Denys V. <dvl...@re...> - 2012-02-07 13:06:37
|
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: #ifdef USE_PROCFS int pfd; /* proc file descriptor */ #endif #ifdef SVR4 # ifdef HAVE_MP_PROCFS int pfd_stat; int pfd_as; pstatus_t status; # else prstatus_t status; /* procfs status structure */ # endif #endif #ifdef FREEBSD struct procfs_status status; int pfd_reg; int pfd_status; #endif ^^^^^^^^ 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; } #endif ^^^^^^^^^ 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? -- vda |