From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14713 invoked by alias); 4 Feb 2003 03:20:17 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 14706 invoked from network); 4 Feb 2003 03:20:16 -0000 Received: from unknown (HELO mail-out1.apple.com) (17.254.0.52) by 172.16.49.205 with SMTP; 4 Feb 2003 03:20:16 -0000 Received: from mailgate1.apple.com (A17-128-100-225.apple.com [17.128.100.225]) by mail-out1.apple.com (8.11.3/8.11.3) with ESMTP id h143KF100316 for ; Mon, 3 Feb 2003 19:20:15 -0800 (PST) Received: from scv1.apple.com (scv1.apple.com) by mailgate1.apple.com (Content Technologies SMTPRS 4.2.5) with ESMTP id for ; Mon, 3 Feb 2003 19:20:15 -0800 Received: from apple.com (goldte2.apple.com [17.201.21.105]) by scv1.apple.com (8.11.3/8.11.3) with ESMTP id h143KFs19733; Mon, 3 Feb 2003 19:20:15 -0800 (PST) Date: Tue, 04 Feb 2003 03:20:00 -0000 Subject: Symbol Separation Content-Type: text/plain; charset=US-ASCII; format=flowed Mime-Version: 1.0 (Apple Message framework v551) Cc: Devang Patel To: gcc@gcc.gnu.org From: Devang Patel Content-Transfer-Encoding: 7bit Message-Id: <93D25026-37EF-11D7-9DD9-0003935AAA26@apple.com> X-SW-Source: 2003-02/txt/msg00170.txt.bz2 If one header is included in multiple source files then GCC adds debugging information for that header in all .o files. After that it becomes linker's responsibility to remove duplicate info to avoid final binary image bloat. When build time becomes a major issue, this scheme has drawbacks: - GCC does lots of redundant work in generating same information in multiple .o files - Time to link is significantly affected and it becomes huge part of incremental build. On system like Mac OS X, where almost every source file includes one or more large framework headers, this issue requires some attention. To address this, I am implementing a scheme we have named as "Symbol Separation". Basic idea is to store debugging information for header in separate .o file and GCC makes decision about header by consulting availability of separate .o file. If available then GCC will turn of debugging information for particular header while compiling source file. It is build system's responsibility to provide extra .o file with only debugging information to linker. I have first cut of implementation ready and I wanted to know if people would be interested in it. It works with STABS, because that's what GCC uses on Mac OS X. If require, I can send detailed document about Symbol Separation. -Devang