{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":2717477,"defaultBranch":"master","name":"dwarves","ownerLogin":"acmel","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2011-11-05T21:53:13.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1051254?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1718145920.0","currentOid":""},"activityList":{"items":[{"before":"a4f5f07ea0f3ba92bf4a11afdafce62dedcd54d4","after":"84ab4532efe4e263f59f89e4c0a13c49b55361b8","ref":"refs/heads/tmp.master","pushedAt":"2024-09-03T20:07:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"dwarf_loader: Fix memleaks in creating cus\n\nCoverity reports a possible memleak in dwarf_cus__create_cu() due to CU\nnot being freed for the case when it was allocated but cu__set_common()\nfailed. The same situation occurs in __cus_load_debug_types().\n\nFix the leaks.\n\nReviewed-by: Alan Maguire \nSigned-off-by: Viktor Malik \nTested-by: Alan Maguire \nLink: https://lore.kernel.org/r/20240903062352.763644-1-vmalik@redhat.com\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"dwarf_loader: Fix memleaks in creating cus"}},{"before":"a4f5f07ea0f3ba92bf4a11afdafce62dedcd54d4","after":"84ab4532efe4e263f59f89e4c0a13c49b55361b8","ref":"refs/heads/next","pushedAt":"2024-09-03T20:07:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"dwarf_loader: Fix memleaks in creating cus\n\nCoverity reports a possible memleak in dwarf_cus__create_cu() due to CU\nnot being freed for the case when it was allocated but cu__set_common()\nfailed. The same situation occurs in __cus_load_debug_types().\n\nFix the leaks.\n\nReviewed-by: Alan Maguire \nSigned-off-by: Viktor Malik \nTested-by: Alan Maguire \nLink: https://lore.kernel.org/r/20240903062352.763644-1-vmalik@redhat.com\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"dwarf_loader: Fix memleaks in creating cus"}},{"before":"a4f5f07ea0f3ba92bf4a11afdafce62dedcd54d4","after":"84ab4532efe4e263f59f89e4c0a13c49b55361b8","ref":"refs/heads/master","pushedAt":"2024-09-03T20:07:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"dwarf_loader: Fix memleaks in creating cus\n\nCoverity reports a possible memleak in dwarf_cus__create_cu() due to CU\nnot being freed for the case when it was allocated but cu__set_common()\nfailed. The same situation occurs in __cus_load_debug_types().\n\nFix the leaks.\n\nReviewed-by: Alan Maguire \nSigned-off-by: Viktor Malik \nTested-by: Alan Maguire \nLink: https://lore.kernel.org/r/20240903062352.763644-1-vmalik@redhat.com\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"dwarf_loader: Fix memleaks in creating cus"}},{"before":"fd14dc67cb6aaead553074afb4a1ddad10209892","after":"a4f5f07ea0f3ba92bf4a11afdafce62dedcd54d4","ref":"refs/heads/master","pushedAt":"2024-09-03T10:03:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Sync with latest in-progress libbpf-1.5\n\nThis will pull in fixes to BTF support for distilled base BTF.\n\nSigned-off-by: Alan Maguire \nCc: Alexei Starovoitov \nCc: Andrii Nakryiko \nCc: Eduard Zingerman \nCc: Jiri Olsa \nCc: Martin KaFai Lau \nCc: Song Liu \nCc: Tony Ambardar \nLink: https://lore.kernel.org/r/20240902141043.177815-1-alan.maguire@oracle.com\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Sync with latest in-progress libbpf-1.5"}},{"before":"fd14dc67cb6aaead553074afb4a1ddad10209892","after":"a4f5f07ea0f3ba92bf4a11afdafce62dedcd54d4","ref":"refs/heads/next","pushedAt":"2024-09-03T10:03:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Sync with latest in-progress libbpf-1.5\n\nThis will pull in fixes to BTF support for distilled base BTF.\n\nSigned-off-by: Alan Maguire \nCc: Alexei Starovoitov \nCc: Andrii Nakryiko \nCc: Eduard Zingerman \nCc: Jiri Olsa \nCc: Martin KaFai Lau \nCc: Song Liu \nCc: Tony Ambardar \nLink: https://lore.kernel.org/r/20240902141043.177815-1-alan.maguire@oracle.com\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Sync with latest in-progress libbpf-1.5"}},{"before":"fd14dc67cb6aaead553074afb4a1ddad10209892","after":"a4f5f07ea0f3ba92bf4a11afdafce62dedcd54d4","ref":"refs/heads/tmp.master","pushedAt":"2024-09-03T10:03:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Sync with latest in-progress libbpf-1.5\n\nThis will pull in fixes to BTF support for distilled base BTF.\n\nSigned-off-by: Alan Maguire \nCc: Alexei Starovoitov \nCc: Andrii Nakryiko \nCc: Eduard Zingerman \nCc: Jiri Olsa \nCc: Martin KaFai Lau \nCc: Song Liu \nCc: Tony Ambardar \nLink: https://lore.kernel.org/r/20240902141043.177815-1-alan.maguire@oracle.com\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Sync with latest in-progress libbpf-1.5"}},{"before":"3e265dac5ec85b956c664464072196c37d2af4f3","after":"fd14dc67cb6aaead553074afb4a1ddad10209892","ref":"refs/heads/master","pushedAt":"2024-08-28T22:27:33.000Z","pushType":"push","commitsCount":55,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"tests prettify_perf.data: Add regression test for 'pahole --prettify'\n\nThis feature is documented in the pahole manpage, plenty of examples\nthere, basically uses DWARF or BTF type info to parse raw data, for\ninstance a perf.data file and from type info go on pretty printing it,\nfinding out about offsets, record types, record sizes found in its\nheaders, etc.\n\nAdd a regression test for this set of features, where enums are joined\ntogether to find out about record types and from there to parse\ndifferent kinds of records, etc.\n\nIt checks if perf is available and has debugging info needed, and since\npahole has support for debuginfod, it may even fetch the perf debuginfo\ndata needed.\n\nTesting it:\n\n acme@number:~/git/pahole$ tests/tests\n 1: Pretty printing of files using DWARF type information: Ok\n 2: Parallel reproducible DWARF Loading/Serial BTF encoding: Ok\n acme@number:~/git/pahole$ tests/tests\n\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"tests prettify_perf.data: Add regression test for 'pahole --prettify'"}},{"before":"ea1865cf7a109806c007d9e893c8b41908fbbb2e","after":"fd14dc67cb6aaead553074afb4a1ddad10209892","ref":"refs/heads/next","pushedAt":"2024-08-28T22:27:03.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"tests prettify_perf.data: Add regression test for 'pahole --prettify'\n\nThis feature is documented in the pahole manpage, plenty of examples\nthere, basically uses DWARF or BTF type info to parse raw data, for\ninstance a perf.data file and from type info go on pretty printing it,\nfinding out about offsets, record types, record sizes found in its\nheaders, etc.\n\nAdd a regression test for this set of features, where enums are joined\ntogether to find out about record types and from there to parse\ndifferent kinds of records, etc.\n\nIt checks if perf is available and has debugging info needed, and since\npahole has support for debuginfod, it may even fetch the perf debuginfo\ndata needed.\n\nTesting it:\n\n acme@number:~/git/pahole$ tests/tests\n 1: Pretty printing of files using DWARF type information: Ok\n 2: Parallel reproducible DWARF Loading/Serial BTF encoding: Ok\n acme@number:~/git/pahole$ tests/tests\n\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"tests prettify_perf.data: Add regression test for 'pahole --prettify'"}},{"before":"ea1865cf7a109806c007d9e893c8b41908fbbb2e","after":"fd14dc67cb6aaead553074afb4a1ddad10209892","ref":"refs/heads/tmp.master","pushedAt":"2024-08-28T22:26:53.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"tests prettify_perf.data: Add regression test for 'pahole --prettify'\n\nThis feature is documented in the pahole manpage, plenty of examples\nthere, basically uses DWARF or BTF type info to parse raw data, for\ninstance a perf.data file and from type info go on pretty printing it,\nfinding out about offsets, record types, record sizes found in its\nheaders, etc.\n\nAdd a regression test for this set of features, where enums are joined\ntogether to find out about record types and from there to parse\ndifferent kinds of records, etc.\n\nIt checks if perf is available and has debugging info needed, and since\npahole has support for debuginfod, it may even fetch the perf debuginfo\ndata needed.\n\nTesting it:\n\n acme@number:~/git/pahole$ tests/tests\n 1: Pretty printing of files using DWARF type information: Ok\n 2: Parallel reproducible DWARF Loading/Serial BTF encoding: Ok\n acme@number:~/git/pahole$ tests/tests\n\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"tests prettify_perf.data: Add regression test for 'pahole --prettify'"}},{"before":"1dfd141fafd40d63653a6fd6da8ba331f2099d2c","after":"ea1865cf7a109806c007d9e893c8b41908fbbb2e","ref":"refs/heads/tmp.master","pushedAt":"2024-08-28T19:36:42.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Add option to obtain a vmlinux matching the running kernel\n\nTo use in regression tests scripts, but in general its a nice utility to\nuse in other kinds of scripts.\n\nAll this matches:\n\n $ pahole --running_kernel_vmlinux\n /lib/modules/6.11.0-rc5+/build/vmlinux\n $ file `pahole --running_kernel_vmlinux`\n /lib/modules/6.11.0-rc5+/build/vmlinux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=4dd7f9c4507b82a5bf90671d524e5bb308104ffa, with debug_info, not stripped\n $ perf buildid-list -k\n 4dd7f9c4507b82a5bf90671d524e5bb308104ffa\n $ perf buildid-list -i /lib/modules/6.11.0-rc5+/build/vmlinux\n 4dd7f9c4507b82a5bf90671d524e5bb308104ffa\n $\n\nCc: Alan Maguire \nCc: Andrii Nakryiko \nCc: Eduard Zingerman \nCc: Jiri Olsa \nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Add option to obtain a vmlinux matching the running kernel"}},{"before":"1dfd141fafd40d63653a6fd6da8ba331f2099d2c","after":"ea1865cf7a109806c007d9e893c8b41908fbbb2e","ref":"refs/heads/next","pushedAt":"2024-08-28T19:36:33.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Add option to obtain a vmlinux matching the running kernel\n\nTo use in regression tests scripts, but in general its a nice utility to\nuse in other kinds of scripts.\n\nAll this matches:\n\n $ pahole --running_kernel_vmlinux\n /lib/modules/6.11.0-rc5+/build/vmlinux\n $ file `pahole --running_kernel_vmlinux`\n /lib/modules/6.11.0-rc5+/build/vmlinux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=4dd7f9c4507b82a5bf90671d524e5bb308104ffa, with debug_info, not stripped\n $ perf buildid-list -k\n 4dd7f9c4507b82a5bf90671d524e5bb308104ffa\n $ perf buildid-list -i /lib/modules/6.11.0-rc5+/build/vmlinux\n 4dd7f9c4507b82a5bf90671d524e5bb308104ffa\n $\n\nCc: Alan Maguire \nCc: Andrii Nakryiko \nCc: Eduard Zingerman \nCc: Jiri Olsa \nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Add option to obtain a vmlinux matching the running kernel"}},{"before":"c58a3714450ecbcad33f282a5dbc6a7a8b0de616","after":"1dfd141fafd40d63653a6fd6da8ba331f2099d2c","ref":"refs/heads/next","pushedAt":"2024-08-27T17:28:54.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pfunct: Print DW_AT_external=1 functions once\n\nNamhyung mentioned that 'set_task_cpu' wasn't being printed with pfunct,\nthat was because those functions (with DW_AT_external=1) were not being\nprinted at all, out of some wrong expectations, this was added to avoid\nprinting it multiple times to allow for things like --compile to work,\nbut that was too much of a big hammer.\n\nSo add fn_stats->printed and use it to determine if functions were\nalready printed.\n\nAlso don't print definitions for functions marked as declarations, as it\nclashes with the ones in system headers, like __builtin_memcpy, etc.\n\nThis all needs a more thorough love and care, but at least for now\n--compile works with 'fullcircle tcp.o' (generating the functions and\nthe types it uses and then compiling it to get the original types and\nfunctions and prints the external functions:\n\n $ pfunct -F dwarf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $ pfunct -F btf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $\n\nReported-by: Namhyung Kim \nTested-by: Namhyung Kim \nCc: Alan Maguire \nCc: Jiri Olsa \nLink: https://lore.kernel.org/all/Zs0QVVZZfN9H7wQC@x1\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pfunct: Print DW_AT_external=1 functions once"}},{"before":"c58a3714450ecbcad33f282a5dbc6a7a8b0de616","after":"1dfd141fafd40d63653a6fd6da8ba331f2099d2c","ref":"refs/heads/tmp.master","pushedAt":"2024-08-27T17:28:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pfunct: Print DW_AT_external=1 functions once\n\nNamhyung mentioned that 'set_task_cpu' wasn't being printed with pfunct,\nthat was because those functions (with DW_AT_external=1) were not being\nprinted at all, out of some wrong expectations, this was added to avoid\nprinting it multiple times to allow for things like --compile to work,\nbut that was too much of a big hammer.\n\nSo add fn_stats->printed and use it to determine if functions were\nalready printed.\n\nAlso don't print definitions for functions marked as declarations, as it\nclashes with the ones in system headers, like __builtin_memcpy, etc.\n\nThis all needs a more thorough love and care, but at least for now\n--compile works with 'fullcircle tcp.o' (generating the functions and\nthe types it uses and then compiling it to get the original types and\nfunctions and prints the external functions:\n\n $ pfunct -F dwarf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $ pfunct -F btf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $\n\nReported-by: Namhyung Kim \nTested-by: Namhyung Kim \nCc: Alan Maguire \nCc: Jiri Olsa \nLink: https://lore.kernel.org/all/Zs0QVVZZfN9H7wQC@x1\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pfunct: Print DW_AT_external=1 functions once"}},{"before":"9576fca8aed178708f460936239babdd9faa9c0e","after":"c58a3714450ecbcad33f282a5dbc6a7a8b0de616","ref":"refs/heads/tmp.master","pushedAt":"2024-08-26T23:32:26.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pfunct: Print DW_AT_external=1 functions once\n\nNamhyung mentioned that 'set_task_cpu' wasn't being printed with pfunct,\nthat was because those functions (with DW_AT_external=1) were not being\nprinted at all, out of some wrong expectations, this was added to avoid\nprinting it multiple times to allow for things like --compile to work,\nbut that was too much of a big hammer.\n\nSo add fn_stats->printed and use it to determine if functions were\nalready printed.\n\nAlso don't print definitions for functions marked as declarations, as it\nclashes with the ones in system headers, like __builtin_memcpy, etc.\n\nThis all needs a more thorough love and care, but at least for now\n--compile works with 'fullcircle tcp.o' (generating the functions and\nthe types it uses and then compiling it to get the original types and\nfunctions and prints the external functions:\n\n $ pfunct -F dwarf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $ pfunct -F btf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $\n\nReported-by: Namhyung Kim \nCc: Alan Maguire \nCc: Jiri Olsa \nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pfunct: Print DW_AT_external=1 functions once"}},{"before":"9576fca8aed178708f460936239babdd9faa9c0e","after":"c58a3714450ecbcad33f282a5dbc6a7a8b0de616","ref":"refs/heads/next","pushedAt":"2024-08-26T23:32:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pfunct: Print DW_AT_external=1 functions once\n\nNamhyung mentioned that 'set_task_cpu' wasn't being printed with pfunct,\nthat was because those functions (with DW_AT_external=1) were not being\nprinted at all, out of some wrong expectations, this was added to avoid\nprinting it multiple times to allow for things like --compile to work,\nbut that was too much of a big hammer.\n\nSo add fn_stats->printed and use it to determine if functions were\nalready printed.\n\nAlso don't print definitions for functions marked as declarations, as it\nclashes with the ones in system headers, like __builtin_memcpy, etc.\n\nThis all needs a more thorough love and care, but at least for now\n--compile works with 'fullcircle tcp.o' (generating the functions and\nthe types it uses and then compiling it to get the original types and\nfunctions and prints the external functions:\n\n $ pfunct -F dwarf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $ pfunct -F btf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $\n\nReported-by: Namhyung Kim \nCc: Alan Maguire \nCc: Jiri Olsa \nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pfunct: Print DW_AT_external=1 functions once"}},{"before":"e9a13b757317f3b755a9a647eec9c56dec3cc027","after":"9576fca8aed178708f460936239babdd9faa9c0e","ref":"refs/heads/next","pushedAt":"2024-08-26T23:28:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pfunct: Print DW_AT_external=1 functions once\n\nNamhyung mentioned that 'set_task_cpu' wasn't being printed with pfunct,\nthis was added to avoid printing it multiple times to allow for things\nlike --compile to work, but that was too much of a big hammer.\n\nSo add fn_stats->printed and use it to determine if functions were\nalready printed.\n\nAlso don't print definitions for functions, as it clashes with the ones\nin system headers, like __builtin_memcpy, etc.\n\nThis all needs a more thorough love and care, but at least for now\n--compile works with 'fullcircle tcp.o' (generating the functions and\nthe types it uses and then compiling it to get the original types and\nfunctions and prints the external functions:\n\n $ pfunct -F dwarf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $ pfunct -F btf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $\n\nReported-by: Namhyung Kim \nCc: Alan Maguire \nCc: Jiri Olsa \nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pfunct: Print DW_AT_external=1 functions once"}},{"before":"e9a13b757317f3b755a9a647eec9c56dec3cc027","after":"9576fca8aed178708f460936239babdd9faa9c0e","ref":"refs/heads/tmp.master","pushedAt":"2024-08-26T23:27:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pfunct: Print DW_AT_external=1 functions once\n\nNamhyung mentioned that 'set_task_cpu' wasn't being printed with pfunct,\nthis was added to avoid printing it multiple times to allow for things\nlike --compile to work, but that was too much of a big hammer.\n\nSo add fn_stats->printed and use it to determine if functions were\nalready printed.\n\nAlso don't print definitions for functions, as it clashes with the ones\nin system headers, like __builtin_memcpy, etc.\n\nThis all needs a more thorough love and care, but at least for now\n--compile works with 'fullcircle tcp.o' (generating the functions and\nthe types it uses and then compiling it to get the original types and\nfunctions and prints the external functions:\n\n $ pfunct -F dwarf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $ pfunct -F btf -f set_task_cpu vmlinux\n void set_task_cpu(struct task_struct * p, unsigned int new_cpu);\n $\n\nReported-by: Namhyung Kim \nCc: Alan Maguire \nCc: Jiri Olsa \nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pfunct: Print DW_AT_external=1 functions once"}},{"before":"f37212d1611673a2f284dfcda3110b85fa096c80","after":"e9a13b757317f3b755a9a647eec9c56dec3cc027","ref":"refs/heads/tmp.master","pushedAt":"2024-08-26T20:06:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Reduce memory usage by smarter deleting of CUs\n\npahole uses a lot of memory when doing DWARF->BTF encoding. While some\nof this is inevitable there are some cases where we can improve things.\n\nWhen doing BTF encoding, we sometimes need to keep CUs around to compare\nfunctions to spot optimized/inconsistent functions. Currently we decide\nthis on a per-encoder basis (saved_func_cnt) where we count how many\ntimes we save a function, and if any functions are saved for the\n_encoder_, we keep all CUs.\n\nInstead we can have a per-CU count of saved functions, and if none are\nsaved for the _CU_ it is safe to delete it.\n\nThis leads to deleting ~90 CUs during parallel vmlinux BTF generation\nversus deleting just 1 prior to this change.\n\nSigned-off-by: Alan Maguire \nLink: https://lore.kernel.org/r/20240826110148.790124-1-alan.maguire@oracle.com\nCc: dwarves@vger.kernel.org\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Reduce memory usage by smarter deleting of CUs"}},{"before":"f37212d1611673a2f284dfcda3110b85fa096c80","after":"e9a13b757317f3b755a9a647eec9c56dec3cc027","ref":"refs/heads/next","pushedAt":"2024-08-26T20:06:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Reduce memory usage by smarter deleting of CUs\n\npahole uses a lot of memory when doing DWARF->BTF encoding. While some\nof this is inevitable there are some cases where we can improve things.\n\nWhen doing BTF encoding, we sometimes need to keep CUs around to compare\nfunctions to spot optimized/inconsistent functions. Currently we decide\nthis on a per-encoder basis (saved_func_cnt) where we count how many\ntimes we save a function, and if any functions are saved for the\n_encoder_, we keep all CUs.\n\nInstead we can have a per-CU count of saved functions, and if none are\nsaved for the _CU_ it is safe to delete it.\n\nThis leads to deleting ~90 CUs during parallel vmlinux BTF generation\nversus deleting just 1 prior to this change.\n\nSigned-off-by: Alan Maguire \nLink: https://lore.kernel.org/r/20240826110148.790124-1-alan.maguire@oracle.com\nCc: dwarves@vger.kernel.org\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Reduce memory usage by smarter deleting of CUs"}},{"before":"5e3ed3ec2947c69f2bf447857e4dd288ba245529","after":"f37212d1611673a2f284dfcda3110b85fa096c80","ref":"refs/heads/tmp.master","pushedAt":"2024-08-26T19:52:07.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Teduce memory usage by smarter deleting of CUs\n\npahole uses a lot of memory when doing DWARF->BTF encoding. While some\nof this is inevitable there are some cases where we can improve things.\n\nWhen doing BTF encoding, we sometimes need to keep CUs around to compare\nfunctions to spot optimized/inconsistent functions. Currently we decide\nthis on a per-encoder basis (saved_func_cnt) where we count how many\ntimes we save a function, and if any functions are saved for the\n_encoder_, we keep all CUs.\n\nInstead we can have a per-CU count of saved functions, and if none are\nsaved for the _CU_ it is safe to delete it.\n\nThis leads to deleting ~90 CUs during parallel vmlinux BTF generation\nversus deleting just 1 prior to this change.\n\nSigned-off-by: Alan Maguire \nLink: https://lore.kernel.org/r/20240826110148.790124-1-alan.maguire@oracle.com\nCc: dwarves@vger.kernel.org\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Teduce memory usage by smarter deleting of CUs"}},{"before":"5e3ed3ec2947c69f2bf447857e4dd288ba245529","after":"f37212d1611673a2f284dfcda3110b85fa096c80","ref":"refs/heads/next","pushedAt":"2024-08-26T17:01:13.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Teduce memory usage by smarter deleting of CUs\n\npahole uses a lot of memory when doing DWARF->BTF encoding. While some\nof this is inevitable there are some cases where we can improve things.\n\nWhen doing BTF encoding, we sometimes need to keep CUs around to compare\nfunctions to spot optimized/inconsistent functions. Currently we decide\nthis on a per-encoder basis (saved_func_cnt) where we count how many\ntimes we save a function, and if any functions are saved for the\n_encoder_, we keep all CUs.\n\nInstead we can have a per-CU count of saved functions, and if none are\nsaved for the _CU_ it is safe to delete it.\n\nThis leads to deleting ~90 CUs during parallel vmlinux BTF generation\nversus deleting just 1 prior to this change.\n\nSigned-off-by: Alan Maguire \nLink: https://lore.kernel.org/r/20240826110148.790124-1-alan.maguire@oracle.com\nCc: dwarves@vger.kernel.org\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Teduce memory usage by smarter deleting of CUs"}},{"before":"4281f83c1a9b3e9151eb5cd770ef43ce7b92a951","after":"5e3ed3ec2947c69f2bf447857e4dd288ba245529","ref":"refs/heads/tmp.master","pushedAt":"2024-08-09T19:21:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Do --lang_exclude CU filtering earlier\n\nWith this, we can avoid warnings for unsupported DWARF tags like:\n\n die__process_function: tag not supported 0x2f (template_type_parameter)!\n\nwhen processing object files generated from languages such as Rust, for\ninstance when building the Linux kernel with `CONFIG_RUST`, after\napplying the next patch in this series.\n\nAs an added bonus, this should speed up processing of large objects with\nfiltered CUs, as their details will no longer be walked.\n\nCommitter testing:\n\nTested building a kernel with CONFIG_RUST, no warnings (that\ntemplate_type_param wouldn't appear anyway as I added initial support\nfor it, at least for creating some structs out of its DWARF info, so no\nmore warnings), but:\n\n ⬢[acme@toolbox linux]$ pahole -C '::{vtable_type}' ../build/rust-kernel/rust/kernel.o\n die__process_class: tag not supported 0x33 (variant_part) at <14f43>!\n struct ::{vtable_type} {\n () * drop_in_place __attribute__((__aligned__(8))); /* 0 8 */\n usize size __attribute__((__aligned__(8))); /* 8 8 */\n usize align __attribute__((__aligned__(8))); /* 16 8 */\n () * __method3 __attribute__((__aligned__(8))); /* 24 8 */\n () * __method4 __attribute__((__aligned__(8))); /* 32 8 */\n () * __method5 __attribute__((__aligned__(8))); /* 40 8 */\n\n /* size: 48, cachelines: 1, members: 6 */\n /* forced alignments: 6 */\n /* last cacheline: 48 bytes */\n } __attribute__((__aligned__(8)));\n\n ⬢[acme@toolbox linux]$\n\nThat DW_TAG_variant_part warning would show up without this series, so\nseems to be working as expected :-)\n\nReviewed-by: Alan Maguire \nSigned-off-by: Matthew Maurer \nTested-by: Alan Maguire \nTested-by: Arnaldo Carvalho de Melo \nCc: Alice Ryhl \nCc: rust-for-linux@vger.kernel.org\nLink: https://lore.kernel.org/r/20240801185054.2518383-1-mmaurer@google.com\n[ Split from a larger patch ]\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Do --lang_exclude CU filtering earlier"}},{"before":"4281f83c1a9b3e9151eb5cd770ef43ce7b92a951","after":"5e3ed3ec2947c69f2bf447857e4dd288ba245529","ref":"refs/heads/next","pushedAt":"2024-08-09T19:20:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Do --lang_exclude CU filtering earlier\n\nWith this, we can avoid warnings for unsupported DWARF tags like:\n\n die__process_function: tag not supported 0x2f (template_type_parameter)!\n\nwhen processing object files generated from languages such as Rust, for\ninstance when building the Linux kernel with `CONFIG_RUST`, after\napplying the next patch in this series.\n\nAs an added bonus, this should speed up processing of large objects with\nfiltered CUs, as their details will no longer be walked.\n\nCommitter testing:\n\nTested building a kernel with CONFIG_RUST, no warnings (that\ntemplate_type_param wouldn't appear anyway as I added initial support\nfor it, at least for creating some structs out of its DWARF info, so no\nmore warnings), but:\n\n ⬢[acme@toolbox linux]$ pahole -C '::{vtable_type}' ../build/rust-kernel/rust/kernel.o\n die__process_class: tag not supported 0x33 (variant_part) at <14f43>!\n struct ::{vtable_type} {\n () * drop_in_place __attribute__((__aligned__(8))); /* 0 8 */\n usize size __attribute__((__aligned__(8))); /* 8 8 */\n usize align __attribute__((__aligned__(8))); /* 16 8 */\n () * __method3 __attribute__((__aligned__(8))); /* 24 8 */\n () * __method4 __attribute__((__aligned__(8))); /* 32 8 */\n () * __method5 __attribute__((__aligned__(8))); /* 40 8 */\n\n /* size: 48, cachelines: 1, members: 6 */\n /* forced alignments: 6 */\n /* last cacheline: 48 bytes */\n } __attribute__((__aligned__(8)));\n\n ⬢[acme@toolbox linux]$\n\nThat DW_TAG_variant_part warning would show up without this series, so\nseems to be working as expected :-)\n\nReviewed-by: Alan Maguire \nSigned-off-by: Matthew Maurer \nTested-by: Alan Maguire \nTested-by: Arnaldo Carvalho de Melo \nCc: Alice Ryhl \nCc: rust-for-linux@vger.kernel.org\nLink: https://lore.kernel.org/r/20240801185054.2518383-1-mmaurer@google.com\n[ Split from a larger patch ]\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Do --lang_exclude CU filtering earlier"}},{"before":"14be4e3d3fe56ce9a952bbb38bdd7696f34dadbe","after":"4281f83c1a9b3e9151eb5cd770ef43ce7b92a951","ref":"refs/heads/tmp.master","pushedAt":"2024-08-09T13:53:19.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Do --languages_exclude CU filtering earlier\n\nWith this, we can avoid warnings for unsupported DWARF tags like:\n\n die__process_function: tag not supported 0x2f (template_type_parameter)!\n\nwhen processing object files generated from languages such as Rust, for\ninstance when building the Linux kernel with `CONFIG_RUST`, after\nappltying the next patch in this series.\n\nAs an added bonus, this should speed up processing of large objects with\nfiltered CUs, as their details will no longer be walked.\n\nCommitter testing:\n\nTested building a kernel with CONFIG_RUST, no warnings (that\ntemplate_type_param wouldn't appear anyway as I added initial support\nfor it, at least for creating some structs out of its DWARF info, so no\nmore warnings), but:\n\n ⬢[acme@toolbox linux]$ pahole -C '::{vtable_type}' ../build/rust-kernel/rust/kernel.o\n die__process_class: tag not supported 0x33 (variant_part) at <14f43>!\n struct ::{vtable_type} {\n () * drop_in_place __attribute__((__aligned__(8))); /* 0 8 */\n usize size __attribute__((__aligned__(8))); /* 8 8 */\n usize align __attribute__((__aligned__(8))); /* 16 8 */\n () * __method3 __attribute__((__aligned__(8))); /* 24 8 */\n () * __method4 __attribute__((__aligned__(8))); /* 32 8 */\n () * __method5 __attribute__((__aligned__(8))); /* 40 8 */\n\n /* size: 48, cachelines: 1, members: 6 */\n /* forced alignments: 6 */\n /* last cacheline: 48 bytes */\n } __attribute__((__aligned__(8)));\n\n ⬢[acme@toolbox linux]$\n\nThat DW_TAG_variant_part warning would show up without this series, so\nseems to be working as expected :-)\n\nReviewed-by: Alan Maguire \nSigned-off-by: Matthew Maurer \nTested-by: Alan Maguire \nTested-by: Arnaldo Carvalho de Melo \nCc: Alice Ryhl \nCc: rust-for-linux@vger.kernel.org\nLink: https://lore.kernel.org/r/20240801185054.2518383-1-mmaurer@google.com\n[ Split from a larger patch ]\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Do --languages_exclude CU filtering earlier"}},{"before":"14be4e3d3fe56ce9a952bbb38bdd7696f34dadbe","after":"4281f83c1a9b3e9151eb5cd770ef43ce7b92a951","ref":"refs/heads/next","pushedAt":"2024-08-09T13:53:10.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Do --languages_exclude CU filtering earlier\n\nWith this, we can avoid warnings for unsupported DWARF tags like:\n\n die__process_function: tag not supported 0x2f (template_type_parameter)!\n\nwhen processing object files generated from languages such as Rust, for\ninstance when building the Linux kernel with `CONFIG_RUST`, after\nappltying the next patch in this series.\n\nAs an added bonus, this should speed up processing of large objects with\nfiltered CUs, as their details will no longer be walked.\n\nCommitter testing:\n\nTested building a kernel with CONFIG_RUST, no warnings (that\ntemplate_type_param wouldn't appear anyway as I added initial support\nfor it, at least for creating some structs out of its DWARF info, so no\nmore warnings), but:\n\n ⬢[acme@toolbox linux]$ pahole -C '::{vtable_type}' ../build/rust-kernel/rust/kernel.o\n die__process_class: tag not supported 0x33 (variant_part) at <14f43>!\n struct ::{vtable_type} {\n () * drop_in_place __attribute__((__aligned__(8))); /* 0 8 */\n usize size __attribute__((__aligned__(8))); /* 8 8 */\n usize align __attribute__((__aligned__(8))); /* 16 8 */\n () * __method3 __attribute__((__aligned__(8))); /* 24 8 */\n () * __method4 __attribute__((__aligned__(8))); /* 32 8 */\n () * __method5 __attribute__((__aligned__(8))); /* 40 8 */\n\n /* size: 48, cachelines: 1, members: 6 */\n /* forced alignments: 6 */\n /* last cacheline: 48 bytes */\n } __attribute__((__aligned__(8)));\n\n ⬢[acme@toolbox linux]$\n\nThat DW_TAG_variant_part warning would show up without this series, so\nseems to be working as expected :-)\n\nReviewed-by: Alan Maguire \nSigned-off-by: Matthew Maurer \nTested-by: Alan Maguire \nTested-by: Arnaldo Carvalho de Melo \nCc: Alice Ryhl \nCc: rust-for-linux@vger.kernel.org\nLink: https://lore.kernel.org/r/20240801185054.2518383-1-mmaurer@google.com\n[ Split from a larger patch ]\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Do --languages_exclude CU filtering earlier"}},{"before":"cbecc3785266f0c54eb1ea660b88a66f063fbd58","after":"14be4e3d3fe56ce9a952bbb38bdd7696f34dadbe","ref":"refs/heads/next","pushedAt":"2024-08-09T12:36:29.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Only warn about multithreading not being available with older versions of elfutils in verbose mode\n\nFor kernel builds, pahole is called with -j to specify multithreading\nas long as it is >= 1.22.\n\nHowever, if elfutils are older than 0.178 at compile time,\nmultithreading is not supported and we emit a warning to stderr.\n\nThe problem is this message will be emitted each time pahole is run, and\nthis translates to thousands of times in a kernel build (once for\nvmlinux and once for each module).\n\nOften users who are not familiar with BTF generation or pahole\nreasonably assume this is an error, whereas it is actually fine; it just\nmeans that pahole is a bit slower to generate BTF.\n\nMove the message to verbose mode only, as in debugging cases it is\nimportant to know if pahole is running in parallel.\n\nSigned-off-by: Alan Maguire \nLink: https://lore.kernel.org/r/20240801095058.1946790-1-alan.maguire@oracle.com\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Only warn about multithreading not being available with older…"}},{"before":"cbecc3785266f0c54eb1ea660b88a66f063fbd58","after":"14be4e3d3fe56ce9a952bbb38bdd7696f34dadbe","ref":"refs/heads/tmp.master","pushedAt":"2024-08-09T12:36:20.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"pahole: Only warn about multithreading not being available with older versions of elfutils in verbose mode\n\nFor kernel builds, pahole is called with -j to specify multithreading\nas long as it is >= 1.22.\n\nHowever, if elfutils are older than 0.178 at compile time,\nmultithreading is not supported and we emit a warning to stderr.\n\nThe problem is this message will be emitted each time pahole is run, and\nthis translates to thousands of times in a kernel build (once for\nvmlinux and once for each module).\n\nOften users who are not familiar with BTF generation or pahole\nreasonably assume this is an error, whereas it is actually fine; it just\nmeans that pahole is a bit slower to generate BTF.\n\nMove the message to verbose mode only, as in debugging cases it is\nimportant to know if pahole is running in parallel.\n\nSigned-off-by: Alan Maguire \nLink: https://lore.kernel.org/r/20240801095058.1946790-1-alan.maguire@oracle.com\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"pahole: Only warn about multithreading not being available with older…"}},{"before":"116baeb78f2ae8fc6adf68b707ce316f0ea79c3d","after":"cbecc3785266f0c54eb1ea660b88a66f063fbd58","ref":"refs/heads/tmp.master","pushedAt":"2024-07-29T21:19:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"dwarf_loader: Do just one alloc for 'struct dwarf_tag + struct tag'\n\nWe can get one from the other by simple pointer arithmetic, so just do\nit and avoid two alloc plus two backpointers.\n\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"dwarf_loader: Do just one alloc for 'struct dwarf_tag + struct tag'"}},{"before":"116baeb78f2ae8fc6adf68b707ce316f0ea79c3d","after":"cbecc3785266f0c54eb1ea660b88a66f063fbd58","ref":"refs/heads/next","pushedAt":"2024-07-29T21:19:12.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"dwarf_loader: Do just one alloc for 'struct dwarf_tag + struct tag'\n\nWe can get one from the other by simple pointer arithmetic, so just do\nit and avoid two alloc plus two backpointers.\n\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"dwarf_loader: Do just one alloc for 'struct dwarf_tag + struct tag'"}},{"before":"3801aa0c1174db56540a84947a568bd918730ea4","after":"116baeb78f2ae8fc6adf68b707ce316f0ea79c3d","ref":"refs/heads/next","pushedAt":"2024-07-26T19:13:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"acmel","name":"Arnaldo Carvalho de Melo","path":"/acmel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1051254?s=80&v=4"},"commit":{"message":"core: Reorganize 'struct class_member' to save 8 bytes\n\nBefore:\n\n\t/* size: 88, cachelines: 2, members: 18 */\n\t/* sum members: 79, holes: 1, sum holes: 4 */\n\t/* sum bitfield members: 8 bits, bit holes: 1, sum bit holes: 7 bits */\n\t/* padding: 3 */\n\t/* member types with bit holes: 1, total: 1 */\n\t/* bit_padding: 1 bits */\n\t/* last cacheline: 24 bytes */\n\nAfter:\n\n\t/* size: 80, cachelines: 2, members: 18 */\n\t/* member types with bit holes: 1, total: 1 */\n\t/* last cacheline: 16 bytes */\n\nSigned-off-by: Arnaldo Carvalho de Melo ","shortMessageHtmlLink":"core: Reorganize 'struct class_member' to save 8 bytes"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wM1QyMDowNzoyOC4wMDAwMDBazwAAAASr-zRO","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wM1QyMDowNzoyOC4wMDAwMDBazwAAAASr-zRO","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNy0yNlQxOToxMzo1Ny4wMDAwMDBazwAAAASKVXCh"}},"title":"Activity · acmel/dwarves"}