public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug macros/9748] macros containing __extension__ won't run
[not found] <bug-9748-4717@http.sourceware.org/bugzilla/>
@ 2011-06-28 9:11 ` jan.kratochvil at redhat dot com
2013-03-04 18:13 ` tromey at redhat dot com
1 sibling, 0 replies; 6+ messages in thread
From: jan.kratochvil at redhat dot com @ 2011-06-28 9:11 UTC (permalink / raw)
To: gdb-prs
http://sourceware.org/bugzilla/show_bug.cgi?id=9748
Jan Kratochvil <jan.kratochvil at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jan.kratochvil at redhat
| |dot com
--- Comment #5 from Jan Kratochvil <jan.kratochvil at redhat dot com> 2011-06-28 09:10:38 UTC ---
*** Bug 12941 has been marked as a duplicate of this bug. ***
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug macros/9748] macros containing __extension__ won't run
[not found] <bug-9748-4717@http.sourceware.org/bugzilla/>
2011-06-28 9:11 ` [Bug macros/9748] macros containing __extension__ won't run jan.kratochvil at redhat dot com
@ 2013-03-04 18:13 ` tromey at redhat dot com
1 sibling, 0 replies; 6+ messages in thread
From: tromey at redhat dot com @ 2013-03-04 18:13 UTC (permalink / raw)
To: gdb-prs
http://sourceware.org/bugzilla/show_bug.cgi?id=9748
Tom Tromey <tromey at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |archer
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug macros/9748] macros containing __extension__ won't run
2009-01-15 21:06 [Bug macros/9748] New: " rearnsha at gcc dot gnu dot org
` (2 preceding siblings ...)
2009-01-15 23:39 ` pedro at codesourcery dot com
@ 2009-01-16 0:05 ` tromey at redhat dot com
3 siblings, 0 replies; 6+ messages in thread
From: tromey at redhat dot com @ 2009-01-16 0:05 UTC (permalink / raw)
To: gdb-prs
------- Additional Comments From tromey at redhat dot com 2009-01-16 00:05 -------
Occasionally I fantasize about putting the GCC (or clang) parsers into
gdb and having a C interpreter environment.
For the specific case of gcc, I put this into the incremental branch's
gcc/gdbinit.in:
# Redefine any macro from tree.h that uses a statement expression.
# Last in case of failure.
macro define TREE_CHECK(T, CODE) (T)
macro define TREE_NOT_CHECK(T, CODE) (T)
macro define TREE_CHECK2(T, CODE1, CODE2) (T)
macro define TREE_NOT_CHECK2(T, CODE1, CODE2) (T)
macro define TREE_CHECK3(T, CODE1, CODE2, CODE3) (T)
macro define TREE_NOT_CHECK3(T, CODE1, CODE2, CODE3) (T)
macro define TREE_CHECK4(T, CODE1, CODE2, CODE3, CODE4) (T)
macro define NON_TREE_CHECK4(T, CODE1, CODE2, CODE3, CODE4) (T)
macro define TREE_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) (T)
macro define TREE_NOT_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) (T)
macro define CONTAINS_STRUCT_CHECK(T, STRUCT) (T)
macro define TREE_CLASS_CHECK(T, CLASS) (T)
macro define TREE_RANGE_CHECK(T, CODE1, CODE2) (T)
macro define OMP_CLAUSE_SUBCODE_CHECK(T, CODE) (T)
macro define OMP_CLAUSE_RANGE_CHECK(T, CODE1, CODE2) (T)
macro define EXPR_CHECK(T) (T)
macro define GIMPLE_STMT_CHECK(T) (T)
macro define NON_TYPE_CHECK(T) (T)
macro define TREE_VEC_ELT_CHECK(T, I) ((T)->vec.a[I])
macro define PHI_NODE_ELT_CHECK(T, I) ((T)->phi.a[I])
macro define OMP_CLAUSE_ELT_CHECK(T, I) ((T)->omp_clause.ops[I])
macro define TREE_OPERAND_CHECK(T, I) ((T)->exp.operands[I])
macro define TREE_OPERAND_CHECK_CODE(T, CODE, I) ((T)->exp.operands[I])
macro define GIMPLE_STMT_OPERAND_CHECK(T, I) ((T)->gstmt.operands[I])
macro define TREE_RTL_OPERAND_CHECK(T, CODE, I) ((T)->exp.operands[I])
macro define TREE_CHAIN(NODE) ((T)->common.chain)
macro define TREE_TYPE(NODE) ((T)->common.type)
# Another handy one.
macro define __builtin_offsetof(T, F) ((int) &(((T *) 0)->F))
In fact, this is why I implemented "macro define" :-)
Perhaps this should go on gcc trunk at some point.
Defining __extension__ wouldn't be completely crazy.
Maybe we need "set lang gnuc".
--
What |Removed |Added
----------------------------------------------------------------------------
CC| |tromey at redhat dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=9748
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug macros/9748] macros containing __extension__ won't run
2009-01-15 21:06 [Bug macros/9748] New: " rearnsha at gcc dot gnu dot org
2009-01-15 21:30 ` [Bug macros/9748] " pedro at codesourcery dot com
2009-01-15 21:40 ` drow at false dot org
@ 2009-01-15 23:39 ` pedro at codesourcery dot com
2009-01-16 0:05 ` tromey at redhat dot com
3 siblings, 0 replies; 6+ messages in thread
From: pedro at codesourcery dot com @ 2009-01-15 23:39 UTC (permalink / raw)
To: gdb-prs
------- Additional Comments From pedro at codesourcery dot com 2009-01-15 23:39 -------
Subject: Re: macros containing __extension__ won't run
On Thursday 15 January 2009 21:40:25, drow at false dot org wrote:
> Also on statement expressions, which is what the __extension__ marker
> is for in the first place :-)
IIRC, the __extensions__ marker is for enabling
gnu-C-isms no matter the C dialect or e.g., if -pedantic is selected,
so it's for more things, but, yeah, missed that. :-)
> I don't think statement expressions are likely to be implemented in
> GDB. It currently has only a C expression parser, with no support for
> statements etc.
Stating the obvious, you can override the checked versions
in gdb expressions with:
(gdb) macro define TREE_CHECK(T, CODE) (T)
If wanting to retain the checking ability when called from gdb,
perhaps the best would be to still override the whole TREE_CHECK macro
with macro define, retaining close enough semantics. Say, add
something like this and similars to gcc:
const_tree
gdb_tree_check (const_tree __t, int code)
{
if (TREE_CODE (__t) != code)
tree_check_failed (__t, "<gdb>", 0, "<nofunction>", code); // or call some other variant
return __t;
}
And this in .gdbinit:
macro define TREE_CHECK(T, CODE) gdb_tree_check(T, CODE)
--
http://sourceware.org/bugzilla/show_bug.cgi?id=9748
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug macros/9748] macros containing __extension__ won't run
2009-01-15 21:06 [Bug macros/9748] New: " rearnsha at gcc dot gnu dot org
2009-01-15 21:30 ` [Bug macros/9748] " pedro at codesourcery dot com
@ 2009-01-15 21:40 ` drow at false dot org
2009-01-15 23:39 ` pedro at codesourcery dot com
2009-01-16 0:05 ` tromey at redhat dot com
3 siblings, 0 replies; 6+ messages in thread
From: drow at false dot org @ 2009-01-15 21:40 UTC (permalink / raw)
To: gdb-prs
------- Additional Comments From drow at false dot org 2009-01-15 21:40 -------
Subject: Re: macros containing __extension__ won't run
On Thu, Jan 15, 2009 at 09:30:06PM -0000, pedro at codesourcery dot com wrote:
> I current gdb mainline, you could try defining __extension__ to empty:
>
> (gdb) macro define __extension__
>
> ("macro define" was stubbed in yearlier versions of gdb, it
> has only recently been implemented)
>
> I guess you'd need to do the same for __FILE__, __LINE__, etc, but I
> think you'll trip on __typeof.
Also on statement expressions, which is what the __extension__ marker
is for in the first place :-)
I don't think statement expressions are likely to be implemented in
GDB. It currently has only a C expression parser, with no support for
statements etc.
--
http://sourceware.org/bugzilla/show_bug.cgi?id=9748
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug macros/9748] macros containing __extension__ won't run
2009-01-15 21:06 [Bug macros/9748] New: " rearnsha at gcc dot gnu dot org
@ 2009-01-15 21:30 ` pedro at codesourcery dot com
2009-01-15 21:40 ` drow at false dot org
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: pedro at codesourcery dot com @ 2009-01-15 21:30 UTC (permalink / raw)
To: gdb-prs
------- Additional Comments From pedro at codesourcery dot com 2009-01-15 21:30 -------
Subject: Re: New: macros containing __extension__ won't run
On Thursday 15 January 2009 21:06:26, rearnsha at gcc dot gnu dot org wrote:
> Consider a macro, such as the following (from GCC):
>
> #define TREE_CHECK(T, CODE) __extension__ ({ __typeof (T) const __t = (T); if
> (TREE_CODE (__t) != (CODE)) tree_check_failed (__t, __FILE__, __LINE__,
> __FUNCTION__, (CODE), 0); __t; })
>
> if the object containing the macro is compiled with -g3, then the definition is
> available to GDB, but this doesn't help much...
>
> (gdb) p TREE_CHECK (fntype, CALL_EXPR)
> No symbol "__extension__" in current context.
>
I current gdb mainline, you could try defining __extension__ to empty:
(gdb) macro define __extension__
("macro define" was stubbed in yearlier versions of gdb, it
has only recently been implemented)
I guess you'd need to do the same for __FILE__, __LINE__, etc, but I
think you'll trip on __typeof.
--
http://sourceware.org/bugzilla/show_bug.cgi?id=9748
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-03-04 18:13 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <bug-9748-4717@http.sourceware.org/bugzilla/>
2011-06-28 9:11 ` [Bug macros/9748] macros containing __extension__ won't run jan.kratochvil at redhat dot com
2013-03-04 18:13 ` tromey at redhat dot com
2009-01-15 21:06 [Bug macros/9748] New: " rearnsha at gcc dot gnu dot org
2009-01-15 21:30 ` [Bug macros/9748] " pedro at codesourcery dot com
2009-01-15 21:40 ` drow at false dot org
2009-01-15 23:39 ` pedro at codesourcery dot com
2009-01-16 0:05 ` tromey at redhat dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).