summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYaakov Selkowitz <yselkowitz@users.sourceforge.net>2013-06-28 03:13:03 -0500
committerYaakov Selkowitz <yselkowitz@users.sourceforge.net>2013-06-28 03:13:03 -0500
commit06ea15511d155aeeed11e862c3d2e6c19490efb8 (patch)
treee8a106c6b3589ebad66af1664a67e19a1a5a601f
parent359f102527ac8a682a8b811b2938ac942fae3d04 (diff)
downloadcygwin-binutils-06ea15511d155aeeed11e862c3d2e6c19490efb8.tar.gz
cygwin-binutils-06ea15511d155aeeed11e862c3d2e6c19490efb8.tar.xz
cygwin-binutils-06ea15511d155aeeed11e862c3d2e6c19490efb8.zip
cygwin-binutils 2.23.52-1
-rw-r--r--cygwin-binutils.spec259
-rw-r--r--sources2
-rw-r--r--x86-64-pc32-relocs.patch51
3 files changed, 270 insertions, 42 deletions
diff --git a/cygwin-binutils.spec b/cygwin-binutils.spec
index 4899ede..81de125 100644
--- a/cygwin-binutils.spec
+++ b/cygwin-binutils.spec
@@ -1,82 +1,259 @@
-%define cygrel 1
+%global run_testsuite 0
Name: cygwin-binutils
-Version: 2.23.51
-Release: 2%{?dist}
-Summary: Cygwin binutils
+Version: 2.23.52
+Release: 1%{?dist}
+Summary: Cross-compiled version of binutils for Cygwin environments
License: GPLv2+ and LGPLv2+ and GPLv3+ and LGPLv3+
Group: Development/Libraries
-URL: http://www.gnu.org/software/binutils/
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-Source0: ftp://sourceware.org/pub/cygwin/release/binutils/binutils-%{version}-%{cygrel}-src.tar.bz2
+URL: http://www.gnu.org/software/binutils/
+Source0: ftp://sourceware.org/pub/binutils/snapshots/binutils-%{version}.tar.bz2
Patch0: w32api-sysroot.patch
+Patch1: x86-64-pc32-relocs.patch
+
BuildRequires: flex
BuildRequires: bison
BuildRequires: texinfo
-BuildRequires: cygwin-filesystem
+BuildRequires: zlib-devel
+BuildRequires: cygwin32-filesystem >= 7
+BuildRequires: cygwin64-filesystem >= 7
+%if %{run_testsuite}
+BuildRequires: dejagnu
+BuildRequires: sharutils
+%endif
+Provides: bundled(libiberty)
-# NB: This must be left in.
-Requires: cygwin-filesystem
+%description
+Cross compiled binutils (utilities like 'strip', 'as', 'ld') which
+understand Cygwin executables and DLLs.
+%package -n cygwin-binutils-generic
+Summary: Utilities which are needed for both the Cygwin32 and Cygwin64 toolchains
-%description
-Cygwin binutils (utilities like 'strip', 'as', 'ld') which
-understand Cygwin PE executables and DLLs.
+%description -n cygwin-binutils-generic
+Utilities (like strip and objdump) which are needed for
+both the Cygwin32 and Cygwin64 toolchains
+
+%package -n cygwin32-binutils
+Summary: Cross-compiled version of binutils for the Cygwin32 environment
+Requires: cygwin-binutils-generic = %{version}-%{release}
+Requires: cygwin32-filesystem >= 7
+Provides: cygwin-binutils = %{version}-%{release}
+Obsoletes: cygwin-binutils < %{version}-%{release}
+
+%description -n cygwin32-binutils
+Cross compiled binutils (utilities like 'strip', 'as', 'ld') which
+understand Cygwin executables and DLLs.
+
+%package -n cygwin64-binutils
+Summary: Cross-compiled version of binutils for the Cygwin64 environment
+Requires: cygwin-binutils-generic = %{version}-%{release}
+Requires: cygwin64-filesystem >= 7
+
+%description -n cygwin64-binutils
+Cross compiled binutils (utilities like 'strip', 'as', 'ld') which
+understand Cygwin executables and DLLs.
%prep
-%setup -q -n binutils-%{version}-%{cygrel}
+%setup -q -n binutils-%{version}
%patch0 -p1
+%patch1 -p0
%build
-mkdir -p build
-cd build
+mkdir build_cyg32
+pushd build_cyg32
CFLAGS="$RPM_OPT_FLAGS" \
../configure \
--build=%_build --host=%_host \
- --target=%{_cygwin_target} \
- --enable-64-bit-bfd \
- --enable-targets=x86_64-pc-cygwin \
- --verbose --disable-nls \
- --without-included-gettext \
- --disable-win32-registry \
- --disable-werror \
- --with-sysroot=%{_cygwin_sysroot} \
- --prefix=%{_prefix} --bindir=%{_bindir} \
- --includedir=%{_includedir} --libdir=%{_libdir} \
- --mandir=%{_mandir} --infodir=%{_infodir}
+ --target=%{cygwin32_target} \
+ --disable-nls \
+ --with-sysroot=%{cygwin32_sysroot} \
+ --prefix=%{_prefix} \
+ --bindir=%{_bindir} \
+ --includedir=%{_includedir} \
+ --libdir=%{_libdir} \
+ --mandir=%{_mandir} \
+ --infodir=%{_infodir}
-make all
+make all %{?_smp_mflags}
+popd
+mkdir build_cyg64
+pushd build_cyg64
+CFLAGS="$RPM_OPT_FLAGS" \
+../configure \
+ --build=%_build --host=%_host \
+ --target=%{cygwin64_target} \
+ --disable-nls \
+ --with-sysroot=%{cygwin64_sysroot} \
+ --prefix=%{_prefix} \
+ --bindir=%{_bindir} \
+ --includedir=%{_includedir} \
+ --libdir=%{_libdir} \
+ --mandir=%{_mandir} \
+ --infodir=%{_infodir}
-%install
-rm -rf $RPM_BUILD_ROOT
+make all %{?_smp_mflags}
+popd
+
+# Create multilib versions for the tools strip, objdump and objcopy
+mkdir build_multilib
+pushd build_multilib
+CFLAGS="$RPM_OPT_FLAGS" \
+../configure \
+ --build=%_build --host=%_host \
+ --target=%{cygwin64_target} \
+ --enable-targets=%{cygwin64_target},%{cygwin32_target} \
+ --disable-nls \
+ --with-sysroot=%{cygwin64_sysroot} \
+ --prefix=%{_prefix} \
+ --bindir=%{_bindir} \
+ --includedir=%{_includedir} \
+ --libdir=%{_libdir} \
+ --mandir=%{_mandir} \
+ --infodir=%{_infodir}
+
+make %{?_smp_mflags}
+popd
+
+
+%check
+%if !%{run_testsuite}
+echo ====================TESTSUITE DISABLED=========================
+%else
+pushd build_cyg32
+ make -k check < /dev/null || :
+ echo ====================TESTING CYGWIN32 =========================
+ cat {gas/testsuite/gas,ld/ld,binutils/binutils}.sum
+ echo ====================TESTING CYGWIN32 END=====================
+ for file in {gas/testsuite/gas,ld/ld,binutils/binutils}.{sum,log}
+ do
+ ln $file binutils-%{cygwin32_target}-$(basename $file) || :
+ done
+ tar cjf binutils-%{cygwin32_target}.tar.bz2 binutils-%{cygwin32_target}-*.{sum,log}
+ uuencode binutils-%{cygwin32_target}.tar.bz2 binutils-%{cygwin32_target}.tar.bz2
+ rm -f binutils-%{cygwin32_target}.tar.bz2 binutils-%{cygwin32_target}-*.{sum,log}
+popd
+
+pushd build_cyg64
+ make -k check < /dev/null || :
+ echo ====================TESTING CYGWIN64 =========================
+ cat {gas/testsuite/gas,ld/ld,binutils/binutils}.sum
+ echo ====================TESTING CYGWIN64 END=====================
+ for file in {gas/testsuite/gas,ld/ld,binutils/binutils}.{sum,log}
+ do
+ ln $file binutils-%{cygwin64_target}-$(basename $file) || :
+ done
+ tar cjf binutils-%{cygwin64_target}.tar.bz2 binutils-%{cygwin64_target}-*.{sum,log}
+ uuencode binutils-%{cygwin64_target}.tar.bz2 binutils-%{cygwin64_target}.tar.bz2
+ rm -f binutils-%{cygwin64_target}.tar.bz2 binutils-%{cygwin64_target}-*.{sum,log}
+popd
+%endif
-cd build
-make DESTDIR=$RPM_BUILD_ROOT install
+
+%install
+make -C build_cyg32 install DESTDIR=$RPM_BUILD_ROOT
+make -C build_cyg64 install DESTDIR=$RPM_BUILD_ROOT
+make -C build_multilib install DESTDIR=$RPM_BUILD_ROOT/multilib
# These files conflict with ordinary binutils.
rm -rf $RPM_BUILD_ROOT%{_infodir}
-rm -f ${RPM_BUILD_ROOT}%{_libdir}/libiberty*
-
+rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty*
-%clean
-rm -rf $RPM_BUILD_ROOT
+# Keep the multilib versions of the strip, objdump and objcopy commands
+# We need these for the RPM integration as these tools must be able to
+# both process Cygwin32 and Cygwin64 binaries
+mv $RPM_BUILD_ROOT/multilib%{_bindir}/%{cygwin64_strip} $RPM_BUILD_ROOT%{_bindir}/%{cygwin_strip}
+mv $RPM_BUILD_ROOT/multilib%{_bindir}/%{cygwin64_objdump} $RPM_BUILD_ROOT%{_bindir}/%{cygwin_objdump}
+mv $RPM_BUILD_ROOT/multilib%{_bindir}/%{cygwin64_objcopy} $RPM_BUILD_ROOT%{_bindir}/%{cygwin_objcopy}
+rm -rf $RPM_BUILD_ROOT/multilib
-%files
-%defattr(-,root,root)
+%files -n cygwin-binutils-generic
+%doc COPYING
%{_mandir}/man1/*
-%{_bindir}/i686-pc-cygwin-*
-%{_prefix}/i686-pc-cygwin/bin
-%{_prefix}/i686-pc-cygwin/lib/ldscripts
+%{_bindir}/%{cygwin_strip}
+%{_bindir}/%{cygwin_objdump}
+%{_bindir}/%{cygwin_objcopy}
+
+%files -n cygwin32-binutils
+%{_bindir}/%{cygwin32_target}-addr2line
+%{_bindir}/%{cygwin32_target}-ar
+%{_bindir}/%{cygwin32_target}-as
+%{_bindir}/%{cygwin32_target}-c++filt
+%{_bindir}/%{cygwin32_target}-dlltool
+%{_bindir}/%{cygwin32_target}-dllwrap
+%{_bindir}/%{cygwin32_target}-elfedit
+%{_bindir}/%{cygwin32_target}-gprof
+%{_bindir}/%{cygwin32_target}-ld
+%{_bindir}/%{cygwin32_target}-ld.bfd
+%{_bindir}/%{cygwin32_target}-nm
+%{_bindir}/%{cygwin32_target}-objcopy
+%{_bindir}/%{cygwin32_target}-objdump
+%{_bindir}/%{cygwin32_target}-ranlib
+%{_bindir}/%{cygwin32_target}-readelf
+%{_bindir}/%{cygwin32_target}-size
+%{_bindir}/%{cygwin32_target}-strings
+%{_bindir}/%{cygwin32_target}-strip
+%{_bindir}/%{cygwin32_target}-windmc
+%{_bindir}/%{cygwin32_target}-windres
+%{_prefix}/%{cygwin32_target}/bin/ar
+%{_prefix}/%{cygwin32_target}/bin/as
+%{_prefix}/%{cygwin32_target}/bin/dlltool
+%{_prefix}/%{cygwin32_target}/bin/ld
+%{_prefix}/%{cygwin32_target}/bin/ld.bfd
+%{_prefix}/%{cygwin32_target}/bin/nm
+%{_prefix}/%{cygwin32_target}/bin/objcopy
+%{_prefix}/%{cygwin32_target}/bin/objdump
+%{_prefix}/%{cygwin32_target}/bin/ranlib
+%{_prefix}/%{cygwin32_target}/bin/strip
+%{_prefix}/%{cygwin32_target}/lib/ldscripts
+
+%files -n cygwin64-binutils
+%{_bindir}/%{cygwin64_target}-addr2line
+%{_bindir}/%{cygwin64_target}-ar
+%{_bindir}/%{cygwin64_target}-as
+%{_bindir}/%{cygwin64_target}-c++filt
+%{_bindir}/%{cygwin64_target}-dlltool
+%{_bindir}/%{cygwin64_target}-dllwrap
+%{_bindir}/%{cygwin64_target}-elfedit
+%{_bindir}/%{cygwin64_target}-gprof
+%{_bindir}/%{cygwin64_target}-ld
+%{_bindir}/%{cygwin64_target}-ld.bfd
+%{_bindir}/%{cygwin64_target}-nm
+%{_bindir}/%{cygwin64_target}-objcopy
+%{_bindir}/%{cygwin64_target}-objdump
+%{_bindir}/%{cygwin64_target}-ranlib
+%{_bindir}/%{cygwin64_target}-readelf
+%{_bindir}/%{cygwin64_target}-size
+%{_bindir}/%{cygwin64_target}-strings
+%{_bindir}/%{cygwin64_target}-strip
+%{_bindir}/%{cygwin64_target}-windmc
+%{_bindir}/%{cygwin64_target}-windres
+%{_prefix}/%{cygwin64_target}/bin/ar
+%{_prefix}/%{cygwin64_target}/bin/as
+%{_prefix}/%{cygwin64_target}/bin/dlltool
+%{_prefix}/%{cygwin64_target}/bin/ld
+%{_prefix}/%{cygwin64_target}/bin/ld.bfd
+%{_prefix}/%{cygwin64_target}/bin/nm
+%{_prefix}/%{cygwin64_target}/bin/objcopy
+%{_prefix}/%{cygwin64_target}/bin/objdump
+%{_prefix}/%{cygwin64_target}/bin/ranlib
+%{_prefix}/%{cygwin64_target}/bin/strip
+%{_prefix}/%{cygwin64_target}/lib/ldscripts
%changelog
+* Wed Jun 26 2013 Yaakov Selkowitz <cygwin-ports-general@lists.sourceforge.net> - 2.23.52-1
+- Make package compliant with new Cygwin packaging scheme.
+- Add Cygwin 64bit support.
+- Add generic package containing tools which can used by both toolchains.
+
* Thu Mar 28 2013 Yaakov Selkowitz <yselkowitz@users.sourceforge.net> - 2.23.51-2
- Fix w32api sysroot patch for 64bit BFD support.
diff --git a/sources b/sources
index 3f95c89..2b7cb5b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-38cb5a33cab6c86f2f73eaf533b2e9fc binutils-2.23.51-1-src.tar.bz2
+fb35fd0dab0cd61e6a4192ee07f7be26 binutils-2.23.52.tar.bz2
diff --git a/x86-64-pc32-relocs.patch b/x86-64-pc32-relocs.patch
new file mode 100644
index 0000000..53da6aa
--- /dev/null
+++ b/x86-64-pc32-relocs.patch
@@ -0,0 +1,51 @@
+Index: bfd/cofflink.c
+===================================================================
+RCS file: /cvs/src/src/bfd/cofflink.c,v
+retrieving revision 1.84
+diff -c -p -r1.84 cofflink.c
+*** bfd/cofflink.c 10 Jan 2013 20:03:52 -0000 1.84
+--- bfd/cofflink.c 4 Jun 2013 12:03:23 -0000
+*************** _bfd_coff_generic_relocate_section (bfd
+*** 3060,3065 ****
+--- 3060,3070 ----
+ else
+ {
+ sec = sections[symndx];
++
++ /* If the output section has been discarded then ignore this reloc. */
++ if (sec->output_section->vma == 0)
++ continue;
++
+ val = (sec->output_section->vma
+ + sec->output_offset
+ + sym->n_value);
+*************** _bfd_coff_generic_relocate_section (bfd
+*** 3080,3086 ****
+ + sec->output_section->vma
+ + sec->output_offset);
+ }
+-
+ else if (h->root.type == bfd_link_hash_undefweak)
+ {
+ if (h->symbol_class == C_NT_WEAK && h->numaux == 1)
+--- 3085,3090 ----
+*************** _bfd_coff_generic_relocate_section (bfd
+*** 3116,3122 ****
+ /* This is a GNU extension. */
+ val = 0;
+ }
+-
+ else if (! info->relocatable)
+ {
+ if (! ((*info->callbacks->undefined_symbol)
+--- 3120,3125 ----
+*************** _bfd_coff_generic_relocate_section (bfd
+*** 3183,3189 ****
+ if (name == NULL)
+ return FALSE;
+ }
+-
+ if (! ((*info->callbacks->reloc_overflow)
+ (info, (h ? &h->root : NULL), name, howto->name,
+ (bfd_vma) 0, input_bfd, input_section,
+--- 3186,3191 ----