Relax a -r --gc-sections requirement
authorAlan Modra <amodra@gmail.com>
Fri, 19 Oct 2018 13:29:11 +0000 (23:59 +1030)
committerAlan Modra <amodra@gmail.com>
Sat, 20 Oct 2018 09:16:43 +0000 (19:46 +1030)
A symbol root is not needed if --gc-keep-exported is also given.

* ldlang.c (lang_end): Don't error if no --entry or --undefined
is given with -r -gc-sections if --gc-keep-exported.

ld/ChangeLog
ld/ldlang.c

index 8f8880e..6a029f8 100644 (file)
@@ -1,3 +1,8 @@
+2018-10-20  Alan Modra  <amodra@gmail.com>
+
+       * ldlang.c (lang_end): Don't error if no --entry or --undefined
+       is given with -r -gc-sections if --gc-keep-exported.
+
 2018-10-15  Jim Wilson  <jimw@sifive.com>
 
        * emulparams/elf32lriscv-defs.sh (DATA_START_SYMBOLS): New.
index 8d35e0d..d2b297c 100644 (file)
@@ -6383,8 +6383,10 @@ lang_end (void)
     warn = TRUE;
 
   /* Force the user to specify a root when generating a relocatable with
-     --gc-sections.  */
-  if (link_info.gc_sections && bfd_link_relocatable (&link_info)
+     --gc-sections, unless --gc-keep-exported was also given.  */
+  if (bfd_link_relocatable (&link_info)
+      && link_info.gc_sections
+      && !link_info.gc_keep_exported
       && !(entry_from_cmdline || undef_from_cmdline))
     einfo (_("%F%P: gc-sections requires either an entry or "
             "an undefined symbol\n"));