Tue Oct 18 11:12:01 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+ * objcopy.c (copy_object): If the output file format is `binary',
+ and the start address was not set using --set-start, default the
+ start address to zero. This hack is because the `binary' output
+ file format uses the start address to set the virtual address of
+ the first byte in the file.
+ * binutils.texi, objcopy.1: Add some notes on generating S-records
+ and binary files.
+
* nm.c (print_symdef_entry): Call print_symname to print the
symbol name, so that --demangle works.
and thus is able to recognize most formats without being told
explicitly. @xref{BFD,,BFD,ld.info,Using LD}.
+@code{objcopy} can be used to generate S-records by using an output
+target of @samp{srec} (e.g., use @samp{-O srec}).
+
+@code{objcopy} can be used to generate a raw binary file by using an
+output target of @samp{binary} (e.g., use @samp{-O binary}). When
+@code{objcopy} generates a raw binary file, it will essentially produce
+a memory dump of the contents of the input object file. All symbols and
+relocation information will be discarded. By default, the memory dump
+will start at virtual address zero; the @samp{--set-start} option may be
+used to specify a different starting point.
+
+When generating an S-record or a raw binary file, it may be helpful to
+use @samp{-S} to remove sections containing debugging information. In
+some cases @samp{-R} will be useful to remove sections which contain
+information which is not needed by the binary file.
+
@table @code
@item @var{infile}
@itemx @var{outfile}
@item --set-start @var{val}
Set the address of the new file to @var{val}. Not all object file
-formats support setting the start address.
+formats support setting the start address. When using the @samp{binary}
+output file format, the start address sets the virtual address of the
+first byte in the binary output file.
@item --adjust-start @var{incr}
Adjust the start address by adding @var{incr}. Not all object file
formats BFD knows about, and thus is able to recognize most formats
without being told explicitly.
.PP
+.B objcopy
+can be used to generate S-records by using an output target of
+.B srec
+(e.g., use
+.B -O srec).
+.PP
+.B objcopy
+can be used to generate a raw binary file by using an output target of
+.B binary
+(e.g., use
+.B -O binary).
+When
+.B objcopy
+generates a raw binary file, it will essentially produce a memory dump
+of the contents of the input object file. All symbols and relocation
+information will be discarded. By default, the memory dump will start
+at virtual address zero; the
+.B --set-start
+option may be used to specify a different starting point.
+.PP
+When generating an S-record or a raw binary file, it may be helpful to
+use
+.B -S
+to remove sections containing debugging information. In some cases
+.B -R
+will be useful to remove sections which contain information which is
+not needed by the binary file.
+.PP
.I infile
and
.I outfile
.TP
.B \fB\-\-set\-start=\fIval
Set the start address of the new file to \fIval\fP. Not all object
-file formats support setting the start address.
+file formats support setting the start address. When using the
+\fBbinary\fP output file format, the start address sets the virtual
+address of the first byte in the binary output file.
.TP
.B \fB\-\-adjust\-start=\fIincr
Adjust the start address by adding \fIincr\fP. Not all object file
if (set_start_set)
start = set_start;
else
- start = bfd_get_start_address (ibfd);
+ {
+ /* As a special hack make it easier to generate a raw binary
+ file, we default the starting address to zero for the binary
+ output format. */
+ if (strcmp (bfd_get_target (obfd), "binary") == 0)
+ start = 0;
+ else
+ start = bfd_get_start_address (ibfd);
+ }
start += adjust_start;
if (!bfd_set_start_address (obfd, start)