This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] [BFD] Fix override of COMMON symbols for a.out
- From: Gunther Nikl <gnikl at users dot sourceforge dot net>
- To: Alan Modra <amodra at gmail dot com>
- Cc: binutils at sourceware dot org, Nick Clifton <nickc at redhat dot com>
- Date: Fri, 19 Jan 2018 22:07:40 +0100
- Subject: Re: [PATCH] [BFD] Fix override of COMMON symbols for a.out
- Authentication-results: sourceware.org; auth=none
- References: <20180111195454.00001ef7@baltic.net> <20180112105043.GO20622@bubble.grove.modra.org>
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;
+ }