This is the mail archive of the binutils@sources.redhat.com 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] |
Hi, -----Original Message----- From: Nick Clifton [mailto:nickc at redhat dot com] Sent: Tuesday, April 22, 2003 5:46 PM To: Dhananjay R. Deshpande Subject: Re: [PATCH] New targets for H8300H and H8300S Normal mode >Excellent - please could you resubmit your patches, but made agaunst >the very latest CVS sources and, as soon as I get confirmation from >the FSF, I will check them in. I am sending updated patch for Binutils ( inlined as well as attached ). - Dhananjay include/ChangeLog 2003-04-23 Dhananjay Deshpande <dhananjayd at kpitcummins dot com> * coff/h8300.h (H8300HNMAGIC, H8300SNMAGIC): New. (H8300HNBADMAG, H8300SNBADMAG): New. * elf/h8.h (E_H8_MACH_H8300HN, E_H8_MACH_H8300SN): New bfd/ChangeLog 2003-04-23 Dhananjay Deshpande <dhananjayd at kpitcummins dot com> * archures.c (bfd_mach_h8300hn, bfd_mach_h8300sn): Added. * bfd-in2.h: Rebuilt. * coff-h8300.c (BADMAG): Add check for H8300HNBADMAG & H8300SNBADMAG. * coffcode.h (coff_set_arch_mach_hook): Add case for H8300HNMAGIC & H8300SNMAGIC. (coff_set_flags): Add case for bfd_mach_h8300hn & bfd_mach_h8300sn. * cpu-h8300.c (h8300_scan): Handle h8300hn, h8300sn. (h8300sn_info_struct, h8300hn_info_struct): New. * elf32-h8300.c (elf32_h8_mach): Handle case for h8300hn & h8300sn (elf32_h8_final_write_processing): Likewise. gas/ChangeLog 2003-04-23 Dhananjay Deshpande <dhananjayd at kpitcummins dot com> * config/tc-h8300.c (Nmode, h8300hnmode, h8300snmode): New. (md_pseudo_table): Add h8300hn, h8300sn. * config/tc-h8300.h (COFF_MAGIC): Handle h8300hn, h8300sn. * doc/c-h8300.texi : Add documentation for new machine directives. ld/ChangeLog 2003-04-23 Dhananjay Deshpande <dhananjayd at kpitcummins dot com> * Makefile.am (ALL_EMULATIONS): Add eh8300hn.o, eh8300sn.o, eh8300hnelf.o, eh8300snelf.o and respective rules. * Makefile.in: Regenerate. * configure.tgt: Add h8300hn, h8300sn, h8300hnelf, h8300snelf * emulparams/h8300hn.sh: New * emulparams/h8300sn.sh: New * emulparams/h8300hnelf.sh: New * emulparams/h8300snelf.sh: New * scripttempl/h8300hn.sc: new * scripttempl/h8300sn.sc: new =========================================================================================== diff -rupN binutils.orig/bfd/archures.c binutils-030423/bfd/archures.c --- binutils.orig/bfd/archures.c 2003-04-23 14:30:46.000000000 +0530 +++ binutils-030423/bfd/archures.c 2003-04-23 14:32:30.000000000 +0530 @@ -167,6 +167,8 @@ DESCRIPTION .#define bfd_mach_h8300 1 .#define bfd_mach_h8300h 2 .#define bfd_mach_h8300s 3 +.#define bfd_mach_h8300hn 4 +.#define bfd_mach_h8300sn 5 . bfd_arch_pdp11, {* DEC PDP-11 *} . bfd_arch_powerpc, {* PowerPC *} .#define bfd_mach_ppc 32 diff -rupN binutils.orig/bfd/coffcode.h binutils-030423/bfd/coffcode.h --- binutils.orig/bfd/coffcode.h 2003-04-23 14:30:46.000000000 +0530 +++ binutils-030423/bfd/coffcode.h 2003-04-23 14:32:30.000000000 +0530 @@ -2094,6 +2094,24 @@ coff_set_arch_mach_hook (abfd, filehdr) break; #endif +#ifdef H8300HNMAGIC + case H8300HNMAGIC: + arch = bfd_arch_h8300; + machine = bfd_mach_h8300hn; + /* !! FIXME this probably isn't the right place for this */ + abfd->flags |= BFD_IS_RELAXABLE; + break; +#endif + +#ifdef H8300SNMAGIC + case H8300SNMAGIC: + arch = bfd_arch_h8300; + machine = bfd_mach_h8300sn; + /* !! FIXME this probably isn't the right place for this */ + abfd->flags |= BFD_IS_RELAXABLE; + break; +#endif + #ifdef SH_ARCH_MAGIC_BIG case SH_ARCH_MAGIC_BIG: case SH_ARCH_MAGIC_LITTLE: @@ -2739,6 +2757,12 @@ coff_set_flags (abfd, magicp, flagsp) case bfd_mach_h8300s: *magicp = H8300SMAGIC; return TRUE; + case bfd_mach_h8300hn: + *magicp = H8300HNMAGIC; + return TRUE; + case bfd_mach_h8300sn: + *magicp = H8300SNMAGIC; + return TRUE; } break; #endif diff -rupN binutils.orig/bfd/coff-h8300.c binutils-030423/bfd/coff-h8300.c --- binutils.orig/bfd/coff-h8300.c 2003-04-23 14:30:46.000000000 +0530 +++ binutils-030423/bfd/coff-h8300.c 2003-04-23 14:32:30.000000000 +0530 @@ -281,7 +281,8 @@ static reloc_howto_type howto_table[] = #define SELECT_RELOC(x,howto) \ { x.r_type = select_reloc (howto); } -#define BADMAG(x) (H8300BADMAG (x) && H8300HBADMAG (x) && H8300SBADMAG (x)) +#define BADMAG(x) (H8300BADMAG (x) && H8300HBADMAG (x) && H8300SBADMAG (x) \ + && H8300HNBADMAG(x) && H8300SNBADMAG(x)) #define H8300 1 /* Customize coffcode.h */ #define __A_MAGIC_SET__ diff -rupN binutils.orig/bfd/cpu-h8300.c binutils-030423/bfd/cpu-h8300.c --- binutils.orig/bfd/cpu-h8300.c 2003-04-23 14:30:46.000000000 +0530 +++ binutils-030423/bfd/cpu-h8300.c 2003-04-23 14:32:30.000000000 +0530 @@ -69,10 +69,20 @@ h8300_scan (info, string) if (*string == 'h' || *string == 'H') { + string++; + if (*string == 'n' || *string == 'N') + { + return (info->mach == bfd_mach_h8300hn); + } return (info->mach == bfd_mach_h8300h); } else if (*string == 's' || *string == 'S') { + string++; + if (*string == 'n' || *string == 'N') + { + return (info->mach == bfd_mach_h8300sn); + } return (info->mach == bfd_mach_h8300s); } else @@ -97,6 +107,39 @@ compatible (in, out) return in; } +static const bfd_arch_info_type h8300sn_info_struct = +{ + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_h8300, + bfd_mach_h8300sn, + "h8300sn", /* arch_name */ + "h8300sn", /* printable name */ + 1, + FALSE, /* the default machine */ + compatible, + h8300_scan, + 0 +}; + + +static const bfd_arch_info_type h8300hn_info_struct = +{ + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_h8300, + bfd_mach_h8300hn, + "h8300hn", /* arch_name */ + "h8300hn", /* printable name */ + 1, + FALSE, /* the default machine */ + compatible, + h8300_scan, + &h8300sn_info_struct +}; + static const bfd_arch_info_type h8300s_info_struct = { 32, /* 32 bits in a word */ @@ -110,7 +153,7 @@ static const bfd_arch_info_type h8300s_i FALSE, /* the default machine */ compatible, h8300_scan, - 0 + &h8300hn_info_struct }; static const bfd_arch_info_type h8300h_info_struct = diff -rupN binutils.orig/bfd/elf32-h8300.c binutils-030423/bfd/elf32-h8300.c --- binutils.orig/bfd/elf32-h8300.c 2003-04-23 14:30:46.000000000 +0530 +++ binutils-030423/bfd/elf32-h8300.c 2003-04-23 14:32:30.000000000 +0530 @@ -573,6 +573,12 @@ elf32_h8_mach (flags) case E_H8_MACH_H8300S: return bfd_mach_h8300s; + + case E_H8_MACH_H8300HN: + return bfd_mach_h8300hn; + + case E_H8_MACH_H8300SN: + return bfd_mach_h8300sn; } } @@ -601,6 +607,14 @@ elf32_h8_final_write_processing (abfd, l case bfd_mach_h8300s: val = E_H8_MACH_H8300S; break; + + case bfd_mach_h8300hn: + val = E_H8_MACH_H8300HN; + break; + + case bfd_mach_h8300sn: + val = E_H8_MACH_H8300SN; + break; } elf_elfheader (abfd)->e_flags &= ~ (EF_H8_MACH); diff -rupN binutils.orig/gas/config/tc-h8300.c binutils-030423/gas/config/tc-h8300.c --- binutils.orig/gas/config/tc-h8300.c 2003-04-23 14:30:48.000000000 +0530 +++ binutils-030423/gas/config/tc-h8300.c 2003-04-23 14:32:30.000000000 +0530 @@ -42,10 +42,13 @@ void cons PARAMS ((int)); void sbranch PARAMS ((int)); void h8300hmode PARAMS ((int)); void h8300smode PARAMS ((int)); +void h8300hnmode PARAMS ((int)); +void h8300snmode PARAMS ((int)); static void pint PARAMS ((int)); int Hmode; int Smode; +int Nmode; #define PSIZE (Hmode ? L_32 : L_16) #define DMODE (L_16) @@ -77,6 +80,19 @@ h8300hmode (arg) } void +h8300hnmode (arg) + int arg ATTRIBUTE_UNUSED; +{ + Hmode = 1; + Smode = 0; + Nmode = 1; +#ifdef BFD_ASSEMBLER + if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300hn)) + as_warn (_("could not set architecture and machine")); +#endif +} + +void h8300smode (arg) int arg ATTRIBUTE_UNUSED; { @@ -89,6 +105,19 @@ h8300smode (arg) } void +h8300snmode (arg) + int arg ATTRIBUTE_UNUSED; +{ + Smode = 1; + Hmode = 1; + Nmode = 1; +#ifdef BFD_ASSEMBLER + if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sn)) + as_warn (_("could not set architecture and machine")); +#endif +} + +void sbranch (size) int size; { @@ -111,7 +140,9 @@ pint (arg) const pseudo_typeS md_pseudo_table[] = { {"h8300h", h8300hmode, 0}, + {"h8300hn", h8300hnmode, 0}, {"h8300s", h8300smode, 0}, + {"h8300sn", h8300snmode, 0}, {"sbranch", sbranch, L_8}, {"lbranch", sbranch, L_16}, diff -rupN binutils.orig/gas/config/tc-h8300.h binutils-030423/gas/config/tc-h8300.h --- binutils.orig/gas/config/tc-h8300.h 2003-04-23 14:30:48.000000000 +0530 +++ binutils-030423/gas/config/tc-h8300.h 2003-04-23 14:32:30.000000000 +0530 @@ -45,7 +45,7 @@ struct internal_reloc; #define TC_COFF_FIX2RTYPE(fixP) abort (); #define BFD_ARCH bfd_arch_h8300 -#define COFF_MAGIC ( Smode ? 0x8302 : Hmode ? 0x8301 : 0x8300) +#define COFF_MAGIC ( Smode && Nmode ? 0x8304 : Hmode && Nmode ? 0x8303 : Smode ? 0x8302 : Hmode ? 0x8301 : 0x8300) #define TC_COUNT_RELOC(x) (1) #define IGNORE_NONSTANDARD_ESCAPES @@ -92,5 +92,6 @@ extern void tc_reloc_mangle extern int Hmode; extern int Smode; +extern int Nmode; #define md_operand(x) diff -rupN binutils.orig/gas/doc/c-h8300.texi binutils-030423/gas/doc/c-h8300.texi --- binutils.orig/gas/doc/c-h8300.texi 2003-04-23 14:30:48.000000000 +0530 +++ binutils-030423/gas/doc/c-h8300.texi 2003-04-23 15:03:26.000000000 +0530 @@ -134,7 +134,7 @@ with other development tools. @cindex machine directives, H8/300 (none) @cindex @code{word} directive, H8/300 @cindex @code{int} directive, H8/300 - at code{@value{AS}} has only one machine-dependent directive for the + at code{@value{AS}} has following machine-dependent directives for the H8/300: @table @code @@ -143,6 +143,18 @@ H8/300: Recognize and emit additional instructions for the H8/300H variant, and also make @code{.int} emit 32-bit numbers rather than the usual (16-bit) for the H8/300 family. + at item .h8300s +Recognize and emit additional instructions for the H8S variant, and +also make @code{.int} emit 32-bit numbers rather than the usual (16-bit) +for the H8/300 family. + at item .h8300hn +Recognize and emit additional instructions for the H8/300H variant in +normal mode, and also make @code{.int} emit 32-bit numbers rather than +the usual (16-bit) for the H8/300 family. + at item .h8300sn +Recognize and emit additional instructions for the H8S variant in +normal mode, and also make @code{.int} emit 32-bit numbers rather than +the usual (16-bit) for the H8/300 family. @end table On the H8/300 family (including the H8/300H) @samp{.word} directives diff -rupN binutils.orig/include/coff/h8300.h binutils-030423/include/coff/h8300.h --- binutils.orig/include/coff/h8300.h 2003-04-23 14:30:53.000000000 +0530 +++ binutils-030423/include/coff/h8300.h 2003-04-23 14:32:30.000000000 +0530 @@ -22,10 +22,14 @@ #define H8300MAGIC 0x8300 #define H8300HMAGIC 0x8301 #define H8300SMAGIC 0x8302 +#define H8300HNMAGIC 0x8303 +#define H8300SNMAGIC 0x8304 #define H8300BADMAG(x) (((x).f_magic != H8300MAGIC)) #define H8300HBADMAG(x) (((x).f_magic != H8300HMAGIC)) #define H8300SBADMAG(x) (((x).f_magic != H8300SMAGIC)) +#define H8300HNBADMAG(x) (((x).f_magic != H8300HNMAGIC)) +#define H8300SNBADMAG(x) (((x).f_magic != H8300SNMAGIC)) /********************** RELOCATION DIRECTIVES **********************/ diff -rupN binutils.orig/include/elf/h8.h binutils-030423/include/elf/h8.h --- binutils.orig/include/elf/h8.h 2003-04-23 14:30:53.000000000 +0530 +++ binutils-030423/include/elf/h8.h 2003-04-23 14:32:30.000000000 +0530 @@ -92,5 +92,7 @@ END_RELOC_NUMBERS (R_H8_max) #define E_H8_MACH_H8300 0x00800000 #define E_H8_MACH_H8300H 0x00810000 #define E_H8_MACH_H8300S 0x00820000 +#define E_H8_MACH_H8300HN 0x00830000 +#define E_H8_MACH_H8300SN 0x00840000 #endif diff -rupN binutils.orig/ld/configure.tgt binutils-030423/ld/configure.tgt --- binutils.orig/ld/configure.tgt 2003-04-23 14:30:55.000000000 +0530 +++ binutils-030423/ld/configure.tgt 2003-04-23 14:32:30.000000000 +0530 @@ -261,11 +261,11 @@ thumb-*-pe) targ_emul=armpe ; xscale-*-coff) targ_emul=armcoff ;; xscale-*-elf) targ_emul=armelf ;; h8300-*-hms* | h8300-*-coff* | h8300-*-rtems*) - targ_emul=h8300; targ_extra_emuls="h8300h h8300s" + targ_emul=h8300; targ_extra_emuls="h8300h h8300s h8300hn h8300sn" ;; h8300-*-elf*) targ_emul=h8300elf; - targ_extra_emuls="h8300helf h8300self" + targ_extra_emuls="h8300helf h8300self h8300hnelf h8300snelf" ;; h8500-*-hms* | h8500-*-coff* | h8500-*-rtems*) targ_emul=h8500 diff -rupN binutils.orig/ld/emulparams/h8300hnelf.sh binutils-030423/ld/emulparams/h8300hnelf.sh --- binutils.orig/ld/emulparams/h8300hnelf.sh 1970-01-01 05:30:00.000000000 +0530 +++ binutils-030423/ld/emulparams/h8300hnelf.sh 2003-04-23 14:35:51.000000000 +0530 @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/h8300elf.sh +ARCH="h8300:h8300hn" diff -rupN binutils.orig/ld/emulparams/h8300hn.sh binutils-030423/ld/emulparams/h8300hn.sh --- binutils.orig/ld/emulparams/h8300hn.sh 1970-01-01 05:30:00.000000000 +0530 +++ binutils-030423/ld/emulparams/h8300hn.sh 2003-04-23 14:35:51.000000000 +0530 @@ -0,0 +1,5 @@ +SCRIPT_NAME=h8300hn +OUTPUT_FORMAT="coff-h8300" +TEXT_START_ADDR=0x8000 +TARGET_PAGE_SIZE=128 +ARCH=h8300 diff -rupN binutils.orig/ld/emulparams/h8300snelf.sh binutils-030423/ld/emulparams/h8300snelf.sh --- binutils.orig/ld/emulparams/h8300snelf.sh 1970-01-01 05:30:00.000000000 +0530 +++ binutils-030423/ld/emulparams/h8300snelf.sh 2003-04-23 14:35:51.000000000 +0530 @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/h8300elf.sh +ARCH="h8300:h8300sn" diff -rupN binutils.orig/ld/emulparams/h8300sn.sh binutils-030423/ld/emulparams/h8300sn.sh --- binutils.orig/ld/emulparams/h8300sn.sh 1970-01-01 05:30:00.000000000 +0530 +++ binutils-030423/ld/emulparams/h8300sn.sh 2003-04-23 14:35:51.000000000 +0530 @@ -0,0 +1,5 @@ +SCRIPT_NAME=h8300sn +OUTPUT_FORMAT="coff-h8300" +TEXT_START_ADDR=0x8000 +TARGET_PAGE_SIZE=128 +ARCH=h8300 diff -rupN binutils.orig/ld/Makefile.am binutils-030423/ld/Makefile.am --- binutils.orig/ld/Makefile.am 2003-04-23 14:30:55.000000000 +0530 +++ binutils-030423/ld/Makefile.am 2003-04-23 14:32:30.000000000 +0530 @@ -195,9 +195,13 @@ ALL_EMULATIONS = \ eh8300.o \ eh8300h.o \ eh8300s.o \ + eh8300hn.o \ + eh8300sn.o \ eh8300elf.o \ eh8300helf.o \ eh8300self.o \ + eh8300hnelf.o \ + eh8300snelf.o \ eh8500.o \ eh8500b.o \ eh8500c.o \ @@ -821,6 +825,12 @@ eh8300h.c: $(srcdir)/emulparams/h8300h.s eh8300s.c: $(srcdir)/emulparams/h8300s.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300s.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8300s "$(tdir_h8300s)" +eh8300hn.c: $(srcdir)/emulparams/h8300hn.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300hn.sc ${GEN_DEPENDS} + ${GENSCRIPTS} h8300hn "$(tdir_h8300hn)" +eh8300sn.c: $(srcdir)/emulparams/h8300sn.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8300sn.sc ${GEN_DEPENDS} + ${GENSCRIPTS} h8300sn "$(tdir_h8300sn)" eh8300elf.c: $(srcdir)/emulparams/h8300elf.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8300elf "$(tdir_h8300elf)" @@ -832,6 +842,14 @@ eh8300self.c: $(srcdir)/emulparams/h8300 $(srcdir)/emulparams/h8300elf.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8300self "$(tdir_h8300self)" +eh8300hnelf.c: $(srcdir)/emulparams/h8300hnelf.sh \ + $(srcdir)/emulparams/h8300elf.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} h8300hnelf "$(tdir_h8300hnelf)" +eh8300snelf.c: $(srcdir)/emulparams/h8300snelf.sh \ + $(srcdir)/emulparams/h8300elf.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} h8300snelf "$(tdir_h8300snelf)" eh8500.c: $(srcdir)/emulparams/h8500.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/h8500.sc ${GEN_DEPENDS} ${GENSCRIPTS} h8500 "$(tdir_h8500)" diff -rupN binutils.orig/ld/scripttempl/h8300hn.sc binutils-030423/ld/scripttempl/h8300hn.sc --- binutils.orig/ld/scripttempl/h8300hn.sc 1970-01-01 05:30:00.000000000 +0530 +++ binutils-030423/ld/scripttempl/h8300hn.sc 2003-04-23 14:35:51.000000000 +0530 @@ -0,0 +1,87 @@ +TORS=".tors : + { + ___ctors = . ; + *(.ctors) + ___ctors_end = . ; + ___dtors = . ; + *(.dtors) + ___dtors_end = . ; + } > ram" + +cat <<EOF +OUTPUT_FORMAT("${OUTPUT_FORMAT}") +OUTPUT_ARCH(h8300hn) +ENTRY("_start") + +MEMORY +{ + /* 0xc4 is a magic entry. We should have the linker just + skip over it one day... */ + vectors : o = 0x0000, l = 0xc4 + magicvectors : o = 0xc4, l = 0x3c + ram : o = 0x0100, l = 0xfdfc + /* The stack starts at the top of main ram. */ + topram : o = 0xfefc, l = 0x4 + /* At the very top of the address space is the 8-bit area. */ + eight : o = 0xff00, l = 0x100 +} + +SECTIONS +{ +.vectors : + { + /* Use something like this to place a specific + function's address into the vector table. + + SHORT (ABSOLUTE (_foobar)). */ + + *(.vectors) + } ${RELOCATING+ > vectors} + +.text : + { + *(.rodata) + *(.text) + *(.strings) + ${RELOCATING+ _etext = . ; } + } ${RELOCATING+ > ram} + +${CONSTRUCTING+${TORS}} + +.data : + { + *(.data) + *(.tiny) + ${RELOCATING+ _edata = . ; } + } ${RELOCATING+ > ram} + +.bss : + { + ${RELOCATING+ _bss_start = . ;} + *(.bss) + *(COMMON) + ${RELOCATING+ _end = . ; } + } ${RELOCATING+ >ram} + +.stack : + { + ${RELOCATING+ _stack = . ; } + *(.stack) + } ${RELOCATING+ > topram} + +.eight : + { + *(.eight) + } ${RELOCATING+ > eight} + +.stab 0 ${RELOCATING+(NOLOAD)} : + { + [ .stab ] + } + +.stabstr 0 ${RELOCATING+(NOLOAD)} : + { + [ .stabstr ] + } +} +EOF diff -rupN binutils.orig/ld/scripttempl/h8300sn.sc binutils-030423/ld/scripttempl/h8300sn.sc --- binutils.orig/ld/scripttempl/h8300sn.sc 1970-01-01 05:30:00.000000000 +0530 +++ binutils-030423/ld/scripttempl/h8300sn.sc 2003-04-23 14:35:51.000000000 +0530 @@ -0,0 +1,87 @@ +TORS=".tors : + { + ___ctors = . ; + *(.ctors) + ___ctors_end = . ; + ___dtors = . ; + *(.dtors) + ___dtors_end = . ; + } > ram" + +cat <<EOF +OUTPUT_FORMAT("${OUTPUT_FORMAT}") +OUTPUT_ARCH(h8300sn) +ENTRY("_start") + +MEMORY +{ + /* 0xc4 is a magic entry. We should have the linker just + skip over it one day... */ + vectors : o = 0x0000, l = 0xc4 + magicvectors : o = 0xc4, l = 0x3c + ram : o = 0x0100, l = 0xfdfc + /* The stack starts at the top of main ram. */ + topram : o = 0xfefc, l = 0x4 + /* At the very top of the address space is the 8-bit area. */ + eight : o = 0xff00, l = 0x100 +} + +SECTIONS +{ +.vectors : + { + /* Use something like this to place a specific + function's address into the vector table. + + SHORT (ABSOLUTE (_foobar)). */ + + *(.vectors) + } ${RELOCATING+ > vectors} + +.text : + { + *(.rodata) + *(.text) + *(.strings) + ${RELOCATING+ _etext = . ; } + } ${RELOCATING+ > ram} + +${CONSTRUCTING+${TORS}} + +.data : + { + *(.data) + *(.tiny) + ${RELOCATING+ _edata = . ; } + } ${RELOCATING+ > ram} + +.bss : + { + ${RELOCATING+ _bss_start = . ;} + *(.bss) + *(COMMON) + ${RELOCATING+ _end = . ; } + } ${RELOCATING+ >ram} + +.stack : + { + ${RELOCATING+ _stack = . ; } + *(.stack) + } ${RELOCATING+ > topram} + +.eight : + { + *(.eight) + } ${RELOCATING+ > eight} + +.stab 0 ${RELOCATING+(NOLOAD)} : + { + [ .stab ] + } + +.stabstr 0 ${RELOCATING+(NOLOAD)} : + { + [ .stabstr ] + } +} +EOF ===========================================================================================
Attachment:
normal.binutils.diff
Description: normal.binutils.diff
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |