Magellan Linux

Contents of /trunk/mkinitrd/patches/mkinitrd-6.3.5-klibc-1.5.22.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1730 - (show annotations) (download)
Wed Apr 4 08:05:16 2012 UTC (12 years, 1 month ago) by niro
File size: 48224 byte(s)
-update to klibc-1.5.22
1 diff -Naur ../tags/mkinitrd-6_3_5/klibc/klcc/klcc.in mkinitrd-magellan/klibc/klcc/klcc.in
2 --- ../tags/mkinitrd-6_3_5/klibc/klcc/klcc.in 2011-11-24 01:38:55.000000000 +0100
3 +++ mkinitrd-magellan/klibc/klcc/klcc.in 2011-11-24 01:44:48.000000000 +0100
4 @@ -159,6 +159,9 @@
5 # gcc options, that force preprocessing mode
6 push(@ccopt, $a);
7 $operation = 'E';
8 + } elsif ( $a eq '--param' ) {
9 + push(@ccopt, $a);
10 + push(@ccopt, shift(@ARGV));
11 } elsif ( $a =~ /^-[gp]/ || $a eq '-p' ) {
12 # Debugging options to gcc
13 push(@ccopt, $a);
14 diff -Naur ../tags/mkinitrd-6_3_5/klibc/klibc.spec mkinitrd-magellan/klibc/klibc.spec
15 --- ../tags/mkinitrd-6_3_5/klibc/klibc.spec 2011-11-24 01:38:54.000000000 +0100
16 +++ mkinitrd-magellan/klibc/klibc.spec 2011-11-24 01:44:48.000000000 +0100
17 @@ -1,6 +1,6 @@
18 Summary: A minimal libc subset for use with initramfs.
19 Name: klibc
20 -Version: 1.5.19
21 +Version: 1.5.22
22 Release: 1
23 License: BSD/GPL
24 Group: Development/Libraries
25 diff -Naur ../tags/mkinitrd-6_3_5/klibc/Makefile mkinitrd-magellan/klibc/Makefile
26 --- ../tags/mkinitrd-6_3_5/klibc/Makefile 2011-11-24 01:38:55.000000000 +0100
27 +++ mkinitrd-magellan/klibc/Makefile 2011-11-24 01:44:48.000000000 +0100
28 @@ -91,7 +91,7 @@
29 .PHONY: all klcc klibc
30 all: klcc klibc
31
32 -$(objtree)/.config: $(srctree)/defconfig $(KLIBCKERNELOBJ)
33 +$(objtree)/.config: $(srctree)/defconfig
34 @echo "defconfig has changed, please remove or edit .config"
35 @false
36
37 diff -Naur ../tags/mkinitrd-6_3_5/klibc/scripts/basic/fixdep.c mkinitrd-magellan/klibc/scripts/basic/fixdep.c
38 --- ../tags/mkinitrd-6_3_5/klibc/scripts/basic/fixdep.c 2011-11-24 01:38:54.000000000 +0100
39 +++ mkinitrd-magellan/klibc/scripts/basic/fixdep.c 2011-11-24 01:44:48.000000000 +0100
40 @@ -364,10 +364,11 @@
41 void traps(void)
42 {
43 static char test[] __attribute__((aligned(sizeof(int)))) = "CONF";
44 + int *p = (int *)test;
45
46 - if (*(int *)test != INT_CONF) {
47 + if (*p != INT_CONF) {
48 fprintf(stderr, "fixdep: sizeof(int) != 4 or wrong endianess? %#x\n",
49 - *(int *)test);
50 + *p);
51 exit(2);
52 }
53 }
54 diff -Naur ../tags/mkinitrd-6_3_5/klibc/scripts/Kbuild.klibc mkinitrd-magellan/klibc/scripts/Kbuild.klibc
55 --- ../tags/mkinitrd-6_3_5/klibc/scripts/Kbuild.klibc 2011-11-24 01:38:55.000000000 +0100
56 +++ mkinitrd-magellan/klibc/scripts/Kbuild.klibc 2011-11-24 01:44:48.000000000 +0100
57 @@ -93,11 +93,16 @@
58 KLIBCLD := $(LD)
59 KLIBCCC := $(CC)
60 KLIBCAR := $(AR)
61 -KLIBCRANLIB := $(RANLIB)
62 +
63 +# klibc-ar is a macro that invokes KLIBCAR and takes 2 arguments of ar commands.
64 +# The second will be used for reproducible builds, the first otherwise.
65 +klibc-ar = $(KLIBCAR) $(if $(KBUILD_REPRODUCIBLE),$(2),$(1))
66 +
67 +KLIBCRANLIB := $(call klibc-ar,s,Ds)
68 KLIBCSTRIP := $(STRIP)
69 KLIBCNM := $(NM)
70 -KLIBCOBJCOPY := $(OBJCOPY)
71 -KLIBCOBJDUMP := $(OBJDUMP)
72 +KLIBCOBJCOPY := $(OBJCOPY)
73 +KLIBCOBJDUMP := $(OBJDUMP)
74
75 # klibc include paths
76 KLIBCCPPFLAGS := -nostdinc -iwithprefix include \
77 @@ -265,8 +270,8 @@
78 quiet_cmd_link_o_target = LD $@
79 # If the list of objects to link is empty, just create an empty lib.a
80 cmd_link_o_target = $(if $(strip $(lib-y)),\
81 - rm -f $@; $(KLIBCAR) cru $@ $(filter $(lib-y), $^),\
82 - rm -f $@; $(KLIBCAR) crs $@)
83 + rm -f $@; $(call klibc-ar,cru,Dcr) $@ $(filter $(lib-y), $^),\
84 + rm -f $@; $(call klibc-ar,crs,Dcrs) $@)
85
86 $(lib-target): $(lib-y) FORCE
87 $(call if_changed,link_o_target)
88 diff -Naur ../tags/mkinitrd-6_3_5/klibc/scripts/Makefile.host mkinitrd-magellan/klibc/scripts/Makefile.host
89 --- ../tags/mkinitrd-6_3_5/klibc/scripts/Makefile.host 2011-11-24 01:38:54.000000000 +0100
90 +++ mkinitrd-magellan/klibc/scripts/Makefile.host 2011-11-24 01:44:48.000000000 +0100
91 @@ -5,7 +5,7 @@
92 #
93 # Both C and C++ is supported, but preferred language is C for such utilities.
94 #
95 -# Samle syntax (see Documentation/kbuild/makefile.txt for reference)
96 +# Sample syntax (see Documentation/kbuild/makefile.txt for reference)
97 # hostprogs-y := bin2hex
98 # Will compile bin2hex.c and create an executable named bin2hex
99 #
100 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/include/arch/arm/klibc/archconfig.h mkinitrd-magellan/klibc/usr/include/arch/arm/klibc/archconfig.h
101 --- ../tags/mkinitrd-6_3_5/klibc/usr/include/arch/arm/klibc/archconfig.h 2011-11-24 01:38:47.000000000 +0100
102 +++ mkinitrd-magellan/klibc/usr/include/arch/arm/klibc/archconfig.h 2011-11-24 01:44:45.000000000 +0100
103 @@ -9,6 +9,10 @@
104 #ifndef _KLIBC_ARCHCONFIG_H
105 #define _KLIBC_ARCHCONFIG_H
106
107 -/* All defaults */
108 +/* newer arm arch support bx instruction */
109 +#if (!defined(__ARM_ARCH_2__) && !defined(__ARM_ARCH_3__) \
110 + && !defined(__ARM_ARCH_3M__) && !defined(__ARM_ARCH_4__))
111 +# define _KLIBC_ARM_USE_BX 1
112 +#endif
113
114 #endif /* _KLIBC_ARCHCONFIG_H */
115 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/include/arch/arm/klibc/asmmacros.h mkinitrd-magellan/klibc/usr/include/arch/arm/klibc/asmmacros.h
116 --- ../tags/mkinitrd-6_3_5/klibc/usr/include/arch/arm/klibc/asmmacros.h 2011-11-24 01:38:47.000000000 +0100
117 +++ mkinitrd-magellan/klibc/usr/include/arch/arm/klibc/asmmacros.h 2011-11-24 01:44:45.000000000 +0100
118 @@ -7,24 +7,10 @@
119 #ifndef _KLIBC_ASMMACROS_H
120 #define _KLIBC_ASMMACROS_H
121
122 -/* An immediate in ARM can be any 8-bit value rotated by an even number of bits */
123 -
124 -#define ARM_VALID_IMM(x) \
125 - ((((x) & ~0x000000ff) == 0) || \
126 - (((x) & ~0x000003fc) == 0) || \
127 - (((x) & ~0x00000ff0) == 0) || \
128 - (((x) & ~0x00003fc0) == 0) || \
129 - (((x) & ~0x0000ff00) == 0) || \
130 - (((x) & ~0x0003fc00) == 0) || \
131 - (((x) & ~0x000ff000) == 0) || \
132 - (((x) & ~0x003fc000) == 0) || \
133 - (((x) & ~0x00ff0000) == 0) || \
134 - (((x) & ~0x03fc0000) == 0) || \
135 - (((x) & ~0x0ff00000) == 0) || \
136 - (((x) & ~0x3fc00000) == 0) || \
137 - (((x) & ~0xff000000) == 0) || \
138 - (((x) & ~0xfc000003) == 0) || \
139 - (((x) & ~0xf000000f) == 0) || \
140 - (((x) & ~0xc000003f) == 0))
141 +#if _KLIBC_ARM_USE_BX
142 +# define BX(x) bx x
143 +#else
144 +# define BX(x) mov pc, x
145 +#endif
146
147 #endif /* _KLIBC_ASMMACROS_H */
148 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/include/arch/i386/klibc/archconfig.h mkinitrd-magellan/klibc/usr/include/arch/i386/klibc/archconfig.h
149 --- ../tags/mkinitrd-6_3_5/klibc/usr/include/arch/i386/klibc/archconfig.h 2011-11-24 01:38:47.000000000 +0100
150 +++ mkinitrd-magellan/klibc/usr/include/arch/i386/klibc/archconfig.h 2011-11-24 01:44:45.000000000 +0100
151 @@ -9,7 +9,7 @@
152 #ifndef _KLIBC_ARCHCONFIG_H
153 #define _KLIBC_ARCHCONFIG_H
154
155 -/* On i386, only half the signals are accessible using the legacy calls. */
156 -#define _KLIBC_USE_RT_SIG 1
157 +/* The i386 <asm/signal.h> is still not clean enough for this... */
158 +#define _KLIBC_USE_RT_SIG 0
159
160 #endif /* _KLIBC_ARCHCONFIG_H */
161 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/include/ctype.h mkinitrd-magellan/klibc/usr/include/ctype.h
162 --- ../tags/mkinitrd-6_3_5/klibc/usr/include/ctype.h 2011-11-24 01:38:49.000000000 +0100
163 +++ mkinitrd-magellan/klibc/usr/include/ctype.h 2011-11-24 01:44:46.000000000 +0100
164 @@ -133,7 +133,7 @@
165 __extern int X(int);
166 #else
167 #define __CTYPEFUNC(X) \
168 - __extern inline int X(int __c) \
169 + __extern_inline int X(int __c) \
170 { \
171 return __ctype_##X(__c); \
172 }
173 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/include/klibc/compiler.h mkinitrd-magellan/klibc/usr/include/klibc/compiler.h
174 --- ../tags/mkinitrd-6_3_5/klibc/usr/include/klibc/compiler.h 2011-11-24 01:38:49.000000000 +0100
175 +++ mkinitrd-magellan/klibc/usr/include/klibc/compiler.h 2011-11-24 01:44:46.000000000 +0100
176 @@ -20,16 +20,38 @@
177 # define __cdecl /* Meaningless on non-i386 */
178 #endif
179
180 +/*
181 + * How to declare a function which should be inlined or instantiated locally
182 + */
183 +#ifdef __GNUC__
184 +# ifdef __GNUC_STDC_INLINE__
185 +# define __static_inline static __inline__ __attribute__((__gnu_inline__))
186 +# else
187 +# define __static_inline static __inline__
188 +# endif
189 +#else
190 +# define __static_inline inline /* Just hope this works... */
191 +#endif
192 +
193 +/*
194 + * How to declare a function which should be inlined or have a call to
195 + * an external module
196 + */
197 +#ifdef __GNUC__
198 +# ifdef __GNUC_STDC_INLINE__
199 +# define __extern_inline extern __inline__ __attribute__((__gnu_inline__))
200 +# else
201 +# define __extern_inline extern __inline__
202 +# endif
203 +#else
204 +# define __extern_inline inline /* Just hope this works... */
205 +#endif
206 +
207 /* How to declare a function that *must* be inlined */
208 /* Use "extern inline" even in the gcc3+ case to avoid warnings in ctype.h */
209 #ifdef __GNUC__
210 # if __GNUC__ >= 3
211 -# ifdef __GNUC_STDC_INLINE__
212 -# define __must_inline extern __inline__ \
213 - __attribute__((__gnu_inline__,__always_inline__))
214 -# else
215 -# define __must_inline extern __inline__ __attribute__((__always_inline__))
216 -# endif
217 +# define __must_inline __extern_inline __attribute__((__always_inline__))
218 # else
219 # define __must_inline extern __inline__
220 # endif
221 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/include/klibc/sysconfig.h mkinitrd-magellan/klibc/usr/include/klibc/sysconfig.h
222 --- ../tags/mkinitrd-6_3_5/klibc/usr/include/klibc/sysconfig.h 2011-11-24 01:38:49.000000000 +0100
223 +++ mkinitrd-magellan/klibc/usr/include/klibc/sysconfig.h 2011-11-24 01:44:46.000000000 +0100
224 @@ -169,7 +169,7 @@
225 *
226 * mips has it's own definition of statfs, which is
227 * different from any other 32 bit arch.
228 - */
229 + */
230 #ifndef _KLIBC_STATFS_F_TYPE_32B
231 # define _KLIBC_STATFS_F_TYPE_32B 0
232 #endif
233 @@ -196,4 +196,13 @@
234 # define _KLIBC_SYS_SOCKETCALL 0
235 #endif
236
237 +/*
238 + * _KLIBC_ARM_USE_BX
239 + *
240 + * This arm architecture supports bx instruction.
241 + */
242 +#ifndef _KLIBC_ARM_USE_BX
243 +# define _KLIBC_ARM_USE_BX 0
244 +#endif
245 +
246 #endif /* _KLIBC_SYSCONFIG_H */
247 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/include/stdio.h mkinitrd-magellan/klibc/usr/include/stdio.h
248 --- ../tags/mkinitrd-6_3_5/klibc/usr/include/stdio.h 2011-11-24 01:38:49.000000000 +0100
249 +++ mkinitrd-magellan/klibc/usr/include/stdio.h 2011-11-24 01:44:45.000000000 +0100
250 @@ -49,22 +49,22 @@
251
252 __extern FILE *fopen(const char *, const char *);
253
254 -static __inline__ FILE *fdopen(int __fd, const char *__m)
255 +__static_inline FILE *fdopen(int __fd, const char *__m)
256 {
257 (void)__m;
258 return __create_file(__fd);
259 }
260 -static __inline__ int fclose(FILE * __f)
261 +__static_inline int fclose(FILE * __f)
262 {
263 extern int close(int);
264 return close(fileno(__f));
265 }
266 -static __inline__ int fseek(FILE * __f, off_t __o, int __w)
267 +__static_inline int fseek(FILE * __f, off_t __o, int __w)
268 {
269 extern off_t lseek(int, off_t, int);
270 return (lseek(fileno(__f), __o, __w) == (off_t) - 1) ? -1 : 0;
271 }
272 -static __inline__ off_t ftell(FILE * __f)
273 +__static_inline off_t ftell(FILE * __f)
274 {
275 extern off_t lseek(int, off_t, int);
276 return lseek(fileno(__f), 0, SEEK_CUR);
277 @@ -85,12 +85,13 @@
278 __extern size_t _fwrite(const void *, size_t, FILE *);
279
280 #ifndef __NO_FREAD_FWRITE_INLINES
281 -extern __inline__ size_t fread(void *__p, size_t __s, size_t __n, FILE * __f)
282 +__extern_inline size_t
283 +fread(void *__p, size_t __s, size_t __n, FILE * __f)
284 {
285 return _fread(__p, __s * __n, __f) / __s;
286 }
287
288 -extern __inline__ size_t
289 +__extern_inline size_t
290 fwrite(const void *__p, size_t __s, size_t __n, FILE * __f)
291 {
292 return _fwrite(__p, __s * __n, __f) / __s;
293 @@ -109,14 +110,14 @@
294 __extern int vasprintf(char **, const char *, va_list);
295
296 /* No buffering, so no flushing needed */
297 -static __inline__ int fflush(FILE * __f)
298 +__static_inline int fflush(FILE * __f)
299 {
300 (void)__f;
301 return 0;
302 }
303
304 /* stream errors are not kept track of by klibc implementation */
305 -static __inline__ int ferror(FILE * __f)
306 +__static_inline int ferror(FILE * __f)
307 {
308 (void)__f;
309 return 0;
310 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/include/sys/socket.h mkinitrd-magellan/klibc/usr/include/sys/socket.h
311 --- ../tags/mkinitrd-6_3_5/klibc/usr/include/sys/socket.h 2011-11-24 01:38:49.000000000 +0100
312 +++ mkinitrd-magellan/klibc/usr/include/sys/socket.h 2011-11-24 01:44:46.000000000 +0100
313 @@ -5,6 +5,7 @@
314 #ifndef _SYS_SOCKET_H
315 #define _SYS_SOCKET_H
316
317 +#include <sys/types.h>
318 #include <klibc/extern.h>
319 #include <klibc/compiler.h>
320 #include <klibc/sysconfig.h>
321 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/do_mounts.c mkinitrd-magellan/klibc/usr/kinit/do_mounts.c
322 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/do_mounts.c 2011-11-24 01:38:47.000000000 +0100
323 +++ mkinitrd-magellan/klibc/usr/kinit/do_mounts.c 2011-11-24 01:44:45.000000000 +0100
324 @@ -1,4 +1,3 @@
325 -#include <ctype.h>
326 #include <errno.h>
327 #include <fcntl.h>
328 #include <sys/mount.h>
329 @@ -7,7 +6,6 @@
330 #include <stdlib.h>
331 #include <string.h>
332 #include <unistd.h>
333 -#include <alloca.h>
334 #include <inttypes.h>
335
336 #include "do_mounts.h"
337 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/do_mounts_md.c mkinitrd-magellan/klibc/usr/kinit/do_mounts_md.c
338 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/do_mounts_md.c 2011-11-24 01:38:46.000000000 +0100
339 +++ mkinitrd-magellan/klibc/usr/kinit/do_mounts_md.c 2011-11-24 01:44:45.000000000 +0100
340 @@ -14,7 +14,6 @@
341 #include <stdlib.h>
342 #include <string.h>
343 #include <unistd.h>
344 -#include <alloca.h>
345 #include <inttypes.h>
346 #include <sys/sysmacros.h>
347 #include <sys/md.h>
348 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/fstype/main.c mkinitrd-magellan/klibc/usr/kinit/fstype/main.c
349 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/fstype/main.c 2011-11-24 01:38:47.000000000 +0100
350 +++ mkinitrd-magellan/klibc/usr/kinit/fstype/main.c 2011-11-24 01:44:45.000000000 +0100
351 @@ -16,7 +16,6 @@
352 #include <fcntl.h>
353 #include <unistd.h>
354 #include <string.h>
355 -#include <errno.h>
356 #include <stdlib.h>
357 #include "fstype.h"
358
359 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/fstype/reiser4_fs.h mkinitrd-magellan/klibc/usr/kinit/fstype/reiser4_fs.h
360 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/fstype/reiser4_fs.h 2011-11-24 01:38:47.000000000 +0100
361 +++ mkinitrd-magellan/klibc/usr/kinit/fstype/reiser4_fs.h 2011-11-24 01:44:45.000000000 +0100
362 @@ -8,7 +8,7 @@
363 * Master super block structure. It is the same for all reiser4 filesystems,
364 * so, we can declare it here. It contains common for all format fields like
365 * block size etc.
366 - */
367 + */
368 struct reiser4_master_sb {
369 /* Master super block magic. */
370 char ms_magic[SS_MAGIC_SIZE];
371 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ipconfig/bootp_proto.c mkinitrd-magellan/klibc/usr/kinit/ipconfig/bootp_proto.c
372 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ipconfig/bootp_proto.c 2011-11-24 01:38:46.000000000 +0100
373 +++ mkinitrd-magellan/klibc/usr/kinit/ipconfig/bootp_proto.c 2011-11-24 01:44:45.000000000 +0100
374 @@ -169,9 +169,9 @@
375 };
376 int ret;
377
378 - ret = packet_recv(iov, 3);
379 + ret = packet_recv(dev, iov, 3);
380 if (ret <= 0)
381 - return -1;
382 + return ret;
383
384 if (ret < sizeof(struct bootp_hdr) ||
385 bootp.op != BOOTP_REPLY || /* RFC951 7.5 */
386 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ipconfig/dhcp_proto.c mkinitrd-magellan/klibc/usr/kinit/ipconfig/dhcp_proto.c
387 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ipconfig/dhcp_proto.c 2011-11-24 01:38:46.000000000 +0100
388 +++ mkinitrd-magellan/klibc/usr/kinit/ipconfig/dhcp_proto.c 2011-11-24 01:44:45.000000000 +0100
389 @@ -147,9 +147,9 @@
390 };
391 int ret;
392
393 - ret = packet_recv(iov, 3);
394 - if (ret == 0)
395 - return -1;
396 + ret = packet_recv(dev, iov, 3);
397 + if (ret <= 0)
398 + return ret;
399
400 dprintf("\n dhcp xid %08x ", dev->bootp.xid);
401
402 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ipconfig/main.c mkinitrd-magellan/klibc/usr/kinit/ipconfig/main.c
403 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ipconfig/main.c 2011-11-24 01:38:47.000000000 +0100
404 +++ mkinitrd-magellan/klibc/usr/kinit/ipconfig/main.c 2011-11-24 01:44:45.000000000 +0100
405 @@ -1,4 +1,3 @@
406 -#include <errno.h>
407 #include <poll.h>
408 #include <limits.h>
409 #include <setjmp.h>
410 @@ -96,6 +95,30 @@
411 dev->hostname, dev->name);
412 }
413
414 +/*
415 + * Escape shell varialbes in git style:
416 + * Always start with a single quote ('), then leave all characters
417 + * except ' and ! unchanged.
418 + */
419 +static void write_option(FILE* f, const char* name, const char* chr)
420 +{
421 +
422 + fprintf(f, "%s='", name);
423 + while (*chr) {
424 + switch (*chr) {
425 + case '!':
426 + case '\'':
427 + fprintf(f, "'\\%c'", *chr);
428 + break;
429 + default:
430 + fprintf(f, "%c", *chr);
431 + break;
432 + }
433 + ++chr;
434 + }
435 + fprintf(f, "'\n");
436 +}
437 +
438 static void dump_device_config(struct netdev *dev)
439 {
440 char fn[40];
441 @@ -104,22 +127,26 @@
442 snprintf(fn, sizeof(fn), "/tmp/net-%s.conf", dev->name);
443 f = fopen(fn, "w");
444 if (f) {
445 - fprintf(f, "DEVICE=%s\n", dev->name);
446 - fprintf(f, "IPV4ADDR=%s\n", my_inet_ntoa(dev->ip_addr));
447 - fprintf(f, "IPV4BROADCAST=%s\n",
448 - my_inet_ntoa(dev->ip_broadcast));
449 - fprintf(f, "IPV4NETMASK=%s\n", my_inet_ntoa(dev->ip_netmask));
450 - fprintf(f, "IPV4GATEWAY=%s\n", my_inet_ntoa(dev->ip_gateway));
451 - fprintf(f, "IPV4DNS0=%s\n",
452 - my_inet_ntoa(dev->ip_nameserver[0]));
453 - fprintf(f, "IPV4DNS1=%s\n",
454 - my_inet_ntoa(dev->ip_nameserver[1]));
455 - fprintf(f, "HOSTNAME=%s\n", dev->hostname);
456 - fprintf(f, "DNSDOMAIN=%s\n", dev->dnsdomainname);
457 - fprintf(f, "NISDOMAIN=%s\n", dev->nisdomainname);
458 - fprintf(f, "ROOTSERVER=%s\n", my_inet_ntoa(dev->ip_server));
459 - fprintf(f, "ROOTPATH=%s\n", dev->bootpath);
460 - fprintf(f, "filename=\"%s\"\n", dev->filename);
461 + write_option(f, "DEVICE", dev->name);
462 + write_option(f, "IPV4ADDR",
463 + my_inet_ntoa(dev->ip_addr));
464 + write_option(f, "IPV4BROADCAST",
465 + my_inet_ntoa(dev->ip_broadcast));
466 + write_option(f, "IPV4NETMASK",
467 + my_inet_ntoa(dev->ip_netmask));
468 + write_option(f, "IPV4GATEWAY",
469 + my_inet_ntoa(dev->ip_gateway));
470 + write_option(f, "IPV4DNS0",
471 + my_inet_ntoa(dev->ip_nameserver[0]));
472 + write_option(f, "IPV4DNS1",
473 + my_inet_ntoa(dev->ip_nameserver[1]));
474 + write_option(f, "HOSTNAME", dev->hostname);
475 + write_option(f, "DNSDOMAIN", dev->dnsdomainname);
476 + write_option(f, "NISDOMAIN", dev->nisdomainname);
477 + write_option(f, "ROOTSERVER",
478 + my_inet_ntoa(dev->ip_server));
479 + write_option(f, "ROOTPATH", dev->bootpath);
480 + write_option(f, "filename", dev->filename);
481 fclose(f);
482 }
483 }
484 @@ -171,7 +198,7 @@
485
486 /*
487 * Returns:
488 - * 0 = Not handled, the packet is still in the queue
489 + * 0 = Not handled, try again later
490 * 1 = Handled
491 */
492 static int process_receive_event(struct state *s, time_t now)
493 @@ -179,12 +206,20 @@
494 int handled = 1;
495
496 switch (s->state) {
497 + case DEVST_ERROR:
498 + return 0; /* Not handled */
499 + case DEVST_COMPLETE:
500 + return 0; /* Not handled as already configured */
501 +
502 case DEVST_BOOTP:
503 s->restart_state = DEVST_BOOTP;
504 switch (bootp_recv_reply(s->dev)) {
505 case -1:
506 s->state = DEVST_ERROR;
507 break;
508 + case 0:
509 + handled = 0;
510 + break;
511 case 1:
512 s->state = DEVST_COMPLETE;
513 dprintf("\n bootp reply\n");
514 @@ -198,6 +233,9 @@
515 case -1:
516 s->state = DEVST_ERROR;
517 break;
518 + case 0:
519 + handled = 0;
520 + break;
521 case DHCPOFFER: /* Offer received */
522 s->state = DEVST_DHCPREQ;
523 dhcp_send_request(s->dev);
524 @@ -211,6 +249,9 @@
525 case -1: /* error */
526 s->state = DEVST_ERROR;
527 break;
528 + case 0:
529 + handled = 0;
530 + break;
531 case DHCPACK: /* ACK received */
532 s->state = DEVST_COMPLETE;
533 break;
534 @@ -297,28 +338,17 @@
535
536 /*
537 * Returns:
538 - * 0 = Error, packet not received or discarded
539 + * 0 = No dhcp/bootp packet was received
540 * 1 = A packet was received and handled
541 */
542 static int do_pkt_recv(int pkt_fd, time_t now)
543 {
544 - int ifindex, ret;
545 + int ret;
546 struct state *s;
547
548 - ret = packet_peek(&ifindex);
549 - if (ret == 0)
550 - return ret;
551 -
552 for (s = slist; s; s = s->next) {
553 - if (s->dev->ifindex == ifindex) {
554 - ret = process_receive_event(s, now);
555 - break;
556 - }
557 + ret |= process_receive_event(s, now);
558 }
559 -
560 - if (ret == 0)
561 - packet_discard();
562 -
563 return ret;
564 }
565
566 @@ -328,7 +358,7 @@
567 struct pollfd fds[NR_FDS];
568 struct state *s;
569 int pkt_fd;
570 - int nr = 0;
571 + int nr = 0, rc = 0;
572 struct timeval now, prev;
573 time_t start;
574
575 @@ -393,6 +423,7 @@
576 now.tv_sec - start >= loop_timeout) {
577 printf("IP-Config: no response after %d "
578 "secs - giving up\n", loop_timeout);
579 + rc = -1;
580 goto bail;
581 }
582
583 @@ -407,7 +438,7 @@
584 bail:
585 packet_close();
586
587 - return 0;
588 + return rc;
589 }
590
591 static int add_one_dev(struct netdev *dev)
592 @@ -480,7 +511,7 @@
593 static int parse_device(struct netdev *dev, const char *ip)
594 {
595 char *cp;
596 - int i, opt;
597 + int opt;
598 int is_ip = 0;
599
600 dprintf("IP-Config: parse_device: \"%s\"\n", ip);
601 @@ -502,7 +533,7 @@
602 dev->name = ip;
603 }
604 } else {
605 - for (i = opt = 0; ip && *ip; ip = cp, opt++) {
606 + for (opt = 0; ip && *ip; ip = cp, opt++) {
607 if ((cp = strchr(ip, ':'))) {
608 *cp++ = '\0';
609 }
610 @@ -533,7 +564,7 @@
611 case 4:
612 strncpy(dev->hostname, ip, SYS_NMLN - 1);
613 dev->hostname[SYS_NMLN - 1] = '\0';
614 - memcpy(dev->reqhostname, dev->hostname,
615 + memcpy(dev->reqhostname, dev->hostname,
616 SYS_NMLN);
617 break;
618 case 5:
619 @@ -721,7 +752,7 @@
620 {
621 struct netdev *dev;
622 int c, port;
623 - int err;
624 + int err = 0;
625
626 /* If progname is set we're invoked from another program */
627 if (!progname) {
628 @@ -799,8 +830,8 @@
629 "dest to %d\n",
630 cfg_local_port, cfg_remote_port);
631 }
632 - loop();
633 + err = loop();
634 }
635
636 - return 0;
637 + return err;
638 }
639 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ipconfig/packet.c mkinitrd-magellan/klibc/usr/kinit/ipconfig/packet.c
640 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ipconfig/packet.c 2011-11-24 01:38:46.000000000 +0100
641 +++ mkinitrd-magellan/klibc/usr/kinit/ipconfig/packet.c 2011-11-24 01:44:45.000000000 +0100
642 @@ -166,47 +166,14 @@
643 return sendmsg(pkt_fd, &msg, 0);
644 }
645
646 -/*
647 - * Fetches a bootp packet, but doesn't remove it.
648 - * Returns:
649 - * 0 = Error
650 - * >0 = A packet of size "ret" is available for interface ifindex
651 - */
652 -int packet_peek(int *ifindex)
653 -{
654 - struct sockaddr_ll sll;
655 - struct iphdr iph;
656 - int ret, sllen = sizeof(struct sockaddr_ll);
657 -
658 - /*
659 - * Peek at the IP header.
660 - */
661 - ret = recvfrom(pkt_fd, &iph, sizeof(struct iphdr),
662 - MSG_PEEK, (struct sockaddr *)&sll, &sllen);
663 - if (ret == -1)
664 - return 0;
665 -
666 - if (sll.sll_family != AF_PACKET)
667 - goto discard_pkt;
668 -
669 - if (iph.ihl < 5 || iph.version != IPVERSION)
670 - goto discard_pkt;
671 -
672 - *ifindex = sll.sll_ifindex;
673 -
674 - return ret;
675 -
676 -discard_pkt:
677 - packet_discard();
678 - return 0;
679 -}
680 -
681 -void packet_discard(void)
682 +void packet_discard(struct netdev *dev)
683 {
684 struct iphdr iph;
685 struct sockaddr_ll sll;
686 socklen_t sllen = sizeof(sll);
687
688 + sll.sll_ifindex = dev->ifindex;
689 +
690 recvfrom(pkt_fd, &iph, sizeof(iph), 0,
691 (struct sockaddr *)&sll, &sllen);
692 }
693 @@ -215,10 +182,11 @@
694 * Receive a bootp packet. The options are listed in iov[1...iov_len].
695 * iov[0] must point to the bootp packet header.
696 * Returns:
697 - * 0 = Error, try again later
698 + * -1 = Error, try again later
699 +* 0 = Discarded packet (non-DHCP/BOOTP traffic)
700 * >0 = Size of packet
701 */
702 -int packet_recv(struct iovec *iov, int iov_len)
703 +int packet_recv(struct netdev* dev, struct iovec *iov, int iov_len)
704 {
705 struct iphdr *ip, iph;
706 struct udphdr *udp;
707 @@ -232,11 +200,17 @@
708 .msg_flags = 0
709 };
710 int ret, iphl;
711 + struct sockaddr_ll sll;
712 + socklen_t sllen = sizeof(sll);
713 +
714 + sll.sll_ifindex = dev->ifindex;
715 + msg.msg_name = &sll;
716 + msg.msg_namelen = sllen;
717
718 ret = recvfrom(pkt_fd, &iph, sizeof(struct iphdr),
719 - MSG_PEEK, NULL, NULL);
720 + MSG_PEEK, (struct sockaddr *)&sll, &sllen);
721 if (ret == -1)
722 - return 0;
723 + return -1;
724
725 if (iph.ihl < 5 || iph.version != IPVERSION)
726 goto discard_pkt;
727 @@ -292,6 +266,6 @@
728
729 discard_pkt:
730 dprintf("discarded\n");
731 - packet_discard();
732 + packet_discard(dev);
733 return 0;
734 }
735 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ipconfig/packet.h mkinitrd-magellan/klibc/usr/kinit/ipconfig/packet.h
736 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ipconfig/packet.h 2011-11-24 01:38:47.000000000 +0100
737 +++ mkinitrd-magellan/klibc/usr/kinit/ipconfig/packet.h 2011-11-24 01:44:45.000000000 +0100
738 @@ -6,8 +6,7 @@
739 int packet_open(void);
740 void packet_close(void);
741 int packet_send(struct netdev *dev, struct iovec *iov, int iov_len);
742 -int packet_peek(int *ifindex);
743 -void packet_discard(void);
744 -int packet_recv(struct iovec *iov, int iov_len);
745 +void packet_discard(struct netdev *dev);
746 +int packet_recv(struct netdev *dev, struct iovec *iov, int iov_len);
747
748 #endif /* IPCONFIG_PACKET_H */
749 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/name_to_dev.c mkinitrd-magellan/klibc/usr/kinit/name_to_dev.c
750 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/name_to_dev.c 2011-11-24 01:38:47.000000000 +0100
751 +++ mkinitrd-magellan/klibc/usr/kinit/name_to_dev.c 2011-11-24 01:44:45.000000000 +0100
752 @@ -1,5 +1,4 @@
753 #include <ctype.h>
754 -#include <errno.h>
755 #include <fcntl.h>
756 #include <sys/stat.h>
757 #include <stdio.h>
758 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/nfsmount/dummypmap.c mkinitrd-magellan/klibc/usr/kinit/nfsmount/dummypmap.c
759 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/nfsmount/dummypmap.c 2011-11-24 01:38:47.000000000 +0100
760 +++ mkinitrd-magellan/klibc/usr/kinit/nfsmount/dummypmap.c 2011-11-24 01:44:45.000000000 +0100
761 @@ -249,6 +249,7 @@
762 if (errno == EINVAL || errno == EADDRINUSE)
763 return 0; /* Assume not needed */
764 else {
765 + fclose(portmap_filep);
766 fprintf(stderr, "%s: portmap spoofing failed\n",
767 progname);
768 return -1;
769 @@ -257,6 +258,7 @@
770
771 spoof_portmap = fork();
772 if (spoof_portmap == -1) {
773 + fclose(portmap_filep);
774 fprintf(stderr, "%s: cannot fork\n", progname);
775 return -1;
776 } else if (spoof_portmap == 0) {
777 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/nfsmount/mount.c mkinitrd-magellan/klibc/usr/kinit/nfsmount/mount.c
778 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/nfsmount/mount.c 2011-11-24 01:38:47.000000000 +0100
779 +++ mkinitrd-magellan/klibc/usr/kinit/nfsmount/mount.c 2011-11-24 01:44:45.000000000 +0100
780 @@ -44,6 +44,11 @@
781
782 #define MNT_REPLY_MINSIZE (sizeof(struct rpc_reply) + sizeof(uint32_t))
783
784 +#ifndef MNTPROC_MNT
785 +# define MNTPROC_MNT 1
786 +# define MNTPROC_UMNT 3
787 +#endif /* MNTPROC_MNT */
788 +
789 static int get_ports(uint32_t server, const struct nfs_mount_data *data)
790 {
791 uint32_t nfs_ver, mount_ver;
792 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/nfsmount/sunrpc.c mkinitrd-magellan/klibc/usr/kinit/nfsmount/sunrpc.c
793 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/nfsmount/sunrpc.c 2011-11-24 01:38:47.000000000 +0100
794 +++ mkinitrd-magellan/klibc/usr/kinit/nfsmount/sunrpc.c 2011-11-24 01:44:45.000000000 +0100
795 @@ -1,7 +1,6 @@
796 #include <sys/types.h>
797 #include <sys/socket.h>
798 #include <netinet/in.h>
799 -#include <errno.h>
800 #include <poll.h>
801 #include <stdio.h>
802 #include <string.h>
803 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ramdisk_load.c mkinitrd-magellan/klibc/usr/kinit/ramdisk_load.c
804 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/ramdisk_load.c 2011-11-24 01:38:46.000000000 +0100
805 +++ mkinitrd-magellan/klibc/usr/kinit/ramdisk_load.c 2011-11-24 01:44:45.000000000 +0100
806 @@ -1,4 +1,3 @@
807 -#include <ctype.h>
808 #include <errno.h>
809 #include <fcntl.h>
810 #include <stdio.h>
811 @@ -243,6 +242,8 @@
812 (fssize == 0 && !(is_gzip = !strcmp(fstype, "gzip")))) {
813 fprintf(stderr,
814 "Failure loading ramdisk: unknown filesystem type\n");
815 + close(rfd);
816 + fclose(wfd);
817 return 0;
818 }
819
820 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/resume/resumelib.c mkinitrd-magellan/klibc/usr/kinit/resume/resumelib.c
821 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/resume/resumelib.c 2011-11-24 01:38:47.000000000 +0100
822 +++ mkinitrd-magellan/klibc/usr/kinit/resume/resumelib.c 2011-11-24 01:44:45.000000000 +0100
823 @@ -2,7 +2,6 @@
824 * Handle resume from suspend-to-disk
825 */
826
827 -#include <errno.h>
828 #include <fcntl.h>
829 #include <stdio.h>
830 #include <stdlib.h>
831 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/kinit/run-init/runinitlib.c mkinitrd-magellan/klibc/usr/kinit/run-init/runinitlib.c
832 --- ../tags/mkinitrd-6_3_5/klibc/usr/kinit/run-init/runinitlib.c 2011-11-24 01:38:47.000000000 +0100
833 +++ mkinitrd-magellan/klibc/usr/kinit/run-init/runinitlib.c 2011-11-24 01:44:45.000000000 +0100
834 @@ -40,7 +40,6 @@
835 * On failure, returns a human-readable error message.
836 */
837
838 -#include <alloca.h>
839 #include <assert.h>
840 #include <dirent.h>
841 #include <errno.h>
842 @@ -157,7 +156,7 @@
843 const char *run_init(const char *realroot, const char *console,
844 const char *init, char **initargs)
845 {
846 - struct stat rst, cst, ist;
847 + struct stat rst, cst;
848 struct statfs sfs;
849 int confd;
850
851 @@ -176,10 +175,6 @@
852 if (rst.st_dev == cst.st_dev)
853 return "current directory on the same filesystem as the root";
854
855 - /* The initramfs should have /init */
856 - if (stat("/init", &ist) || !S_ISREG(ist.st_mode))
857 - return "can't find /init on initramfs";
858 -
859 /* Make sure we're on a ramfs */
860 if (statfs("/", &sfs))
861 return "statfs /";
862 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/arch/arm/setjmp.S mkinitrd-magellan/klibc/usr/klibc/arch/arm/setjmp.S
863 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/arch/arm/setjmp.S 2011-11-24 01:38:51.000000000 +0100
864 +++ mkinitrd-magellan/klibc/usr/klibc/arch/arm/setjmp.S 2011-11-24 01:44:46.000000000 +0100
865 @@ -4,6 +4,8 @@
866 # setjmp/longjmp for the ARM architecture
867 #
868
869 +#include <klibc/asmmacros.h>
870 +
871 #ifndef __thumb__
872
873 #
874 @@ -29,7 +31,7 @@
875 setjmp:
876 stmia r0, {r4, r5, r6, r7, r8, r9, r10, fp, sp, lr}
877 mov r0, #0
878 - mov pc, lr
879 + BX(lr)
880 .size setjmp,.-setjmp
881
882 .text
883 @@ -39,7 +41,7 @@
884 longjmp:
885 ldmia r0, {r4, r5, r6, r7, r8, r9, r10, fp, sp, lr}
886 mov r0, r1
887 - mov pc, lr
888 + BX(lr)
889 .size longjmp,.-longjmp
890
891 #else /* __thumb__ */
892 @@ -75,7 +77,7 @@
893 mov r7, sp
894 stmia r0!, {r3, r4, r5, r6, r7}
895 mov r0, #0
896 - mov pc, lr
897 + BX(lr)
898 .size setjmp,.-setjmp
899
900 .text
901 @@ -96,7 +98,7 @@
902 mov r0, r1
903 bne 1f
904 mov r0, #1
905 -1: mov pc, r3
906 +1: BX(r3)
907 .size longjmp,.-longjmp
908
909 #endif /* __thumb__ */
910 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/arch/arm/sysstub.ph mkinitrd-magellan/klibc/usr/klibc/arch/arm/sysstub.ph
911 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/arch/arm/sysstub.ph 2011-11-24 01:38:51.000000000 +0100
912 +++ mkinitrd-magellan/klibc/usr/klibc/arch/arm/sysstub.ph 2011-11-24 01:44:46.000000000 +0100
913 @@ -52,7 +52,7 @@
914
915 print OUT "#endif /* __thumb__*/\n";
916
917 - print OUT " .size __syscall${i},.-__syscall${i}\n";
918 + print OUT " .size ${fname},.-${fname}\n";
919 }
920
921 1;
922 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/arch/arm/vfork.S mkinitrd-magellan/klibc/usr/klibc/arch/arm/vfork.S
923 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/arch/arm/vfork.S 2011-11-24 01:38:51.000000000 +0100
924 +++ mkinitrd-magellan/klibc/usr/klibc/arch/arm/vfork.S 2011-11-24 01:44:46.000000000 +0100
925 @@ -4,6 +4,7 @@
926 * vfork - nasty system call which must not use the stack.
927 */
928
929 +#include <klibc/asmmacros.h>
930 #include <asm/unistd.h>
931
932 .type vfork,#function
933 @@ -25,7 +26,7 @@
934 ldrcs r3, 1f
935 mvncs r0, #0
936 strcs r2, [r3]
937 - mov pc, lr
938 + BX(lr)
939
940 .balign 4
941 1:
942 @@ -49,7 +50,7 @@
943 str r2, [r1]
944 neg r0, r0
945 1:
946 - mov pc, lr
947 + BX(lr)
948
949 .balign 4
950 2:
951 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/CAVEATS mkinitrd-magellan/klibc/usr/klibc/CAVEATS
952 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/CAVEATS 2011-11-24 01:38:54.000000000 +0100
953 +++ mkinitrd-magellan/klibc/usr/klibc/CAVEATS 2011-11-24 01:44:48.000000000 +0100
954 @@ -1,5 +1,5 @@
955 -------------------------------------------------
956 - Please note the following caveats to using klibc:
957 + Please note the following caveats when using klibc:
958 -------------------------------------------------
959
960 optimization:
961 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/execv.c mkinitrd-magellan/klibc/usr/klibc/execv.c
962 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/execv.c 2011-11-24 01:38:51.000000000 +0100
963 +++ mkinitrd-magellan/klibc/usr/klibc/execv.c 2011-11-24 01:44:46.000000000 +0100
964 @@ -2,7 +2,6 @@
965 * execv.c
966 */
967
968 -#include <stdarg.h>
969 #include <unistd.h>
970
971 int execv(const char *path, char *const *argv)
972 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/execvp.c mkinitrd-magellan/klibc/usr/klibc/execvp.c
973 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/execvp.c 2011-11-24 01:38:53.000000000 +0100
974 +++ mkinitrd-magellan/klibc/usr/klibc/execvp.c 2011-11-24 01:44:48.000000000 +0100
975 @@ -2,7 +2,6 @@
976 * execvp.c
977 */
978
979 -#include <stdarg.h>
980 #include <unistd.h>
981
982 int execvp(const char *path, char *const *argv)
983 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/fgetc.c mkinitrd-magellan/klibc/usr/klibc/fgetc.c
984 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/fgetc.c 2011-11-24 01:38:51.000000000 +0100
985 +++ mkinitrd-magellan/klibc/usr/klibc/fgetc.c 2011-11-24 01:44:46.000000000 +0100
986 @@ -9,7 +9,6 @@
987 #include <stdio.h>
988 #include <unistd.h>
989 #include <stdlib.h>
990 -#include <errno.h>
991
992 int fgetc(FILE *f)
993 {
994 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/getpt.c mkinitrd-magellan/klibc/usr/klibc/getpt.c
995 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/getpt.c 2011-11-24 01:38:53.000000000 +0100
996 +++ mkinitrd-magellan/klibc/usr/klibc/getpt.c 2011-11-24 01:44:47.000000000 +0100
997 @@ -9,7 +9,6 @@
998 #include <unistd.h>
999 #include <termios.h>
1000 #include <fcntl.h>
1001 -#include <sys/ioctl.h>
1002
1003 int getpt(void)
1004 {
1005 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/Kbuild mkinitrd-magellan/klibc/usr/klibc/Kbuild
1006 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/Kbuild 2011-11-24 01:38:53.000000000 +0100
1007 +++ mkinitrd-magellan/klibc/usr/klibc/Kbuild 2011-11-24 01:44:47.000000000 +0100
1008 @@ -109,7 +109,7 @@
1009 targets += libc.a __static_init.o
1010 quiet_cmd_libc = KLIBCAR $@
1011 cmd_libc = rm -f $@; \
1012 - $(KLIBCAR) cq $@ \
1013 + $(call klibc-ar,cq,Dcq) $@ \
1014 $(call objectify,__static_init.o) $(klib-o-files); \
1015 $(KLIBCRANLIB) $@
1016
1017 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/posix_openpt.c mkinitrd-magellan/klibc/usr/klibc/posix_openpt.c
1018 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/posix_openpt.c 2011-11-24 01:38:54.000000000 +0100
1019 +++ mkinitrd-magellan/klibc/usr/klibc/posix_openpt.c 2011-11-24 01:44:48.000000000 +0100
1020 @@ -7,7 +7,6 @@
1021 #include <unistd.h>
1022 #include <termios.h>
1023 #include <fcntl.h>
1024 -#include <sys/ioctl.h>
1025
1026 int posix_openpt(int oflag)
1027 {
1028 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/README.klibc mkinitrd-magellan/klibc/usr/klibc/README.klibc
1029 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/README.klibc 2011-11-24 01:38:54.000000000 +0100
1030 +++ mkinitrd-magellan/klibc/usr/klibc/README.klibc 2011-11-24 01:44:48.000000000 +0100
1031 @@ -1,6 +1,6 @@
1032 This is klibc, what is intended to be a minimalistic libc subset for
1033 use with initramfs. It is deliberately written for small size,
1034 -minimal entaglement, and portability, not speed. It is definitely a
1035 +minimal entanglement, and portability, not speed. It is definitely a
1036 work in progress, and a lot of things are still missing.
1037
1038
1039 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/socketcalls/Kbuild mkinitrd-magellan/klibc/usr/klibc/socketcalls/Kbuild
1040 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/socketcalls/Kbuild 2011-11-24 01:38:51.000000000 +0100
1041 +++ mkinitrd-magellan/klibc/usr/klibc/socketcalls/Kbuild 2011-11-24 01:44:46.000000000 +0100
1042 @@ -48,3 +48,5 @@
1043 $(obj)/SOCKETCALLS.i \
1044 $(src)/socketcommon.h
1045 $(call cmd,socketcalls)
1046 +
1047 +PHONY += FORCE
1048 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/syscalls/Kbuild mkinitrd-magellan/klibc/usr/klibc/syscalls/Kbuild
1049 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/syscalls/Kbuild 2011-11-24 01:38:53.000000000 +0100
1050 +++ mkinitrd-magellan/klibc/usr/klibc/syscalls/Kbuild 2011-11-24 01:44:47.000000000 +0100
1051 @@ -95,3 +95,5 @@
1052 $(src)/syscommon.h $(obj)/syscalls.nrs \
1053 $(obj)/typesize.bin FORCE
1054 $(call if_changed,syscalls)
1055 +
1056 +PHONY += FORCE
1057 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/system.c mkinitrd-magellan/klibc/usr/klibc/system.c
1058 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/system.c 2011-11-24 01:38:53.000000000 +0100
1059 +++ mkinitrd-magellan/klibc/usr/klibc/system.c 2011-11-24 01:44:48.000000000 +0100
1060 @@ -7,7 +7,6 @@
1061 * present.
1062 */
1063
1064 -#include <errno.h>
1065 #include <stdlib.h>
1066 #include <unistd.h>
1067 #include <signal.h>
1068 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/fcntl.c mkinitrd-magellan/klibc/usr/klibc/tests/fcntl.c
1069 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/fcntl.c 2011-11-24 01:38:53.000000000 +0100
1070 +++ mkinitrd-magellan/klibc/usr/klibc/tests/fcntl.c 2011-11-24 01:44:47.000000000 +0100
1071 @@ -5,7 +5,6 @@
1072 #include <stdio.h>
1073 #include <unistd.h>
1074 #include <fcntl.h>
1075 -#include <errno.h>
1076 #include <stdlib.h>
1077 #include <string.h>
1078
1079 @@ -46,5 +45,6 @@
1080
1081 /* Eventually, fork and try to conflict with this lock... */
1082
1083 + close(fd);
1084 return 0;
1085 }
1086 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/fnmatch.c mkinitrd-magellan/klibc/usr/klibc/tests/fnmatch.c
1087 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/fnmatch.c 2011-11-24 01:38:53.000000000 +0100
1088 +++ mkinitrd-magellan/klibc/usr/klibc/tests/fnmatch.c 2011-11-24 01:44:47.000000000 +0100
1089 @@ -11,5 +11,3 @@
1090
1091 return match;
1092 }
1093 -
1094 -
1095 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/getoptlong.c mkinitrd-magellan/klibc/usr/klibc/tests/getoptlong.c
1096 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/getoptlong.c 2011-11-24 01:38:52.000000000 +0100
1097 +++ mkinitrd-magellan/klibc/usr/klibc/tests/getoptlong.c 2011-11-24 01:44:47.000000000 +0100
1098 @@ -11,7 +11,7 @@
1099 #include <getopt.h>
1100
1101 static int foo = 0;
1102 -
1103 +
1104 static const struct option long_options[] = {
1105 { "first", 1, NULL, 'f' },
1106 { "second", 0, NULL, 's' },
1107 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/select.c mkinitrd-magellan/klibc/usr/klibc/tests/select.c
1108 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/select.c 2011-11-24 01:38:52.000000000 +0100
1109 +++ mkinitrd-magellan/klibc/usr/klibc/tests/select.c 2011-11-24 01:44:47.000000000 +0100
1110 @@ -42,7 +42,7 @@
1111 FD_SET(fdz, &readset);
1112
1113 rv = select(FD_SETSIZE, &readset, NULL, NULL, &timeout);
1114 -
1115 +
1116 if (rv != 1 || !FD_ISSET(fdz, &readset) ||
1117 FD_ISSET(fdn, &readset)) {
1118 fprintf(stderr,
1119 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/socket.c mkinitrd-magellan/klibc/usr/klibc/tests/socket.c
1120 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/socket.c 2011-11-24 01:38:53.000000000 +0100
1121 +++ mkinitrd-magellan/klibc/usr/klibc/tests/socket.c 2011-11-24 01:44:47.000000000 +0100
1122 @@ -16,4 +16,3 @@
1123
1124 return 0;
1125 }
1126 -
1127 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/stat.c mkinitrd-magellan/klibc/usr/klibc/tests/stat.c
1128 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/stat.c 2011-11-24 01:38:52.000000000 +0100
1129 +++ mkinitrd-magellan/klibc/usr/klibc/tests/stat.c 2011-11-24 01:44:47.000000000 +0100
1130 @@ -1,6 +1,5 @@
1131 #include <stdio.h>
1132 #include <stdlib.h>
1133 -#include <errno.h>
1134 #include <sys/stat.h>
1135 #include <sys/sysmacros.h>
1136 #include <sys/types.h>
1137 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/statfs.c mkinitrd-magellan/klibc/usr/klibc/tests/statfs.c
1138 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/statfs.c 2011-11-24 01:38:52.000000000 +0100
1139 +++ mkinitrd-magellan/klibc/usr/klibc/tests/statfs.c 2011-11-24 01:44:47.000000000 +0100
1140 @@ -1,6 +1,5 @@
1141 #include <stdio.h>
1142 #include <stdlib.h>
1143 -#include <errno.h>
1144 #include <sys/vfs.h>
1145
1146 static void do_statfs(const char *path)
1147 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/testvsnp.c mkinitrd-magellan/klibc/usr/klibc/tests/testvsnp.c
1148 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/tests/testvsnp.c 2011-11-24 01:38:53.000000000 +0100
1149 +++ mkinitrd-magellan/klibc/usr/klibc/tests/testvsnp.c 2011-11-24 01:44:47.000000000 +0100
1150 @@ -1,5 +1,4 @@
1151 #include <assert.h>
1152 -#include <stdarg.h>
1153 #include <stddef.h>
1154 #include <stdint.h>
1155 #include <string.h>
1156 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/klibc/version mkinitrd-magellan/klibc/usr/klibc/version
1157 --- ../tags/mkinitrd-6_3_5/klibc/usr/klibc/version 2011-11-24 01:38:53.000000000 +0100
1158 +++ mkinitrd-magellan/klibc/usr/klibc/version 2011-11-24 01:44:48.000000000 +0100
1159 @@ -1 +1 @@
1160 -1.5.19
1161 +1.5.22
1162 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/utils/cat.c mkinitrd-magellan/klibc/usr/utils/cat.c
1163 --- ../tags/mkinitrd-6_3_5/klibc/usr/utils/cat.c 2011-11-24 01:38:51.000000000 +0100
1164 +++ mkinitrd-magellan/klibc/usr/utils/cat.c 2011-11-24 01:44:46.000000000 +0100
1165 @@ -39,13 +39,6 @@
1166 #define __RCSID(arg)
1167 #endif
1168
1169 -#if HAVE_NBTOOL_CONFIG_H
1170 -#include "nbtool_config.h"
1171 -#endif
1172 -
1173 -#ifndef __KLIBC__
1174 -#include <sys/cdefs.h>
1175 -#endif
1176 #if !defined(lint)
1177 __COPYRIGHT("@(#) Copyright (c) 1989, 1993\n\
1178 The Regents of the University of California. All rights reserved.\n");
1179 @@ -60,14 +53,8 @@
1180 #include <sys/stat.h>
1181
1182 #include <ctype.h>
1183 -#ifndef __KLIBC__
1184 -#include <err.h>
1185 -#endif
1186 #include <errno.h>
1187 #include <fcntl.h>
1188 -#ifndef __KLIBC__
1189 -#include <locale.h>
1190 -#endif
1191 #include <stdio.h>
1192 #include <stdlib.h>
1193 #include <string.h>
1194 @@ -88,11 +75,6 @@
1195 int ch;
1196 struct flock stdout_lock;
1197
1198 -#ifndef __KLIBC__
1199 - setprogname(argv[0]);
1200 - (void)setlocale(LC_ALL, "");
1201 -#endif
1202 -
1203 while ((ch = getopt(argc, argv, "beflnstuv")) != -1)
1204 switch (ch) {
1205 case 'b':
1206 @@ -117,9 +99,7 @@
1207 tflag = vflag = 1; /* -t implies -v */
1208 break;
1209 case 'u':
1210 -#ifndef __KLIBC__
1211 - setbuf(stdout, NULL);
1212 -#endif
1213 + /* unimplemented */
1214 break;
1215 case 'v':
1216 vflag = 1;
1217 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/utils/cpio.c mkinitrd-magellan/klibc/usr/utils/cpio.c
1218 --- ../tags/mkinitrd-6_3_5/klibc/usr/utils/cpio.c 2011-11-24 01:38:51.000000000 +0100
1219 +++ mkinitrd-magellan/klibc/usr/utils/cpio.c 2011-11-24 01:44:46.000000000 +0100
1220 @@ -104,7 +104,7 @@
1221 char *c_tar_linkname;
1222 };
1223
1224 -/* Total number of bytes read and written for all files.
1225 +/* Total number of bytes read and written for all files.
1226 * Now that many tape drives hold more than 4Gb we need more than 32
1227 * bits to hold input_bytes and output_bytes.
1228 */
1229 @@ -157,7 +157,7 @@
1230 descriptor OUT_DES and reset `output_size' and `out_buff'.
1231 If `swapping_halfwords' or `swapping_bytes' is set,
1232 do the appropriate swapping first. Our callers have
1233 - to make sure to only set these flags if `output_size'
1234 + to make sure to only set these flags if `output_size'
1235 is appropriate (a multiple of 4 for `swapping_halfwords',
1236 2 for `swapping_bytes'). The fact that DISK_IO_BLOCK_SIZE
1237 must always be a multiple of 4 helps us (and our callers)
1238 @@ -365,8 +365,7 @@
1239 for (i = 0; i < hash_num; i++)
1240 hash_insert(old_table[i]);
1241
1242 - if (old_table != NULL)
1243 - free(old_table);
1244 + free(old_table);
1245 }
1246
1247 /* Insert the new record and increment the count of elements in the
1248 @@ -407,7 +406,7 @@
1249 return NULL;
1250 }
1251
1252 -/* Try and create a hard link from FILE_NAME to another file
1253 +/* Try and create a hard link from FILE_NAME to another file
1254 with the given major/minor device number and inode. If no other
1255 file with the same major/minor/inode numbers is known, add this file
1256 to the list of known files and associated major/minor/inode numbers
1257 @@ -482,10 +481,10 @@
1258 return 0;
1259 }
1260
1261 -/* The newc and crc formats store multiply linked copies of the same file
1262 - in the archive only once. The actual data is attached to the last link
1263 - in the archive, and the other links all have a filesize of 0. When a
1264 - file in the archive has multiple links and a filesize of 0, its data is
1265 +/* The newc and crc formats store multiply linked copies of the same file
1266 + in the archive only once. The actual data is attached to the last link
1267 + in the archive, and the other links all have a filesize of 0. When a
1268 + file in the archive has multiple links and a filesize of 0, its data is
1269 probably "attatched" to another file in the archive, so we can't create
1270 it right away. We have to "defer" creating it until we have created
1271 the file that has the data "attatched" to it. We keep a list of the
1272 @@ -680,8 +679,8 @@
1273
1274 tape_skip_padding(in_file_des, file_hdr->c_filesize);
1275 if (file_hdr->c_nlink > 1) {
1276 - /* (see comment above for how the newc and crc formats
1277 - store multiple links). Now that we have the data
1278 + /* (see comment above for how the newc and crc formats
1279 + store multiple links). Now that we have the data
1280 for this file, create any other links to it which
1281 we defered. */
1282 create_defered_links(file_hdr);
1283 @@ -914,8 +913,7 @@
1284 ah += 8;
1285 }
1286 /* Read file name from input. */
1287 - if (file_hdr->c_name != NULL)
1288 - free(file_hdr->c_name);
1289 + free(file_hdr->c_name);
1290 file_hdr->c_name = (char *)xmalloc(file_hdr->c_namesize);
1291 tape_buffered_read(file_hdr->c_name, in_des,
1292 (long)file_hdr->c_namesize);
1293 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/utils/dd.c mkinitrd-magellan/klibc/usr/utils/dd.c
1294 --- ../tags/mkinitrd-6_3_5/klibc/usr/utils/dd.c 2011-11-24 01:38:51.000000000 +0100
1295 +++ mkinitrd-magellan/klibc/usr/utils/dd.c 2011-11-24 01:44:46.000000000 +0100
1296 @@ -486,6 +486,7 @@
1297 wr_fd = open(OPT_OF->str, flags, 0666);
1298 if (wr_fd == -1) {
1299 perror("open output file");
1300 + close(rd_fd);
1301 return 1;
1302 }
1303 }
1304 @@ -493,14 +494,20 @@
1305 /*
1306 * Skip obs-sized blocks of output file.
1307 */
1308 - if (OPT_SEEK->str && skip_blocks(wr_fd, out_buf, seek, obs))
1309 + if (OPT_SEEK->str && skip_blocks(wr_fd, out_buf, seek, obs)) {
1310 + close(rd_fd);
1311 + close(wr_fd);
1312 return 1;
1313 + }
1314
1315 /*
1316 * Skip ibs-sized blocks of input file.
1317 */
1318 - if (OPT_SKIP->str && skip_blocks(rd_fd, in_buf, skip, ibs))
1319 + if (OPT_SKIP->str && skip_blocks(rd_fd, in_buf, skip, ibs)) {
1320 + close(rd_fd);
1321 + close(wr_fd);
1322 return 1;
1323 + }
1324
1325 memset(&stats, 0, sizeof(stats));
1326
1327 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/utils/dmesg.c mkinitrd-magellan/klibc/usr/utils/dmesg.c
1328 --- ../tags/mkinitrd-6_3_5/klibc/usr/utils/dmesg.c 2011-11-24 01:38:51.000000000 +0100
1329 +++ mkinitrd-magellan/klibc/usr/utils/dmesg.c 2011-11-24 01:44:46.000000000 +0100
1330 @@ -1,5 +1,4 @@
1331 #include <unistd.h>
1332 -#include <errno.h>
1333 #include <stdio.h>
1334 #include <ctype.h>
1335 #include <stdlib.h>
1336 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/utils/losetup.c mkinitrd-magellan/klibc/usr/utils/losetup.c
1337 --- ../tags/mkinitrd-6_3_5/klibc/usr/utils/losetup.c 2011-11-24 01:38:51.000000000 +0100
1338 +++ mkinitrd-magellan/klibc/usr/utils/losetup.c 2011-11-24 01:44:46.000000000 +0100
1339 @@ -17,6 +17,7 @@
1340 #include <sys/stat.h>
1341 #include <sys/mman.h>
1342 #include <sys/sysmacros.h>
1343 +#include <stdarg.h>
1344 #include <string.h>
1345
1346 #include "loop.h"
1347 @@ -339,6 +340,7 @@
1348 }
1349 if (ioctl (fd, LOOP_CLR_FD, 0) < 0) {
1350 perror ("ioctl: LOOP_CLR_FD");
1351 + close (fd);
1352 return 1;
1353 }
1354 close (fd);
1355 @@ -348,9 +350,6 @@
1356 }
1357
1358
1359 -#include <getopt.h>
1360 -#include <stdarg.h>
1361 -
1362 int verbose = 0;
1363 char *progname;
1364
1365 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/utils/mkfifo.c mkinitrd-magellan/klibc/usr/utils/mkfifo.c
1366 --- ../tags/mkinitrd-6_3_5/klibc/usr/utils/mkfifo.c 2011-11-24 01:38:51.000000000 +0100
1367 +++ mkinitrd-magellan/klibc/usr/utils/mkfifo.c 2011-11-24 01:44:46.000000000 +0100
1368 @@ -1,6 +1,5 @@
1369 #include <sys/stat.h>
1370 #include <sys/types.h>
1371 -#include <errno.h>
1372 #include <fcntl.h>
1373 #include <signal.h>
1374 #include <stdio.h>
1375 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/utils/mknod.c mkinitrd-magellan/klibc/usr/utils/mknod.c
1376 --- ../tags/mkinitrd-6_3_5/klibc/usr/utils/mknod.c 2011-11-24 01:38:51.000000000 +0100
1377 +++ mkinitrd-magellan/klibc/usr/utils/mknod.c 2011-11-24 01:44:46.000000000 +0100
1378 @@ -20,6 +20,8 @@
1379 dev_t dev;
1380
1381 progname = *argv++;
1382 + if (argc == 1)
1383 + usage();
1384
1385 if (argv[0][0] == '-' && argv[0][1] == 'm' && !argv[0][2]) {
1386 mode_set = strtoul(argv[1], &endp, 8);
1387 @@ -36,7 +38,7 @@
1388 typec = type[0];
1389
1390 mode = 0;
1391 - switch (type[0]) {
1392 + switch (typec) {
1393 case 'c':
1394 mode = S_IFCHR;
1395 break;
1396 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/utils/nuke.c mkinitrd-magellan/klibc/usr/utils/nuke.c
1397 --- ../tags/mkinitrd-6_3_5/klibc/usr/utils/nuke.c 2011-11-24 01:38:51.000000000 +0100
1398 +++ mkinitrd-magellan/klibc/usr/utils/nuke.c 2011-11-24 01:44:46.000000000 +0100
1399 @@ -32,7 +32,6 @@
1400 * do anything.
1401 */
1402
1403 -#include <alloca.h>
1404 #include <assert.h>
1405 #include <dirent.h>
1406 #include <errno.h>
1407 diff -Naur ../tags/mkinitrd-6_3_5/klibc/usr/utils/umount.c mkinitrd-magellan/klibc/usr/utils/umount.c
1408 --- ../tags/mkinitrd-6_3_5/klibc/usr/utils/umount.c 2011-11-24 01:38:51.000000000 +0100
1409 +++ mkinitrd-magellan/klibc/usr/utils/umount.c 2011-11-24 01:44:46.000000000 +0100
1410 @@ -2,7 +2,6 @@
1411 * by rmk
1412 */
1413 #include <sys/mount.h>
1414 -#include <errno.h>
1415 #include <stdio.h>
1416 #include <stdlib.h>
1417 #include <string.h>
1418 diff -Naur ../tags/mkinitrd-6_3_5/klibc/VERSION mkinitrd-magellan/klibc/VERSION
1419 --- ../tags/mkinitrd-6_3_5/klibc/VERSION 2011-11-24 01:38:55.000000000 +0100
1420 +++ mkinitrd-magellan/klibc/VERSION 2011-11-24 01:44:48.000000000 +0100
1421 @@ -1 +1 @@
1422 -1.5.19
1423 +1.5.22