sparc64/89486: firefox and thunderbird is broken on sparc64
Andrew Belashov
bel at orel.ru
Thu Jan 12 23:50:07 PST 2006
The following reply was made to PR sparc64/89486; it has been noted by GNATS.
From: Andrew Belashov <bel at orel.ru>
To: bug-followup at FreeBSD.org
Cc:
Subject: Re: sparc64/89486: firefox and thunderbird is broken on sparc64
Date: Fri, 13 Jan 2006 10:45:59 +0300
This is a multi-part message in MIME format.
--------------060008010808050904090302
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
I have fully working firefox, built from ports.
How-To-Fix:
Save attached patch or get it from NetBSD:
http://cvsweb.netbsd.org/bsdweb.cgi/src/gnu/dist/binutils/bfd/elf64-sparc.c.diff?r1=1.3&r2=1.4&f=h&f=u
Apply the patch.
# cd /usr/src
# patch -p0 < /path/to/patch
Recompile your binutils.
# cd /usr/src/gnu/usr.bin/binutils
# make obj && make depend && make && make install
Now we have fixed ld(1).
Recompile firefox from ports.
# cd /usr/ports/www/firefox
# make clean
# make
# make deinstall
# make install
# make package
I have tested firefox and gnome2 on FreeBSD-6.0-RELEASE/sparc64/SMP with
libthr. No problems found. For switching to libthr, add following
lines to /etc/libmap.conf:
libc_r.so.6 libthr.so.2
libc_r.so libthr.so
--------------060008010808050904090302
Content-Type: text/plain;
name="elf64-sparc.c.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="elf64-sparc.c.patch"
--- contrib/binutils/bfd/elf64-sparc.c.orig Thu Aug 5 08:31:26 2004
+++ contrib/binutils/bfd/elf64-sparc.c Sun Jan 1 19:00:33 2006
@@ -1638,7 +1638,11 @@ sparc64_elf_adjust_dynamic_symbol (info,
|| h->root.type == bfd_link_hash_defweak)
&& (h->root.u.def.section->flags & SEC_CODE) != 0))
{
- if (! elf_hash_table (info)->dynamic_sections_created)
+ if (! info->shared
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0
+ && h->root.type != bfd_link_hash_undefweak
+ && h->root.type != bfd_link_hash_undefined)
{
/* This case can occur if we saw a WPLT30 reloc in an input
file, but none of the input files were dynamic objects.
--------------060008010808050904090302--
More information about the freebsd-sparc64
mailing list