summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-10-13 23:53:18 -0400
committerRich Felker <dalias@aerifal.cx>2012-10-13 23:53:18 -0400
commit36be5284c2a79406778ac489928c6deb05857329 (patch)
treea7c7b3a78adba922bb9fd7054770b2f534edf0ed
parent185a97707429aacfa1e8db62fc9fdb2188539d86 (diff)
downloadmusl-36be5284c2a79406778ac489928c6deb05857329.tar.gz
musl-36be5284c2a79406778ac489928c6deb05857329.tar.bz2
musl-36be5284c2a79406778ac489928c6deb05857329.tar.xz
musl-36be5284c2a79406778ac489928c6deb05857329.zip
workaround broken hidden-visibility handling in pcc
with this change, pcc-built musl libc.so seems to work correctly. the problem is that pcc generates GOT lookups for external-linkage symbols even if they are hidden, rather than using GOT-relative addressing. the entire reason we're using hidden visibility on the __libc object is to make it accessible prior to relocations -- not to mention inexpensive to access. unfortunately, the workaround makes it even more expensive on pcc. when the pcc issue is fixed, an appropriate version test should be added so new pcc can use the much more efficient variant.
-rw-r--r--src/internal/libc.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/internal/libc.h b/src/internal/libc.h
index f88d846d..703d9853 100644
--- a/src/internal/libc.h
+++ b/src/internal/libc.h
@@ -21,7 +21,7 @@ struct __libc {
extern size_t __hwcap;
-#if !defined(__PIC__) || 100*__GNUC__+__GNUC_MINOR__ >= 303 || defined(__PCC__) || defined(__TINYC__)
+#if !defined(__PIC__) || (100*__GNUC__+__GNUC_MINOR__ >= 303 && !defined(__PCC__))
#ifdef __PIC__
#if __GNUC__ < 4