Changed startup message to give information about skin and core separately.
Added "version" and "copyright_author" fields for skins to supply.

Now startup message looks something like this:

==12698== cachegrind, an I1/D1/L2 cache profiler for x86-linux.
==12698== Copyright (C) 2002, and GNU GPL'd, by Nicholas Nethercote.
==12698== Built with valgrind-HEAD, a program execution monitor.
==12698== Copyright (C) 2000-2002, and GNU GPL'd, by Julian Seward.
==12698== Estimated CPU clock rate is 1422 MHz
==12698== For more details, rerun with: -v

The skin can specify a version number, but the skins that will be distributed
with Valgrind don't.

Also changed "x86 GNU/Linux" to the wicked "x86-linux" at Julian's request.

Updated default regression test filter to handle this new startup message.

----

Also moved the skin's name, description, etc., fields out of VG_(needs) into a
new struct VG_(details), since they are logically quite different to the needs.
Did a little code formatting, etc., for this.  Updated skin docs
correspondingly, too.

Also renamed the need `run_libc_freeres' --> `libc_freeres' so it's a noun
phrase rather than a verb phrase.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1172 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/vg_main.c b/coregrind/vg_main.c
index 6c628c4..cb5891e 100644
--- a/coregrind/vg_main.c
+++ b/coregrind/vg_main.c
@@ -438,25 +438,27 @@
    ------------------------------------------------------------------ */
 
 /* Init with default values. */
+VgDetails VG_(details) = {
+   .name             = NULL,
+   .version          = NULL,
+   .description      = NULL,
+   .copyright_author = NULL,
+   .bug_reports_to   = NULL,
+};
+
 VgNeeds VG_(needs) = {
-   .name                    = NULL,
-   .description             = NULL,
-   .bug_reports_to          = NULL,
-
-   .core_errors             = False,
-   .skin_errors             = False,
-   .run_libc_freeres        = False,
-
-   .sizeof_shadow_block     = 0,
-
-   .basic_block_discards    = False,
-   .shadow_regs             = False,
-   .command_line_options    = False,
-   .client_requests         = False,
-   .extended_UCode          = False,
-   .syscall_wrapper         = False,
-   .alternative_free        = False,
-   .sanity_checks           = False,
+   .core_errors          = False,
+   .skin_errors          = False,
+   .libc_freeres         = False,
+   .sizeof_shadow_block  = 0,
+   .basic_block_discards = False,
+   .shadow_regs          = False,
+   .command_line_options = False,
+   .client_requests      = False,
+   .extended_UCode       = False,
+   .syscall_wrapper      = False,
+   .alternative_free     = False,
+   .sanity_checks        = False,
 };
 
 VgTrackEvents VG_(track_events) = {
@@ -470,6 +472,7 @@
    .new_mem_mmap          = NULL,
 
    .copy_mem_heap         = NULL,
+   .copy_mem_remap        = NULL,
    .change_mem_mprotect   = NULL,
 
    .ban_mem_heap          = NULL,
@@ -490,6 +493,9 @@
    .pre_mem_write         = NULL,
    .post_mem_write        = NULL,
 
+   /* Scheduler events */
+   .thread_run            = NULL,
+
    /* Mutex events */
    .post_mutex_lock       = NULL,
    .post_mutex_unlock     = NULL,
@@ -504,9 +510,11 @@
       VG_(skin_panic)("Uninitialised needs field\n");       \
    }
    
-   CHECK_NOT(VG_(needs).name,           NULL);
-   CHECK_NOT(VG_(needs).description,    NULL);
-   CHECK_NOT(VG_(needs).bug_reports_to, NULL);
+   CHECK_NOT(VG_(details).name,             NULL);
+   /* Nb: .version can be NULL */
+   CHECK_NOT(VG_(details).description,      NULL);
+   CHECK_NOT(VG_(details).copyright_author, NULL);
+   CHECK_NOT(VG_(details).bug_reports_to,   NULL);
 
 #undef CHECK_NOT
 #undef INVALID_Bool
@@ -644,9 +652,12 @@
 "  Valgrind is Copyright (C) 2000-2002 Julian Seward\n"
 "  and licensed under the GNU General Public License, version 2.\n"
 "  Bug reports, feedback, admiration, abuse, etc, to: %s.\n"
+"\n"
+"  Skins are copyright and licensed by their authors.  See each\n"
+"  skin's start-up message for more information.\n"
 "\n";
 
-   VG_(printf)(usage1, VG_(needs).name);
+   VG_(printf)(usage1, VG_(details).name);
    /* Don't print skin string directly for security, ha! */
    if (VG_(needs).command_line_options)
       VG_(printf)("%s", SK_(usage)());
@@ -998,13 +1009,23 @@
    VG_(clo_logfile_fd) = eventually_logfile_fd;
 
    if (VG_(clo_verbosity > 0)) {
-      VG_(message)(Vg_UserMsg, "%s-%s, %s for x86 GNU/Linux.",
-         VG_(needs).name, VERSION, VG_(needs).description);
-   }
+      /* Skin details */
+      VG_(message)(Vg_UserMsg, "%s%s%s, %s for x86-linux.",
+                   VG_(details).name, 
+                   NULL == VG_(details).version ?        "" : "-",
+                   NULL == VG_(details).version 
+                      ? (Char*)"" : VG_(details).version,
+                   VG_(details).description);
+      VG_(message)(Vg_UserMsg, "%s", VG_(details).copyright_author);
 
-   if (VG_(clo_verbosity > 0))
+      /* Core details */
+      VG_(message)(Vg_UserMsg,
+                   "Built with valgrind-%s, a program execution monitor.",
+                   VERSION);
       VG_(message)(Vg_UserMsg, 
                    "Copyright (C) 2000-2002, and GNU GPL'd, by Julian Seward.");
+   }
+
    if (VG_(clo_verbosity) > 1) {
       VG_(message)(Vg_UserMsg, "Startup, with flags:");
       for (i = 0; i < argc; i++) {
@@ -1181,7 +1202,7 @@
         and turn on/off 'command_line_options' need
       - init_memory() (to setup memory event trackers).
     */
-   SK_(pre_clo_init) ( & VG_(needs), & VG_(track_events) );
+   SK_(pre_clo_init) ( & VG_(details), & VG_(needs), & VG_(track_events) );
    sanity_check_needs();
 
    /* Set up baseBlock offsets and copy the saved machine's state into it. */