NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: bin/40574: netbsd-4 builds fail on netbsd-5 hosts (nbmtree issues)
On Feb 8, 3:50am, oster%cs.usask.ca@localhost (Greg Oster) wrote:
-- Subject: Re: bin/40574: netbsd-4 builds fail on netbsd-5 hosts (nbmtree is
| It doesn't.
|
| But I can replicate this on amd64 XEN_DOMU from today's 5.0_RC1 when
| trying to build for netbsd-4 i386.
|
| In a nutshell, the prototype for user_from_uid() (and others)
| don't get pulled in because they are protected by
| #if defined(_NETBSD_SOURCE)
| in /usr/include/pwd.h and that #define isn't set when building mtree
| as a tool. If one looks closely when doing the build, one sees:
|
| /u1/builds/c/src/tools/mtree/../../usr.sbin/mtree/spec.c: In function
'dump_nodes':
| /u1/builds/c/src/tools/mtree/../../usr.sbin/mtree/spec.c:334: warning:
assignment makes pointer from integer without a cast
| /u1/builds/c/src/tools/mtree/../../usr.sbin/mtree/spec.c:341: warning:
assignment makes pointer from integer without a cast
|
| (among other similar errors in mtree). If I hack the Makefile a bit
| I can get a version that crashes and has symbols. What I end up with
| is:
|
| Core was generated by `mtree'.
| Program terminated with signal 11, Segmentation fault.
| #0 0x00007f7ffd9caf7a in strlen () from /usr/lib/libc.so.12
| (gdb) where
| #0 0x00007f7ffd9caf7a in strlen () from /usr/lib/libc.so.12
| #1 0x00007f7ffd9c3c2d in __vfprintf_unlocked () from /usr/lib/libc.so.12
| #2 0x00007f7ffd9c4d44 in vfprintf () from /usr/lib/libc.so.12
| #3 0x00007f7ffd9c003e in printf () from /usr/lib/libc.so.12
| #4 0x0000000000406a88 in dump_nodes (dir=0x40f13f "", root=0x7f7ffd81d180,
| pathlast=0) at
/u1/builds/c/src/tools/mtree/../../usr.sbin/mtree/spec.c:335
| #5 0x0000000000405f42 in main (argc=0, argv=0x7f7fffffdc38)
| at /u1/builds/c/src/tools/mtree/../../usr.sbin/mtree/mtree.c:211
| (gdb) up
| #1 0x00007f7ffd9c3c2d in __vfprintf_unlocked () from /usr/lib/libc.so.12
| (gdb) up
| #2 0x00007f7ffd9c4d44 in vfprintf () from /usr/lib/libc.so.12
| (gdb) up
| #3 0x00007f7ffd9c003e in printf () from /usr/lib/libc.so.12
| (gdb) up
| #4 0x0000000000406a88 in dump_nodes (dir=0x40f13f "", root=0x7f7ffd81d180,
| pathlast=0) at
/u1/builds/c/src/tools/mtree/../../usr.sbin/mtree/spec.c:335
| 335 printf("uname=%s ", name);
| (gdb) list
| 330 if (MATCHFLAG(F_TYPE))
| 331 printf("type=%s ", nodetype(cur->type));
| 332 if (MATCHFLAG(F_UID | F_UNAME)) {
| 333 if (keys & F_UNAME &&
| 334 (name = user_from_uid(cur->st_uid, 1))
!= NULL)
| 335 printf("uname=%s ", name);
| 336 else
| 337 printf("uid=%u ", cur->st_uid);
| 338 }
| 339 if (MATCHFLAG(F_GID | F_GNAME)) {
| (gdb) print name
| $1 = 0xfffffffffd4b2704 <Address DEFANGED_0xfffffffffd4b2704 DEFANGED_out
DEFANGED_of DEFANGED_bounds>
|
| which, of course, is going to go 'boom' when passed to printf.
|
| The fix, of course, is to pull in the correct prototype for
| user_from_uid() and assorted other functions (there are other build
| errors if one looks close -- I can provide a list if needed), but I'm
| not sure what the right mechanism is for doing that in the land of build
| tools...
|
This was fixed in a long time ago, but the changes were not pulled up to 4.x
christos
Home |
Main Index |
Thread Index |
Old Index