title: Why is the address of __libc_start_main always the same inside GDB even though ASLR is on?
body: <pre><code>Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6
  (gdb) r
  The program being debugged has been started already.
  Start it from the beginning? (y or n) y
  Starting program: /home/firstlove/projects/org-ioslide/example/a.out 
  
  Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6
  (gdb) r
  The program being debugged has been started already.
  Start it from the beginning? (y or n) y
  Starting program: /home/firstlove/projects/org-ioslide/example/a.out 
  
  Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6
  (gdb) Quit
  (gdb) quit
  A debugging session is active.
  
          Inferior 1 [process 16372] will be killed.
  
  Quit anyway? (y or n) y
  firstlove-pc% cat /proc/sys/kernel/randomize_va_space
  2
  </code></pre>
  
  <p>IIUC, ASLR should randomize all address, including the one of <code>libc.so</code>, but I found that the address of <code>__libc_start_main()</code> is always <code>0x00007ffff7de8060</code> on my Linux machine, why? What is wrong?</p>