Index: share/man/man8/man8.atari/binpatch.8
===================================================================
RCS file: /cvsroot/src/share/man/man8/man8.atari/binpatch.8,v
retrieving revision 1.5
diff -u -r1.5 binpatch.8
--- share/man/man8/man8.atari/binpatch.8 26 Dec 2001 01:26:44 -0000 1.5
+++ share/man/man8/man8.atari/binpatch.8 21 Aug 2009 14:02:06 -0000
@@ -28,22 +28,24 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd February 2, 1994
+.Dd August 20, 2009
.Dt BINPATCH 8 atari
.Os
.Sh NAME
.Nm binpatch
-.Nd "examine and or modify initialized data in a binary file"
+.Nd "examine and or modify initialized data in an executable binary"
.Sh SYNOPSIS
.Nm binpatch
-.Op Fl b | Fl w | Fl l
+.Op Fl b | Fl w | Fl l | Fl d
.Op Fl o Ar offset
+.Op Fl T Ar saddr
.Fl s Ar symname
.Op Fl r Ar value
.Ar binfile
.Nm binpatch
-.Op Fl b | Fl w | Fl l
+.Op Fl b | Fl w | Fl l | Fl d
.Op Fl o Ar offset
+.Op Fl T Ar saddr
.Fl a Ar addr
.Op Fl r Ar value
.Ar binfile
@@ -52,20 +54,39 @@
is used to modify or examine the data associated with a symbol in a binary
file
.Ar binfile .
+.Pp
The flags
.Fl b ,
-.Fl w
+.Fl w ,
+.Fl l ,
and
+.Fl d
+specify the size of the data to be modified or examined.
+.Fl b
+is for 8bit
+.Pq Li int8_t ,
+.Fl w
+is for 16bit
+.Pq Li int16_t ,
.Fl l
-specify the size of the data to be modified or examined
-(byte, word and long respectively.) The
+is for 32bit
+.Pq Li int32_t ,
+and
+.Fl d
+is for 64bit
+.Pq Li int64_t
+variables.
+.Pp
+The
.Ar binfile
is scanned in search of the symbol
.Ar symname
(specified with the
.Fl s
flag.)
-If the symbol is found the current data and address are printed. Next if the
+If the symbol is found the current data and address are printed.
+.Pp
+Next if the
.Fl r
flag has been given, the current data is replaced with that of
.Ar value .
@@ -79,11 +100,17 @@
.Pp
The
.Fl o
-flag specifies an offset in byte, word or long
+flag specifies an offset in
+.Li int8_t ,
+.Li int16_t ,
+.Li int32_t ,
+and
+.Li int64_t
.Fl ( b ,
.Fl w ,
+.Fl l ,
or
-.Fl l )
+.Fl d )
units from the given locator
.Fl ( s
or
@@ -91,3 +118,28 @@
for
.Nm
to perform its described actions.
+This might be useful to patch a member of array or structure.
+.Pp
+The
+.Fl T
+flag is used to specify the starting address of a.out binary text segment.
+Ignored for other binary executable formats.
+.Sh SEE ALSO
+.Xr gdb 1 ,
+.Xr mdsetimage 8
+.Sh BUGS
+The
+.Nm
+command doesn't check if size of specified symbol is the same as the
+specified size by
+.Fl b ,
+.Fl w ,
+.Fl l ,
+or
+.Fl d
+flag.
+.Pp
+The
+.Nm
+command doesn't check if specified address or symbol is a patchable variable
+and it might corrupt the specified executable binary.
Index: usr.sbin/mdsetimage/exec_aout.c
===================================================================
RCS file: /cvsroot/src/usr.sbin/mdsetimage/exec_aout.c,v
retrieving revision 1.6
diff -u -r1.6 exec_aout.c
--- usr.sbin/mdsetimage/exec_aout.c 1 Oct 2001 23:32:34 -0000 1.6
+++ usr.sbin/mdsetimage/exec_aout.c 21 Aug 2009 14:02:06 -0000
@@ -53,14 +53,14 @@
const char *mappedfile;
size_t mappedsize;
{
- struct exec *execp;
+ const struct exec *execp;
int rv;
-/*
- * Copyright (c) 1994 Christian E. Hopps
- * All rights reserved.
+/*-
+ * Copyright (c) 2009 Izumi Tsutsui. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -12,11 +11,6 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Christian E. Hopps.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
@@ -30,19 +24,101 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+/*
+ * Copyright (c) 1996 Christopher G. Demetriou
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * <<Id: LICENSE_GC,v 1.1 2001/10/01 23:24:05 cgd Exp>>
+ */
+
+#include <sys/cdefs.h>
+#ifndef lint
+__COPYRIGHT("@(#) Copyright (c) 1996\
+ Christopher G. Demetriou. All rights reserved.");
+#endif /* not lint */
+
+#ifndef lint
+__RCSID("$NetBSD$");
+#endif /* not lint */
+
#include <sys/types.h>
-#include <a.out.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/inttypes.h>
+
+#include <err.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <nlist.h>
#include <stdio.h>
#include <stdlib.h>
+#include <stdbool.h>
+#include <unistd.h>
-extern char *optarg;
-extern int optind;
+#include "extern.h"