Error on ld output file name matching input file name
It's not foolproof, for example we don't catch output to a linker script, to a library specified with -l, or to an element of a thin archive. * ldlang.c (open_output): Exit with error on output file matching an input file. * testsuite/ld-misc/just-symbols.exp: Adjust ld -r test to suit.
This commit is contained in:
parent
21ce5fa063
commit
43908c1653
16
ld/ldlang.c
16
ld/ldlang.c
@ -3392,6 +3392,22 @@ lang_get_output_target (void)
|
||||
static void
|
||||
open_output (const char *name)
|
||||
{
|
||||
lang_input_statement_type *f;
|
||||
char *out = lrealpath (name);
|
||||
|
||||
for (f = (void *) input_file_chain.head;
|
||||
f != NULL;
|
||||
f = f->next_real_file)
|
||||
if (f->flags.real)
|
||||
{
|
||||
char *in = lrealpath (f->filename);
|
||||
if (filename_cmp (in, out) == 0)
|
||||
einfo (_("%F%P: input file '%s' is the same as output file\n"),
|
||||
f->filename);
|
||||
free (in);
|
||||
}
|
||||
free (out);
|
||||
|
||||
output_target = lang_get_output_target ();
|
||||
|
||||
/* Has the user requested a particular endianness on the command
|
||||
|
@ -44,7 +44,7 @@ run_ld_link_tests [list \
|
||||
"" \
|
||||
{just-symbols-0.s} \
|
||||
{} \
|
||||
"just-symbols-0.o"] \
|
||||
"just-symbols-r"] \
|
||||
[list "Executable for --just-symbols test" \
|
||||
"$LDFLAGS -e 0 -T just-symbols.ld" "" \
|
||||
"" \
|
||||
|
Loading…
x
Reference in New Issue
Block a user