gdb/gdbserver/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 5 Mar 2012 17:09:37 +0000 (17:09 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 5 Mar 2012 17:09:37 +0000 (17:09 +0000)
* linux-low.c (get_dynamic): Don't warn when PT_PHDR isn't found.
New comment why.

gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-low.c

index db1fa925c4df77c1b2d3081cebe82cf9461efc39..e1005ee96b520668e8ad6922cac067d5db88e48c 100644 (file)
@@ -1,3 +1,9 @@
+2012-03-05  Pedro Alves  <palves@redhat.com>
+           Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       * linux-low.c (get_dynamic): Don't warn when PT_PHDR isn't found.
+       New comment why.
+
 2012-03-03  Yao Qi  <yao@codesourcery.com>
 
        * tracepoint.c (tracepoint_look_up_symbols): Update call to
index f062575b64abf918981e8aaee96fd410c60150ad..4f8ec6b6124abc27881d2c95f3cdc7862d57d6bc 100644 (file)
@@ -5250,7 +5250,16 @@ get_dynamic (const int pid, const int is_elf64)
 
   if (relocation == -1)
     {
-      warning ("Unexpected missing PT_PHDR");
+      /* PT_PHDR is optional, but necessary for PIE in general.  Fortunately
+        any real world executables, including PIE executables, have always
+        PT_PHDR present.  PT_PHDR is not present in some shared libraries or
+        in fpc (Free Pascal 2.4) binaries but neither of those have a need for
+        or present DT_DEBUG anyway (fpc binaries are statically linked).
+
+        Therefore if there exists DT_DEBUG there is always also PT_PHDR.
+
+        GDB could find RELOCATION also from AT_ENTRY - e_entry.  */
+
       return 0;
     }