[PATCH] [BFD] Fix override of COMMON symbols for a.out

Gunther Nikl gnikl@users.sourceforge.net
Fri Jan 19 21:08:00 GMT 2018


Hello,

Am Fri, 12 Jan 2018 21:20:43 +1030 schrieb Alan Modra
<amodra@gmail.com>:
> On Thu, Jan 11, 2018 at 07:54:54PM +0100, gnikl@users.sourceforge.net
> wrote:
> > 2018-01-12  Gunther Nikl  <gnikl@users.sourceforge.net>
> > 
> > 	* bfd/aoutx.h (aout_link_check_ar_symbols): Add
> > 	  bfd_link_common_skip_none and make it the switch default.
> 
> Applied with a slight variation.
> 
> 	* aoutx.h (aout_link_check_ar_symbols): Remove default and
> handle bfd_link_common_skip_none in switch.

Thank you for the quick response.

I looked at the code since I need similar code in the generic linker.
Does the code below for bfd/linker.c/generic_link_check_archive_element
look ok? It has one additional case for absolute symbols.

Regards,
Gunther Nikl

+	  if (h->type == bfd_link_hash_common)
+	    {
+	      int skip = 0;
+
+	      switch (info->common_skip_ar_symbols)
+		{
+		case bfd_link_common_skip_none:
+		  break;
+		case bfd_link_common_skip_text:
+		  skip = p->section->flags & SEC_CODE ? 1 : 0;
+		  break; 
+		case bfd_link_common_skip_data:
+		  skip = p->section->flags & SEC_DATA ? 1 : 0;
+		  break;
+		case bfd_link_common_skip_abs:
+		  skip = bfd_is_abs_section (p->section) ? 1 : 0;
+		  break;
+		case bfd_link_common_skip_all:
+		  skip = 1;
+		  break;
+		}
+
+	      if (skip)
+		continue;
+	    }



More information about the Binutils mailing list