Fix build with clang11

Reported by:	pkg-fallout
This commit is contained in:
Stefan Eßer 2020-09-01 10:49:52 +00:00
parent 54f1f07173
commit e4211f22be
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=547263
6 changed files with 87 additions and 22 deletions

View File

@ -3,7 +3,7 @@
PORTNAME= simh
PORTVERSION= 3.9.0
PORTREVISION= 4
PORTREVISION= 5
CATEGORIES= emulators
MASTER_SITES= http://simh.trailing-edge.com/sources/:src \
http://www.ml1.org.uk/distfiles/:pdf \

View File

@ -0,0 +1,10 @@
--- AltairZ80/i86.h.orig 2020-09-01 09:55:27 UTC
+++ AltairZ80/i86.h
@@ -215,7 +215,6 @@ struct pc_env
};
/* GLOBAL */
-volatile int intr;
void halt_sys (PC_ENV *sys);
void fetch_decode_modrm (PC_ENV *m, uint16 *mod, uint16 *regh, uint16 *regl);

View File

@ -0,0 +1,10 @@
--- AltairZ80/i86_decode.c.orig 2020-09-01 09:55:27 UTC
+++ AltairZ80/i86_decode.c
@@ -46,6 +46,7 @@ extern uint32 PCX; /* external view of PC
extern uint32 sim_brk_summ;
extern UNIT cpu_unit;
+volatile int intr;
void i86_intr_raise(PC_ENV *m,uint8 intrnum);
void cpu8086reset(void);
t_stat sim_instr_8086(void);

View File

@ -0,0 +1,10 @@
--- AltairZ80/i86_ops.c.orig 2020-09-01 09:55:27 UTC
+++ AltairZ80/i86_ops.c
@@ -109,6 +109,7 @@ extern uint32 in(const uint32 Port);
*/
extern uint8 parity_tab[];
+extern volatile int intr;
static void i86op_illegal_op(PC_ENV *m)
{

View File

@ -1,11 +1,11 @@
--- makefile.orig 2016-12-01 22:43:43 UTC
--- makefile.orig 2020-09-01 10:06:51 UTC
+++ makefile
@@ -110,7 +110,7 @@ ifeq ($(WIN32),) #*nix Environments (&&
@@ -110,7 +110,7 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin)
PCAPLIB = wpcap
LIBEXT = a
else
- LDSEARCH :=$(shell ldconfig -r | grep 'search directories' | awk '{print $$3}' | sed 's/:/ /g')
+########## LDSEARCH :=$(shell ldconfig -r | grep 'search directories' | awk '{print $$3}' | sed 's/:/ /g')
+########### LDSEARCH :=$(shell ldconfig -r | grep 'search directories' | awk '{print $$3}' | sed 's/:/ /g')
ifneq (,$(LDSEARCH))
LIBPATH := $(LDSEARCH)
endif
@ -52,3 +52,21 @@
BUILD_FEATURES = - compiler optimizations and no debugging support
endif
ifneq (3,$(GCC_MAJOR_VERSION))
@@ -523,7 +525,7 @@ IBM1130 = ${IBM1130D}/ibm1130_cpu.c ${IBM1130D}/ibm113
${IBM1130D}/ibm1130_fmt.c ${IBM1130D}/ibm1130_ptrp.c \
${IBM1130D}/ibm1130_plot.c ${IBM1130D}/ibm1130_sca.c \
${IBM1130D}/ibm1130_t2741.c
-IBM1130_OPT = -I ${IBM1130D}
+IBM1130_OPT = -I ${IBM1130D} -D HAVE_VM_INIT
ID16D = Interdata
@@ -570,7 +572,7 @@ ALTAIRZ80 = ${ALTAIRZ80D}/altairz80_cpu.c ${ALTAIRZ80D
${ALTAIRZ80D}/s100_scp300f.c ${ALTAIRZ80D}/sim_imd.c \
${ALTAIRZ80D}/wd179x.c ${ALTAIRZ80D}/s100_hdc1001.c \
${ALTAIRZ80D}/s100_if3.c ${ALTAIRZ80D}/s100_adcs6.c
-ALTAIRZ80_OPT = -I ${ALTAIRZ80D}
+ALTAIRZ80_OPT = -I ${ALTAIRZ80D} -D HAVE_VM_INIT
GRID = GRI

View File

@ -1,6 +1,23 @@
--- scp.c.orig 2016-12-01 22:43:43 UTC
--- scp.c.orig 2020-09-01 10:06:51 UTC
+++ scp.c
@@ -678,14 +678,14 @@ else if (*argv[0]) {
@@ -266,10 +266,14 @@ extern t_stat fprint_sym (FILE *ofile, t_addr addr, t_
extern t_stat parse_sym (char *cptr, t_addr addr, UNIT *uptr, t_value *val,
int32 sw);
-/* The per-simulator init routine is a weak global that defaults to NULL
+/* The per-simulator init routine is only required for a few machines
The other per-simulator pointers can be overrriden by the init routine */
-void (*sim_vm_init) (void);
+#ifdef HAVE_VM_INIT
+extern void (*sim_vm_init) (void);
+#else
+void (*sim_vm_init) (void) = NULL;
+#endif
char* (*sim_vm_read) (char *ptr, int32 size, FILE *stream) = NULL;
void (*sim_vm_post) (t_bool from_scp) = NULL;
CTAB *sim_vm_cmd = NULL;
@@ -678,14 +682,14 @@ else if (*argv[0]) {
char nbuf[PATH_MAX + 7], *np; /* "path.ini" */
nbuf[0] = '"'; /* starting " */
strncpy (nbuf + 1, argv[0], PATH_MAX + 1); /* copy sim name */
@ -17,7 +34,7 @@
printf ("sim> %s\n", cptr); /* echo */
else if (sim_vm_read != NULL) { /* sim routine? */
printf ("sim> "); /* prompt */
@@ -700,7 +700,7 @@ while (stat != SCPE_EXIT) {
@@ -700,7 +704,7 @@ while (stat != SCPE_EXIT) {
fprintf (sim_log, "sim> %s\n", cptr);
cptr = get_glyph (cptr, gbuf, 0); /* get command glyph */
sim_switches = 0; /* init switches */
@ -26,7 +43,7 @@
stat = cmdp->action (cmdp->arg, cptr); /* if found, exec */
else stat = SCPE_UNK;
if (stat >= SCPE_BASE) { /* error? */
@@ -767,7 +767,7 @@ if (*cptr) {
@@ -767,7 +771,7 @@ if (*cptr) {
cptr = get_glyph (cptr, gbuf, 0);
if (*cptr)
return SCPE_2MARG;
@ -35,7 +52,7 @@
fputs (cmdp->help, stdout);
if (sim_log)
fputs (cmdp->help, sim_log);
@@ -911,7 +911,7 @@ do {
@@ -911,7 +915,7 @@ do {
cptr = get_glyph (cptr, gbuf, 0); /* get command glyph */
sim_switches = 0; /* init switches */
isdo = FALSE;
@ -44,7 +61,7 @@
isdo = (cmdp->action == &do_cmd);
if (isdo) { /* DO command? */
if (flag >= DO_NEST_LVL) /* nest too deep? */
@@ -1091,18 +1091,18 @@ if (*cptr == 0)
@@ -1091,18 +1095,18 @@ if (*cptr == 0)
return SCPE_2FARG;
cptr = get_glyph (cptr, gbuf, 0); /* get glob/dev/unit */
@ -66,7 +83,7 @@
return gcmdp->action (gcmdp->arg, cptr); /* do the rest */
else return SCPE_NXDEV; /* no match */
if (*cptr == 0) /* must be more */
@@ -1110,7 +1110,7 @@ if (*cptr == 0)
@@ -1110,7 +1114,7 @@ if (*cptr == 0)
while (*cptr != 0) { /* do all mods */
cptr = get_glyph (svptr = cptr, gbuf, ','); /* get modifier */
@ -75,7 +92,7 @@
*cvptr++ = 0;
for (mptr = dptr->modifiers; mptr && (mptr->mask != 0); mptr++) {
if ((mptr->mstring) && /* match string */
@@ -1123,7 +1123,7 @@ while (*cptr != 0) {
@@ -1123,7 +1127,7 @@ while (*cptr != 0) {
if (mptr->valid) { /* validation rtn? */
if (cvptr && (mptr->mask & MTAB_NC)) {
get_glyph_nc (svptr, gbuf, ',');
@ -84,7 +101,7 @@
*cvptr++ = 0;
}
r = mptr->valid (uptr, mptr->match, cvptr, mptr->desc);
@@ -1156,7 +1156,7 @@ while (*cptr != 0) {
@@ -1156,7 +1160,7 @@ while (*cptr != 0) {
} /* end if match */
} /* end for */
if (!mptr || (mptr->mask == 0)) { /* no match? */
@ -93,7 +110,7 @@
r = glbr->action (dptr, uptr, glbr->arg, cvptr); /* do global */
if (r != SCPE_OK)
return r;
@@ -1349,15 +1349,15 @@ GET_SWITCHES (cptr);
@@ -1349,15 +1353,15 @@ GET_SWITCHES (cptr);
if (*cptr == 0) /* must be more */
return SCPE_2FARG;
cptr = get_glyph (cptr, gbuf, 0); /* get next glyph */
@ -112,7 +129,7 @@
if (uptr == NULL) /* invalid unit */
return SCPE_NXUN;
if (uptr->flags & UNIT_DIS) /* disabled? */
@@ -1377,7 +1377,7 @@ if (dptr->modifiers == NULL)
@@ -1377,7 +1381,7 @@ if (dptr->modifiers == NULL)
while (*cptr != 0) { /* do all mods */
cptr = get_glyph (cptr, gbuf, ','); /* get modifier */
@ -121,7 +138,7 @@
*cvptr++ = 0;
for (mptr = dptr->modifiers; mptr->mask != 0; mptr++) {
if (((mptr->mask & MTAB_XTD)? /* right level? */
@@ -1396,7 +1396,7 @@ while (*cptr != 0) {
@@ -1396,7 +1400,7 @@ while (*cptr != 0) {
} /* end if */
} /* end for */
if (mptr->mask == 0) { /* no match? */
@ -130,7 +147,7 @@
shptr->action (ofile, dptr, uptr, shptr->arg, cptr);
else return SCPE_ARG;
} /* end if */
@@ -1800,7 +1800,7 @@ if (sim_brk_types == 0)
@@ -1800,7 +1804,7 @@ if (sim_brk_types == 0)
return SCPE_NOFNC;
if ((dptr == NULL) || (uptr == NULL))
return SCPE_IERR;
@ -139,7 +156,7 @@
if (flg != SSH_ST) /* only on SET */
return SCPE_ARG;
*aptr++ = 0; /* separate strings */
@@ -3699,7 +3699,7 @@ if ((cptr == NULL) || (*cptr == 0))
@@ -3699,7 +3703,7 @@ if ((cptr == NULL) || (*cptr == 0))
return SCPE_ARG;
strncpy (gbuf, cptr, CBUFSIZE);
addrp = gbuf; /* default addr */
@ -148,7 +165,7 @@
*portp++ = 0;
else if (strchr (gbuf, '.')) /* x.y...? */
portp = NULL;
@@ -3782,7 +3782,7 @@ DEVICE *dptr;
@@ -3782,7 +3786,7 @@ DEVICE *dptr;
if (uptr == NULL) /* arg error? */
return NULL;
@ -157,7 +174,7 @@
if (qdisable (dptr)) /* disabled? */
return NULL;
*uptr = dptr->units; /* unit 0 */
@@ -3862,7 +3862,7 @@ REG *rptr, *srptr = NULL;
@@ -3862,7 +3866,7 @@ REG *rptr, *srptr = NULL;
for (i = 0; (dptr = sim_devices[i]) != 0; i++) { /* all dev */
if (dptr->flags & DEV_DIS) /* skip disabled */
continue;
@ -166,7 +183,7 @@
if (srptr) /* ambig? err */
return NULL;
srptr = rptr; /* save reg */
@@ -4080,15 +4080,15 @@ const char logstr[] = "|&^", cmpstr[] =
@@ -4080,15 +4084,15 @@ const char logstr[] = "|&^", cmpstr[] = "=!><";
logval = cmpval = 0;
if (*cptr == 0) /* check for clause */
return NULL;
@ -185,7 +202,7 @@
cmpop = (int32)(sptr - cmpstr);
if (*cptr == '=') {
cmpop = cmpop + strlen (cmpstr);
@@ -4753,7 +4753,7 @@ while (isspace (*sim_brk_act))
@@ -4753,7 +4757,7 @@ while (isspace (*sim_brk_act))
sim_brk_act++;
if (*sim_brk_act == 0) /* now empty? */
return (sim_brk_act = NULL);