Mercurial > hg-old > index.cgi
view extra/as @ 185:b89adfb0d174
Added support for outputting a linkmap
author | lost |
---|---|
date | Sat, 21 Mar 2009 19:47:45 +0000 |
parents | 3711cd1c01e2 |
children | 0926c29426f4 |
line wrap: on
line source
#!/bin/sh # # Copyright 2009 by William Astle <lost@l-w.ca> # #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 <http://www.gnu.org/licenses/>. # this was based somewhat on the "as" script from gcc6809 #echo "LWASM-as $0 $*" show_version () { cat <<END LWASM (GNU assembler frontend) 2.3 This program is free software; you may redistribute it under the terms of the GNU General Public License. This program has absolutely no warranty. END } fatal_error () { echo $* 1>&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....