summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-freebsd/freebsd-libexec/files/freebsd-libexec-6.2-sparc64.patch')
-rw-r--r--sys-freebsd/freebsd-libexec/files/freebsd-libexec-6.2-sparc64.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/sys-freebsd/freebsd-libexec/files/freebsd-libexec-6.2-sparc64.patch b/sys-freebsd/freebsd-libexec/files/freebsd-libexec-6.2-sparc64.patch
new file mode 100644
index 0000000..3ed300a
--- /dev/null
+++ b/sys-freebsd/freebsd-libexec/files/freebsd-libexec-6.2-sparc64.patch
@@ -0,0 +1,34 @@
+FreeBSD only works on Sparc64 and freeBSD code relies on the __sparc64__ define.
+gcc only defines __sparc64__ if -mcpu is not used.
+gcc-4 defaults to using -mcpu=ultrasparc on FreeBSD.
+
+This causes us a problem. Infact, FreeBSD developers sent gcc a patch to always
+define __sparc64__ when using -mcpu=ultrasparc, but this was rejected by most
+people including NetBSD developers.
+
+The correct solution is to use __sparc__.
+If platform detection is required, or the code is obviously 64 bit then we can
+use the __arch64__ define as well.
+This combination should be supported by all gcc versions:)
+
+diff -ur libexec.orig/rtld-elf/rtld.c libexec/rtld-elf/rtld.c
+--- libexec.orig/rtld-elf/rtld.c 2006-10-10 08:16:56 +0100
++++ libexec/rtld-elf/rtld.c 2006-10-10 08:19:08 +0100
+@@ -2732,7 +2732,7 @@
+
+ #endif
+
+-#if defined(__i386__) || defined(__amd64__) || defined(__sparc64__) || \
++#if defined(__i386__) || defined(__amd64__) || defined(__sparc__) || \
+ defined(__arm__)
+
+ /*
+@@ -2897,7 +2897,7 @@
+ void
+ free_tls_offset(Obj_Entry *obj)
+ {
+-#if defined(__i386__) || defined(__amd64__) || defined(__sparc64__) || \
++#if defined(__i386__) || defined(__amd64__) || defined(__sparc__) || \
+ defined(__arm__)
+ /*
+ * If we were the last thing to allocate out of the static TLS