)]}'
{
  "commit": "c912005af77c71461cdcc91cb23e7a2f6872d5b7",
  "tree": "c2b4e0060718a3193294ed2eb1831bff2dab9bc4",
  "parents": [
    "ebe00173e32ce714bbc8e0fb877dc6eb5033ad6f"
  ],
  "author": {
    "name": "Richard Allen",
    "email": "rsaxvc@gmail.com",
    "time": "Sat Mar 08 16:44:18 2025 +0800"
  },
  "committer": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Fri Mar 14 07:03:52 2025 -0700"
  },
  "message": "gprof: only process line numbers for intersection of vmas and histograms\n\nSome programs like RTOS firmware may have a large number of symbols.\nThe profile information in the profile data file includes histogram\nrecords, which capture low PC and high PC of program execution.  If all\nhistogram records come in the profile data file before any call-graph\nrecords and basic-block records, we can look up only the line numbers\nwithin low PC and high PC in histogram records, which reduces processing\ntime for such a firmware from ~2 minutes to ~2 seconds.\n\nAdd symbol table access function, get_symtab, get_symtab_direct and\nset_symtab to delay loading the symbol table until its first use.\n\n\t* aarch64.c (aarch64_find_call): Call get_symtab to get the\n\tsymbol table pointer\n\t* alpha.c (alpha_find_call): Likewise.\n\t* basic_blocks.c (bb_read_rec): Likewise.\n\t(bb_write_blocks): Likewise.\n\t(print_exec_counts): Likewise.\n\t(print_annotated_source): Likewise.\n\t* call_graph.c (cg_tally): Likewise.\n\t(cg_write_arcs): Likewise.\n\t* cg_arcs.c (cycle_link): Likewise.\n\t(propagate_flags): Likewise.\n\t(cg_assemble): Likewise.\n\t* cg_print.c (cg_print): Likewise.\n\t(cg_print_index): Likewise.\n\t(cg_print_function_ordering): Likewise.\n\t* corefile.c: Include \"gmon_io.h\".\n\t(core_create_syms_from): Call get_symtab_direct to get the\n\tsymbol table pointer.\n\t(core_create_function_syms): Likewise.\n\t(core_create_line_syms): Likewise.  If all histogram records\n\tcome in the profile data file before any call-graph records and\n\tbasic-block records, we can look up only the line numbers within\n\tlow PC and high PC in histogram records.\n\t* gmon_io.c (gmon_histograms_first): New.\n\t(gmon_out_read): Set gmon_histograms_first to true if all\n\thistogram records come first.\n\t(gmon_out_write): Call get_symtab to get the symbol table\n\tpointer.\n\t* hist.c (scale_and_align_entries): Likewise.\n\t(hist_assign_samples_1): Likewise.\n\t(hist_print): Likewise.\n\t* i386.c (i386_find_call): Likewise.\n\t* mips.c (mips_find_call): Likewise.\n\t* sparc.c (sparc_find_call): Likewise.\n\t* sym_ids.c (sym_id_parse): Likewise.\n\t* vax.c (vax_find_call): Likewise.\n\t* gmon_io.h (gmon_histograms_first): New.\n\t* gprof.c (man): Don\u0027t create profile info.\n\t(symtab_init): New.\n\t* gprof.h (symtab_init): New.\n\t* symtab.c (symtab): Changed to static.\n\t(get_symtab_direct): New.\n\t(get_symtab): Likewise.\n\t(set_symtab): Likewise.\n\t* symtab.h (symtab): Removed.\n\t(get_symtab_direct): New.\n\t(get_symtab): Likewise.\n\t(set_symtab): Likewise.\n\nSigned-off-by: Richard Allen \u003crsaxvc@gmail.com\u003e\nCo-Authored-By: H.J. Lu \u003chjl.tools@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3ab6067dbac9e4e73ad52955731716628d00d9b1",
      "old_mode": 33188,
      "old_path": "gprof/aarch64.c",
      "new_id": "0365930961a70ab963362430d1514dabc1b8a9d1",
      "new_mode": 33188,
      "new_path": "gprof/aarch64.c"
    },
    {
      "type": "modify",
      "old_id": "df714be6c814ef32d539c1c55b8fa24e653e4929",
      "old_mode": 33188,
      "old_path": "gprof/alpha.c",
      "new_id": "b7740d8b58611e9faef6a16e67cde96ed7dcad4b",
      "new_mode": 33188,
      "new_path": "gprof/alpha.c"
    },
    {
      "type": "modify",
      "old_id": "4a4e491495f5f84032ea7ff967bdf1dcf22b12f8",
      "old_mode": 33188,
      "old_path": "gprof/basic_blocks.c",
      "new_id": "d8659382d2c58abcf88dec0a966f8e9e74f540dc",
      "new_mode": 33188,
      "new_path": "gprof/basic_blocks.c"
    },
    {
      "type": "modify",
      "old_id": "259cbaaef1ba93039725300a629bce66a2f7ecc8",
      "old_mode": 33188,
      "old_path": "gprof/call_graph.c",
      "new_id": "b76a8adde58e5699b1275ac5365b7d020ae8e790",
      "new_mode": 33188,
      "new_path": "gprof/call_graph.c"
    },
    {
      "type": "modify",
      "old_id": "cfffb09ff87b68cae7ec5310e71a49c74ec6cc2e",
      "old_mode": 33188,
      "old_path": "gprof/cg_arcs.c",
      "new_id": "a19686b2710e877330ee23b58c228c10126837fa",
      "new_mode": 33188,
      "new_path": "gprof/cg_arcs.c"
    },
    {
      "type": "modify",
      "old_id": "1d8e7d6b5b359d42fe2a9a987c2cc707de4319b2",
      "old_mode": 33188,
      "old_path": "gprof/cg_print.c",
      "new_id": "c8e80d9d3a563e842ac356a42b416c9f23823b4b",
      "new_mode": 33188,
      "new_path": "gprof/cg_print.c"
    },
    {
      "type": "modify",
      "old_id": "bc26bd7883e820feea761b5d16ca7b5d6a2af9c5",
      "old_mode": 33188,
      "old_path": "gprof/corefile.c",
      "new_id": "74dbfb5cb8607985faadaf45b9910799f538295b",
      "new_mode": 33188,
      "new_path": "gprof/corefile.c"
    },
    {
      "type": "modify",
      "old_id": "9a069504d8532de29ad8c2ce671d682ff7bbd234",
      "old_mode": 33188,
      "old_path": "gprof/gmon_io.c",
      "new_id": "36ba7987a27567a7a888d0c5cea1b56e02b66df6",
      "new_mode": 33188,
      "new_path": "gprof/gmon_io.c"
    },
    {
      "type": "modify",
      "old_id": "746ca61f98e6349618e85cb10a14bcacc320de46",
      "old_mode": 33188,
      "old_path": "gprof/gmon_io.h",
      "new_id": "43c18693be591c5771a8e7cca19ae28dade46adf",
      "new_mode": 33188,
      "new_path": "gprof/gmon_io.h"
    },
    {
      "type": "modify",
      "old_id": "9392575f7476348e6db8d111b3bf20aec44c1f0f",
      "old_mode": 33188,
      "old_path": "gprof/gprof.c",
      "new_id": "cea269bc80f4f4214a7840445619df739216a35d",
      "new_mode": 33188,
      "new_path": "gprof/gprof.c"
    },
    {
      "type": "modify",
      "old_id": "1d8d89647727c07584a5e9cd5b9c724ab9ce1c73",
      "old_mode": 33188,
      "old_path": "gprof/gprof.h",
      "new_id": "4222731603f10aa09e1896b731c4b8b7a74213d0",
      "new_mode": 33188,
      "new_path": "gprof/gprof.h"
    },
    {
      "type": "modify",
      "old_id": "2d3b0b11ac5566d44f6a4a4d32b8c262f306b807",
      "old_mode": 33188,
      "old_path": "gprof/hist.c",
      "new_id": "ef4756531c6abe9b3188540a7ce7bef6c8ef9d66",
      "new_mode": 33188,
      "new_path": "gprof/hist.c"
    },
    {
      "type": "modify",
      "old_id": "62f6f96b20a6ea57d04224e1022a6613bd876e74",
      "old_mode": 33188,
      "old_path": "gprof/i386.c",
      "new_id": "350dcb238dde242c12e5c475134f198d681d8197",
      "new_mode": 33188,
      "new_path": "gprof/i386.c"
    },
    {
      "type": "modify",
      "old_id": "0ccd17db525c2da2c83b23c70cb303b15ae36f65",
      "old_mode": 33188,
      "old_path": "gprof/mips.c",
      "new_id": "873403c6a13b68894f13d7e1bd35805fe5f3e981",
      "new_mode": 33188,
      "new_path": "gprof/mips.c"
    },
    {
      "type": "modify",
      "old_id": "019e58b185fa6434b3ea35a8de9db1d2b0c8d036",
      "old_mode": 33188,
      "old_path": "gprof/sparc.c",
      "new_id": "ac0975eb012c24f4b72892ba4b61f88ca9fe7761",
      "new_mode": 33188,
      "new_path": "gprof/sparc.c"
    },
    {
      "type": "modify",
      "old_id": "9f26679cfc009fbdad8aa08920119b16337df96c",
      "old_mode": 33188,
      "old_path": "gprof/sym_ids.c",
      "new_id": "81be06c6a8803c5b8383f6260890d2640481ae51",
      "new_mode": 33188,
      "new_path": "gprof/sym_ids.c"
    },
    {
      "type": "modify",
      "old_id": "cc619aa728ef6b8ce895a404f1f7500e825e6591",
      "old_mode": 33188,
      "old_path": "gprof/symtab.c",
      "new_id": "e8b0b340680e1ba025ab30a1c7344fe5aeb07f88",
      "new_mode": 33188,
      "new_path": "gprof/symtab.c"
    },
    {
      "type": "modify",
      "old_id": "436f665f9a5c1f2b0ff4385c54030cd298846704",
      "old_mode": 33188,
      "old_path": "gprof/symtab.h",
      "new_id": "19031b917b015b83181ed213299f48ccbd99d557",
      "new_mode": 33188,
      "new_path": "gprof/symtab.h"
    },
    {
      "type": "modify",
      "old_id": "fafe2b17b53e6c2def76149b428ae1eb1b74b850",
      "old_mode": 33188,
      "old_path": "gprof/vax.c",
      "new_id": "47cbe138b3dd1e88fad8e85976080072cd473504",
      "new_mode": 33188,
      "new_path": "gprof/vax.c"
    }
  ]
}
