Merge updates from trunk.
--HG-- branch : dtrg-buildsystem
This commit is contained in:
commit
81778b603f
2
Makefile
2
Makefile
|
@ -63,7 +63,7 @@ include plat/pc86/build.mk
|
|||
include plat/cpm/build.mk
|
||||
include plat/linux386/build.mk
|
||||
include plat/linux68k/build.mk
|
||||
include plat/linuxppc/build.mk
|
||||
# include plat/linuxppc/build.mk
|
||||
|
||||
.PHONY: installables
|
||||
installables: $(INSTALLABLES)
|
||||
|
|
|
@ -39,7 +39,6 @@
|
|||
#define DO_TOSTACK 23
|
||||
#define DO_KILLREG 24
|
||||
#define DO_LABDEF 25
|
||||
#define DO_STACKADJUST 26
|
||||
|
||||
#ifndef MAXATT
|
||||
#define MAXATT TOKENSIZE
|
||||
|
@ -134,7 +133,6 @@ typedef struct exprnode *node_p;
|
|||
#define EX_ISROM 44
|
||||
#define EX_TOPELTSIZE 45
|
||||
#define EX_FALLTHROUGH 46
|
||||
#define EX_STACKOFFSET 47
|
||||
|
||||
|
||||
typedef struct { /* to stack coercions */
|
||||
|
|
|
@ -59,7 +59,9 @@ name led
|
|||
(.ocm:{TAIL}={PLATFORMDIR}/liboccam.a) \
|
||||
(.ocm.b.mod.c.p:{TAIL}={PLATFORMDIR}/libc.a) \
|
||||
{FLOATS?} \
|
||||
(.e:{TAIL}={PLATFORMDIR}/libem.a \
|
||||
(.e:{TAIL}={PLATFORMDIR}/liblinux.a \
|
||||
{PLATFORMDIR}/libem.a \
|
||||
{PLATFORMDIR}/liblinux.a \
|
||||
{PLATFORMDIR}/libsys.a \
|
||||
{PLATFORMDIR}/libend.a)
|
||||
linker
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
local d = ROOTDIR.."plat/linux386/"
|
||||
|
||||
include (d.."libsys/pmfile")
|
||||
include "plat/linux/liblinux/pmfile"
|
||||
|
||||
local bootsector = ackfile {
|
||||
file (d.."boot.s"),
|
||||
|
@ -41,6 +42,7 @@ platform_linux386 = group {
|
|||
|
||||
-- Build the PC standalone syscall library.
|
||||
|
||||
liblinux,
|
||||
libsys_linux386,
|
||||
bootsector,
|
||||
}
|
||||
|
|
|
@ -69,6 +69,6 @@ name cv
|
|||
from .out
|
||||
to .exe
|
||||
program {EM}/bin/aelflod
|
||||
args 4 1 < >
|
||||
args -m4 -b < >
|
||||
outfile linux68k.exe
|
||||
end
|
||||
|
|
|
@ -76,6 +76,6 @@ name cv
|
|||
from .out
|
||||
to .exe
|
||||
program {EM}/bin/aelflod
|
||||
args 20 1 < >
|
||||
args -m20 -b < >
|
||||
outfile linuxppc.exe
|
||||
end
|
||||
|
|
2
pmfile
2
pmfile
|
@ -186,7 +186,7 @@ default = group {
|
|||
|
||||
platform_pc86,
|
||||
platform_linux386,
|
||||
platform_linuxppc,
|
||||
-- platform_linuxppc,
|
||||
platform_linux68k,
|
||||
platform_cpm,
|
||||
}
|
||||
|
|
|
@ -32,7 +32,8 @@
|
|||
/* Global settings. */
|
||||
|
||||
int bigendian = 0;
|
||||
int elfmachine;
|
||||
int elfabi = 3; /* abi = Linux */
|
||||
int elfmachine = 3; /* machine = EM_386 */
|
||||
|
||||
/* Header and section table of an ack object file. */
|
||||
|
||||
|
@ -116,7 +117,7 @@ int follows(struct outsect* pa, struct outsect* pb)
|
|||
{
|
||||
/* return 1 if pa follows pb */
|
||||
|
||||
return (pa->os_base == align(pb->os_base+pb->os_size, pa->os_lign));
|
||||
return (pa->os_base >= align(pb->os_base+pb->os_size, pa->os_lign));
|
||||
}
|
||||
|
||||
/* Writes a byte. */
|
||||
|
@ -276,11 +277,27 @@ int main(int argc, char* argv[])
|
|||
{
|
||||
switch (argv[1][1])
|
||||
{
|
||||
case 'a':
|
||||
elfabi = atoi(&argv[1][2]);
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
bigendian = 1;
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
fprintf(stderr, "%s: Syntax: aelflod [-h] <inputfile> <outputfile>\n",
|
||||
fprintf(stderr, "%s: Syntax: aelflod [-a<number>] [-b] [-h] [-l]\n\t[-m<number>] <inputfile> <outputfile>\n",
|
||||
program);
|
||||
exit(0);
|
||||
|
||||
|
||||
case 'l':
|
||||
bigendian = 0;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
elfmachine = atoi(&argv[1][2]);
|
||||
break;
|
||||
|
||||
default:
|
||||
syntaxerror:
|
||||
fatal("syntax error --- try -h for help");
|
||||
|
@ -382,13 +399,13 @@ int main(int argc, char* argv[])
|
|||
emit8(1); /* class = ELFCLASS32 */
|
||||
emit8(bigendian ? 2 : 1); /* endianness */
|
||||
emit8(1); /* ELF version */
|
||||
emit8(3); /* ABI = Linux */
|
||||
emit8(elfabi); /* ABI */
|
||||
emit8(0); /* ABI version */
|
||||
emit8(0); emit16(0); /* padding... */
|
||||
emit32(0); /* ...to offset 0x10 */
|
||||
|
||||
emit16(2); /* type = ET_EXEC */
|
||||
emit16(3); /* machine = EM_386 */
|
||||
emit16(elfmachine); /* machine */
|
||||
emit32(1); /* ELF version again */
|
||||
emit32(outsect[TEXT].os_base); /* entry point */
|
||||
emit32(ELF_HEADER_SIZE); /* program header offset */
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
em_table=$1
|
||||
h=${2-.}
|
||||
|
|
|
@ -38,7 +38,7 @@ int Xstackflag=0; /* set in coercions, moves, and tests. %1 means something
|
|||
*/
|
||||
|
||||
struct varinfo *gen_inst(),*gen_move(),*gen_test(),*gen_preturn(),*gen_tlab();
|
||||
struct varinfo *gen_label(), *gen_stackadjust(), *make_erase();
|
||||
struct varinfo *gen_label(), *make_erase();
|
||||
expr_t make_expr(),ident_expr(),subreg_expr(),tokm_expr(),all_expr();
|
||||
expr_t perc_ident_expr(),sum_expr(),regvar_expr();
|
||||
|
||||
|
@ -74,9 +74,9 @@ iocc_t iops[20];
|
|||
%token TOPELTSIZE FALLTHROUGH LABELDEF
|
||||
%token PROC CALL EXAMPLE
|
||||
%token FROM TO
|
||||
%token TEST MOVE STACK RETURN STACKADJUST
|
||||
%token TEST MOVE STACK RETURN
|
||||
%token PATTERNS PAT WITH EXACT KILLS USES REUSING GEN YIELDS LEAVING
|
||||
%token DEFINED SAMESIGN SFIT UFIT ROM LOWW HIGHW ISROM STACKOFFSET
|
||||
%token DEFINED SAMESIGN SFIT UFIT ROM LOWW HIGHW ISROM
|
||||
%token CMPEQ CMPNE CMPLT CMPGT CMPLE CMPGE OR2 AND2 LSHIFT RSHIFT NOT COMP
|
||||
%token INREG REGVAR REG_ANY REG_FLOAT REG_LOOP REG_POINTER
|
||||
%token <yy_int> ADORNACCESS
|
||||
|
@ -635,8 +635,8 @@ coderule
|
|||
maxempatlen=empatlen;
|
||||
}
|
||||
patterns
|
||||
{ /* if (!saferulefound)
|
||||
error("Previous rule impossible on empty stack"); */
|
||||
{ if (!saferulefound)
|
||||
error("Previous rule impossible on empty stack");
|
||||
outpatterns();
|
||||
}
|
||||
| PROC IDENT example
|
||||
|
@ -849,8 +849,6 @@ gen_instruction
|
|||
{ $$ = gen_label($2-1); use_tes++; }
|
||||
| RETURN
|
||||
{ $$ = gen_preturn(); }
|
||||
| STACKADJUST expr
|
||||
{ $$ = gen_stackadjust($2.ex_index); use_noframepointer++; }
|
||||
;
|
||||
optstar
|
||||
: /* empty */
|
||||
|
@ -1030,8 +1028,6 @@ expr
|
|||
{ $$ = make_expr(TYPINT,EX_LOWW,$3-1,0); }
|
||||
| HIGHW '(' emarg ')'
|
||||
{ $$ = make_expr(TYPINT,EX_HIGHW,$3-1,0); }
|
||||
| STACKOFFSET '(' ')'
|
||||
{ $$ = make_expr(TYPINT,EX_STACKOFFSET, 0, 0); }
|
||||
/* Excluded, because it causes a shift-reduce conflict
|
||||
(problems with a tokenset_no followed by an optexpr)
|
||||
| '-' expr %prec UMINUS
|
||||
|
|
|
@ -127,15 +127,6 @@ struct varinfo *gen_preturn() {
|
|||
return(vp);
|
||||
}
|
||||
|
||||
struct varinfo *gen_stackadjust(int expr) {
|
||||
register struct varinfo *vp;
|
||||
|
||||
NEW(vp,struct varinfo);
|
||||
vp->vi_int[0] = INSSTACKADJUST;
|
||||
vp->vi_int[1] = expr;
|
||||
return(vp);
|
||||
}
|
||||
|
||||
struct varinfo *gen_tlab(n) {
|
||||
register struct varinfo *vp;
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ static char rcsid[]= "$Id$";
|
|||
#include <string.h>
|
||||
#include "param.h"
|
||||
#include "expr.h"
|
||||
#include "extern.h"
|
||||
#include <em_spec.h>
|
||||
#include <em_flag.h>
|
||||
|
||||
|
|
|
@ -8,6 +8,8 @@ static char rcsid[]= "$Id$";
|
|||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include "extern.h"
|
||||
|
||||
int nerrors=0;
|
||||
|
||||
|
@ -24,24 +26,38 @@ goodbye() {
|
|||
#endif
|
||||
}
|
||||
|
||||
/*VARARGS1*/
|
||||
fatal(s,a,b,c,d) char *s; {
|
||||
void errorv(const char* s, va_list ap)
|
||||
{
|
||||
extern int lineno;
|
||||
extern char *filename;
|
||||
|
||||
fprintf(stderr, "\"%s\", line %d:", filename, lineno);
|
||||
vfprintf(stderr, s, ap);
|
||||
fprintf(stderr, "\n");
|
||||
nerrors++;
|
||||
}
|
||||
|
||||
void fatal(const char* s, ...)
|
||||
{
|
||||
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, s);
|
||||
errorv(s, ap);
|
||||
va_end(ap);
|
||||
|
||||
error(s,a,b,c,d);
|
||||
errorexit();
|
||||
goodbye();
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
/*VARARGS1*/
|
||||
error(s,a,b,c,d) char *s; {
|
||||
extern int lineno;
|
||||
extern char *filename;
|
||||
void error(const char* s, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
fprintf(stderr,"\"%s\", line %d:",filename,lineno);
|
||||
fprintf(stderr,s,a,b,c,d);
|
||||
fprintf(stderr,"\n");
|
||||
nerrors++;
|
||||
va_start(ap, s);
|
||||
errorv(s, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
|
|
@ -37,7 +37,10 @@ extern int regclass;
|
|||
extern int maxtokensize;
|
||||
extern int nprocargs, maxprocargs;
|
||||
extern int use_tes;
|
||||
extern int use_noframepointer;
|
||||
|
||||
extern char *mystrcpy();
|
||||
extern char *myalloc();
|
||||
|
||||
extern void error(const char* s, ...);
|
||||
extern void fatal(const char* s, ...);
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ static char rcsid[]= "$Id$";
|
|||
#include "assert.h"
|
||||
#include "param.h"
|
||||
#include "set.h"
|
||||
#include "extern.h"
|
||||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
|
|
|
@ -43,8 +43,6 @@ reusing REUSING
|
|||
rom ROM
|
||||
samesign SAMESIGN
|
||||
sfit SFIT
|
||||
stackadjust STACKADJUST
|
||||
stackoffset STACKOFFSET
|
||||
topeltsize TOPELTSIZE
|
||||
test TEST
|
||||
to TO
|
||||
|
|
|
@ -9,6 +9,7 @@ static char rcsid[]= "$Id$";
|
|||
#include "assert.h"
|
||||
#include "param.h"
|
||||
#include "lookup.h"
|
||||
#include "extern.h"
|
||||
|
||||
char *myalloc();
|
||||
char *mystrcpy();
|
||||
|
|
|
@ -8,6 +8,7 @@ static char rcsid[]= "$Id$";
|
|||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "extern.h"
|
||||
|
||||
char *filename;
|
||||
char *beg_sbrk;
|
||||
|
|
|
@ -12,8 +12,6 @@ int tabledebug=0; /* do not generate code for table debugging */
|
|||
#endif
|
||||
int verbose=0; /* print all statistics */
|
||||
int use_tes; /* use top element size information */
|
||||
int use_noframepointer; /* use stackadjust mechanism to remove requirement
|
||||
for frame pointer */
|
||||
char *c_file= "tables.c";
|
||||
char *h_file= "tables.H";
|
||||
char *cd_file= "code";
|
||||
|
@ -614,8 +612,6 @@ outdefs() {
|
|||
cdef("TABLEDEBUG",1);
|
||||
if (use_tes)
|
||||
cdef("USE_TES",1);
|
||||
if (use_noframepointer)
|
||||
cdef("USE_NOFRAMEPOINTER",1);
|
||||
}
|
||||
|
||||
outars() {
|
||||
|
@ -856,11 +852,6 @@ varinfo *kills,*allocates,*generates,*yields,*leaving;
|
|||
codeint(vp->vi_int[1]);
|
||||
codenl();
|
||||
break;
|
||||
case INSSTACKADJUST:
|
||||
code8(DO_STACKADJUST);
|
||||
codeint(vp->vi_int[1]);
|
||||
codenl();
|
||||
break;
|
||||
}
|
||||
}
|
||||
codecoco(cocono);
|
||||
|
|
|
@ -12,4 +12,3 @@
|
|||
#define INSERASE (-6)
|
||||
#define INSREMOVE (-7)
|
||||
#define INSLABDEF (-8)
|
||||
#define INSSTACKADJUST (-9)
|
||||
|
|
|
@ -7,6 +7,7 @@ static char rcsid[]= "$Id$";
|
|||
#endif
|
||||
|
||||
#include "param.h"
|
||||
#include "extern.h"
|
||||
|
||||
int nstrings=0;
|
||||
char *l_strings[MAXSTRINGS];
|
||||
|
|
|
@ -13,6 +13,7 @@ static char rcsid[]= "$Id$";
|
|||
#include "set.h"
|
||||
#include "instruct.h"
|
||||
#include "lookup.h"
|
||||
#include "extern.h"
|
||||
#include <cgg_cg.h>
|
||||
|
||||
int wordsize;
|
||||
|
|
Loading…
Reference in a new issue