[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [cfe-dev] LLVM / Clang 3.0 rc1 Binaries Available
From: |
Richard Frith-Macdonald |
Subject: |
Re: [cfe-dev] LLVM / Clang 3.0 rc1 Binaries Available |
Date: |
Fri, 28 Oct 2011 05:51:35 +0100 |
On 27 Oct 2011, at 12:33, David Chisnall wrote:
> On 27 Oct 2011, at 09:14, Richard Frith-Macdonald wrote:
>
>> Is this the compiler passing the wrong value, or possibly something wrong in
>> the objc library?
>
> Neither - this is the correct behaviour. That method doesn't exist, and
> trying to call it is supposed to throw an exception. The problem is not that
> the exception is thrown, it is that it is not caught.
Ah ... I guess I was fooled by gdb reporting a nil receiver in the method
lookup callback in base.
> This means that either:
>
> - There is a bug in libobjc2's exception handling, or
> - One of your stack frames does not have unwind information.
>
> One of the bug changes that LLVM 3.0 made over 2.9 was to emit .cfi*
> directives in the assembler, instead of emitting the unwind tables directly.
> Do you get any warnings from the assembler about unknown directives when you
> compile?
No.
Though there is a clang bug causing spurious warnings about unused options
cluttering the output ("clang: warning: argument unused during compilation:
'-fexec-charset=UTF-8'", "clang: warning: argument unused during compilation:
'-shared-libgcc'" etc). I think that's pretty harmless though, just annoying,
and likely nothing to do with this issue.
> Do simple @throw / @catch tests pass for you?
Yes ... the gnustep-base NSException tests pass.
> What about C++ exceptions (Sebastian - did you check that on OpenBSD?)
Yes ... the mixedException.mm tests pass.