[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