This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libgcj/40860] [4.4/4.5 regression] regressions in libjava testsuite on arm-linux
- From: "mikpe at it dot uu dot se" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Mar 2010 15:09:24 -0000
- Subject: [Bug libgcj/40860] [4.4/4.5 regression] regressions in libjava testsuite on arm-linux
- References: <bug-40860-5724@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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