Add notes on auxv_t and statically-linked executables
authorDavid Bartley <dtbartle@csclub.uwaterloo.ca>
Wed, 13 Aug 2008 07:45:37 +0000 (03:45 -0400)
committerDavid Bartley <dtbartle@csclub.uwaterloo.ca>
Wed, 13 Aug 2008 07:59:18 +0000 (03:59 -0400)
NOTES.opensolaris

index c4b493f..f42c3b0 100644 (file)
@@ -1,3 +1,17 @@
+auxiliary vector (auxv_t):
+
+  Proper OpenSolaris does not support statically-linked executables (i.e. via
+  gcc -static). However, glibc does, but with certain restrictions. The kernel
+  only builds the auxv_t if the elf file is not of type ET_EXEC or if the
+  PT_INTERP program header exists. This means that dynamically-linked
+  executables and libaries get an auxv_t while statically-linked executables
+  don't. This means that statically-linked executables won't see PT_TLS, which
+  is needed for __thread support. We can test for the SHARED macro for libc
+  library code, but in general, __thread will not work.
+
+  In order to fix this, it should be a matter of changing the kernel to
+  unconditionally supply the auxv_t.
+
 scheduling:
 
   The OpenSolaris kernel allows for loadable schedule classes. A scheduling