All of lore.kernel.org
 help / color / mirror / Atom feed
From: "H . J . Lu" <hjl@lucon.org>
To: Ian Lance Taylor <ian@zembu.com>
Cc: gcc@gcc.gnu.org, binutils@sourceware.cygnus.com, linux-mips@oss.sgi.com
Subject: Re: DWARF2 exception doesn't work with gcc and gas on MIPS.
Date: Wed, 13 Jun 2001 23:23:06 -0700	[thread overview]
Message-ID: <20010613232306.A24354@lucon.org> (raw)
In-Reply-To: <sir8wnvcch.fsf@daffy.airs.com>; from ian@zembu.com on Wed, Jun 13, 2001 at 10:50:54PM -0700

On Wed, Jun 13, 2001 at 10:50:54PM -0700, Ian Lance Taylor wrote:
> "H . J . Lu" <hjl@lucon.org> writes:
> 
> > In the MIPS gas, there is
> > 
> >     case M_JAL_A:
> 
> Not the relevant bit of code, not that it matters much.  The
> instruction
>       jal     $31,$25
> will be handled by the M_JAL_1 case in gas/config/tc-mips.c.
> 
> > Does anyone have any suggestions how to fix it?
> 
> Traditional MIPS assemblers try to make life easier by doing this sort
> of translation.  Modern MIPS compilers sidestep the translation
> because they can do better.  In this case gcc evidently needs to do
> better in order to makes it exception handling model work.  gcc should
> generate a jalr instruction, and should restore the GP register
> itself.
> 
> (I suppose that it would be theoretically possible for gas to
> recognize labels of the special form $LEHEn.  But that seems quite
> dreadful and quite fragile.)

The more I look at the problem, the more I doubt DAWRF2 exception will
ever work with the SVR4 MIPS ABI without the full support from gcc. The
problem is GP is a caller saved register in the SVR4 MIPS ABI. So every
caller has to do

	call foo
	restore gp

Given a piece of C++ code:

  try
    {
      foo (...);
      .....
    }
  catch (...)
    {
    }

When foo () throws an exception, it is gcc who has to make sure that
GP gets properly restored. Is there a way to teach the gcc exception
code that GP is a caller saved register?

BTW, in IRIX 6, GP is changed to callee saved so that it is not a
problem. 


H.J.

  parent reply	other threads:[~2001-06-14  6:23 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-06-14  4:29 DWARF2 exception doesn't work with gcc and gas on MIPS H . J . Lu
2001-06-14  5:50 ` Ian Lance Taylor
2001-06-14  5:53   ` Ian Lance Taylor
2001-06-14  6:23   ` H . J . Lu [this message]
2001-06-14 17:19 ` Richard Henderson
2001-06-14 18:41   ` H . J . Lu
2001-06-14 19:05     ` Richard Henderson
2001-06-14 19:25       ` H . J . Lu
2001-06-14 19:42         ` Richard Henderson
2001-06-14 19:55           ` H . J . Lu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20010613232306.A24354@lucon.org \
    --to=hjl@lucon.org \
    --cc=binutils@sourceware.cygnus.com \
    --cc=gcc@gcc.gnu.org \
    --cc=ian@zembu.com \
    --cc=linux-mips@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.