RE: Build problem on OpenBSD MIPS
"Pierre Muller" <[email protected]> Thu, 4 Jul 2013 18:27:45 +0200
| Newsgroups | gmane.comp.debugging.insight |
|---|---|
| Message-ID | <[email protected]> |
Hi John, it indeed seems to be that your build doesn't use YACC debugging and that this could be the reason of the unused function that generates the error. You could: 1) delete c-exp.c in the build directory and check how this file is regenerated by the make script. a simple rm c-exp.y make c-exp.y should be enough for this. 2) Test recompiling the new c-exp.c file make c-exp.o should be enough. If you do get again the same error, you can bypass it simply by disabling the "consider a warning as an error" option which is the -Werror option of GNU C compiler. 3) To do this, simply run make c-exp.o WERROR_CFLAGS="" 4) After that, a normal make gdb insight should work. If point 2) still fails, it would be worthwhile to state that problem to [email protected] specifying how c-exp.c was regenerated at point 1 (and the version of the executable used, which might well be of importance here). Hopefully you will be able to complete insight compilation... Pierre Muller > -----Message d'origine----- > De : [email protected] [mailto:[email protected]] De > la part de John Long > Envoyé : jeudi 4 juillet 2013 17:39 > À : Pierre Muller > Cc : [email protected] > Objet : Re: Build problem on OpenBSD MIPS > > On Thu, Jul 04, 2013 at 05:22:30PM +0200, Pierre Muller wrote: > > Maybe it is a problem with the tool that is used > > to generate the c-exp.c from the c-exp.y source. > > > > I have the impression that OpenBSD often tends to still use old GNU > tools... > > > > On my successful build, > > c_print_token is used in YYPRINT macro: > > > > $ grep YYPRINT c-*.c -n -A 5 > > 398:#define YYPRINT(FILE, TYPE, VALUE) c_print_token (FILE, TYPE, VALUE) > > 399- > > 400-/* Line 390 of yacc.c */ > > 401-#line 402 "c-exp.c" > > 402- > > 403-#ifdef short > > -- > > 867:# ifdef YYPRINT > > 868-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to > > 869- token YYLEX-NUM. */ > > 870-static const yytype_uint16 yytoknum[] = > > 871-{ > > 872- 0, 256, 257, 258, 259, 260, 261, 262, 263, > 264, > > -- > > 1589:# ifdef YYPRINT > > 1590- if (yytype < YYNTOKENS) > > 1591: YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); > > 1592-# else > > 1593- YYUSE (yyoutput); > > 1594-# endif > > 1595- switch (yytype) > > 1596- { > > -- > > 5989:/* This is called via the YYPRINT macro when parser debugging is > > 5990- enabled. It prints a token's value. */ > > 5991- > > 5992-static void > > 5993-c_print_token (FILE *file, int type, YYSTYPE value) > > 5994-{ > > > > $ head c-exp.c > > /* A Bison parser, made by GNU Bison 2.7. */ > > > > /* Bison implementation for Yacc-like parsers in C > > > > Could you check if YYPRINT is used in your c-exp.c file, > > and which tool was used to create it (it will probably be mentioned > > in the header like here). > > > > > > Pierre Muller > > > > Hi, I have no idea what I am doing so I just tried your commands as is. Here > is the output: > > grep YYPRINT c-*.c -n -A 5 > 146:#define YYPRINT(FILE, TYPE, VALUE) c_print_token (FILE, TYPE, VALUE) > 147-#line 148 "c-exp.c" > 148-#define INT 257 > 149-#define FLOAT 258 > 150-#define DECFLOAT 259 > 151-#define STRING 260 > 4233:/* This is called via the YYPRINT macro when parser debugging is > 4234- enabled. It prints a token's value. */ > 4235- > 4236-static void > 4237-c_print_token (FILE *file, int type, YYSTYPE value) > 4238-{ > user:/tmp/insight-cvs/insight/gdb$ > > head c-exp.c > #include <stdlib.h> > #include <string.h> > #define YYBYACC 1 > #define YYMAJOR 1 > #define YYMINOR 9 > #define YYLEX yylex() > #define YYEMPTY -1 > #define yyclearin (yychar=(YYEMPTY)) > #define yyerrok (yyerrflag=0) > #define YYRECOVERING() (yyerrflag!=0) > user:/tmp/insight-cvs/insight/gdb$ > > I don't see that YYPRINT is used anywhere else in c-exp.c > > Does the following suggest this isn't going to be used in a normal build? > > /* This is called via the YYPRINT macro when parser debugging is > enabled. It prints a token's value. */ > > static void > c_print_token (FILE *file, int type, YYSTYPE value) > { > switch (type) > { > case INT: > fprintf (file, "typed_val_int<%s, %s>", > TYPE_SAFE_NAME (value.typed_val_int.type), > > Thanks, > > /jl