From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16854 invoked by alias); 30 Mar 2010 15:09:25 -0000 Received: (qmail 16829 invoked by uid 48); 30 Mar 2010 15:09:24 -0000 Date: Tue, 30 Mar 2010 15:09:00 -0000 Message-ID: <20100330150924.16828.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug libgcj/40860] [4.4/4.5 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-q1/txt/msg00187.txt.bz2 ------- Comment #30 from mikpe at it dot uu dot se 2010-03-30 15:09 ------- (In reply to comment #29) > Wouldn't it be better to just remove _Unwind_GetRegionStart? > This function is not part of the ARM EABI, and removing it would expose any > (already broken) users at compile time. No. First it'd break most of gcc since the c, c++, and objc unwinders use it. And they generally use it to provide a base address when interpreting LSDA and computing landing pad addresses. Second, all _Unwind_GetRegionStart does is give r/o access to the fnstart value in ARM's UCB. But ARM's own unwinder uses fnstart in __gnu_unwind_pr_common, so if fnstart is broken then so it ARM's unwinder. ARM's unwinder is in the same boat as the c/c++/objc ones. It works because .ARM.exidx merging is limited to immediate table data, but the code using fnstart (by luck or design) only runs when the table contains non-immediate data, and in those cases fnstart is accurate. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40860