summaryrefslogtreecommitdiff
path: root/as
diff options
context:
space:
mode:
authorRobert de Bath <rdebath@poboxes.com>2004-01-24 16:27:32 +0100
committerLubomir Rintel <lkundrak@v3.sk>2013-10-23 23:48:49 +0200
commitbeba34dc223aa0dcf3e5f696966c5e8408b022c3 (patch)
treeea0523ac242bd3e877338e9a771b975d4cd3839a /as
parentb5dac1e3bdd01a2ce105df747a9073ff0d6a94e2 (diff)
downloaddev86-beba34dc223aa0dcf3e5f696966c5e8408b022c3.tar.gz
Import Dev86src-0.16.15.tar.gzv0.16.15
Diffstat (limited to 'as')
-rw-r--r--as/Makefile2
-rw-r--r--as/as.c6
-rwxr-xr-xas/chk4
-rw-r--r--as/errors.c163
-rw-r--r--as/errors.h162
5 files changed, 172 insertions, 165 deletions
diff --git a/as/Makefile b/as/Makefile
index dec98d1..60aa952 100644
--- a/as/Makefile
+++ b/as/Makefile
@@ -33,6 +33,8 @@ clean realclean clobber:
.c.o:
$(CC) $(CFLAGS) -c $<
+$(OBJS): const.h errors.h
+
as.o: const.h type.h byteord.h macro.h file.h flag.h globvar.h
assemble.o: const.h type.h address.h globvar.h opcode.h scan.h
error.o: const.h type.h
diff --git a/as/as.c b/as/as.c
index d592b0b..c5fee7e 100644
--- a/as/as.c
+++ b/as/as.c
@@ -28,6 +28,7 @@ PRIVATE struct sym_s *hid_spt[SPTSIZ]; /* hash table */
PRIVATE char * binfilename = 0;
PRIVATE char * objfilename = 0;
+PRIVATE int keep_bad_output = 0;
FORWARD void initp1 P((void));
FORWARD int my_creat P((char *name, char *message));
@@ -85,7 +86,7 @@ PUBLIC void finishup()
/* If an output binary is in error remove it */
close(binfil); binfil=0;
close(objfil); objfil=0;
- if (toterr != 0)
+ if (toterr != 0 && !keep_bad_output)
{
if(binfilename) unlink(binfilename);
if(objfilename) unlink(objfilename);
@@ -280,6 +281,9 @@ char **argv;
if( flag_state ) as_warn.semaphore = -1;
else as_warn.semaphore = 0;
break;
+ case 'k':
+ keep_bad_output = 1;
+ break;
default:
usage(); /* bad option */
}
diff --git a/as/chk b/as/chk
index 007c750..44f316a 100755
--- a/as/chk
+++ b/as/chk
@@ -1,8 +1,8 @@
compile()
{
- # /lib/elksemu ./as86 -3 "$@"
- ./as86 -3 "$@"
+ # /lib/elksemu ./as86 -3 -k "$@"
+ ./as86 -3 -k "$@"
}
for i in `ls asm/*.asm`
diff --git a/as/errors.c b/as/errors.c
index 0f2558a..4a78a7f 100644
--- a/as/errors.c
+++ b/as/errors.c
@@ -1,107 +1,108 @@
#include "syshead.h"
#include "const.h"
+#include "errors.h"
/* Error codes. */
/* Syntax errors. */
-PUBLIC char * COMEXP = "comma expected";
-PUBLIC char * DELEXP = "delimiter expected";
-PUBLIC char * FACEXP = "factor expected";
-PUBLIC char * IREGEXP = "index register expected";
-PUBLIC char * LABEXP = "label expected";
-PUBLIC char * LPEXP = "left parentheses expected";
-PUBLIC char * OPEXP = "opcode expected";
-PUBLIC char * RBEXP = "right bracket expected";
-PUBLIC char * REGEXP = "register expected";
-PUBLIC char * RPEXP = "right parentheses expected";
-PUBLIC char * SPEXP = "space expected";
+PUBLIC char COMEXP[] = "comma expected";
+PUBLIC char DELEXP[] = "delimiter expected";
+PUBLIC char FACEXP[] = "factor expected";
+PUBLIC char IREGEXP[] = "index register expected";
+PUBLIC char LABEXP[] = "label expected";
+PUBLIC char LPEXP[] = "left parentheses expected";
+PUBLIC char OPEXP[] = "opcode expected";
+PUBLIC char RBEXP[] = "right bracket expected";
+PUBLIC char REGEXP[] = "register expected";
+PUBLIC char RPEXP[] = "right parentheses expected";
+PUBLIC char SPEXP[] = "space expected";
/* Expression errors. */
-PUBLIC char * ABSREQ = "absolute expression required";
-PUBLIC char * NONIMPREQ = "non-imported expression required";
-PUBLIC char * RELBAD = "relocation impossible";
+PUBLIC char ABSREQ[] = "absolute expression required";
+PUBLIC char NONIMPREQ[] = "non-imported expression required";
+PUBLIC char RELBAD[] = "relocation impossible";
/* Label errors. */
-PUBLIC char * ILLAB = "illegal label";
-PUBLIC char * MACUID = "MACRO used as identifier";
-PUBLIC char * MISLAB = "missing label";
-PUBLIC char * MNUID = "opcode used as identifier";
-PUBLIC char * REGUID = "register used as identifier";
-PUBLIC char * RELAB = "redefined label";
-PUBLIC char * UNBLAB = "unbound label";
-PUBLIC char * UNLAB = "undefined label";
-PUBLIC char * VARLAB = "variable used as label";
+PUBLIC char ILLAB[] = "illegal label";
+PUBLIC char MACUID[] = "MACRO used as identifier";
+PUBLIC char MISLAB[] = "missing label";
+PUBLIC char MNUID[] = "opcode used as identifier";
+PUBLIC char REGUID[] = "register used as identifier";
+PUBLIC char RELAB[] = "redefined label";
+PUBLIC char UNBLAB[] = "unbound label";
+PUBLIC char UNLAB[] = "undefined label";
+PUBLIC char VARLAB[] = "variable used as label";
/* Addressing errors. */
-PUBLIC char * ABOUNDS = "address out of bounds";
-PUBLIC char * DBOUNDS = "data out of bounds";
-PUBLIC char * ILLMOD = "illegal address mode";
-PUBLIC char * ILLREG = "illegal register";
+PUBLIC char ABOUNDS[] = "address out of bounds";
+PUBLIC char DBOUNDS[] = "data out of bounds";
+PUBLIC char ILLMOD[] = "illegal address mode";
+PUBLIC char ILLREG[] = "illegal register";
/* Control structure errors. */
-PUBLIC char * ELSEBAD = "no matching IF";
-PUBLIC char * ENDBBAD = "no matching BLOCK";
-PUBLIC char * EOFBLOCK = "end of file in BLOCK";
-PUBLIC char * EOFIF = "end of file in IF";
-PUBLIC char * EOFLC = "location counter was undefined at end";
-PUBLIC char * EOFMAC = "end of file in MACRO";
-PUBLIC char * FAILERR = "user-generated error";
+PUBLIC char ELSEBAD[] = "no matching IF";
+PUBLIC char ENDBBAD[] = "no matching BLOCK";
+PUBLIC char EOFBLOCK[] = "end of file in BLOCK";
+PUBLIC char EOFIF[] = "end of file in IF";
+PUBLIC char EOFLC[] = "location counter was undefined at end";
+PUBLIC char EOFMAC[] = "end of file in MACRO";
+PUBLIC char FAILERR[] = "user-generated error";
/* Overflow errors. */
-PUBLIC char * BLOCKOV = "BLOCK stack overflow";
-PUBLIC char * BWRAP = "binary file wrap-around";
-PUBLIC char * COUNTOV = "counter overflow";
-PUBLIC char * COUNTUN = "counter underflow";
-PUBLIC char * GETOV = "GET stack overflow";
-PUBLIC char * IFOV = "IF stack overflow";
+PUBLIC char BLOCKOV[] = "BLOCK stack overflow";
+PUBLIC char BWRAP[] = "binary file wrap-around";
+PUBLIC char COUNTOV[] = "counter overflow";
+PUBLIC char COUNTUN[] = "counter underflow";
+PUBLIC char GETOV[] = "GET stack overflow";
+PUBLIC char IFOV[] = "IF stack overflow";
-PUBLIC char * LINLONG = "line too long";
-PUBLIC char * MACOV = "MACRO stack overflow";
-PUBLIC char * OBJSYMOV = "object symbol table overflow";
-PUBLIC char * OWRITE = "program overwrite";
-PUBLIC char * PAROV = "parameter table overflow";
-PUBLIC char * SYMOV = "symbol table overflow";
-PUBLIC char * SYMOUTOV = "output symbol table overflow";
+PUBLIC char LINLONG[] = "line too long";
+PUBLIC char MACOV[] = "MACRO stack overflow";
+PUBLIC char OBJSYMOV[] = "object symbol table overflow";
+PUBLIC char OWRITE[] = "program overwrite";
+PUBLIC char PAROV[] = "parameter table overflow";
+PUBLIC char SYMOV[] = "symbol table overflow";
+PUBLIC char SYMOUTOV[] = "output symbol table overflow";
/* I/O errors. */
-PUBLIC char * OBJOUT = "error writing object file";
+PUBLIC char OBJOUT[] = "error writing object file";
/* Miscellaneous errors. */
-PUBLIC char * AL_AX_EAX_EXP = "al ax or eax expected";
-PUBLIC char * CTLINS = "control character in string";
-PUBLIC char * FURTHER = "futher errors suppressed";
-PUBLIC char * ILL_IMM_MODE = "illegal immediate mode";
-PUBLIC char * ILL_IND_TO_IND = "illegal indirect to indirect";
-PUBLIC char * ILL_IND = "illegal indirection";
-PUBLIC char * ILL_IND_PTR = "illegal indirection from previous 'ptr'";
-PUBLIC char * ILL_SCALE = "illegal scale";
-PUBLIC char * ILL_SECTION = "illegal section";
-PUBLIC char * ILL_SEG_REG = "illegal segment register";
-PUBLIC char * ILL_SOURCE_EA = "illegal source effective address";
-PUBLIC char * ILL_SIZE = "illegal size";
-PUBLIC char * IMM_REQ = "immediate expression expected";
-PUBLIC char * INDEX_REG_EXP = "index register expected";
-PUBLIC char * IND_REQ = "indirect expression required";
-PUBLIC char * MISMATCHED_SIZE = "mismatched size";
-PUBLIC char * NOIMPORT = "no imports with binary file output";
-PUBLIC char * REENTER = "multiple ENTER pseudo-ops";
-PUBLIC char * REL_REQ = "relative expression required";
-PUBLIC char * REPEATED_DISPL = "repeated displacement";
-PUBLIC char * SEGREL = "segment or relocatability redefined";
-PUBLIC char * SEG_REG_REQ = "segment register required";
-PUBLIC char * SIZE_UNK = "size unknown";
-PUBLIC char * UNKNOWN_ESCAPE_SEQUENCE = "unknown escape sequence";
+PUBLIC char AL_AX_EAX_EXP[] = "al ax or eax expected";
+PUBLIC char CTLINS[] = "control character in string";
+PUBLIC char FURTHER[] = "futher errors suppressed";
+PUBLIC char ILL_IMM_MODE[] = "illegal immediate mode";
+PUBLIC char ILL_IND_TO_IND[] = "illegal indirect to indirect";
+PUBLIC char ILL_IND[] = "illegal indirection";
+PUBLIC char ILL_IND_PTR[] = "illegal indirection from previous 'ptr'";
+PUBLIC char ILL_SCALE[] = "illegal scale";
+PUBLIC char ILL_SECTION[] = "illegal section";
+PUBLIC char ILL_SEG_REG[] = "illegal segment register";
+PUBLIC char ILL_SOURCE_EA[] = "illegal source effective address";
+PUBLIC char ILL_SIZE[] = "illegal size";
+PUBLIC char IMM_REQ[] = "immediate expression expected";
+PUBLIC char INDEX_REG_EXP[] = "index register expected";
+PUBLIC char IND_REQ[] = "indirect expression required";
+PUBLIC char MISMATCHED_SIZE[] = "mismatched size";
+PUBLIC char NOIMPORT[] = "no imports with binary file output";
+PUBLIC char REENTER[] = "multiple ENTER pseudo-ops";
+PUBLIC char REL_REQ[] = "relative expression required";
+PUBLIC char REPEATED_DISPL[] = "repeated displacement";
+PUBLIC char SEGREL[] = "segment or relocatability redefined";
+PUBLIC char SEG_REG_REQ[] = "segment register required";
+PUBLIC char SIZE_UNK[] = "size unknown";
+PUBLIC char UNKNOWN_ESCAPE_SEQUENCE[] = "unknown escape sequence";
-PUBLIC char * FP_REG_REQ = "FP register required";
-PUBLIC char * FP_REG_NOT_ALLOWED = "FP register not allowed";
-PUBLIC char * ILL_FP_REG = "illegal FP register";
-PUBLIC char * ILL_FP_REG_PAIR = "illegal FP register pair";
-PUBLIC char * JUNK_AFTER_OPERANDS = "junk after operands";
+PUBLIC char FP_REG_REQ[] = "FP register required";
+PUBLIC char FP_REG_NOT_ALLOWED[] = "FP register not allowed";
+PUBLIC char ILL_FP_REG[] = "illegal FP register";
+PUBLIC char ILL_FP_REG_PAIR[] = "illegal FP register pair";
+PUBLIC char JUNK_AFTER_OPERANDS[] = "junk after operands";
-PUBLIC char * ALREADY = "already defined";
-PUBLIC char * UNSTABLE_LABEL = "label moved in last pass add -O?";
+PUBLIC char ALREADY[] = "already defined";
+PUBLIC char UNSTABLE_LABEL[] = "label moved in last pass add -O?";
/* Warnings. */
-PUBLIC char * CPUCLASH = "instruction illegal for current cpu";
-PUBLIC char * SHORTB = "short branch would do";
+PUBLIC char CPUCLASH[] = "instruction illegal for current cpu";
+PUBLIC char SHORTB[] = "short branch would do";
diff --git a/as/errors.h b/as/errors.h
index 28e1a58..ad1b57f 100644
--- a/as/errors.h
+++ b/as/errors.h
@@ -1,105 +1,105 @@
/* Error codes. */
/* Syntax errors. */
-EXTERN char * COMEXP; /* "comma expected" */
-EXTERN char * DELEXP; /* "delimiter expected" */
-EXTERN char * FACEXP; /* "factor expected" */
-EXTERN char * IREGEXP; /* "index register expected" */
-EXTERN char * LABEXP; /* "label expected" */
-EXTERN char * LPEXP; /* "left parentheses expected" */
-EXTERN char * OPEXP; /* "opcode expected" */
-EXTERN char * RBEXP; /* "right bracket expected" */
-EXTERN char * REGEXP; /* "register expected" */
-EXTERN char * RPEXP; /* "right parentheses expected" */
-EXTERN char * SPEXP; /* "space expected" */
+EXTERN char COMEXP[]; /* "comma expected" */
+EXTERN char DELEXP[]; /* "delimiter expected" */
+EXTERN char FACEXP[]; /* "factor expected" */
+EXTERN char IREGEXP[]; /* "index register expected" */
+EXTERN char LABEXP[]; /* "label expected" */
+EXTERN char LPEXP[]; /* "left parentheses expected" */
+EXTERN char OPEXP[]; /* "opcode expected" */
+EXTERN char RBEXP[]; /* "right bracket expected" */
+EXTERN char REGEXP[]; /* "register expected" */
+EXTERN char RPEXP[]; /* "right parentheses expected" */
+EXTERN char SPEXP[]; /* "space expected" */
/* Expression errors. */
-EXTERN char * ABSREQ; /* "absolute expression required" */
-EXTERN char * NONIMPREQ; /* "non-imported expression required" */
-EXTERN char * RELBAD; /* "relocation impossible" */
+EXTERN char ABSREQ[]; /* "absolute expression required" */
+EXTERN char NONIMPREQ[]; /* "non-imported expression required" */
+EXTERN char RELBAD[]; /* "relocation impossible" */
/* Label errors. */
-EXTERN char * ILLAB; /* "illegal label" */
-EXTERN char * MACUID; /* "MACRO used as identifier" */
-EXTERN char * MISLAB; /* "missing label" */
-EXTERN char * MNUID; /* "opcode used as identifier" */
-EXTERN char * REGUID; /* "register used as identifier" */
-EXTERN char * RELAB; /* "redefined label" */
-EXTERN char * UNBLAB; /* "unbound label" */
-EXTERN char * UNLAB; /* "undefined label" */
-EXTERN char * VARLAB; /* "variable used as label" */
+EXTERN char ILLAB[]; /* "illegal label" */
+EXTERN char MACUID[]; /* "MACRO used as identifier" */
+EXTERN char MISLAB[]; /* "missing label" */
+EXTERN char MNUID[]; /* "opcode used as identifier" */
+EXTERN char REGUID[]; /* "register used as identifier" */
+EXTERN char RELAB[]; /* "redefined label" */
+EXTERN char UNBLAB[]; /* "unbound label" */
+EXTERN char UNLAB[]; /* "undefined label" */
+EXTERN char VARLAB[]; /* "variable used as label" */
/* Addressing errors. */
-EXTERN char * ABOUNDS; /* "address out of bounds" */
-EXTERN char * DBOUNDS; /* "data out of bounds" */
-EXTERN char * ILLMOD; /* "illegal address mode" */
-EXTERN char * ILLREG; /* "illegal register" */
+EXTERN char ABOUNDS[]; /* "address out of bounds" */
+EXTERN char DBOUNDS[]; /* "data out of bounds" */
+EXTERN char ILLMOD[]; /* "illegal address mode" */
+EXTERN char ILLREG[]; /* "illegal register" */
/* Control structure errors. */
-EXTERN char * ELSEBAD; /* "no matching IF" */
+EXTERN char ELSEBAD[]; /* "no matching IF" */
#define ELSEIFBAD ELSEBAD
-EXTERN char * ENDBBAD; /* "no matching BLOCK" */
+EXTERN char ENDBBAD[]; /* "no matching BLOCK" */
#define ENDIFBAD ELSEBAD
-EXTERN char * EOFBLOCK; /* "end of file in BLOCK" */
-EXTERN char * EOFIF; /* "end of file in IF" */
-EXTERN char * EOFLC; /* "location counter was undefined at end" */
-EXTERN char * EOFMAC; /* "end of file in MACRO" */
-EXTERN char * FAILERR; /* "user-generated error" */
+EXTERN char EOFBLOCK[]; /* "end of file in BLOCK" */
+EXTERN char EOFIF[]; /* "end of file in IF" */
+EXTERN char EOFLC[]; /* "location counter was undefined at end" */
+EXTERN char EOFMAC[]; /* "end of file in MACRO" */
+EXTERN char FAILERR[]; /* "user-generated error" */
/* Overflow errors. */
-EXTERN char * BLOCKOV; /* "BLOCK stack overflow" */
-EXTERN char * BWRAP; /* "binary file wrap-around" */
-EXTERN char * COUNTOV; /* "counter overflow" */
-EXTERN char * COUNTUN; /* "counter underflow" */
-EXTERN char * GETOV; /* "GET stack overflow" */
-EXTERN char * IFOV; /* "IF stack overflow" */
+EXTERN char BLOCKOV[]; /* "BLOCK stack overflow" */
+EXTERN char BWRAP[]; /* "binary file wrap-around" */
+EXTERN char COUNTOV[]; /* "counter overflow" */
+EXTERN char COUNTUN[]; /* "counter underflow" */
+EXTERN char GETOV[]; /* "GET stack overflow" */
+EXTERN char IFOV[]; /* "IF stack overflow" */
-EXTERN char * LINLONG; /* "line too long" */
-EXTERN char * MACOV; /* "MACRO stack overflow" */
-EXTERN char * OBJSYMOV; /* "object symbol table overflow" */
-EXTERN char * OWRITE; /* "program overwrite" */
-EXTERN char * PAROV; /* "parameter table overflow" */
-EXTERN char * SYMOV; /* "symbol table overflow" */
-EXTERN char * SYMOUTOV; /* "output symbol table overflow" */
+EXTERN char LINLONG[]; /* "line too long" */
+EXTERN char MACOV[]; /* "MACRO stack overflow" */
+EXTERN char OBJSYMOV[]; /* "object symbol table overflow" */
+EXTERN char OWRITE[]; /* "program overwrite" */
+EXTERN char PAROV[]; /* "parameter table overflow" */
+EXTERN char SYMOV[]; /* "symbol table overflow" */
+EXTERN char SYMOUTOV[]; /* "output symbol table overflow" */
/* I/O errors. */
-EXTERN char * OBJOUT; /* "error writing object file" */
+EXTERN char OBJOUT[]; /* "error writing object file" */
/* Miscellaneous errors. */
-EXTERN char * AL_AX_EAX_EXP; /* "al ax or eax expected" */
-EXTERN char * CTLINS; /* "control character in string" */
-EXTERN char * FURTHER; /* "futher errors suppressed" */
-EXTERN char * ILL_IMM_MODE; /* "illegal immediate mode" */
-EXTERN char * ILL_IND_TO_IND; /* "illegal indirect to indirect" */
-EXTERN char * ILL_IND; /* "illegal indirection" */
-EXTERN char * ILL_IND_PTR; /* "illegal indirection from previous 'ptr'" */
-EXTERN char * ILL_SCALE; /* "illegal scale" */
-EXTERN char * ILL_SECTION; /* "illegal section" */
-EXTERN char * ILL_SEG_REG; /* "illegal segment register" */
-EXTERN char * ILL_SOURCE_EA; /* "illegal source effective address" */
-EXTERN char * ILL_SIZE; /* "illegal size" */
-EXTERN char * IMM_REQ; /* "immediate expression expected" */
-EXTERN char * INDEX_REG_EXP; /* "index register expected" */
-EXTERN char * IND_REQ; /* "indirect expression required" */
-EXTERN char * MISMATCHED_SIZE; /* "mismatched size" */
-EXTERN char * NOIMPORT; /* "no imports with binary file output" */
-EXTERN char * REENTER; /* "multiple ENTER pseudo-ops" */
-EXTERN char * REL_REQ; /* "relative expression required" */
-EXTERN char * REPEATED_DISPL; /* "repeated displacement" */
-EXTERN char * SEGREL; /* "segment or relocatability redefined" */
-EXTERN char * SEG_REG_REQ; /* "segment register required" */
-EXTERN char * SIZE_UNK; /* "size unknown" */
-EXTERN char * UNKNOWN_ESCAPE_SEQUENCE; /* "unknown escape sequence" */
+EXTERN char AL_AX_EAX_EXP[]; /* "al ax or eax expected" */
+EXTERN char CTLINS[]; /* "control character in string" */
+EXTERN char FURTHER[]; /* "futher errors suppressed" */
+EXTERN char ILL_IMM_MODE[]; /* "illegal immediate mode" */
+EXTERN char ILL_IND_TO_IND[]; /* "illegal indirect to indirect" */
+EXTERN char ILL_IND[]; /* "illegal indirection" */
+EXTERN char ILL_IND_PTR[]; /* "illegal indirection from previous 'ptr'" */
+EXTERN char ILL_SCALE[]; /* "illegal scale" */
+EXTERN char ILL_SECTION[]; /* "illegal section" */
+EXTERN char ILL_SEG_REG[]; /* "illegal segment register" */
+EXTERN char ILL_SOURCE_EA[]; /* "illegal source effective address" */
+EXTERN char ILL_SIZE[]; /* "illegal size" */
+EXTERN char IMM_REQ[]; /* "immediate expression expected" */
+EXTERN char INDEX_REG_EXP[]; /* "index register expected" */
+EXTERN char IND_REQ[]; /* "indirect expression required" */
+EXTERN char MISMATCHED_SIZE[]; /* "mismatched size" */
+EXTERN char NOIMPORT[]; /* "no imports with binary file output" */
+EXTERN char REENTER[]; /* "multiple ENTER pseudo-ops" */
+EXTERN char REL_REQ[]; /* "relative expression required" */
+EXTERN char REPEATED_DISPL[]; /* "repeated displacement" */
+EXTERN char SEGREL[]; /* "segment or relocatability redefined" */
+EXTERN char SEG_REG_REQ[]; /* "segment register required" */
+EXTERN char SIZE_UNK[]; /* "size unknown" */
+EXTERN char UNKNOWN_ESCAPE_SEQUENCE[]; /* "unknown escape sequence" */
-EXTERN char * FP_REG_REQ; /* "FP register required" */
-EXTERN char * FP_REG_NOT_ALLOWED; /* "FP register not allowed" */
-EXTERN char * ILL_FP_REG; /* "illegal FP register" */
-EXTERN char * ILL_FP_REG_PAIR; /* "illegal FP register pair" */
-EXTERN char * JUNK_AFTER_OPERANDS; /* "junk after operands" */
+EXTERN char FP_REG_REQ[]; /* "FP register required" */
+EXTERN char FP_REG_NOT_ALLOWED[]; /* "FP register not allowed" */
+EXTERN char ILL_FP_REG[]; /* "illegal FP register" */
+EXTERN char ILL_FP_REG_PAIR[]; /* "illegal FP register pair" */
+EXTERN char JUNK_AFTER_OPERANDS[]; /* "junk after operands" */
-EXTERN char * ALREADY; /* "already defined" */
-EXTERN char * UNSTABLE_LABEL; /* "label moved in last pass add -O?" */
+EXTERN char ALREADY[]; /* "already defined" */
+EXTERN char UNSTABLE_LABEL[]; /* "label moved in last pass add -O?" */
/* Warnings. */
-EXTERN char * CPUCLASH; /* "instruction illegal for current cpu" */
-EXTERN char * SHORTB; /* "short branch would do" */
+EXTERN char CPUCLASH[]; /* "instruction illegal for current cpu" */
+EXTERN char SHORTB[]; /* "short branch would do" */