annotate extra/ld @ 148:08fb11004df9

Initial pass at OS9 module support for lwlink
author lost@l-w.ca
date Fri, 26 Aug 2011 23:26:00 -0600
parents 17d82b46f4c9
children 606123758641
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
72
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
1 #!/bin/sh
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
2 #
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
3 #
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
4 # Copyright 2009 by William Astle <lost@l-w.ca>
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
5 #
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
6 #This file is part of LWTOOLS.
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
7 #
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
8 #LWTOOLS is free software: you can redistribute it and/or modify it under the
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
9 #terms of the GNU General Public License as published by the Free Software
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
10 #Foundation, either version 3 of the License, or (at your option) any later
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
11 #version.
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
12 #
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
13 #This program is distributed in the hope that it will be useful, but WITHOUT
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
14 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
15 #FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
16 #more details.
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
17 #
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
18 #You should have received a copy of the GNU General Public License along with
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
19 #this program. If not, see <http://www.gnu.org/licenses/>.
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
20
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
21 # this was based somewhat on the "as" script from gcc6809
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
22
79
17d82b46f4c9 Removed excess verbosity from the 'ld' wrapper script
lost@l-w.ca
parents: 72
diff changeset
23 #echo "LWTOOLS-ld $0 $*"
72
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
24 path_to_lwlink=lwlink
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
25
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
26 # Set defaults. Some are based on the target type, which is
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
27 # determined by the name by which the program was invoked.
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
28 output_file=a.out
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
29 libpaths=
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
30 libs=
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
31 verbose=
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
32 case $0 in
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
33 *m6809-coco-*)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
34 options="--format=decb"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
35 # options="-b .text=0x2000 -b .data=0x7000 -b .bss=0x7C00 -b .ctors=0x7F00 -b .dtors=0x7F80 -b vector=0x7FF0"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
36 # aslink_options="-nwxst"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
37 # exe_suffix=.bin
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
38 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
39 *)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
40 options="--format=decb"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
41 # options="-b .text=0x8000 -b .data=0x1000 -b .bss=0x0100 -b .ctors=0xFD00 -b .dtors=0xFE00 -b vector=0xFFF0"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
42 # aslink_options="-nwxso"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
43 # exe_suffix=.s19
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
44 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
45 esac
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
46
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
47
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
48 while [ "$1" != "" ]; do
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
49 arg=$1; shift
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
50 case $arg in
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
51 -gn)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
52 # Generate NoICE debug file
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
53 # ignored because debugging not supported by targets
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
54 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
55 -gs)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
56 # Generate SDCC debug file
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
57 # ignored because debugging not supported by targets
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
58 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
59 -o)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
60 output_file=$1; shift
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
61 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
62 -L*)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
63 arg=${arg#-L}
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
64 libpaths="$libpaths --library-path=$arg"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
65 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
66 -l*)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
67 arg=${arg#-l}
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
68 libs="$libs --library=$arg"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
69 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
70 --section-start)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
71 section_value=$1; shift
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
72 options="$options --section-start=$section_value"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
73 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
74 -Tbss)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
75 options="$options --section-start=.bss=$1"; shift
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
76 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
77 -Tdata)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
78 options="$options --section-start=.data=$1"; shift
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
79 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
80 -Ttext|-Tcode)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
81 options="$options --section-start=.text=$1"; shift
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
82 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
83 -v|--verbose)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
84 verbose=1
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
85 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
86 *crt0.o)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
87 startup_files=$arg
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
88 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
89 -g)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
90 # Ignored by GNU ld; we should do the same
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
91 true
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
92 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
93 -h|--help)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
94 echo "ld (m6809)"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
95 exit 0
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
96 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
97 -T)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
98 echo "-T scripts not supported";
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
99 exit 1;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
100 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
101 --format-lwex)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
102 options="$options --format=lwex"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
103 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
104
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
105 -*)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
106 echo "ld (m6809): unknown option $arg"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
107 exit 1
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
108 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
109 *)
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
110 input_files="$input_files $arg"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
111 ;;
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
112 esac
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
113 done
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
114
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
115 options="$options -o $output_file"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
116
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
117 if [ "$verbose" = "1" ]; then
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
118 echo "$path_to_lwlink $options $input_files $startup_files $libpaths $libs"
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
119 fi
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
120
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
121 $path_to_lwlink $options $input_files $startup_files $libpaths $libs
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
122 rc=$?
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
123
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
124 if [ "$rc" != "0" ]; then
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
125 rm -f $output_file
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
126 exit $rc
84eb35251849 Added extra scripts that can be used to run gcc6809 with lwtools as its binutils
lost@l-w.ca
parents:
diff changeset
127 fi