[cfe-dev] core dump, how to best investigate
Jeroen Ruigrok van der Werven
asmodai at in-nomine.org
Tue Jul 24 06:40:00 PDT 2007
-On [20070724 14:04], Jeroen Ruigrok van der Werven (asmodai at in-nomine.org) wrote:
>#1 0x081d94d7 in clang::Sema::ParseUnaryOp (this=0x831b880, OpLoc=
> {ID = 2148130816}, Op=clang::tok::kw___extension__, input=0x0)
> at SemaExpr.cpp:1455
>#2 0x081f7c40 in clang::Parser::ParseCastExpression (this=0x831b800,
> isUnaryExpression=false) at ParseExpr.cpp:546
So ParseUnaryOp() has an input which is empty and as such resultType =
Input->getType(); fails.
ParseCastExpression() is executing:
Res = Actions.ParseUnaryOp(SavedLoc, SavedKind, Res.Val);
which has to mean that Res.Val is empty:
(gdb) print Res.Val
$1 = (void *) 0x0
It seems to come from including unistd.h on FreeBSD, which includes
sys/types.h, which includes machine/endian.h which results in:
[15:37] [asmodai at nexus] (1125) {0} % clang /usr/include/machine/endian.h
/usr/include/machine/endian.h:146:10: warning: expression result unused
return (__byte_swap_int(_x));
^~~~~~~~~~~~~~~
zsh: segmentation fault (core dumped) clang /usr/include/machine/endian.h
Relevant part of the source file:
#define __byte_swap_int_var(x) \
__extension__ ({ register __uint32_t __X = (x); \
__asm ("bswap %0" : "+r" (__X)); \
__X; })
And looking at Parse/ParseExpr.cpp line 542 this seems expected:
// FIXME: Extension not handled correctly here!
--
Jeroen Ruigrok van der Werven <asmodai(-at-)in-nomine.org> / asmodai
イェルーン ラウフロック ヴァン デル ウェルヴェン
http://www.in-nomine.org/ | http://www.rangaku.org/
To give your sheep or cow a large spacious meadow is the way to control him...
More information about the cfe-dev
mailing list