[Bug c/57409] New: PIE (-fPIE -pie) prevents any malloc on Solaris 10 sparc
jullien at eligis dot com
gcc-bugzilla@gcc.gnu.org
Sat May 25 06:10:00 GMT 2013
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
More information about the Gcc-bugs
mailing list