This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Gold: Do not emit locals from discard .eh_frame sections.


Thanks.  I made the suggested changes except I used ver_test_6.c
instead of basic_test.cc.  The crash was not reproducible with
basic_test.cc.

2009-06-05  Doug Kwan  <dougkwan@google.com>

        * object.cc (Sized_relobj::Sized_relobj): Initialize
        discarded_eh_frame_shndx_ to -1U.
        (Sized_relobj::do_layout): Record index of a discard .eh_frame
        section.
        (Sized_relobj::do_count_local_symbols): Skip local symbols in
        a discarded .eh_frame section.
        (Sized_relobj::do_finalize_local_symbols): Ditto.
        * object.h (class Sized_relobj): Declare new member
        discarded_eh_frame_shndx_.
        * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
        (local_labels_test.o, local_labels_test): New rules.
        * testsuite/Makefile.in: Regenerate.


-Doug

2009/6/5 Ian Lance Taylor <iant@google.com>:
> On Fri, Jun 5, 2009 at 8:31 AM, Ian Lance Taylor<iant@google.com> wrote:
>> "Doug Kwan (Ãö®¶¼w)" <dougkwan@google.com> writes:
>>
>>> 2009-06-04  Doug Kwan  <dougkwan@google.com>
>>>
>>>         * object.cc (Sized_relobj::Sized_relobj): Initialize
>>>         discarded_eh_frame_shndx_ to -1U.
>>>         (Sized_relobj::do_layout): Record index of a discard .eh_frame
>>>         section.
>>>         (Sized_relobj::do_count_local_symbols): Skip local symbols in
>>>         a discarded .eh_frame section.
>>>         (Sized_relobj::do_finalize_local_symbols): Ditto.
>>>         * object.h (class Sized_relobj): Declare new member
>>>         discarded_eh_frame_shndx_.
>>>         * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
>>>         (local_labels_test_SOURCE, local_labels_test_LDFLAGS): Define new.
>>>         (local_labels_test.o): New rule.
>>>         * testsuite/Makefile.in: Regenerate.
>>>         * testsuite/local_labels_test.cc: New file.
>>
>>
>>> +       // There can be at most one .eh_frame section per object.
>>> +       gold_assert(this->discarded_eh_frame_shndx_ == -1U);
>>> +       this->discarded_eh_frame_shndx_ = i;
>>> +       out_section_offsets[i] = invalid_address;
>>
>> Reading the comment literally makes the loop seem unnecessary.  Change
>> it to say "An object can contain at most one section holding exception
>> frame information."
>>
>>
>>> +  // If this object has a GNU sytle .eh_frame section that is discarded in
>>> +  // output, record the index here.  Otherwise it is -1U.
>>
>> s/sytle/style/
>>
>>
>>> +check_PROGRAMS += local_labels_test
>>> +local_labels_test_SOURCES = local_labels_test.cc
>>> +local_labels_test_LDFLAGS = -Bgcctestdir/
>>> +local_labels_test.o: local_labels_test.cc
>>> +     $(CXXCOMPILE) -g -c -Wa,--keep-locals -o $@ $<
>>
>> Use -L here instead of --keep-locals.  -L is supported by many
>> assemblers, --keep-locals is only supported by gas.  We may need to use
>> a configure test for this, but let's see if we can get away with -L.
>>
>> Instead of introducing a new nearly-empty .cc file, just have this test
>> compile basic_test.cc with the -L option.
>
>
> To be clear, this patch is OK with the above changes.
>
> Thanks.
>
> Ian
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]