# New Ticket Created by "Senaka Fernando"
# Please include the string: [perl #52854]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=52854 >
The build of Parrot fails with g++, which is a possible indication that it
fails on other C++ compilers too. I have attached herewith patches to some
issues. However, I still get this error once I start with the build.
Compiling with:
xx.c
g++ -I./include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN
-pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-DHASATTRIBUTE_CONST -DHASATTRIBUTE_DEPRECATED -DHASATTRIBUTE_MALLOC
-DHASATTRIBUTE_NONNULL -DHASATTRIBUTE_NORETURN -DHASATTRIBUTE_PURE
-DHASATTRIBUTE_UNUSED -DHASATTRIBUTE_WARN_UNUSED_RESULT -falign-functions=16
-fvisibility=hidden -maccumulate-outgoing-args -W -Wall -Waggregate-return
-Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment -Wdisabled-optimization
-Wendif-labels -Wextra -Wformat -Wformat-extra-args -Wformat-nonliteral
-Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline
-Winvalid-pch -Wmissing-braces -Wmissing-field-initializers
-Wno-missing-format-attribute -Wmissing-include-dirs -Wpacked -Wparentheses
-Wpointer-arith -Wreturn-type -Wsequence-point -Wno-shadow -Wsign-compare
-Wstrict-aliasing -Wstrict-aliasing=2 -Wswitch -Wswitch-default -Wtrigraphs
-Wundef -Wunknown-pragmas -Wno-unused -Wvariadic-macros -Wwrite-strings
-DHAS_GETTEXT -g -DHAS_JIT -DI386 -DHAVE_COMPUTED_GOTO -fPIC -I. -o xx.o -c
xx.c
src/pmc/bigint.c
/usr/include/libintl.h:83: error: expected unqualified-id before 'throw'
/usr/include/libintl.h:83: error: expected initializer before 'throw'
/usr/include/libintl.h:87: error: expected unqualified-id before 'throw'
/usr/include/libintl.h:87: error: expected initializer before 'throw'
make: *** [src/pmc/bigint.o] Error 1
This error didn't come up with a check out I took around two weeks back, but
with the latest svn up it does. Wondering what this could be.
Regards,
Senaka
Index: src/pmc/role.pmc
===================================================================
--- src/pmc/role.pmc (revision 26955)
+++ src/pmc/role.pmc (working copy)
@@ -432,7 +432,7 @@
PMC * const metadata = pmc_new(interp, enum_class_Hash);
STRING * const name = CONST_STRING(interp, "name");
- STRING * const namespace = CONST_STRING(interp, "namespace");
+ STRING * const _namespace = CONST_STRING(interp, "namespace");
STRING * const attributes = CONST_STRING(interp, "attributes");
STRING * const methods = CONST_STRING(interp, "methods");
STRING * const roles = CONST_STRING(interp, "roles");
@@ -440,8 +440,8 @@
VTABLE_set_pmc_keyed_str(interp, metadata, name,
VTABLE_inspect_str(interp, SELF, name));
- VTABLE_set_pmc_keyed_str(interp, metadata, namespace,
- VTABLE_inspect_str(interp, SELF, namespace));
+ VTABLE_set_pmc_keyed_str(interp, metadata, _namespace,
+ VTABLE_inspect_str(interp, SELF, _namespace));
VTABLE_set_pmc_keyed_str(interp, metadata, attributes,
VTABLE_inspect_str(interp, SELF, attributes));
Index: src/pmc/object.pmc
===================================================================
--- src/pmc/object.pmc (revision 26955)
+++ src/pmc/object.pmc (working copy)
@@ -541,8 +541,8 @@
*/
VTABLE INTVAL type() {
- PMC *class = VTABLE_get_class(interp, SELF);
- return VTABLE_type(interp, class);
+ PMC *_class = VTABLE_get_class(interp, SELF);
+ return VTABLE_type(interp, _class);
}
/*
Index: src/pmc/sub.pmc
===================================================================
--- src/pmc/sub.pmc (revision 26955)
+++ src/pmc/sub.pmc (working copy)
@@ -743,8 +743,8 @@
METHOD get_namespace() {
Parrot_sub * const sub = PMC_sub(SELF);
- PMC *namespace = sub->namespace_stash;
- RETURN(PMC *namespace);
+ PMC *_namespace = sub->namespace_stash;
+ RETURN(PMC *_namespace);
}
METHOD __get_regs_used(STRING *reg) {
Index: src/jit/i386/jit_emit.h
===================================================================
--- src/jit/i386/jit_emit.h (revision 26955)
+++ src/jit/i386/jit_emit.h (working copy)
@@ -1722,7 +1722,7 @@
Parrot_jit_emit_get_INTERP(interp, pc, emit_ECX);
emitm_pushl_r(pc, emit_ECX);
jit_info->native_ptr = pc;
- call_func(jit_info, real_exception);
+ call_func(jit_info, (void *)real_exception);
pc = jit_info->native_ptr;
/* L1: */
L1[1] = (char)(pc - L1 - 2);
@@ -1761,7 +1761,7 @@
Parrot_jit_emit_get_INTERP(interp, pc, emit_ECX);
emitm_pushl_r(pc, emit_ECX);
jit_info->native_ptr = pc;
- call_func(jit_info, real_exception);
+ call_func(jit_info, (void *)real_exception);
pc = jit_info->native_ptr;
/* L1: */
L1[1] = (char)(pc - L1 - 2);
@@ -1955,7 +1955,7 @@
Parrot_jit_emit_get_INTERP(interp, pc, emit_ECX);
emitm_pushl_r(pc, emit_ECX);
jit_info->native_ptr = pc;
- call_func(jit_info, real_exception);
+ call_func(jit_info, (void *)real_exception);
pc = jit_info->native_ptr;
/* L3: */
L3[1] = (char)(pc - L3 - 2);
@@ -3603,7 +3603,7 @@
emitm_pushl_i(jit_info->native_ptr, CORE_OPS_check_events);
call_func(jit_info,
- (void (*)(void))interp->op_func_table[CORE_OPS_check_events]);
+ (void *)(interp->op_func_table[CORE_OPS_check_events]));
# ifdef PARROT_JIT_STACK_REUSE_INTERP
emitm_addb_i_r(jit_info->native_ptr, 4, emit_ESP);
# else
@@ -3625,7 +3625,7 @@
emitm_pushl_i(jit_info->native_ptr, jit_info->cur_op);
call_func(jit_info,
- (void (*)(void))interp->op_func_table[cur_op]);
+ (void *)(interp->op_func_table[cur_op]));
# ifdef PARROT_JIT_STACK_REUSE_INTERP
emitm_addb_i_r(jit_info->native_ptr, 4, emit_ESP);
# else
@@ -4013,7 +4013,7 @@
PARROT_ASSERT(pc - jit_info.arena.start <= size);
/* could shrink arena.start here to used size */
PObj_active_destroy_SET(pmc_nci);
- return (jit_f)D2FPTR(jit_info.arena.start);
+ return (void *)D2FPTR(jit_info.arena.start);
}
#endif
Index: compilers/imcc/cfg.c
===================================================================
--- compilers/imcc/cfg.c (revision 26955)
+++ compilers/imcc/cfg.c (working copy)
@@ -394,13 +394,15 @@
for (pred = bb->pred_list; pred; pred = pred->next) {
int found = 0;
if (STREQ(pred->from->end->opname, "bsr")) {
- SymReg * const r = pred->from->end->symregs[0];
int j;
+ {
+ SymReg * const r = pred->from->end->symregs[0];
- sub = pred->to->start;
- if ((sub->type & ITLABEL) &&
- STREQ(sub->symregs[0]->name, r->name))
- found = 1;
+ sub = pred->to->start;
+ if ((sub->type & ITLABEL) &&
+ STREQ(sub->symregs[0]->name, r->name))
+ found = 1;
+ }
invok:
j = pred->from->index;
if (found) {
Index: compilers/imcc/imclexer.c
===================================================================
--- compilers/imcc/imclexer.c (revision 26955)
+++ compilers/imcc/imclexer.c (working copy)
@@ -4330,6 +4330,9 @@
yy_cp = yyg->yy_c_buf_p;
yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
goto yy_find_action;
+
+ default:
+ break;
}
break;
}
@@ -4440,7 +4443,7 @@
/* Read in more data. */
YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
- yyg->yy_n_chars, (size_t) num_to_read );
+ yyg->yy_n_chars, num_to_read );
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
}
@@ -4642,6 +4645,8 @@
case EOB_ACT_CONTINUE_SCAN:
yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
break;
+ default:
+ break;
}
}
}