[patch bfd]: Don't emit auxilary information for discared sections for pe-coff
Kai Tietz
ktietz70@googlemail.com
Fri Sep 30 08:00:00 GMT 2011
2011/9/29 Alan Modra <amodra@gmail.com>:
> On Thu, Sep 29, 2011 at 11:08:00AM +0200, Kai Tietz wrote:
>> > This hunk seems unnecessary, given that coff_write_alien_symbol calls
>> > coff_write_symbol.
>>
>> Well, the difference here is that for debugging-symbols don't discard
>> the name and are entering into string-table. Maybe we should set here
>> in this condition symbol->name = "";?
>
> Oh, I see. Ignore this comment of mine.
Hi Alan,
So, I reworked this patch as suggest by you to check for linker-flag
skip_discared.
Additionally I check now for any kind of discarded section, not only
linked once ones.
ChangeLog
2011-09-30 Kai Tietz <ktietz@redhat.com>
* coffgen.c (coff_write_alien_symbol): Don't write
symbol for discarded sections, if strip_discarded isn't
explicit set to false.
(coff_write_native_symbol): Likewise.
Regression tested for x86_64-w64-mingw32, i686-w64-mingw32, and
i686-pc-cygwin. Ok for apply?
Regards,
Kai
Index: coffgen.c
===================================================================
RCS file: /cvs/src/src/bfd/coffgen.c,v
retrieving revision 1.80
diff -u -r1.80 coffgen.c
--- coffgen.c 17 Aug 2011 00:39:39 -0000 1.80
+++ coffgen.c 30 Sep 2011 07:55:21 -0000
@@ -996,7 +996,15 @@
asection *output_section = symbol->section->output_section
? symbol->section->output_section
: symbol->section;
+ struct bfd_link_info *link_info = coff_data (abfd)->link_info;
+ if ((!link_info || link_info->strip_discarded)
+ && !bfd_is_abs_section (symbol->section)
+ && symbol->section->output_section == bfd_abs_section_ptr)
+ {
+ symbol->name = "";
+ return TRUE;
+ }
native = &dummy;
native->u.syment.n_type = T_NULL;
native->u.syment.n_flags = 0;
@@ -1061,6 +1069,15 @@
{
combined_entry_type *native = symbol->native;
alent *lineno = symbol->lineno;
+ struct bfd_link_info *link_info = coff_data (abfd)->link_info;
+
+ if ((!link_info || link_info->strip_discarded)
+ && !bfd_is_abs_section (symbol->symbol.section)
+ && symbol->symbol.section->output_section == bfd_abs_section_ptr)
+ {
+ symbol->symbol.name = "";
+ return TRUE;
+ }
/* If this symbol has an associated line number, we must store the
symbol index in the line number field. We also tag the auxent to
More information about the Binutils
mailing list