diff options
author | Nick Clifton <nickc@redhat.com> | 2024-06-24 15:00:14 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2024-06-24 15:01:10 +0100 |
commit | df85f9864f4ad9d2deb6a953107b916d701f7c1b (patch) | |
tree | 97f3c9af6b3a303b67db49a1def943e228ff2f44 | |
parent | adea87e275802fb7afe7acefae1477f692c48969 (diff) | |
download | gdb-df85f9864f4ad9d2deb6a953107b916d701f7c1b.zip gdb-df85f9864f4ad9d2deb6a953107b916d701f7c1b.tar.gz gdb-df85f9864f4ad9d2deb6a953107b916d701f7c1b.tar.bz2 |
ld: Improve the documentation describing the -o option.
PR 31761
-rw-r--r-- | ld/ld.texi | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -994,6 +994,28 @@ Use @var{output} as the name for the program produced by @command{ld}; if this option is not specified, the name @file{a.out} is used by default. The script command @code{OUTPUT} can also specify the output file name. +Note - the linker will delete the output file before it starts to +write to it. It will do this even if it turns out that the link +cannot be completed due to errors. + +Note - the linker will check to make sure that the output file name +does not match the name of any of the input files, but that is all. +In particular it will not complain if the output file might overwrite +a source file or some other important file. Therefore in build +systems it is recommended to use the @option{-o} option as the last +option on the linker command line. For example consider: + +@smallexample + ld -o $(EXE) $(OBJS) + ld $(OBJS) -o $(EXE) +@end smallexample + +If the @samp{EXE} variable is not defined for some reason, the first +version of the linker command could end up deleting one of the object +files (the first one in the @samp{OBJS} list) whereas the second +version of the linker command will generate an error message and not +delete anything. + @kindex --dependency-file=@var{depfile} @cindex dependency file @item --dependency-file=@var{depfile} |