This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] Fix .cfi_* directive skip over >= 64KB (PR gas/10255)
On Tue, Jun 9, 2009 at 6:16 AM, Jakub Jelinek<jakub@redhat.com> wrote:
> On Tue, Jun 09, 2009 at 06:08:25AM -0700, H.J. Lu wrote:
>> On Tue, Jun 9, 2009 at 5:58 AM, Jakub Jelinek<jakub@redhat.com> wrote:
>> > On Tue, Jun 09, 2009 at 05:46:03AM -0700, H.J. Lu wrote:
>> >> Will this patch:
>> >>
>> >> Index: ehopt.c
>> >> ===================================================================
>> >> --- ehopt.c ? ? (revision 6057)
>> >> +++ ehopt.c ? ? (working copy)
>> >> @@ -543,6 +543,7 @@ eh_frame_convert_frag (fragS *frag)
>> >> ? ? ? ?break;
>> >>
>> >> ? ? ?default:
>> >> + ? ? ?loc4_frag->fr_literal[loc4_fix] = DW_CFA_advance_loc4;
>> >> ? ? ? ?md_number_to_chars (frag->fr_literal + frag->fr_fix, diff, 4);
>> >> ? ? ? ?break;
>> >> ? ? ?}
>> >>
>> >> work better?
>> >
>> > It will work too, but not sure why would it be considered better.
>> >
>>
>> We can avoid a memory write when DW_CFA_advance_loc4
>> isn't used.
>
> I don't think a memory write is something we should try hard to avoid, what
> matters how it is maintanable. ?IMHO leaving the fragment uninitialized
> is a bad idea, but doing what you wrote above in eh_frame_convert_frag
It is uninitialized because we don't know what we will put in there.
If we want to initialize it, I think it should be initialized to something
invalid and verify it is valid when we output it. Otherwise, initialize
it may still generate bad output.
--
H.J.