From e237a7e2c51159a40c2a623a379c2086610b5e55 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Mon, 5 Mar 2012 17:09:37 +0000 Subject: [PATCH] gdb/gdbserver/ * linux-low.c (get_dynamic): Don't warn when PT_PHDR isn't found. New comment why. --- gdb/gdbserver/ChangeLog | 6 ++++++ gdb/gdbserver/linux-low.c | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index db1fa925c4d..e1005ee96b5 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,9 @@ +2012-03-05 Pedro Alves + Jan Kratochvil + + * linux-low.c (get_dynamic): Don't warn when PT_PHDR isn't found. + New comment why. + 2012-03-03 Yao Qi * tracepoint.c (tracepoint_look_up_symbols): Update call to diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index f062575b64a..4f8ec6b6124 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -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; } -- 2.30.2