# HG changeset patch # User lost # Date 1236144857 0 # Node ID 3711cd1c01e2c497c801aabd3fd1f6104da6a86c # Parent f8ec28ace0c60410ac2cd4d4566cc4713ea18df3 Added as front-end script for use with gcc6809 diff -r f8ec28ace0c6 -r 3711cd1c01e2 extra/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/README Wed Mar 04 05:34:17 2009 +0000 @@ -0,0 +1,22 @@ +These files are extra utility type scripts that can be used for various +purposes. + +as + +This is a sort of front-end script that makes lwasm look approximately like +gnu as which is useful for using lwasm as a backend to gcc. You will +probably need to edit it to make it work fully. Simply put this in place +of whatever gcc6809 installed for "as" (in the "m6809/bin" folder in +"--prefix") after editing it to point to the real location of the "lwasm" +binary. + + +ld + +Similar to the "as" script above except for lwlink. + + +ar + +Similar to the "as" script above except for lwar. + diff -r f8ec28ace0c6 -r 3711cd1c01e2 extra/as --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/as Wed Mar 04 05:34:17 2009 +0000 @@ -0,0 +1,144 @@ +#!/bin/sh +# +# Copyright 2009 by William Astle +# +#This file is part of LWASM. +# +#LWASM 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 3 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. +# +#You should have received a copy of the GNU General Public License along with +#this program. If not, see . + +# this was based somewhat on the "as" script from gcc6809 + +#echo "LWASM-as $0 $*" + +show_version () { +cat <&2 + exit 1 +} + +# Assume nothing. + +input_file= +output_file= +list_file= +options= +list_file_enabled=n + +# Parse the command-line options. See the GNU 'as' man page for +# an explanation of all these options. Our goal is to translate +# them into lwasm form. + +while [ "$1" != "" ]; do + arg=$1; shift + case $arg in + -m6809) + true + ;; + -gn) + # Generate NoICE debug symbols + # ignored - no output formats support debugging symbols + ;; + -gs) + # Generate SDCC debug symbols + # ignored - no output formats supprt debugging symbols + ;; +# --globalize-symbols) +# # Make all symbols global +# # lwasm does not support globalizing everything by default +# ;; + -m*) + fatal_error "invalid CPU option '$arg'" + ;; + --) + fatal_error "standard input not supported" + ;; +# -a*) +# options="${options}lc" +# list_file_enabled=y +# ;; + -I*) + #include_file=${arg#-I} + #echo "warning: include path '$include_file' ignored" + ;; + -MD) + fatal_error "assembler option '$arg' not supported" + ;; + -o) + output_file=$1; shift + ;; + -v|-version) + show_version + ;; + --version) + show_version + exit 0 + ;; + -D|-f|-K|--traditional-format|-w|-x|-Z|-W|--no-warn) + # These options are accepted but ignored by GNU as. + true + ;; +# =*) +# # Set the name of the listing file +# list_file=${arg#=} +# ;; + -*) + echo "as (m6809): unrecognized option $arg" + exit 1 + ;; + *) + input_file=$arg + ;; + esac +done + +# Complain if no input files given. We don't support redirecting +# from standard input. + +if [ "x$input_file" = "x" ]; then + fatal_error "no input file specified" +fi + +# Invoke the real (lwasm) assembler. +# The -o option specifies the output file name +# --obj creates object files +# --pragma=undefextern causes undefined symbols to be assumed external +# --pragma=cescapes allows C escape syntax in strings +#echo lwasm -o "$output_file" $options --obj --pragma=undefextern --pragma=cescapes $input_file +lwasm -o "$output_file" $options --obj --pragma=undefextern --pragma=cescapes $input_file +rc=$? + +# OK, see if the assembler succeeded or not. +# If it failed, the source is copied to /tmp/as6809_error.s +# so that it can be inspected. GCC will normally delete any +# temporary .s files that it generates. This makes debugging +# the compiler easier. +# +# lwasm does not create an output file if it errors out but it also doesn't +# remove an existing file if it fails so we remove it anyway... + +if [ "$rc" != "0" ]; then + cp -p $input_file /tmp/as6809_error.s + rm -f $asoutput_file + exit $rc +fi + +# we don't need anything fancy here since lwasm supports specifying output +# file names....