diff options
Diffstat (limited to 'ld')
104 files changed, 0 insertions, 9802 deletions
diff --git a/ld/Makefile b/ld/Makefile deleted file mode 100755 index a565bbf..0000000 --- a/ld/Makefile +++ /dev/null @@ -1,201 +0,0 @@ -# -# Makefile for ld version 2 -# -# $Id$ -# -srcdir=../common -VPATH=../common -BASEDIR = ../.. -HOSTDIR = ../$(HOST)/ -INCLUDE = $(srcdir)/$(BASEDIR)/include-cygnus -INCLUDES = -I. -I$(srcdir) -I$(INCLUDE) -DEBUG = -g - - -#__sun3__#EXTRA_DEF=-DHOST_SYS=SUN3_SYS -#__sun4__#EXTRA_DEF=-DHOST_SYS=SUN4_SYS -#__dgux__#EXTRA_DEF=-DHOST_SYS=DGUX_SYS - -CFLAGS = $(INCLUDES) $(EXTRA_DEF) $(DEBUG) -LINTFLAGS = $(INCLUDES) $(EXTRA_DEF) - -.SUFFIXES: .y - -.y.o: - yacc -tvd $< - mv y.tab.c ldgram.tab.c - $(CC) -c $(CFLAGS) ldgram.tab.c - mv ldgram.tab.o ldgram.o - - -# go directly to ld.new in case this ld isn't capable of -# linking native object on this host. It can be renamed on -# install. -PROGS = $(HOSTDIR)/ld.new - -# for self hosting -GNUTARGET=a.out-generic-big -LDEMULATION=gld -BFDLIB=$(srcdir)/$(BASEDIR)/bfd/$(HOST)/libbfd.a - -OBJS= ldgram.o ldlex.o ldlang.o ldmain.o ldwrite.o ldexp.o ld-lnk960.o ld-gld68k.o \ - ld-gld.o ld-gld960.o ld-emul.o ldversion.o ldmisc.o ldsym.o ldfile.o - -HEADERS=config.h ldmain.h ldmain.h ldmisc.h ldsym.h ldlang.h ldexp.h \ - ldlex.h ldwrite.h ldversion.h ld-emul.h ldfile.h ldgram.h ld.h - -MANSOURCES=ld.tex - -LDCSOURCES=ldlang.c ldmain.c ldwrite.c ld-lnk960.c ld-gld.c ld-gld68k.c \ - ld-gld960.c ld-emul.c ldversion.c ldmisc.c ldexp.c ldsym.c ldfile.c - -GENERATED_SOURCES=ldgram.tab.c ldlex.c ldgram.tab.h y.tab.h -GENERATED_HEADERS=ldgram.tab.h - -LDSOURCES=$(LDCSOURCES) ldgram.y ldlex.l - -BFDSOURCES=../../bfd/common/*.c - -SOURCES= $(LDSOURCES) $(BFDSOURCES) -LINTSOURCES= $(LDCSOURCES) $(BFDSOURCES) $(GENERATED_SOURCES) - -all: Makefile $(PROGS) - - - -$(BFDLIB): $(BFDSOURCES) - (cd ../bfd; make) - -$(PROGS): $(OBJS) $(BFDLIB) -# (cd ../bfd; make) -# LDEMULATION=gld; export LDEMULATION; GNUTARGET=a.out-generic-big;./ldok -format a.out-generic-big -o ld /lib/crt0.o $(OBJS) $(BFDLIB) -lc /usr/local/lib/gcc/sparc/1.91/gnulib -# gld -o ld /lib/crt0.o $(OBJS) $(BFDLIB) -lc /usr/local/lib/gcc/sparc/1.91/gnulib - $(CC) -Bstatic -o ld.new $(OBJS) $(BFDLIB) - - -ld1: ld - gcc -v -B./ -o ld1 $(OBJS) $(BFDLIB) - -ld2: ld1 - mv ld1 ld - gcc -v -B./ -o ld2 $(OBJS) $(BFDLIB) - -ld3: ld2 - mv ld2 ld - gcc -v -B./ -o ld3 $(OBJS) $(BFDLIB) - -ld.dvi:ld.tex - tex ld.tex - -ldgram.o: ldgram.y -ldgram.tab.h:ldgram.y - cp y.tab.h ldgram.tab.h - -ldlex.c: ldlex.l ldgram.tab.h -ldlex.o: ldlex.c ldgram.tab.h - -ldmain.o: ldmain.c -ldversion.o: ldversion.c -ldfile.o: ldfile.c -ldwrite.o: ldwrite.c -ldlang.o: ldlang.c ldgram.tab.h -ld-gld.o: ld-gld.c -ld-gld68k.o: ld-gld68k.c -ld-gld960.o: ld-gld960.c -ld-emul.o: ld-emul.c -ld-lnk960.o: ld-lnk960.c -ldexp.o: ldexp.c ldgram.tab.h -ldmisc.o: ldmisc.c -ldsym.o: ldsym.c - -clean: - - rm -f $(OBJS) $(GENERATED_SOURCES) $(GENERATED_HEADERS) - - rm -f ld ld1 ld2 ld3 ld.new - - -lintlog:$(SOURCES) Makefile - $(LINT) -abhxzn $(LINTFLAGS) $(LINTSOURCES) \ -| grep -v "pointer casts may be troublesome" \ -| grep -v "possible pointer alignment problem" \ -| grep -v "ignore" \ -| grep -v "conversion from long may lose accuracy" \ -| grep -v "warning: constant argument to NOT" \ -| grep -v "enumeration type clash, operator CAST" \ -| grep -v "warning: constant in conditional context"\ -| grep -v "archive\.c" - - -tags TAGS:$(SOURCES) $(HEADERS) - etags -t $(SOURCES) $(HEADERS) - -release: - (cd /4/steve/ld; tar cf - $(LDSOURCES) $(HEADERS) $(MANSOURCES)) | tar xf - - -objdump:objdump.c - -install: $(PROGS) - rm -f $G960BASE/bin/$(PROGS) - cp $(PROGS) $$G960BASE/bin/gld960c - -#----------------------------------------------------------------------------- -# 'STANDARD' GNU/960 TARGETS BELOW THIS POINT -# -# 'VERSION' file must be present and contain a string of the form "x.y" -#----------------------------------------------------------------------------- - -ver960.c: FORCE - rm -f ver960.c - echo "char ${TARG}_ver[]= \"${TARG} `cat VERSION`, `date`\";" > ver960.c - - -# This target should be invoked before building a new release. -# 'VERSION' file must be present and contain a string of the form "x.y" -# -roll: - @V=`cat VERSION` ; \ - MAJ=`sed 's/\..*//' VERSION` ; \ - MIN=`sed 's/.*\.//' VERSION` ; \ - V=$$MAJ.`expr $$MIN + 1` ; \ - rm -f VERSION ; \ - echo $$V >VERSION ; \ - echo Version $$V - -# Dummy target to force execution of dependent targets. -# -.force: -FORCE: - -# Target to uncomment host-specific lines in this makefile. Such lines must -# have the following string beginning in column 1: #__<hostname>__# -# Original Makefile is backed up as 'Makefile.old'. -# -# Invoke with: make make HOST=xxx -# -make: - -@if test $(HOST)x = x ; then \ - echo 'Specify "make make HOST=???"'; \ - exit 1; \ - fi ; \ - grep -s "^#The next line was generated by 'make make'" Makefile; \ - if test $$? = 0 ; then \ - echo "Makefile has already been processed with 'make make'";\ - exit 1; \ - fi ; \ - mv -f Makefile Makefile.old; \ - echo "#The next line was generated by 'make make'" >Makefile ; \ - echo "HOST=$(HOST)" >>Makefile ; \ - echo >>Makefile ; \ - sed "s/^#__$(HOST)__#//" < Makefile.old >>Makefile - -# - -Makefile: ../common/Makefile - mv Makefile Makefile.backup - cp ../common/Makefile . - $(MAKE) "HOST=$(HOST)" make - -### Local Variables: *** -### mode:fundamental *** -### page-delimiter: "^#" *** -### End: *** -### end of file diff --git a/ld/PORTING b/ld/PORTING deleted file mode 100644 index 8f4125c..0000000 --- a/ld/PORTING +++ /dev/null @@ -1,152 +0,0 @@ - Preliminary Notes on Porting GNU ld - ----------------------------------- - -Before porting ld itself, you will need to port the BFD library; -see ../bfd/PORTING. - -The 'host' is the system a tool runs *on*. -The 'target' is the system a tool runs *for*, i.e. -a tool can read/write the binaries of the target. -Most often, host==target, but ld supports cross-linking -(and to some extent the same ld binary can be used a linker -for multiple target rachitectures). - -Porting to a new host ---------------------- -Pick a name for your host. Call that <host>. -You need to create the file config/mh-<host>. - -Porting to a new target ------------------------ -Pick a name for your target. Call that <target>. -You need to create at least config/mt-<target>. -It should contain - EMUL=<emulation> -An <emulation> controls the "personality" of ld, -such as the default linker script. Usually, the -<emulation> will have teh same name as the <target>, -and you will need to create a new <emulation> (see below). - -You will also need to edit Makefile.in and possible configure.in. -To see how to do that, search for existing examples (e.g. sun3, -sun4, hp300bsd). - -Porting to a new emulation target ---------------------------------- -Pick a name for your target. Call that <emulation>. -Usually, <emulation> and <target> are the same. -You need to create at least <emulation>.sh. -You will also need to edit Makefile.in, -To see how to do that, search for existing examples. - -The file <emulation>.sh defines a set of parameter that -are used to generate the emulation. Its syntax is that -of a (Bourne) shell script, and it is "sourced" by genscripts.sh. - -Writing <emulation.sh> ----------------------- - -Usually, <emulation>.sh contains: - EMULATION_NAME=<emulation> - SCRIPT_NAME=<script> - OUTPUT_FORMAT="<target-name>" - TEXT_START_ADDR=<text_start_addr> - PAGE_SIZE=<page_size> - SEGMENT_SIZE=<segment_size> # If different from PAGE_SIZE. - ARCH=<arch> - -<target-name> - Matches the 'filename' field of the bfd_target you want - to use. (This is a string, and currently the first field.) - For an a.out target, <target-name> matches the TARGETNAME - defined in ../bfd/<target>.c. - -<arch> - The architecture: e.g. m68k, sparc, ... - -<script> - The file <script>.sc-sh is a shell script which when - eveluated (by genscripts.sh) writes a linker script - file to standard output. You may need to write a new - script. If you use the a.out format or something - similar, you can probably set - SCRIPT_NAME=aout - -<text_start_addr> -<page_size> -<segment_size> - These set the shell variables TEXT_START_ADDR, PAGE_SIZE, - and SEGEMNT_SIZE for use by <script>.sc-sh. - If your script doesn't use these variables, you - don't have to define the variables, - For emulations using a.out files, you can get these - values from ../bfd/<target>c. - -In some cases, you may need more more definitions. -For example, if you can't use generic.em, -you may need to add: - TEMPLATE_NAME=<emulation> -and write your own <emulation>.em file. - -Writing a new <script>.sc-sh ----------------------------- - -You may need to write a new script file for your emulation. - -Your script can use the shell variable LD_FLAG, which has the value: -LD_FLAG= when building a script to be used by default -LD_FLAG=n when building a script to be used for ld -n -LD_FLAG=N when building a script to be used for ld -N -LD_FLAG=r when building a script to be used for ld -r -LD_FLAG=u when building a script to be used for ld -Ur - -The variable RELOCATING is only set if relocation is happening -(i.e. unless the linker is invoked with -r). -Thus your script should has an action ACTION -that should only be done when relocating, -express that as: - ${RELOCATING+ ACTION} -In general, this is the case for most assignments, which should look like: - ${RELOCATING+ _end = .} - -Also, you should assign absolute addresses to sections only -when relocating, so: - .text ${RELOCATING+ ${TEXT_START_ADDR}}: - -The forms: - .section { ... } > section -should be: - .section { ... } > ${RELOCATING+ section} - -RELOCATING is set except when LD_FLAG=r or LD_FLAG=u. -CONSTRUCTING is set except when LD_FLAG=u. - -Alignment of the data segments is controlled by the variables -DATA_ALIGNMENT_ (note trailing underscore), DATA_ALIGNMENT_n, -DATA_ALIGNMENT_N, DATA_ALIGNMENT_r, or DTA_ALIGNMENT_u -depending on LD_FLAGS's value. -Normally, the default value works (this is "ALIGN(${SEGMENT_SIZE})" -for the _n, and __ (default) variants; "." for the _N, variant; -and "" for the _r and _u variants). - -Handling -n and -N style binaries in your linker script -------------------------------------------------------- - -The -n linker flag requests the linker to create a binary -with a write-protected text segment, but not demand-pagable (NMAGIC). -Sunos starts the text segment for demand-paged binaries at 0x2020 -and other binaries at 0x2000, since the exec header (0x20 bytes) -is paged in with the text. Some other Unix variants do the same. - -In that case, the <emulation.sh> should define: - -NONPAGED_TEXT_START_ADDR - The text start address to use when linking with -n or -N flags. - -For example, on a sun4: - TEXT_START_ADDR=0x2020 - NONPAGED_TEXT_START_ADDR=0x2000 - -The -N linker flag requests the linker to create a binary -without a write-protected text segment (NMAGIC). -This is like -n, except that the data segment needs not be page-aligned. diff --git a/ld/config.sub b/ld/config.sub deleted file mode 100755 index dac9ab8..0000000 --- a/ld/config.sub +++ /dev/null @@ -1,446 +0,0 @@ -#!/bin/sh - -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration (e.g. a typo). - -# Please email any bugs, comments, and/or additions to this file to: -# configure@cygnus.com - -# decode aliases into canonical names - -case "$1" in -# cpu alone is a valid alias for cpu-none-none. -vax | tahoe | i386 | i860 | m68k | m68000 | m88k | sparc | ns32k \ - | alliant | arm | c1 | c2 | mips | pyramid | tron | a29k \ - | romp | rs6000 | i960 | h8300) - cpu=$1 - vendor=none - os=none - ;; -altos | altos3068) - cpu=m68k - vendor=altos - os=sysv # maybe? - ;; -altosgas) - cpu=m68k - vendor=altos - os=gas - ;; -am29k) - cpu=a29k - vendor=none - os=bsd - ;; -amdahl) - cpu=580 - vendor=amdahl - os=uts - ;; -amigados) - cpu=m68k - vendor=cbm - os=amigados # Native AmigaDOS - ;; -amigaunix | amix) - cpu=m68k - vendor=cbm - os=svr4 # System V Release 4 (svr4 is an industry recognized acronym) - ;; -apollo68) - cpu=m68k - vendor=apollo - os=sysv # maybe? - ;; -balance) - cpu=ns32k - vendor=sequent - os=dynix - ;; -convex-c1) - cpu=c1 - vendor=convex - os=sysv # maybe? - ;; -convex-c2) - cpu=c2 - vendor=convex - os=sysv # maybe? - ;; -cray | ymp) - cpu=ymp - vendor=cray - os=unicos - ;; -cray2) - cpu=cray2 - vendor=cray - os=unicos - ;; -dec3100 | decstatn | decstation | decstation-3100 | pmax | pmin) - cpu=mips - vendor=dec - os=ultrix - ;; -delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - cpu=m68k - vendor=motorola - os=sysv # maybe? - ;; - -delta88) - cpu=m88k - vendor=motorola - os=m88kbcs - ;; - -gmicro) - cpu=tron - vendor=gmicro - os=sysv # maybe? - ;; - -h8300hds) - cpu=h8300 - vendor=hitachi - os=hds - ;; - -# start-sanitize-v9 -hal-32 | hal32) - cpu=sparc64 - vendor=hal - os=hal32 - ;; -hal-64 | hal64) - cpu=sparc64 - vendor=hal - os=hal64 - ;; -sparc64) - cpu=sparc64 - vendor=sun - os=v9 - ;; -sparc64-v7 | sparc64v7) - cpu=sparc64 - vendor=sun - os=v7 - ;; -# end-sanitize-v9 -hp300bsd) - cpu=m68k - vendor=hp - os=bsd - ;; -hp300hpux | hpux | hp9k3[2-9][0-9]) - cpu=m68k - vendor=hp - os=hpux - ;; -hp9k31[0-9] | hp9k2[0-9][0-9]) - cpu=m68000 - vendor=hp - os=hpux - ;; -i386sco) - cpu=i386 - vendor=sco - os=sysv # maybe? - ;; -i386v) - cpu=i386 - vendor=none - os=sysv - ;; -i386v32) - cpu=i386 - vendor=none - os=sysv32 - ;; -iris | iris4d) - cpu=mips - vendor=sgi - os=irix # maybe? - ;; - -dpx2) - vendor=bull - cpu=m68k - os=sysv - ;; -isi | isi68) - cpu=m68k - vendor=isi - os=sysv # maybe? - ;; -littlemips) - cpu=mips - vendor=little - os=bsd - ;; -magnum | m3230) - cpu=mips - vendor=mips - os=sysv # maybe? - ;; -merlin) - cpu=ns32k - vendor=utek - os=sysv # maybe? - ;; -miniframe) - cpu=m68000 - vendor=convergent - os=sysv # maybe? - ;; -mmax) - cpu=ns32k - vendor=encore - os=sysv # maybe? - ;; -news | news700 | news800 | news900) - cpu=m68k - vendor=sony - os=newsos3 # Based on bsd-4.3 - ;; -news1000) - cpu=m68030 - vendor=sony - os=newsos3 # ? - ;; -news-3600 | bigmips | risc-news) - cpu=mips - vendor=sony - os=newsos4 # Presumably? - ;; -next) - cpu=m68k - vendor=next - os=sysv # maybe? - ;; -nindy960) - cpu=i960 - vendor=intel - os=nindy - ;; -none) - cpu=none - vendor=none - os=none - ;; -np1) - cpu=np1 - vendor=gould - os=sysv # maybe? - ;; -rtpc) - cpu=romp - vendor=ibm - os=aix # maybe? - ;; -pbd) - cpu=sparc - vendor=unicom - os=sysv - ;; -pn) - cpu=pn - vendor=gould - os=sysv # maybe? - ;; -ps2) - cpu=i386 - vendor=ibm - os=sysv # maybe? - ;; -sun2) - cpu=m68000 - vendor=sun - os=sunos4 - ;; -sun2os3) - cpu=m68000 - vendor=sun - os=sunos3 - ;; -sun2os4) - cpu=m68000 - vendor=sun - os=sunos4 - ;; -sun3) - cpu=m68k - vendor=sun - os=sunos4 - ;; -sun3os3) - cpu=m68k - vendor=sun - os=sunos3 - ;; -sun3os4) - cpu=m68k - vendor=sun - os=sunos4 - ;; -sun386 | roadrunner | sun386i) - cpu=i386 - vendor=sun - os=sunos - ;; -sun4) - cpu=sparc - vendor=sun - os=sunos4 - ;; -sun4os3) - cpu=sparc - vendor=sun - os=sunos3 - ;; -sun4os4) - cpu=sparc - vendor=sun - os=sunos4 - ;; -symmetry) - cpu=i386 - vendor=sequent - os=dynix - ;; -tower | tower-32) - cpu=m68k - vendor=ncr - os=sysv # maybe? - ;; -ultra3) - cpu=a29k - vendor=nyu - os=sym1 - ;; -umax) - cpu=ns32k - vendor=encore - os=sysv # maybe? - ;; -unixpc | safari | pc7300 | 3b1 | 7300 | 7300-att | att-7300) - cpu=m68k - vendor=att - os=sysv # maybe? - ;; -vax-dec) - cpu=vax - vendor=dec - os=ultrix # maybe? - ;; -vxworks68) - cpu=m68k - vendor=wrs - os=vxworks - ;; -vxworks960) - cpu=i960 - vendor=wrs - os=vxworks - ;; -xmp) - cpu=xmp - vendor=cray - os=unicos - ;; -# not an alias. parse what we expect to be a canonical name. -*) - cpu=`echo $1 | sed 's/-.*$//'` - - if [ "${cpu}" = "$1" ] ; then - # no vendor so this is an invalid name. - echo '***' No vendor: configuration \`$1\' not recognized 1>&2 - exit 1 - else - # parse out vendor - rest=`echo $1 | sed "s/${cpu}-//"` - vendor=`echo ${rest} | sed 's/-.*$//'` - - if [ "${vendor}" = "${rest}" ] ; then - # a missing os is acceptable - os=none - else - os=`echo ${rest} | sed "s/${vendor}-//"` - fi - fi - ;; -esac - -# At this point we should have three parts of a canonical name in cpu, -# vendor, and os. - -# verify that the cpu is known. - -case "${cpu}" in -none | vax | tahoe | i386 | i860 | m68k | m68000 | m88k | sparc \ - | ns32k | alliant | arm | c1 | c2 | mips | pyramid | tron \ - | a29k | romp | rs6000 | i960 | xmp | ymp | cray2 | 580 | h8300) - ;; - -# start-sanitize-v9 -sparc64) ;; -# end-sanitize-v9 - -*) - echo '***' Invalid cpu \`${cpu}\': configuration \`$1\' not recognized 1>&2 - exit 1 - ;; -esac - -# verify that the vendor is known. - -case "${vendor}" in - altos | amdahl | aout | apollo | att | bcs | bout |\ - cbm | convergent | convex | coff | cray | dec | encore |\ - gould | hitachi | intel | isi | hp | ibm | little | mips | motorola |\ - ncr | next | none | nyu | sco | sequent | sgi | sony | sun |\ - unicom | utek | wrs | bull ) ;; - -# start-sanitize-v9 -hal) ;; -# end-sanitize-v9 - -*) - echo '***' Invalid vendor \`${vendor}\': configuration \`$1\' not recognized 1>&2 - exit 1 - ;; -esac - -# verify that the os is known, if it exists. - -case "${os}" in -aix* | aout | bout | bsd* | coff | ctix* | dynix* | esix* | hpux* \ - | hds | irix* | isc* | kern | mach* | newsos* | nindy* | none \ - | osf* | sco* | sunos* | sysv* | ultrix* | unos* | v88r* \ - | vms* | vxworks* | sym[1-9]* | unicos* | uts | svr4 \ - | amigados) - ;; - -# start-sanitize-v9 -hal32 | hal64 | v7 | v9) ;; -# end-sanitize-v9 - -*) - echo '***' Invalid os \`${os}\': configuration \`$1\' not recognized 1>&2 - exit 1 - ;; -esac - -echo ${cpu}-${vendor}-${os} diff --git a/ld/config/OSE68.mt b/ld/config/OSE68.mt deleted file mode 100755 index 6d50298..0000000 --- a/ld/config/OSE68.mt +++ /dev/null @@ -1 +0,0 @@ -EMUL=sun3 diff --git a/ld/config/decstation.mh b/ld/config/decstation.mh deleted file mode 100755 index 8b2da6f..0000000 --- a/ld/config/decstation.mh +++ /dev/null @@ -1 +0,0 @@ -YACC=yacc -vd diff --git a/ld/config/h-i386v b/ld/config/h-i386v deleted file mode 100755 index 35d9e95..0000000 --- a/ld/config/h-i386v +++ /dev/null @@ -1,3 +0,0 @@ -# $Id$ - -HDEFINES=-DHOST_SYS=i386_SYSV_SYS diff --git a/ld/config/h-m68kv b/ld/config/h-m68kv deleted file mode 100755 index b71c6d6..0000000 --- a/ld/config/h-m68kv +++ /dev/null @@ -1,3 +0,0 @@ -# $Id$ - -HDEFINES=-DHOST_SYS=M68K_SYSV_SYS diff --git a/ld/config/hmake-dec3100 b/ld/config/hmake-dec3100 deleted file mode 100755 index 4a17e63..0000000 --- a/ld/config/hmake-dec3100 +++ /dev/null @@ -1,2 +0,0 @@ -HDEFINES=-DHOST_SYS=DEC3100_SYS -YACC=yacc -vd diff --git a/ld/config/hmake-dgux b/ld/config/hmake-dgux deleted file mode 100755 index 9c4e9bc..0000000 --- a/ld/config/hmake-dgux +++ /dev/null @@ -1,9 +0,0 @@ -HDEFINES = -DHOST_SYS=DGUX_SYS -D__using_DGUX - -CC = gcc -Wall -ansi -YACC=yacc -tvd - -HOSTING_CRT0=/lib/crt0.o -X -HOSTING_LIBS=/usr/sde/m88kbcs/lib/libc.a -HOSTING_EMU=LDEMULATION=gldm88kbcs; export LDEMULATION - diff --git a/ld/config/hmake-rtbsd b/ld/config/hmake-rtbsd deleted file mode 100755 index 7d2ff5a..0000000 --- a/ld/config/hmake-rtbsd +++ /dev/null @@ -1,7 +0,0 @@ -# The IBM RT/PC has only been supported as a host in a cross-development -# environment. If you don't have gcc, I was able to get 'hc -Hnocpp -ma' -# to compile most of the modules, but didn't try running anything. -YACC = yacc -d -HDEFINES = -DHOST_SYS=RTBSD_SYS -DNO_VARARGS -LDFLAGS = -CC=gcc # hc/pcc just can't cut it diff --git a/ld/config/hmake-sun3 b/ld/config/hmake-sun3 deleted file mode 100755 index 5922ac1..0000000 --- a/ld/config/hmake-sun3 +++ /dev/null @@ -1,9 +0,0 @@ -CDEFINES=-DHOST_SYS=SUN3_SYS -#CC=gcc -ansi -Wall -CC=cc -YACC=yacc -d - - -HOSTING_CRT0=/usr/lib/crt0.o /usr/lib/Fcrt1.o -L/usr/lib/fsoft.o -HOSTING_LIBS=-lc -HOSTING_EMU=LDEMULATION=gld68k; export LDEMULATION diff --git a/ld/config/hmake-sun4 b/ld/config/hmake-sun4 deleted file mode 100755 index b53bfde..0000000 --- a/ld/config/hmake-sun4 +++ /dev/null @@ -1,8 +0,0 @@ -HDEFINES=-DHOST_SYS=SUN4_SYS -YACC=yacc -tvd -#CC=gcc -Wall -ansi -#stuff for self hosting -HOSTING_CRT0=/lib/crt0.o -HOSTING_LIBS=/limbo/latest/=sun4/lib/gcc/sparc/1.93/gnulib -lc -HOSTING_EMU=LDEMULATION=gld; export LDEMULATION - diff --git a/ld/config/hmake-sun4-64 b/ld/config/hmake-sun4-64 deleted file mode 100755 index 92f74ad..0000000 --- a/ld/config/hmake-sun4-64 +++ /dev/null @@ -1,8 +0,0 @@ -HDEFINES=-DHOST_SYS=SUN4_SYS -DHOST_64_BIT="long long" -YACC=yacc -tvd -CC=/usr/latest/bin/gcc -Wall -ansi -#stuff for self hosting -HOSTING_CRT0=/lib/crt0.o -HOSTING_LIBS=/limbo/latest/=sun4/lib/gcc/sparc/1.93/gnulib -lc -HOSTING_EMU=LDEMULATION=gld; export LDEMULATION - diff --git a/ld/config/hp300bsd.mh b/ld/config/hp300bsd.mh deleted file mode 100755 index 496728b..0000000 --- a/ld/config/hp300bsd.mh +++ /dev/null @@ -1,8 +0,0 @@ -#CC=gcc -ansi -Wall -CC=cc -YACC=yacc -d - - -HOSTING_CRT0=/lib/crt0.o -HOSTING_LIBS=-lc -HOSTING_EMU=LDEMULATION=hp300bsd; export LDEMULATION diff --git a/ld/config/hp9000.mh b/ld/config/hp9000.mh deleted file mode 100644 index 529ea8e..0000000 --- a/ld/config/hp9000.mh +++ /dev/null @@ -1,4 +0,0 @@ -# If compiling with -O on the HP 9000/300 running HP/UX, you must -# specify -Wp,-P to avoid a stupid compiler bug. -# Ian Taylor, David Henkel-Wallace, Cygnus Support -# CFLAGS = +O1000 -Wp,-P diff --git a/ld/config/news.mh b/ld/config/news.mh deleted file mode 100755 index 085fb13..0000000 --- a/ld/config/news.mh +++ /dev/null @@ -1,8 +0,0 @@ -#CC=gcc -ansi -Wall -CC=cc -YACC=yacc -d - - -HOSTING_CRT0=/lib/crt0.o -HOSTING_LIBS=-lc -HOSTING_EMU=LDEMULATION=news; export LDEMULATION diff --git a/ld/config/sparc.mh b/ld/config/sparc.mh deleted file mode 100755 index 3cf3518..0000000 --- a/ld/config/sparc.mh +++ /dev/null @@ -1,7 +0,0 @@ -YACC=yacc -tvd -#CC=gcc -Wall -ansi -#stuff for self hosting -HOSTING_CRT0=/lib/crt0.o -HOSTING_LIBS=`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else echo $(libdir)/libgcc.a; fi` -lc -HOSTING_EMU=LDEMULATION=sun4; export LDEMULATION - diff --git a/ld/config/tmake-coff-a29k b/ld/config/tmake-coff-a29k deleted file mode 100755 index 5c55415..0000000 --- a/ld/config/tmake-coff-a29k +++ /dev/null @@ -1 +0,0 @@ -TDEFINES = -DDEFAULT_EMULATION=GLD29K_EMULATION_NAME diff --git a/ld/config/tmake-m88k-bcs b/ld/config/tmake-m88k-bcs deleted file mode 100755 index 94e8c66..0000000 --- a/ld/config/tmake-m88k-bcs +++ /dev/null @@ -1 +0,0 @@ -TDEFINES = -DDEFAULT_EMULATION=GLDM88KBCS_EMULATION_NAME diff --git a/ld/config/tmake-sun4 b/ld/config/tmake-sun4 deleted file mode 100755 index d68947e..0000000 --- a/ld/config/tmake-sun4 +++ /dev/null @@ -1 +0,0 @@ -TDEFINES = -DDEFAULT_EMULATION=GLD_EMULATION_NAME diff --git a/ld/configdos.bat b/ld/configdos.bat deleted file mode 100755 index 2702dd0..0000000 --- a/ld/configdos.bat +++ /dev/null @@ -1,6 +0,0 @@ -@echo off -@echo Configuring binutils for H8/300, hosted on MS-DOS - -copy ..\bfd\hosts\h-go32.h sysdep.h - -copy makefile.dos makefile diff --git a/ld/cplus-dem.c b/ld/cplus-dem.c deleted file mode 100644 index f4d1d84..0000000 --- a/ld/cplus-dem.c +++ /dev/null @@ -1,1370 +0,0 @@ -/* Demangler for GNU C++ - Copyright 1989, 1991 Free Software Foundation, Inc. - written by James Clark (jjc@jclark.uucp) - - This program 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 2, 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, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* This is for g++ 1.95.03 (November 13 verison). */ - -/* This file exports one function - - char *cplus_demangle (const char *name, int mode) - - If NAME is a mangled function name produced by GNU C++, then - a pointer to a malloced string giving a C++ representation - of the name will be returned; otherwise NULL will be returned. - It is the caller's responsibility to free the string which - is returned. - - If MODE > 0, then ANSI qualifiers such as `const' and `void' are output. - Otherwise they are not. - If MODE >= 0, parameters are emitted; otherwise not. - - For example, - - cplus_demangle ("foo__1Ai", 0) => "A::foo(int)" - cplus_demangle ("foo__1Ai", 1) => "A::foo(int)" - cplus_demangle ("foo__1Ai", -1) => "A::foo" - - cplus_demangle ("foo__1Afe", 0) => "A::foo(float,...)" - cplus_demangle ("foo__1Afe", 1) => "A::foo(float,...)" - cplus_demangle ("foo__1Afe", -1) => "A::foo" - - This file imports xmalloc and xrealloc, which are like malloc and - realloc except that they generate a fatal error if there is no - available memory. */ - -/* define this if names don't start with _ */ -/* #define nounderscore 1 */ -#include <ansidecl.h> -#include <sysdep.h> - -#define xmalloc ldmalloc -#define xrealloc ldrealloc - -#if 0 -/* GDB-specific, FIXME. */ -#include "defs.h" -#endif - -#ifdef PARAMS -#undef PARAMS -#endif -#define PARAMS(x) EXFUN(,x) - -/* This is '$' on systems where the assembler can deal with that. - Where the assembler can't, it's '.' (but on many systems '.' is - used for other things). */ -#if !defined (CPLUS_MARKER) -#define CPLUS_MARKER '$' -#endif - -#ifndef __STDC__ -#define const -#endif - -#ifdef __STDC__ -extern char *cplus_demangle (const char *type, int mode); -#else -extern char *cplus_demangle (); -#endif - - -static char **typevec = 0; -static int ntypes = 0; -static int typevec_size = 0; - -const static struct optable { - const char *in; - const char *out; - int ansi; -} optable[] = { - "nw", " new", 1, /* new (1.92, ansi) */ - "dl", " delete", 1, /* new (1.92, ansi) */ - "new", " new", 0, /* old (1.91, and 1.x) */ - "delete", " delete", 0, /* old (1.91, and 1.x) */ - "as", "=", 1, /* ansi */ - "ne", "!=", 1, /* old, ansi */ - "eq", "==", 1, /* old, ansi */ - "ge", ">=", 1, /* old, ansi */ - "gt", ">", 1, /* old, ansi */ - "le", "<=", 1, /* old, ansi */ - "lt", "<", 1, /* old, ansi */ - "plus", "+", 0, /* old */ - "pl", "+", 1, /* ansi */ - "apl", "+=", 1, /* ansi */ - "minus", "-", 0, /* old */ - "mi", "-", 1, /* ansi */ - "ami", "-=", 1, /* ansi */ - "mult", "*", 0, /* old */ - "ml", "*", 1, /* ansi */ - "aml", "*=", 1, /* ansi */ - "convert", "+", 0, /* old (unary +) */ - "negate", "-", 0, /* old (unary -) */ - "trunc_mod", "%", 0, /* old */ - "md", "%", 1, /* ansi */ - "amd", "%=", 1, /* ansi */ - "trunc_div", "/", 0, /* old */ - "dv", "/", 1, /* ansi */ - "adv", "/=", 1, /* ansi */ - "truth_andif", "&&", 0, /* old */ - "aa", "&&", 1, /* ansi */ - "truth_orif", "||", 0, /* old */ - "oo", "||", 1, /* ansi */ - "truth_not", "!", 0, /* old */ - "nt", "!", 1, /* ansi */ - "postincrement", "++", 0, /* old */ - "pp", "++", 1, /* ansi */ - "postdecrement", "--", 0, /* old */ - "mm", "--", 1, /* ansi */ - "bit_ior", "|", 0, /* old */ - "or", "|", 1, /* ansi */ - "aor", "|=", 1, /* ansi */ - "bit_xor", "^", 0, /* old */ - "er", "^", 1, /* ansi */ - "aer", "^=", 1, /* ansi */ - "bit_and", "&", 0, /* old */ - "ad", "&", 1, /* ansi */ - "aad", "&=", 1, /* ansi */ - "bit_not", "~", 0, /* old */ - "co", "~", 1, /* ansi */ - "call", "()", 0, /* old */ - "cl", "()", 1, /* ansi */ - "alshift", "<<", 0, /* old */ - "ls", "<<", 1, /* ansi */ - "als", "<<=", 1, /* ansi */ - "arshift", ">>", 0, /* old */ - "rs", ">>", 1, /* ansi */ - "ars", ">>=", 1, /* ansi */ - "component", "->", 0, /* old */ - "rf", "->", 1, /* ansi */ - "indirect", "*", 0, /* old */ - "method_call", "->()", 0, /* old */ - "addr", "&", 0, /* old (unary &) */ - "array", "[]", 0, /* old */ - "vc", "[]", 1, /* ansi */ - "compound", ",", 0, /* old */ - "cm", ",", 1, /* ansi */ - "cond", "?:", 0, /* old */ - "cn", "?:", 1, /* psuedo-ansi */ - "max", ">?", 0, /* old */ - "mx", ">?", 1, /* psuedo-ansi */ - "min", "<?", 0, /* old */ - "mn", "<?", 1, /* psuedo-ansi */ - "nop", "", 0, /* old (for operator=) */ -}; - -/* Beware: these aren't '\0' terminated. */ - -typedef struct string { - char *b; /* pointer to start of string */ - char *p; /* pointer after last character */ - char *e; /* pointer after end of allocated space */ -} string; - -static void -string_need PARAMS ((string *, int)); - -static void -string_delete PARAMS ((string *)); - -static void -string_init PARAMS ((string *)); - -static void -string_clear PARAMS ((string *)); - -static int -string_empty PARAMS ((string *)); - -static void -string_append PARAMS ((string *, const char *)); - -static void -string_appends PARAMS ((string *, string *)); - -static void -string_appendn PARAMS ((string *, const char *, int)); - -static void -string_prepend PARAMS ((string *, const char *)); - -static void -string_prependn PARAMS ((string *, const char *, int)); - -static int -get_count PARAMS ((const char **, int *)); - -static int -do_args PARAMS ((const char **, string *, int)); - -static int -do_type PARAMS ((const char **, string *, int)); - -static int -do_arg PARAMS ((const char **, string *, int)); - -static void -munge_function_name PARAMS ((string *, int)); - -static void -remember_type PARAMS ((const char *, int)); - -#if 0 -static void -string_prepends PARAMS ((string *, string *)); -#endif - - -/* Takes operator name as e.g. "++" and returns mangled - operator name (e.g. "postincrement_expr"), or NULL if not found. - - If ARG_MODE == 1, return the ANSI name; - if ARG_MODE == 0 return the old GNU name. */ -char * -cplus_mangle_opname (opname, arg_mode) - char *opname; - int arg_mode; -{ - int i, len = strlen (opname); - - if (arg_mode != 0 && arg_mode != 1) - einfo ("%P%F: invalid arg_mode"); - - for (i = 0; i < sizeof (optable)/sizeof (optable[0]); i++) - { - if (strlen (optable[i].out) == len - && arg_mode == optable[i].ansi - && memcmp (optable[i].out, opname, len) == 0) - return (char *)optable[i].in; - } - return 0; -} - -char * -cplus_demangle (type, arg_mode) - const char *type; - int arg_mode; -{ - string decl; - int n; - int success = 0; - int constructor = 0; - int destructor = 0; - int static_type = 0; - int const_flag = 0; - int i; - const char *p; -#ifndef LONGERNAMES - const char *premangle; -#endif - -# define print_ansi_qualifiers (arg_mode > 0) -# define print_arg_types (arg_mode >= 0) - - if (type == NULL || *type == '\0') - return NULL; -#ifndef nounderscore - if (*type++ != '_') - return NULL; -#endif - p = type; - while (*p != '\0' && !(*p == '_' && p[1] == '_')) - p++; - if (*p == '\0') - { - /* destructor */ - if (type[0] == '_' && type[1] == CPLUS_MARKER && type[2] == '_') - { - int n; - char *tem; - - type += 3; /* Get past _$_ at front. */ - while (isdigit (*type)) - /* If there are digits at the front, it's because - of new 2.0 name mangling. Just skip them. */ - type++; - - n = strlen (type)*2 + 3 + 2 + 1; - tem = (char *) xmalloc (n); - strcpy (tem, type); - strcat (tem, "::~"); - strcat (tem, type); - if (print_arg_types) - strcat (tem, "()"); - return tem; - } - /* static data member */ - if (*type != '_' && (p = strchr (type, CPLUS_MARKER)) != NULL) - { - int n = strlen (type) + 2; - char *tem = (char *) xmalloc (n); - memcpy (tem, type, p - type); - strcpy (tem + (p - type), "::"); - strcpy (tem + (p - type) + 2, p + 1); - return tem; - } - /* virtual table "_vt$" */ - if (type[0] == '_' && type[1] == 'v' && type[2] == 't' && type[3] == CPLUS_MARKER) - { - int n = strlen (type + 4) + 14 + 1; - char *tem = (char *) xmalloc (n); - strcpy (tem, type + 4); - strcat (tem, " virtual table"); - return tem; - } - return NULL; - } - - string_init (&decl); - - if (static_type) - { - if (!isdigit (p[0]) && ('t' != p[0])) - { - string_delete (&decl); - return NULL; - } - } - else if (p == type) - { - if (!isdigit (p[2]) && ('t' != p[2])) - { - p += 1; - while (*p != '\0' && !(*p == '_' && p[1] == '_')) - p++; - string_appendn (&decl, type, p - type); - string_need (&decl, 1); - *(decl.p) = '\0'; - munge_function_name (&decl, 1); - if (decl.b[0] == '_') - { - string_delete (&decl); - return NULL; - } - else - p += 2; - } - else - { - constructor = 1; - p += 2; - } - } - else - { - string_appendn (&decl, type, p - type); - string_need (&decl, 1); - *(decl.p) = '\0'; - munge_function_name (&decl, arg_mode); - p += 2; - } - -#ifndef LONGERNAMES - premangle = p; -#endif - switch (*p) - { - case 'C': - /* a const member function */ - if (!isdigit (p[1])) - { - string_delete (&decl); - return NULL; - } - p += 1; - const_flag = 1; - /* fall through */ - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - n = 0; - do - { - n *= 10; - n += *p - '0'; - p += 1; - } - while (isdigit (*p)); - if (strlen (p) < n) - { - string_delete (&decl); - return NULL; - } - if (constructor || destructor) - { - string_appendn (&decl, p, n); - string_append (&decl, "::"); - if (destructor) - string_append(&decl, "~"); - string_appendn (&decl, p, n); - } - else - { - string_prepend (&decl, "::"); - string_prependn (&decl, p, n); - } - p += n; -#ifndef LONGERNAMES - remember_type (premangle, p - premangle); -#endif - if (static_type) - { - string_append(&decl, p+1); - p += strlen(p); - success = 1; - } - else - success = do_args (&p, &decl, arg_mode); - if (const_flag && print_arg_types) - string_append (&decl, " const"); - break; - case 'F': - p += 1; - success = do_args (&p, &decl, arg_mode); - break; - /* template additions */ - case 't': - p += 1; - { - int r, i; - int non_empty = 0; - string tname; - string trawname; - - string temp; - int need_comma = 0; - - string_init(&tname); - string_init(&trawname); - - /* get template name */ - if (!get_count (&p, &r)) - return 0; - string_appendn (&tname, p, r); - string_appendn (&trawname, p, r); - string_appendn (&trawname, "", 1); - p += r; - string_append (&tname, "<"); - /* get size of template parameter list */ - if (!get_count (&p, &r)) - return 0; - for (i = 0; i < r; i++) - { - if (need_comma) - string_append (&tname, ", "); - /* Z for type parameters */ - if (*p == 'Z') - { - p += 1; - - success = do_type (&p, &temp, arg_mode); - string_appendn (&temp, "", 1); - if (success) - string_append (&tname, temp.b); - string_delete(&temp); - if (!success) - break; - } - /* otherwise, value parameter */ - else - { - const char *old_p = p; - int is_pointer = 0; - int is_real = 0; - int is_integral = 0; - int done = 0; - - success = do_type (&p, &temp, arg_mode); - string_appendn (&temp, "", 1); - if (success) - string_append (&tname, temp.b); - string_delete(&temp); - if (!success) - break; - string_append (&tname, "="); - while (*old_p && !done) - { - switch (*old_p) - { - case 'P': - case 'R': - done = is_pointer = 1; - break; - case 'C': /* const */ - case 'U': /* unsigned */ - case 'V': /* volatile */ - case 'F': /* function */ - case 'M': /* member function */ - case 'O': /* ??? */ - old_p++; - continue; - case 'Q': /* repetition of following */ - case 'T': /* remembered type */ - abort(); - break; - case 'v': /* void */ - abort(); - break; - case 'x': /* long long */ - case 'l': /* long */ - case 'i': /* int */ - case 's': /* short */ - case 'c': /* char */ - done = is_integral = 1; - break; - case 'r': /* long double */ - case 'd': /* double */ - case 'f': /* float */ - done = is_real = 1; - break; - default: - abort(); - } - } - if (is_integral) - { - if (*p == 'm') - { - string_appendn (&tname, "-", 1); - p++; - } - while (isdigit (*p)) - { - string_appendn (&tname, p, 1); - p++; - } - } - else if (is_real) - { - if (*p == 'm') - { - string_appendn (&tname, "-", 1); - p++; - } - while (isdigit (*p)) - { - string_appendn (&tname, p, 1); - p++; - } - if (*p == '.') /* fraction */ - { - string_appendn (&tname, ".", 1); - p++; - while (isdigit (*p)) - { - string_appendn (&tname, p, 1); - p++; - } - } - if (*p == 'e') /* exponent */ - { - string_appendn (&tname, "e", 1); - p++; - while (isdigit (*p)) - { - string_appendn (&tname, p, 1); - p++; - } - } - } - else if (is_pointer) - { - int symbol_len; - - if (!get_count (&p, &symbol_len)) - { - success = 0; - break; - } - string_appendn (&tname, p, symbol_len); - p += symbol_len; - } - } - need_comma = 1; - } - string_append (&tname, ">::"); - if (destructor) - string_append(&tname, "~"); - if (constructor || destructor) { - string_append (&tname, trawname.b); - } - string_delete(&trawname); - - if (!success) { - string_delete(&tname); - return 0; - } - string_prepend (&decl, tname.b); - string_delete(&tname); - - if (static_type) - { - string_append(&decl, p+1); - p += strlen(p); - success = 1; - } - else - success = do_args (&p, &decl, arg_mode); - break; - } - } - - for (i = 0; i < ntypes; i++) - if (typevec[i] != NULL) - free (typevec[i]); - ntypes = 0; - if (typevec != NULL) - { - free ((char *)typevec); - typevec = NULL; - typevec_size = 0; - } - - if (success) - { - string_appendn (&decl, "", 1); - return decl.b; - } - else - { - string_delete (&decl); - return NULL; - } -} - -static int -get_count (type, count) - const char **type; - int *count; -{ - if (!isdigit (**type)) - return 0; - *count = **type - '0'; - *type += 1; - /* see flush_repeats in cplus-method.c */ - if (isdigit (**type)) - { - const char *p = *type; - int n = *count; - do - { - n *= 10; - n += *p - '0'; - p += 1; - } - while (isdigit (*p)); - if (*p == '_') - { - *type = p + 1; - *count = n; - } - } - return 1; -} - -/* result will be initialised here; it will be freed on failure */ - -static int -do_type (type, result, arg_mode) - const char **type; - string *result; - int arg_mode; -{ - int n; - int done; - int non_empty = 0; - int success; - string decl; - const char *remembered_type; - - string_init (&decl); - string_init (result); - - done = 0; - success = 1; - while (success && !done) - { - int member; - switch (**type) - { - case 'Q': - n = (*type)[1] - '0'; - if (n < 0 || n > 9) - success = 0; - *type += 2; - while (n-- > 0) - do_type (type, result, arg_mode); - break; - - case 'P': - *type += 1; - string_prepend (&decl, "*"); - break; - - case 'R': - *type += 1; - string_prepend (&decl, "&"); - break; - - case 'T': - *type += 1; - if (!get_count (type, &n) || n >= ntypes) - success = 0; - else - { - remembered_type = typevec[n]; - type = &remembered_type; - } - break; - - case 'F': - *type += 1; - if (!string_empty (&decl) && decl.b[0] == '*') - { - string_prepend (&decl, "("); - string_append (&decl, ")"); - } - if (!do_args (type, &decl, arg_mode) || **type != '_') - success = 0; - else - *type += 1; - break; - - case 'M': - case 'O': - { - int constp = 0; - int volatilep = 0; - - member = **type == 'M'; - *type += 1; - if (!isdigit (**type)) - { - success = 0; - break; - } - n = 0; - do - { - n *= 10; - n += **type - '0'; - *type += 1; - } - while (isdigit (**type)); - if (strlen (*type) < n) - { - success = 0; - break; - } - string_append (&decl, ")"); - string_prepend (&decl, "::"); - string_prependn (&decl, *type, n); - string_prepend (&decl, "("); - *type += n; - if (member) - { - if (**type == 'C') - { - *type += 1; - constp = 1; - } - if (**type == 'V') - { - *type += 1; - volatilep = 1; - } - if (*(*type)++ != 'F') - { - success = 0; - break; - } - } - if ((member && !do_args (type, &decl, arg_mode)) || **type != '_') - { - success = 0; - break; - } - *type += 1; - if (! print_ansi_qualifiers) - break; - if (constp) - { - if (non_empty) - string_append (&decl, " "); - else - non_empty = 1; - string_append (&decl, "const"); - } - if (volatilep) - { - if (non_empty) - string_append (&decl, " "); - else - non_empty = 1; - string_append (&decl, "volatile"); - } - break; - } - - case 'C': - if ((*type)[1] == 'P') - { - *type += 1; - if (print_ansi_qualifiers) - { - if (!string_empty (&decl)) - string_prepend (&decl, " "); - string_prepend (&decl, "const"); - } - break; - } - - /* fall through */ - default: - done = 1; - break; - } - } - - done = 0; - non_empty = 0; - while (success && !done) - { - switch (**type) - { - case 'C': - *type += 1; - if (print_ansi_qualifiers) - { - if (non_empty) - string_append (result, " "); - else - non_empty = 1; - string_append (result, "const"); - } - break; - case 'U': - *type += 1; - if (non_empty) - string_append (result, " "); - else - non_empty = 1; - string_append (result, "unsigned"); - break; - case 'V': - *type += 1; - if (print_ansi_qualifiers) - { - if (non_empty) - string_append (result, " "); - else - non_empty = 1; - string_append (result, "volatile"); - } - break; - default: - done = 1; - break; - } - } - - if (success) - switch (**type) - { - case '\0': - case '_': - break; - case 'v': - *type += 1; - if (non_empty) - string_append (result, " "); - string_append (result, "void"); - break; - case 'x': - *type += 1; - if (non_empty) - string_append (result, " "); - string_append (result, "long long"); - break; - case 'l': - *type += 1; - if (non_empty) - string_append (result, " "); - string_append (result, "long"); - break; - case 'i': - *type += 1; - if (non_empty) - string_append (result, " "); - string_append (result, "int"); - break; - case 's': - *type += 1; - if (non_empty) - string_append (result, " "); - string_append (result, "short"); - break; - case 'c': - *type += 1; - if (non_empty) - string_append (result, " "); - string_append (result, "char"); - break; - case 'r': - *type += 1; - if (non_empty) - string_append (result, " "); - string_append (result, "long double"); - break; - case 'd': - *type += 1; - if (non_empty) - string_append (result, " "); - string_append (result, "double"); - break; - case 'f': - *type += 1; - if (non_empty) - string_append (result, " "); - string_append (result, "float"); - break; - case 'G': - *type += 1; - if (!isdigit (**type)) - { - success = 0; - break; - } - /* fall through */ - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - n = 0; - do - { - n *= 10; - n += **type - '0'; - *type += 1; - } - while (isdigit (**type)); - if (strlen (*type) < n) - { - success = 0; - break; - } - if (non_empty) - string_append (result, " "); - string_appendn (result, *type, n); - *type += n; - break; - default: - success = 0; - break; - } - - if (success) - { - if (!string_empty (&decl)) - { - string_append (result, " "); - string_appends (result, &decl); - } - string_delete (&decl); - return 1; - } - else - { - string_delete (&decl); - string_delete (result); - return 0; - } -} - -/* `result' will be initialised in do_type; it will be freed on failure */ - -static int -do_arg (type, result, arg_mode) - const char **type; - string *result; - int arg_mode; -{ - const char *start = *type; - - if (!do_type (type, result, arg_mode)) - return 0; - remember_type (start, *type - start); - return 1; -} - -static void -remember_type (start, len) - const char *start; - int len; -{ - char *tem; - - if (ntypes >= typevec_size) - { - if (typevec_size == 0) - { - typevec_size = 3; - typevec = (char **) xmalloc (sizeof (char*)*typevec_size); - } - else - { - typevec_size *= 2; - typevec = (char **) xrealloc ((char *)typevec, sizeof (char*)*typevec_size); - } - } - tem = (char *) xmalloc (len + 1); - memcpy (tem, start, len); - tem[len] = '\0'; - typevec[ntypes++] = tem; -} - -/* `decl' must be already initialised, usually non-empty; - it won't be freed on failure */ - -static int -do_args (type, decl, arg_mode) - const char **type; - string *decl; - int arg_mode; -{ - string arg; - int need_comma = 0; - - if (print_arg_types) - string_append (decl, "("); - - while (**type != '_' && **type != '\0' && **type != 'e' && **type != 'v') - { - if (**type == 'N') - { - int r; - int t; - *type += 1; - if (!get_count (type, &r) || !get_count (type, &t) || t >= ntypes) - return 0; - while (--r >= 0) - { - const char *tem = typevec[t]; - if (need_comma && print_arg_types) - string_append (decl, ", "); - if (!do_arg (&tem, &arg, arg_mode)) - return 0; - if (print_arg_types) - string_appends (decl, &arg); - string_delete (&arg); - need_comma = 1; - } - } - else - { - if (need_comma & print_arg_types) - string_append (decl, ", "); - if (!do_arg (type, &arg, arg_mode)) - return 0; - if (print_arg_types) - string_appends (decl, &arg); - string_delete (&arg); - need_comma = 1; - } - } - - if (**type == 'v') - *type += 1; - else if (**type == 'e') - { - *type += 1; - if (print_arg_types) - { - if (need_comma) - string_append (decl, ","); - string_append (decl, "..."); - } - } - - if (print_arg_types) - string_append (decl, ")"); - return 1; -} - -static void -munge_function_name (name, arg_mode) - string *name; - int arg_mode; -{ - if (string_empty (name)) - return; - - if (name->p - name->b >= 3 - && name->b[0] == 'o' && name->b[1] == 'p' && name->b[2] == CPLUS_MARKER) - { - int i; - /* see if it's an assignment expression */ - if (name->p - name->b >= 10 /* op$assign_ */ - && memcmp (name->b + 3, "assign_", 7) == 0) - { - for (i = 0; i < sizeof (optable)/sizeof (optable[0]); i++) - { - int len = name->p - name->b - 10; - if (strlen (optable[i].in) == len - && memcmp (optable[i].in, name->b + 10, len) == 0) - { - string_clear (name); - string_append (name, "operator"); - string_append (name, optable[i].out); - string_append (name, "="); - return; - } - } - } - else - { - for (i = 0; i < sizeof (optable)/sizeof (optable[0]); i++) - { - int len = name->p - name->b - 3; - if (strlen (optable[i].in) == len - && memcmp (optable[i].in, name->b + 3, len) == 0) - { - string_clear (name); - string_append (name, "operator"); - string_append (name, optable[i].out); - return; - } - } - } - return; - } - else if (name->p - name->b >= 5 && memcmp (name->b, "type$", 5) == 0) - { - /* type conversion operator */ - string type; - const char *tem = name->b + 5; - if (do_type (&tem, &type, arg_mode)) - { - string_clear (name); - string_append (name, "operator "); - string_appends (name, &type); - string_delete (&type); - return; - } - } - /* ANSI. */ - else if (name->b[2] == 'o' && name->b[3] == 'p') - { - /* type conversion operator. */ - string type; - const char *tem = name->b + 4; - if (do_type (&tem, &type, arg_mode)) - { - string_clear (name); - string_append (name, "operator "); - string_appends (name, &type); - string_delete (&type); - return; - } - } - else if (name->b[0] == '_' && name->b[1] == '_' - && name->b[2] >= 'a' && name->b[2] <= 'z' - && name->b[3] >= 'a' && name->b[3] <= 'z') - { - int i; - - if (name->b[4] == '\0') - { - /* Operator. */ - for (i = 0; i < sizeof (optable)/sizeof (optable[0]); i++) - { - if (strlen (optable[i].in) == 2 - && memcmp (optable[i].in, name->b + 2, 2) == 0) - { - string_clear (name); - string_append (name, "operator"); - string_append (name, optable[i].out); - return; - } - } - } - else - { - if (name->b[2] != 'a' || name->b[5] != '\0') - return; - /* Assignment. */ - for (i = 0; i < sizeof (optable)/sizeof (optable[0]); i++) - { - if (strlen (optable[i].in) == 3 - && memcmp (optable[i].in, name->b + 2, 3) == 0) - { - string_clear (name); - string_append (name, "operator"); - string_append (name, optable[i].out); - return; - } - } - } - } -} - -/* a mini string-handling package */ - -static void -string_need (s, n) - string *s; - int n; -{ - if (s->b == NULL) - { - if (n < 32) - n = 32; - s->p = s->b = (char *) xmalloc (n); - s->e = s->b + n; - } - else if (s->e - s->p < n) - { - int tem = s->p - s->b; - n += tem; - n *= 2; - s->b = (char *) xrealloc (s->b, n); - s->p = s->b + tem; - s->e = s->b + n; - } -} - -static void -string_delete (s) - string *s; -{ - if (s->b != NULL) - { - free (s->b); - s->b = s->e = s->p = NULL; - } -} - -static void -string_init (s) - string *s; -{ - s->b = s->p = s->e = NULL; -} - -static void -string_clear (s) - string *s; -{ - s->p = s->b; -} - -static int -string_empty (s) - string *s; -{ - return s->b == s->p; -} - -static void -string_append (p, s) - string *p; - const char *s; -{ - int n; - if (s == NULL || *s == '\0') - return; - n = strlen (s); - string_need (p, n); - memcpy (p->p, s, n); - p->p += n; -} - -static void -string_appends (p, s) - string *p, *s; -{ - int n; - if (s->b == s->p) - return; - n = s->p - s->b; - string_need (p, n); - memcpy (p->p, s->b, n); - p->p += n; -} - -static void -string_appendn (p, s, n) - string *p; - const char *s; - int n; -{ - if (n == 0) - return; - string_need (p, n); - memcpy (p->p, s, n); - p->p += n; -} - -static void -string_prepend (p, s) - string *p; - const char *s; -{ - if (s == NULL || *s == '\0') - return; - string_prependn (p, s, strlen (s)); -} - -#if 0 -static void -string_prepends (p, s) - string *p, *s; -{ - if (s->b == s->p) - return; - string_prependn (p, s->b, s->p - s->b); -} -#endif - -static void -string_prependn (p, s, n) - string *p; - const char *s; - int n; -{ - char *q; - - if (n == 0) - return; - string_need (p, n); - for (q = p->p - 1; q >= p->b; q--) - q[n] = q[0]; - memcpy (p->b, s, n); - p->p += n; -} diff --git a/ld/descrip.mms b/ld/descrip.mms deleted file mode 100644 index e9487d1..0000000 --- a/ld/descrip.mms +++ /dev/null @@ -1,83 +0,0 @@ -# mms file to build vms-i960 ld -# sac@cygnus.com - -.FIRST - @[-.deci960]define-gnu - - -CC = gcc -CFLAGS = /define=(VMS, LNK960_LITTLE) /cc1_options="-mvaxc-alignment" /inc=([],[-.include],[-.bfd], [-.include.aout]) - -all : ld.exe - copy descrip.mms all - -BFD_OBJ = [-.bfd]archive.obj, - - [-.bfd]coff-i960.obj, - - [-.bfd]format.obj, - - [-.bfd]reloc.obj, - - [-.bfd]archures.obj, - - [-.bfd]core.obj, - - [-.bfd]init.obj, - - [-.bfd]section.obj, - - [-.bfd]bfd.obj, - - [-.bfd]cpu-i960.obj, - - [-.bfd]libbfd.obj, - - [-.bfd]srec.obj, - - [-.bfd]cache.obj, - - [-.bfd]ctor.obj, - - [-.bfd]opncls.obj, - - [-.bfd]targets.obj, - - [-.bfd]syms.obj,- - [-.bfd]seclet.obj - -LIBIBERTY_OBJ = - -[]bzero.obj, getopt1.obj,obstack.obj,[-.libiberty]bcopy.obj,- -[-.libiberty]getopt.obj,[-.libiberty]index.obj,[-.libiberty]strdup.obj,alloca.obj - -LD_OBJ = - -cplus-dem.obj, - -ld__a29k.obj, - -ld__ebmon29k.obj, - -ld__gld960.obj, - -ld__go32.obj, - -ld__h8300hms.obj, - -ld__h8300xray.obj, - -ld__hp300bsd.obj, - -ld__i386aout.obj, - -ld__lnk960.obj, - -ld__m88kbcs.obj, - -ld__news.obj, - -ld__st2000.obj, - -ld__sun3.obj, - -ld__sun4.obj, - -ld__vanilla.obj, - -ldctor.obj, - -ldemul.obj, - -lderror.obj, - -ldexp.obj, - -ldfile.obj, - -ldgram.obj, - -ldindr.obj, - -ldlang.obj, - -ldlex.obj, - -ldmain.obj, - -ldsym.obj, - -ldver.obj, - -ldwarn.obj, - -ldmisc.obj,- -ldwrite.obj, - -lexsup.obj, - -mri.obj, - -relax.obj - - -LIBS=$(BFD_OBJ), $(LIBIBERTY_OBJ) - -ld.exe : $(LD_OBJ) - copy [-.libiberty]bzero.obj [] - copy [-.libiberty]getopt1.obj [] - copy [-.libiberty]obstack.obj [] - $(LINK)/exe=ld.exe $(LD_OBJ), $(LIBS) - - - diff --git a/ld/ebmon29k.sc b/ld/ebmon29k.sc deleted file mode 100755 index da1a76a..0000000 --- a/ld/ebmon29k.sc +++ /dev/null @@ -1,27 +0,0 @@ -OUTPUT_FORMAT("coff-a29k-big") -ENTRY(start) - -SECTIONS { - .text 0x8000 : - { - *(.text); - _etext = . ; - } - .data 0x80002000 : - { - *(.data); - *(.mstack); - *(.shbss); - *(.rstack); - *(.mstack); - CONSTRUCTORS - } - .bss . : - { - - *(COMMON) - *(.bss); - _end = .; - } - -} diff --git a/ld/gld.1 b/ld/gld.1 deleted file mode 100644 index 2579063..0000000 --- a/ld/gld.1 +++ /dev/null @@ -1,1044 +0,0 @@ -.\" Copyright (c) 1991, 1992 Free Software Foundation -.\" See section COPYING for conditions for redistribution -.TH gld 1 "23 January 1992" "cygnus support" "GNU Development Tools" -.de BP -.sp -.ti \-.2i -\(** -.. - -.SH NAME -gld \- the GNU linker - -.SH SYNOPSIS -.hy 0 -.na -.TP -.B gld -.RB "[\|" \-o " -.I output\c -\&\|] \c -.I objfiles\c -\&.\|.\|. -.br -.RB "[\|" \-A\c -.I architecture\c -\&\|] -.RB "[\|" "\-b\ "\c -.I input-format\c -\&\|] -.RB "[\|" \-Bstatic "\|]" -.RB "[\|" "\-c\ "\c -.I commandfile\c -\&\|] -.RB "[\|" \-d | \-dc | \-dp\c -\|] -.br -.RB "[\|" "\-defsym\ "\c -.I symbol\c -\& = \c -.I expression\c -\&\|] -.RB "[\|" "\-e\ "\c -.I entry\c -\&\|] -.RB "[\|" \-F "\|]" -.RB "[\|" "\-F\ "\c -.I format\c -\&\|] -.RB "[\|" "\-format\ "\c -.I input-format\c -\&\|] -.RB "[\|" \-g "\|]" -.RB "[\|" \-i "\|]" -.RB "[\|" \-l\c -.I ar\c -\&\|] -.RB "[\|" \-L\c -.I searchdir\c -\&\|] -.RB "[\|" \-M | \-m "\|]" -.RB "[\|" \-n | \-N "\|]" -.RB "[\|" \-noinhibit-exec "\|]" -.RB "[\|" "\-R\ "\c -.I filename\c -\&\|] -.RB "[\|" \-relax "\|]" -.RB "[\|" \-r | \-Ur "\|]" -.RB "[\|" \-S "\|]" -.RB "[\|" \-s "\|]" -.RB "[\|" "\-T\ "\c -.I commandfile\c -\&\|] -.RB "[\|" "\-Ttext\ "\c -.I textorg\c -\&\|] -.RB "[\|" "\-Tdata\ "\c -.I dataorg\c -\&\|] -.RB "[\|" "\-Tbss\ "\c -.I bssorg\c -\&\|] -.RB "[\|" \-t "\|]" -.RB "[\|" "\-u\ "\c -.I sym\c -\&] -.RB "[\|" \-v "\|]" -.RB "[\|" \-X "\|]" -.RB "[\|" \-x "\|]" -.RB "[\|" { \c -.I script\c -.BR } "\|]" -.ad b -.hy 1 -.SH DESCRIPTION -\c -.B gld\c -\& combines a number of object and archive files, relocates -their data and ties up symbol references. Often the last step in -building a new compiled program to run is a call to \c -.B gld\c -\&. - -\c -.B gld\c -\& accepts Linker Command Language files -to provide explicit and total control over the linking process. -This man page does not describe the command language; see the `\|\c -.B ld\c -\|' entry in `\|\c -.B info\c -\|', or the manual -.I -gld: the GNU linker -\&, for full details on the command language and on other aspects of -the GNU linker. - -This version of \c -.B gld\c -\& uses the general purpose BFD libraries -to operate on object files. This allows \c -.B gld\c -\& to read, combine, and -write object files in many different formats\(em\&for example, COFF or -\c -.B a.out\c -\&. Different formats may be linked together to produce any -available kind of object file. You can use `\|\c -.B objdump \-i\c -\|' to get a list of formats supported on various architectures; see -.BR objdump ( 1 ). - -Aside from its flexibility, the GNU linker is more helpful than other -linkers in providing diagnostic information. Many linkers abandon -execution immediately upon encountering an error; whenever possible, -\c -.B gld\c -\& continues executing, allowing you to identify other errors -(or, in some cases, to get an output file in spite of the error). - -The GNU linker \c -.B gld\c -\& is meant to cover a broad range of situations, -and to be as compatible as possible with other linkers. As a result, -you have many choices to control its behavior through the command line, -and through environment variables. - -.SH OPTIONS -The plethora of command-line options may seem intimidating, but in -actual practice few of them are used in any particular context. -For instance, a frequent use of \c -.B gld\c -\& is to link standard Unix -object files on a standard, supported Unix system. On such a system, to -link a file \c -.B hello.o\c -\&: -.sp -.br -$\ gld\ \-o\ output\ /lib/crt0.o\ hello.o\ \-lc -.br -.sp -This tells \c -.B gld\c -\& to produce a file called \c -.B output\c -\& as the -result of linking the file \c -.B /lib/crt0.o\c -\& with \c -.B hello.o\c -\& and -the library \c -.B libc.a\c -\& which will come from the standard search -directories. - -The command-line options to \c -.B gld\c -\& may be specified in any order, and -may be repeated at will. For the most part, repeating an option with a -different argument will either have no further effect, or override prior -occurrences (those further to the left on the command line) of an -option. - -The exceptions\(em\&which may meaningfully be used more than once\(em\&are -\c -.B \-A\c -\&, \c -.B \-b\c -\& (or its synonym \c -.B \-format\c -\&), \c -.B \-defsym\c -\&, -\c -.B \-L\c -\&, \c -.B \-l\c -\&, \c -.B \-R\c -\&, and \c -.B \-u\c -\&. - -The list of object files to be linked together, shown as \c -.I objfiles\c -\&, -may follow, precede, or be mixed in with command-line options; save that -an \c -.I objfiles\c -\& argument may not be placed between an option flag and -its argument. - -Usually the linker is invoked with at least one object file, but other -forms of binary input files can also be specified with \c -.B \-l\c -\&, -\c -.B \-R\c -\&, and the script command language. If \c -.I no\c -\& binary input -files at all are specified, the linker does not produce any output, and -issues the message `\|\c -.B No input files\c -\|'. - -Option arguments must either follow the option letter without intervening -whitespace, or be given as separate arguments immediately following the -option that requires them. - -.TP -.IR "objfiles" .\|.\|. -The object files \c -.I objfiles\c -\& to be linked. - -.TP -.BI "-A" "architecture"\c -\& -In the current release of \c -.B gld\c -\&, this option is useful only for the -Intel 960 family of architectures. In that \c -.B gld\c -\& configuration, the -\c -.I architecture\c -\& argument is one of the two-letter names identifying -members of the 960 family; the option specifies the desired output -target, and warns of any incompatible instructions in the input files. -It also modifies the linker's search strategy for archive libraries, to -support the use of libraries specific to each particular -architecture, by including in the search loop names suffixed with the -string identifying the architecture. - -For example, if your \c -.B gld\c -\& command line included `\|\c -.B \-ACA\c -\|' as -well as `\|\c -.B \-ltry\c -\|', the linker would look (in its built-in search -paths, and in any paths you specify with \c -.B \-L\c -\&) for a library with -the names -.sp -.br -try -.br -libtry.a -.br -tryca -.br -libtryca.a -.br -.sp - -The first two possibilities would be considered in any event; the last -two are due to the use of `\|\c -.B \-ACA\c -\|'. - -Future releases of \c -.B gld\c -\& may support similar functionality for -other architecture families. - -You can meaningfully use \c -.B \-A\c -\& more than once on a command line, if -an architecture family allows combination of target architectures; each -use will add another pair of name variants to search for when \c -.B \-l\c -\& -specifies a library. - -.TP -.BI "-b " "input-format"\c -\& -Specify the binary format for input object files that follow this option -on the command line. You don't usually need to specify this, as -\c -.B gld\c -\& is configured to expect as a default input format the most -usual format on each machine. \c -.I input-format\c -\& is a text string, the -name of a particular format supported by the BFD libraries. -\c -.B \-format \c -.I input-format\c -\&\c -\& has the same effect. - -You may want to use this option if you are linking files with an unusual -binary format. You can also use \c -.B \-b\c -\& to switch formats explicitly (when -linking object files of different formats), by including -\c -.B \-b \c -.I input-format\c -\&\c -\& before each group of object files in a -particular format. - -The default format is taken from the environment variable -.B GNUTARGET\c -\&. You can also define the input -format from a script, using the command \c -.B TARGET\c -\&. - -.TP -.B \-Bstatic -This flag is accepted for command-line compatibility with the SunOS linker, -but has no effect on \c -.B gld\c -\&. - -.TP -.BI "-c " "commandfile"\c -\& -Directs \c -.B gld\c -\& to read link commands from the file -\c -.I commandfile\c -\&. These commands will completely override \c -.B gld\c -\&'s -default link format (rather than adding to it); \c -.I commandfile\c -\& must -specify everything necessary to describe the target format. - - -You may also include a script of link commands directly in the command -line by bracketing it between `\|\c -.B {\c -\|' and `\|\c -.B }\c -\|' characters. - -.TP -.B \-d -.TP -.B \-dc -.TP -.B \-dp -These three options are equivalent; multiple forms are supported for -compatibility with other linkers. Use any of them to make \c -.B ld\c -\& -assign space to common symbols even if a relocatable output file is -specified (\c -.B \-r\c -\&). The script command -\c -.B FORCE_COMMON_ALLOCATION\c -\& has the same effect. - -.TP -.BI "-defsym " "symbol"\c -\& = \c -.I expression\c -\& -Create a global symbol in the output file, containing the absolute -address given by \c -.I expression\c -\&. You may use this option as many -times as necessary to define multiple symbols in the command line. A -limited form of arithmetic is supported for the \c -.I expression\c -\& in this -context: you may give a hexadecimal constant or the name of an existing -symbol, or use \c -.B +\c -\& and \c -.B \-\c -\& to add or subtract hexadecimal -constants or symbols. If you need more elaborate expressions, consider -using the linker command language from a script. - -.TP -.BI "-e " "entry"\c -\& -Use \c -.I entry\c -\& as the explicit symbol for beginning execution of your -program, rather than the default entry point. for a -discussion of defaults and other ways of specifying the -entry point. - -.TP -.B \-F -.TP -.BI "-F" "format"\c -\& -Some older linkers used this option throughout a compilation toolchain -for specifying object-file format for both input and output object -files. \c -.B gld\c -\&'s mechanisms (the \c -.B \-b\c -\& or \c -.B \-format\c -\& options -for input files, the \c -.B TARGET\c -\& command in linker scripts for output -files, the \c -.B GNUTARGET\c -\& environment variable) are more flexible, but -but it accepts (and ignores) the \c -.B \-F\c -\& option flag for compatibility -with scripts written to call the old linker. - -.TP -.BI "-format " "input-format"\c -\& -Synonym for \c -.B \-b\c -\& \c -.I input-format\c -\&. - -.TP -.B \-g -Accepted, but ignored; provided for compatibility with other tools. - -.TP -.B \-i -Perform an incremental link (same as option \c -.B \-r\c -\&). - -.TP -.BI "-l" "ar"\c -\& -Add an archive file \c -.I ar\c -\& to the list of files to link. This -option may be used any number of times. \c -.B ld\c -\& will search its -path-list for occurrences of \c -.B lib\c -.I ar\c -\&.a\c -\& for every \c -.I ar\c -\& -specified. - -.TP -.BI "-L" "searchdir"\c -\& -This command adds path \c -.I searchdir\c -\& to the list of paths that -\c -.B gld\c -\& will search for archive libraries. You may use this option -any number of times. - -The default set of paths searched (without being specified with -\c -.B \-L\c -\&) depends on what emulation mode \c -.B gld\c -\& is using, and in -some cases also on how it was configured. The -paths can also be specified in a link script with the \c -.B SEARCH_DIR\c -\& -command. - -.TP -.B \-M -.TP -.B \-m -Print (to the standard output file) a link map\(em\&diagnostic information -about where symbols are mapped by \c -.B ld\c -\&, and information on global -common storage allocation. - -.TP -.B \-N -specifies readable and writable \c -.B text\c -\& and \c -.B data\c -\& sections. If -the output format supports Unix style magic numbers, the output is -marked as \c -.B OMAGIC\c -\&. - -When you use the `\|\c -.B \-N\c -\&\|' option, the linker does not page-align the -data segment. - -.TP -.B \-n -sets the text segment to be read only, and \c -.B NMAGIC\c -\& is written -if possible. - -.TP -.B \-noinhibit-exec -Normally, the linker will not produce an output file if it encounters -errors during the link process. With this flag, you can specify that -you wish the output file retained even after non-fatal errors. - -.TP -.BI "-o " "output"\c -\& -.I output\c -\& -\c -.I output\c -\& is a name for the program produced by \c -.B ld\c -\&; if this -option is not specified, the name `\|\c -.B a.out\c -\|' is used by default. The -script command \c -.B OUTPUT\c -\& can also specify the output file name. - -.TP -.BI "-R " "filename"\c -\& -.I file\c -\& -Read symbol names and their addresses from \c -.I filename\c -\&, but do not -relocate it or include it in the output. This allows your output file -to refer symbolically to absolute locations of memory defined in other -programs. - -.TP -.B \-relax -An option with machine dependent effects. Currently this option is only -supported on the H8/300. - -On some platforms, use this option to perform global optimizations that -become possible when the linker resolves addressing in your program, such -as relaxing address modes and synthesizing new instructions in the -output object file. - -On platforms where this is not supported, `\|\c -.B \-relax\c -\&\|' is accepted, but has no effect. - -.TP -.B \-r -Generates relocatable output\(em\&i.e., generate an output file that can in -turn serve as input to \c -.B gld\c -\&. This is often called \c -.I partial -linking\c -\&. As a side effect, in environments that support standard Unix -magic numbers, this option also sets the output file's magic number to -\c -.B OMAGIC\c -\&. -If this option is not specified, an absolute file is produced. When -linking C++ programs, this option \c -.I will not\c -\& resolve references to -constructors; \c -.B \-Ur\c -\& is an alternative. - -This option does the same as \c -.B \-i\c -\&. - -.TP -.B \-S -Omits debugger symbol information (but not all symbols) from the output file. - -.TP -.B \-s -Omits all symbol information from the output file. - -.TP -.BI "{ " "script" " }" -You can, if you wish, include a script of linker commands directly in -the command line instead of referring to it via an input file. When the -character `\|\c -.B {\c -\|' occurs on the command line, the linker switches to -interpreting the command language until the end of the list of commands -is reached\(em\&flagged with a closing brace `\|\c -.B }\c -\|'. Other command-line -options will not be recognized while parsing the script. -for a description of the command language. - -.TP -.BI "-Tbss " "org"\c -.TP -.BI "-Tdata " "org"\c -.TP -.BI "-Ttext " "org"\c -Use \c -.I org\c -\& as the starting address for\(em\&respectively\(em\&the -\c -.B bss\c -\&, \c -.B data\c -\&, or the \c -.B text\c -\& segment of the output file. -\c -.I textorg\c -\& must be a hexadecimal integer. - -.TP -.BI "-T " "commandfile"\c -\& -.TP -.BI "-T" "commandfile"\c -Equivalent to \c -.B \-c \c -.I commandfile\c -\&\c -\&; supported for compatibility with -other tools. - -.TP -.B \-t -Prints names of input files as \c -.B ld\c -\& processes them. - -.TP -.BI "-u " "sym"\c -\& -.I sym\c -\& -Forces \c -.I sym\c -\& to be entered in the output file as an undefined symbol. -This may, for example, trigger linking of additional modules from -standard libraries. \c -.B \-u\c -\& may be repeated with different option -arguments to enter additional undefined symbols. - -.TP -.B \-Ur -For anything other than C++ programs, this option is equivalent to -\c -.B \-r\c -\&: it generates relocatable output\(em\&i.e., an output file that can in -turn serve as input to \c -.B gld\c -\&. When linking C++ programs, \c -.B \-Ur\c -\& -\c -.I will\c -\& resolve references to constructors, unlike \c -.B \-r\c -\&. - -.TP -.B \-v -Display the version number for \c -.B gld\c -\&. - -.TP -.B \-X -If \c -.B \-s\c -\& or \c -.B \-S\c -\& is also specified, delete only local symbols -beginning with `\|\c -.B L\c -\|'. - -.TP -.B \-x -If \c -.B \-s\c -\& or \c -.B \-S\c -\& is also specified, delete all local symbols, -not just those beginning with `\|\c -.B L\c -\|'. - -.PP - -.SH ENVIRONMENT -\c -.B gld\c -\& always consults two environment variables: \c -.B GNUTARGET\c -\& -and \c -.B LDEMULATION\c -\&. Depending on the setting of the latter, other -environment variables may be used as well. - -\c -.B GNUTARGET\c -\& determines the input-file object format if you don't -use \c -.B \-b\c -\& (or its synonym \c -.B \-format\c -\&). Its value should be one -of the BFD names for an input format. If there is no -\c -.B GNUTARGET\c -\& in the environment, \c -.B gld\c -\& uses the natural format -of the host. If \c -.B GNUTARGET\c -\& is set to \c -.B default\c -\& then BFD attempts to discover the -input format by examining binary input files; this method often -succeeds, but there are potential ambiguities, since there is no method -of ensuring that the magic number used to flag object-file formats is -unique. However, the configuration procedure for BFD on each system -places the conventional format for that system first in the search-list, -so ambiguities are resolved in favor of convention. - -\c -.B LDEMULATION\c -\& controls some aspects of \c -.B gld\c -\&'s dominant -personality. Although \c -.B gld\c -\& is flexible enough to permit its use -in many contexts regardless of configuration, you can use this variable -to make it act more like one or another older linker by default. - -In particular, the value of \c -.B LDEMULATION\c -\& controls what default -linker script is used (thereby controlling the default input and output -formats; ; what default paths are searched for -archive libraries; and in some cases whether additional linker script -commands are available. - -Here is the current set of emulations available: - -.TP -.B LDEMULATION=gld -Emulate the older GNU linker. When this emulation is selected, the -default library search paths are -.sp -.br -/lib -.br -/usr/lib -.br -/usr/local/lib/lib -.br -.sp - -The default output format is set to \c -.B a.out-generic-big\c -\&, and the -default machine is the system's configured BFD default. - -.TP -.B LDEMULATION=gld68k -A variant of the \c -.B gld\c -\& emulation; only differs in specifically -setting the default BFD machine as \c -.B m68k\c -\&. - -.TP -.B LDEMULATION=gld960 -Emulate the Intel port of the older \c -.B gld\c -\& for the i960 -architectures. The default library search paths are taken from two -other environment variables, \c -.B G960LIB\c -\& and \c -.B G960BASE\c -\&. The -default architecture is \c -.B i960\c -\&. The default output format is set -to \c -.B b.out.big\c -\&, and in fact the default output file name (if -\c -.B \-o\c -\& is not specified) is \c -.B b.out\c -\&, to reflect this variant -format, for this emulation. - -This emulation can behave slightly differently depending on the setting -of the \c -.B gld\c -\& compile-time switch \c -.B GNU960\c -\&. If \c -.B gld\c -\& is -compiled with \c -.B GNU960\c -\& defined, then an additional environment -variable\(em\&\c -.B GNUTARGET\c -\&\(em\&is available; its value, if available, -specifies some other default output format than \c -.B b.out.big\c -\&. - -.TP -.B LDEMULATION=gldm88kbcs -Sets the output format to \c -.B m88kbcs\c -\& and the architecture to -\c -.B m88k\c -\&. Default library search paths are -.sp -.br -/lib -.br -/usr/lib -.br -/usr/local/lib -.br -.sp - -.TP -.B LDEMULATION=lnk960 -Emulate the Intel linker \c -.B lnk960\c -\&. The default output format is -\c -.B coff-Intel-big\c -\&. With this emulation, \c -.B gld\c -\& -supports the additional script commands \c -.B HLL\c -\& and \c -.B SYSLIB\c -\& for -specification of library archives. This is the only emulation with -extensive support for the \c -.B \-A\c -\& (architecture) command-line option. -By default, the architecture \c -.B CORE\c -\& is assumed, but you can choose -additional features from the i960 architecture family by using one of -the following with \c -.B \-A\c -\& (or by using the \c -.B OUTPUT_ARCH\c -\& command -from a script): -.sp -.br -CORE -.br -KB -.br -SB -.br -MC -.br -XA -.br -CA -.br -KA -.br -SA -.br -.sp - -The default libraries are chosen with some attention to the architecture -selected; the core library `\|\c -.B cg\c -\|' is always included, but the library -\c -.B fpg\c -\& is also used if you've specified any of the architectures -\c -.B KA\c -\&, \c -.B SA\c -\&, or \c -.B CA\c -\&. - -Like \c -.B gld960\c -\&, this emulation uses additional environment variables -to set the default library search paths. Also like \c -.B gld960\c -\&, the -behavior of this emulation is slightly different depending on whether -\c -.B gld\c -\& itself was compiled with \c -.B GNU960\c -\& defined. - -If your \c -.B gld\c -\& was compiled with \c -.B GNU960\c -\& defined, the default -paths are taken from all three of \c -.B G960LIB\c -\&, \c -.B G960BASE\c -\&, and -\c -.B I960BASE\c -\&. For the first two, paths you supply are automatically -suffixed with `\|\c -.B /lib/libcoff\c -\|'; for the last, your path is -automatically suffixed with `\|\c -.B /lib\c -\|'. - -If your \c -.B gld\c -\& was \c -.I not\c -\& compiled with \c -.B GNU960\c -\& defined, -the default paths are taken from \c -.B I960BASE\c -\&, and \c -.B G960BASE\c -\& is -only consulted if \c -.B I960BASE\c -\& is undefined. In this case -\c -.B G960LIB\c -\& is not used at all. - -.TP -.B LDEMULATION=vanilla -This is the least specific setting for \c -.B gld\c -\&. You can set -\c -.B LDEMULATION=vanilla\c -\& to disable emulation of other linkers. This -setting makes \c -.B gld\c -\& take the default machine from the BFD -configuration on your system; \c -.B a.out-generic-big\c -\& is the default -target. No other defaults are specified. - -.PP - -.SH "SEE ALSO" - -.BR objdump ( 1 ) -.br -.br -.RB "`\|" ld "\|' and `\|" binutils "\|'" -entries in -.B info\c -.br -.I -gld: the GNU linker\c -, Steve Chamberlain and Roland Pesch; -.I -The GNU Binary Utilities\c -, Roland H. Pesch. - -.SH COPYING -Copyright (c) 1991, 1992 Free Software Foundation, Inc. -.PP -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. -.PP -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. -.PP -Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that this permission notice may be included in -translations approved by the Free Software Foundation instead of in -the original English. diff --git a/ld/h8300hds.c b/ld/h8300hds.c deleted file mode 100755 index 36ca6ef..0000000 --- a/ld/h8300hds.c +++ /dev/null @@ -1,135 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - Written by Steve Chamberlain steve@cygnus.com - - The controller which tells the gnu linker how to behave like one for - the Hitach H8/300 with IEEE records. -*/ - -#include "bfd.h" -#include "sysdep.h" - -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void h8300hds_before_parse() -{ - ldfile_output_architecture = bfd_arch_h8300; -} - - -static void -h8300hds_after_parse() -{ - -} - -static void -h8300hds_after_allocation() -{ - -} - -static void -h8300hds_before_allocation() -{ - -} - - -static void -h8300hds_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - bfd_set_arch_mach(output_bfd, - ldfile_output_architecture, ldfile_output_machine); -} - -static char * -h8300hds_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return H8300HDS_TARGET; -} - -static void -h8300hds_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -h8300hds_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *h8300hds_script = -#include "h8300hds.x" -; -static char *h8300hds_script_option_Ur = -#include "h8300hds.x" -; -static char *h8300hds_script_option_r = -#include "h8300hds.x" -; - -static char *h8300hds_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return h8300hds_script_option_Ur; - } - if (config.relocateable_output) { - return h8300hds_script_option_r; - } - - return h8300hds_script; -} -struct ld_emulation_xfer_struct ld_h8300hds_emulation = -{ - h8300hds_before_parse, - h8300hds_syslib, - h8300hds_hll, - h8300hds_after_parse, - h8300hds_after_allocation, - h8300hds_set_output_arch, - h8300hds_choose_target, - h8300hds_before_allocation, - h8300hds_get_script, -}; diff --git a/ld/h8300hds.sc b/ld/h8300hds.sc deleted file mode 100755 index 0527766..0000000 --- a/ld/h8300hds.sc +++ /dev/null @@ -1,22 +0,0 @@ -OUTPUT_FORMAT("coff-h8300") -OUTPUT_ARCH(h8300) - -SECTIONS -{ -.text 0: - { - *(.text) - *(.strings) - } -.data . : - { - *(.data) - } -.bss . : - { - *(.bss) - *(COMMON) - _end = .; - } -} - diff --git a/ld/h8300hms.c b/ld/h8300hms.c deleted file mode 100755 index 06e8a89..0000000 --- a/ld/h8300hms.c +++ /dev/null @@ -1,135 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - Written by Steve Chamberlain steve@cygnus.com - - The controller which tells the gnu linker how to behave like one for - the Hitach H8/300 with IEEE records. -*/ - -#include "bfd.h" -#include "sysdep.h" - -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void h8300hms_before_parse() -{ - ldfile_output_architecture = bfd_arch_h8300; -} - - -static void -h8300hms_after_parse() -{ - -} - -static void -h8300hms_after_allocation() -{ - -} - -static void -h8300hms_before_allocation() -{ - -} - - -static void -h8300hms_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - bfd_set_arch_mach(output_bfd, - ldfile_output_architecture, ldfile_output_machine); -} - -static char * -h8300hms_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return H8300HMS_TARGET; -} - -static void -h8300hms_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -h8300hms_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *h8300hms_script = -#include "h8300hms.x" -; -static char *h8300hms_script_option_Ur = -#include "h8300hms.x" -; -static char *h8300hms_script_option_r = -#include "h8300hms.x" -; - -static char *h8300hms_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return h8300hms_script_option_Ur; - } - if (config.relocateable_output) { - return h8300hms_script_option_r; - } - - return h8300hms_script; -} -struct ld_emulation_xfer_struct ld_h8300hms_emulation = -{ - h8300hms_before_parse, - h8300hms_syslib, - h8300hms_hll, - h8300hms_after_parse, - h8300hms_after_allocation, - h8300hms_set_output_arch, - h8300hms_choose_target, - h8300hms_before_allocation, - h8300hms_get_script, -}; diff --git a/ld/h8300hms.sc b/ld/h8300hms.sc deleted file mode 100755 index 62ba07e..0000000 --- a/ld/h8300hms.sc +++ /dev/null @@ -1,30 +0,0 @@ -OUTPUT_FORMAT("coff-h8300") -OUTPUT_ARCH(h8300) - -MEMORY { - rom : o = 0x0000, l = 0x7fe0 - duart : o = 0x7fe0, l = 16 - ram : o = 0x8000, l = 29k - hmsram: o = 0xfb80, l = 512 - } - -SECTIONS -{ -.text : - { - *(.text) - *(.strings) - } > ram -.data : - { - *(.data) - } > ram -.bss : - { - _bss_start = . ; - *(.bss) - *(COMMON) - _end = .; - } >ram -} - diff --git a/ld/i386aout.c b/ld/i386aout.c deleted file mode 100755 index 7bd06c5..0000000 --- a/ld/i386aout.c +++ /dev/null @@ -1,159 +0,0 @@ -/* NOTE: If there are angle brackets here: I386AOUT then this is a - * template file (ldtemplate), intended for processing by sed. - * Otherwise, this file has already been processed by sed, - * and customized for a particular emulation target. - * In that DO NOT EDIT the file; edit ldtemplate instead. - */ - -/* emulate the original gld for the given I386AOUT - Copyright (C) 1991 Free Software Foundation, Inc. - Written by Steve Chamberlain steve@cygnus.com - -This file is part of GLD, the Gnu Linker. - -This program 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 2 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, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id:# - */ - -#define TARGET_IS_I386AOUT - - -#include "bfd.h" -#include "sysdep.h" -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gldi386aout_before_parse() -{ -#ifdef TARGET_IS_M88KBCS - extern char lprefix; - lprefix = '@'; -#else -#ifndef TARGET_ /* I.e., if not generic */ - ldfile_output_architecture = bfd_arch_i386; -#endif -#endif -} - - -static void -gldi386aout_after_parse() -{ - -} - -static void -gldi386aout_after_allocation() -{ - -} - -static void -gldi386aout_before_allocation() -{ - -} - - -static void -gldi386aout_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - bfd_set_arch_mach(output_bfd, - ldfile_output_architecture, ldfile_output_machine); -} - -static char * -gldi386aout_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLDI386AOUT_TARGET; -} - -static void -gldi386aout_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gldi386aout_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gldi386aout_script = -#include "i386aout.x" -; -static char *gldi386aout_script_option_Ur = -#include "i386aout.xu" -; -static char *gldi386aout_script_option_r = -#include "i386aout.xr" -; -static char *gldi386aout_script_option_n = /* Used with -n flag. */ -#include "i386aout.xn" -; -static char *gldi386aout_script_option_N = /* Used with -N flag. */ -#include "i386aout.xN" -; - -static char *gldi386aout_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gldi386aout_script_option_Ur; - } - if (config.relocateable_output == true) { - return gldi386aout_script_option_r; - } - if (!config.text_read_only) - return gldi386aout_script_option_N; - if (!config.magic_demand_paged) - return gldi386aout_script_option_n; - return gldi386aout_script; -} -struct ld_emulation_xfer_struct ld_gldi386aout_emulation = -{ - gldi386aout_before_parse, - gldi386aout_syslib, - gldi386aout_hll, - gldi386aout_after_parse, - gldi386aout_after_allocation, - gldi386aout_set_output_arch, - gldi386aout_choose_target, - gldi386aout_before_allocation, - gldi386aout_get_script, -}; diff --git a/ld/i386aout.sc b/ld/i386aout.sc deleted file mode 100755 index 9ea8e64..0000000 --- a/ld/i386aout.sc +++ /dev/null @@ -1,25 +0,0 @@ -OUTPUT_FORMAT("a.out-i386") -OUTPUT_ARCH(i386) - -__DYNAMIC = 0; -SECTIONS -{ - .text 0 BLOCK(0x1000) : - { - CREATE_OBJECT_SYMBOLS - *(.text) - _etext = ALIGN(0x1000); - } - .data ALIGN(0x1000) : - { - *(.data) - CONSTRUCTORS - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - *(COMMON) - _end = .; - } -} diff --git a/ld/ld-emul.c b/ld/ld-emul.c deleted file mode 100755 index ce99ce7..0000000 --- a/ld/ld-emul.c +++ /dev/null @@ -1,135 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id$ - */ - -/* - * clearing house for ld emulation states - */ - -#include "sysdep.h" -#include "bfd.h" - -#include "config.h" -#include "ld.h" -#include "ld-emul.h" -#include "ldmisc.h" - -extern ld_emulation_xfer_type ld_lnk960_emulation; -extern ld_emulation_xfer_type ld_gldm88kbcs_emulation; -extern ld_emulation_xfer_type ld_gld_emulation; -extern ld_emulation_xfer_type ld_vanilla_emulation; -extern ld_emulation_xfer_type ld_gld68k_emulation; -extern ld_emulation_xfer_type ld_gld960_emulation; - - - -ld_emulation_xfer_type *ld_emulation; - -void -ldemul_hll(name) -char *name; -{ - ld_emulation->hll(name); -} - - -void ldemul_syslib(name) -char *name; -{ - ld_emulation->syslib(name); -} - -void -ldemul_after_parse() -{ - ld_emulation->after_parse(); -} - -void -ldemul_before_parse() -{ - ld_emulation->before_parse(); -} - -void -ldemul_after_allocation() -{ - ld_emulation->after_allocation(); -} - -void -ldemul_before_allocation() -{ - if (ld_emulation->before_allocation) { - ld_emulation->before_allocation(); - } -} - - -void -ldemul_set_output_arch() -{ - ld_emulation->set_output_arch(); -} - -char * -ldemul_choose_target() -{ - return ld_emulation->choose_target(); -} - -char * -ldemul_get_script() -{ - return ld_emulation->get_script(); -} - -void -ldemul_choose_mode(target) -char *target; -{ - if (strcmp(target,LNK960_EMULATION_NAME)==0) { - ld_emulation = &ld_lnk960_emulation; - } - else if (strcmp(target,GLD960_EMULATION_NAME)==0) { - ld_emulation = &ld_gld960_emulation; - } -else if (strcmp(target,GLDM88KBCS_EMULATION_NAME)==0) { - ld_emulation = &ld_gldm88kbcs_emulation; -} -#ifndef GNU960 - else if (strcmp(target,GLD_EMULATION_NAME)==0) { - ld_emulation = &ld_gld_emulation; - } - else if (strcmp(target,VANILLA_EMULATION_NAME)==0) { - ld_emulation = &ld_vanilla_emulation; - } - else if (strcmp(target,GLD68K_EMULATION_NAME)==0) { - ld_emulation = &ld_gld68k_emulation; - } -#endif - else { - info("%P%F unrecognised emulation mode: %s\n",target); - } -} - - - diff --git a/ld/ld-gld-Ur.script b/ld/ld-gld-Ur.script deleted file mode 100755 index 3871454..0000000 --- a/ld/ld-gld-Ur.script +++ /dev/null @@ -1,31 +0,0 @@ - -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - ___DTOR_LIST__ = . ; - LONG((___CTOR_LIST__ - .) / 4 -2) - *(___DTOR_LIST__) - LONG(0) - ___CTOR_LIST__ = . ; - LONG((___end_list__ - .) / 4 -2) - *(___CTOR_LIST__) - LONG(0) - ___end_list__ = . ; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ld-gld-r.script b/ld/ld-gld-r.script deleted file mode 100755 index a3b39fe..0000000 --- a/ld/ld-gld-r.script +++ /dev/null @@ -1,20 +0,0 @@ -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} diff --git a/ld/ld-gld.c b/ld/ld-gld.c deleted file mode 100755 index 018d8d1..0000000 --- a/ld/ld-gld.c +++ /dev/null @@ -1,145 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id$ - * -*/ - -/* - * emulate the original gld - * - * Written by Steve Chamberlain steve@cygnus.com - */ - - -#include "sysdep.h" -#include "bfd.h" - - -#include "ld.h" -#include "config.h" -#include "ld-emul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gld_before_parse() -{ - ldfile_add_library_path("/lib"); - ldfile_add_library_path("/usr/lib"); - ldfile_add_library_path("/usr/local/lib/lib"); -} - - -static void -gld_after_parse() -{ - -} - -static void -gld_after_allocation() -{ - -} - -static void -gld_before_allocation() -{ - -} - - -static void -gld_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, ldfile_output_machine); -} - -static char * -gld_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLD_TARGET; -} - -static void -gld_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gld_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gld_script = -#include "ld-gld.x" -; - -static char *gld_script_option_Ur = -#include "ld-gld-Ur.x" -; - -static char *gld_script_option_r = -#include "ld-gld-r.x" -; - -static char *gld_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gld_script_option_Ur; - } - if (config.relocateable_output) { - return gld_script_option_r; - } - - return gld_script; -} -struct ld_emulation_xfer_struct ld_gld_emulation = -{ - gld_before_parse, - gld_syslib, - gld_hll, - gld_after_parse, - gld_after_allocation, - gld_set_output_arch, - gld_choose_target, - gld_before_allocation, - gld_get_script, -}; - diff --git a/ld/ld-gld.script b/ld/ld-gld.script deleted file mode 100755 index 2f402c1..0000000 --- a/ld/ld-gld.script +++ /dev/null @@ -1,28 +0,0 @@ -OUTPUT_ARCH(sparc) -OUTPUT_FORMAT("a.out-sunos-big") -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -__DYNAMIC = 0; -SECTIONS -{ - .text 0x2020 BLOCK(0x2000): - { - CREATE_OBJECT_SYMBOLS - *(.text) - _etext = ALIGN( 0x2000); - } - .data ALIGN(0x2000) : - { - *(.data) - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - _end = .; - } -} - - diff --git a/ld/ld-gld68k-Ur.script b/ld/ld-gld68k-Ur.script deleted file mode 100755 index aa89c6a..0000000 --- a/ld/ld-gld68k-Ur.script +++ /dev/null @@ -1,21 +0,0 @@ -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ld-gld68k-r.script b/ld/ld-gld68k-r.script deleted file mode 100755 index 8cbc9dc..0000000 --- a/ld/ld-gld68k-r.script +++ /dev/null @@ -1,22 +0,0 @@ - -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ld-gld68k.c b/ld/ld-gld68k.c deleted file mode 100755 index 5d996e3..0000000 --- a/ld/ld-gld68k.c +++ /dev/null @@ -1,143 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id:# -*/ - -/* - * emulate the original gld running on a 68k system - * - * Written by Steve Chamberlain steve@cygnus.com - */ - - -#include "sysdep.h" -#include "bfd.h" - -#include "ld.h" -#include "config.h" -#include "ld-emul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gld68k_before_parse() -{ - ldfile_add_library_path("/lib"); - ldfile_add_library_path("/usr/lib"); - ldfile_add_library_path("/usr/local/lib/lib"); - ldfile_output_architecture = bfd_arch_m68k; -} - - -static void -gld68k_after_parse() -{ - -} - -static void -gld68k_after_allocation() -{ - -} - -static void -gld68k_before_allocation() -{ - -} - - -static void -gld68k_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - unsigned long machine = 0; - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, machine); -} - -static char * -gld68k_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLD68K_TARGET; -} - -static void -gld68k_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gld68k_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gld68k_script = -#include "ld-gld68k.x" -; - -static char *gld68k_script_option_Ur = -#include "ld-gld68k-Ur.x" -; -static char *gld68k_script_option_r = -#include "ld-gld68k-r.x" -; -static char *gld68k_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gld68k_script_option_Ur; - } - if (config.relocateable_output) { - return gld68k_script_option_r; - } - - return gld68k_script; -} -struct ld_emulation_xfer_struct ld_gld68k_emulation = -{ - gld68k_before_parse, - gld68k_syslib, - gld68k_hll, - gld68k_after_parse, - gld68k_after_allocation, - gld68k_set_output_arch, - gld68k_choose_target, - gld68k_before_allocation, - gld68k_get_script, -}; - diff --git a/ld/ld-gld68k.script b/ld/ld-gld68k.script deleted file mode 100755 index be91d91..0000000 --- a/ld/ld-gld68k.script +++ /dev/null @@ -1,28 +0,0 @@ -OUTPUT_FORMAT("a.out-sunos-big") -OUTPUT_ARCH(m68k) - -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -__DYNAMIC = 0; -SECTIONS -{ - .text 0x2020 BLOCK(0x2000): - { - CREATE_OBJECT_SYMBOLS - *(.text) - _etext = ALIGN( 0x2000); - } - .data ALIGN(0x20000) : - { - *(.data) - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - _end = .; - } -} - diff --git a/ld/ld-gld960.c b/ld/ld-gld960.c deleted file mode 100755 index 5aed97e..0000000 --- a/ld/ld-gld960.c +++ /dev/null @@ -1,171 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - $Id$ -*/ - -/* - * emulate the Intels port of gld - */ - - -#include "sysdep.h" -#include "bfd.h" - - -#include "ld.h" -#include "config.h" -#include "ld-emul.h" -#include "ldfile.h" -#include "ldmisc.h" - - -/* IMPORTS */ -extern char *output_filename; -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -#ifdef GNU960 - -static void -gld960_before_parse() -{ - static char *env_variables[] = { "G960LIB", "G960BASE", 0 }; - char **p; - char *env ; - - for ( p = env_variables; *p; p++ ){ - env = (char *) getenv(*p); - if (env) { - ldfile_add_library_path(concat(env,"/lib/libbout","")); - } - } - ldfile_output_architecture = bfd_arch_i960; -} - -#else /* not GNU960 */ - -static void gld960_before_parse() -{ - char *env ; - env = getenv("G960LIB"); - if (env) { - ldfile_add_library_path(env); - } - env = getenv("G960BASE"); - if (env) { - ldfile_add_library_path(concat(env,"/lib","")); - } - ldfile_output_architecture = bfd_arch_i960; -} - -#endif /* GNU960 */ - - -static void -gld960_after_parse() -{ - -} - -static void -gld960_after_allocation() -{ - -} - -static void -gld960_before_allocation() -{ - -} - - -static void -gld960_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - unsigned long machine = 0; - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, machine); -} - -static char * -gld960_choose_target() -{ -#ifdef GNU960 - - output_filename = "b.out"; - return bfd_make_targ_name(BFD_BOUT_FORMAT,HOST_BYTE_ORDER_BIG_P); - -#else - - char *from_outside = getenv(TARGET_ENVIRON); - output_filename = "b.out"; - - if (from_outside != (char *)NULL) - return from_outside; - return GLD960_TARGET; - -#endif -} - -static void -gld960_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gld960_hll() -{ - info("%S HLL ignored\n"); -} - - -static char *script = -#include "ld-gld960.x" -; - - -static char * -gld960_get_script() -{ -return script; -} - -struct ld_emulation_xfer_struct ld_gld960_emulation = -{ - gld960_before_parse, - gld960_syslib, - gld960_hll, - gld960_after_parse, - gld960_after_allocation, - gld960_set_output_arch, - gld960_choose_target, - gld960_before_allocation, - gld960_get_script, -}; diff --git a/ld/ld-gld960.script b/ld/ld-gld960.script deleted file mode 100755 index 1c40a73..0000000 --- a/ld/ld-gld960.script +++ /dev/null @@ -1,23 +0,0 @@ -SECTIONS -{ - .text : - { - CREATE_OBJECT_SYMBOLS - *(.text) - _etext = .; - } - - .data SIZEOF(.text) + ADDR(.text): - { - - *(.data) - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - _bss_start = .; - *(.bss) - [COMMON] - _end = . ; - } -} diff --git a/ld/ld-gldm88kbcs-Ur.script b/ld/ld-gldm88kbcs-Ur.script deleted file mode 100755 index 8d3f12b..0000000 --- a/ld/ld-gldm88kbcs-Ur.script +++ /dev/null @@ -1,31 +0,0 @@ -SCRIPT -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - ___DTOR_LIST__ = . ; - LONG((___CTOR_LIST__ - .) / 4 -2) - *(___DTOR_LIST__) - LONG(0) - ___CTOR_LIST__ = . ; - LONG((___end_list__ - .) / 4 -2) - *(___CTOR_LIST__) - LONG(0) - ___end_list__ = . ; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} -ENDSCRIPT diff --git a/ld/ld-gldm88kbcs-r.script b/ld/ld-gldm88kbcs-r.script deleted file mode 100755 index a3b39fe..0000000 --- a/ld/ld-gldm88kbcs-r.script +++ /dev/null @@ -1,20 +0,0 @@ -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} diff --git a/ld/ld-gldm88kbcs.c b/ld/ld-gldm88kbcs.c deleted file mode 100755 index bfb539f..0000000 --- a/ld/ld-gldm88kbcs.c +++ /dev/null @@ -1,141 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id$ - * -*/ - -/* - * Written by Steve Chamberlain steve@cygnus.com - */ - - -#include "sysdep.h" -#include "bfd.h" - - -#include "ld.h" -#include "config.h" -#include "ld-emul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gldm88kbcs_before_parse() -{ - -} - - -static void -gldm88kbcs_after_parse() -{ - -} - -static void -gldm88kbcs_after_allocation() -{ - -} - -static void -gldm88kbcs_before_allocation() -{ - -} - - -static void -gldm88kbcs_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, ldfile_output_machine); -} - -static char * -gldm88kbcs_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLDM88KBCS_TARGET; -} - -static void -gldm88kbcs_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gldm88kbcs_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gldm88kbcs_script = -#include "ld-gldm88kbcs.x" -; - -static char *gldm88kbcs_script_option_Ur = -#include "ld-gldm88kbcs-Ur.x" -; - -static char *gldm88kbcs_script_option_r = -#include "ld-gldm88kbcs-r.x" -; - -static char *gldm88kbcs_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gldm88kbcs_script_option_Ur; - } - if (config.relocateable_output) { - return gldm88kbcs_script_option_r; - } - - return gldm88kbcs_script; -} -struct ld_emulation_xfer_struct ld_gldm88kbcs_emulation = -{ - gldm88kbcs_before_parse, - gldm88kbcs_syslib, - gldm88kbcs_hll, - gldm88kbcs_after_parse, - gldm88kbcs_after_allocation, - gldm88kbcs_set_output_arch, - gldm88kbcs_choose_target, - gldm88kbcs_before_allocation, - gldm88kbcs_get_script, -}; - diff --git a/ld/ld-gldm88kbcs.script b/ld/ld-gldm88kbcs.script deleted file mode 100755 index ae7cb85..0000000 --- a/ld/ld-gldm88kbcs.script +++ /dev/null @@ -1,36 +0,0 @@ -OUTPUT_FORMAT(m88kbcs) -OUTPUT_ARCH(m88k) -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -__DYNAMIC = 0; -SECTIONS -{ - .text 0x2020 BLOCK(0x2000): - { - CREATE_OBJECT_SYMBOLS - *(.text) - _etext = ALIGN( 0x2000); - } - .data ALIGN(0x2000) : - { - *(.data) - ___DTOR_LIST__ = . ; - LONG((___CTOR_LIST__ - .) / 4 -2) - *(___DTOR_LIST__) - LONG(0) - ___CTOR_LIST__ = . ; - LONG((_edata - .) / 4 -2) - *(___CTOR_LIST__) - LONG(0) - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - _end = .; - } -} - - diff --git a/ld/ld-lnk960-r.script b/ld/ld-lnk960-r.script deleted file mode 100755 index daf59bb..0000000 --- a/ld/ld-lnk960-r.script +++ /dev/null @@ -1,17 +0,0 @@ -SECTIONS -{ - .text 0: - { - *(.text) - } - .data SIZEOF(.text) + ADDR(.text): - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ld-lnk960.c b/ld/ld-lnk960.c deleted file mode 100755 index 984ed2e..0000000 --- a/ld/ld-lnk960.c +++ /dev/null @@ -1,288 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - $Id$ -*/ - -/* - - Written by Steve Chamberlain steve@cygnus.com - - * intel coff loader emulation specific stuff - */ - -#include "sysdep.h" -#include "bfd.h" - -/*#include "archures.h"*/ -#include "ld.h" -#include "config.h" -#include "ld-emul.h" -#include "ldmisc.h" -#include "ldlang.h" -#include "ldfile.h" - -extern boolean lang_float_flag; -extern bfd *output_bfd; - - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - - -typedef struct lib_list { - char *name; - struct lib_list *next; -} lib_list_type; - -static lib_list_type *hll_list; -static lib_list_type **hll_list_tail = &hll_list; - -static lib_list_type *syslib_list; -static lib_list_type **syslib_list_tail = &syslib_list; - - -static void -append(list, name) -lib_list_type ***list; -char *name; -{ - lib_list_type *element = - (lib_list_type *)(ldmalloc(sizeof(lib_list_type))); - - element->name = name; - element->next = (lib_list_type *)NULL; - **list = element; - *list = &element->next; - -} - -static boolean had_hll = false; -static boolean had_hll_name = false; -static void -lnk960_hll(name) -char *name; -{ - had_hll = true; - if (name != (char *)NULL) { - had_hll_name = true; - append(&hll_list_tail, name); - } -} - -static void -lnk960_syslib(name) -char *name; -{ - append(&syslib_list_tail,name); -} - - - -#ifdef GNU960 - -static void -lnk960_before_parse() -{ - static char *env_variables[] = { "G960LIB", "G960BASE", 0 }; - char **p; - char *env ; - - for ( p = env_variables; *p; p++ ){ - env = (char *) getenv(*p); - if (env) { - ldfile_add_library_path(concat(env,"/lib/libcoff","")); - } - } - - env= (char *) getenv("I960BASE"); - if ( env ) { - ldfile_add_library_path(concat(env,"/lib","")); - } - - ldfile_output_architecture = bfd_arch_i960; - ldfile_output_machine = bfd_mach_i960_core; -} - -#else /* not GNU960 */ - -static void -lnk960_before_parse() -{ - char *name = getenv("I960BASE"); - - if (name == (char *)NULL) { - name = getenv("G960BASE"); - if (name == (char *)NULL) { - info("%P%F I960BASE and G960BASE not set\n"); - } - } - - - ldfile_add_library_path(concat(name,"/lib","")); - ldfile_output_architecture = bfd_arch_i960; - ldfile_output_machine = bfd_mach_i960_core; -} - -#endif /* GNU960 */ - - -static void -add_on(list, search) -lib_list_type *list; -lang_input_file_enum_type search; -{ - while (list) { - lang_add_input_file(list->name, - search, - (char *)NULL); - list = list->next; - } -} -static void lnk960_after_parse() -{ - - /* If there has been no arch, default to -KB */ - if (ldfile_output_machine_name[0] ==0) { - ldfile_add_arch("KB"); - } - - /* if there has been no hll list then add our own */ - - if(had_hll && !had_hll_name) { - append(&hll_list_tail,"cg"); - if (ldfile_output_machine == bfd_mach_i960_ka_sa || - ldfile_output_machine == bfd_mach_i960_ca) { - { - append(&hll_list_tail,"fpg"); - } - } - } - - add_on(hll_list, lang_input_file_is_l_enum); - add_on(syslib_list, lang_input_file_is_search_file_enum); -} - -static void -lnk960_before_allocation() -{ -} -static void -lnk960_after_allocation() -{ - extern ld_config_type config; - if (config.relocateable_output == false) { - lang_abs_symbol_at_end_of(".text","_etext"); - lang_abs_symbol_at_end_of(".data","_edata"); - lang_abs_symbol_at_beginning_of(".bss","_bss_start"); - lang_abs_symbol_at_end_of(".bss","_end"); - } -} - - -static struct - { - unsigned long number; - char *name; - } -machine_table[] = { - bfd_mach_i960_core ,"CORE", - bfd_mach_i960_kb_sb ,"KB", - bfd_mach_i960_kb_sb ,"SB", - bfd_mach_i960_mc ,"MC", - bfd_mach_i960_xa ,"XA", - bfd_mach_i960_ca ,"CA", - bfd_mach_i960_ka_sa ,"KA", - bfd_mach_i960_ka_sa ,"SA", - - bfd_mach_i960_core ,"core", - bfd_mach_i960_kb_sb ,"kb", - bfd_mach_i960_kb_sb ,"sb", - bfd_mach_i960_mc ,"mc", - bfd_mach_i960_xa ,"xa", - bfd_mach_i960_ca ,"ca", - bfd_mach_i960_ka_sa ,"ka", - bfd_mach_i960_ka_sa ,"sa", - 0,(char *)NULL -}; - -static void -lnk960_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - unsigned int i; - ldfile_output_machine = bfd_mach_i960_core; - for (i= 0; machine_table[i].name != (char*)NULL; i++) { - if (strcmp(ldfile_output_machine_name,machine_table[i].name)==0) { - ldfile_output_machine = machine_table[i].number; - break; - } - } - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, ldfile_output_machine); -} - -static char * -lnk960_choose_target() -{ -#ifdef GNU960 - - return bfd_make_targ_name(BFD_COFF_FORMAT,HOST_BYTE_ORDER_BIG_P); - -#else - - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return LNK960_TARGET; - -#endif -} - -/* The default script if none is offered */ -static char *lnk960_script = -#include "ld-lnk960.x" -; - - -static char *lnk960_script_relocateable = -#include "ld-lnk960-r.x" -; - -static char *lnk960_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output) { - return lnk960_script_relocateable; - } - return lnk960_script; -} -struct ld_emulation_xfer_struct ld_lnk960_emulation = -{ - lnk960_before_parse, - lnk960_syslib, - lnk960_hll, - lnk960_after_parse, - lnk960_after_allocation, - lnk960_set_output_arch, - lnk960_choose_target, - lnk960_before_allocation, - lnk960_get_script, -}; diff --git a/ld/ld-lnk960.script b/ld/ld-lnk960.script deleted file mode 100755 index f498412..0000000 --- a/ld/ld-lnk960.script +++ /dev/null @@ -1,21 +0,0 @@ - -SECTIONS -{ - .text : - { - *(.text) - } -_etext = . ; - .data SIZEOF(.text) + ADDR(.text): - { - *(.data) - } -_edata = .; - .bss SIZEOF(.data) + ADDR(.data) : - { - _bss_start = . ; - *(.bss) - [COMMON] - } -_end = . ; -} diff --git a/ld/ld-vanilla.c b/ld/ld-vanilla.c deleted file mode 100755 index 883fb1d..0000000 --- a/ld/ld-vanilla.c +++ /dev/null @@ -1,124 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id$ - * -*/ - -/* - * A vanilla emulation with no defaults - * - * Written by Steve Chamberlain steve@cygnus.com - */ - - -#include "sysdep.h" -#include "bfd.h" - - -#include "ld.h" -#include "config.h" -#include "ld-emul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void vanilla_before_parse() -{ -} - - -static void -vanilla_after_parse() -{ - -} - -static void -vanilla_after_allocation() -{ - -} - -static void -vanilla_before_allocation() -{ - -} - - -static void -vanilla_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - unsigned long machine = 0; - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, machine); -} - -static char * -vanilla_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return VANILLA_TARGET; -} - -static void -vanilla_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -vanilla_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - - -static char *vanilla_get_script() -{ -return ""; -} - -struct ld_emulation_xfer_struct ld_vanilla_emulation = -{ - vanilla_before_parse, - vanilla_syslib, - vanilla_hll, - vanilla_after_parse, - vanilla_after_allocation, - vanilla_set_output_arch, - vanilla_choose_target, - vanilla_before_allocation, - vanilla_get_script, -}; - diff --git a/ld/ld.tex b/ld/ld.tex deleted file mode 100755 index 1764ad5..0000000 --- a/ld/ld.tex +++ /dev/null @@ -1,1014 +0,0 @@ -\input texinfo -@parindent=0pt -@setfilename gld -@c @@setchapternewpage odd -@settitle GLD, The GNU linker -@titlepage -@title{gld} -@subtitle{The gnu loader} -@sp 1 -@subtitle Second Edition---gld version 2.0 -@subtitle January 1991 -@vskip 0pt plus 1filll -Copyright @copyright{} 1991 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that -the entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. - -@author {Steve Chamberlain} -@author {Cygnus Support} -@author {steve@@cygnus.com} -@end titlepage - -@node Top,,, -@comment node-name, next, previous, up -@ifinfo -This file documents the GNU linker gld. -@end ifinfo - -@c chapter What does a linker do ? -@c chapter Command Language -@noindent -@chapter Overview - - -The @code{gld} command combines a number of object and archive files, -relocates their data and ties up symbol references. Often the last -step in building a new compiled program to run is a call to @code{gld}. - -The @code{gld} command accepts Linker Command Language files in -a superset of AT+T's Link Editor Command Language syntax, -to provide explict and total control over the linking process. - -This version of @code{gld} uses the general purpose @code{bfd} libraries -to operate on object files. This allows @code{gld} to read and -write any of the formats supported by @code{bfd}, different -formats may be linked together producing any available object file. - -Supported formats: -@itemize @bullet -@item -Sun3 68k a.out -@item -IEEE-695 68k Object Module Format -@item -Oasys 68k Binary Relocatable Object File Format -@item -Sun4 sparc a.out -@item -88k bcs coff -@item -i960 coff little endian -@item -i960 coff big endian -@item -i960 b.out little endian -@item -i960 b.out big endian -@item -s-records -@end itemize - -When linking similar formats, @code{gld} maintains all debugging -information. - -@chapter Command line options - -@example - gld [ -Bstatic ] [ -D @var{datasize} ] - [ -c @var{filename} ] - [ -d ] | [ -dc ] | [ -dp ] - [ -i ] - [ -e @var{entry} ] [ -l @var{arch} ] [ -L @var{searchdir} ] [ -M ] - [ -N | -n | -z ] [ -noinhibit-exec ] [ -r ] [ -S ] [ -s ] - [ -f @var{fill} ] - [ -T @var{textorg} ] [ -Tdata @var{dataorg} ] [ -t ] [ -u @var{sym}] - [ -X ] [ -x ] - [-o @var{output} ] @var{objfiles}@dots{} -@end example - -Command-line options to GNU @code{gld} may be specified in any order, and -may be repeated at will. For the most part, repeating an option with a -different argument will either have no further effect, or override prior -occurrences (those further to the left on the command line) of an -option. - -The exceptions which may meaningfully be present several times -are @code{-L}, @code{-l}, and @code{-u}. - -@var{objfiles} may follow, precede, or be mixed in with -command-line options; save that an @var{objfiles} argument may not be -placed between an option flag and its argument. - -Option arguments must follow the option letter without intervening -whitespace, or be given as separate arguments immediately following the -option that requires them. - -@table @code -@item @var{objfiles}@dots{} -The object files @var{objfiles} to be linked; at least one must be specified. - -@item -Bstatic -This flag is accepted for command-line compatibility with the SunOS linker, -but has no effect on @code{gld}. - -@item -c @var{commandfile} -Directs @code{gld} to read linkage commands from the file @var{commandfile}. - -@item -D @var{datasize} -Use this option to specify a target size for the @code{data} segment of -your linked program. The option is only obeyed if @var{datasize} is -larger than the natural size of the program's @code{data} segment. - -@var{datasize} must be an integer specified in hexadecimal. - -@code{ld} will simply increase the size of the @code{data} segment, -padding the created gap with zeros, and reduce the size of the -@code{bss} segment to match. - -@item -d -Force @code{ld} to assign space to common symbols -even if a relocatable output file is specified (@code{-r}). - -@item -dc | -dp -This flags is accepted for command-line compatibility with the SunOS linker, -but has no effect on @code{gld}. - -@item -e @var{entry} -Use @var{entry} as the explicit symbol for beginning execution of your -program, rather than the default entry point. If this symbol is -not specified, the symbol @code{start} is used as the entry address. -If there is no symbol called @code{start}, then the entry address -is set to the first address in the first output section -(usually the @samp{text} section). - -@item -f @var{fill} -Sets the default fill pattern for ``holes'' in the output file to -the lowest two bytes of the expression specified. - -@item -i -Produce an incremental link (same as option @code{-r}). - -@item -l @var{arch} -Add an archive file @var{arch} to the list of files to link. This -option may be used any number of times. @code{ld} will search its -path-list for occurrences of @code{lib@var{arch}.a} for every @var{arch} -specified. - -@c This also has a side effect of using the "c++ demangler" if we happen -@c to specify -llibg++. Document? pesch@@cygnus.com, 24jan91 - -@item -L @var{searchdir} -This command adds path @var{searchdir} to the -list of paths that @code{gld} will search for archive libraries. You -may use this option any number of times. - -@c Should we make any attempt to list the standard paths searched -@c without listing? When hacking on a new system I often want to know -@c this, but this may not be the place... it's not constant across -@c systems, of course, which is what makes it interesting. -@c pesch@@cygnus.com, 24jan91. - -@item -M -@itemx -m -Print (to the standard output file) a link map---diagnostic information -about where symbols are mapped by @code{ld}, and information on global -common storage allocation. - -@item -N -specifies read and writable @code{text} and @code{data} sections. If -the output format supports Unix style magic numbers, then OMAGIC is set. - -@item -n -sets the text segment to be read only, and @code{NMAGIC} is written -if possible. - -@item -o @var{output} -@var{output} is a name for the program produced by @code{ld}; if this -option is not specified, the name @samp{a.out} is used by default. - -@item -r -Generates relocatable output---i.e., generate an output file that can in -turn serve as input to @code{gld}. As a side effect, this option also -sets the output file's magic number to @code{OMAGIC}; see @samp{-N}. If this -option is not specified, an absolute file is produced. - -@item -S -Omits debugger symbol information (but not all symbols) from the output file. - -@item -s -Omits all symbol information from the output file. - -@item -T @var{textorg} -@itemx -Ttext @var{textorg} -Use @var{textorg} as the starting address for the @code{text} segment of the -output file. Both forms of this option are equivalent. The option -argument must be a hexadecimal integer. - -@item -Tdata @var{dataorg} -Use @var{dataorg} as the starting address for the @code{data} segment of -the output file. The option argument must be a hexadecimal integer. - -@item -t -Prints names of input files as @code{ld} processes them. - -@item -u @var{sym} -Forces @var{sym} to be entered in the output file as an undefined symbol. -This may, for example, trigger linking of additional modules from -standard libraries. @code{-u} may be repeated with different option -arguments to enter additional undefined symbols. This option is equivalent -to the @code{EXTERN} linker command. - -@item -X -If @code{-s} or @code{-S} is also specified, delete only local symbols -beginning with @samp{L}. - -@item -z -@code{-z} sets @code{ZMAGIC}, the default: the @code{text} segment is -read-only, demand pageable, and shared. - -Specifying a relocatable output file (@code{-r}) will also set the magic -number to @code{OMAGIC}. - -See description of @samp{-N}. - - -@end table -@chapter Command Language - - -The command language allows explicit control over the linkage process, allowing -specification of: -@table @bullet -@item input files -@item file formats -@item output file format -@item addresses of sections -@item placement of common blocks -@item and more -@end table - -A command file may be supplied to the linker, either explicitly through the -@code{-c} option, or implicitly as an ordinary file. If the linker opens -a file which does not have a reasonable object or archive format, it tries -to read the file as if it were a command file. -@section Structure -To be added - -@section Expressions -The syntax for expressions in the command language is identical to that of -C expressions, with the following features: -@table @bullet -@item All expressions evaluated as integers and -are of ``long'' or ``unsigned long'' type. -@item All constants are integers. -@item All of the C arithmetic operators are provided. -@item Global variables may be referenced, defined and created. -@item Build in functions may be called. -@end table - -@section Expressions - -The linker has a practice of ``lazy evaluation'' for expressions; it only -calculates an expression when absolutely necessary. For instance, -when the linker reads in the command file it has to know the values -of the start address and the length of the memory regions for linkage to continue, so these -values are worked out, but other values (such as symbol values) are not -known or needed until after storage allocation. -They are evaluated later, when the other -information, such as the sizes of output sections are available for use in -the symbol assignment expression. - -When a linker expression is evaluated and assigned to a variable it is given -either an absolute or a relocatable type. An absolute expression type -is one in which the symbol contains the value that it will have in the -output file, a relocateable expression type is one in which the value -is expressed as a fixed offset from the base of a section. - -The type of the expression is controlled by its position in the script -file. A symbol assigned within a @code{SECTION} specification is -created relative to the base of the section, a symbol assigned in any -other place is created as an absolute symbol. Since a symbol created -within a @code{SECTION} specification is relative to the base of the -section it will remain relocatable if relocatable output is requested. -A symbol may be created with an absolute value even when assigned to -within a @code{SECTION} specification by using the absolute assignment -function @code{ABSOLUTE} For example, to create an absolute symbol -whose address is the last byte of the output section @code{.data}: -@example -.data : - @{ - *(.data) - _edata = ABSOLUTE(.) ; - @} -@end example - -Unless quoted, symbol names start with a letter, underscore, point or -minus sign and may include any letters, underscores, digits, points, -and minus signs. Unquoted symbol names must not conflict with any -keywords. To specify a symbol which contains odd characters or has -the same name as a keyword surround it in double quotes: -@example - ``SECTION'' = 9; - ``with a space'' = ``also with a space'' + 10; -@end example - -@subsection Integers -An octal integer is @samp{0} followed by zero or more of the octal -digits (@samp{01234567}). - -A decimal integer starts with a non-zero digit followed by zero or -more digits (@samp{0123456789}). - -A hexadecimal integer is @samp{0x} or @samp{0X} followed by one or -more hexadecimal digits chosen from @samp{0123456789abcdefABCDEF}. - -Integers have the usual values. To denote a negative integer, use -the unary operator @samp{-} discussed under expressions. - -Additionally the suffixes @code{K} and @code{M} may be used to multiply the -previous constant by 1024 or -@tex -$1024^2$ -@end tex -respectively. - -@example - _as_decimal = 57005; - _as_hex = 0xdead; - _as_octal = 0157255; - - _4k_1 = 4K; - _4k_2 = 4096; - _4k_3 = 0x1000; -@end example -@subsection Operators -The linker provides the standard C set of arithmetic operators, with -the standard bindings and precedence levels: -@example - -@end example -@tex - -\vbox{\offinterlineskip -\hrule -\halign -{\vrule#&\hfil#\hfil&\vrule#&\hfil#\hfil&\vrule#&\hfil#\hfil&\vrule#\cr -height2pt&&&&&\cr -&Level&& associativity &&Operators&\cr -height2pt&&&&&\cr -\noalign{\hrule} -height2pt&&&&&\cr -&highest&&&&&&\cr -&1&&left&&$ ! - ~$&\cr -height2pt&&&&&\cr -&2&&left&&* / \%&\cr -height2pt&&&&&\cr -&3&&left&&+ -&\cr -height2pt&&&&&\cr -&4&&left&&$>> <<$&\cr -height2pt&&&&&\cr -&5&&left&&$== != > < <= >=$&\cr -height2pt&&&&&\cr -&6&&left&&\&&\cr -height2pt&&&&&\cr -&7&&left&&|&\cr -height2pt&&&&&\cr -&8&&left&&{\&\&}&\cr -height2pt&&&&&\cr -&9&&left&&||&\cr -height2pt&&&&&\cr -&10&&right&&? :&\cr -height2pt&&&&&\cr -&11&&right&&$${\&= += -= *= /=}&\cr -&lowest&&&&&&\cr -height2pt&&&&&\cr} -\hrule} -@end tex - -@section Built in Functions -The command language provides built in functions for use in -expressions in linkage scripts. -@table @bullet -@item @code{ALIGN(@var{exp})} -returns the result of the current location counter (@code{dot}) -aligned to the next @var{exp} boundary, where @var{exp} is a power of -two. This is equivalent to @code{(. + @var{exp} -1) & ~(@var{exp}-1)}. -As an example, to align the output @code{.data} section to the -next 0x2000 byte boundary after the preceding section and to set a -variable within the section to the next 0x8000 boundary after the -input sections: -@example - .data ALIGN(0x2000) :@{ - *(.data) - variable = ALIGN(0x8000); - @} -@end example - -@item @code{ADDR(@var{section name})} -returns the absolute address of the named section if the section has -already been bound. In the following examples the @code{symbol_1} and -@code{symbol_2} are assigned identical values: -@example - .output1: - @{ - start_of_output_1 $= .; - ... - @} - .output: - @{ - symbol_1 = ADDR(.output1); - symbol_2 = start_of_output_1; - @} -@end example - -@item @code{SIZEOF(@var{section name})} -returns the size in bytes of the named section, if the section has -been allocated. In the following example the @code{symbol_1} and -@code{symbol_2} are assigned identical values: -@example - .output @{ - .start = . ; - ... - .end = .; - @} - symbol_1 = .end - .start; - symbol_2 = SIZEOF(.output); -@end example - -@item @code{DEFINED(@var{symbol name})} -Returns 1 if the symbol is in the linker global symbol table and is -defined, otherwise it returns 0. This example shows the setting of a -global symbol @code{begin} to the first location in the @code{.text} -section, only if there is no other symbol -called @code{begin} already: -@example - .text: @{ - begin = DEFINED(begin) ? begin : . ; - ... - @} -@end example -@end table -@page -@section MEMORY Directive -The linker's default configuration is for all memory to be -allocatable. This state may be overridden by using the @code{MEMORY} -directive. The @code{MEMORY} directive describes the location and -size of blocks of memory in the target. Careful use can describe -memory regions which may or may not be used by the linker. The linker -does not shuffle sections to fit into the available regions, but does -move the requested sections into the correct regions and issue errors -when the regions become too full. The syntax is: - -@example - MEMORY - @{ -@tex - $\bigl\lbrace {\it name_1} ({\it attr_1}):$ ORIGIN = ${\it origin_1},$ LENGTH $= {\it len_1} \bigr\rbrace $ -@end tex - - @} -@end example -@table @code -@item @var{name} -is a name used internally by the linker to refer to the region. Any -symbol name may be used. The region names are stored in a separate -name space, and will not conflict with symbols, filenames or section -names. -@item @var{attr} -is an optional list of attributes, parsed for compatibility with the -AT+T linker -but ignored by the both the AT+T and the gnu linker. -@item @var{origin} -is the start address of the region in physical memory expressed as -standard linker expression which must evaluate to a constant before -memory allocation is performed. The keyword @code{ORIGIN} may be -abbreviated to @code{org} or @code{o}. -@item @var{len} -is the size in bytes of the region as a standard linker expression. -The keyword @code{LENGTH} may be abbreviated to @code{len} or @code{l} -@end table - -For example, to specify that memory has two regions available for -allocation; one starting at 0 for 256k, and the other starting at -0x40000000 for four megabytes: - -@example - MEMORY - @{ - rom : ORIGIN= 0, LENGTH = 256K - ram : ORIGIN= 0x40000000, LENGTH = 4M - @} - -@end example - -If the combined output sections directed to a region are too big for -the region the linker will emit an error message. -@page -@section SECTIONS Directive -The @code{SECTIONS} directive -controls exactly where input sections are placed into output sections, their -order and to which output sections they are allocated. - -When no @code{SECTIONS} directives are specified, the default action -of the linker is to place each input section into an identically named -output section in the order that the sections appear in the first -file, and then the order of the files. - -The syntax of the @code{SECTIONS} directive is: - -@example - SECTIONS - @{ -@tex - $\bigl\lbrace {\it name_n}\bigl[options\bigr]\colon$ $\bigl\lbrace {\it statements_n} \bigr\rbrace \bigl[ = {\it fill expression } \bigr] \bigl[ > mem spec \bigr] \bigr\rbrace $ -@end tex - @} -@end example - -@table @code -@item @var{name} -controls the name of the output section. In formats which only support -a limited number of sections, such as @code{a.out}, the name must be -one of the names supported by the format (in the case of a.out, -@code{.text}, @code{.data} or @code{.bss}). If the output format -supports any number of sections, but with numbers and not names (in -the case of IEEE), the name should be supplied as a quoted numeric -string. A section name may consist of any sequence characters, but -any name which does not conform to the standard @code{gld} symbol name -syntax must be quoted. To copy sections 1 through 4 from a Oasys file -into the @code{.text} section of an @code{a.out} file, and sections 13 -and 14 into the @code{data} section: -@example - - SECTION @{ - .text :@{ - *(``1'' ``2'' ``3'' ``4'') - @} - - .data :@{ - *(``13'' ``14'') - @} - @} -@end example - -@item @var{fill expression} -If present this -expression sets the fill value. Any unallocated holes in the current output -section when written to the output file will -be filled with the two least significant bytes of the value, repeated as -necessary. -@page -@item @var{options} -the @var{options} parameter is a list of optional arguments specifying -attributes of the output section, they may be taken from the following -list: -@table @bullet{} -@item @var{addr expression} -forces the output section to be loaded at a specified address. The -address is specified as a standard linker expression. The following -example generates section @var{output} at location -@code{0x40000000}: -@example - SECTIONS @{ - output 0x40000000: @{ - ... - @} - @} -@end example -Since the built in function @code{ALIGN} references the location -counter implicitly, a section may be located on a certain boundary by -using the @code{ALIGN} function in the expression. For example, to -locate the @code{.data} section on the next 8k boundary after the end -of the @code{.text} section: -@example - SECTIONS @{ - .text @{ - ... - @} - .data ALIGN(4K) @{ - ... - @} - @} -@end example -@end table -@item @var{statements} -is a list of file names, input sections and assignments. These statements control what is placed into the -output section. -The syntax of a single @var{statement} is one of: -@table @bullet - -@item @var{symbol} [ $= | += | -= | *= | /= ] @var{ expression} @code{;} - -Global symbols may be created and have their values (addresses) -altered using the assignment statement. The linker tries to put off -the evaluation of an assignment until all the terms in the source -expression are known; for instance the sizes of sections cannot be -known until after allocation, so assignments dependent upon these are -not performed until after allocation. Some expressions, such as those -depending upon the location counter @code{dot}, @samp{.} must be -evaluated during allocation. If the result of an expression is -required, but the value is not available, then an error results: eg -@example - SECTIONS @{ - text 9+this_isnt_constant: - @{ - @} - @} - testscript:21: Non constant expression for initial address -@end example - -@item @code{CREATE_OBJECT_SYMBOLS} -causes the linker to create a symbol for each input file and place it -into the specified section set with the value of the first byte of -data written from the input file. For instance, with @code{a.out} -files it is conventional to have a symbol for each input file. -@example - SECTIONS @{ - .text 0x2020 : - @{ - CREATE_OBJECT_SYMBOLS - *(.text) - _etext = ALIGN(0x2000); - @} - @} -@end example -Supplied with four object files, @code{a.o}, @code{b.o}, @code{c.o}, -and @code{d.o} a run of -@code{gld} could create a map: -@example -From functions like : -a.c: - afunction() { } - int adata=1; - int abss; - -00000000 A __DYNAMIC -00004020 B _abss -00004000 D _adata -00002020 T _afunction -00004024 B _bbss -00004008 D _bdata -00002038 T _bfunction -00004028 B _cbss -00004010 D _cdata -00002050 T _cfunction -0000402c B _dbss -00004018 D _ddata -00002068 T _dfunction -00004020 D _edata -00004030 B _end -00004000 T _etext -00002020 t a.o -00002038 t b.o -00002050 t c.o -00002068 t d.o - -@end example - -@item @var{filename} @code{(} @var{section name list} @code{)} -This command allocates all the named sections from the input object -file supplied into the output section at the current point. Sections -are written in the order they appear in the list so: -@example - SECTIONS @{ - .text 0x2020 : - @{ - a.o(.data) - b.o(.data) - *(.text) - @} - .data : - @{ - *(.data) - @} - .bss : - @{ - *(.bss) - COMMON - @} - @} -@end example -will produce a map: -@example - - insert here -@end example -@item @code{* (} @var{section name list} @code{)} -This command causes all sections from all input files which have not -yet been assigned output sections to be assigned the current output -section. - -@item @var{filename} @code{[COMMON]} -This allocates all the common symbols from the specified file and places -them into the current output section. - -@item @code{* [COMMON]} -This allocates all the common symbols from the files which have not -yet had their common symbols allocated and places them into the current -output section. - -@item @var{filename} -A filename alone within a @code{SECTIONS} statement will cause all the -input sections from the file to be placed into the current output -section at the current location. If the file name has been mentioned -before with a section name list then only those -sections which have not yet been allocated are noted. - -The following example reads all of the sections from file all.o and -places them at the start of output section @code{outputa} which starts -at location @code{0x10000}. All of the data from section @code{.input1} from -file foo.o is placed next into the same output section. All of -section @code{.input2} is read from foo.o and placed into output -section @code{outputb}. Next all of section @code{.input1} is read -from foo1.o. All of the remaining @code{.input1} and @code{.input2} -sections from any files are written to output section @code{output3}. - -@example - SECTIONS - @{ - outputa 0x10000 : - @{ - all.o - foo.o (.input1) - @} - outputb : - @{ - foo.o (.input2) - foo1.o (.input1) - @} - outputc : - @{ - *(.input1) - *(.input2) - @} - @} - -@end example -@end table -@end table -@section Using the Location Counter -The special linker variable @code{dot}, @samp{.} always contains the -current output location counter. Since the @code{dot} always refers to -a location in an output section, it must always appear in an -expression within a @code{SECTIONS} directive. The @code{dot} symbol -may appear anywhere that an ordinary symbol may appear in an -expression, but its assignments have a side effect. Assigning a value -to the @code{dot} symbol will cause the location counter to be moved. -This may be used to create holes in the output section. The location -counter may never be moved backwards. -@example - SECTIONS - @{ - output : - @{ - file1(.text) - . = . + 1000; - file2(.text) - . += 1000; - file3(.text) - . -= 32; - file4(.text) - @} = 0x1234; - @} -@end example -In the previous example, @code{file1} is located at the beginning of -the output section, then there is a 1000 byte gap, filled with 0x1234. -Then @code{file2} appears, also with a 1000 byte gap following before -@code{file3} is loaded. Then the first 32 bytes of @code{file4} are -placed over the last 32 bytes of @code{file3}. -@section Command Language Syntax -@section The Entry Point -The linker chooses the first executable instruction in an output file from a list -of possibilities, in order: -@itemize @bullet -@item -The value of the symbol provided to the command line with the @code{-e} option, when -present. -@item -The value of the symbol provided in the @code{ENTRY} directive, -if present. -@item -The value of the symbol @code{start}, if present. -@item -The value of the symbol @code{_main}, if present. -@item -The address of the first byte of the @code{.text} section, if present. -@item -The value 0. -@end itemize -If the symbol @code{start} is not defined within the set of input -files to a link, it may be generated by a simple assignment -expression. eg. -@example - start = 0x2020; -@end example -@section Section Attributes -@section Allocation of Sections into Memory -@section Defining Symbols -@chapter Examples of operation -The simplest case is linking standard Unix object files on a standard -Unix system supported by the linker. To link a file hello.o: -@example -$ gld -o output /lib/crt0.o hello.o -lc -@end example -This tells gld to produce a file called @code{output} after linking -the file @code{/lib/crt0.o} with @code{hello.o} and the library -@code{libc.a} which will come from the standard search directories. -@chapter Partial Linking -Specifying the @code{-r} on the command line causes @code{gld} to -perform a partial link. - - -@chapter BFD - -The linker accesses object and archive files using the @code{bfd} -libraries. These libraries allow the linker to use the same routines -to operate on object files whatever the object file format. - -A different object file format can be supported simply by creating a -new @code{bfd} back end and adding it to the library. - -Formats currently supported: -@itemize @bullet -@item -Sun3 68k a.out -@item -IEEE-695 68k Object Module Format -@item -Oasys 68k Binary Relocatable Object File Format -@item -Sun4 sparc a.out -@item -88k bcs coff -@item -i960 coff little endian -@item -i960 coff big endian -@item -i960 b.out little endian -@item -i960 b.out big endian -@end itemize - -As with most implementations, @code{bfd} is a compromise between -several conflicting requirements. The major factor influencing -@code{bfd} design was efficiency, any time used converting between -formats is time which would not have been spent had @code{bfd} not -been involved. This is partly offset by abstraction payback; since -@code{bfd} simplifies applications and back ends, more time and care -may be spent optimizing algorithms for a greater speed. - -One minor artifact of the @code{bfd} solution which the -user should be aware of is information lossage. -There are two places where useful information can be lost using the -@code{bfd} mechanism; during conversion and during output. - -@section How it works -When an object file is opened, @code{bfd} -tries to automatically determine the format of the input object file, a -descriptor is built in memory with pointers to routines to access -elements of the object file's data structures. - -As different information from the the object files is required -@code{bfd} reads from different sections of the file and processes -them. For example a very common operation for the linker is processing -symbol tables. Each @code{bfd} back end provides a routine for -converting between the object file's representation of symbols and an -internal canonical format. When the linker asks for the symbol table -of an object file, it calls through the memory pointer to the relevant -@code{bfd} back end routine which reads and converts the table into -the canonical form. Linker then operates upon the common form. When -the link is finished and the linker writes the symbol table of the -output file, another @code{bfd} back end routine is called which takes -the newly created symbol table and converts it into the output format. - -@section Information Leaks -@table @bullet{} -@item Information lost during output. -The output formats supported by @code{bfd} do not provide identical -facilities, and information which may be described in one form -has no where to go in another format. One example of this would be -alignment information in @code{b.out}. There is no where in an @code{a.out} -format file to store alignment information on the contained data, so when -a file is linked from @code{b.out} and an @code{a.out} image is produced, -alignment information is lost. (Note that in this case the linker has the -alignment information internally, so the link is performed correctly). - -Another example is COFF section names. COFF files may contain an -unlimited number of sections, each one with a textual section name. If -the target of the link is a format which does not have many sections -(eg @code{a.out}) or has sections without names (eg the Oasys format) -the link cannot be done simply. It is possible to circumvent this -problem by describing the desired input section to output section -mapping with the command language. - -@item Information lost during canonicalization. -The @code{bfd} -internal canonical form of the external formats is not exhaustive, -there are structures in input formats for which there is no direct -representation internally. This means that the @code{bfd} back ends -cannot maintain all the data richness through the transformation -between external to internal and back to external formats. - -This limitation is only a problem when using the linker to read one -format and write another. Each @code{bfd} back end is responsible for -maintaining as much data as possible, and the internal @code{bfd} -canonical form has structures which are opaque to the @code{bfd} core, -and exported only to the back ends. When a file is read in one format, -the canonical form is generated for @code{bfd} and the linker. At the -same time, the back end saves away any information which may otherwise -be lost. If the data is then written back to the same back end, the -back end routine will be able to use the canonical form provided by -the @code{bfd} core as well as the information it prepared earlier. -Since there is a great deal of commonality between back ends, this -mechanism is very useful. There is no information lost when linking -big endian COFF to little endian COFF, or from a.out to b.out. When a -mixture of formats are linked, the information is only lost from the -files with a different format to the destination. -@end table -@section Mechanism -The smallest amount of information is preserved when there -is a small union between the information provided by the source -format, that stored by the canonical format and the information needed -by the destination format. A brief description of the canonical form -will help the user appreciate what is possible to be maintained -between conversions. - -@table @bullet -@item file level Information on target machine -architecture, particular implementation and format type are stored on -a per file basis. Other information includes a demand pageable bit and -a write protected bit. Note that information like Unix magic numbers -is not stored here, only the magic numbers meaning, so a ZMAGIC file -would have both the demand pageable bit and the write protected text -bit set. - -The byte order of the target is stored on a per file basis, so that -both big and little endian object files may be linked together at the -same time. -@item section level -Each section in the input file contains the name of the section, the -original address in the object file, various flags, size and alignment -information and pointers into other @code{bfd} data structures. -@item symbol level -Each symbol contains a pointer to the object file which originally -defined it, its name, value and various flags bits. When a symbol -table is read in all symbols are relocated to make them relative to -the base of the section they were defined in, so each symbol points to -the containing section. Each symbol also has a varying amount of -hidden data to contain private data for the back end. Since the symbol -points to the original file, the symbol private data format is -accessible. Operations may be done to a list of symbols of wildly -different formats without problems. - -Normal global and simple local symbols are maintained on output, so an -output file, no matter the format will retain symbols pointing to -functions, globals, statics and commons. Some symbol information is -not worth retaining; in @code{a.out} type information is stored in the -symbol table as long symbol names. This information would be useless -to most coff debuggers and may be thrown away with appropriate command -line switches. (Note that gdb does support stabs in coff). - -There is one word of type information within the symbol, so if the -format supports symbol type information within symbols - (eg COFF, -IEEE, Oasys) and the type is simple enough to fit within one word -(nearly everything but aggregates) the information will be preserved. - -@item relocation level -Each canonical relocation record contains a pointer to the symbol to -relocate to, the offset of the data to relocate, the section the data -is in and a pointer to a relocation type descriptor. Relocation is -performed effectively by message passing through the relocation type -descriptor and symbol pointer. It allows relocations to be performed -on output data using a relocation method only available in one of the -input formats. For instance, Oasys provides a byte relocation format. -A relocation record requesting this relocation type would point -indirectly to a routine to perform this, so the relocation may be -performed on a byte being written to a COFF file, even though 68k COFF -has no such relocation type. - -@item line numbers -Line numbers have to be relocated along with the symbol information. -Each symbol with an associated list of line number records points to -the first record of the list. The head of a line number list consists -of a pointer to the symbol, which allows divination of the address of -the function who's line number is being described. The rest of the -list is tuples offsets into the section and line indexes. Any format -which can simply derive this information can pass it without lossage -between formats (COFF, IEEE and Oasys). -@end table - - -@bye - - diff --git a/ld/ldgld.c b/ld/ldgld.c deleted file mode 100755 index e51d073..0000000 --- a/ld/ldgld.c +++ /dev/null @@ -1,145 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id$ - * -*/ - -/* - * emulate the original gld - * - * Written by Steve Chamberlain steve@cygnus.com - */ - - -#include "sysdep.h" -#include "bfd.h" - - -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gld_before_parse() -{ - ldfile_add_library_path("/lib"); - ldfile_add_library_path("/usr/lib"); - ldfile_add_library_path("/usr/local/lib/lib"); -} - - -static void -gld_after_parse() -{ - -} - -static void -gld_after_allocation() -{ - -} - -static void -gld_before_allocation() -{ - -} - - -static void -gld_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, ldfile_output_machine); -} - -static char * -gld_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLD_TARGET; -} - -static void -gld_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gld_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gld_script = -#include "ldgld.x" -; - -static char *gld_script_option_Ur = -#include "ldgldUr.x" -; - -static char *gld_script_option_r = -#include "ldgldr.x" -; - -static char *gld_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gld_script_option_Ur; - } - if (config.relocateable_output) { - return gld_script_option_r; - } - - return gld_script; -} -struct ld_emulation_xfer_struct ld_gld_emulation = -{ - gld_before_parse, - gld_syslib, - gld_hll, - gld_after_parse, - gld_after_allocation, - gld_set_output_arch, - gld_choose_target, - gld_before_allocation, - gld_get_script, -}; - diff --git a/ld/ldgld.sc b/ld/ldgld.sc deleted file mode 100755 index eb87b33..0000000 --- a/ld/ldgld.sc +++ /dev/null @@ -1,30 +0,0 @@ -OUTPUT_ARCH(sparc) -OUTPUT_FORMAT("a.out-sunos-big") -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -__DYNAMIC = 0; -SECTIONS -{ - .text 0x2020 BLOCK(0x2000): - { - CREATE_OBJECT_SYMBOLS ; - *(.text); - _etext = ALIGN( 0x2000); - } - .data ALIGN(0x2000) : - { - *(.data); - CONSTRUCTORS; - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - *(COMMON) - _end = .; - __end = .; - } -} - - diff --git a/ld/ldgld.script b/ld/ldgld.script deleted file mode 100755 index 15ff71f..0000000 --- a/ld/ldgld.script +++ /dev/null @@ -1,30 +0,0 @@ -OUTPUT_ARCH(sparc) -OUTPUT_FORMAT("a.out-sunos-big") -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -__DYNAMIC = 0; -SECTIONS -{ - .text 0x2020 BLOCK(0x2000): - { - CREATE_OBJECT_SYMBOLS ; - *(.text); - _etext = ALIGN( 0x2000); - } - .data ALIGN(0x2000) : - { - *(.data); - CONSTRUCTORS; - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - _end = .; - __end = .; - } -} - - diff --git a/ld/ldgld68k.c b/ld/ldgld68k.c deleted file mode 100755 index f34e79d..0000000 --- a/ld/ldgld68k.c +++ /dev/null @@ -1,143 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id:# -*/ - -/* - * emulate the original gld running on a 68k system - * - * Written by Steve Chamberlain steve@cygnus.com - */ - - -#include "sysdep.h" -#include "bfd.h" - -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gld68k_before_parse() -{ - ldfile_add_library_path("/lib"); - ldfile_add_library_path("/usr/lib"); - ldfile_add_library_path("/usr/local/lib/lib"); - ldfile_output_architecture = bfd_arch_m68k; -} - - -static void -gld68k_after_parse() -{ - -} - -static void -gld68k_after_allocation() -{ - -} - -static void -gld68k_before_allocation() -{ - -} - - -static void -gld68k_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - unsigned long machine = 0; - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, machine); -} - -static char * -gld68k_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLD68K_TARGET; -} - -static void -gld68k_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gld68k_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gld68k_script = -#include "ldgld68k.x" -; - -static char *gld68k_script_option_Ur = -#include "ldgld68kUr.x" -; -static char *gld68k_script_option_r = -#include "ldgld68kr.x" -; -static char *gld68k_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gld68k_script_option_Ur; - } - if (config.relocateable_output) { - return gld68k_script_option_r; - } - - return gld68k_script; -} -struct ld_emulation_xfer_struct ld_gld68k_emulation = -{ - gld68k_before_parse, - gld68k_syslib, - gld68k_hll, - gld68k_after_parse, - gld68k_after_allocation, - gld68k_set_output_arch, - gld68k_choose_target, - gld68k_before_allocation, - gld68k_get_script, -}; - diff --git a/ld/ldgld68k.sc b/ld/ldgld68k.sc deleted file mode 100755 index 9d7df2d..0000000 --- a/ld/ldgld68k.sc +++ /dev/null @@ -1,30 +0,0 @@ -OUTPUT_FORMAT("a.out-sunos-big") -OUTPUT_ARCH(m68k) - -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -__DYNAMIC = 0; -SECTIONS -{ - .text 0x2020 BLOCK(0x2000): - { - CREATE_OBJECT_SYMBOLS - *(.text) - _etext = ALIGN( 0x2000); - } - .data ALIGN(0x20000) : - { - *(.data) - CONSTRUCTORS - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - *(COMMON) - _end = .; - __end = .; - } -} - diff --git a/ld/ldgld68k.script b/ld/ldgld68k.script deleted file mode 100755 index be91d91..0000000 --- a/ld/ldgld68k.script +++ /dev/null @@ -1,28 +0,0 @@ -OUTPUT_FORMAT("a.out-sunos-big") -OUTPUT_ARCH(m68k) - -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -__DYNAMIC = 0; -SECTIONS -{ - .text 0x2020 BLOCK(0x2000): - { - CREATE_OBJECT_SYMBOLS - *(.text) - _etext = ALIGN( 0x2000); - } - .data ALIGN(0x20000) : - { - *(.data) - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - _end = .; - } -} - diff --git a/ld/ldgld68kUr.sc b/ld/ldgld68kUr.sc deleted file mode 100755 index aa89c6a..0000000 --- a/ld/ldgld68kUr.sc +++ /dev/null @@ -1,21 +0,0 @@ -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldgld68kUr.script b/ld/ldgld68kUr.script deleted file mode 100755 index aa89c6a..0000000 --- a/ld/ldgld68kUr.script +++ /dev/null @@ -1,21 +0,0 @@ -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldgld68kr.sc b/ld/ldgld68kr.sc deleted file mode 100755 index 8cbc9dc..0000000 --- a/ld/ldgld68kr.sc +++ /dev/null @@ -1,22 +0,0 @@ - -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldgld68kr.script b/ld/ldgld68kr.script deleted file mode 100755 index 8cbc9dc..0000000 --- a/ld/ldgld68kr.script +++ /dev/null @@ -1,22 +0,0 @@ - -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldgld960.c b/ld/ldgld960.c deleted file mode 100755 index f3a3b0c..0000000 --- a/ld/ldgld960.c +++ /dev/null @@ -1,169 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - $Id$ -*/ - -/* - * emulate the Intels port of gld - */ - - -#include "bfd.h" -#include "sysdep.h" - - -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - - -/* IMPORTS */ -extern char *output_filename; -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -#ifdef GNU960 - -static void -gld960_before_parse() -{ - static char *env_variables[] = { "G960LIB", "G960BASE", 0 }; - char **p; - char *env ; - - for ( p = env_variables; *p; p++ ){ - env = (char *) getenv(*p); - if (env) { - ldfile_add_library_path(concat(env,"/lib/libbout","")); - } - } - ldfile_output_architecture = bfd_arch_i960; -} - -#else /* not GNU960 */ - -static void gld960_before_parse() -{ - char *env ; - env = getenv("G960LIB"); - if (env) { - ldfile_add_library_path(env); - } - env = getenv("G960BASE"); - if (env) { - ldfile_add_library_path(concat(env,"/lib","")); - } - ldfile_output_architecture = bfd_arch_i960; -} - -#endif /* GNU960 */ - - -static void -gld960_after_parse() -{ - -} - -static void -gld960_after_allocation() -{ - -} - -static void -gld960_before_allocation() -{ - -} - - -static void -gld960_set_output_arch() -{ - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, bfd_mach_i960_core); -} - -static char * -gld960_choose_target() -{ -#ifdef GNU960 - - output_filename = "b.out"; - return bfd_make_targ_name(BFD_BOUT_FORMAT, 0); - -#else - - char *from_outside = getenv(TARGET_ENVIRON); - output_filename = "b.out"; - - if (from_outside != (char *)NULL) - return from_outside; - return GLD960_TARGET; - -#endif -} - -static void -gld960_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gld960_hll() -{ - info("%S HLL ignored\n"); -} - - -static char *script = -#include "ldgld960.x" -; - - -static char * -gld960_get_script() -{ -return script; -} - -struct ld_emulation_xfer_struct ld_gld960_emulation = -{ - gld960_before_parse, - gld960_syslib, - gld960_hll, - gld960_after_parse, - gld960_after_allocation, - gld960_set_output_arch, - gld960_choose_target, - gld960_before_allocation, - gld960_get_script, -}; diff --git a/ld/ldgld960.sc b/ld/ldgld960.sc deleted file mode 100755 index 449d3fa..0000000 --- a/ld/ldgld960.sc +++ /dev/null @@ -1,23 +0,0 @@ -SECTIONS -{ - .text : - { - CREATE_OBJECT_SYMBOLS - *(.text) - _etext = .; - } - - .data SIZEOF(.text) + ADDR(.text): - { - - *(.data) - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - _bss_start = .; - *(.bss) - *(COMMON) - _end = . ; - } -} diff --git a/ld/ldgld960.script b/ld/ldgld960.script deleted file mode 100755 index 1c40a73..0000000 --- a/ld/ldgld960.script +++ /dev/null @@ -1,23 +0,0 @@ -SECTIONS -{ - .text : - { - CREATE_OBJECT_SYMBOLS - *(.text) - _etext = .; - } - - .data SIZEOF(.text) + ADDR(.text): - { - - *(.data) - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - _bss_start = .; - *(.bss) - [COMMON] - _end = . ; - } -} diff --git a/ld/ldgldUr.sc b/ld/ldgldUr.sc deleted file mode 100755 index e7d9b44..0000000 --- a/ld/ldgldUr.sc +++ /dev/null @@ -1,24 +0,0 @@ - -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - CONSTRUCTORS - ___end_list__ = . ; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldgldUr.script b/ld/ldgldUr.script deleted file mode 100755 index e7d9b44..0000000 --- a/ld/ldgldUr.script +++ /dev/null @@ -1,24 +0,0 @@ - -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - CONSTRUCTORS - ___end_list__ = . ; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldglda29k.c b/ld/ldglda29k.c deleted file mode 100755 index 45662f0..0000000 --- a/ld/ldglda29k.c +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id:# -*/ - -/* - * emulate the original gld running on an a29k system - * - * Written by David Wood @ New York University - */ - - -#include "sysdep.h" -#include "bfd.h" - -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gld29k_before_parse() -{ -#ifndef NOTDEF /* Cross developing for now */ - ldfile_add_library_path("/lib"); - ldfile_add_library_path("/usr/lib"); - ldfile_add_library_path("/usr/local/lib"); -#endif - ldfile_output_architecture = bfd_arch_a29k; -} - - -static void -gld29k_after_parse() -{ - -} - -static void -gld29k_after_allocation() -{ - -} - -static void -gld29k_before_allocation() -{ - -} - -static void -gld29k_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - unsigned long machine = 0; - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, machine); -} - -static char * -gld29k_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLD29K_TARGET; -} - -static void -gld29k_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gld29k_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gld29k_script = -#include "ldglda29k.x" -; - -static char *gld29k_script_option_Ur = -#include "ldglda29kUr.x" -; -static char *gld29k_script_option_r = -#include "ldglda29kr.x" -; -static char *gld29k_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gld29k_script_option_Ur; - } - if (config.relocateable_output) { - return gld29k_script_option_r; - } - - return gld29k_script; -} -struct ld_emulation_xfer_struct ld_gld29k_emulation = -{ - gld29k_before_parse, - gld29k_syslib, - gld29k_hll, - gld29k_after_parse, - gld29k_after_allocation, - gld29k_set_output_arch, - gld29k_choose_target, - gld29k_before_allocation, - gld29k_get_script, -}; - diff --git a/ld/ldglda29k.sc b/ld/ldglda29k.sc deleted file mode 100755 index 26e09cf4..0000000 --- a/ld/ldglda29k.sc +++ /dev/null @@ -1,38 +0,0 @@ -OUTPUT_FORMAT("coff-a29k-big") -INPUT(/lab3/u3/sym1/tools/usr/lib/segments.o) /* Has .rstack/.mstack */ -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -MEMORY { - text : ORIGIN = 0x1000000, LENGTH = 0x1000000 - talias : ORIGIN = 0x2000000, LENGTH = 0x1000000 - data : ORIGIN = 0x3000000, LENGTH = 0x1000000 - mstack : ORIGIN = 0x4000000, LENGTH = 0x1000000 - rstack : ORIGIN = 0x5000000, LENGTH = 0x1000000 -} -SECTIONS -{ - .text : { - *(.text) - __etext = .; - *(.lit) - *(.shdata) - } > text - .shbss SIZEOF(.text) + ADDR(.text) : { - *(.shbss) - } - .talias : { } > talias - .data : { - *(.data) - __edata = .; - } > data - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - *(COMMON) - __end = ALIGN(0x8); - } - .mstack : { } > mstack - .rstack : { } > rstack -} - diff --git a/ld/ldglda29k.script b/ld/ldglda29k.script deleted file mode 100755 index 6d7d19a..0000000 --- a/ld/ldglda29k.script +++ /dev/null @@ -1,38 +0,0 @@ -OUTPUT_FORMAT("coff-a29k-big") -INPUT(/lab3/u3/sym1/tools/usr/lib/segments.o) /* Has .rstack/.mstack */ -SEARCH_DIR(/lab3/u3/sym1/tools/lib) -SEARCH_DIR(/lab3/u3/sym1/tools/usr/lib) -SEARCH_DIR(/lab3/u3/sym1/tools/usr/local/lib) -MEMORY { - text : ORIGIN = 0x1000000, LENGTH = 0x1000000 - talias : ORIGIN = 0x2000000, LENGTH = 0x1000000 - data : ORIGIN = 0x3000000, LENGTH = 0x1000000 - mstack : ORIGIN = 0x4000000, LENGTH = 0x1000000 - rstack : ORIGIN = 0x5000000, LENGTH = 0x1000000 -} -SECTIONS -{ - .text : { - *(.text) - __etext = .; - *(.lit) - *(.shdata) - } > text - .shbss SIZEOF(.text) + ADDR(.text) : { - *(.shbss) - } - .talias : { } > talias - .data : { - *(.data) - __edata = .; - } > data - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - __end = ALIGN(0x8); - } - .mstack : { } > mstack - .rstack : { } > rstack -} - diff --git a/ld/ldglda29kUr.sc b/ld/ldglda29kUr.sc deleted file mode 100755 index c8e8e2c..0000000 --- a/ld/ldglda29kUr.sc +++ /dev/null @@ -1,32 +0,0 @@ -OUTPUT_FORMAT("coff-a29k-big") -SEARCH_DIR(/lab3/u3/sym1/tools/lib) -SEARCH_DIR(/lab3/u3/sym1/tools/usr/lib) -SEARCH_DIR(/lab3/u3/sym1/tools/usr/local/lib) -MEMORY { - text : ORIGIN = 0x1000000, LENGTH = 0x1000000 - talias : ORIGIN = 0x2000000, LENGTH = 0x1000000 - data : ORIGIN = 0x3000000, LENGTH = 0x1000000 - mstack : ORIGIN = 0x4000000, LENGTH = 0x1000000 - rstack : ORIGIN = 0x5000000, LENGTH = 0x1000000 -} -SECTIONS -{ - .text 0 : { - *(.text) - __etext = .; - *(.lit) - *(.shdata) - } > text - .shbss SIZEOF(.text) + ADDR(.text) : { - *(.shbss) - } - .data SIZEOF(.shbss) + ADDR(.shbss): { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldglda29kUr.script b/ld/ldglda29kUr.script deleted file mode 100755 index c8e8e2c..0000000 --- a/ld/ldglda29kUr.script +++ /dev/null @@ -1,32 +0,0 @@ -OUTPUT_FORMAT("coff-a29k-big") -SEARCH_DIR(/lab3/u3/sym1/tools/lib) -SEARCH_DIR(/lab3/u3/sym1/tools/usr/lib) -SEARCH_DIR(/lab3/u3/sym1/tools/usr/local/lib) -MEMORY { - text : ORIGIN = 0x1000000, LENGTH = 0x1000000 - talias : ORIGIN = 0x2000000, LENGTH = 0x1000000 - data : ORIGIN = 0x3000000, LENGTH = 0x1000000 - mstack : ORIGIN = 0x4000000, LENGTH = 0x1000000 - rstack : ORIGIN = 0x5000000, LENGTH = 0x1000000 -} -SECTIONS -{ - .text 0 : { - *(.text) - __etext = .; - *(.lit) - *(.shdata) - } > text - .shbss SIZEOF(.text) + ADDR(.text) : { - *(.shbss) - } - .data SIZEOF(.shbss) + ADDR(.shbss): { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldglda29kr.sc b/ld/ldglda29kr.sc deleted file mode 100755 index c8e8e2c..0000000 --- a/ld/ldglda29kr.sc +++ /dev/null @@ -1,32 +0,0 @@ -OUTPUT_FORMAT("coff-a29k-big") -SEARCH_DIR(/lab3/u3/sym1/tools/lib) -SEARCH_DIR(/lab3/u3/sym1/tools/usr/lib) -SEARCH_DIR(/lab3/u3/sym1/tools/usr/local/lib) -MEMORY { - text : ORIGIN = 0x1000000, LENGTH = 0x1000000 - talias : ORIGIN = 0x2000000, LENGTH = 0x1000000 - data : ORIGIN = 0x3000000, LENGTH = 0x1000000 - mstack : ORIGIN = 0x4000000, LENGTH = 0x1000000 - rstack : ORIGIN = 0x5000000, LENGTH = 0x1000000 -} -SECTIONS -{ - .text 0 : { - *(.text) - __etext = .; - *(.lit) - *(.shdata) - } > text - .shbss SIZEOF(.text) + ADDR(.text) : { - *(.shbss) - } - .data SIZEOF(.shbss) + ADDR(.shbss): { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldglda29kr.script b/ld/ldglda29kr.script deleted file mode 100755 index c8e8e2c..0000000 --- a/ld/ldglda29kr.script +++ /dev/null @@ -1,32 +0,0 @@ -OUTPUT_FORMAT("coff-a29k-big") -SEARCH_DIR(/lab3/u3/sym1/tools/lib) -SEARCH_DIR(/lab3/u3/sym1/tools/usr/lib) -SEARCH_DIR(/lab3/u3/sym1/tools/usr/local/lib) -MEMORY { - text : ORIGIN = 0x1000000, LENGTH = 0x1000000 - talias : ORIGIN = 0x2000000, LENGTH = 0x1000000 - data : ORIGIN = 0x3000000, LENGTH = 0x1000000 - mstack : ORIGIN = 0x4000000, LENGTH = 0x1000000 - rstack : ORIGIN = 0x5000000, LENGTH = 0x1000000 -} -SECTIONS -{ - .text 0 : { - *(.text) - __etext = .; - *(.lit) - *(.shdata) - } > text - .shbss SIZEOF(.text) + ADDR(.text) : { - *(.shbss) - } - .data SIZEOF(.shbss) + ADDR(.shbss): { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldgldi386v.c b/ld/ldgldi386v.c deleted file mode 100755 index 6049bf8..0000000 --- a/ld/ldgldi386v.c +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id$ -*/ - -/* - * emulate the original gld running on an i386v system - * - * Written by David Wood @ New York University - */ - - -#include "sysdep.h" -#include "bfd.h" - -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gldi386v_before_parse() -{ -#ifndef NOTDEF /* Cross developing for now */ - ldfile_add_library_path("/usr/local/lib/386gcc-lib/lib"); - ldfile_add_library_path("/usr/local/lib/386gcc-lib/usr/lib"); - ldfile_add_library_path("/usr/local/lib/386gcc-lib/usr/local/lib"); -#endif - ldfile_output_architecture = bfd_arch_i386; -} - - -static void -gldi386v_after_parse() -{ - -} - -static void -gldi386v_after_allocation() -{ - -} - -static void -gldi386v_before_allocation() -{ - -} - -static void -gldi386v_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - unsigned long machine = 0; - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, machine); -} - -static char * -gldi386v_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLDi386v_TARGET; -} - -static void -gldi386v_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gldi386v_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gldi386v_script = -#include "ldgldi386v.x" -; - -static char *gldi386v_script_option_Ur = -#include "ldgldi386vUr.x" -; -static char *gldi386v_script_option_r = -#include "ldgldi386vr.x" -; -static char *gldi386v_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gldi386v_script_option_Ur; - } - if (config.relocateable_output) { - return gldi386v_script_option_r; - } - - return gldi386v_script; -} -struct ld_emulation_xfer_struct ld_gldi386v_emulation = -{ - gldi386v_before_parse, - gldi386v_syslib, - gldi386v_hll, - gldi386v_after_parse, - gldi386v_after_allocation, - gldi386v_set_output_arch, - gldi386v_choose_target, - gldi386v_before_allocation, - gldi386v_get_script, -}; - diff --git a/ld/ldgldi386v.sc b/ld/ldgldi386v.sc deleted file mode 100755 index 9805f39..0000000 --- a/ld/ldgldi386v.sc +++ /dev/null @@ -1,26 +0,0 @@ -/* $Id$ -*/ - -OUTPUT_FORMAT("i386coff") - -ENTRY(_start) -SECTIONS -{ - .text 0x000000d0 : { - *(.init) - *(.text) - *(.fini) - etext = .; - } - .data ((ADDR(.text) + SIZEOF(.text)) & 0x0fff) + ALIGN(0x00400000) : { - *(.data) - edata = .; - } - .bss (SIZEOF(.data) + ADDR(.data)) : { - *(.bss) - [COMMON] - end = ALIGN(0x8); - } - .comment : { *(.comment) } -} - diff --git a/ld/ldgldi386vUr.sc b/ld/ldgldi386vUr.sc deleted file mode 100755 index 9805f39..0000000 --- a/ld/ldgldi386vUr.sc +++ /dev/null @@ -1,26 +0,0 @@ -/* $Id$ -*/ - -OUTPUT_FORMAT("i386coff") - -ENTRY(_start) -SECTIONS -{ - .text 0x000000d0 : { - *(.init) - *(.text) - *(.fini) - etext = .; - } - .data ((ADDR(.text) + SIZEOF(.text)) & 0x0fff) + ALIGN(0x00400000) : { - *(.data) - edata = .; - } - .bss (SIZEOF(.data) + ADDR(.data)) : { - *(.bss) - [COMMON] - end = ALIGN(0x8); - } - .comment : { *(.comment) } -} - diff --git a/ld/ldgldi386vr.sc b/ld/ldgldi386vr.sc deleted file mode 100755 index 9805f39..0000000 --- a/ld/ldgldi386vr.sc +++ /dev/null @@ -1,26 +0,0 @@ -/* $Id$ -*/ - -OUTPUT_FORMAT("i386coff") - -ENTRY(_start) -SECTIONS -{ - .text 0x000000d0 : { - *(.init) - *(.text) - *(.fini) - etext = .; - } - .data ((ADDR(.text) + SIZEOF(.text)) & 0x0fff) + ALIGN(0x00400000) : { - *(.data) - edata = .; - } - .bss (SIZEOF(.data) + ADDR(.data)) : { - *(.bss) - [COMMON] - end = ALIGN(0x8); - } - .comment : { *(.comment) } -} - diff --git a/ld/ldgldm68kv.c b/ld/ldgldm68kv.c deleted file mode 100755 index 1f83d98..0000000 --- a/ld/ldgldm68kv.c +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id$ -*/ - -/* - * emulate the original gld running on an m68kv system - * - * Written by David Wood @ New York University - */ - - -#include "sysdep.h" -#include "bfd.h" - -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gldm68kv_before_parse() -{ -#ifndef NOTDEF /* Cross developing for now */ - ldfile_add_library_path("/usr/triton/lib/68kgcc-lib/lib"); - ldfile_add_library_path("/usr/triton/lib/68kgcc-lib/usr/lib"); - ldfile_add_library_path("/usr/triton/lib/68kgcc-lib/usr/local/lib"); -#endif - ldfile_output_architecture = bfd_arch_m68k; -} - - -static void -gldm68kv_after_parse() -{ - -} - -static void -gldm68kv_after_allocation() -{ - -} - -static void -gldm68kv_before_allocation() -{ - -} - -static void -gldm68kv_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - unsigned long machine = 0; - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, machine); -} - -static char * -gldm68kv_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLDm68kv_TARGET; -} - -static void -gldm68kv_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gldm68kv_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gldm68kv_script = -#include "ldgldm68kv.x" -; - -static char *gldm68kv_script_option_Ur = -#include "ldgldm68kvUr.x" -; -static char *gldm68kv_script_option_r = -#include "ldgldm68kvr.x" -; -static char *gldm68kv_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gldm68kv_script_option_Ur; - } - if (config.relocateable_output) { - return gldm68kv_script_option_r; - } - - return gldm68kv_script; -} -struct ld_emulation_xfer_struct ld_gldm68kv_emulation = -{ - gldm68kv_before_parse, - gldm68kv_syslib, - gldm68kv_hll, - gldm68kv_after_parse, - gldm68kv_after_allocation, - gldm68kv_set_output_arch, - gldm68kv_choose_target, - gldm68kv_before_allocation, - gldm68kv_get_script, -}; - diff --git a/ld/ldgldm68kv.sc b/ld/ldgldm68kv.sc deleted file mode 100755 index 2e052cd..0000000 --- a/ld/ldgldm68kv.sc +++ /dev/null @@ -1,24 +0,0 @@ -/* $Id$ -*/ - -OUTPUT_FORMAT("m68kvcoff") - -ENTRY(__startup) -SECTIONS -{ - .text 0x001000a8 : { - *(.init) - *(.text) - *(.fini) - _etext = .; - } - .data ((ADDR(.text) + SIZEOF(.text)) % 0x2000) + ALIGN(0x00200000) : { - *(.data) - _edata = .; - } - .bss (SIZEOF(.data) + ADDR(.data)) : { - *(.bss) - [COMMON] - _end = ALIGN(0x8); - } -} diff --git a/ld/ldgldm68kvUr.sc b/ld/ldgldm68kvUr.sc deleted file mode 100755 index 2e052cd..0000000 --- a/ld/ldgldm68kvUr.sc +++ /dev/null @@ -1,24 +0,0 @@ -/* $Id$ -*/ - -OUTPUT_FORMAT("m68kvcoff") - -ENTRY(__startup) -SECTIONS -{ - .text 0x001000a8 : { - *(.init) - *(.text) - *(.fini) - _etext = .; - } - .data ((ADDR(.text) + SIZEOF(.text)) % 0x2000) + ALIGN(0x00200000) : { - *(.data) - _edata = .; - } - .bss (SIZEOF(.data) + ADDR(.data)) : { - *(.bss) - [COMMON] - _end = ALIGN(0x8); - } -} diff --git a/ld/ldgldm68kvr.sc b/ld/ldgldm68kvr.sc deleted file mode 100755 index 2e052cd..0000000 --- a/ld/ldgldm68kvr.sc +++ /dev/null @@ -1,24 +0,0 @@ -/* $Id$ -*/ - -OUTPUT_FORMAT("m68kvcoff") - -ENTRY(__startup) -SECTIONS -{ - .text 0x001000a8 : { - *(.init) - *(.text) - *(.fini) - _etext = .; - } - .data ((ADDR(.text) + SIZEOF(.text)) % 0x2000) + ALIGN(0x00200000) : { - *(.data) - _edata = .; - } - .bss (SIZEOF(.data) + ADDR(.data)) : { - *(.bss) - [COMMON] - _end = ALIGN(0x8); - } -} diff --git a/ld/ldgldm88kbcs.c b/ld/ldgldm88kbcs.c deleted file mode 100755 index f3e9d96..0000000 --- a/ld/ldgldm88kbcs.c +++ /dev/null @@ -1,142 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id$ - * -*/ - -/* - * Written by Steve Chamberlain steve@cygnus.com - */ - - -#include "sysdep.h" -#include "bfd.h" - - -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gldm88kbcs_before_parse() -{ - extern char lprefix; - lprefix = '@'; -} - - -static void -gldm88kbcs_after_parse() -{ - -} - -static void -gldm88kbcs_after_allocation() -{ - -} - -static void -gldm88kbcs_before_allocation() -{ - -} - - -static void -gldm88kbcs_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, ldfile_output_machine); -} - -static char * -gldm88kbcs_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLDM88KBCS_TARGET; -} - -static void -gldm88kbcs_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gldm88kbcs_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gldm88kbcs_script = -#include "ldgldm88kbcs.x" -; - -static char *gldm88kbcs_script_option_Ur = -#include "ldgldm88kbcsUr.x" -; - -static char *gldm88kbcs_script_option_r = -#include "ldgldm88kbcsr.x" -; - -static char *gldm88kbcs_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gldm88kbcs_script_option_Ur; - } - if (config.relocateable_output) { - return gldm88kbcs_script_option_r; - } - - return gldm88kbcs_script; -} -struct ld_emulation_xfer_struct ld_gldm88kbcs_emulation = -{ - gldm88kbcs_before_parse, - gldm88kbcs_syslib, - gldm88kbcs_hll, - gldm88kbcs_after_parse, - gldm88kbcs_after_allocation, - gldm88kbcs_set_output_arch, - gldm88kbcs_choose_target, - gldm88kbcs_before_allocation, - gldm88kbcs_get_script, -}; - diff --git a/ld/ldgldm88kbcs.sc b/ld/ldgldm88kbcs.sc deleted file mode 100755 index c4cb37e..0000000 --- a/ld/ldgldm88kbcs.sc +++ /dev/null @@ -1,40 +0,0 @@ -TARGET(m88kbcs) -OUTPUT_FORMAT(m88kbcs) -OUTPUT_ARCH(m88k) -ENTRY(__start) -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0x10000 + SIZEOF_HEADERS : - { - __.text.start = .; - __.init.start = .; - LONG(0xf400c001) - __.init.end = .; - *(.text) - __.tdesc_start = .; - *(.tdesc) - __.text_end = .; - __.initp.start = .; - __.initp.end =.; - - _etext =.; - } - .data SIZEOF(.text) + ADDR(.text) + 0x400000: - { - *(.data) - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - _end = .; - ___end = .; - } -} - - - diff --git a/ld/ldgldm88kbcs.script b/ld/ldgldm88kbcs.script deleted file mode 100755 index c4cb37e..0000000 --- a/ld/ldgldm88kbcs.script +++ /dev/null @@ -1,40 +0,0 @@ -TARGET(m88kbcs) -OUTPUT_FORMAT(m88kbcs) -OUTPUT_ARCH(m88k) -ENTRY(__start) -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0x10000 + SIZEOF_HEADERS : - { - __.text.start = .; - __.init.start = .; - LONG(0xf400c001) - __.init.end = .; - *(.text) - __.tdesc_start = .; - *(.tdesc) - __.text_end = .; - __.initp.start = .; - __.initp.end =.; - - _etext =.; - } - .data SIZEOF(.text) + ADDR(.text) + 0x400000: - { - *(.data) - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - _end = .; - ___end = .; - } -} - - - diff --git a/ld/ldgldm88kbcsUr.sc b/ld/ldgldm88kbcsUr.sc deleted file mode 100755 index 8d3f12b..0000000 --- a/ld/ldgldm88kbcsUr.sc +++ /dev/null @@ -1,31 +0,0 @@ -SCRIPT -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - ___DTOR_LIST__ = . ; - LONG((___CTOR_LIST__ - .) / 4 -2) - *(___DTOR_LIST__) - LONG(0) - ___CTOR_LIST__ = . ; - LONG((___end_list__ - .) / 4 -2) - *(___CTOR_LIST__) - LONG(0) - ___end_list__ = . ; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} -ENDSCRIPT diff --git a/ld/ldgldm88kbcsUr.script b/ld/ldgldm88kbcsUr.script deleted file mode 100755 index 8d3f12b..0000000 --- a/ld/ldgldm88kbcsUr.script +++ /dev/null @@ -1,31 +0,0 @@ -SCRIPT -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - ___DTOR_LIST__ = . ; - LONG((___CTOR_LIST__ - .) / 4 -2) - *(___DTOR_LIST__) - LONG(0) - ___CTOR_LIST__ = . ; - LONG((___end_list__ - .) / 4 -2) - *(___CTOR_LIST__) - LONG(0) - ___end_list__ = . ; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} -ENDSCRIPT diff --git a/ld/ldgldm88kbcsr.sc b/ld/ldgldm88kbcsr.sc deleted file mode 100755 index a3b39fe..0000000 --- a/ld/ldgldm88kbcsr.sc +++ /dev/null @@ -1,20 +0,0 @@ -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} diff --git a/ld/ldgldm88kbcsr.script b/ld/ldgldm88kbcsr.script deleted file mode 100755 index a3b39fe..0000000 --- a/ld/ldgldm88kbcsr.script +++ /dev/null @@ -1,20 +0,0 @@ -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} diff --git a/ld/ldgldr.sc b/ld/ldgldr.sc deleted file mode 100755 index a3b39fe..0000000 --- a/ld/ldgldr.sc +++ /dev/null @@ -1,20 +0,0 @@ -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} diff --git a/ld/ldgldr.script b/ld/ldgldr.script deleted file mode 100755 index a3b39fe..0000000 --- a/ld/ldgldr.script +++ /dev/null @@ -1,20 +0,0 @@ -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} diff --git a/ld/ldlnk960.c b/ld/ldlnk960.c deleted file mode 100755 index 22d04fc..0000000 --- a/ld/ldlnk960.c +++ /dev/null @@ -1,287 +0,0 @@ -/* intel coff loader emulation specific stuff - Copyright (C) 1991 Free Software Foundation, Inc. - Written by Steve Chamberlain steve@cygnus.com - -This file is part of GLD, the Gnu Linker. - -GLD 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 2, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - $Id$ -*/ - -#include "bfd.h" -#include "sysdep.h" - -/*#include "archures.h"*/ -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldmisc.h" -#include "ldlang.h" -#include "ldfile.h" - -extern boolean lang_float_flag; -extern bfd *output_bfd; - - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - - -typedef struct lib_list { - char *name; - struct lib_list *next; -} lib_list_type; - -static lib_list_type *hll_list; -static lib_list_type **hll_list_tail = &hll_list; - -static lib_list_type *syslib_list; -static lib_list_type **syslib_list_tail = &syslib_list; - - -static void -append(list, name) -lib_list_type ***list; -char *name; -{ - lib_list_type *element = - (lib_list_type *)(ldmalloc(sizeof(lib_list_type))); - - element->name = name; - element->next = (lib_list_type *)NULL; - **list = element; - *list = &element->next; - -} - -static boolean had_hll = false; -static boolean had_hll_name = false; -static void -lnk960_hll(name) -char *name; -{ - had_hll = true; - if (name != (char *)NULL) { - had_hll_name = true; - append(&hll_list_tail, name); - } -} - -static void -lnk960_syslib(name) -char *name; -{ - append(&syslib_list_tail,name); -} - - - -#ifdef GNU960 - -static void -lnk960_before_parse() -{ - static char *env_variables[] = { "G960LIB", "G960BASE", 0 }; - char **p; - char *env ; - - for ( p = env_variables; *p; p++ ){ - env = (char *) getenv(*p); - if (env) { - ldfile_add_library_path(concat(env,"/lib/libcoff","")); - } - } - - env= (char *) getenv("I960BASE"); - if ( env ) { - ldfile_add_library_path(concat(env,"/lib","")); - } - - ldfile_output_architecture = bfd_arch_i960; - ldfile_output_machine = bfd_mach_i960_core; -} - -#else /* not GNU960 */ - -static void -lnk960_before_parse() -{ - char *name = getenv("I960BASE"); - - if (name == (char *)NULL) { - name = getenv("G960BASE"); - if (name == (char *)NULL) { - einfo("%P%F I960BASE and G960BASE not set\n"); - } - } - - - ldfile_add_library_path(concat(name,"/lib","")); - ldfile_output_architecture = bfd_arch_i960; - ldfile_output_machine = bfd_mach_i960_core; -} - -#endif /* GNU960 */ - - -static void -add_on(list, search) -lib_list_type *list; -lang_input_file_enum_type search; -{ - while (list) { - lang_add_input_file(list->name, - search, - (char *)NULL); - list = list->next; - } -} -static void lnk960_after_parse() -{ - - /* If there has been no arch, default to -KB */ - if (ldfile_output_machine_name[0] ==0) { - ldfile_add_arch("KB"); - } - - /* if there has been no hll list then add our own */ - - if(had_hll && !had_hll_name) { - append(&hll_list_tail,"cg"); - if (ldfile_output_machine == bfd_mach_i960_ka_sa || - ldfile_output_machine == bfd_mach_i960_ca) { - { - append(&hll_list_tail,"fpg"); - } - } - } - - add_on(hll_list, lang_input_file_is_l_enum); - add_on(syslib_list, lang_input_file_is_search_file_enum); -} - -static void -lnk960_before_allocation() -{ -} -static void -lnk960_after_allocation() -{ - extern ld_config_type config; - if (config.relocateable_output == false) { - lang_abs_symbol_at_end_of(".text","_etext"); - lang_abs_symbol_at_end_of(".data","_edata"); - lang_abs_symbol_at_beginning_of(".bss","_bss_start"); - lang_abs_symbol_at_end_of(".bss","_end"); - } -} - - -static struct - { - unsigned long number; - char *name; - } -machine_table[] = { - bfd_mach_i960_core ,"CORE", - bfd_mach_i960_kb_sb ,"KB", - bfd_mach_i960_kb_sb ,"SB", - bfd_mach_i960_mc ,"MC", - bfd_mach_i960_xa ,"XA", - bfd_mach_i960_ca ,"CA", - bfd_mach_i960_ka_sa ,"KA", - bfd_mach_i960_ka_sa ,"SA", - - bfd_mach_i960_core ,"core", - bfd_mach_i960_kb_sb ,"kb", - bfd_mach_i960_kb_sb ,"sb", - bfd_mach_i960_mc ,"mc", - bfd_mach_i960_xa ,"xa", - bfd_mach_i960_ca ,"ca", - bfd_mach_i960_ka_sa ,"ka", - bfd_mach_i960_ka_sa ,"sa", - 0,(char *)NULL -}; - -static void -lnk960_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - unsigned int i; - ldfile_output_machine = bfd_mach_i960_core; - for (i= 0; machine_table[i].name != (char*)NULL; i++) { - if (strcmp(ldfile_output_machine_name,machine_table[i].name)==0) { - ldfile_output_machine = machine_table[i].number; - break; - } - } - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, ldfile_output_machine); -} - -static char * -lnk960_choose_target() -{ -#ifdef GNU960 - - return bfd_make_targ_name(BFD_COFF_FORMAT, 0); - -#else - - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; -#ifdef LNK960_LITTLE - return LNK960_TARGET_LITTLE -#else - return LNK960_TARGET; -#endif -#endif - -} - -/* The default script if none is offered */ -static char *lnk960_script = -#include "ldlnk960.x" -; - - -static char *lnk960_script_relocateable = -#include "ldlnk960.xr" -; - -static char *lnk960_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output) { - return lnk960_script_relocateable; - } - return lnk960_script; -} -struct ld_emulation_xfer_struct ld_lnk960_emulation = -{ - lnk960_before_parse, - lnk960_syslib, - lnk960_hll, - lnk960_after_parse, - lnk960_after_allocation, - lnk960_set_output_arch, - lnk960_choose_target, - lnk960_before_allocation, - lnk960_get_script, -}; diff --git a/ld/ldlnk960.sc b/ld/ldlnk960.sc deleted file mode 100755 index 409d1b9..0000000 --- a/ld/ldlnk960.sc +++ /dev/null @@ -1,21 +0,0 @@ - -SECTIONS -{ - .text : - { - *(.text) - } -_etext = . ; - .data SIZEOF(.text) + ADDR(.text): - { - *(.data) - } -_edata = .; - .bss SIZEOF(.data) + ADDR(.data) : - { - _bss_start = . ; - *(.bss) - *(COMMON) - } -_end = . ; -} diff --git a/ld/ldlnk960.script b/ld/ldlnk960.script deleted file mode 100755 index f498412..0000000 --- a/ld/ldlnk960.script +++ /dev/null @@ -1,21 +0,0 @@ - -SECTIONS -{ - .text : - { - *(.text) - } -_etext = . ; - .data SIZEOF(.text) + ADDR(.text): - { - *(.data) - } -_edata = .; - .bss SIZEOF(.data) + ADDR(.data) : - { - _bss_start = . ; - *(.bss) - [COMMON] - } -_end = . ; -} diff --git a/ld/ldlnk960r.sc b/ld/ldlnk960r.sc deleted file mode 100755 index daf59bb..0000000 --- a/ld/ldlnk960r.sc +++ /dev/null @@ -1,17 +0,0 @@ -SECTIONS -{ - .text 0: - { - *(.text) - } - .data SIZEOF(.text) + ADDR(.text): - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldlnk960r.script b/ld/ldlnk960r.script deleted file mode 100755 index daf59bb..0000000 --- a/ld/ldlnk960r.script +++ /dev/null @@ -1,17 +0,0 @@ -SECTIONS -{ - .text 0: - { - *(.text) - } - .data SIZEOF(.text) + ADDR(.text): - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} - diff --git a/ld/ldm88k.c b/ld/ldm88k.c deleted file mode 100755 index c354ccb..0000000 --- a/ld/ldm88k.c +++ /dev/null @@ -1,142 +0,0 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. - -This file is part of GLD, the Gnu Linker. - -GLD 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 1, or (at your option) -any later version. - -GLD 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 GLD; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id$ - * -*/ - -/* - * Written by Steve Chamberlain steve@cygnus.com - */ - - -#include "sysdep.h" -#include "bfd.h" - - -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gldm88kbcs_before_parse() -{ - extern char lprefix; - lprefix = '@'; -} - - -static void -gldm88kbcs_after_parse() -{ - -} - -static void -gldm88kbcs_after_allocation() -{ - -} - -static void -gldm88kbcs_before_allocation() -{ - -} - - -static void -gldm88kbcs_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, ldfile_output_machine); -} - -static char * -gldm88kbcs_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLDM88KBCS_TARGET; -} - -static void -gldm88kbcs_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gldm88kbcs_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gldm88kbcs_script = -#include "ldm88k.x" -; - -static char *gldm88kbcs_script_option_Ur = -#include "ldm88kUr.x" -; - -static char *gldm88kbcs_script_option_r = -#include "ldm88kr.x" -; - -static char *gldm88kbcs_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gldm88kbcs_script_option_Ur; - } - if (config.relocateable_output) { - return gldm88kbcs_script_option_r; - } - - return gldm88kbcs_script; -} -struct ld_emulation_xfer_struct ld_gldm88kbcs_emulation = -{ - gldm88kbcs_before_parse, - gldm88kbcs_syslib, - gldm88kbcs_hll, - gldm88kbcs_after_parse, - gldm88kbcs_after_allocation, - gldm88kbcs_set_output_arch, - gldm88kbcs_choose_target, - gldm88kbcs_before_allocation, - gldm88kbcs_get_script, -}; - diff --git a/ld/ldm88k.sc b/ld/ldm88k.sc deleted file mode 100755 index 1e0203f..0000000 --- a/ld/ldm88k.sc +++ /dev/null @@ -1,52 +0,0 @@ -TARGET(m88kbcs) -OUTPUT_FORMAT(m88kbcs) -OUTPUT_ARCH(m88k) -ENTRY(__start) -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0x10000 + SIZEOF_HEADERS : - { - CREATE_OBJECT_SYMBOLS - /* If relocating */ - __.text.start = .; - __.init.start = .; - LONG(0xf400c001) - __.init.end = .; - /* End if relocating */ - *(.text) - /* If relocating */ - __.tdesc_start = .; - *(.tdesc) - __.text_end = .; - __.initp.start = .; - __.initp.end =.; - - _etext =.; - /* End if relocating */ - } - .data SIZEOF(.text) + ADDR(.text) + 0x400000: - { - *(.data) - __CTOR_LIST__ = .; - *(CTOR) - LONG(0); - __DTOR_LIST__ = . ; - *(DTOR) - LONG(0); - *(.comment) - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - *(COMMON) - _end = .; - ___end = .; - } -} - - - diff --git a/ld/ldm88kUr.sc b/ld/ldm88kUr.sc deleted file mode 100755 index 8d3f12b..0000000 --- a/ld/ldm88kUr.sc +++ /dev/null @@ -1,31 +0,0 @@ -SCRIPT -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - ___DTOR_LIST__ = . ; - LONG((___CTOR_LIST__ - .) / 4 -2) - *(___DTOR_LIST__) - LONG(0) - ___CTOR_LIST__ = . ; - LONG((___end_list__ - .) / 4 -2) - *(___CTOR_LIST__) - LONG(0) - ___end_list__ = . ; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} -ENDSCRIPT diff --git a/ld/ldm88kr.sc b/ld/ldm88kr.sc deleted file mode 100755 index a3b39fe..0000000 --- a/ld/ldm88kr.sc +++ /dev/null @@ -1,20 +0,0 @@ -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - } - .data SIZEOF(.text) + ADDR(.text) : - { - *(.data) - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - [COMMON] - } -} diff --git a/ld/ldtemplate b/ld/ldtemplate deleted file mode 100755 index 961fbc0..0000000 --- a/ld/ldtemplate +++ /dev/null @@ -1,159 +0,0 @@ -/* NOTE: If there are angle brackets here: <TARGET> then this is a - * template file (ldtemplate), intended for processing by sed. - * Otherwise, this file has already been processed by sed, - * and customized for a particular emulation target. - * In that DO NOT EDIT the file; edit ldtemplate instead. - */ - -/* emulate the original gld for the given <TARGET> - Copyright (C) 1991 Free Software Foundation, Inc. - Written by Steve Chamberlain steve@cygnus.com - -This file is part of GLD, the Gnu Linker. - -This program 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 2 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, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id:# - */ - -#define TARGET_IS_<TARGET> - - -#include "bfd.h" -#include "sysdep.h" -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void gld<target>_before_parse() -{ -#ifdef TARGET_IS_M88KBCS - extern char lprefix; - lprefix = '@'; -#else -#ifndef TARGET_ /* I.e., if not generic */ - ldfile_output_architecture = bfd_arch_<arch>; -#endif -#endif -} - - -static void -gld<target>_after_parse() -{ - -} - -static void -gld<target>_after_allocation() -{ - -} - -static void -gld<target>_before_allocation() -{ - -} - - -static void -gld<target>_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - bfd_set_arch_mach(output_bfd, - ldfile_output_architecture, ldfile_output_machine); -} - -static char * -gld<target>_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return GLD<TARGET>_TARGET; -} - -static void -gld<target>_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -gld<target>_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - -static char *gld<target>_script = -#include "<ldtarget>.x" -; -static char *gld<target>_script_option_Ur = -#include "<ldtarget>.xu" -; -static char *gld<target>_script_option_r = -#include "<ldtarget>.xr" -; -static char *gld<target>_script_option_n = /* Used with -n flag. */ -#include "<ldtarget>.xn" -; -static char *gld<target>_script_option_N = /* Used with -N flag. */ -#include "<ldtarget>.xN" -; - -static char *gld<target>_get_script() -{ - extern ld_config_type config; - if (config.relocateable_output == true && - config.build_constructors == true) { - return gld<target>_script_option_Ur; - } - if (config.relocateable_output == true) { - return gld<target>_script_option_r; - } - if (!config.text_read_only) - return gld<target>_script_option_N; - if (!config.magic_demand_paged) - return gld<target>_script_option_n; - return gld<target>_script; -} -struct ld_emulation_xfer_struct ld_gld<target>_emulation = -{ - gld<target>_before_parse, - gld<target>_syslib, - gld<target>_hll, - gld<target>_after_parse, - gld<target>_after_allocation, - gld<target>_set_output_arch, - gld<target>_choose_target, - gld<target>_before_allocation, - gld<target>_get_script, -}; diff --git a/ld/ldvanilla.c b/ld/ldvanilla.c deleted file mode 100755 index 3bd51e6..0000000 --- a/ld/ldvanilla.c +++ /dev/null @@ -1,118 +0,0 @@ -/* A vanilla emulation with no defaults - Copyright (C) 1991 Free Software Foundation, Inc. - Written by Steve Chamberlain steve@cygnus.com - -This file is part of GLD, the Gnu Linker. - -This program 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 2 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, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * $Id$ - */ - -#include "bfd.h" -#include "sysdep.h" - - -#include "ld.h" -#include "config.h" -#include "ldemul.h" -#include "ldfile.h" -#include "ldmisc.h" - -extern boolean lang_float_flag; - - -extern enum bfd_architecture ldfile_output_architecture; -extern unsigned long ldfile_output_machine; -extern char *ldfile_output_machine_name; - -extern bfd *output_bfd; - - - -static void vanilla_before_parse() -{ -} - - -static void -vanilla_after_parse() -{ - -} - -static void -vanilla_after_allocation() -{ - -} - -static void -vanilla_before_allocation() -{ - -} - - -static void -vanilla_set_output_arch() -{ - /* Set the output architecture and machine if possible */ - unsigned long machine = 0; - bfd_set_arch_mach(output_bfd, ldfile_output_architecture, machine); -} - -static char * -vanilla_choose_target() -{ - char *from_outside = getenv(TARGET_ENVIRON); - if (from_outside != (char *)NULL) - return from_outside; - return VANILLA_TARGET; -} - -static void -vanilla_syslib() -{ - info("%S SYSLIB ignored\n"); -} - -static void -vanilla_hll(ignore) -char *ignore; -{ - info("%S HLL ignored\n"); -} - - -static char *vanilla_get_script() -{ -return ""; -} - -struct ld_emulation_xfer_struct ld_vanilla_emulation = -{ - vanilla_before_parse, - vanilla_syslib, - vanilla_hll, - vanilla_after_parse, - vanilla_after_allocation, - vanilla_set_output_arch, - vanilla_choose_target, - vanilla_before_allocation, - vanilla_get_script, -}; - diff --git a/ld/makefile.dos b/ld/makefile.dos deleted file mode 100755 index 7da9ac1..0000000 --- a/ld/makefile.dos +++ /dev/null @@ -1,527 +0,0 @@ -# Makefile for the GNU linker ld (version 2) -# Copyright (C) 1989-1991 Free Software Foundation, Inc. - -# This file is part of GNU ld.. - -# This program 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 2 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, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# -# $Id$ -# - -srcdir = . - -ddestdir = /usr/local - -#version=/`$(unsubdir)/../gcc$(subdir)/gcc -dumpversion` -version= -bindir = $(ddestdir)/bin -gcclibdir = $(ddestdir)/lib/gcc/$(target_alias)$(version) - -# Seach path to override the default search path for -lfoo libraries. -# If LIB_PATH is empty, the ones in the script (if any) are left alone. -# Otherwise, they are replaced with the ones given in LIB_PATH, -# which may have the form: LIB_PATH=/lib:/usr/local/lib -LIB_PATH = - -INSTALL = install -c -INSTALL_PROGRAM = $(INSTALL) -INSTALL_FILE = $(INSTALL) - -BASEDIR = ../.. -INCLUDE = $(srcdir)/../include -INCLUDES = -I. -I$(srcdir) -I$(INCLUDE) -MINUS_G = -g - -# Where to find texinfo.tex to format docn with TeX -TEXIDIR = $(srcdir)/../texinfo/fsf - -# Whether to get roff to put indexing entries on stderr -TEXI2OPT = -# You neeed this to generate ld-index.ms (or .mm or .me) -# TEXI2OPT = -i - -MAKEINFO=makeinfo -TEXI2ROFF=texi2roff - -# Which roff program to use to generate index for texi2roff'd doc -ROFF = groff - -BISON = bison -BISONFLAGS = -v - -SCRIPTS = ldgld68k.sc ldgld.sc \ - ldlnk960.sc ldlnk960r.sc ldgld960.sc \ - i386aout.sc ldm88k.sc ldglda29k.sc news.sc h8300hds.sc ebmon29k.sc - -#### target and host dependent Makefile fragments come in here. -HDEFINES=-O -D__MSDOS__ -D__GO32__ -TDEFINES= -CDEFINES= -### - -CFLAGS = $(INCLUDES) $(MINUS_G) $(HDEFINES) $(TDEFINES) $(CDEFINES) -LINTFLAGS = $(INCLUDES) $(EXTRA_DEF) - -.SUFFIXES: .y .x .xr .xu .xn .xN .sc .scu .scr .scn - -# go directly to ld.new in case this ld isn't capable of -# linking native object on this host. It can be renamed on -# install. -LD_PROG = ld.new - -# A .sc script file is needed for each emulation mode. -# sed is used to transform this script into two variant forms: -# A .scr script is for linking without relocation (-r flag). -# A .scu script is like .scr, but *do* create constructors. -# A .scn script is for linking with -N flag (mix text and data on same page). -# A .scN script is for linking with -N flag (mix text and data on same page). -# The diference is that segments should (need) not be page aligned. - -# A sed pattern to translate .sc to .scu: -SED_MAKE_RELOC_WITH_CONSTRUCTORS=\ - -e "/If relocating/,/End if relocating/d" \ - -e "/=/s/[_a-zA-Z.]* *= .*//g" \ - -e '/>/s/} *> *[a-zA-Z]*/}/' \ - -e "/text/s/[.]text .*:/.text :/" \ - -e "/data/s/[.]data .*:/.data :/" -# A sed pattern to translate .scu to .scr: -SED_REMOVE_CONSTRUCTORS= -e /CONSTRUCTORS/d - -.sc.scu: - sed $(SED_MAKE_RELOC_WITH_CONSTRUCTORS) $< >$*.scu -.scu.scr: - sed $(SED_REMOVE_CONSTRUCTORS) < $< >$*.scr - -# Each builtin script file is included as a C string literal. -# These are generated by the mkscript filter. -.sc.x: - if [ "x"$(LIB_PATH) = "x" ]; then ./mkscript < $< >$*.x ; \ - else \ - (sed <$< -e '/SEARCH_DIR(.*)/d' ; \ - echo $(LIB_PATH) | tr ':' ' ' | sed -e 's/\([^ ][^ ]*\)/SEARCH_DIR(\1);/g';) | ./mkscript >$*.x;\ - fi - -# The .xn script is used if the -n flag is given (write-protect text).. -# Sunos starts the text segment for demand-paged binaries at 0x2020 -# and other binaries at 0x2000, since the exec header is paged in -# with the text. Some other Unix variants do the same. -# For -n and -N flags the offset of the exec header must be removed. -# This sed script does this if the master script contains -# a line of the form ".text 0xAAAA BLOCK(0xBBBB):" - the -# output will contain ".text 0xBBBB:". (For Sunos AAAA=2020 and BBBB=2000.) -.x.xn: - sed -e '/text/s/\.text .* BLOCK(\([^)]*\)):/.text \1:/' < $< >$*.xn - -# The .xN script is used if the -N flag is given (don't write-protect text). -# This is like -n, except that the data segment need not be page-aligned. -# So get rid of commands for page-alignment: We assume these use ALIGN -# with a hex constant that end with 00, since any normal page size is be -# at least divisible by 256. We use the 00 to avoid matching -# anything that tries to align of (say) 8-byte boundaries. -.xn.xN: - sed -e '/ALIGN/s/ALIGN( *0x[0-9a-fA-F]*00 *)/./' < $< >$*.xN - -# The xu and xr scripts don't search libraries, so LIB_PATH doesn't matter. -.sc.xu: - sed $(SED_MAKE_RELOC_WITH_CONSTRUCTORS) < $< | ./mkscript >$*.xu -.sc.xr: - sed $(SED_MAKE_RELOC_WITH_CONSTRUCTORS) $(SED_REMOVE_CONSTRUCTORS) \ - < $< | ./mkscript >$*.xr - -# for self hosting -BFDLIB=../bfd/libbfd.a -LIBIBERTY=../libiberty/libiberty.a - -OFILES= ldgram.o ldlex.o ldlang.o ldctor.o ldmain.o ldindr.o \ - ldwarn.o ldwrite.o ldexp.o ldlnk960.o ld__gld68k.o ld__i386aout.o \ - ld__m88k.o ld__glda29k.o ld__news.o h8300hds.o ld__ebmon29k.o \ - ld__gld.o ldgld960.o ldemul.o ldver.o ldmisc.o ldsym.o ldvanilla.o ldfile.o - -HEADERS=config.h ldmain.h ldmain.h ldwarn.h ldmisc.h ldindr.h \ - ldsym.h ldctor.h ldlang.h ldexp.h \ - ldlex.h ldwrite.h ldver.h ldemul.h ldfile.h ldgram.h ld.h - -MANSOURCES=ld.tex - -LDCSOURCES=ldlang.c ldctor.c ldindr.c ldmain.c ldwrite.c ldwarn.c ldlnk960.c \ - ld__gld.c ld__gld68k.c ld__m88k.c ld__ebmon29k.c \ - ldgld960.c ldemul.c ldver.c ldmisc.c ldexp.c ldsym.c ldfile.c ldvanilla.c - -GENERATED_SOURCES=ldgram.c ldlex.c ldgram.h ld__*.c -GENERATED_HEADERS=ldgram.h - -LDSOURCES=$(LDCSOURCES) ldgram.y ldlex.l ldgram.h - -BFDSOURCES=../../bfd/common/*.c - -SOURCES= $(LDSOURCES) $(BFDSOURCES) -LINTSOURCES= $(LDCSOURCES) $(BFDSOURCES) $(GENERATED_SOURCES) - -STAGESTUFF = *.x *.x[ru] *.sc[ru] $(GENERATED_SOURCES) $(GENERATED_HEADERS) $(OFILES) $(LD_PROG) mkscript - -all: $(LD_PROG) - -all-info: ld.info - -ldgram.h ldgram.c: ldgram.y - $(BISON) $(BISONFLAGS) -d ldgram.y - mv -f y.tab.c ldgram.c - mv -f y.tab.h ldgram.h - -ldlex.c: ldlex.l - lex -t ldlex.l >ldlex.c - -# These all start with ld__ so 'make clean' can find them. - -ld__gld.c: $(srcdir)/ldtemplate - sed -e s/"<ldtarget>"/ldgld/g -e s/"<arch>"/m68k/g \ - -e s/"<target>"//g -e s/"<TARGET>"//g <$(srcdir)/ldtemplate >$@ -ld__news.c: $(srcdir)/ldtemplate - sed -e s/"<ldtarget>"/news/g -e s/"<arch>"/m68k/g \ - -e s/"<target>"/news/g -e s/"<TARGET>"/NEWS/g <$(srcdir)/ldtemplate >$@ - -ld__i386aout.c: $(srcdir)/ldtemplate - sed -e s/"<ldtarget>"/i386aout/g -e s/"<arch>"/i386/g \ - -e s/"<target>"/i386aout/g -e s/"<TARGET>"/I386AOUT/g <$(srcdir)/ldtemplate >$@ - - -ld__ebmon29k.c: $(srcdir)/ldtemplate - sed -e s/"<ldtarget>"/ebmon29k/g -e s/"<arch>"/a29k/g \ - -e s/"gld<target>"/ebmon29k/g -e s/"GLD<TARGET>"/EBMON29K/g \ - -e s/"<ldtarget>.x"/ebmon.x/ <$(srcdir)/ldtemplate >$@ - -ld__gld68k.c: $(srcdir)/ldtemplate - sed -e s/"<ldtarget>"/ldgld68k/g -e s/"<arch>"/m68k/g \ - -e s/"<target>"/68k/g -e s/"<TARGET>"/68K/g <$(srcdir)/ldtemplate >$@ -ld__glda29k.c: $(srcdir)/ldtemplate - sed -e s/"<ldtarget>"/ldglda29k/g -e s/"<arch>"/a29k/g \ - -e s/"<target>"/29k/g -e s/"<TARGET>"/29K/g <$(srcdir)/ldtemplate >$@ -ld__m88k.c: $(srcdir)/ldtemplate - sed -e s/"<ldtarget>"/ldm88k/g -e s/"<arch>"/m88k/g \ - -e s/"<target>"/m88kbcs/g -e s/"<TARGET>"/M88KBCS/g <$(srcdir)/ldtemplate >$@ - -# The .c files for these are generated from ldtemplete. -ld__gld.o: ./mkscript ldgld.x ldgld.xr ldgld.xu ldgld.xn ldgld.xN -ld__news.o: ./mkscript news.x news.xr news.xu news.xn news.xN -ld__i386aout.o: ./mkscript i386aout.x i386aout.xr i386aout.xu i386aout.xn i386aout.xN -ld__ebmon29k.o: ./mkscript ebmon29k.x ebmon29k.xr ebmon29k.xu \ - ebmon29k.xn ebmon29k.xN -ld__gld68k.o: ./mkscript ldgld68k.x ldgld68k.xr ldgld68k.xu \ - ldgld68k.xn ldgld68k.xN -ld__glda29k.o: ./mkscript ldglda29k.x ldglda29k.xr ldglda29k.xu \ - ldglda29k.xn ldglda29k.xN -ld__m88k.o: ./mkscript ldm88k.x ldm88k.xr ldm88k.xu ldm88k.xn ldm88k.xN - -# The .c files for these are (for now) specially written (not ldtemplete). -ldgld960.o: ./mkscript ldgld960.x -ldlnk960.o: ./mkscript ldlnk960.x ldlnk960.xr -h8300hds.o: ./mkscript h8300hds.x - - -#$(BFDLIB): $(BFDSOURCES) -# (cd ../bfd; make) - -$(LD_PROG): $(OFILES) $(BFDLIB) $(LIBIBERTY) - $(CC) $(CFLAGS) $(LDFLAGS) -o $(LD_PROG) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(LOADLIBES) - -# (cd ../bfd; make) -# LDEMULATION=gld; export LDEMULATION; GNUTARGET=a.out-sunos-big;./ldok -format a.out-sunos-big -o ld /lib/crt0.o $(OFILES) $(BFDLIB) $(LIBIBERTY) -lc /usr/local/lib/gcc/sparc/1.91/gnulib -# gld -o ld /lib/crt0.o $(OFILES) $(BFDLIB) $(LIBIBERTY) -lc /usr/local/lib/gcc/sparc/1.91/gnulib -# $(CC) -Bstatic -o ld.new $(OFILES) $(BFDLIB) $(LIBIBERTY) - - -ld1: ld.new - $(HOSTING_EMU); ./ld.new -o ld1 $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) - -ld2: ld1 - $(HOSTING_EMU); ./ld1 -o ld2 $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) - -ld3: ld2 - $(HOSTING_EMU); ./ld2 -o ld3 $(HOSTING_CRT0) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(HOSTING_LIBS) - -###################################################################### -# DOCUMENTATION TARGETS -# TeX output -ld.dvi: $(srcdir)/ld.texinfo - TEXINPUTS=${TEXIDIR}:.:$$TEXINPUTS tex $(srcdir)/ld.texinfo - texindex ld.?? - TEXINPUTS=${TEXIDIR}:.:$$TEXINPUTS tex $(srcdir)/ld.texinfo - -# info file for online browsing -ld.info: $(srcdir)/ld.texinfo - $(MAKEINFO) -o ld.info $(srcdir)/ld.texinfo - -#separate targets for "ms", "me", and "mm" forms of roff doc -# Try to use a recent texi2roff. v2 was put on prep in jan91. -# If you want an index, see texi2roff doc for postprocessing -# and add -i to texi2roff invocations below. -# Workarounds for texi2roff-2 (probably fixed in later texi2roff's, delete -# correspondint -e lines when later texi2roff's are current) -# + @ifinfo's deleted explicitly due to texi2roff-2 bug w nested constructs. -# + @c's deleted explicitly because texi2roff sees texinfo commands in them -# + @ (that's at-BLANK) not recognized by texi2roff, turned into blank -# + @alphaenumerate is ridiculously new, turned into @enumerate - -ld.ms: $(srcdir)/ld.texinfo - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/ld.texinfo | \ - $(TEXI2ROFF) $(TEXI2OPT) -ms | \ - sed -e 's/---/\\(em/g' \ - >>ld.ms - -# index for roff output -ld-index.ms: ld.ms - $(ROFF) -ms ld.ms 2>&1 1>/dev/null | \ - sed -e '/: warning:/d' | \ - texi2index >ld-index.ms - -# roff output (-mm) -ld.mm: $(srcdir)/ld.texinfo - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e '/@noindent/d' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/ld.texinfo | \ - $(TEXI2ROFF) $(TEXI2OPT) -mm | \ - sed -e 's/---/\\(em/g' \ - >ld.mm - -# index for roff output -ld-index.mm: ld.mm - $(ROFF) -mm ld.mm 2>&1 1>/dev/null | \ - sed -e '/: warning:/d' | \ - texi2index >ld-index.mm - -# roff output (-me) -ld.me: $(srcdir)/ld.texinfo - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/ld.texinfo | \ - $(TEXI2ROFF) $(TEXI2OPT) -me | \ - sed -e 's/---/\\(em/g' \ - >>ld.me - -# index for roff output -ld-index.me: ld.me - $(ROFF) -me ld.me 2>&1 1>/dev/null | \ - sed -e '/: warning:/d' | \ - texi2index >ld-index.me - - -###################################################################### - -mkscript: $(srcdir)/mkscript.c - $(CC) $(CFLAGS) $(LDFLAGS) -o mkscript $(srcdir)/mkscript.c $(LOADLIBES) - -ldlex.c: ldlex.l ldgram.h -ldlex.o: ldlex.c ldgram.h -ldgram.o: ldgram.c -ldgram.c: ldgram.y - -ldgld68k.x : ldgld68k.sc -ldgld68kUr.x : ldgld68kUr.sc -ldgld68kr.x : ldgld68kr.sc -h8300hds.x: h8300hds.sc -ldgld.x : ldgld.sc -ldgldUr.x : ldgldUr.sc -ldgldr.x : ldgldr.sc -ldlnk960.x : ldlnk960.sc -ldlnk960r.x : ldlnk960r.sc -ldgld960.x : ldgld960.sc -ldgldm88k.x : ldgldm88k.sc -ldm88kUr.x : ldm88kUr.sc -ldm88kr.x: ldm88kr.sc -ldm88k.x: ldm88k.sc -news.x: news.sc -i386aout.x: i386aout.sc -h8300hds.x: h8300hds.sc -h8300hds.o: h8300hds.c -ldgld68k.x: ldgld68k.sc -ldglda29k.x : ldglda29k.sc -ldglda29kr.x : ldglda29kr.sc -ldglda29kUr.x : ldglda29kUr.sc - -ebmon29k.x : ebmon29k.sc -ebmon29kr.x : ebmon29kr.sc -ebmon29kUr.x : ebmon29kUr.sc - -stage1: force - - mkdir stage1 - - mv -f $(STAGESTUFF) stage1 - - (cd stage1 ; ln -s $(LD_PROG) ld) - -stage2: force - - mkdir stage2 - - mv -f $(STAGESTUFF) stage2 - - (cd stage2 ; ln -s $(LD_PROG) ld) - -stage3: force - - mkdir stage3 - - mv -f $(STAGESTUFF) stage3 - - (cd stage3 ; ln -s $(LD_PROG) ld) - -against=stage2 - -comparison: force - for i in $(STAGESTUFF) ; do cmp $$i $(against)/$$i ; done - -de-stage1: force - - (cd stage1 ; mv -f * ..) - - rm ld - - rmdir stage1 - -de-stage2: force - - (cd stage2 ; mv -f * ..) - - rm ld - - rmdir stage2 - -de-stage3: force - - (cd stage3 ; mv -f * ..) - - rm ld - - rmdir stage3 - -clean: - - rm -f TAGS $(OFILES) $(GENERATED_SOURCES) $(GENERATED_HEADERS) - - rm -f *.x *.x[runN] *.sc[runN] - - rm -f ld.?? ld.??? - - rm -f ld ld1 ld2 ld3 ld.new mkscript *.o y.output - -lintlog: $(SOURCES) Makefile - $(LINT) -abhxzn $(LINTFLAGS) $(LINTSOURCES) \ -| grep -v "pointer casts may be troublesome" \ -| grep -v "possible pointer alignment problem" \ -| grep -v "ignore" \ -| grep -v "conversion from long may lose accuracy" \ -| grep -v "warning: constant argument to NOT" \ -| grep -v "enumeration type clash, operator CAST" \ -| grep -v "warning: constant in conditional context"\ -| grep -v "archive\.c" - - -tags TAGS: $(SOURCES) $(HEADERS) - etags -t $? - - -objdump: objdump.c - -install: $(LD_PROG) - $(INSTALL_PROGRAM) ld.new $(ddestdir)/bin/ld - $(INSTALL_PROGRAM) ld.new $(gcclibdir)/ld - -install-info: all-info - for i in ld.info* ; do \ - echo Installing $$i... ; \ - (cp $$i $(idestdir)/info/$$i.new \ - && mv -f $(idestdir)/info/$$i.new $(idestdir)/info/$$i) \ - || exit 1 ; \ - done - -# Something like the following might make sense for install, but doesn't work -# - it is too fragile, depending on a gcc binary int the right place. -# Perhaps using gcc/version.c might work? -# # If $(gcclibdir) exists, install ld there, and put a link to it -# # from $(bindir); otherwise put ld in $(bindir). -# if ([ -x $(unsubdir)/../gcc$(subdir)/gcc -a -d $(gcclibdir) ]); then \ -# $(INSTALL_PROGRAM) ld.new $(gcclibdir)/ld; \ -# cd $(bindir); rm -f ld; ln -s $(gcclibdir)/ld ld; \ -# else \ -# $(INSTALL_PROGRAM) ld.new $(bindir)/ld; \ -# fi - -#----------------------------------------------------------------------------- -# 'STANDARD' GNU/960 TARGETS BELOW THIS POINT -# -# 'VERSION' file must be present and contain a string of the form "x.y" -#----------------------------------------------------------------------------- - -ver960.c: FORCE - rm -f ver960.c - echo "char ${TARG}_ver[]= \"${TARG} `cat VERSION`, `date`\";" > ver960.c - - -# This target should be invoked before building a new release. -# 'VERSION' file must be present and contain a string of the form "x.y" -# -roll: - @V=`cat VERSION` ; \ - MAJ=`sed 's/\..*//' VERSION` ; \ - MIN=`sed 's/.*\.//' VERSION` ; \ - V=$$MAJ.`expr $$MIN + 1` ; \ - rm -f VERSION ; \ - echo $$V >VERSION ; \ - echo Version $$V - - -dep: $(LDSOURCES) - mkdep $(CFLAGS) $? - -# Dummy target to force execution of dependent targets. -# -force: - -# Target to uncomment host-specific lines in this makefile. Such lines must -# have the following string beginning in column 1: #__<hostname>__# -# Original Makefile is backed up as 'Makefile.old'. -# -# Invoke with: make make HOST=xxx -# -make: - -@if test $(HOST)x = x ; then \ - echo 'Specify "make make HOST=???"'; \ - exit 1; \ - fi ; \ - grep -s "^#The next line was generated by 'make make'" Makefile; \ - if test $$? = 0 ; then \ - echo "Makefile has already been processed with 'make make'";\ - exit 1; \ - fi ; \ - mv -f Makefile Makefile.old; \ - echo "#The next line was generated by 'make make'" >Makefile ; \ - echo "HOST=$(HOST)" >>Makefile ; \ - echo >>Makefile ; \ - sed "s/^#__$(HOST)__#//" < Makefile.old >>Makefile - -# - -Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) $(target_makefile_frag) - $(SHELL) ./config.status - -### Local Variables: *** -### mode:fundamental *** -### page-delimiter: "^#" *** -### End: *** -### end of file - - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/ld/news.sc b/ld/news.sc deleted file mode 100755 index 9bf3af7..0000000 --- a/ld/news.sc +++ /dev/null @@ -1,30 +0,0 @@ -OUTPUT_FORMAT("a.out-newsos3") -OUTPUT_ARCH(m68k) - -SEARCH_DIR(/lib) -SEARCH_DIR(/usr/lib) -SEARCH_DIR(/usr/local/lib) -__DYNAMIC = 0; -SECTIONS -{ - .text 0: - { - CREATE_OBJECT_SYMBOLS - *(.text) - _etext = ALIGN(0x1000); - } - .data ALIGN(0x1000) : - { - *(.data) - CONSTRUCTORS; - _edata = .; - } - .bss SIZEOF(.data) + ADDR(.data) : - { - *(.bss) - *(COMMON) - _end = .; - __end = .; - } -} - diff --git a/ld/saber b/ld/saber deleted file mode 100755 index e57f045..0000000 --- a/ld/saber +++ /dev/null @@ -1,80 +0,0 @@ -suppress 652 -load -I../bfd -I../../devo/bfd -I../../devo/include -DMINIMIZE=1 -DDEFAULT_VECTOR='hp300bsd_vec' -DSELECT_VECS='&hp300bsd_vec' ../../devo/bfd/targets.c -load -I. -I../../devo/ld -I../../devo/include ld__a29k.c -load -I. -I../../devo/ld -I../../devo/include ld__h8300hms.c -load -I. -I../../devo/ld -I../../devo/include ld__lnk960.c -load -I. -I../../devo/ld -I../../devo/include ld__sun3.c -load -I. -I../../devo/ld -I../../devo/include ldlex.c -load -I. -I../../devo/ld -I../../devo/include ld__ebmon29k.c -load -I. -I../../devo/ld -I../../devo/include ld__h8300xray.c -load -I. -I../../devo/ld -I../../devo/include ld__m88kbcs.c -load -I. -I../../devo/ld -I../../devo/include ld__sun4.c -load -I. -I../../devo/ld -I../../devo/include ld__gld960.c -load -I. -I../../devo/ld -I../../devo/include ld__hp300bsd.c -load -I. -I../../devo/ld -I../../devo/include ld__news.c -load -I. -I../../devo/ld -I../../devo/include ld__vanilla.c -load -I. -I../../devo/ld -I../../devo/include ld__go32.c -load -I. -I../../devo/ld -I../../devo/include ld__i386aout.c -load -I. -I../../devo/ld -I../../devo/include ld__st2000.c -load -I. -I../../devo/ld -I../../devo/include ld__sa29200.c -load -I. -I../../devo/ld -I../../devo/include ldgram.c - -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/cplus-dem.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldexp.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldlang.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldver.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldctor.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldfile.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldmain.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldwarn.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/mri.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldemul.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldmisc.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldwrite.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/relax.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/lderror.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldindr.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/ldsym.c -load -I. -I../../devo/ld -I../../devo/include ../../devo/ld/lexsup.c - - - -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/bfd.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/stab-sym.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/archures.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/bout.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/cache.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/core.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/aout32.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/demo64.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/opncls.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/reloc.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/seclet.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/init.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/section.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/coff-a29k.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/hp300bsd.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/syms.c - - -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/archive.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/libbfd.c - -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/cpu-a29k.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/format.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/cpu-i386.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/cpu-m68k.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/cpu-mips.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/cpu-sparc.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/cpu-h8300.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/cpu-i960.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/cpu-m88k.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/cpu-rs6000.c -load -I../bfd -I../../devo/bfd -I../../devo/include ../../devo/bfd/cpu-vax.c - -load -I../libiberty -I../../devo/libiberty -I../../devo/include ../../devo/libiberty/obstack.c -load -I../libiberty -I../../devo/libiberty -I../../devo/include ../../devo/libiberty/strtoul.c -load -I../libiberty -I../../devo/libiberty -I../../devo/include ../../devo/libiberty/strerror.c - - - |