This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Trying to compile binutils 2.15 for BSD/OS 4.3.1
On Wed, Jan 19, 2005 at 10:17:35AM -0700, The Doctor wrote:
> On Mon, Jan 17, 2005 at 09:46:27AM -0700, The Doctor wrote:
> > On Mon, Jan 17, 2005 at 04:02:17PM +0000, Nick Clifton wrote:
> > > Hi,
> > >
> > > >>>Now that that is settled, I was wondering what would it take
> > > >>>to 'correct' BSD/OS 4.X + from being a.out and shift it to elf?
> > >
> > > It appears that the patch to gas/configure was the problem. Using the
> > > attached patch I was able to build a toolchain configured as
> > > --target=i386-unknown-bsdi which produces ELF format binaries.
> > >
> > > Cheers
> > > Nick
> > >
> > >
> >
> > > Index: gas/configure.tgt
> > > ===================================================================
> > > RCS file: /cvs/src/src/gas/configure.tgt,v
> > > retrieving revision 1.2
> > > diff -c -3 -p -r1.2 configure.tgt
> > > *** gas/configure.tgt 6 Jan 2005 16:13:48 -0000 1.2
> > > --- gas/configure.tgt 17 Jan 2005 15:51:02 -0000
> > > *************** case ${generic_target} in
> > > *** 178,183 ****
> > > --- 178,184 ----
> > > i386-*-coff) fmt=coff ;;
> > > i386-*-elf) fmt=elf ;;
> > > i386-*-kaos*) fmt=elf ;;
> > > + i386-*-bsdi*) fmt=elf ;;
> > > i386-*-bsd*) fmt=aout em=386bsd ;;
> > > i386-*-netbsd0.8) fmt=aout em=386bsd ;;
> > > i386-*-netbsdpe*) fmt=coff em=pe ;;
> > > Index: ld/Makefile.am
> > > ===================================================================
> > > RCS file: /cvs/src/src/ld/Makefile.am,v
> > > retrieving revision 1.168
> > > diff -c -3 -p -r1.168 Makefile.am
> > > *** ld/Makefile.am 6 Jan 2005 16:18:24 -0000 1.168
> > > --- ld/Makefile.am 17 Jan 2005 15:51:07 -0000
> > > *************** ALL_EMULATIONS = \
> > > *** 220,225 ****
> > > --- 220,226 ----
> > > ei386aout.o \
> > > ei386beos.o \
> > > ei386bsd.o \
> > > + ei386bsdi.o \
> > > ei386coff.o \
> > > ei386go32.o \
> > > ei386linux.o \
> > > *************** ei386beos.c: $(srcdir)/emulparams/i386be
> > > *** 964,969 ****
> > > --- 965,973 ----
> > > ei386bsd.c: $(srcdir)/emulparams/i386bsd.sh \
> > > $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
> > > ${GENSCRIPTS} i386bsd "$(tdir_i386bsd)"
> > > + ei386bsdi.c: $(srcdir)/emulparams/i386bsdi.sh \
> > > + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
> > > + ${GENSCRIPTS} i386bsdi.c "$(tdir_i386bsdi)"
> > > ei386coff.c: $(srcdir)/emulparams/i386coff.sh \
> > > $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386coff.sc ${GEN_DEPENDS}
> > > ${GENSCRIPTS} i386coff "$(tdir_i386coff)"
> > > Index: ld/configure.tgt
> > > ===================================================================
> > > RCS file: /cvs/src/src/ld/configure.tgt,v
> > > retrieving revision 1.162
> > > diff -c -3 -p -r1.162 configure.tgt
> > > *** ld/configure.tgt 6 Jan 2005 16:18:24 -0000 1.162
> > > --- ld/configure.tgt 17 Jan 2005 15:51:07 -0000
> > > *************** i[3-7]86-*-rtems*) targ_emul=elf_i386 ;;
> > > *** 149,155 ****
> > > i[3-7]86-*-aros*) targ_emul=elf_i386 ;;
> > > i[3-7]86-*-bsd) targ_emul=i386bsd ;;
> > > i[3-7]86-*-bsd386) targ_emul=i386bsd ;;
> > > ! i[3-7]86-*-bsdi*) targ_emul=i386bsd ;;
> > > i[3-7]86-*-aout) targ_emul=i386aout ;;
> > > i[3-7]86-*-linux*aout*) targ_emul=i386linux
> > > targ_extra_emuls=elf_i386
> > > --- 149,155 ----
> > > i[3-7]86-*-aros*) targ_emul=elf_i386 ;;
> > > i[3-7]86-*-bsd) targ_emul=i386bsd ;;
> > > i[3-7]86-*-bsd386) targ_emul=i386bsd ;;
> > > ! i[3-7]86-*-bsdi*) targ_emul=elf_i386;;
> > > i[3-7]86-*-aout) targ_emul=i386aout ;;
> > > i[3-7]86-*-linux*aout*) targ_emul=i386linux
> > > targ_extra_emuls=elf_i386
> > > Index: bfd/config.bfd
> > > ===================================================================
> > > RCS file: /cvs/src/src/bfd/config.bfd,v
> > > retrieving revision 1.180
> > > diff -c -3 -p -r1.180 config.bfd
> > > *** bfd/config.bfd 6 Jan 2005 16:18:18 -0000 1.180
> > > --- bfd/config.bfd 17 Jan 2005 15:51:07 -0000
> > > *************** case "${targ}" in
> > > *** 482,487 ****
> > > --- 482,491 ----
> > > targ_defvec=i386dynix_vec
> > > targ_underscore=yes
> > > ;;
> > > + i[3456]86-*-bsdi*)
> > > + targ_defvec=bfd_elf32_i386_vec
> > > + targ_selvecs=i386bsd_vec
> > > + ;;
> > > i[3-7]86-*-bsd*)
> > > targ_defvec=i386bsd_vec
> > > targ_underscore=yes
> > > Index: bfd/configure.in
> > > ===================================================================
> > > RCS file: /cvs/src/src/bfd/configure.in,v
> > > retrieving revision 1.166
> > > diff -c -3 -p -r1.166 configure.in
> > > *** bfd/configure.in 6 Jan 2005 16:18:20 -0000 1.166
> > > --- bfd/configure.in 17 Jan 2005 15:51:08 -0000
> > > *************** changequote([,])dnl
> > > *** 205,211 ****
> > > changequote(,)dnl
> > > i[3-7]86-*-bsdi)
> > > changequote([,])dnl
> > > ! COREFILE=
> > > ;;
> > > changequote(,)dnl
> > > i[3-7]86-*-bsd* | i[3-7]86-*-freebsd[123] | i[3-7]86-*-freebsd[123]\.* | i[3-7]86-*-freebsd4\.[01234] | i[3-7]86-*-freebsd4\.[01234]\.* | i[3-7]86-*-freebsd*aout*)
> > > --- 205,214 ----
> > > changequote(,)dnl
> > > i[3-7]86-*-bsdi)
> > > changequote([,])dnl
> > > ! # XXX - we MUST supply a core-dump file reader even
> > > ! # though this version of libbfd is not used by gdb.
> > > ! COREFILE=bsdi-core.lo
> > > ! TRAD_HEADER='"hosts/i386bsdi.h"'
> > > ;;
> > > changequote(,)dnl
> > > i[3-7]86-*-bsd* | i[3-7]86-*-freebsd[123] | i[3-7]86-*-freebsd[123]\.* | i[3-7]86-*-freebsd4\.[01234] | i[3-7]86-*-freebsd4\.[01234]\.* | i[3-7]86-*-freebsd*aout*)
> > > Index: bfd/i386bsd.c
> > > ===================================================================
> > > RCS file: /cvs/src/src/bfd/i386bsd.c,v
> > > retrieving revision 1.3
> > > diff -c -3 -p -r1.3 i386bsd.c
> > > *** bfd/i386bsd.c 2 Oct 2001 05:58:41 -0000 1.3
> > > --- bfd/i386bsd.c 17 Jan 2005 15:51:09 -0000
> > > *************** Foundation, Inc., 59 Temple Place - Suit
> > > *** 47,50 ****
> > > --- 47,153 ----
> > > #include "libbfd.h"
> > > #include "libaout.h"
> > >
> > > + #ifdef __bsdi__
> > > +
> > > + #include "aout/aout64.h"
> > > +
> > > + #define MY_callback MY(callback)
> > > +
> > > + static const bfd_target *
> > > + MY(callback) (bfd *abfd)
> > > + {
> > > + struct internal_exec *execp = exec_hdr (abfd);
> > > + unsigned int arch_align_power;
> > > + unsigned long arch_align;
> > > +
> > > + /* Calculate the file positions of the parts of a newly read aout header. */
> > > + obj_textsec (abfd)->_raw_size = N_TXTSIZE (*execp);
> > > +
> > > + /* The virtual memory addresses of the sections. */
> > > + obj_textsec (abfd)->vma = N_TXTADDR (*execp);
> > > + obj_datasec (abfd)->vma = N_DATADDR (*execp);
> > > + obj_bsssec (abfd)->vma = N_BSSADDR (*execp);
> > > +
> > > + /* Check for kernel binaries. */
> > > + if ((execp->a_entry & 0xff000000) != 0)
> > > + {
> > > + bfd_vma adjust;
> > > +
> > > + adjust = execp->a_entry - obj_textsec (abfd)->vma;
> > > + /* Adjust only by whole pages. */
> > > + adjust &= ~(TARGET_PAGE_SIZE - 1);
> > > + obj_textsec (abfd)->vma += adjust;
> > > + obj_datasec (abfd)->vma += adjust;
> > > + obj_bsssec (abfd)->vma += adjust;
> > > + }
> > > +
> > > + /* Set the load addresses to be the same as the virtual addresses. */
> > > + obj_textsec (abfd)->lma = obj_textsec (abfd)->vma;
> > > + obj_datasec (abfd)->lma = obj_datasec (abfd)->vma;
> > > + obj_bsssec (abfd)->lma = obj_bsssec (abfd)->vma;
> > > +
> > > + /* The file offsets of the sections. */
> > > + obj_textsec (abfd)->filepos = N_TXTOFF (*execp);
> > > + obj_datasec (abfd)->filepos = N_DATOFF (*execp);
> > > +
> > > + /* The file offsets of the relocation info. */
> > > + obj_textsec (abfd)->rel_filepos = N_TRELOFF (*execp);
> > > + obj_datasec (abfd)->rel_filepos = N_DRELOFF (*execp);
> > > +
> > > + /* The file offsets of the string table and symbol table. */
> > > + obj_sym_filepos (abfd) = N_SYMOFF (*execp);
> > > + obj_str_filepos (abfd) = N_STROFF (*execp);
> > > +
> > > + /* Determine the architecture and machine type of the object file. */
> > > + #ifdef SET_ARCH_MACH
> > > + SET_ARCH_MACH (abfd, *execp);
> > > + #else
> > > + bfd_default_set_arch_mach (abfd, DEFAULT_ARCH, 0);
> > > + #endif
> > > +
> > > + /* The number of relocation records. This must be called after
> > > + SET_ARCH_MACH. It assumes that SET_ARCH_MACH will set
> > > + obj_reloc_entry_size correctly, if the reloc size is not
> > > + RELOC_STD_SIZE. */
> > > + obj_textsec (abfd)->reloc_count =
> > > + execp->a_trsize / obj_reloc_entry_size (abfd);
> > > + obj_datasec (abfd)->reloc_count =
> > > + execp->a_drsize / obj_reloc_entry_size (abfd);
> > > +
> > > + /* Now that we know the architecture, set the alignments of the
> > > + sections. This is normally done by NAME(aout,new_section_hook),
> > > + but when the initial sections were created the architecture had
> > > + not yet been set. However, for backward compatibility, we don't
> > > + set the alignment power any higher than as required by the size
> > > + of the section. */
> > > + arch_align_power = bfd_get_arch_info (abfd)->section_align_power;
> > > + arch_align = 1 << arch_align_power;
> > > +
> > > + if ((BFD_ALIGN (obj_textsec (abfd)->_raw_size, arch_align)
> > > + == obj_textsec (abfd)->_raw_size)
> > > + && (BFD_ALIGN (obj_datasec (abfd)->_raw_size, arch_align)
> > > + == obj_datasec (abfd)->_raw_size)
> > > + && (BFD_ALIGN (obj_bsssec (abfd)->_raw_size, arch_align)
> > > + == obj_bsssec (abfd)->_raw_size))
> > > + {
> > > + obj_textsec (abfd)->alignment_power = arch_align_power;
> > > + obj_datasec (abfd)->alignment_power = arch_align_power;
> > > + obj_bsssec (abfd)->alignment_power = arch_align_power;
> > > + }
> > > +
> > > + return abfd->xvec;
> > > + }
> > > +
> > > + /* Make QMAGIC be the default output format. */
> > > +
> > > + static boolean
> > > + i386bsd_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
> > > + {
> > > + obj_aout_subformat (abfd) = q_magic_format;
> > > + return NAME(aout,final_link) (abfd, info, MY_final_link_callback);
> > > + }
> > > +
> > > + #define MY_bfd_final_link i386bsd_bfd_final_link
> > > + #endif
> > > +
> > > #include "aout-target.h"
> >
> >
> > I spoke to the person who gave me this patch and there are some files missing.
> >
> > I am trying to acquire these files.
> >
>
> Founf them on BSD/Os 5.1 binary CDs.
>
> Contribed Source.
>
> Why not??
>
> Here are the files:
>
> bfd/bsdi-core.c
>
>
> /* BSDI bsdi-core.c,v 1.1 2003/01/14 16:58:40 torek Exp */
>
> /* trying with a dummy file */
>
>
>
> bfd/hosts/i386bsdi.h
>
> /* BSDI i386bsdi.h,v 1.1 2003/01/14 16:58:24 torek Exp */
>
> /* trying with a dummy header for now */
>
>
>
>
> gas/config/te-bsdi.h
>
>
> /* BSDI te-bsdi.h,v 1.1 2003/01/14 16:35:15 torek Exp */
>
> #define TE_BSDI 1
>
> #include "obj-format.h"
>
> ld/emulparams/i386bsdi.sh
>
> # BSDI i386bsdi.sh,v 1.1 2003/01/14 16:48:47 torek Exp
>
> SCRIPT_NAME=aout
> OUTPUT_FORMAT="a.out-i386-bsd"
> TARGET_PAGE_SIZE=0x1000
> TEXT_START_ADDR=0x1020
> NONPAGED_TEXT_START_ADDR=0
> ARCH=i386
> TEMPLATE_NAME=generic
>
> # ??? I am not sure if I am supposed to override it this way,
> # but we must force this to appear to be a "default" emulation.
> EMULATION_LIBPATH=i386bsdi
>
> --
>
> Please add accordingly.
I did just put this to the test. The only issue is that the /shlib where
the .so's are found could not be located.
How can that get fixed?
--
Member - Liberal International
This is doctor@nl2k.ab.ca Ici doctor@nl2k.ab.ca
God Queen and country! Beware Anti-Christ rising!
Birthdate: 29 Jan 1969 Redhill, Surrey, England, UK