patch-2.4.19 linux-2.4.19/arch/mips/boot/addinitrd.c
Next file: linux-2.4.19/arch/mips/boot/elf2ecoff.c
Previous file: linux-2.4.19/arch/mips/boot/Makefile
Back to the patch index
Back to the overall index
- Lines: 48
- Date:
Fri Aug 2 17:39:43 2002
- Orig file:
linux-2.4.18/arch/mips/boot/addinitrd.c
- Orig date:
Fri Jun 25 17:40:12 1999
diff -urN linux-2.4.18/arch/mips/boot/addinitrd.c linux-2.4.19/arch/mips/boot/addinitrd.c
@@ -8,6 +8,8 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
+#include <stdio.h>
+#include <netinet/in.h>
#include "ecoff.h"
@@ -44,7 +46,7 @@
char buf[1024];
unsigned long loadaddr;
unsigned long initrd_header[2];
- int i;
+ int i,cnt;
int swab = 0;
if (argc != 4) {
@@ -60,7 +62,6 @@
die ("read aout header");
if (read (fd_vmlinux, esecs, sizeof esecs) != sizeof esecs)
die ("read section headers");
-
/*
* check whether the file is good for us
*/
@@ -98,9 +99,20 @@
die ("write aout header");
if (write (fd_outfile, esecs, sizeof esecs) != sizeof esecs)
die ("write section headers");
- while ((i = read (fd_vmlinux, buf, sizeof buf)) > 0)
+ /* skip padding */
+ if(lseek(fd_vmlinux, SWAB(esecs[0].s_scnptr), SEEK_SET) == (off_t)-1)
+ die ("lseek vmlinux");
+ if(lseek(fd_outfile, SWAB(esecs[0].s_scnptr), SEEK_SET) == (off_t)-1)
+ die ("lseek outfile");
+ /* copy text segment */
+ cnt = SWAB(eaout.tsize);
+ while (cnt) {
+ if ((i = read (fd_vmlinux, buf, sizeof buf)) <= 0)
+ die ("read vmlinux");
if (write (fd_outfile, buf, i) != i)
die ("write vmlinux");
+ cnt -= i;
+ }
if (write (fd_outfile, initrd_header, sizeof initrd_header) != sizeof initrd_header)
die ("write initrd header");
while ((i = read (fd_initrd, buf, sizeof buf)) > 0)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)