From mboxrd@z Thu Jan 1 00:00:00 1970 To: 9fans@9fans.net Date: Wed, 28 Nov 2012 10:20:19 +0000 From: keystroke Message-ID: Content-Type: text/plain; charset=ISO-8859-1 References: , Subject: Re: [9fans] Linking error with 8l, guys, could you tell Topicbox-Message-UUID: e90d26a8-ead7-11e9-9d60-3106f5b1d025 Thank you for your reply, erik. But I don't quite follow you. Are you suggesting that the error has nothing to do with "opnames" and "etnames", but is about the following word "memccpy"? I had grep opnames and etnames before, and finds only one initial place. And I grep memccpy, no result was found. There is a strange situation, when I "8l subr.c" then it's "memccpy", when I "8l *.8", it shows "create": (2050) DATA ...(same as before) create: multiple initialization. ...(same as before) create: multiple initialization. I suspect it is opnames and etnames that cause the problem, and I find something strange in the subr.c and it's included file go.h, is it relevant? ============================================================= > subr.c ============================================================= static char* opnames[] = { [OADDR] = "ADDR", [OADD] = "ADD", [OANDAND] = "ANDAND", [OAND] = "AND", [OARRAY] = "ARRAY", [OASOP] = "ASOP", [OAS] = "AS", [OBAD] = "BAD", [OBREAK] = "BREAK", [OCALL] = "CALL", [OCALLPTR] = "CALLPTR", [OCALLMETH] = "CALLMETH", [OCALLINTER] = "CALLINTER", [OCAT] = "CAT", [OCASE] = "CASE", [OXCASE] = "XCASE", [OFALL] = "FALL", [OCONV] = "CONV", [OCOLAS] = "COLAS", [OCOM] = "COM", [OCONST] = "CONST", [OCONTINUE] = "CONTINUE", [ODCLARG] = "DCLARG", [ODCLCONST] = "DCLCONST", [ODCLFIELD] = "DCLFIELD", [ODCLFUNC] = "DCLFUNC", [ODCLTYPE] = "DCLTYPE", [ODCLVAR] = "DCLVAR", [ODIV] = "DIV", [ODOT] = "DOT", [ODOTPTR] = "DOTPTR", [ODOTMETH] = "DOTMETH", [ODOTINTER] = "DOTINTER", [OEMPTY] = "EMPTY", [OEND] = "END", [OEQ] = "EQ", [OFOR] = "FOR", [OFUNC] = "FUNC", [OGE] = "GE", [OPROC] = "PROC", [OGOTO] = "GOTO", [OGT] = "GT", [OIF] = "IF", [OINDEX] = "INDEX", [OINDEXPTR] = "INDEXPTR", [OINDEXSTR] = "INDEXSTR", [OINDEXMAP] = "INDEXMAP", [OINDEXPTRMAP] = "INDEXPTRMAP", [OIND] = "IND", [OLABEL] = "LABEL", [OLE] = "LE", [OLEN] = "LEN", [OLIST] = "LIST", [OLITERAL] = "LITERAL", [OLSH] = "LSH", [OLT] = "LT", [OMINUS] = "MINUS", [OMOD] = "MOD", [OMUL] = "MUL", [ONAME] = "NAME", [ONE] = "NE", [ONOT] = "NOT", [OOROR] = "OROR", [OOR] = "OR", [OPLUS] = "PLUS", [ODEC] = "DEC", [OINC] = "INC", [OSEND] = "SEND", [ORECV] = "RECV", [OPTR] = "PTR", [ORETURN] = "RETURN", [ORSH] = "RSH", [OSLICE] = "SLICE", [OSUB] = "SUB", [OSWITCH] = "SWITCH", [OTYPE] = "TYPE", [OVAR] = "VAR", [OEXPORT] = "EXPORT", [OIMPORT] = "IMPORT", [OXOR] = "XOR", [ONEW] = "NEW", [OFALL] = "FALL", [OXFALL] = "XFALL", [OPANIC] = "PANIC", [OPRINT] = "PRINT", [OXXX] = "XXX", }; ============================================================= > go.h ============================================================= enum { OXXX, OTYPE, OCONST, OVAR, OEXPORT, OIMPORT, ONAME, ODOT, ODOTPTR, ODOTMETH, ODOTINTER, ODCLFUNC, ODCLCONST, ODCLVAR, ODCLTYPE, ODCLFIELD, ODCLARG, OLIST, OPTR, OARRAY, ORETURN, OFOR, OIF, OSWITCH, OAS, OASOP, OCOLAS, OCASE, OXCASE, OFALL, OXFALL, OGOTO, OPROC, ONEW, OPANIC, OPRINT, OEMPTY, OOROR, OANDAND, OEQ, ONE, OLT, OLE, OGE, OGT, OADD, OSUB, OOR, OXOR, OCAT, OMUL, ODIV, OMOD, OLSH, ORSH, OAND, ODEC, OINC, OLEN, OFUNC, OLABEL, OBREAK, OCONTINUE, OADDR, OIND, OCALL, OCALLPTR, OCALLMETH, OCALLINTER, OINDEX, OINDEXPTR, OINDEXSTR, OINDEXMAP, OINDEXPTRMAP, OSLICE, ONOT, OCOM, OPLUS, OMINUS, OSEND, ORECV, OLITERAL, OCONV, OBAD, OEND, };