On Mon, 28 Nov 2005, Hans-Peter Nilsson wrote:
> I've attached the work-in-progress
If someone's missing the trivial sim-main-glue.c, here it is,
just for completeness. Not used for "native" testing.
brgds, H-P
/* Glue for passing arguments to a simulator that can't pass
command-line arguments to the target, yet can do file I/O.
Copyright (c) 2005 Free Software Foundation, Inc.
This file is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
For a copy of the GNU General Public License, write the the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA. */
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
const char _argfile[] = _ARGFILE;
/* We know we won't be passed more than this many/long parameters. */
static char args[1024];
static char *argv[32];
static char *envp[] = {"", NULL};
#undef main
extern int _main_wrapped (int, char *[], char *[]);
int
main (void)
{
char *argp;
FILE *argfile = fopen (_argfile, "r");
unsigned int i;
if (argfile == NULL)
abort ();
for (argp = args, i = 0;; i++)
{
/* Need room for NULL too. */
if (i >= sizeof (argv) / sizeof (argv[0]) - 1)
abort ();
if (fgets (argp, sizeof (args) - (argp - args), argfile) == NULL)
break;
argv[i] = argp;
argp += strlen (argp);
argp[-1] = 0;
}
argv[i] = NULL;
fclose (argfile);
exit (_main_wrapped (i, argv, envp));
}