http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57409
Bug ID: 57409 Summary: PIE (-fPIE -pie) prevents any malloc on Solaris 10 sparc Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: jullien at eligis dot com Trying to build recent sudo versions which now uses PIE I got core dumps or does memory failures since gcc 4.7. It appears the culprit is PIE. Using 4.8 and all recent gnu tools compiled with: ../configure \ --with-gnu-as --with-as=/usr/local/bin/as \ --with-gnu-ld --with-ld=/usr/local/bin/ld \ --enable-shared \ --disable-nls \ --enable-languages=c,c++ on good old UltraSparc 10 having 512Mb of mem gives me the same error using this simple test: #include <stdlib.h> #include <stdio.h> int main() { return printf("malloc %p\n", malloc(100)); } $ gcc -o foo -fPIE -pie foo.c && ./foo malloc 0 $ gcc -o foo foo.c && ./foo malloc 20918 here is the result of -v on $ gcc -o foo -v -fPIE -pie foo.c Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/sparc-sun-solaris2.10/4.8.0/lto-wrapper Target: sparc-sun-solaris2.10 Configured with: ../configure --with-gnu-as --with-as=/usr/local/bin/as --with-gnu-ld --with-ld=/usr/local/bin/ld --enable-shared --disable-nls --enable-languages=c,c++ Thread model: posix gcc version 4.8.0 (GCC) COLLECT_GCC_OPTIONS='-o' 'foo' '-v' '-fPIE' '-pie' '-mcpu=v9' /usr/local/libexec/gcc/sparc-sun-solaris2.10/4.8.0/cc1 -quiet -v -D__sparcv8 foo.c -quiet -dumpbase foo.c -mcpu=v9 -auxbase foo -version -fPIE -o /var/tmp//ccqprUCd.s GNU C (GCC) version 4.8.0 (sparc-sun-solaris2.10) compiled by GNU C version 4.8.0, GMP version 5.1.1, MPFR version 3.1.2, MPC version 1.0.1 warning: GMP header version 5.1.1 differs from library version 5.1.2. GGC heuristics: --param ggc-min-expand=65 --param ggc-min-heapsize=65536 ignoring nonexistent directory "/usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/../../../../sparc-sun-solaris2.10/include" #include "..." search starts here: #include <...> search starts here: /usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/include /usr/local/include /usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/include-fixed /usr/include End of search list. GNU C (GCC) version 4.8.0 (sparc-sun-solaris2.10) compiled by GNU C version 4.8.0, GMP version 5.1.1, MPFR version 3.1.2, MPC version 1.0.1 warning: GMP header version 5.1.1 differs from library version 5.1.2. GGC heuristics: --param ggc-min-expand=65 --param ggc-min-heapsize=65536 Compiler executable checksum: e14fe10990fa31427ec25922a737dd32 COLLECT_GCC_OPTIONS='-o' 'foo' '-v' '-fPIE' '-pie' '-mcpu=v9' /usr/local/bin/as -v -V -Qy -s -xarch=v8plus -32 -K PIC -o /var/tmp//cc8jtkmf.o /var/tmp//ccqprUCd.s GNU assembler version 2.23.2 (sparc-sun-solaris2.10) using BFD version (GNU Binutils) 2.23.2 COMPILER_PATH=/usr/local/libexec/gcc/sparc-sun-solaris2.10/4.8.0/:/usr/local/libexec/gcc/sparc-sun-solaris2.10/4.8.0/:/usr/local/libexec/gcc/sparc-sun-solaris2.10/:/usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/:/usr/local/lib/gcc/sparc-sun-solaris2.10/:/usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/../../../../sparc-sun-solaris2.10/bin/:/usr/ccs/bin/ LIBRARY_PATH=/usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/:/usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/../../../../sparc-sun-solaris2.10/lib/:/usr/ccs/lib/:/usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-o' 'foo' '-v' '-fPIE' '-pie' '-mcpu=v9' /usr/local/libexec/gcc/sparc-sun-solaris2.10/4.8.0/collect2 -V -m elf32_sparc_sol2 -Y P,/usr/ccs/lib:/lib:/usr/lib -Qy -pie -o foo /usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/crt1.o /usr/lib/crti.o /usr/ccs/lib/values-Xa.o /usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/crtbegin.o -L/usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0 -L/usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/../../../../sparc-sun-solaris2.10/lib -L/usr/ccs/lib -L/usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/../../.. /var/tmp//cc8jtkmf.o -lgcc -lgcc_eh -lc -lgcc -lgcc_eh -lc /usr/local/lib/gcc/sparc-sun-solaris2.10/4.8.0/crtend.o /usr/lib/crtn.o GNU ld (GNU Binutils) 2.23.2 Supported emulations: elf32_sparc_sol2 elf32_sparc elf64_sparc_sol2 elf64_sparc Is there is something wrong on the way I compile gcc on solaris sparc? Except for PIE, gcc 4.8 compiled ROOTB many big GNU and non-GNU projects without error. Tia for the time you may spend on this report. Christian