summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorABDULLATIF Mouhamadi2017-05-22 23:12:38 +0200
committerABDULLATIF Mouhamadi2017-05-22 23:12:38 +0200
commite6607b35c800f4bb5b6eff24c0d8c401294b7917 (patch)
tree1902699988f85d5c821594e63e43da93e4349a3f
downloadaur-binutils-msp430.tar.gz
first commit
-rw-r--r--.SRCINFO24
-rw-r--r--0001_ld_makefile_libdir.patch24
-rw-r--r--0002_binutils-texinfo-5.0-gas-doc.patch261
-rw-r--r--0003-binutils-texinfo-5.0.patch91
-rw-r--r--PKGBUILD111
5 files changed, 511 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..130a976e233f
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,24 @@
+pkgbase = binutils-msp430
+ pkgdesc = A set of programs to assemble and manipulate binary and object files for the MSP430 architecture
+ pkgver = 2.21.1a
+ pkgrel = 1
+ url = http://sourceforge.net/projects/mspgcc/
+ arch = i686
+ arch = x86_64
+ license = GPL
+ depends = zlib
+ options = !emptydirs
+ options = !libtool
+ source = http://sourceforge.net/projects/mspgcc/files/mspgcc/mspgcc-20120406.tar.bz2
+ source = http://ftpmirror.gnu.org/binutils/binutils-2.21.1a.tar.bz2
+ source = 0001_ld_makefile_libdir.patch
+ source = 0002_binutils-texinfo-5.0-gas-doc.patch
+ source = 0003-binutils-texinfo-5.0.patch
+ sha1sums = cc96a7233f0b1d2c106eff7db6fc00e4ed9039a8
+ sha1sums = 525255ca6874b872540c9967a1d26acfbc7c8230
+ sha1sums = 7a5d78fd94fd99dd544816db75a14c326c494e68
+ sha1sums = b92aba28a090f214a650102ad0f0862c37b45e58
+ sha1sums = 417b1cdb35c41a08d3ca967c165c0d79588986e9
+
+pkgname = binutils-msp430
+
diff --git a/0001_ld_makefile_libdir.patch b/0001_ld_makefile_libdir.patch
new file mode 100644
index 000000000000..82b65081dedd
--- /dev/null
+++ b/0001_ld_makefile_libdir.patch
@@ -0,0 +1,24 @@
+diff -urNad ld/Makefile.am ld_/Makefile.am
+--- ld/Makefile.am 2010-11-03 16:22:01.000000000 +1300
++++ ld_/Makefile.am 2011-06-14 22:48:48.942861545 +1200
+@@ -37,7 +37,7 @@
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+
+ EMUL = @EMUL@
+ EMULATION_OFILES = @EMULATION_OFILES@
+diff -urNad ld/Makefile.in ld_/Makefile.in
+--- ld/Makefile.in 2010-11-05 23:34:22.000000000 +1300
++++ ld_/Makefile.in 2011-06-14 22:48:52.065772461 +1200
+@@ -360,7 +360,7 @@
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+ BASEDIR = $(srcdir)/..
+ BFDDIR = $(BASEDIR)/bfd
+ INCDIR = $(BASEDIR)/include
diff --git a/0002_binutils-texinfo-5.0-gas-doc.patch b/0002_binutils-texinfo-5.0-gas-doc.patch
new file mode 100644
index 000000000000..e20c8b67b9a2
--- /dev/null
+++ b/0002_binutils-texinfo-5.0-gas-doc.patch
@@ -0,0 +1,261 @@
+diff --git c/gas/doc/c-arc.texi i/gas/doc/c-arc.texi
+index 3a136a7..cd6f0d9 100644
+--- c/gas/doc/c-arc.texi
++++ i/gas/doc/c-arc.texi
+@@ -212,7 +212,7 @@ The extension instructions are not macros. The assembler creates
+ encodings for use of these instructions according to the specification
+ by the user. The parameters are:
+
+-@table @bullet
++@table @code
+ @item @var{name}
+ Name of the extension instruction
+
+diff --git c/gas/doc/c-arm.texi i/gas/doc/c-arm.texi
+index d3cccf4..97c2f92 100644
+--- c/gas/doc/c-arm.texi
++++ i/gas/doc/c-arm.texi
+@@ -376,29 +376,29 @@ ARM and THUMB instructions had their own, separate syntaxes. The new,
+ @code{unified} syntax, which can be selected via the @code{.syntax}
+ directive, and has the following main features:
+
+-@table @bullet
+-@item
++@table @code
++@item 1
+ Immediate operands do not require a @code{#} prefix.
+
+-@item
++@item 2
+ The @code{IT} instruction may appear, and if it does it is validated
+ against subsequent conditional affixes. In ARM mode it does not
+ generate machine code, in THUMB mode it does.
+
+-@item
++@item 3
+ For ARM instructions the conditional affixes always appear at the end
+ of the instruction. For THUMB instructions conditional affixes can be
+ used, but only inside the scope of an @code{IT} instruction.
+
+-@item
++@item 4
+ All of the instructions new to the V6T2 architecture (and later) are
+ available. (Only a few such instructions can be written in the
+ @code{divided} syntax).
+
+-@item
++@item 5
+ The @code{.N} and @code{.W} suffixes are recognized and honored.
+
+-@item
++@item 6
+ All instructions set the flags if and only if they have an @code{s}
+ affix.
+ @end table
+@@ -433,28 +433,6 @@ Either @samp{#} or @samp{$} can be used to indicate immediate operands.
+ @cindex register names, ARM
+ *TODO* Explain about ARM register naming, and the predefined names.
+
+-@node ARM-Neon-Alignment
+-@subsection NEON Alignment Specifiers
+-
+-@cindex alignment for NEON instructions
+-Some NEON load/store instructions allow an optional address
+-alignment qualifier.
+-The ARM documentation specifies that this is indicated by
+-@samp{@@ @var{align}}. However GAS already interprets
+-the @samp{@@} character as a "line comment" start,
+-so @samp{: @var{align}} is used instead. For example:
+-
+-@smallexample
+- vld1.8 @{q0@}, [r0, :128]
+-@end smallexample
+-
+-@node ARM Floating Point
+-@section Floating Point
+-
+-@cindex floating point, ARM (@sc{ieee})
+-@cindex ARM floating point (@sc{ieee})
+-The ARM family uses @sc{ieee} floating-point numbers.
+-
+ @node ARM-Relocations
+ @subsection ARM relocation generation
+
+@@ -497,6 +475,28 @@ respectively. For example to load the 32-bit address of foo into r0:
+ MOVT r0, #:upper16:foo
+ @end smallexample
+
++@node ARM-Neon-Alignment
++@subsection NEON Alignment Specifiers
++
++@cindex alignment for NEON instructions
++Some NEON load/store instructions allow an optional address
++alignment qualifier.
++The ARM documentation specifies that this is indicated by
++@samp{@@ @var{align}}. However GAS already interprets
++the @samp{@@} character as a "line comment" start,
++so @samp{: @var{align}} is used instead. For example:
++
++@smallexample
++ vld1.8 @{q0@}, [r0, :128]
++@end smallexample
++
++@node ARM Floating Point
++@section Floating Point
++
++@cindex floating point, ARM (@sc{ieee})
++@cindex ARM floating point (@sc{ieee})
++The ARM family uses @sc{ieee} floating-point numbers.
++
+ @node ARM Directives
+ @section ARM Machine Directives
+
+diff --git c/gas/doc/c-cr16.texi i/gas/doc/c-cr16.texi
+index b6cf10f..00ddae2 100644
+--- c/gas/doc/c-cr16.texi
++++ i/gas/doc/c-cr16.texi
+@@ -43,26 +43,33 @@ Operand expression type qualifier is an optional field in the instruction operan
+ CR16 target operand qualifiers and its size (in bits):
+
+ @table @samp
+-@item Immediate Operand
+-- s ---- 4 bits
+-@item
+-- m ---- 16 bits, for movb and movw instructions.
+-@item
+-- m ---- 20 bits, movd instructions.
+-@item
+-- l ---- 32 bits
+-
+-@item Absolute Operand
+-- s ---- Illegal specifier for this operand.
+-@item
+-- m ---- 20 bits, movd instructions.
+-
+-@item Displacement Operand
+-- s ---- 8 bits
+-@item
+-- m ---- 16 bits
+-@item
+-- l ---- 24 bits
++@item Immediate Operand: s
++4 bits.
++
++@item Immediate Operand: m
++16 bits, for movb and movw instructions.
++
++@item Immediate Operand: m
++20 bits, movd instructions.
++
++@item Immediate Operand: l
++32 bits.
++
++@item Absolute Operand: s
++Illegal specifier for this operand.
++
++@item Absolute Operand: m
++20 bits, movd instructions.
++
++@item Displacement Operand: s
++8 bits.
++
++@item Displacement Operand: m
++16 bits.
++
++@item Displacement Operand: l
++24 bits
++
+ @end table
+
+ For example:
+diff --git c/gas/doc/c-mips.texi i/gas/doc/c-mips.texi
+index 715091e..1250c1e 100644
+--- c/gas/doc/c-mips.texi
++++ i/gas/doc/c-mips.texi
+@@ -220,7 +220,7 @@ the @samp{mad} and @samp{madu} instruction, and to not schedule @samp{nop}
+ instructions around accesses to the @samp{HI} and @samp{LO} registers.
+ @samp{-no-m4650} turns off this option.
+
+-@itemx -m3900
++@item -m3900
+ @itemx -no-m3900
+ @itemx -m4100
+ @itemx -no-m4100
+diff --git c/gas/doc/c-score.texi i/gas/doc/c-score.texi
+index 0820115..a5b570f 100644
+--- c/gas/doc/c-score.texi
++++ i/gas/doc/c-score.texi
+@@ -36,7 +36,7 @@ implicitly with the @code{gp} register. The default value is 8.
+ @item -EB
+ Assemble code for a big-endian cpu
+
+-@itemx -EL
++@item -EL
+ Assemble code for a little-endian cpu
+
+ @item -FIXDD
+@@ -48,13 +48,13 @@ Assemble code for no warning message for fix data dependency
+ @item -SCORE5
+ Assemble code for target is SCORE5
+
+-@itemx -SCORE5U
++@item -SCORE5U
+ Assemble code for target is SCORE5U
+
+-@itemx -SCORE7
++@item -SCORE7
+ Assemble code for target is SCORE7, this is default setting
+
+-@itemx -SCORE3
++@item -SCORE3
+ Assemble code for target is SCORE3
+
+ @item -march=score7
+diff --git c/gas/doc/c-tic54x.texi i/gas/doc/c-tic54x.texi
+index 4cfb440..9d631a6 100644
+--- c/gas/doc/c-tic54x.texi
++++ i/gas/doc/c-tic54x.texi
+@@ -108,7 +108,7 @@ In this example, x is replaced with SYM2; SYM2 is replaced with SYM1, and SYM1
+ is replaced with x. At this point, x has already been encountered
+ and the substitution stops.
+
+-@smallexample @code
++@smallexample
+ .asg "x",SYM1
+ .asg "SYM1",SYM2
+ .asg "SYM2",x
+@@ -125,14 +125,14 @@ Substitution may be forced in situations where replacement might be
+ ambiguous by placing colons on either side of the subsym. The following
+ code:
+
+-@smallexample @code
++@smallexample
+ .eval "10",x
+ LAB:X: add #x, a
+ @end smallexample
+
+ When assembled becomes:
+
+-@smallexample @code
++@smallexample
+ LAB10 add #10, a
+ @end smallexample
+
+@@ -308,7 +308,7 @@ The @code{LDX} pseudo-op is provided for loading the extended addressing bits
+ of a label or address. For example, if an address @code{_label} resides
+ in extended program memory, the value of @code{_label} may be loaded as
+ follows:
+-@smallexample @code
++@smallexample
+ ldx #_label,16,a ; loads extended bits of _label
+ or #_label,a ; loads lower 16 bits of _label
+ bacc a ; full address is in accumulator A
+@@ -344,7 +344,7 @@ Assign @var{name} the string @var{string}. String replacement is
+ performed on @var{string} before assignment.
+
+ @cindex @code{eval} directive, TIC54X
+-@itemx .eval @var{string}, @var{name}
++@item .eval @var{string}, @var{name}
+ Evaluate the contents of string @var{string} and assign the result as a
+ string to the subsym @var{name}. String replacement is performed on
+ @var{string} before assignment.
diff --git a/0003-binutils-texinfo-5.0.patch b/0003-binutils-texinfo-5.0.patch
new file mode 100644
index 000000000000..0ba9f82d9cea
--- /dev/null
+++ b/0003-binutils-texinfo-5.0.patch
@@ -0,0 +1,91 @@
+diff --git i/bfd/doc/bfd.texinfo w/bfd/doc/bfd.texinfo
+index 45ffa73..c3ca5e7 100644
+--- i/bfd/doc/bfd.texinfo
++++ w/bfd/doc/bfd.texinfo
+@@ -322,7 +322,7 @@ All of BFD lives in one directory.
+ @printindex cp
+
+ @tex
+-% I think something like @colophon should be in texinfo. In the
++% I think something like @@colophon should be in texinfo. In the
+ % meantime:
+ \long\def\colophon{\hbox to0pt{}\vfill
+ \centerline{The body of this manual is set in}
+@@ -333,7 +333,7 @@ All of BFD lives in one directory.
+ \centerline{{\sl\fontname\tensl\/}}
+ \centerline{are used for emphasis.}\vfill}
+ \page\colophon
+-% Blame: doc@cygnus.com, 28mar91.
++% Blame: doc@@cygnus.com, 28mar91.
+ @end tex
+
+ @bye
+diff --git i/binutils/doc/binutils.texi w/binutils/doc/binutils.texi
+index d8d1899..b8f75ce 100644
+--- i/binutils/doc/binutils.texi
++++ w/binutils/doc/binutils.texi
+@@ -4190,28 +4190,28 @@ equivalent. At least one of the @option{--output-mach},
+
+ @table @env
+
+-@itemx --input-mach=@var{machine}
++@item --input-mach=@var{machine}
+ Set the matching input ELF machine type to @var{machine}. If
+ @option{--input-mach} isn't specified, it will match any ELF
+ machine types.
+
+ The supported ELF machine types are, @var{L1OM} and @var{x86-64}.
+
+-@itemx --output-mach=@var{machine}
++@item --output-mach=@var{machine}
+ Change the ELF machine type in the ELF header to @var{machine}. The
+ supported ELF machine types are the same as @option{--input-mach}.
+
+-@itemx --input-type=@var{type}
++@item --input-type=@var{type}
+ Set the matching input ELF file type to @var{type}. If
+ @option{--input-type} isn't specified, it will match any ELF file types.
+
+ The supported ELF file types are, @var{rel}, @var{exec} and @var{dyn}.
+
+-@itemx --output-type=@var{type}
++@item --output-type=@var{type}
+ Change the ELF file type in the ELF header to @var{type}. The
+ supported ELF types are the same as @option{--input-type}.
+
+-@itemx --input-osabi=@var{osabi}
++@item --input-osabi=@var{osabi}
+ Set the matching input ELF file OSABI to @var{osbi}. If
+ @option{--input-osabi} isn't specified, it will match any ELF OSABIs.
+
+@@ -4220,7 +4220,7 @@ The supported ELF OSABIs are, @var{none}, @var{HPUX}, @var{NetBSD},
+ @var{FreeBSD}, @var{TRU64}, @var{Modesto}, @var{OpenBSD}, @var{OpenVMS},
+ @var{NSK}, @var{AROS} and @var{FenixOS}.
+
+-@itemx --output-osabi=@var{osabi}
++@item --output-osabi=@var{osabi}
+ Change the ELF OSABI in the ELF header to @var{type}. The
+ supported ELF OSABI are the same as @option{--input-osabi}.
+
+diff --git i/ld/ld.texinfo w/ld/ld.texinfo
+index 879bcfc..0a0845d 100644
+--- i/ld/ld.texinfo
++++ w/ld/ld.texinfo
+@@ -7694,7 +7694,7 @@ If you have more than one @code{SECT} statement for the same
+ @printindex cp
+
+ @tex
+-% I think something like @colophon should be in texinfo. In the
++% I think something like @@colophon should be in texinfo. In the
+ % meantime:
+ \long\def\colophon{\hbox to0pt{}\vfill
+ \centerline{The body of this manual is set in}
+@@ -7705,7 +7705,7 @@ If you have more than one @code{SECT} statement for the same
+ \centerline{{\sl\fontname\tensl\/}}
+ \centerline{are used for emphasis.}\vfill}
+ \page\colophon
+-% Blame: doc@cygnus.com, 28mar91.
++% Blame: doc@@cygnus.com, 28mar91.
+ @end tex
+
+ @bye
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..19a6cce215fb
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,111 @@
+# Contributor: ABDULLATIF Mouhamadi <bourou01dev@gmail.com>
+
+pkgname=binutils-msp430
+pkgver=2.21.1a
+pkgrel=1
+pkgdesc="A set of programs to assemble and manipulate binary and object files for the MSP430 architecture"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/mspgcc/"
+license=('GPL')
+depends=('zlib')
+options=('!emptydirs' '!libtool')
+
+_mspgcc_ver=20120406
+_gnu_mirror="http://ftpmirror.gnu.org"
+_sf_base="http://sourceforge.net/projects/mspgcc/files"
+_patches_base="${_sf_base}/Patches/LTS/${_mspgcc_ver}"
+
+_patches=()
+
+source=("${_sf_base}/mspgcc/mspgcc-${_mspgcc_ver}.tar.bz2"
+ "${_gnu_mirror}/binutils/binutils-${pkgver}.tar.bz2"
+ "0001_ld_makefile_libdir.patch"
+ "0002_binutils-texinfo-5.0-gas-doc.patch"
+ "0003-binutils-texinfo-5.0.patch")
+sha1sums=('cc96a7233f0b1d2c106eff7db6fc00e4ed9039a8'
+ '525255ca6874b872540c9967a1d26acfbc7c8230'
+ '7a5d78fd94fd99dd544816db75a14c326c494e68'
+ 'b92aba28a090f214a650102ad0f0862c37b45e58'
+ '417b1cdb35c41a08d3ca967c165c0d79588986e9')
+
+_builddir=build
+
+prepare() {
+ cd ${srcdir}/binutils-2.21.1/
+
+ # https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=avr-binutils-atmel
+ # https://bugs.archlinux.org/task/34629
+ sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure
+
+ _patch_name="msp430-binutils-${pkgver}-${_mspgcc_ver}.patch"
+ (cd "${srcdir}/binutils-2.21.1" &&
+ patch -p1 < "${srcdir}/mspgcc-${_mspgcc_ver}/${_patch_name}" &&
+ patch -p0 < "${srcdir}/0001_ld_makefile_libdir.patch" &&
+ patch -p1 < "${srcdir}/0002_binutils-texinfo-5.0-gas-doc.patch" &&
+ patch -p1 < "${srcdir}/0003-binutils-texinfo-5.0.patch" &&
+ for patch in ${_patches[@]} ; do
+ msg "Applying ${patch}"
+ patch -p1 < "${srcdir}/${patch}"
+ done)
+
+ rm -frv ${_builddir}
+ mkdir -p ${_builddir} && cd ${_builddir}
+
+}
+
+
+
+build() {
+ cd ${srcdir}/binutils-2.21.1/
+ cd ${_builddir}
+ CFLAGS="-Os -g0" "${srcdir}/binutils-2.21.1/configure" \
+ --prefix=/usr \
+ --program-prefix="msp430-" \
+ --disable-multilib \
+ --disable-werror \
+ --disable-nls \
+ --enable-install-libbfd \
+ --infodir=/usr/share/info \
+ --libdir=/usr/msp430/lib \
+ --mandir=/usr/share/man \
+ --target=msp430
+
+ # This checks the host environment and makes sure all the necessary
+ # tools are available to compile Binutils.
+ make configure-host
+
+ make tooldir=/usr all
+}
+
+check() {
+ cd ${srcdir}/binutils-2.21.1/${_builddir}
+
+ # do not abort on errors - manually check log files
+ make -k -j1 check || true
+
+}
+
+package() {
+ cd ${srcdir}/binutils-2.21.1/${_builddir}
+ make DESTDIR=${pkgdir} tooldir=/usr install
+
+ rm -f ${pkgdir}/usr/lib/libiberty.a
+ rm -f ${pkgdir}/usr/man/man1/{dlltool,nlmconv,windres}*
+ rm -f ${pkgdir}/usr/share/info/dir
+
+ cd ${pkgdir}/usr/share/info
+ for file in as bfd binutils configure gprof ld standards ; do
+ mv ${file}.info "msp430-${file}.info"
+ done
+
+ for bin in addr2line ar as c++filt gprof ld nm objcopy \
+ objdump ranlib readelf size strings strip
+ do
+ rm -f ${pkgdir}/usr/bin/${bin}
+ done
+
+ install -Dm644 "${srcdir}/binutils-2.21.1/COPYING" \
+ "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
+
+# vim:set sts=2 ts=2 sw=2 et: