# HG changeset patch # User lost # Date 1236219827 0 # Node ID 14878196ed5ba6c8cae340514ff41fcbbd7d67c9 # Parent 6ebb93b409ba3b0138d1d5dbca335d3797102db8 Initial version of a wrapper script to behave something like 'ld' diff -r 6ebb93b409ba -r 14878196ed5b extra/ld --- /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 +# +#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 . + +# 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