Re: ARM Linux EABI: unwinding through a segfault handler
On 08/29/2011 06:13 PM, Daniel Jacobowitz wrote: > On Mon, Aug 29, 2011 at 11:18 AM, Ken Werner wrote: >> On 08/25/2011 02:26 PM, Andrew Haley wrote: >>> >>> Throwing an exception through a segfault handler doesn't always work >>> on ARM: the attached example fails on current gcc trunk. >>> >>> panda-9:~ $ g++ segv.cc -fnon-call-exceptions -g >>> panda-9:~ $ ./a.out >>> terminate called after throwing an instance of 'FoobarException*' >>> Aborted >>> >>> The bug is that _Unwind_GetIPInfo doesn't correctly set ip_before_insn. >>> Instead, it always sets it to zero; it should be set to 1 if this >>> is a frame created by a signal handler: >>> >>> >>> #define _Unwind_GetIPInfo(context, ip_before_insn) \ >>> (*ip_before_insn = 0, _Unwind_GetGR (context, 15)& ~(_Unwind_Word)1) >>> >>> >>> Fixing this on ARM is hard because signal frames aren't specially >>> marked as they are on systems that use DWARF unwinder data. I have >>> a patch that works on systems where the signal restorer is exactly >>> >>> mov r7, $SYS_rt_sigreturn >>> swi 0x0 >>> >>> It works as a proof of concept, but it's fugly. >>> >>> So, suggestions welcome. Is there a nice way to detect a signal frame? >> >> Libunwind also reads the IP to detect signal frames on ARM Linux: >> http://git.savannah.gnu.org/gitweb/?p=libunwind.git;a=blob;f=src/arm/Gis_signal_frame.c;hb=HEAD >> >> I'd also be interested if there are better approaches to detect them. :) > > There aren't better ways - this is pretty much the standard for > on-stack signal frames :-) > > I thought we used a handler in GLIBC that was properly annotated, > nowadays, but I might be mistaken. We don't for ARM, and indeed we can't. ARM unwind frames don't have any way of encoding the fact that they're signal frames or AFAICS of encoding the return address offset. Andrew.
Lodging Inquiry
Hello, My name is Mike Dane from M&G Investment International United states. I want to know if there is any availability for 5 guests who needs rooms, apartments and meal services if possible. They are coming for visit in your city. If there is availability, kindly let me know about the dates and the quotes. They are looking forward to Arrive on 4th of October 2011. The ONLY mode Of Payment is :Visa , Master or Amex Card. Write me immediately with an update on the list of all the services you can offer and available at that time. Call me anytime. Mr Mike Dane.
Lodging Inquiry
Hello, My name is Mike Dane from M&G Investment International United states. I want to know if there is any availability for 5 guests who needs rooms, apartments and meal services if possible. They are coming for visit in your city. If there is availability, kindly let me know about the dates and the quotes. They are looking forward to Arrive on 4th of October 2011. The ONLY mode Of Payment is :Visa , Master or Amex Card. Write me immediately with an update on the list of all the services you can offer and available at that time. Call me anytime. Mr Mike Dane.
Re: ARM Linux EABI: unwinding through a segfault handler
On Mon, 29 Aug 2011, Daniel Jacobowitz wrote: > I thought we used a handler in GLIBC that was properly annotated, > nowadays, but I might be mistaken. What we have in GLIBC is ports/sysdeps/unix/sysv/linux/arm/eabi/sigrestorer.S. Note that sigaction.c has to check the kernel version to determine which function to use because 2.6.18 changed the signal frame layout, not realising that it was part of the userspace ABI. -- Joseph S. Myers jos...@codesourcery.com
Re: question about GCC Quad-Precision Math Library
Dear Samuel, (I copy this email to the gcc@gcc.gnu.org list, as this is the home for discussions of this library.) You can't use the libquadmath library with an ANSI-C compiler. You need a compiler that supports the __float128 type and operations on it (such as multiplications, as you mention). Regards, FX > Francois, > > I have a question about the GCC Quad-Precision Math Library. > > Can I use this library with a regular ANSI-C compiler? > > I ask this question because I see in the code (power function) > that you multiply two 128-bit quad floats using the '*', and I > could not see how this would work. > > - > __float128 powq (__float128 x, __float128 y) > { > __float128 z, ax, z_h, z_l, p_h, p_l; > __float128 y1, t1, t2, r, s, t, u, v, w; > __float128 s2, s_h, s_l, t_h, t_l; > int32_t i, j, k, yisint, n; > uint32_t ix, iy; > int32_t hx, hy; > ieee854_float128 o, p, q; > ... > return s * z;// line 439 > - > > Regards, > Samuel Stewart > Scotch Plains, NJ
gcc-4.4-20110830 is now available
Snapshot gcc-4.4-20110830 is now available on ftp://gcc.gnu.org/pub/gcc/snapshots/4.4-20110830/ and on various mirrors, see http://gcc.gnu.org/mirrors.html for details. This snapshot has been generated from the GCC 4.4 SVN branch with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch revision 178345 You'll find: gcc-4.4-20110830.tar.bz2 Complete GCC MD5=61cfd745f362f3fa557d3a801e1db12f SHA1=3974a8fcdd9203fc78d7ff89d040d8b4f04b2ad0 Diffs from 4.4-20110823 are available in the diffs/ subdirectory. When a particular snapshot is ready for public consumption the LATEST-4.4 link is updated and a message is sent to the gcc list. Please do not use a snapshot before it has been announced that way.