This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


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

Re: egcs build failure on NetBSD/i386 1.3


I have looked some into this problem, but I don't have the time to fix it.
But here is my analysis, in case someone want to do the work.

The problem is that 'gengenrtl' compiled with the compiler from stage 1
dumps core. The culprit is the change:

  Mon Mar  2 22:59:28 1998  J"orn Rennecke <amylaar@cygnus.co.uk>

        * final.c (insn_last_address, insn_current_align, uid_align):
        New variables.
        (in_align_chain, align_fuzz, align_shrink_fuzz): New functions.
        (insn_current_reference_address): Likewise.
        (shorten_branches, final_scan_insn): Implement LABEL_ALIGN,
        LABEL_ALIGN_AFTER_BARRIER and LOOP_ALIGN target macros.
        (label_to_alignment): New function.
        * genattrtab.c (write_test_expr): If one of LABEL_ALIGN,
        LABEL_ALIGN_AFTER_BARRIER or LOOP_ALIGN is defined, call
        insn_current_reference_address instead of insn_current_address.
        (or_attr_value, write_length_unit_log): New functions.
        (main): Call write_length_unit_log.
        (write_const_num_delay_slots): Output extra '\n'.
        * alpha.h (ASM_OUTPUT_LOOP_ALIGN, ASM_OUTPUT_ALIGN_CODE):
        replace with:
        (LOOP_ALIGN, ALIGN_LABEL_AFTER_BARRIER).
        * i386.h, i386/osfrose.h, i386/svr3dbx.h, m68k.h, sparc.h:
Likewise.
        * arc.h, m32r.h (ASM_OUTPUT_LOOP_ALIGN): replace with:
        (LOOP_ALIGN).
        * i960.h, m88k.h: (ASM_OUTPUT_ALIGN_CODE): Replace with:
        (LABEL_ALIGN_AFTER_BARRIER).
        * ns32k/encore.h, ns32k/merlin.h, ns32k.h, ns32k/sequent.h:
Likewise.
        * ns32k/tek6000.h: Likewise.
        * i386/gas.h (ASM_OUTPUT_LOOP_ALIGN, ASM_OUTPUT_ALIGN_CODE):
Delete.
        * i386.md (casesi+1): Use ASM_OUTPUT_ALIGN instead of
        ASM_OUTPUT_ALIGN_CODE.

I'm not really sure what it does, but at lest one effect is that lots of
lines that before was '.align 2,0x90' now becomes '.align 2'. This causes
problems for NetBSD since it uses a.out, and gas treat .align slightly 
different for a.out and elf. For a.out 'align 2' means that the 2 least 
significant bits must be 0, i.e an alignment of 4 bytes, so it's possible
that the .align in code like

           cmpb $0,(%ebx)
           je L59
           .align 2
   L61:
           .stabd 68,0,162
           cmpb $48,(%ebx)

produce output. And it's now 0 instead of 0x90 (nop).

   /Krister




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