Index: m68k-elf-ld =================================================================== RCS file: /usr/local/cvsroot/build/m68k-elf-ld,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- m68k-elf-ld 2001/10/25 21:53:30 1.1 +++ m68k-elf-ld 2001/10/25 21:54:21 1.2 @@ -34,38 +34,58 @@ do case "$1" in - -elf2flt) ;; # we already know this + -elf2flt) + ;; # we already know this - -o) shift; OFILE="$1";; # the final outfile - -o*) OFILE="`expr \"$1\" : '-o\(.*\)'`";; + -o*) OFILE="${1#-o}" # the final outfile + test -z "${OFILE}" && { shift ; OFILE="$1" ; } + ;; + + -T*|-c*) + LDSCRIPT="${1#-?}" # they have a linker script + test -z "${LDSCRIPT}" && { shift ; LDSCRIPT="$1" ; } + ;; + + -L*) libdir="${1#-L}" + test -z "${libdir}" && { shift ; libdir="$1" ; } + ARG1="${ARG1} -L${libdir}" + SDIRS="${SDIRS} -L${libdir}" + ;; + + -r|-Ur|-shared) + FINAL="" # this is not a final link + ARG1="$ARG1 $1" + ;; + + -nostdlib) # allow both $CC and $LD + ;; # to be run with $LDFLAGS + + -*) ARG1="$ARG1 $1" + ;; + + *.o) ARG1="$ARG1 $1" # guess the output name + test ".$OFILE" = "." \ + -a ".${1%crt0.o}" = ".$1" \ + -a ".${1#/tmp/}" = ".$1" && OFILE="${1%.o}" + ;; - -T) shift; LDSCRIPT="$1";; # they have a linker script - -c) shift; LDSCRIPT="$1";; + *) ARG1="$ARG1 $1" + ;; - -L) ARG1="$ARG1 $1" # remember search dirs - shift; - ARG1="$ARG1 $1" - SDIRS="$SDIRS -L$1" - ;; - -L*) ARG1="$ARG1 $1"; SDIRS="$SDIRS $1";; - - -r|-Ur) FINAL="" # this is not a final link - ARG1="$ARG1 $1" - ;; - - *) ARG1="$ARG1 $1" - ;; esac shift done if [ "$FINAL" = "yes" ] then + [ ".$OFILE" = "." ] && OFILE="unspecified_executable" [ -z "$LDSCRIPT" ] && LDSCRIPT="elf2flt.ld" $LINKER -r -d -o $OFILE.elf2flt $ARG1 || exit $? $LINKER $SDIRS -T $LDSCRIPT -Ur -o $OFILE.elf $OFILE.elf2flt || exit $? $LINKER $SDIRS -T $LDSCRIPT -o $OFILE.gdb $OFILE.elf2flt || exit $? rm -f $OFILE.elf2flt + # [ ".$ALWAYS_STRIP" = "." ] || \ + # sh -cx "$STRIPTOOL --strip-unneeded $OFILE.elf" if grep _GLOBAL_OFFSET_TABLE_ $OFILE.gdb > /dev/null then $ELF2FLT $FLTFLAGS -o $OFILE -p $OFILE.gdb $OFILE.elf || exit $?