From owner-cvs-src@FreeBSD.ORG Thu Mar 31 11:35:56 2005 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9BB1A16A4CE; Thu, 31 Mar 2005 11:35:56 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7AADF43D64; Thu, 31 Mar 2005 11:35:56 +0000 (GMT) (envelope-from harti@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j2VBZuML023661; Thu, 31 Mar 2005 11:35:56 GMT (envelope-from harti@repoman.freebsd.org) Received: (from harti@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j2VBZu5q023660; Thu, 31 Mar 2005 11:35:56 GMT (envelope-from harti) Message-Id: <200503311135.j2VBZu5q023660@repoman.freebsd.org> From: Hartmut Brandt Date: Thu, 31 Mar 2005 11:35:56 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/usr.bin/make arch.c arch.h main.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Mar 2005 11:35:56 -0000 harti 2005-03-31 11:35:56 UTC FreeBSD src repository Modified files: usr.bin/make arch.c arch.h main.c Log: Almost complete rewrite of the archive code (except for the Makefile parsing part). Archive handling was broken at least since the move from BSD ar/ranlib to GNU binutils because of the different archive format. This rewrite fixes this by making make to carry around the defines for all formats (it supports) so it can support all of them independent of the actually used one. The supported formats are: traditional BSD (this seems to come from V7 at least, short names only and __.SYMDEF), BSD4.4 (long names with #1/ and __.SYMDEF) and SysV (extra name table and //). The only format not supported are broken traditional archives where the member names are truncated to 15 characters. Errors in the archive are not ignored anymore, but cause make to stop with an error message. The command line option -A causes these errors to become non-fatal. This is almost compatible with previous usage except for the error message printed in any case. Use a type-safe intrusive list for the archive cache. Reviewed by: Max Okumoto (without new error handling) Revision Changes Path 1.61 +491 -428 src/usr.bin/make/arch.c 1.3 +3 -1 src/usr.bin/make/arch.h 1.130 +7 -3 src/usr.bin/make/main.c