長谷川 です。

> たとえば Linux には msghdr と cmsghdr の両方がありますが、msg_control
> があるのは msghdr のほうです。cf. recvmsg(2)
> したがって、この変更は不適切だと思います。

おっしゃる通りででした、良く確認もせずにいい加減なものを
送ってしまい、申し訳ありませんでした。

> なんでこの変更が必要なんでしょうか?

SX では cmsghdr がありませんでしたので、ソース
ext/socket/socket.c の

#if defined(HAVE_ST_MSG_CONTROL)
    struct {
        struct cmsghdr hdr;
        int fd;
    } cmsg;
#endif

この部分から早合点をしてしまいました。
recvmsg(2) のマニュアルを良く見ますと

  SUPER-UX  does  not  support  msg_control.

とありますので、そもそも HAVE_ST_MSG_CONTROL が
define されぬようにする必要がありました。

また ext/socket/socket.c では、msg_control が使えない
場合は msghdr のメンバ msg_accrights を使って相当の
対応をするようになっていますが、こちらも持っていません。

なので、正しくは

*** 197,199 ****
  if have_func("sendmsg") | have_func("recvmsg")
!  have_struct_member('struct msghdr', 'msg_control', ['sys/types.h', 'sys/socket.h'])
    have_struct_member('struct msghdr', 'msg_accrights', ['sys/types.h', 'sys/socket.h'])
--- 197,199 ----
  if have_func("sendmsg") | have_func("recvmsg")
!  have_struct_member('struct msghdr', 'msg_control', ['sys/types.h', 'sys/socket.h']) if not /sx6-superux/ =~ RUBY_PLATFORM
    have_struct_member('struct msghdr', 'msg_accrights', ['sys/types.h', 'sys/socket.h'])

となりましょうか (作業している環境では、RUBY_PLATFORM は
"sx6-superux14.1" です)。

# あるいは、そもそも「ext/Setup に socket を入れない」?
## SX-6 にはダイナミックリンク機構がありません。

>> 現在では特に困難はありませんでした。

などと書いてしまったのは嘘で、(私のいい加減な対応で)
コンパイルできたように見えていましたが、

  (少なくとも現状では) ext/socket に困難がある

です。

> また、これは send_io/recv_io に使うものですが、動くでしょうか?

(当然?)動作せず、

ruby 1.8.1 (2003-12-25) [sx6-superux14.1]
-e:4:in `recv_io': -e:8:in `send_io'The recv_io() function is unimplemented on this machine:  (The send_io() function is unimplemented on this machineNotImplementedError ()
NotImplementedError        from -e:4
)
        from -e:3:in `fork'
        from -e:8
        from -e:6

ということになりました。

ご指摘ありがとうございました > 田中 さま

いいかげんな作業でご迷惑をおかけしました、
申し訳ありませんでした。> まつもと さま、みなさま

# 「socket 使えない」、痛過ぎ…。