)]}'
{
  "log": [
    {
      "commit": "2c5925d6b7fedc8f1c325f4f85451f505ec69aca",
      "tree": "4b27c58e2487842385e9a736331d97a3c3a9afee",
      "parents": [
        "b06fcd6c83c231f51a86448bb33c4cd717fefee8"
      ],
      "author": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Sat Oct 08 01:18:35 2011 +0200"
      },
      "committer": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Tue Oct 11 12:00:39 2011 +0200"
      },
      "message": "genksyms: Do not expand internal types\n\nConsider structures, unions and enums defined in the source file as\ninternal and do not expand them. This way, changes to e.g. struct\nserial_private in drivers/tty/serial/8250_pci.c will not affect the\nchecksum of the pciserial_* exports.\n"
    },
    {
      "commit": "e37ddb82500393cb417c3ab0fe0726d9a8652372",
      "tree": "6ecc94992cb5affad4fe438d9b586a61b803f928",
      "parents": [
        "01762c4ec5f6f62c550304b9c70e824293cefdd0"
      ],
      "author": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Thu Feb 03 23:57:09 2011 +0100"
      },
      "committer": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Thu Mar 17 15:13:56 2011 +0100"
      },
      "message": "genksyms: Track changes to enum constants\n\nEnum constants can be used as array sizes; if the enum itself does not\nappear in the symbol expansion, a change in the enum constant will go\nunnoticed. Example patch that changes the ABI but does not change the\nchecksum with current genksyms:\n\n| enum e {\n|\tE1,\n|\tE2,\n|+\tE3,\n|\tE_MAX\n| };\n|\n| struct s {\n|\tint a[E_MAX];\n| }\n|\n| int f(struct s *s) { ... }\n| EXPORT_SYMBOL(f)\n\nTherefore, remember the value of each enum constant and\nexpand each occurence to \u003cconstant\u003e \u003cvalue\u003e. The value is not actually\ncomputed, but instead an expression in the form\n(last explicitly assigned value) + N\nis used. This avoids having to parse and semantically understand whole\nof C.\n\nNote: The changes won\u0027t take effect until the lexer and parser are\nrebuilt by the next patch.\n\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\nAcked-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "01762c4ec5f6f62c550304b9c70e824293cefdd0",
      "tree": "4a457cec48321f5b591966e56ddaea33733df5cc",
      "parents": [
        "68eb8563a1adf27fae18dde4c95fb796c17563df"
      ],
      "author": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Tue Feb 15 15:11:36 2011 +0100"
      },
      "committer": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Thu Mar 17 15:13:55 2011 +0100"
      },
      "message": "genksyms: simplify usage of find_symbol()\n\nAllow searching for symbols of an exact type. The lexer does this and a\nsubsequent patch will add one more usage.\n\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\nAcked-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "5dae9a550a7478c8d6a7da2336d3ceeebf90ab84",
      "tree": "15936b08138ed2f8abfee946c3f2c31b76a4e491",
      "parents": [
        "64e6c1e12372840e7caf8e25325a9e9c5fd370e6"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Mon Dec 01 14:21:03 2008 -0800"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Wed Dec 03 22:33:12 2008 +0100"
      },
      "message": "genksyms: allow to ignore symbol checksum changes\n\nThis adds an \"override\" keyword for use in *.symvers / *.symref files.\nWhen a symbol is overridden, the symbol\u0027s old definition will be used for\ncomputing checksums instead of the new one, preserving the previous\nchecksum.  (Genksyms will still warn about the change.)\n\nThis is meant to allow distributions to hide minor actual as well as fake\nABI changes.  (For example, when extra type information becomes available\nbecause additional headers are included, this may change checksums even\nthough none of the types used have actully changed.)\n\nThis approach also allows to get rid of \"#ifdef __GENKSYMS__\" hacks in the\ncode, which are currently used in some vendor kernels to work around\nchecksum changes.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "64e6c1e12372840e7caf8e25325a9e9c5fd370e6",
      "tree": "aa47aa4e170dd4bb39c99cc7356231e2c61d64d2",
      "parents": [
        "a680eedc6c621c75695c68198533fc3c98f4053b"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Mon Dec 01 14:21:01 2008 -0800"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Wed Dec 03 22:33:11 2008 +0100"
      },
      "message": "genksyms: track symbol checksum changes\n\nSometimes it is preferable to avoid changes of exported symbol checksums\n(to avoid breaking externally provided modules).  When a checksum change\noccurs, it can be hard to figure out what caused this change: underlying\ntypes may have changed, or additional type information may simply have\nbecome available at the point where a symbol is exported.\n\nAdd a new --reference option to genksyms which allows it to report why\nchecksums change, based on the type information dumps it creates with the\n--dump-types flag.  Genksyms will read in such a dump from a previous run,\nand report which symbols have changed (and why).\n\nThe behavior can be controlled for an entire build as follows: If\nKBUILD_SYMTYPES is set, genksyms uses --dump-types to produce *.symtypes\ndump files.  If any *.symref files exist, those will be used as the\nreference to check against.  If KBUILD_PRESERVE is set, checksum changes\nwill fail the build.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "15fde6751886fd972a64ed65ba49db309919c504",
      "tree": "513c1eec2135f65ba0d980627346f7c07ad2b897",
      "parents": [
        "3041e47e8b08d51188b2cbdbd9c1e6f43314c8f1"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Tue May 09 20:37:30 2006 +0200"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@mars.ravnborg.org",
        "time": "Sat Jun 24 23:42:46 2006 +0200"
      },
      "message": "kbuild: support for %.symtypes files\n\nHere is a patch that adds a new -T option to genksyms for generating dumps of\nthe type definition that makes up the symbol version hashes. This allows to\ntrace modversion changes back to what caused them. The dump format is the\nname of the type defined, followed by its definition (which is almost C):\n\n  s#list_head struct list_head { s#list_head * next , * prev ; }\n\nThe s#, u#, e#, and t# prefixes stand for struct, union, enum, and typedef.\nThe exported symbols do not define types, and thus do not have an x# prefix:\n\n  nfs4_acl_get_whotype int nfs4_acl_get_whotype ( char * , t#u32 )\n\nThe symbol type defintion of a single file can be generated with:\n\n  make fs/jbd/journal.symtypes\n\nIf KBUILD_SYMTYPES is defined, all the *.symtypes of all object files that\nexport symbols are generated.\n\nThe single *.symtypes files can be combined into a single file after a kernel\nbuild with a script like the following:\n\nfor f in $(find -name \u0027*.symtypes\u0027 | sort); do\n    f\u003d${f#./}\n    echo \"/* ${f%.symtypes}.o */\"\n    cat $f\n    echo\ndone \\\n| sed -e \u0027\\:UNKNOWN:d\u0027 \\\n      -e \u0027s:[,;] }:}:g\u0027 \\\n      -e \u0027s:\\([[({]\\) :\\1:g\u0027 \\\n      -e \u0027s: \\([])},;]\\):\\1:g\u0027 \\\n      -e \u0027s: $::\u0027 \\\n      $f \\\n| awk \u0027\n/^.#/   { if (defined[$1] \u003d\u003d $0) {\n            print $1\n            next\n          }\n          defined[$1] \u003d $0\n        }\n        { print }\n\u0027\n\nWhen the kernel ABI changes, diffing individual *.symtype files, or the\ncombined files, against each other will show which symbol changes caused the\nABI changes. This can save a tremendous amount of time.\n\nDump the types that make up modversions\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "ce560686947fd50b30eaf42045554797f53949dd",
      "tree": "ae04b6c366eec6c6ff9726a8034ffd61c269ce1b",
      "parents": [
        "78c041530ac2e65c9290137bfe3004340e0840d2"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@mars.ravnborg.org",
        "time": "Sun Mar 12 23:26:29 2006 +0100"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@mars.ravnborg.org",
        "time": "Sun Mar 12 23:26:29 2006 +0100"
      },
      "message": "kbuild: clean-up genksyms\n\no remove all inlines\no declare everything static which is only used by genksyms.c\no delete unused functions\no delete unused variables\no delete unused stuff in genksyms.h\no properly ident genksyms.h\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
