[binutils-gdb] Relax a -r --gc-sections requirement

Alan Modra amodra@sourceware.org
Sat Oct 20 09:25:00 GMT 2018


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=91ae256e33f7c068443d877fe3e2b2ffd91cf60b

commit 91ae256e33f7c068443d877fe3e2b2ffd91cf60b
Author: Alan Modra <amodra@gmail.com>
Date:   Fri Oct 19 23:59:11 2018 +1030

    Relax a -r --gc-sections requirement
    
    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.

Diff:
---
 ld/ChangeLog | 5 +++++
 ld/ldlang.c  | 6 ++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index 8f8880e..6a029f8 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -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.
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 8d35e0d..d2b297c 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -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"));



More information about the Binutils-cvs mailing list