|
Namazu for hns による簡易全文検索 詳しくは 詳細指定/ヘルプを参照して下さい |
|||||||||||||||||||||||||||||||||||||||||||||
2007年07月14日(土) 旧暦 [n年日記] [更新:"2007/07/20 20:38:57"]#1 [NetBSD] dereferencing pointer to incomplete typeIn file included from src/sys/lkm/vfs/hfs/lkminit_vfs.c:53: src/sys/fs/hfs/hfs.h: In function 'GET8B': src/sys/fs/hfs/hfs.h:133: error: dereferencing pointer to incomplete type src/sys/fs/hfs/hfs.h: In function 'GET16B': src/sys/fs/hfs/hfs.h:142: error: dereferencing pointer to incomplete type src/sys/fs/hfs/hfs.h: In function 'GET32B': src/sys/fs/hfs/hfs.h:151: error: dereferencing pointer to incomplete typeこんな簡単そうな問題が解けないなんてさびしいので、じっくりと: src/sys/fs/hfs/hfs.h: (これは名前が同じでも中身が全然違う)。以下の中身は、つばい版
38 #include <miscfs/genfs/genfs_node.h>
96 static u_int GET8B(struct buf *, int);
97 static u_int GET16B(struct buf *, int);
98 static u_int GET32B(struct buf *, int);
128 static inline u_int
129 GET8B(bp, off)
130 struct buf *bp;
131 int off;
132 {
133 u_int8_t *p = (char *)bp->b_data + off;
134 return *p;
135 }
136
137 static inline u_int
138 GET16B(bp, off)
139 struct buf *bp;
140 int off;
141 {
142 u_int16_t *p = (void *)((char *)bp->b_data + off);
143 return *p;
144 }
145
146 static inline u_int
147 GET32B(bp, off)
148 struct buf *bp;
149 int off;
150 {
151 u_int32_t *p = (void *)((char *)bp->b_data + off);
152 return *p;
153 }
sys/sys/buf.h:
119 struct buf {
120 union {
121 TAILQ_ENTRY(buf) u_actq; /* Device driver queue when active. */
122 #if defined(_KERNEL) /* u_work is smaller than u_actq. XXX */
123 struct work u_work;
124 #endif /* defined(_KERNEL) */
125 } b_u;
126 #define b_actq b_u.u_actq
127 #define b_work b_u.u_work
128 struct simplelock b_interlock; /* Lock for b_flags changes */
129 volatile int b_flags; /* B_* flags. */
130 int b_error; /* Errno value. */
131 int b_prio; /* Hint for buffer queue discipline. */
132 int b_bufsize; /* Allocated buffer size. */
133 int b_bcount; /* Valid bytes in buffer. */
134 int b_resid; /* Remaining I/O. */
135 dev_t b_dev; /* Device associated with buffer. */
136 struct {
137 void * b_addr; /* Memory, superblocks, indirect etc. */
138 } b_un;
..
188 #define b_data b_un.b_addr /* b_un.b_addr is not changeable. */
dereferencing pointer to incomplete type の
日本語訳は
「ポインタ元へ参照の時に型が合っていない」
+--------+
ポインタ →| 実体 |
+--------+
ポインタ参照 (pointer reference) とは、実体をポインタの値(アドレス)を使って参照したり
取扱ったりすることポインタ元へ参照とは、実体の値を得ること (だと思う) b_addr は void * しかし最近は caddr_t になっている。逆か、以前は caddr_t で最近は void *。 上の問題は、実は 単に #include <sys/buf.h> が抜けていただけ のようだ。 こういう、何か不可解な場合、「単に定義されていないだけ」というのが良くある。 @ ./build.sh sets:
という訳で、最後は ./build.sh sets だったけれど、久し振りに release が出来た。
===> Successful make sets
===> build.sh ended: Sun Jul 15 02:08:24 JST 2007
===> Summary of results:
build.sh command: ./build.sh -u
-T /export/20070526ts/checkout/src/tooldir.NetBSD-4.99.9-powerpc sets
build.sh started: Sun Jul 15 02:06:16 JST 2007
NetBSD version: 4.99.20
MACHINE: macppc
MACHINE_ARCH: powerpc
Build platform: NetBSD 4.99.9 macppc
HOST_SH: /bin/sh
TOOLDIR path: /export/20070526ts/checkout/src/tooldir.NetBSD-4.99.9-powerpc
DESTDIR path: /export/20070526ts/checkout/src/obj/destdir.macppc
RELEASEDIR path: /export/20070526ts/checkout/src/obj/releasedir
makewrapper:
/export/20070526ts/checkout/src/tooldir.NetBSD-4.99.9-powerpc/bin/nbmake-macppc
Updated
/export/20070526ts/checkout/src/tooldir.NetBSD-4.99.9-powerpc/bin/nbmake-macppc
Building sets from pre-populated /export/20070526ts/checkout/src/obj/destdir.macppc
Successful make sets
build.sh ended: Sun Jul 15 02:08:24 JST 2007
===> .
(と思ったら kernel が出来ていない、どうも変だと思った)
-u を不用意に使うと、こうなるらしい。
... ではなくて、flist で失敗した。flist を通すようにした。通ったので全て 終ったと思って sets を実行、というのが違っていて、「flist check が終っても」 まだ終了には程遠い、ということだったと思う。 ( つっこみ )
|
最近の日記 2026年05月29日 ・pkgin search segfaults 2026年02月28日 ・my first script-fu 2026年01月29日 ・Die Fledermaus at New National theatre 2026/01/29 2025年12月25日 ・pbulk 11.99.3 (emacs30) 2025年11月22日 ・crash dump | ||