thx Gang!
Can you add the proposed changes to your vers...@sl and see if it
affects the code for you?
Sun

On Fri, Nov 19, 2010 at 9:23 AM, Gang Yu <yugang...@gmail.com> wrote:
> It looks ok in SL.
>
>         .section .bss
>         .org 0x0
>         .align  0
>         .type   line3, @object
>         .size   line3, 1
> line3:  # 0x0
>         .skip 1
>         .org 0x1
>         .align  0
>         .type   line4, @object
>         .size   line4, 1
> line4:  # 0x1
>
>
> Gang
>
>
> On Fri, Nov 19, 2010 at 12:04 AM, Sun Chan <sun.c...@gmail.com> wrote:
>>
>> this problem is too simple to be wrong, makes me think something
>> really bad has happened. Can someone try the case for a different
>> target (such as IA64, SL, Mips ...?)
>> I'd like to know why this fails with a broader code fragment for review.
>>
>> Mike,
>> What do you think?
>>
>> Sun
>>
>> On Thu, Nov 18, 2010 at 5:41 PM, 朱庆 <zqing1...@gmail.com> wrote:
>> > Hi, All
>> >
>> > Can gatekeeper help review this fix?
>> >
>> > Case a.c:
>> > struct line { char a[0];};
>> > static struct line line3;
>> > static struct line line4;
>> > static const char a[3]={0,1,2};
>> > int main()
>> > {
>> > return 0;
>> > }
>> >
>> > The feature of the case is: at least two global var in .bss section and
>> > the
>> > type size of them is 0, then a var in .rodata or .data.rel.ro.local
>> > section.
>> >
>> > $opencc -O0 a.c -keep
>> > a.s: Assembler messages:
>> > a.s:65: Error: attempt to move .org backwards
>> >
>> > $cat a.s
>> >      19         .text
>> >      20         .align  2
>> >      21
>> >      22         .section .bss, "wa",@nobits
>> >      23
>> >      24         .section .rodata, "a",@progbits
>> >      25         .type   line3, @object
>> >      26         .size   line3, 1
>> >      27 line3:  # 0x0
>> >      28         .skip 16
>> >      29         .type   line4, @object
>> >      30         .size   line4, 1
>> >      31 line4:  # 0x10
>> > ....
>> >      63
>> >      64         .section .rodata
>> >      65         .org 0x0
>> >      66         .align  0
>> >      67         .type   a, @object
>> >      68         .size   a, 3
>> >      69 a:      # 0x0
>> >      70         # offset 0
>> >      71         .byte   0
>> >      72         # offset 1
>> >      73         .byte   1
>> >      74         # offset 2
>> >      75         .byte   2
>> >      76         # end of initialization for a
>> >
>> > Apperently, line25-31, should be in section .bss, so there is missing
>> > section name emit. To fix the problem, there are many
>> > methods(cgemit.cxx):
>> > 1. change all size from 0 to 1 like C++ empty calss
>> >    8090         size = TY_size(ST_type(sym));
>> >    8091         // C++ requires empty classes to have unique addresses.
>> >    8092         if (size == 0 && (pu == NULL || PU_cxx_lang(*pu)/*bug
>> > 13826*/))
>> >    8093           size = 1;
>> > 2. remove the "size!=0"  from the branch
>> >    8122           if (!has_named_section && size != 0) {
>> >    8123             Change_Section_Origin (base, ofst);
>> >    8124             if ( !Simd_Reallocate_Objects ) {
>> >    8125               // If Simd_Reallocate_Objects, we already emitted
>> > alignment
>> >    8126               // inside Change_Section_Origin - may be screwed
>> > up
>> > but we did
>> > 3. add emit for section name:
>> > patch:
>> > Index: osprey/be/cg/cgemit.cxx
>> > ===================================================================
>> > --- osprey/be/cg/cgemit.cxx     (revision 3403)
>> > +++ osprey/be/cg/cgemit.cxx     (working copy)
>> > @@ -8167,8 +8167,13 @@
>> >                 size = TY_size(ST_type(sym));
>> >  #ifdef KEY
>> >                 // C++ requires empty classes to have unique addresses.
>> > -               if (size == 0)
>> > +               if (size == 0) {
>> > +                  if (base != cur_section) {
>> > +                    fprintf ( Asm_File, "\n\t%s %s\n", AS_SECTION,
>> > ST_name(base));
>> > +                    cur_section = base;
>> > +                  }
>> >                   Print_Label (Asm_File, sym, 1);
>> > +                }
>> >                 else
>> >  #endif
>> >                 Print_Label (Asm_File, sym, size);
>> >
>> > I prefer the last one, are there any other suggestions?
>> >
>> >
>> > Best Regards,
>> > Zhu Qing
>> >
>> > ------------------------------------------------------------------------------
>> > Beautiful is writing same markup. Internet Explorer 9 supports
>> > standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
>> > Spend less time writing and  rewriting code and more time creating great
>> > experiences on the web. Be a part of the beta today
>> > http://p.sf.net/sfu/msIE9-sfdev2dev
>> > _______________________________________________
>> > Open64-devel mailing list
>> > Open64-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/open64-devel
>> >
>> >
>>
>> ------------------------------------------------------------------------------
>> Beautiful is writing same markup. Internet Explorer 9 supports
>> standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
>> Spend less time writing and  rewriting code and more time creating great
>> experiences on the web. Be a part of the beta today
>> http://p.sf.net/sfu/msIE9-sfdev2dev
>> _______________________________________________
>> Open64-devel mailing list
>> Open64-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>
>
------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today
http://p.sf.net/sfu/msIE9-sfdev2dev
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to