This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] add target Score to Binutils


Hello Maintainers,

Here is a patch to add target Score to GNU Binutils.
I volunteer to become the Score port maintainer.

ChangeLog:
1. GAS part 
1.1 binutils-2.16.1/config.sub
        score|score-*)
                basic_machine=score-linux
                os=-elf
                ;;

1.2 add files to binutils-2.16.1/gas/config
    tc-score.c
    tc-score.h
    score-datadep.h
    score-inst.h
 
1.3 gas/Makefile.in
1.3.1 CPU_TYPES = score \
1.3.2 TARGET_CPU_CFILES = config/tc-score.c \
1.3.3 TARGET_CPU_HFILES = config/tc-score.h \
1.3.4
DEPTC_score_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h  \
  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-score.h 
\
  $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h  \
  $(INCDIR)/elf/score.h $(INCDIR)/elf/reloc-macros.h \
  dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h
  $(srcdir)/config/score-inst.h $(srcdir)/config/score-datadep.h
 
1.4 gas/configure.tgt
1.4.1 
      score*)           cpu_type=score endian=big ;;
      score*l)          cpu_type=score endian=little ;;
1.4.2   score-*-elf)                          fmt=elf bfd_gas=yes ;;

2. BFD part
2.1 
2.1.1 add files to binutils-2.16.1/bfd
      elf32-score.c
      cpu-score.c
2.1.2 add files to binutils-2.16.1/include/elf
      score.h

2.2 bfd/configure
    bfd_elf32_bigscore_vec)     tb="$tb elf32-score.lo elf32.lo $elf" ;;
    bfd_elf32_littlescore_vec)  tb="$tb elf32-score.lo elf32.lo $elf" ;; 
 
2.3 bfd/Makefile.in
2.3.1 ALL_MACHINES = cpu-score.lo \
2.3.2 ALL_MACHINES_CFILES = cpu-score.c \
2.3.3 BFD32_BACKENDS = elf32-score.lo \
2.3.4 BFD32_BACKENDS_CFILES = elf32-score.c \
2.3.5 SOURCE_HFILES = elf32-score.h
2.3.6 cpu-score.lo: cpu-score.c $(INCDIR)/filenames.h
2.3.7 
elf32-score.lo: elf32-score.c $(INCDIR)/filenames.h \
  elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
  $(INCDIR)/elf/external.h $(INCDIR)/elf/score.h 
$(INCDIR)/elf/reloc-macros.h \
  elf32-score.h elf32-target.h

2.4 bfd/config.bfd
    score*-*-elf*)
      targ_defvec=bfd_elf32_bigscore_vec
      targ_selvecs=bfd_elf32_littlescore_vec
      ;;
 
2.5 bfd/targets.c
2.5.1 extern const bfd_target bfd_elf32_bigscore_vec;
2.5.2 extern const bfd_target bfd_elf32_littlescore_vec;
2.5.3 &bfd_elf32_bigscore_vec,
2.5.4 &bfd_elf32_littlescore_vec, 
 
2.6 bfd/archures.c
2.6.1 .  bfd_arch_score,     {* Sunplus score *} 
2.6.2 extern const bfd_arch_info_type bfd_score_arch;
2.6.3 static const bfd_arch_info_type * const bfd_archures_list[] = 
&bfd_score_arch,

2.7 bfd/bfd-in2.h
/* Score relocations.  */
  /* low 16 bit for ldst.  */
  BFD_RELOC_SCORE_DUMMY1,
  BFD_RELOC_GPREL15,
  BFD_RELOC_SCORE_DUMMY2,
  /* This is a 24-bit reloc with the right 1 bits assumed to be 0.  */
  BFD_RELOC_SCORE_JMP,
  /* This is a 19-bit reloc with the right 1 bits assumed to be 0.  */ 
  BFD_RELOC_SCORE_BRANCH,
  /* This is a 11-bit reloc with the right 1 bits assumed to be 0.  */ 
  BFD_RELOC_SCORE16_JMP,
  /* This is a 8-bit reloc with the right 1 bits assumed to be 0.  */
  BFD_RELOC_SCORE16_BRANCH,

2.8 binutils-2.16.1/include/elf/common.h
   #define EM_SCORE        135     /* Sunplus Score */


3. LD part
3.1 add files to binutils-2.16.1/ld/emultempl
    scoreelf.em
    add files to binutils-2.16.1/ld/emulparams
    scoreelf.sh

3.2 ld/configure.tgt
    score-*-elf)                targ_emul=scoreelf ;;

3.3 ld/Makefile.in
3.3.1 ALL_EMULATIONS = escoreelf.o \
3.3.2
escoreelf.c: $(srcdir)/emulparams/scoreelf.sh \
  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/scoreelf.em \
  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} scoreelf "$(tdir_scoreelf)"
 
 
4. Opcodes part
4.1 add files to binutils-2.16.1/opcodes
   score-dis.c score-opc.h 

4.2 opcodes/configure
        bfd_score_arch)         ta="$ta score-dis.lo" ;;

4.3 opcodes/Makefile.in
4.3.1 HFILES = score-opc.h \
4.3.2 CFILES = score-dis.c \
4.3.3 ALL_MACHINES = score-dis.lo \
4.3.4 
score-dis.lo: score-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
  $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h score-opc.h \
  $(INCDIR)/bfdlink.h opintl.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h 
\
  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/score.h 
\
  $(INCDIR)/elf/reloc-macros.h

4.4 opcodes/disassemble.c
4.4.1 #define ARCH_score
4.4.2
#ifdef ARCH_score
    case bfd_arch_score:
      if (bfd_big_endian (abfd))
        disassemble = print_insn_big_score;
      else
        disassemble = print_insn_little_score;
     break;
#endif 
 
4.5 include/dis-asm.h
extern int print_insn_big_score         (bfd_vma, disassemble_info *);
extern int print_insn_little_score      (bfd_vma, disassemble_info *);


5. Binutils part
5.1 binutils/Makefile.in
    readelf.o : $(INCDIR)/elf/score.h

5.2 binutils/readelf.c
    add score specific code


6. Testsuite part
6.1 gas/testsuite/gas/elf/elf.exp
    加上如下代码
    if {[istarget "score-*-*"]} then {
        set target_machine -score
    }
    并且在 gas/testsuite/gas/elf/ 下添加文件 section2.e-score
6.2 ld/testsuite/ld-srec/srec.exp 
     在两个地方加上 setup_xfail "score-*-*"
6.3 ld/testsuite/ld-elf/merge.d
     加上 "score-*-*"
6.4 ld/testsuite/ld-elfcomm/elfcomm.exp
    加上如下代码
    if { [istarget score-*-*] } {
    untested $test1w1
    untested $test1w2
    untested $test1c1
    untested $test1c2
    return
    }




Best regards
                     Ligang

Attachment: Score_Binutils_patch.tar.bz2
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]