From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1017 invoked by alias); 8 Mar 2003 14:26:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 956 invoked by uid 71); 8 Mar 2003 14:26:01 -0000 Resent-Date: 8 Mar 2003 14:26:01 -0000 Resent-Message-ID: <20030308142601.955.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, werner@almesberger.net Received: (qmail 32748 invoked from network); 8 Mar 2003 14:21:32 -0000 Received: from unknown (HELO host.almesberger.net) (63.105.73.239) by 172.16.49.205 with SMTP; 8 Mar 2003 14:21:32 -0000 Received: from almesberger.net (vpnwa-home [10.200.0.2]) by host.almesberger.net (8.11.6/8.9.3) with ESMTP id h28ELRc27578 for ; Sat, 8 Mar 2003 06:21:28 -0800 Received: (from werner@localhost) by almesberger.net (8.11.6/8.11.6) id h28ELPn26726; Sat, 8 Mar 2003 11:21:25 -0300 Message-Id: <200303081421.h28ELPn26726@almesberger.net> Date: Sat, 08 Mar 2003 14:26:00 -0000 From: werner@almesberger.net To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: 3.113 Subject: debug/10002: gcc -g sometimes places labels beyond the end of the function X-SW-Source: 2003-03/txt/msg00400.txt.bz2 List-Id: >Number: 10002 >Category: debug >Synopsis: gcc -g sometimes places labels beyond the end of the function >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Mar 08 14:26:01 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Werner Almesberger >Release: 3.3 20030303 (prerelease) >Organization: >Environment: System: Linux ar 2.4.18 #5 Mon Mar 18 09:25:24 ART 2002 i686 unknown Architecture: i686 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ./configure --prefix=/usr/local/gcc20030303/ --enable-languages=c >Description: gcc -g sometimes places labels beyond the end of the function, so a breakpoint at such a label is never taken. This seems to happen consistently if the function is void. >How-To-Repeat: Example (with Red Hat's gcc 3.1 20011127 on ia32): $ cat <foo.c void main(void) { label: return; } EOF $ gcc -w -g foo.c $ readelf -w a.out ... DW_AT_name : (indirect string, offset: 0x50): label ... DW_AT_low_pc : 0x80483aa 134513578 ... $ objdump -d a.out ... 08048398
: ... 80483a8: c9 leave 80483a9: c3 ret 80483aa: 89 f6 mov %esi,%esi ... >Fix: My very ugly work-around is to add an asm("") after the label. >Release-Note: >Audit-Trail: >Unformatted: