Exemplo n.º 1
0
/*-----------------------------------------------------------------------------
*   Output error message
*----------------------------------------------------------------------------*/
static void do_error( enum ErrType err_type, char *message )
{
	STR_DEFINE(msg, STR_SIZE);
    size_t len_at, len_prefix;

    init_module();

    /* init empty message */
    str_clear( msg );

    /* Information messages have no prefix */
    if ( err_type != ErrInfo )
    {
        str_append( msg, err_type == ErrWarn ? "Warning" : "Error" );

        /* prepare to remove " at" if no prefix */
        len_at = str_len(msg);
        str_append( msg, " at" );
        len_prefix = str_len(msg);

        /* output filename */
        if ( errors.filename && *errors.filename )
            str_append_sprintf( msg, " file '%s'", errors.filename );

        /* output module */
        if ( errors.module != NULL && *errors.module )
            str_append_sprintf( msg, " module '%s'", errors.module );

        /* output line number */
        if ( errors.line > 0 )
            str_append_sprintf( msg, " line %d", errors.line );

        /* remove at if no prefix */
        if ( len_prefix == str_len(msg) )	/* no prefix loaded to string */
        {
            str_data(msg)[ len_at ] = '\0';	/* go back 3 chars to before at */
            str_sync_len( msg );
        }

        str_append( msg, ": " );
    }

    /* output error message */
    str_append( msg, message );
    str_append_char( msg, '\n' );

    /* CH_0001 : Assembly error messages should appear on stderr */
    fputs( str_data(msg), stderr );

    /* send to error file */
    puts_error_file( str_data(msg) );

    if ( err_type == ErrError )
        errors.count++;		/* count number of errors */

	STR_DELETE(msg);
}
Exemplo n.º 2
0
static void show_option( enum OptType type, Bool *pflag,
                         char *short_opt, char *long_opt, char *help_text, char *help_arg )
{
	STR_DEFINE(msg, STR_SIZE);
    int count_opts = 0;

    if ( type == OptDeprecated )
        return;							/* skip deprecated options */

    /* show default option */
    if ( ( type == OptSet   &&   *pflag ) ||
            ( type == OptClear && ! *pflag ) )
        str_set( msg, "* " );
    else
        str_set( msg, "  " );

    if ( *short_opt )
    {
        /* dont show short_opt if short_opt is same as long_opt, except for extra '-',
           e.g. -sdcc and --sdcc */
        if ( !( *long_opt && strcmp( short_opt, long_opt + 1 ) == 0 ) )
        {
            str_append_sprintf( msg, "%s", short_opt );
            count_opts++;
        }
    }

    if ( *long_opt )
    {
        if ( count_opts )
            str_append( msg, ", " );

        str_append_sprintf( msg, "%s", long_opt );
        count_opts++;
    }

    if ( *help_arg )
    {
        str_append_sprintf( msg, "=%s", help_arg );
    }

    if ( str_len(msg) > ALIGN_HELP )
        printf( "%s\n%-*s %s\n", str_data(msg), ALIGN_HELP, "",       help_text );
    else
        printf( "%-*s %s\n",                    ALIGN_HELP, str_data(msg), help_text );

	STR_DELETE(msg);
}
Exemplo n.º 3
0
void error_unbalanced_struct_at(char *filename, int line_nr)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "unbalanced control structure started at file '%s' line %d", filename, line_nr );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 4
0
void warn_deprecated(char *old_stmt, char *new_stmt)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "'%s' is deprecated, use '%s' instead", old_stmt, new_stmt );
	do_error( ErrWarn, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 5
0
void info_total_errors(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "%d errors occurred during assembly", get_num_errors() );
	do_error( ErrInfo, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 6
0
void error_illegal_option(char *option)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "illegal option '%s'", option );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 7
0
void warn_option_deprecated(char *option)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "option '%s' is deprecated", option );
	do_error( ErrWarn, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 8
0
void error_int_range(long value)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "integer '%ld' out of range", value );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 9
0
void error_symbol_decl_local(char *symbol)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "symbol '%s' already declared local", symbol );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 10
0
void error_symbol_redefined_module(char *symbol, char *module)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "symbol '%s' already defined in module '%s'", symbol, module );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 11
0
void error_symbol_redefined(char *symbol)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "symbol '%s' already defined", symbol );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 12
0
void error_jr_not_local(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "relative jump address must be local" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 13
0
void error_illegal_ident(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "illegal identifier" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 14
0
void error_not_defined(char *name)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "symbol '%s' not defined", name );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 15
0
void error_unbalanced_struct(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "unbalanced control structure" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 16
0
void error_env_not_defined(char *var)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "environment variable '%s' not defined", var );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 17
0
void error_not_lib_file(char *filename)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "file '%s' not a library file", filename );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 18
0
void error_symbol_redecl(char *symbol)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "re-declaration of '%s' not allowed", symbol );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 19
0
void error_include_recursion(char *filename)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "cannot include file '%s' recursively", filename );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 20
0
void error_max_codesize(long size)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "max. code size of %ld bytes reached", size );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 21
0
void error_no_src_file(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "source filename missing" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 22
0
void error_module_redefined(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "module name already defined" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 23
0
void error_illegal_src_filename(char *filename)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "illegal source filename '%s'", filename );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 24
0
void error_write_file(char *filename)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "cannot write file '%s'", filename );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 25
0
void warn_symbol_different(char *name, char *used)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "symbol '%s' used as '%s'", name, used );
	do_error( ErrWarn, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 26
0
void error_org_redefined(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "ORG redefined" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 27
0
void error_syntax(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "syntax error" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 28
0
void error_invalid_org_option(char *org_hex)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "invalid ORG option '%s'", org_hex );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 29
0
void warn_org_ignored(char *filename, char *section_name)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "--relocatable ignores ORG at file '%s', section '%s'", filename, section_name );
	do_error( ErrWarn, str_data(msg) );
	
	STR_DELETE(msg);
}
Exemplo n.º 30
0
void error_missing_close_block(void)
{
	STR_DEFINE(msg, STR_SIZE);

	str_append_sprintf( msg, "{} block not closed" );
	do_error( ErrError, str_data(msg) );
	
	STR_DELETE(msg);
}