From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21041 invoked by alias); 8 Apr 2010 12:14:13 -0000 Received: (qmail 21019 invoked by uid 48); 8 Apr 2010 12:14:13 -0000 Date: Thu, 08 Apr 2010 12:14:00 -0000 Message-ID: <20100408121413.21018.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug libgcj/40860] [4.4/4.5/4.6 regression] regressions in libjava testsuite on arm-linux In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: java-prs@gcc.gnu.org From: "mikpe at it dot uu dot se" Mailing-List: contact java-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: java-prs-owner@gcc.gnu.org X-SW-Source: 2010-q2/txt/msg00000.txt.bz2 ------- Comment #33 from mikpe at it dot uu dot se 2010-04-08 12:14 ------- Created an attachment (id=20333) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20333&action=view) eliminate use of _Unwind_GetRegionStart on ARM, part 1 Here's a preliminary patch to eliminate the functional dependency on _Unwind_GetRegionStart on ARM. There are two key changes: output_function_exception_table outputs a proper @LPStart pointer in each LSDA blob, and every PR's parse_lsda_header sets @Start to @LPstart if @Start is NULL. Without these updates making _Unwind_GetRegionStart return NULL on ARM causes massive regressions in the c++/objc/obj-c++ test suites, and some in the c and libffi test suites. With these updates those regressions are eliminated. There are however two new regressions: 1. There are several orders of magnitude more alignment exceptions during the test suite run, probably in the read_encoded_value calls that now trigger. 2. For initial testing I ran this on i686 with its _Unwind_GetRegionStart made to return NULL too, and while it worked the g++.old-deja/g++.law/weak.C test case failed with a linkage error. It looks like gcc emitted exception table data for a discarded piece of code. On my ARM box the test suite considered that test case UNSUPPORTED so never ran it. The first regression can probably be fixed by avoiding to define unneeded @LPStart pointers and making read_encoded_value mis-alignment safe. The second regression might be fixable by making the @LPStart symbol references weak. More fixes will be needed for libjava's stacktrace mess though. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40860