changeset 181:14878196ed5b

Initial version of a wrapper script to behave something like 'ld'
author lost
date Thu, 05 Mar 2009 02:23:47 +0000
parents 6ebb93b409ba
children 833d392fec82
files extra/ld
diffstat 1 files changed, 123 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/ld	Thu Mar 05 02:23:47 2009 +0000
@@ -0,0 +1,123 @@
+#!/bin/sh
+#
+#
+# Copyright 2009 by William Astle <lost@l-w.ca>
+#
+#This file is part of LWTOOLS.
+#
+#LWTOOLS 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 "LWTOOLS-as $0 $*"
+path_to_lwlink=lwlink
+
+# Set defaults.  Some are based on the target type, which is 
+# determined by the name by which the program was invoked.
+output_file=a.out
+libpaths=
+libs=
+verbose=
+case $0 in
+	*m6809-coco-*)
+		options="--format=decb"
+#		options="-b .text=0x2000 -b .data=0x7000 -b .bss=0x7C00 -b .ctors=0x7F00 -b .dtors=0x7F80 -b vector=0x7FF0"
+#		aslink_options="-nwxst"
+#		exe_suffix=.bin
+		;;
+	*)
+		options="--format=decb"
+#		options="-b .text=0x8000 -b .data=0x1000 -b .bss=0x0100 -b .ctors=0xFD00 -b .dtors=0xFE00 -b vector=0xFFF0"
+#		aslink_options="-nwxso"
+#		exe_suffix=.s19
+		;;
+esac
+
+
+while [ "$1" != "" ]; do
+	arg=$1; shift
+	case $arg in
+		-gn)
+			# Generate NoICE debug file
+			# ignored because debugging not supported by targets
+			;;
+		-gs)
+			# Generate SDCC debug file
+			# ignored because debugging not supported by targets
+			;;
+		-o)
+			output_file=$1; shift
+			;;
+		-L*)
+			arg=${arg#-L}
+			libpaths="$libpaths --library-path=$arg"
+			;;
+		-l*)
+			arg=${arg#-l}
+			libs="$libs --library=$arg"
+			;;
+		--section-start)
+			section_value=$1; shift
+			options="$options --section-start=$section_value"
+			;;
+		-Tbss)
+			options="$options --section-start=.bss=$1"; shift
+			;;
+		-Tdata)
+			options="$options --section-start=.data=$1"; shift
+			;;
+		-Ttext|-Tcode)
+			options="$options --section-start=.text=$1"; shift
+			;;
+		-v|--verbose)
+			verbose=1
+			;;
+		*crt0.o)
+			startup_files=$arg
+			;;
+		-g)
+			# Ignored by GNU ld; we should do the same
+			true
+			;;
+		-h|--help)
+			echo "ld (m6809)"
+			exit 0
+			;;
+		-T)
+			echo "-T scripts not supported";
+			exit 1;
+			;;
+		-*)
+			echo "ld (m6809): unknown option $arg"
+			exit 1
+			;;
+		*)
+			input_files="$input_files $arg"
+			;;
+	esac
+done
+
+options="$options -o $output_file"
+
+if [ "$verbose" = "1" ]; then
+	echo "$path_to_lwlink $options $input_files $startup_files $libpaths $libs"
+fi
+
+$path_to_lwlink $options $input_files $startup_files $libpaths $libs
+rc=$?
+
+if [ "$rc" != "0" ]; then
+	rm -f $output_file
+	exit $rc
+fi