diff options
author | Tristan Gingold <gingold@adacore.com> | 2008-01-11 09:11:18 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@adacore.com> | 2008-01-11 09:11:18 +0000 |
commit | ac69cbc672a0702152d34bac2da436dcee2e5346 (patch) | |
tree | 6ffc8a7b8272f96af39210413806e543b28c186b /ld/ldlang.c | |
parent | 7dda2462a7035e0c9cc9706abfda31861c551b14 (diff) | |
download | gdb-ac69cbc672a0702152d34bac2da436dcee2e5346.zip gdb-ac69cbc672a0702152d34bac2da436dcee2e5346.tar.gz gdb-ac69cbc672a0702152d34bac2da436dcee2e5346.tar.bz2 |
ld:
2008-01-11 Tristan Gingold <gingold@adacore.com>
Eric Botcazou <ebotcazou@adacore.com>
* ldlang.c (lang_end): Warns if the entry point is not found when
--gc-sections.
Emit an error if no root is specified when --gc-sections -r.
* ld.texinfo (Options): Document that --gc-sections is compatible
with -r and -q.
* ldmain.c (main): Do not error out if -r and --gc-sections.
* scripttempl/elf.sc: Emit ENTRY command only if relocating.
ld/testsuite:
2008-01-11 Tristan Gingold <gingold@adacore.com>
* lib/ld-lib.exp (check_gc_sections_available): Now available on
VxWorks.
* ld-gc: New directory for testing --gc-sections.
* ld-gc/gc.c: New file.
* ld-gc/gc.exp: New file.
* ld-gc/noent.s: New file.
* ld-gc/noent.d: New file.
Diffstat (limited to 'ld/ldlang.c')
-rw-r--r-- | ld/ldlang.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c index 9d3c513..63326e5 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -5077,11 +5077,20 @@ lang_end (void) struct bfd_link_hash_entry *h; bfd_boolean warn; - if (link_info.relocatable || link_info.shared) + if ((link_info.relocatable && !link_info.gc_sections) + || link_info.shared) warn = entry_from_cmdline; else warn = TRUE; + /* Force the user to specify a root when generating a relocatable with + --gc-sections. */ + if (link_info.gc_sections && link_info.relocatable + && (entry_symbol.name == NULL + && ldlang_undef_chain_list_head == NULL)) + einfo (_("%P%F: gc-sections requires either an entry or " + "an undefined symbol\n")); + if (entry_symbol.name == NULL) { /* No entry has been specified. Look for the default entry, but |