egcs build failure on NetBSD/i386 1.3
Krister Walfridsson
cato@df.lth.se
Sat Mar 14 11:34:00 GMT 1998
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
More information about the Gcc-bugs
mailing list