Author: glen                         Date: Sat Dec 15 17:12:25 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- from fc

---- Files affected:
SOURCES:
   module-init-tools-noescape.patch (NONE -> 1.1)  (NEW), 
module-init-tools-dump_modversions.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/module-init-tools-noescape.patch
diff -u /dev/null SOURCES/module-init-tools-noescape.patch:1.1
--- /dev/null   Sat Dec 15 18:12:25 2007
+++ SOURCES/module-init-tools-noescape.patch    Sat Dec 15 18:12:19 2007
@@ -0,0 +1,18 @@
+diff -urNp module-init-tools-3.3-pre11_orig/depmod.c 
module-init-tools-3.3-pre11/depmod.c
+--- module-init-tools-3.3-pre11_orig/depmod.c  2007-03-22 12:36:02.000000000 
-0400
++++ module-init-tools-3.3-pre11/depmod.c       2007-03-22 15:07:15.000000000 
-0400
+@@ -701,13 +701,8 @@ static void filename2modname(char *modna
+       else
+               afterslash++;
+ 
+-      /* Convert to underscores, stop at first . */
+-      for (i = 0; afterslash[i] && afterslash[i] != '.'; i++) {
+-              if (afterslash[i] == '-')
+-                      modname[i] = '_';
+-              else
++      for (i = 0; afterslash[i] && afterslash[i] != '.'; i++)
+                       modname[i] = afterslash[i];
+-      }
+       modname[i] = '\0';
+ }
+ 

================================================================
Index: SOURCES/module-init-tools-dump_modversions.patch
diff -u /dev/null SOURCES/module-init-tools-dump_modversions.patch:1.1
--- /dev/null   Sat Dec 15 18:12:25 2007
+++ SOURCES/module-init-tools-dump_modversions.patch    Sat Dec 15 18:12:20 2007
@@ -0,0 +1,109 @@
+diff -urNp module-init-tools-3.3-pre11_orig/modprobe.c 
module-init-tools-3.3-pre11/modprobe.c
+--- module-init-tools-3.3-pre11_orig/modprobe.c        2007-03-22 
12:36:02.000000000 -0400
++++ module-init-tools-3.3-pre11/modprobe.c     2007-03-22 15:08:52.000000000 
-0400
+@@ -976,6 +976,67 @@ nonexistent_module:
+       goto remove_rest;
+ }
+ 
++struct modver32_info
++{
++       uint32_t crc;
++       char name[64 - sizeof(uint32_t)];
++};
++
++struct modver64_info
++{
++       uint64_t crc;
++       char name[64 - sizeof(uint64_t)];
++};
++
++const char *skip_dot(const char *str)
++{
++       /* For our purposes, .foo matches foo.  PPC64 needs this. */
++       if (str && str[0] == '.')
++               return str + 1;
++       return str;
++}
++
++void dump_modversions(const char *filename, errfn_t error)
++{
++       unsigned long size, secsize;
++       void *file = grab_file(filename, &size);
++       struct modver32_info *info32;
++       struct modver64_info *info64;
++       int n;
++
++       if (!file) {
++               error("%s: %s\n", filename, strerror(errno));
++               return;
++       }
++       switch (elf_ident(file, size)) {
++       case ELFCLASS32:
++               info32 = get_section32(file, size, "__versions", &secsize);
++               if (!info32)
++                       return;  /* Does not seem to be a kernel module */
++               if (secsize % sizeof(struct modver32_info))
++                       error("Wrong section size in %s\n", filename);
++               for (n = 0; n < secsize / sizeof(struct modver32_info); n++)
++                       printf("0x%08lx\t%s\n", (unsigned long)
++                              info32[n].crc, skip_dot(info32[n].name));
++               break;
++
++       case ELFCLASS64:
++               info64 = get_section64(file, size, "__versions", &secsize);
++               if (!info64)
++                       return;  /* Does not seem to be a kernel module */
++               if (secsize % sizeof(struct modver64_info))
++                       error("Wrong section size in %s\n", filename);
++               for (n = 0; n < secsize / sizeof(struct modver64_info); n++)
++                       printf("0x%08llx\t%s\n", (unsigned long long)
++                              info64[n].crc, skip_dot(info64[n].name));
++               break;
++
++       default:
++               error("%s: ELF class not recognized\n", filename);
++       }
++}
++
++
+ /* Does path contain directory(s) subpath? */
+ static int type_matches(const char *path, const char *subpath)
+ {
+@@ -1384,6 +1445,7 @@ static struct option options[] = { { "ve
+                                  { "set-version", 1, NULL, 'S' },
+                                  { "show-depends", 0, NULL, 'D' },
+                                  { "first-time", 0, NULL, 3 },
++                                 { "dump-modversions", 0, NULL, 4 },
+                                  { "use-blacklist", 0, NULL, 'b' },
+                                  { NULL, 0, NULL, 0 } };
+ 
+@@ -1421,6 +1483,7 @@ int main(int argc, char *argv[])
+       int strip_modversion = 0;
+       int ignore_proc = 0;
+       int first_time = 0;
++      int dump_modver = 0;
+       int use_blacklist = 0;
+       unsigned int i, num_modules;
+       char *type = NULL;
+@@ -1537,6 +1600,9 @@ int main(int argc, char *argv[])
+               case 3:
+                       first_time = 1;
+                       break;
++              case 4:
++                      dump_modver = 1;
++                      break;
+               default:
+                       print_usage(argv[0]);
+               }
+@@ -1602,6 +1668,11 @@ int main(int argc, char *argv[])
+               LIST_HEAD(list);
+               char *modulearg = argv[optind + i];
+ 
++              if (dump_modver) {
++                      dump_modversions(modulearg, error);
++                      continue;
++              }
++
+               /* Convert name we are looking for */
+               underscores(modulearg);
+ 
================================================================
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to