)]}'
{
  "commit": "3f6e968ef4e1d8d93d8a8505461b0e50a9e97ad8",
  "tree": "ebce859414e81a677bb28b171673a47a5f8fdbfe",
  "parents": [
    "464e85eb0e63096bd52e4c3e2a6fb8357fb95828"
  ],
  "author": {
    "name": "Steven Rostedt",
    "email": "rostedt@goodmis.org",
    "time": "Wed Aug 05 22:00:14 2009 -0400"
  },
  "committer": {
    "name": "Steven Rostedt",
    "email": "rostedt@goodmis.org",
    "time": "Wed Aug 05 22:45:07 2009 -0400"
  },
  "message": "tracing: do not use functions starting with .L in recordmcount.pl\n\nOn Wed, 5 Aug 2009, Ingo Molnar wrote:\n\u003e * Dave Airlie \u003cairlied@gmail.com\u003e wrote:\n\u003e\n\u003e \u003e Hey,\n\u003e \u003e\n\u003e \u003e So I spent 3-4 hrs today (I\u0027m stupid yes) tracking down a .o\n\u003e \u003e breakage by blaming rawhide gcc/binutils as I was using make\n\u003e \u003e V\u003d1and seeing only the compiler chain running,\n\u003e\n\u003e Hm, is this that powerpc related build bug you just reported?\n\nWell we tracked it down and it is powerpc64 specific.\n\nSeems that in drivers/hwmon/lm93.c there\u0027s a function called:\n\n   LM93_IN_FROM_REG()\n\nBut PPC64 has function descriptors and the real function names (the ones\nyou see in objdump) start with a \u0027.\u0027. Thus this in objdump you have:\n\n Disassembly of section .text:\n\n 0000000000000000 \u003c.LM93_IN_FROM_REG\u003e:\n       0:       7c 08 02 a6     mflr    r0\n       4:       fb 81 ff e0     std     r28,-32(r1)\n\nThe function name used is .LM93_IN_FROM_REG. But gcc considers symbols\nthat start with \".L\" as a special symbol that is used inside the assembly\nstage.\n\nThe nm passed into recordmcount uses the --synthetic option which shows\nthe \".L\" symbols (my runs outside of the build did not include the\n--synthetic option, so my older patch worked). We see the function as a\nlocal.\n\nNow to capture all the locations that use \"mcount\" we need to have a\nreference to link into the object file a list of mcount callers. We need a\nreference that will not disappear. We try to use a global function and if\nthat does not work, we use a local function as a reference. But to relink\nthe section back into the object, we need to make it global. In this case,\nwe run objcopy using --globalize-symbol and --localize-symbol to convert\nthe symbol into a global symbol, link the mcount list, then convert it\nback to a local symbol.\n\nThis works great except for this case. .L* symbols can not be converted\ninto a global symbol, and the mcount section referencing it will remain\nunresolved.\n\nReported-by: Dave Airlie \u003cairlied@gmail.com\u003e\nLKML-Reference: \u003calpine.DEB.2.00.0908052011590.5010@gandalf.stny.rr.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d29baa2e063ac04ca7422f132207cf329b7e47c8",
      "old_mode": 33261,
      "old_path": "scripts/recordmcount.pl",
      "new_id": "4889c44d71b5d3e5907cb886577f81aea63dab8c",
      "new_mode": 33261,
      "new_path": "scripts/recordmcount.pl"
    }
  ]
}
