From owner-freebsd-hackers Mon Mar 22 8: 1: 8 1999 Delivered-To: freebsd-hackers@freebsd.org Received: from plunger.gdeb.com (plunger.gdeb.com [153.11.11.3]) by hub.freebsd.org (Postfix) with ESMTP id 761B514D5C for ; Mon, 22 Mar 1999 08:00:56 -0800 (PST) (envelope-from eischen@vigrid.com) Received: from orion.caen.gdeb.com ([153.11.109.11]) by plunger.gdeb.com (8.9.1a/8.9.1/CSC-E_4.1) with ESMTP id KAA16849; Mon, 22 Mar 1999 10:57:33 -0500 (EST) Received: from clcrtr.clc.gdeb.com (clcrtr [153.11.109.129]) by orion.caen.gdeb.com (8.8.8/8.8.8) with SMTP id KAA07152; Mon, 22 Mar 1999 10:59:43 -0500 (EST) (envelope-from eischen@vigrid.com) Message-ID: <36F668EE.2781E494@vigrid.com> Date: Mon, 22 Mar 1999 10:59:42 -0500 From: "Daniel M. Eischen" X-Mailer: Mozilla 3.0Gold (X11; I; FreeBSD 2.2.7-STABLE i386) MIME-Version: 1.0 To: freebsd-hackers@FreeBSD.org Subject: Fatal GCC error found Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I found something that causes a fatal GCC bug. This is with both the stock FreeBSD gcc and the port for gcc-28. This can be reproduced by building the Ada-aware GDB port found at: ftp://ftp.pcnet.com/users/eischen/FreeBSD/adagdb-4.17-port.tar.gz and building with 'make EXPOSE_FATAL_GCC_ERROR=yes'. If you don't define EXPOSE_FATAL_GCC_ERROR, a work-around patch is applied and the port successfully builds. For anyone interested in tracking this down, here's how it aborts: cc -c -O -pipe -DFREEBSD_ELF -I. -I. -I./config -DHAVE_CONFIG_H \ -I./../include/opcode -I./../readline -I../bfd -I./../bfd -I./../include \ ada-lang.c ada-lang.c: In function `ada_evaluate_subexp': ada-lang.c:5951: internal error--insn does not satisfy its constraints: (insn 2997 2996 4542 (parallel[ (set (reg:DI 1 %edx) (minus:DI (reg:DI 0 %eax) (reg/v:DI 3 %ebx))) (clobber (scratch:SI)) ] ) 135 {subdi3} (insn_list 2982 (insn_list 2994 (nil))) (expr_list:REG_DEAD (mem:DI (plus:SI (reg:SI 6 %ebp) (const_int -64))) (expr_list:REG_DEAD (reg/v:DI 3 %ebx) (expr_list:REG_UNUSED (scratch:SI) (nil))))) cc: Internal compiler error: program cc1 got fatal signal 6 *** Error code 1 The fix to this is to change 2 ocurrences of the following line: (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1); to (*pos) = (*pos) + 3 + BYTES_TO_EXP_ELEM (tem + 1); If someone knows how to fix this, please let me know. I'm going to file a PR on this later tonight. Dan Eischen eischen@vigrid.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message