File: ld_bind_now.h

package info (click to toggle)
gcl 2.6.14-21
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 60,864 kB
  • sloc: ansic: 177,407; lisp: 151,509; asm: 128,169; sh: 22,510; cpp: 11,923; tcl: 3,181; perl: 2,930; makefile: 2,360; sed: 334; yacc: 226; lex: 95; awk: 30; fortran: 24; csh: 23
file content (27 lines) | stat: -rw-r--r-- 425 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <sys/personality.h>
#include <syscall.h>
#include <unistd.h>
#include <alloca.h>
#include <errno.h>


if (!getenv("LD_BIND_NOW")) {

  int i;
  char **n;

  for (i=0;envp[i];i++);
  n=alloca((i+2)*sizeof(*n));
  n[i+1]=0;
  n[i--]="LD_BIND_NOW=t";
  for (;i>=0;i--)
    n[i]=envp[i];
#ifdef GCL_GPROF
  gprof_cleanup();
#endif
  errno=0;
  execve(*argv,argv,n);
  printf("execve failure %d\n",errno);
  exit(-1);

}