On Thu, Feb 05, 2015 at 01:04:58AM +0000, Viktor Dukhovni wrote: > On Wed, Feb 04, 2015 at 01:12:16PM -0500, Wietse Venema wrote: > > > Very lighty-tested patch follows. No INSTALL documentation until > > this has been tested. > > > > Usage: $ make makefiles pie=yes ... > > Works on NETBSD6, with: > > pie=yes shared=yes dynamicmaps=yes > pie=yes shared=no dynamicmaps=no > > I also tested with a variant patch which uses "-fPIE" rather than > "-fPIC" to compile the object files when shared=no, because these > all end up in executables, rather than shared libraries. Rumour > has it that's the "more correct" thing to do in that case. This > also worked on NETBSD6. Slightly modified patch below (note the > " $CCARGS " to also match leading or trailing -fPI[CE])
MacOS/X (Mavericks) testing reveals that with Apple's llvm/clang, "shared=yes" yields "PIE" executables by default with no "-pie" option required. $ otool -hv bin/postconf bin/postconf: Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags MH_MAGIC_64 X86_64 ALL LIB64 EXECUTE 21 2120 DYLDLINK PIE In fact attempts to use an explicit "-pie" option yield warnings: clang: warning: argument unused during compilation: '-pie' this warning is fatal if one includes "-Werror" in CCARGS. It is possible, but redundant to include "-Wl,-pie" when building with shared=yes or when objects are compiled with "-fPIE", as in both cases the generated executable is automatically "PIE". Even with "shared=no" and "pie=no" I still get PIE executables. So we should perhaps just ignore the "pie" option with MacOS/X. Have not tried Yosetime yet... -- Viktor.