# HG changeset patch # User Michael Schloh von Bennewitz # Date 1231767516 -3600 # Node ID 49e9fb8edd058f982db12ad30c9a0803e0284e2c # Parent ce0d31e18b667711a7e82f9eeb286aa4a7c505e3 Import package vendor original specs for necessary manipulations. diff -r ce0d31e18b66 -r 49e9fb8edd05 binutils/binutils.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/binutils/binutils.patch Mon Jan 12 14:38:36 2009 +0100 @@ -0,0 +1,177 @@ +Use the platform specific ELF branding expected under FreeBSD. +This is similar to what the vendor ld(1) does on this platform. + +Additionally, recognize and ignore Solaris 10's "Solaris Cryptographic +Framework" ELF header type "SUNW_signature", Solaris 10 "Symbol +information" ELF header type "SUNW_syminfo" and Solaris 10 "DTrace +Object Format" ELF header type. Also, fix the path to the dynamic +linker under Solaris 10/amd64. + +Index: include/elf/common.h +--- include/elf/common.h.orig 2007-08-28 19:19:40 +0200 ++++ include/elf/common.h 2007-08-29 09:30:04 +0200 +@@ -353,6 +353,9 @@ + #define SHT_SUNW_verdef 0x6ffffffd /* Versions defined by file */ + #define SHT_SUNW_verneed 0x6ffffffe /* Versions needed by file */ + #define SHT_SUNW_versym 0x6fffffff /* Symbol versions */ ++#define SHT_SUNW_syminfo 0x6ffffffc /* Symbol information */ ++#define SHT_SUNW_signature 0x6ffffff6 /* Solaris Cryptographic Framework: Digital Signature */ ++#define SHT_SUNW_dof 0x6ffffff4 /* Solaris DTrace Object Format */ + + #define SHT_GNU_verdef SHT_SUNW_verdef + #define SHT_GNU_verneed SHT_SUNW_verneed +Index: bfd/elf.c +--- bfd/elf.c.orig 2007-08-28 19:19:33 +0200 ++++ bfd/elf.c 2007-08-29 09:30:04 +0200 +@@ -1793,6 +1793,11 @@ + elf_tdata (abfd)->dynverref_hdr = *hdr; + return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex); + ++ case SHT_SUNW_syminfo: ++ /* case SHT_SUNW_signature: conflicts with new SHT_GNU_HASH in Binutils 2.18 */ ++ case SHT_SUNW_dof: ++ return TRUE; ++ + case SHT_SHLIB: + return TRUE; + +@@ -4682,6 +4687,12 @@ + else + i_ehdrp->e_type = ET_REL; + ++ /* OpenPKG platform branding BEGIN */ ++#if defined(OPENPKG_OS_FREEBSD) ++ i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_FREEBSD; ++#endif ++ /* OpenPKG platform branding END */ ++ + switch (bfd_get_arch (abfd)) + { + case bfd_arch_unknown: +Index: bfd/elf64-x86-64.c +--- bfd/elf64-x86-64.c.orig 2007-08-06 21:59:33 +0200 ++++ bfd/elf64-x86-64.c 2007-08-29 09:30:04 +0200 +@@ -345,7 +345,11 @@ + /* The name of the dynamic interpreter. This is put in the .interp + section. */ + ++#if defined(OPENPKG_OS_SOLARIS) ++#define ELF_DYNAMIC_INTERPRETER "/lib/amd64/ld.so.1" ++#else + #define ELF_DYNAMIC_INTERPRETER "/lib/ld64.so.1" ++#endif + + /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid + copying dynamic variables from a shared lib into an app's dynbss + +----------------------------------------------------------------------------- + +Support FreeBSD >= 4.10 by fixing platform detection. + +Index: bfd/configure +--- bfd/configure.orig 2007-08-28 22:19:51 +0200 ++++ bfd/configure 2007-08-29 09:30:04 +0200 +@@ -17459,6 +17459,10 @@ + i[3-7]86-*-bsdi) + COREFILE= + ;; ++ i[3456]86-*-freebsd4.1[0-9]*) ++ COREFILE='' ++ TRAD_HEADER='"hosts/i386bsd.h"' ++ ;; + i[3-7]86-*-bsd* | i[3-7]86-*-freebsd[123] | i[3-7]86-*-freebsd[123]\.* | i[3-7]86-*-freebsd4\.[01234] | i[3-7]86-*-freebsd4\.[01234]\.* | i[3-7]86-*-freebsd*aout*) + COREFILE=trad-core.lo + TRAD_HEADER='"hosts/i386bsd.h"' + +----------------------------------------------------------------------------- + +Fight problems with --disable-nls under Solaris + +Index: gas/asintl.h +--- gas/asintl.h.orig 2007-08-06 21:59:49 +0200 ++++ gas/asintl.h 2007-08-29 09:30:04 +0200 +@@ -20,6 +20,11 @@ + Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ + ++#ifndef ENABLE_NLS ++# define _LIBINTL_H ++# define _LIBGETTEXT_H ++#endif ++ + #ifdef HAVE_LOCALE_H + # ifndef ENABLE_NLS + /* The Solaris version of locale.h always includes libintl.h. If we have +Index: ld/ld.h +--- ld/ld.h.orig 2007-08-06 22:00:19 +0200 ++++ ld/ld.h 2007-08-29 09:30:04 +0200 +@@ -23,6 +23,11 @@ + #ifndef LD_H + #define LD_H + ++#ifndef ENABLE_NLS ++# define _LIBINTL_H ++# define _LIBGETTEXT_H ++#endif ++ + #ifdef HAVE_LOCALE_H + #endif + #ifndef SEEK_CUR +Index: ld/Makefile.in +--- ld/Makefile.in.orig 2007-08-06 22:29:54 +0200 ++++ ld/Makefile.in 2007-08-29 09:30:04 +0200 +@@ -287,7 +287,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 + +----------------------------------------------------------------------------- + +workaround problems under Mac OS X. + +Index: libiberty/fibheap.c +--- libiberty/fibheap.c.orig 2005-05-10 17:33:33 +0200 ++++ libiberty/fibheap.c 2007-08-29 09:30:04 +0200 +@@ -34,8 +34,11 @@ + #include "libiberty.h" + #include "fibheap.h" + +- ++#ifdef LONG_MIN + #define FIBHEAPKEY_MIN LONG_MIN ++#else ++#define FIBHEAPKEY_MIN (-0x7fffffffL - 1) ++#endif + + static void fibheap_ins_root (fibheap_t, fibnode_t); + static void fibheap_rem_root (fibheap_t, fibnode_t); + +----------------------------------------------------------------------------- + +Disable the "error" about "eh_frame_hdr" as it is actually more a +warning (the linking is *not* aborted) and it occurs at least under +FreeBSD-7.0/amd64 regularily without doing any obvious harm. Seems +like the issue itself exists since a longer time, but in recent GNU +binutils this additional message was introduced. As we cannot observe +any problems and this message really confused, just disable it for now. + +Index: bfd/elf-eh-frame.c +--- bfd/elf-eh-frame.c.orig 2007-08-06 21:59:22 +0200 ++++ bfd/elf-eh-frame.c 2007-11-11 15:46:44 +0100 +@@ -970,9 +970,11 @@ + return offset != sec->rawsize; + + free_no_table: ++#if 0 + (*info->callbacks->einfo) + (_("%P: error in %B(%A); no .eh_frame_hdr table will be created.\n"), + abfd, sec); ++#endif + if (ehbuf) + free (ehbuf); + if (sec_info) diff -r ce0d31e18b66 -r 49e9fb8edd05 binutils/binutils.spec --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/binutils/binutils.spec Mon Jan 12 14:38:36 2009 +0100 @@ -0,0 +1,157 @@ +## +## binutils.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2008 OpenPKG Foundation e.V. +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package information +Name: binutils +Summary: GNU Binary Utilities +URL: http://sources.redhat.com/binutils/ +Vendor: Free Software Foundation +Packager: OpenPKG Foundation e.V. +Distribution: OpenPKG Community +Class: CORE +Group: Compiler +License: GPL +Version: 2.18 +Release: 20080101 + +# list of sources +Source0: ftp://sources.redhat.com/pub/binutils/releases/binutils-%{version}.tar.bz2 +Patch0: binutils.patch + +# build information +Prefix: %{l_prefix} +BuildRoot: %{l_buildroot} +BuildPreReq: OpenPKG, openpkg >= 20060419, make +PreReq: OpenPKG, openpkg >= 20060419 +AutoReq: no +AutoReqProv: no + +%description + Binutils is a collection of binary utilities. It includes: ld + (the GNU linker), addr2line (converts addresses into filenames + and line numbers), as (the portable GNU assembler), ar (a utility + for creating, modifying and extracting from archives), nm (lists + symbols from object files), objcopy (copys and translates object + files), objdump (displays information from object files), ranlib + (generates an index to the contents of an archive), readelf + (displays information from any ELF format object file), size (lists + the section sizes of an object or archive file), strings (lists + printable strings from files), strip (discards symbols) and gprof + (displays profiling information). + +%track + prog binutils = { + version = %{version} + url = ftp://sources.redhat.com/pub/binutils/releases/ + regex = binutils-(__VER__)\.tar\.bz2 + } + +%prep + %setup -q + %patch -p0 + +%build + # configure package + CC="%{l_cc}"; export CC + CFLAGS="%{l_cflags}"; export CFLAGS + ARGS="" + case "%{l_platform -t}" in + *-freebsd* ) CFLAGS="$CFLAGS -DOPENPKG_OS_FREEBSD" ;; + *-linux* ) CFLAGS="$CFLAGS -DOPENPKG_OS_LINUX" ;; + *-sunos* ) CFLAGS="$CFLAGS -DOPENPKG_OS_SOLARIS" ;; + *-aix* ) ARGS="$ARGS --without-gnu-as --without-gnu-ld" ;; + *-darwin* ) ARGS="$ARGS --without-gnu-as --without-gnu-ld" ;; + esac + case "%{l_platform -t}" in + amd64-sunos* ) ARGS="$ARGS --enable-64-bit-bdf" ;; + esac + ( echo "#!/bin/sh" + echo "touch lex.yy.c" + echo "echo 'lex.sh:WARNING: local Lex wrapper unexpectedly called.' 1>&2" + ) >lex.sh && chmod a+x lex.sh + echo "ac_cv_prog_LEX=`pwd`/lex.sh" >ld/config.cache + INSTALL="%{l_shtool} install -c" \ + AR="%{l_ar}" \ + MAKE="%{l_make}" \ + CONFIG_SHELL="%{l_bash}" \ + ./configure \ + --prefix=%{l_prefix} \ + --includedir=%{l_prefix}/include/binutils \ + --libdir=%{l_prefix}/lib/binutils \ + --disable-werror \ + --disable-nls \ + $ARGS + + # build package + %{l_make} %{l_mflags} + +%install + rm -rf $RPM_BUILD_ROOT + + # build package + %{l_make} %{l_mflags} install \ + prefix=$RPM_BUILD_ROOT%{l_prefix} \ + exec_prefix=$RPM_BUILD_ROOT%{l_prefix} \ + includedir=$RPM_BUILD_ROOT%{l_prefix}/include/binutils \ + libdir=$RPM_BUILD_ROOT%{l_prefix}/lib/binutils + + # platform specific stripping down of installation: + # o GNU binutils strip(1) is broken on AIX, use of OS supplied + # /usr/bin/strip from bos.rte.bind_cmds is mandatory. + # o GNU binutils strip(1), ar(1) and ranlib(1) do not work under + # Mac OS X (aka Darwin), system versions have to be used. + case "%{l_platform -t}" in + *-aix* ) + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/strip \ + $RPM_BUILD_ROOT%{l_prefix}/man/man1/strip.1 + ;; + *-darwin* ) + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/strip \ + $RPM_BUILD_ROOT%{l_prefix}/man/man1/strip.1 + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/ar \ + $RPM_BUILD_ROOT%{l_prefix}/man/man1/ar.1 + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/ranlib \ + $RPM_BUILD_ROOT%{l_prefix}/man/man1/ranlib.1 + ;; + esac + + # strip down installation + rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir + rm -f $RPM_BUILD_ROOT%{l_prefix}/info/standards.info + rm -f $RPM_BUILD_ROOT%{l_prefix}/info/configure.info* + rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/c++filt.1 + rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/dlltool.1 + rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/nlmconv.1 + rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/windres.1 + rm -rf $RPM_BUILD_ROOT%{l_prefix}/*-*-* + rm -rf $RPM_BUILD_ROOT%{l_prefix}/bin/c++filt + strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} + +%files -f files + +%clean + rm -rf $RPM_BUILD_ROOT +