How to add a new target in binutils ?

Shawn shaolin.xie@ia.ac.cn
Thu Sep 20 06:41:00 GMT 2012


Hi, All:
     I'm new to binutils and I want to port a linker  to a new 
architecture. What I need is just a very basic linker , which can link 
static elf object files or static libraries into executables, no 
functionality for shared library or dynamic link.
     I tried the Gold first,  but found it has been bounded to the 
binutils, and can't be compiled separately. so I tried to port the 
bintuils as a whole.
     I have read the "Binutils Porting Guide To A New Target 
Architecture" written by MR.Swami.Reddy@nsc.com, which seems to be very 
helpful for me. But  I 'm stucking in some details now.
     First I want to get a full functional configure& compile system for 
this port,  say "mpu". I begin with reviewing the example port "cr16" in 
the tutorial.   Here is what I have done:
     1.  Download binutils-2.22.tar.gz
     2.  copy follow file and change the name from "cr16" to "mpu"
          a).bfd/cpu-cr16.c
          b).bfd/elf32-cr16.c
          c).gas/config/tc-cr16.c
          d).gas/config/tc-cr16.h
          e).include/elf/cr16.h
          f).include/opcode/cr16.h
          g).ld/emulparams/elf32cr16.sh
          h).ld/emultempl/cr16elf.em
          i).ld/scripttempl/elf32cr16.sc
          j).opcodes/cr16-dis.c
          k).opcodes/cr16-opc.c
     3. add corresponding entry in the following configuration files:
         a) bfd/Makefile.amb
         b) bfd/archures.c
         c)  bfd/bfd-in2.h
         d)  bfd/config.bfd
         e)  bfd/configure.in
         f)  bfd/libbfd.h
         g)  bfd/targets.c
         h)  binutils/readelf.c
         i)  config.sub
         j)  gas/Makefile.am
         k)  gas/configure.tgt
         l)   include/dis-asm.h
         m)  include/elf/common.h
         n)  ld/Makefile.am
         o)  ld/configure.tgt
         p)  opcodes/Makefile.am
         q)  opcodes/configure.in
         r)  opcodes/disassemble.c

      3)configure the script with following command:
         ~/Work/binutils/binutils-mpu-2.22/configure  \
         --prefix=/home/xiesl/Tools/binutils                \
         --target=mpu-elf                                          \
         --enable-maintainer-mode

       4). run make , but error occurs:
         configure: error: *** unknown target vector bfd_elf32_mpu_vec
         make[1]: *** [configure-bfd] error 1
         make[1]:leaving directory `/tmp/build'
         make: *** [all] error 2
===================================
I really hope someone can give me some advice , for porting the linker, 
or this error message. Thanks.

Shawn.







More information about the Binutils mailing list