Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jan Kratochvil <jan.kratochvil@redhat.com>
To: Tom Tromey <tromey@redhat.com>, gdb-patches@sourceware.org
Subject: Re: [patch] Sanity check PIE displacement (like the PIC one)
Date: Thu, 11 Feb 2010 22:21:00 -0000	[thread overview]
Message-ID: <20100211222113.GA31323@host0.dyn.jankratochvil.net> (raw)
In-Reply-To: <20100211200506.GA24110@caradoc.them.org>

On Thu, 11 Feb 2010 21:05:11 +0100, Daniel Jacobowitz wrote:
> On Thu, Feb 11, 2010 at 12:43:00PM -0700, Tom Tromey wrote:
> > Jan> The current PIC message being printed "all the time" is:
> > Jan> warning: .dynamic section for "/lib64/librt-2.11.1.so" is not at the expected address
> > Jan> warning: difference appears to be caused by prelink, adjusting expectations
> > [...]
> > Jan> I do not find the current PIC message too useful (moreover without
> > Jan> any offset printed).  Therefore I am open to removing both the PIC
> > Jan> (and new PIE) messages when the offset is successfuly considered as
> > Jan> valid.
> > 
> > I don't find that PIC message particularly useful, either.
> > Is there some situation where that information is helpful?
> > If not, then IMO we should remove it.
> 
> Under what circumstances would you remove it?  I'd favor removing the
> former warning when the second one would be printed, but not otherwise.
> 
> The first message is a real life-saver.  It triggers when you have the
> wrong C library when loading a core file or using a sysroot.

solib-svr4.c LM_ADDR_CHECK
          if ((l_addr & align) == ((l_dynaddr - dynaddr) & align))
            {
A1:           warning (_(".dynamic section for \"%s\" "
                     "is not at the expected address"), so->so_name);
A2:           warning (_("difference appears to be caused by prelink, "
                         "adjusting expectations"));
            }
          else
B:          warning (_(".dynamic section for \"%s\" "
                       "is not at the expected address "
                       "(wrong library or version mismatch?)"), so->so_name);

I got lost in what specific messages got referenced by these mails.

The life-saver message is IMO "B" but the message(s) being discussed to be
removed is A1+A2.

Is the attached patch what everone agrees upon or have I not understood it?


No regressions on {x86_64,x86_64-m32,i686}-fedora12-linux-gnu.


Thanks,
Jan


gdb/
2010-02-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib-svr4.c: Include gdbcmd.h.
	(solib_svr4_debug): New.
	(LM_ADDR_CHECK): Print successful prelink adjustment only if
	SOLIB_SVR4_DEBUG.
	(_initialize_svr4_solib): Register solib_svr4_debug.

gdb/testsuite/
2010-02-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdb.base/prelink.exp (set debug solib-svr4 1): New.

--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -35,6 +35,7 @@
 #include "regcache.h"
 #include "gdbthread.h"
 #include "observer.h"
+#include "gdbcmd.h"
 
 #include "gdb_assert.h"
 
@@ -48,6 +49,9 @@
 #include "auxv.h"
 #include "exceptions.h"
 
+/* Flag which indicates whether internal debug messages should be printed.  */
+static int solib_svr4_debug;
+
 static struct link_map_offsets *svr4_fetch_link_map_offsets (void);
 static int svr4_have_link_map_offsets (void);
 static void svr4_relocate_main_executable (void);
@@ -222,10 +226,13 @@ LM_ADDR_CHECK (struct so_list *so, bfd *abfd)
 	    {
 	      l_addr = l_dynaddr - dynaddr;
 
-	      warning (_(".dynamic section for \"%s\" "
-		     "is not at the expected address"), so->so_name);
-	      warning (_("difference appears to be caused by prelink, "
-			 "adjusting expectations"));
+	      if (solib_svr4_debug)
+		{
+		  warning (_(".dynamic section for \"%s\" "
+			 "is not at the expected address"), so->so_name);
+		  warning (_("difference appears to be caused by prelink, "
+			     "adjusting expectations"));
+		}
 	    }
 	  else
 	    warning (_(".dynamic section for \"%s\" "
@@ -2033,4 +2040,14 @@ _initialize_svr4_solib (void)
   svr4_so_ops.lookup_lib_global_symbol = elf_lookup_lib_symbol;
   svr4_so_ops.same = svr4_same;
   svr4_so_ops.keep_data_in_core = svr4_keep_data_in_core;
+
+  /* Debug this file's internals.  */
+  add_setshow_zinteger_cmd ("solib-svr4", class_maintenance,
+			    &solib_svr4_debug, _("\
+Set internal debugging of shared library code for SVR4."), _("\
+Show internal debugging of shared library code for SVR4."), _("\
+When non-zero, SVR4 solib specific internal debugging is enabled."),
+			    NULL,
+			    NULL,
+			    &setdebuglist, &showdebuglist);
 }
--- a/gdb/testsuite/gdb.base/prelink.exp
+++ b/gdb/testsuite/gdb.base/prelink.exp
@@ -109,6 +109,9 @@ gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
 gdb_load ${binfile}
 
+# Print the "adjusting expectations" message.
+gdb_test "set debug solib-svr4 1"
+
 set test "prelink"
 global gdb_prompt
 gdb_test_multiple "core-file $objdir/$subdir/prelink.core" "$test" {


  parent reply	other threads:[~2010-02-11 22:21 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-01  1:20 Jan Kratochvil
2010-02-11 16:37 ` [ping] " Jan Kratochvil
2010-02-11 19:43 ` Tom Tromey
2010-02-11 20:05   ` Daniel Jacobowitz
2010-02-11 21:47     ` Tom Tromey
2010-02-11 22:21     ` Jan Kratochvil [this message]
2010-02-11 22:26       ` Daniel Jacobowitz
2010-02-11 23:16         ` Jan Kratochvil
2010-02-13 12:05         ` Jan Kratochvil
2010-02-13 20:14 ` [cancelled] " Jan Kratochvil

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100211222113.GA31323@host0.dyn.jankratochvil.net \
    --to=jan.kratochvil@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=tromey@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox