Project

General

Profile

Actions

Bug #163

open

PIE binaries cannot allocate memory

Added by Igor Pashev over 10 years ago. Updated over 6 years ago.

Status:
New
Priority:
Low
Assignee:
-
Start date:
2013-12-01
Due date:
% Done:

0%

Estimated time:

Description

After this commit illumos-packaging:0e39b90eab160820ae938fcb3ea27f056c482ef5 it is allowed to build PIE binaries, but such binaries cannot allocate memory. It probably because of wrong address of _END.

$ cat malloc-pie.c
#include <stdlib.h>

int
main (int argc, char *argv[])
{
  return malloc (1024) == NULL;
}

$ gcc -pie -fpie malloc-pie.c -o malloc-pie  
$ ./malloc-pie ; echo $?
1

$ gcc malloc-pie.c -o malloc-no-pie
$ ./malloc-no-pie ; echo $?
0

$ truss -o pie.log ./malloc-pie
$ grep brk pie.log 
brk(0xFFFFFD7FFF400E30)                            Err#12 ENOMEM

$ truss -o no-pie.log ./malloc-no-pie
$ grep brk no-pie.log 
brk(0x00600D50)                                    = 0
brk(0x00604D50)                                    = 0

Actions

Also available in: Atom PDF