pahole: Describe expected use of 'default' in the man page
[dwarves.git] / NEWS
blobf3d2fc03901070144a7f713819e93877184a8a5d
1 v1.26
3 Tue Feb 27 2024
5 ba8f6eb0b6b67c6e NEWS: Add missing list of changes for v1.25
6 90201c2bde4b0ca8 prefcnt: cus__load_files() requires a non NULL conf_load
7 f86ed770b5396cd5 dtagnames: cus__load_files() requires a non NULL conf_load
8 b2e0f084eca03613 syscse: cus__load_files() requires a non NULL conf_load
9 461f61ebaf8f3108 dwarf_loader: Print the line number in addition to the function when not finding the abstract origin
10 6e665da56c78d436 pahole: Wait to find a DWARF CU with both the class and the type_enum
11 be638365781ed0c8 pahole: Improve error message when not resolving symbolic names in filters
12 e18ef2fed1b1a2c5 pahole: Implement --contains_enumerator=ENUMERATOR_NAME
13 7146ad04b72b08a5 pahole: Do not use -1 to mean that a enumerator wasn't found in an enumeration
14 97dce38eae062cf9 core: Introduce cu__for_each_enumeration()
15 786ed0aa2ff5fe67 btfdiff: Do type expansion to cover "private" types and enumerations
16 9661c589cae83c6b btf_loader: Fix loading of 32-bit signed enums
17 a25293a66b737263 btfdiff: Parallelize loading BTF and DWARF
18 e52cf114039af8f3 fprintf: When expanding types do it for union typedefs as well
19 d05d4f528d08da06 fprintf: Factor out the fprintf of a union declaration, for reuse
20 f97c080d4aac4f8f fprintf: When expanding types do it for struct typedefs as well
21 eb4f49bca27fcca2 fprintf: Add missing space after expanding a structure for a struct member
22 0064b74c5ef0f358 fprintf: When expanding types do it for enums as well
23 1fd08c0f0021e7fb fprintf: Print number of bit paddings in class member types
24 4fa81a30b9ca3b78 fprintf: Print number of bit holes in class member types
25 85bdd96404efca19 fprintf: Print number of holes in class member types
26 08fc8e3285733ec8 fprintf: Introduce method to print info about type of last member
27 bd8d0536b4352b5d fprintf: Introduce struct to account holes in class member types
28 fdd815151054d840 pahole: Make sure the features string is NUL terminated
29 884c43ea82a154ce CMakeList.txt: Bump version to the upcoming 1.26 release, not out of the door yet
30 c129fa7579483bba pahole: Add --btf_features_strict to reject unknown BTF features
31 74a238a4368223c9 pahole: Add --supported_btf_features
32 7bc9b9975545ab53 pahole: Add --btf_features support
33 79e9df515e4d3e89 dwarves: Move ARRAY_SIZE() to dwarves.h
34 f5c6c1365e7bb3dc btf_encoder, pahole: Move BTF encoding options into 'struct conf_load'
35 37e3bf08e0314efa pahole: Don't keep structs in multiple RB trees
36 d65499a8605c224b README: Remove old comments about ancient distros and add 'git submodule' instruction
37 0a1944b19569c4f9 spec: Migrate license to a SPDX standardized one
38 31bc0d7410572f6e dwarf_loader: DW_TAG_subroutine_type may have a DW_AT_byte_size
39 bfa033b07f50a202 pdwtags: Print DW_TAG_constant tags
40 afca84ff989d9729 fprintf: Add DW_TAG_constant pretty printer (constant__fprintf)
41 cb7eb753694be3e8 dwarf_loader: Add support for DW_TAG_constant
43 v1.25
45 Thu Apr 13 2023
47 eab23ebd2ce22b3a fprintf: Fix `*` not being printed for pointers with btf_type_tag
48 c969e4969ccd2e7c btf_loader: A hack for BTF import of btf_type_tag attributes
49 40ebd8b9e3312d0a fprintf: Correct names for types with btf_type_tag attribute
50 4d17096076b2351f btf_encoder: Compare functions via prototypes not parameter names
51 82730394195276ac fprintf: Support skipping modifier
52 d184aaa125ea40ff fprintf: Generalize function prototype print to support passing conf
53 a9498899109d3be1 dwarf_loader: Fix for BTF id drift caused by adding unspecified types
54 eeeab1c9e8b85fc7 fprintf: Support DW_TAG_LLVM_annotation in dwarf_tag_name()
55 4ec4b64bd501986b CMakeLists.txt: Call cmake_minimum_required() before project()
56 111dfd2cee118892 dwarf_loader: Only mark parameter as using an unexpected register when it does
57 5851040e2468ba04 dwarf_loader: Fix parameter location retrieval for location lists
58 721ca66d5be462b2 dwarf_loader: Fix detection of struct parameters
59 ef68019c357845b4 pahole: Update man page for options also
60 d58c61498ea78064 pahole: Update descriptions for btf_gen_optimized, skip_encoding_btf_inconsistent_proto
61 9b2abc1c7a16c39d btf_encoder: Exclude functions with unexpected param register use not optimizations
62 a53c58158b761f8f dwarf_loader: Mark functions that do not use expected registers for params
63 431df45378ef00f3 btfdiff: Exclude Rust CUs since those are not yet being converted to BTF on the Linux kernel
64 1231b6b9b4d88e00 dwarf_loader: Fix sorting of Rust structs
65 c4eb1897d1f3841d core: Check that we're adding DW_TAG_member sorted by byte offset
66 b53d430aeab416e7 btf_encoder: Ensure ELF function representation is fully initialized
67 a3b47e41656d21e7 CMakeList.txt: Bump version to the upcoming 1.25 release, not out of the door yet
68 f104790698ae93f9 btf_encoder: Support delaying function addition to check for function prototype inconsistencies
69 6d95d162c6c804c4 btf_encoder: Represent "."-suffixed functions (".isra.0") in BTF
70 c8e8dbcd71507618 btf_encoder: Rework btf_encoders__*() API to allow traversal of encoders
71 d381cc7458c53fdf btf_encoder: Refactor function addition into dedicated btf_encoder__add_func
72 52b25808e44a8e7f btf_encoder: Store type_id_off, unspecified type in encoder
73 75939e655a797896 dwarf_loader: Help spotting functions with optimized-out parameters
74 2b5cb9bc0e905811 pahole: Sync with libbpf-1.1
75 45c044860c2abce7 dwarf_loader: Sync with LINUX_ELFNOTE_LTO_INFO macro from kernel
76 74f21ed08e4313f0 pahole: Set libbpf debug printer in -V mode
77 bc1538dcb14bc4d9 pahole: Use type__fprintf() directly for --compile
78 51643cb290f91425 core: Introduce base_type__language_defined()
79 ba4bdc73806101dc dwarf_loader: DW_TAG_inlined_subroutine needs recoding by DW_AT_abstract_origin
80 02d67c51765dfbd5 pfunct: Use zalloc() to make the code more robust
81 cd4d2d251e9a7f98 pahole: Use zalloc() to make the code more robust
82 e5e24ada4f5578ae core: Use zalloc() to make the code more robust
83 b72f5188856df0ab dwarves: Zero-initialize struct cu in cu__new() to prevent incorrect BTF types
84 d85b86ecc1df4076 emit: Support DW_TAG_atomic_type when emitting definitions for a typedef
85 7d0bc9334d2f1143 fprintf: Support _Atomic typedefs
86 8894c04f00e4c702 fprintf: Move the "typedef " invariant printf to the start of typedef__fprintf()
87 3836623af1b5ff1f pahole: Allow skipping the emission of atomic typedefs
88 6bb5a1fa990f5bd6 emit: Allow skip emitting the atomic typedefs
89 8d2e166dd3d168d9 emit: Optionally pass a conf_fprintf struct to type_emissions__init
90 8c2b37ec71423067 emit: Emit typedefs for atomic_ prefixed base types
91 a4f3a79da8d4ed8b emit: cu__type() == NULL means "void"
92 bcc648a10cbcd0b9 btf_encoder: Encode DW_TAG_unspecified_type returning routines as void
93 cffe5e1f75e1612e core: Record if a CU has a DW_TAG_unspecified_type
94 75e0fe28bb02036d core: Add DW_TAG_unspecified_type to tag__is_tag_type() set
95 121a46a026afac19 btf_encoder: Store the CU being processed to avoid changing many functions
96 56bcfa9135312ffe fprintf: Emit "_Atomic" modifiers for DW_TAG_atomic_type
97 cf27a2b805f21356 core: Print more info on tag__assert_search_result()
98 d5012f7be79f1b81 btf_encoder: Add extra debug info for unsupported DWARF tags
99 79d9a783ea74797a pahole: Support '--lang/--lang_exclude=asm'
100 e819d737de88dc1f pahole: Add "btf" to the format-path option man page
101 f01e5f3a849558b8 dwarf_loader: Support DW_TAG_label outside DW_TAG_lexblock
102 b84120772df33f93 pahole: Allow --compile to work with DWARF in addition to with BTF
103 6fdb0140692acff0 dwarves: support DW_TAG_atomic_type
104 d7507140eab4bf9f emit: Don't mark a enum with nr_members == 0 as printed, its just a fwd decl
105 843fe9bfab4859b4 emit: Check if disambiguated struct/enum/union name was already emitted in a previous CU
106 f5857bd34b220a64 pahole: Honour --compile when -C is used
107 2bb968b567011f8a btf: Fix building with system libbpf
108 ea30d58a2329764b core: Conditionally define language encodings
110 v1.24
112 Sat Apr  8 2023
114 eab23ebd2ce22b3a fprintf: Fix `*` not being printed for pointers with btf_type_tag
115 c969e4969ccd2e7c btf_loader: A hack for BTF import of btf_type_tag attributes
116 40ebd8b9e3312d0a fprintf: Correct names for types with btf_type_tag attribute
117 4d17096076b2351f btf_encoder: Compare functions via prototypes not parameter names
118 82730394195276ac fprintf: Support skipping modifier
119 d184aaa125ea40ff fprintf: Generalize function prototype print to support passing conf
120 a9498899109d3be1 dwarf_loader: Fix for BTF id drift caused by adding unspecified types
121 eeeab1c9e8b85fc7 fprintf: Support DW_TAG_LLVM_annotation in dwarf_tag_name()
122 4ec4b64bd501986b CMakeLists.txt: Call cmake_minimum_required() before project()
123 111dfd2cee118892 dwarf_loader: Only mark parameter as using an unexpected register when it does
124 5851040e2468ba04 dwarf_loader: Fix parameter location retrieval for location lists
125 721ca66d5be462b2 dwarf_loader: Fix detection of struct parameters
126 ef68019c357845b4 pahole: Update man page for options also
127 d58c61498ea78064 pahole: Update descriptions for btf_gen_optimized, skip_encoding_btf_inconsistent_proto
128 9b2abc1c7a16c39d btf_encoder: Exclude functions with unexpected param register use not optimizations
129 a53c58158b761f8f dwarf_loader: Mark functions that do not use expected registers for params
130 431df45378ef00f3 btfdiff: Exclude Rust CUs since those are not yet being converted to BTF on the Linux kernel
131 1231b6b9b4d88e00 dwarf_loader: Fix sorting of Rust structs
132 c4eb1897d1f3841d core: Check that we're adding DW_TAG_member sorted by byte offset
133 b53d430aeab416e7 btf_encoder: Ensure ELF function representation is fully initialized
134 a3b47e41656d21e7 CMakeList.txt: Bump version to the upcoming 1.25 release, not out of the door yet
135 f104790698ae93f9 btf_encoder: Support delaying function addition to check for function prototype inconsistencies
136 6d95d162c6c804c4 btf_encoder: Represent "."-suffixed functions (".isra.0") in BTF
137 c8e8dbcd71507618 btf_encoder: Rework btf_encoders__*() API to allow traversal of encoders
138 d381cc7458c53fdf btf_encoder: Refactor function addition into dedicated btf_encoder__add_func
139 52b25808e44a8e7f btf_encoder: Store type_id_off, unspecified type in encoder
140 75939e655a797896 dwarf_loader: Help spotting functions with optimized-out parameters
141 2b5cb9bc0e905811 pahole: Sync with libbpf-1.1
142 45c044860c2abce7 dwarf_loader: Sync with LINUX_ELFNOTE_LTO_INFO macro from kernel
143 74f21ed08e4313f0 pahole: Set libbpf debug printer in -V mode
144 bc1538dcb14bc4d9 pahole: Use type__fprintf() directly for --compile
145 51643cb290f91425 core: Introduce base_type__language_defined()
146 ba4bdc73806101dc dwarf_loader: DW_TAG_inlined_subroutine needs recoding by DW_AT_abstract_origin
147 02d67c51765dfbd5 pfunct: Use zalloc() to make the code more robust
148 cd4d2d251e9a7f98 pahole: Use zalloc() to make the code more robust
149 e5e24ada4f5578ae core: Use zalloc() to make the code more robust
150 b72f5188856df0ab dwarves: Zero-initialize struct cu in cu__new() to prevent incorrect BTF types
151 d85b86ecc1df4076 emit: Support DW_TAG_atomic_type when emitting definitions for a typedef
152 7d0bc9334d2f1143 fprintf: Support _Atomic typedefs
153 8894c04f00e4c702 fprintf: Move the "typedef " invariant printf to the start of typedef__fprintf()
154 3836623af1b5ff1f pahole: Allow skipping the emission of atomic typedefs
155 6bb5a1fa990f5bd6 emit: Allow skip emitting the atomic typedefs
156 8d2e166dd3d168d9 emit: Optionally pass a conf_fprintf struct to type_emissions__init
157 8c2b37ec71423067 emit: Emit typedefs for atomic_ prefixed base types
158 a4f3a79da8d4ed8b emit: cu__type() == NULL means "void"
159 bcc648a10cbcd0b9 btf_encoder: Encode DW_TAG_unspecified_type returning routines as void
160 cffe5e1f75e1612e core: Record if a CU has a DW_TAG_unspecified_type
161 75e0fe28bb02036d core: Add DW_TAG_unspecified_type to tag__is_tag_type() set
162 121a46a026afac19 btf_encoder: Store the CU being processed to avoid changing many functions
163 56bcfa9135312ffe fprintf: Emit "_Atomic" modifiers for DW_TAG_atomic_type
164 cf27a2b805f21356 core: Print more info on tag__assert_search_result()
165 d5012f7be79f1b81 btf_encoder: Add extra debug info for unsupported DWARF tags
166 79d9a783ea74797a pahole: Support '--lang/--lang_exclude=asm'
167 e819d737de88dc1f pahole: Add "btf" to the format-path option man page
168 f01e5f3a849558b8 dwarf_loader: Support DW_TAG_label outside DW_TAG_lexblock
169 b84120772df33f93 pahole: Allow --compile to work with DWARF in addition to with BTF
170 6fdb0140692acff0 dwarves: support DW_TAG_atomic_type
171 d7507140eab4bf9f emit: Don't mark a enum with nr_members == 0 as printed, its just a fwd decl
172 843fe9bfab4859b4 emit: Check if disambiguated struct/enum/union name was already emitted in a previous CU
173 f5857bd34b220a64 pahole: Honour --compile when -C is used
174 2bb968b567011f8a btf: Fix building with system libbpf
175 ea30d58a2329764b core: Conditionally define language encodings
177 Wed Aug 17 2022
179 d6c952893b1bbea9 dwarf_loader: Encode char type as signed
180 23342fef5e5f6070 dwarf_loader: Fix elfutils dwfl_getmodules() error checking
181 9712d9ec929fb6b3 btf_loader: Add support to BTF_KIND_ENUM64
182 35a11221b305a520 btf: Support BTF_KIND_ENUM64
183 3aa68ba050d4ddc4 libbpf: Sync with latest libbpf repo
184 c3d6522e0499c5b0 fprintf: Fix plural/singular when printing cacheline boundary
185 384a16a011226163 btf_encoder: Normalize array index type for parallel dwarf loading case
186 d9e36dd9dd2a526a libbpf: Sync with latest libbpf repo
187 49358dfe2aaae4e9 pahole: Add --lang_exclude to allow skipping compilation units written in some languages
188 8ee363790b743728 pahole: Introduce --lang to ask for only compilation units written in some languages
189 c3f2fe2f6a81f13c core: Add string to id language lookup method
190 3d0dfe0610517ff6 pahole: Don't try encode BTF when all CUs were filtered
191 2730ef6965efd8e6 fprintf: preserve conf_fprintf pointer in tag__ptr_name
192 1bc98ed290d2c833 btf_encoder: Collect info of per-cpu variables from threads
193 31df013b70540072 dwarves: Set errno if load fails in cus__load_files()
194 f952a6f69f9508c8 pahole: Avoid segfault when parsing bogus file
195 65d7273668ded59b pahole: Introduce --compile to produce a compilable output
196 4d004e2314f3252e core: Ditch 'dwarves__active_loader' extern declaration, it was nuked
197 4f332dbfd02072e4 emit: Notice type shadowing, i.e. multiple types with the same name (enum, struct, union, etc)
198 0a82f74ce25a5904 core: Make type->packed_attributes_inferred a one bit member
199 fac821246c582299 core: type->declaration is just one bit, make it a bitfield member
200 742f04f89da03665 emit: Search for data structures using its type in addition to its name
201 32cc1481721c4b11 fprintf: Consider enumerations without members as forward declarations
202 6afc296eeb180e25 emit: Fix printing typedef of nameless struct/union
203 49a2dd657728675b fprintf: Check if conf->conf_fprintf is not NULL in when resolving cacheline_size
204 46cec35ff0411e0f fprintf: Fix division by zero for uninitialized conf_fprintf->cacheline_size field
205 73383b3a39afe86b libbpf: Update libbpf to the latest git HEAD
206 21352753186ec582 pahole: Use per-thread btf instances to avoid mutex locking
207 96d2c5c323255134 dwarf_loader: Prepare and pass per-thread data to worker threads
208 724c8fddd71be1fe dwarf_loader: Receive per-thread data on worker threads
209 2f7d61b2bfb59427 core: Define DW_TAG_skeleton_unit if not available on current dwarf.h
211 v1.23
213 Wed Dec  8 2021
215 54ae2f7f5e4f6328 Revert "fprintf: Allow making struct/enum/union anonymous"
216 69fb1861de35120c Revert "pahole: Add --inner_anon option"
217 005236c3e40eeb64 pahole: Add --inner_anon option
218 7c5e35b63bd26f1d fprintf: Allow making struct/enum/union anonymous
219 d99d551930cf4b4b btf_encoder: Support btf_type_tag attribute
220 3da248c3284ef905 man pages: Add missing --skip_encoding_btf_decl_tag entry
221 a58ecca0a89b142b man pages: Add missing --skip_encoding_btf_type_tag entry
222 b488c8d328845bd8 dwarf_loader: Support btf_type_tag attribute
223 a0cc68687f1281cd dutil: Move DW_TAG_LLVM_annotation definition to dutil.h
224 76401e9e46f07753 libbpf: Sync with latest libbpf repo to pick support for BTF_KIND_TYPE_TAG
225 0135ccd632796ab3 dwarf_loader: Warn about DW_TAG_skeleton_unit and give a workaround
226 433dc780ca48944b fprintf: Add DWARF5 tags added in elfutils 0.170
227 7af9ed4aed182869 dwarf_loader: Print the hexadecimal value for unexpected tags in die__process()
228 ec62499774c4bcac btf_encoder: generate BTF_KIND_DECL_TAGs for typedef btf_decl_tag attributes
229 468b4196f65458e8 dwarf_loader: support typedef DW_TAG_LLVM_annotation
230 696c62180455fd29 btf_loader: Use cacheline size to infer alignment
231 48f4086b766d2214 btf_loader: Propagate struct conf_load
232 772725a77d3323c6 dwarves_fprintf: Move cacheline_size into struct conf_fprintf
233 cdd088c05cfed082 btfdiff: Suppress alignment tags with BTF as well as with DWARF
234 836c139fdf6f2b13 btf_loader: Infer alignment info
235 4db65fe0cd02b3cc core: Export tag__natural_alignment()
236 43e8216c25ee767f fprintf: Fix __attribute__((__aligned__(N)) handling for struct members
237 c52f6421f21146ad btf: Rename btf_tag to btf_decl_tag
238 3433c67bbd158e1d manpages: Minor fixes
239 e975d0fba833d02d btf_loader: Refactor class__fixup_btf_bitfields
240 5282feee6d4d3a88 pahole: Add --skip_missing option
241 6931e393f8f6d81f fprintf: Fix nested struct printing wrt attributes
242 16a7acaba4466121 btf_encoder: Fix handling of percpu symbols on s390
243 3cde0135ca51de73 dwarf_loader: Fix heap overflow when accessing variable specification
244 a9c99e98815f06bd dwarves: Introduce conf_load->thread_exit() callback
245 cc6c7d473d518324 Update libbpf to get API to combine BTF
246 e38e89e8539b144a btf_encoder: Generate BTF_KIND_TAG from llvm annotations
247 aa8c494e65a77fa5 dwarf_loader: Parse DWARF tag DW_TAG_LLVM_annotation
248 3d20210d84f61ee2 CMakeList.txt: Don't download libbpf source when system library is used
249 38fad22d669ab044 libbpf: Get latest libbpf
250 88431099950ab3e8 CMakeList.txt: Make python optional
252 v1.22:
254 Mon Aug 23 2021
256 40a40df961e74aac core: Bump the chunk size for ptr_table uses in types, tags, functions tables
257 9f0809e6a8e790a1 pahole: Introduce --ptr_table_stats
258 f035871495435e58 core: Add CU stats printer
259 c59e996c97eb5569 pahole: Fix races in accessing type information in live CUs
260 c34b6c6cc96b9669 pahole: Add missing limits.h include to get ULLONG_MAX definition
261 5e8ad60d1f33bed6 CMakeList.txt: Look for obstack outside libc
262 739bc50b90694ffe cmake: Add a module to find if obstack is in a separate library
263 5244b47a883bee96 CMakeList.txt: Look for argp outside libc
264 3f70d31571d47c64 cmake: Add a module to find if argp is in a separate library
265 9f9588dc2bd8c955 fprintf: Add alternative method for reading the data cacheline size
266 71867afd666f2945 core: Include missing limits.h to get PATH_MAX definition
267 0d8d457fa325fb07 dutil: Include linux/stddef.h to build on Alpine Linux systems
268 bb02fec203463b9f README.tarball: Overcome --transform problem with symlinks
269 9fed416b380a7a17 MANIFEST: Add lib/include/bpf
270 cb1cf166769a169e spec: Remove deleted libbtf.h from the RPM file list
271 d0c3dd18c7d81cff README.tarball: Remove hardcoded version, get it from 'git tag'
272 b5140d5e6c8cade8 MANIFEST: Remove long gone strings header files
273 02fd228f6af7b04e MANIFEST: Add buildcmd.sh
274 06e41eccc2d19263 buildcmd.sh: Add single build script for use in CI
275 eba3e874add53187 pahole: Consider type members's names when comparing unions, structs
276 f61d458c9126467e pahole: Consider type members's types when comparing unions, structs
277 589a298829760a14 core: Introduce helpers for getting the first and next members of a type
278 815041d6dc4d62bf pahole: Improve the type sorting routine to consider multiple types with same name
279 93e26698693aca95 core: Remove extra ; in 'print_numeric_version' extern declaration
280 19798784d7a715d0 btf_loader: Mark the 'level' arg to the libbpf error callback as __maybe_unused
281 22763a8fc7ee5f79 btf_loader: Mark create_new_datasec() args as __maybe_unused
282 38df86db2b65dd43 dwarf_loader: cus__load_debug_types() doesn't use its 'cus' arg, remove it
283 16d646c07e98d66c dwarf_loader: Rename finalize_cu_immediately() to cus__finalize() to follow convention
284 90599e6177f20696 dwarf_loader: Remove unused 'dcu' argument from finalize_cu_immediately()
285 6fd4377a0db1e8d3 dwarf_loader: Remove unused 'dcus' argument from cu__finalize()
286 2bb04ecf79880a97 dwarf_loader: Remove unused 'cus' argument from finalize_cu()
287 9ada372a21d0abc2 dwarf_loader: Fix signed/unsigned comparision in tag__recode_dwarf_bitfield()
288 e4e9267c3a177ffa core: cus__fprintf_load_files_err() doesn't use its 'cus' argument
289 df92cb6b8e0f1577 core: Change last_seen_bit to uint32_t in class__find_holes()
290 789d8b3e1a7210d1 core: Change aligned_start to uint32_t in class__find_holes()
291 182cdcaed9055c76 core: Change cur_bitfield_end to uint32_t in class__find_holes()
292 5900f43f10844971 core: Change bit_start and bit_end to uint32_t in class__find_holes()
293 8634d8535f3fb25d btf_encoder: Fix signed/unsigned comparision
294 8d2efa2b6c147c37 btf_encoder: has_arg_names() doesn't need the 'cu' pointer
295 05f737076f81eab9 btf_encoder: btf_encoder__encode_tag() doesn't need the 'core_id' pointer
296 dc30e82b26dc98ef btf_encoder: btf_encoder__encode_tag() doesn't need the 'cu' pointer
297 4360359e434b41db btf_encoder: btf_encoder__add_struct_type() doesn't need the 'cu' pointer
298 6e1e4881a584ca54 btf_encoder: btf_encoder__add_func_proto() doesn't need the 'cu' pointer
299 9fbfcee7d9708876 btf_encoder: No need to read the ehdr in btf_encoder__write_elf(), ditch it
300 898cc490279c794b ctracer: No need to read the ehdr, ditch it
301 dee83e27dd69cb98 btf_encoder: No need to store the ehdr in the instance
302 24404190b80aa6bf elf_symtab: Remove needless GElf_Ehdr pointer argument from the constructor
303 74c2078e04755b6a dutil: elf_symtab__new() doesn't need the GElf_Ehdr *ep argument
304 23ea62817c3c9d1d pahole: Move case fallthru comment to after the statement
305 7a8e75cd9a99f618 elfcreator: elfcreator_copy_scn() doesn't need the 'elf' arg
306 3925a5bd53d68edc syscse: zero_extend() doesn't need a 'cu' arg
307 21b2933f018a954d pahole: Fix signedness of ternary expression operator
308 4e11c13895556982 ctracer: Remove a bunch of unused 'cu' pointers
309 54c1e93b8eada3db pahole: Use the 'prototypes' parameter in prototypes__load()
310 8b495918e6b52c4c codiff: class__find_pair_member() doesn't need 'cu' args
311 057be3d9936f78d9 core: class__find_member_by_name() doesn't need a cu pointer
312 ce9de90364d0fe98 core: Document type->node member usage
313 cead526d6b96e1d7 core: Fix nnr_members typo on 'struct type' comment docs
314 7cfc9be1f27876f4 man-pages: Improve the --nr_methods/-m pahole man page entry
315 3895127ce674cfb6 pahole: Clarify that currently --nr_methods doesn't work together witn -C
316 2ea46285aca0c639 pahole: No need to store the class name in 'struct structure'
317 4d8551396df5ce5a pahole: Multithreaded DWARF loading requires elfutils >= 0.178
318 e57e23c72a7c0446 btf_encoder: Add methods to maintain a list of btf encoders
319 e9b83dba79a87935 list: Adopt list_next_entry() from the Linux kernel
320 6edae3e768e6bc0d dwarf_loader: Make hash table size default to 12, faster than 15
321 d2d83be1e2124785 pahole: Allow tweaking the size of the loader hash tables
322 ff7bd7083f36db80 core: Allow sizing the loader hash table
323 3068ff36b7ff943d hash: Remove unused hash_32(), hash_ptr()
324 8eebf70d05d881cf dwarf_loader: Use a per-CU frontend cache for the latest lookup result
325 a2f1e698487b783c core: Use obstacks: take 2
326 dca86fb8c2220f9a dwarf_loader: Add comment on why we can't ignore lexblocks
327 9d0a7ee0c38ebac5 pahole: Ignore DW_TAG_label when encoding BTF
328 d40c5f1e20795938 core: Allow ignoring DW_TAG_label
329 51ba83192979916e pahole: Ignore DW_TAG_inline_expansion when encoding BTF
330 903863889131a7fa core: Allow ignoring DW_TAG_inline_expansion
331 20757745f04ace54 pahole: Allow encoding BTF with parallel DWARF loading
332 5a85d9a450819500 core: Zero out unused entries when extending ptr_table array in ptr_table__add()
333 d133569bd0f0b422 pahole: No need to read DW_AT_alignment when encoding BTF
334 21a41e5386938db1 dwarf_loader: Allow asking not to read the DW_AT_alignment attribute
335 1ef1639039b56005 dwarf_loader: Do not look for non-C DWARF attributes in C CUs
336 88265eab35666f34 core: Add cu__is_c() to check if the CU language is C
337 1caed1c443d4a0dc dwarf_loader: Add a lock around dwarf_decl_file() and dwarf_decl_line() calls
338 dd13708f2fd7557b btfdiff: Use multithreaded DWARF loading
339 f95f7838499f94c3 btfdiff: Use --sort for pretty printing from both BTF and DWARF
340 3e1c7a20770ec432 pahole: Introduce --sort
341 967290bc7176e3c2 pahole: Store the class id in 'struct structure' as well
342 2b45e1b6d04b147c dwarf_loader: Defer freeing libdw Dwfl handler
343 35845e7e41872158 core: Provide a way to store per loader info in cus and an exit function
344 5365c45177643f35 pahole: Keep class + cu in tree of structures
345 fb99cad539e58638 dwarf_loader: Parallel DWARF loading
346 75d4748861ad98cf pahole: Disable parallell BTF encoding for now
347 1c60f71daacbe4d0 pahole: Add locking for the structures list and rbtree
348 46ad8c01585df768 dwarf_loader: Introduce 'dwarf_cus' to group all the DWARF specific per-cus state
349 d963af9fd8148ba0 dwarf_loader: Factor common bits for creating and processing CU
350 0c5bf70cc1259162 fprintf: class__vtable_fprintf() doesn't need a 'cu' arg
351 38ff86b149e1aa9a fprintf: string_type__fprintf() doesn't need a 'cu' arg
352 a75c342ac2fc6c54 core: Ditch tag__free_orig_info(), unused
353 80fe32fd294ac15e core: variable__name() doesn't need a 'cu' arg
354 caa219dffcb41422 core: base_type__name() doesn't need a 'cu' arg
355 7569e46d3515f93e core: namespace__delete() doesn't need a 'cu' arg
356 de4e8b7f178257d5 core: {tag,function,lexblock}__delete() doesn't need a 'cu' arg
357 789ed4e3a2c34b54 core: ftype__delete() doesn't need a 'cu' arg
358 6340cb462767aa95 core: enumeration__delete() doesn't need a 'cu' arg
359 33e44f5295702d95 core: type__delete() doesn't need a 'cu' arg
360 0f54ca9c827e9ef7 core: class__clone() doesn't need a 'cu' arg
361 2b2014187b811243 core: class__delete() doesn't need a 'cu' arg
362 f40900eba656db3b core: type__delete_class_members() doesn't need a 'cu' arg
363 50916756d59ad7f9 core: class_member__delete() doesn't need a 'cu' arg
364 2e50463c3aa149d3 core: type__clone_members() doesn't need a 'cu' arg
365 a66208355ea8108c core: class_member__clone() doesn't need a 'cu' arg
366 33e0d5f874dc22c4 pahole: Introduce --prettify option
367 bc36e94f32e662aa pahole: Try harder to resolve the --header type when pretty printing
368 fcfa2141c375849b pahole: Make prototype__stdio_fprintf_value() receive a FILE to read raw data from
369 1a65d232b040fae6 man-page: Move the PRETTY PRINTING header earlier
370 2d35630fa55de2bc pahole: Make pipe_seek() honour the 'fp' arg instead of hardcoding stdin
371 9aa01472d9655e1b pahole: Rename 'fp' to 'output' in prototype__stdio_fprintf_value()
372 472b94018055873d pahole: Use the supplied 'fp' argument in type__instance_read_once()
373 63992cb02a69485b core: Use namespace->name in class__clone()
374 ced4c34c37acd185 core: Remove strings.c, unused
375 adbb66c2957d9eef ctf_loader: Use uint32_t instead of strings_t, that is going away
376 ad707445b3fcaf11 core: Remove base_type_name_to_size_table.sname, unused
377 f8d571934b96ea35 pahole: Add missing bpf/btf.h include
378 deb6a4a4921b33ec libctf: Comment out unused CTF encoding functions
379 82155bc92f726c43 btf_loader: Add missing bpf/btf.h include
380 05f1f9dece4ed54d btf_encoder: Add missing bpf/btf.h include
381 f4a77d03909c1cf8 pahole: Use conf_load.kabi_prefix
382 2b9bd83e63bacb59 dwarf_loader: Make attr_suffix() handle kabi_prefix
383 daaafeb35f168fd1 dwarf_loader: Pass conf_load to functions calling attr_string()
384 def39099c1920346 ctf_loader: No need for the 'strings' extern, not used
385 2499920ac8d88b82 btf_loader: No need for the 'strings' extern, not used
386 a388aaf489f945d4 dwarf_loader: Remove unused strings variable and debug_fmt_ops->{init,exit}()
387 3d3b7b3287617b8f core: Remove unused debug_fmt_ops->dwarf__strings_ptr()
388 05687c547e9f22e8 core: Remove unused cu__string() method
389 a201149e181be613 dwarf_loader: No need to strdup() what dwarf_formstring() returns
390 6b7f1b72f9a958e4 core: No need for debug_fmt_ops->variable_name() anymore
391 9d0e3ab9a29c2e81 pahole: function__name() doesn't need a 'struct cu *' argument
392 a7d789a4f841b0ea core: Make variable->name a real string
393 b5694280ec5b1f1f core: Make label->name a real string
394 e974d1b2404154ea pahole: class_member_filter__new() doesn't need a 'struct cu *' argument
395 0275e8d24975c531 pahole: class_member_filter__parse() doesn't need a 'struct cu *' argument
396 90183e8e4da43785 pahole: tag__real_sizeof() doesn't need a 'struct cu *' argument
397 5cb91927385d7b75 pahole: Rename tag__fprintf_hexdump_value() to instance__fprintf_hexdump_value()
398 75c769a900185faf pahole: enumerations__lookup_entry_from_value() doesn't need to return a CU anymore
399 1edca2655284d968 pahole: enumeration__lookup_entry_from_value() doesn't need a 'cu' argument
400 f8d98eff756bf406 core: Ditch unused enumeration__prefix_len() method
401 5cc365164a4cba46 core: Ditch unused enumeration__prefix() method
402 e18c60d793935ab6 pahole: enumeration__lookup_value() doesn't need a 'cu' argument
403 4b877c8e6762c42f pahole: enumeration__lookup_enumerator() doesn't need a 'cu' argument
404 3ff11828fee01a91 core: enumeration__emit_definitions() doesn't need a 'cu' argument
405 0947d6e7954d752d core: enumeration__fprintf() doesn't need a 'cu' argument
406 bb22f5bb0a137342 core: Make enumeration__max_entry_name_len() static
407 dc83336171d1157c core: enumeration__max_entry_name_len() doesn't need a 'cu' argument
408 ec1667c76db61e2f core: Make enumeration__calc_prefix() static
409 45ec63ed20a56557 core: enumeration__calc_prefix doesn't need a 'cu' argument
410 2fae84e2f79726fb btf_encoder: btf_encoder__add_enum_type() doesn't need a 'cu' argument, ditch it
411 96243fdd79c5c45d core: enumerator__name() doesn't need a 'cu' argument, ditch it
412 ee5c12893b2e8aa8 core: Ditch dwarves__active_loader, unused
413 713239bc008910ff core: Make enumerator->name a real string
414 7721cc17aca7020d emit: type__emit_fwd_decl() isn't used outside emit.c, make it static
415 9aa5db7acd420d55 emit: type__emit_fwd_decl() doesn't need a cu arg
416 c46f91ef6f9cd0a1 emit: type_emissions__find_definition() doesn't need a cu arg
417 c127d25daf88c1a2 core: class__name() doesn't need a cu arg
418 00e8c5fe216755d6 core: type__name() doesn't need a cu arg
419 b99c4008acca8794 core: Make namespace->name a real string
420 379a73c6eb4633d4 core: Make class_member->name a real string
421 3280cb41768a7130 core: Make parameter->name a real string
422 f009162fd133d155 core: Make base_type->name a real string
423 e2ee753fa74ca570 pahole: Disable incomplete CTF encoder
424 0d13bc50ee8dbdf8 core: Ditch unused cu__find_struct_by_sname()
425 46f3f372416d7f9f core: Convert cu__find_base_type_by_sname_and_size to search for a string
426 f84e8777eada296a core: Convert cu__find_enumeration_by_sname_and_size to search for a string
427 a16c82f7110467b7 dwarf_loader: Rename strings_t 'name' to 'sname' to clarify usage
428 82e5b5101a6adf73 core: Make function->name a real string
429 4f73cac85321bd5b core: Make function->linkage_name a real string
430 a93160df5335ed2e dwarf_loader: Make dwarf_tag->decl_file a real string
431 a3fcbcacf79787d6 pahole: Allow specifying the number of threads to use while loading files
432 d70b2562ee5d90f2 pahole: Make '-j' available for use as number of jobs (threads)
433 41a283c65d300945 core: Protect cus->cus with a mutex
434 972065482a7f714d core: Make 'struct cus' opaque, only visible in dwarves.c
435 3895b29060fdc21e core: Introduce helper to return number of cu entries in a 'struct cus'
436 874e750fb8bddcad core: Move cus__find_pair() from codiff to the core
437 bf74fc1fcf1ab78e core: Introduce helper to return if there is no cu entries in a 'struct cus'
438 7020f9214328ac8d core: Prepare cus__find_cu_by_name() for locking
439 4bf7285b37108222 core: Prepare cus__find_function_at_addr() for locking
440 73a2fd1e5a70c7f2 core: Prepare __cus__find_struct_by_name() for locking
441 5020bf721b204673 core: Prepare cus__find_type_by_name() for locking
442 d124926baf2366a2 core: Initialize cu->priv in cu__new()
443 3ec54ee72ff7c5b1 CMakeList.txt: Bump version to the upcoming 1.22 release, not out of the door yet
444 1ef87b26fd268b52 Revert "btf_encoder: Reduce the size of encode_cu() by moving function encoding to separate method"
445 7869cc113b0b5a3d dwarf_loader: Separate non-LTO per CU processing + BTF encoding part
446 de3a7f912559433c btf_encoder: Reduce the size of encode_cu() by moving function encoding to separate method
447 d348b37ed16249e0 btf_encoder: Reduce the size of encode_cu() by moving var encoding to separate method
448 f62196d3be5a8765 btf_encoder: No need to set the endianness twice when encoding into an ELF file
449 819f83bd9736b9c8 btf_encoder: Pass detached_filename to the constructor
450 7ed4ddc46826538e btf_encoder: Adopt writing to raw file method
451 1498094d335f697a btf_encoder: Rename btf__encode_in_elf to btf_encoder__write_elf, shortening function signature
452 cd2b8978c43ea00a btf_encoder: Combine btf__write_elf() with btf__encode_in_elf()
453 18a3e9711ccc6887 btf_encoder: Move duplicate code to btf_encoder__encode()
454 9eb3d7a29de32bf4 btf_encoder: Pass the 'skip_encoding_vars' to the constructor
455 707101ec38d76958 btf_encoder: No need to export the 'struct btf_definition', make it opaque
456 f1feaa94c7a92e5c libbpf: bump dependency to >= 0.4.0
457 1b50808c2958dde3 libbpf: If LIBBPF_EMBEDDED=OFF and libbpf-dev/pkgconfig is not available, fail the build
458 790dfbda79444d11 headers: Rebame __unused to __maybe_unused to avoid clashes with system headers
459 82756ea3eaf1f6e7 libbpf: Fixup patch to allow to use packaged version
460 ba953a53be25765e README: Add documentation for -DBUILD_SHARED_LIBS
461 aa2027708659f172 CMakeLists.txt: Enable SHARED and STATIC lib creation
462 ae2581647e849488 libbpf: Allow to use packaged version
463 743f2536d8b876a4 btf_encoder: Move libbtf.c to btf_encoder.c, the only user of its functions
464 6f72dddbed0e1bf8 btf_encoder: Move PERCPU_SECTION define to the only source file using it
465 f0f5b4f2bc34b029 btf_encoder: Move library global variable btf_gen_floats to btf_encoder class
466 09970b03bd309d83 btf_encoder: Ditch unused 'btf_encoder__verbose' global variable
467 1bf2e3511a1386c4 btf_encoder: Use encoder->verbose instead of btf_encoder__verbose
468 4ffa484b6a04530b btf_encoder: Adopt btf__log_func_param() and use encoder->verbose
469 729da7613b399f9c btf_encoder: Adopt btf__log_member() and use encoder->verbose
470 be75b76b6b9e479f btf_encoder: Adopt btf__log_type() and use encoder->verbose
471 9f19e96001f72c49 btf_encoder: No need to pass encoder->percpu_secinfo to btf_encoder__add_datasec()
472 869c177f8e13ce12 btf_encoder: Make btf_encoder__add_var_secinfo() receive a btf_encoder pointer
473 f0e8cd68f5dcb20b btf_encoder: Adopt btf__encode_var_secinfo() as btf_encoder__add_var_secinfo()
474 cc646d93d18270e9 btf_encoder: Adopt btf__encode_datasec_type() as btf_encoder__add_datasec()
475 b0f71fabdeee329b btf_encoder: Adopt btf__encode_var_type() as btf_encoder__add_var()
476 1aece1e7e6d593db btf_encoder: Adopt btf__encode_enum_val() as btf_encoder__add_enum_val()
477 4371b3cd5b9b18e6 btf_encoder: Adopt btf__encode_enum() as btf_encoder__add_enum()
478 b536947512efcb7e btf_encoder: Adopt btf__encode_enumeration_type() as btf_encoder__add_enum_type()
479 1bc29591ec010fa8 btf_encoder: Adopt btf__encode_func_proto_param() as btf_encoder__add_func_param()
480 393febe592e94f4a btf_encoder: Adopt btf__encode_func_proto() as btf_encoder__add_func_proto()
481 4eb4c03578b29791 btf_encoder: Adopt btf__encode_array() as btf_encoder__add_array()
482 06cd9f00c69d11bd btf_encoder: Adopt btf__encode_struct() as btf_encoder__add_struct()
483 0b29d5a65ccef5f6 btf_encoder: Adopt btf__encode_member() as btf_encoder__add_field()
484 3e2a1f7ddc930d3c btf_encoder: Adopt btf__encode_struct_type() as btf_encoder__add_struct_type()
485 2c7a2f270ef7bcea btf_encoder: Adopt btf__encode_ref_type() as btf_encoder__add_ref_type()
486 07d4ec9cef0c1619 btf_encoder: Adopt btf__encode_float_type() as btf_encoder__add_float()
487 68ed8af85908e432 btf_encoder: Adopt btf__encode_base_type() as btf_encoder__add_base_type()
488 14ab2e036147b6bc libbtf: Ditch unused btf_elf__verbose_log() macro
489 539c94fee9315254 libbtf: Ditch btf_elf class, unused
490 282a8a2187bde9bd btf_encoder: Use 'struct btf' directly, stop using btf_elf
491 dd0b01f56837794e libbtf: Remove unused ELF fields and calls from btf_elf
492 a0c5f49b0c405b1b btf_encoder: Phagocytize percpu_secinfo from btf_elf
493 c288e29d06c380b5 pahole: Rename 'encoder' to 'btf_encoder' as we support multiple formats
494 46a3e3a87a8963ca btf_encoder: Move the global btf_encoder to its users, like pahole
495 fa849010b4565015 btf_encoder: Adopt the cu__encode_btf() method, as btf_encoder__encode_cu()
496 3be437c5e7d2777e btf_encoder: Set btf_encoder__verbose in just one place, its users
497 e1e787af4496b51f btf_encoder: Move btf_elf__verbose var to btf_encoder class
498 66f4054252ab996e btf_encoder: Adopt btf_elf__force, its only used in btf_encoder methods
499 5e1207754eb67249 pahole: Adopt btf_encoder object instantiation from btf_encoder
500 0208952e8ffcfdc3 btf_encoder: Move the function encode() to be a btf_encoder method
501 bcc5f95364da96bb btf_encoder: Temporarily expose the 'encoder' variable
502 e27be59f10c7c6e3 btf_encoder: Move 'filename' member from btf_elf to btf_encoder
503 da9d70a16ff01492 btfdiff: Support diffing DWARF vs detached BTF
504 6bc135c8f49696a9 btf_encoder: No need for calling btf_encoder__encode() from cu__encode_btf()
505 48a0fa2ef7b546a3 btf_encoder: Move btf_elf based encode_in_elf and write_elf methods to btf_encoder
506 cc8eae604dc07b5e btf_encoder: Move collect_symbols() call to btf_encoder constructor
507 96e59c55686bccaf btf_encoder: Remove needless hash.h include, not used anymore
508 92f8852d8d178966 btf_encoder: Move global elf_functions table to the btf_encoder class
509 aa48ed55a790c2d5 btf_encoder: Move ELF's ehdr from btf_elf to btf_encoder
510 b3701a8346a6ea71 btf_encoder: Move 'symtab' from btf_elf to btf_encoder
511 be8dac48691f6578 btf_encoder: Move percpu members from btf_elf to btf_encoder
512 7f70877b198200ac btf_encoder: Add a 'verbose' member for encoder specific logging requests
513 ef8a48b3bc7cda1f btf_encoder: Move 'array_index_id' global variable to 'struct btf_encoder'
514 f3e6edffd7210265 btf_encoder: Move percpu vars global variables to btf_encoder class
515 14053c490bf68a49 btf_encoder: Adopt collect_function() as a btf_encoder method
516 049675f4a5401ac2 btf_encoder: Adopt collect_per_cpu_var() as a btf_encoder method
517 21b5e9b368228502 btf_encoder: Adopt collect_symbol() as a btf_encoder method
518 e40bc12ddf42b4a8 btf_encoder: Move 'need_index_type' global variable to 'struct btf_encoder'
519 cccfeec3c7d68f89 btf_encoder: Make tag__encode_btf() its encode_tag() method
520 65b3c598ab24a14a btf_encoder: Move 'has_index_type' global variable to 'struct btf_encoder'
521 a5c732e712564798 btf_encoder: Introduce 'struct btf_encoder' to have all the current globals
522 bd4e585d81a35862 btf_encoder: Replace btfe with btf in tag__encode_btf()
523 de2676159d8472b7 btf_encoder: Move encode_enumeration_type() from btf_elf to btf
524 80dec71c934fc96a btf_encoder: Move encode_struct_type() from btf_elf to btf
525 6d7790a5d4fc68a4 btf_encoder: Move add_datasec_type() from btf_elf to btf encode_datasec_type()
526 12d340c321e31564 btf_encoder: Move add_var_secinfo() from btf_elf to btf encode_var_secinfo()
527 d90b38c1f3ca9171 btf_encoder: Move add_var_type() from btf_elf to btf encode_var_type()
528 bce82c1a00a9beee btf_encoder: Move add_func_proto() from btf_elf to btf encode_func_proto()
529 188f25b74130d131 btf_encoder: Move add_enum() from btf_elf to btf encode_enum()
530 f82bd80a5c175425 btf_encoder: Move add_struct() from btf_elf to btf encode_struct()
531 1216aebd27ecd4e6 btf_encoder: Move add_array() from btf_elf to btf encode_array()
532 a96c91261e731602 btf_encoder: Move add_ref_type() from btf_elf to btf encode_ref_type()
533 a97ed8080a354487 btf_encoder: Move add_member() from btf_elf to btf encode_member()
534 56e0c2d4ccc7a9bd btf_encoder: Move add_base_type() from btf_elf to btf encode_base_type()
535 adeeb9ebcf7ef8bd btf_encoder: Move add_float_type() from btf_elf to btf encode_float_type()
536 37d3b8a1cedac677 btf_encoder: bpf__log_func_param() doesn't need the btfe arg
537 64d216f57e7a229f btf_encoder: Move log_member() from btf_elf to btf
538 20bb260428c0a1ad btf_encoder: Move log_type() from btf_elf to btf
539 16d026ce5db765c9 btf_encoder: Move log_err() from btf_elf to btf
540 c5f594eaa9b5ab8c btf_encoder: Remove 'elf' from btf_elf__int_encoding_str() name
541 c81d11b8bb80bed1 btf_elf: Remove base_btf member, used only in the constructor
542 69f5fff50e442cad btf_elf: No point in falling back to raw BTF in btf_new()
543 3fcf804a7e69aa4f btf_elf: No point in looking at the filename for /sys/kernel/btf in btf_elf__new()
544 c9eb447502b771c5 libbtf: Ditch unused btf_elf__string() method
545 a355a245fb48b05f libbtf: Remove unused btf_elf__load()
546 3de65d433ab18301 btf_encoder: Move printable_name() from btfe to btf
547 7fb31d787d3deec1 btf_loader: Stop using libbtf.h and the btf_elf class
548 e431c18b80650545 btf_loader: cu__fixup_btf_bitfields doesn'n need btfe parameter, ditch it
549 8c1919c10df8a79f btf_loader: class__fixup_btf_bitfields doesn'n need btfe parameter, ditch it
550 4d2ae0d9049e47c5 btf_elf: Remove unused btfe->priv member
551 b54b74edfcd0dc8c btf_loader: Add a local 'btf' var to prep next patches
552 52bedef0fddaa227 btf_loader: Move load_sections() from btf_elf to btf
553 ac3f2952a854fccc btf_loader: Move load_types() from btf_elf to btf
554 1a33deae144dbd22 btf_loader: Move create_new_tag() from btfe to cu
555 8323cb33bc73817a btf_loader: Move create_new_datasec() from btfe to cu
556 6fb41bbf8e31f3cf btf_loader: Move create_new_variable() from btfe to cu
557 9122424dda37ccff btf_loader: Move create_new_typedef() from btfe to cu
558 dd3e9ab4a00f8cf9 btf_loader: Move create_new_forward_decl() from btfe to cu
559 cca6b51d292df6f1 btf_loader: Move create_new_subroutine_type() from btfe to cu
560 ba1b77d01dda3ac0 btf_loader: Move create_new_enumeration() from btfe to cu
561 a58bc8300f13c93f btf_loader: Move create_new_union() from btfe to cu
562 367f5fe74cbb35ec btf_loader: Move create_new_class() from btfe to cu
563 2460bead8a8fc02f btf_loader: The create_members() function doesn't need the btfe arg
564 1136795fec7ff6bf btf_loader: Move create_new_array() from btfe to cu
565 ab2f5028916c7822 btf_loader: Move create_new_float_type() from btfe to cu
566 6b452a1cc5f2f22b btf_loader: Move create_new_int_type() from btfe to cu
567 073a5f69ef19700a btf_loader: Move create_new_function() from btfe to cu
568 29ad464f73286067 btf_loader: Move load_ftype() from btfe to cu
569 407693e2cabfa7a3 btf_loader: Pass cu to the load_sections/types routines
570 89b9c4f8851ebc8f libbtf: Remove the 'base_btf' global var, now unused
571 6f70d0accaf17f74 pahole: Use conf_load->base_btf to call cu__encode_btf()
572 0e77be409969631b btf_loader: Use conf_load->base_btf instead of the global btf_base var
573 6ee61b161dbcc42c pahole: Set conf_load.btf_base when applicable
574 b8255beb12c02d76 core: Allow passing the base_btf object via 'struct conf_load'
575 f93e05d8bd45d4b3 btf_encoder: Pass the base BTF object to the BTF encoder
576 81797a00fbdd1017 btf_elf: Remove unused 'wordsize' member
577 ecc888b855c249a6 btf_loader: Use btf__pointer_size() to set cu->addr_size
578 e6b69ffc74dcb3f0 btf_elf: Remove unused is_big_endian member
579 81fe7d688de85fa2 btf_loader: Use btf__endianness() instead of to be removed btfe member
580 9f8ce7e1137f22c1 libbtf: Remove unused btf_elf->raw_btf member
581 89be5646a03435bf pahole: Allow encoding BTF into a detached file
582 22a76fbc8b33a3cd btf_loader: Use btf__parse_split()
583 c9d4c106ab95cd8c dwarf_loader: Add define for DW_OP_addrx
584 76f7844c817eeac5 libbtf: Fix typo
585 3d510406ff363056 pahole: Add --kabi_prefix flag
586 0d17503db0580a66 btf_encoder: fix and complete filtering out zero-sized per-CPU variables
587 fb418f9d8384d3a9 dwarves: Make handling of NULL by destructos consistent
588 f049fe9ebf7aa9c2 dutil: Make handling of NULL by destructos consistent
589 1512ab8ab6fe76a9 pahole: Make handling of NULL by destructos consistent
590 1105b7dad2d0978b elf_symtab: Use zfree() where applicable
591 131275fa20437dec codiff: Use zfree() where applicable
592 6784b03fd447f507 dutil: Adopt the zalloc()/zfree() from perf
593 d7f5824a9e1895d1 libctf: Use zfree() where applicable
594 45d9eb8602b42a6b pahole: Use zfree() where applicable
595 f48cc78e8e6e56df dwarf_loader: Use zfree() instead of ad-hoc implementation
596 d0f6a4a1da524873 gobuffer: Use zfree() and make delete accept NULL, like free()
597 db37185d16d4a56d dwarves: Use zfree()
598 e7e86c75e149c161 libbtf: Use zfree()
599 972001e58e9f5ed9 dutil: Adopt zfree(), to use it more pervasively
600 5847901abf13e8bd dwarves: Plug leaks in cu__new() found by covscan
601 32114e611a93b046 dwarf_loader: Call dwarf_cu__delete() when aborting the load
602 26bd4c41646a64b9 dwarf_loader: Delete the allocated CU when aborting
603 d8940df90b4a952b dwarf_loader: Make all ABORT returns go thru a single exit label
604 3ba54ee43a301419 dwarf_loader: Use zalloc() to allocate dwarf_cu
605 f3957627bb3e3431 dwarf_loader: Make dwarf_cu__delete() accept NULL, just like free()
606 8772c9d827813d4d dwarves: Accept NULL in cu__delete(), just like free() accepts
607 25cc0c77545cefbc dwarf_loader: Check if we have a CU after the loop in cus__merge_and_process_cu()
608 2f30062b546de1ef dwarf_loader: Check tag__recode_dwarf_bitfield() return, may be NULL
609 d68fd2bbc59291f3 ctracer: Initialize the 'parm_list' variable, detected by covscan
610 5b0fb9745e1e9597 codiff: Fix usage of negative errno values with strerror(), reported by covscan
611 cba940fb86a46fa9 btf_loader: Fix some memory leaks found by covscan
612 674063b1ea4156d2 loaders: Plug enumeration__delete() leak detected by covscan
613 505a1f5615c5064a dwarves: Stop using obstacks
614 872658b88021b487 CMakeLists.txt: Specify the file extension of srcs
615 aa8519378a37c9a5 README: Mention how to specify another prefix
616 58a98f76ac95b1bb btf: Remove ftrace filter
617 7c60b0443cb01795 pahole: Fix error message when --header couldn't be read
618 7eea706c14997b4f pahole: Introduce --with_flexible_array option to show just types ending in a flexible array
620 v1.21:
622 Fri Apr  9 2021
624 ae0b7dde1fd50b12 dwarf_loader: Handle DWARF5 DW_OP_addrx properly
625 9adb014930f31c66 dwarf_loader: Handle subprogram ret type with abstract_origin properly
626 5752d1951d081a80 dwarf_loader: Check .notes section for LTO build info
627 209e45424ff4a22d dwarf_loader: Check .debug_abbrev for cross-CU references
628 39227909db3cc2c2 dwarf_loader: Permit merging all DWARF CU's for clang LTO built binary
629 763475ca1101ccfe dwarf_loader: Factor out common code to initialize a cu
630 d0d3fbd4744953e8 dwarf_loader: Permit a flexible HASHTAGS__BITS
631 ffe0ef4d73906c18 btf: Add --btf_gen_all flag
632 de708b33114d42c2 btf: Add support for the floating-point types
633 4b7f8c04d009942b fprintf: Honour conf_fprintf.hex when printing enumerations
634 f2889ff163726336 Avoid warning when building with NDEBUG
635 8e1f8c904e303d5d btf_encoder: Match ftrace addresses within ELF functions
636 9fecc77ed82d429f dwarf_loader: Use a better hashing function, from libbpf
637 0125de3a4c055cdf btf_encoder: Funnel ELF error reporting through a macro
638 7d8e829f636f47ab btf_encoder: Sanitize non-regular int base type
640 v1.20:
642 Tue Feb  2 2021
644 8d6f06f053a06829 (HEAD -> master, seventh/master, quaco/master, origin/master, origin/HEAD) dwarf_loader: Add conditional DW_FORM_implicit_const definition for older systems
645 66d12e4790b7c5e5 dtagnames: Stop using the deprecated mallinfo() function
646 1279e439b622aeb5 cmake: Bump minimum required version to 2.8.12 as per upstream support warning
647 b1eaf0da6d1f72b2 dwarves: Make enum prefix search more robust
648 d783117162c0212d dwarf_loader: Handle DWARF5 DW_TAG_call_site like DW_TAG_GNU_call_site
649 3ff98a6396e91d0a dwarf_loader: Support DW_FORM_implicit_const in __attr_offset()
650 b91b19840b0062b8 dwarf_loader: Support DW_AT_data_bit_offset
651 c692e8ac5ccbab99 dwarf_loader: Optimize a bit the reading of DW_AT_data_member_location
652 65917b24942ce620 dwarf_loader: Fix typo
653 77205a119c85e396 dwarf_loader: Introduce __attr_offset() to reuse call to dwarf_attr()
654 8ec231f6b0c8aaef dwarf_loader: Support DW_FORM_implicit_const in attr_numeric()
655 7453895e01edb535 btf_encoder: Improve ELF error reporting
656 1bb49897dd2b65b0 bpf_encoder: Translate SHN_XINDEX in symbol's st_shndx values
657 3f8aad340bf1a188 elf_symtab: Handle SHN_XINDEX index in elf_section_by_name()
658 e32b9800e650a6eb btf_encoder: Add extra checks for symbol names
659 82749180b23d3c9c libbpf: allow to use packaged version
660 452dbcf35f1a7bf9 btf_encoder: Improve error-handling around objcopy
661 cf381f9a3822d68b btf_encoder: Fix handling of restrict qualifier
662 b688e35970600c15 btf_encoder: fix skipping per-CPU variables at offset 0
663 8c009d6ce762dfc9 btf_encoder: fix BTF variable generation for kernel modules
664 b94e97e015a94e6b dwarves: Fix compilation on 32-bit architectures
665 17df51c700248f02 btf_encoder: Detect kernel module ftrace addresses
666 06ca639505fc56c6 btf_encoder: Use address size based on ELF's class
667 aff60970d16b909e btf_encoder: Factor filter_functions function
668 1e6a3fed6e52d365 rpm: Fix changelog date
670 v1.19:
672 Fri Nov 20 2020
674 bf21da407593f104 fprintf: Make typedef__fprintf print anonymous enums
675 9c4bdf9331bf06a7 fprintf: Align enumerators
676 89cf28228a8ab55e fprintf: Add enumeration__max_entry_name_len()
677 932b84eb45a9b8ba fprintf: Make typedef__fprintf print anonymous structs
678 4a1479305b53933d pahole: Add heuristic to auto-add --btf_base for /sys/kernel/btf/ prefixed files
679 e1d01045828a5c4c btf: Fallback to raw BTF mode if the header magic matches
680 24cea890abedb15b pahole: Force '-F btf' with --btf_base
681 cfad738682506ce4 libbtf: Assume its raw_btf if filename starts with "/sys/kernel/btf/"
682 7293c7fceac36844 pahole: The --btf_base option receives a PATH, not a SIZE
683 b3dd4f3c3d5ea59e btf_encoder: Use better fallback message
684 d06048c53094d9d2 btf_encoder: Move btf_elf__verbose/btf_elf__force setup
685 8156bec8aedb685b btf_encoder: Fix function generation
686 d0cd007339ee509e btf_encoder: Generate also .init functions
687 25753e0396abea25 pfunct: Use load stealer to speed up --class
688 aa8fb8c091446467 man-pages: Add entry for -J/--btf_encode to pahole's man page
689 ace05ba9414c1fe4 btf: Add support for split BTF loading and encoding
690 7290d08b4a6e5876 libbpf: Update libbpf submodule reference to latest master
691 344f2483cfcd4952 libbtf: Improve variable naming and error reporting when writing out BTF
692 94a7535939f92e91 btf_encoder: Fix array index type numbering
693 9fa3a100f71e7a13 pfunct: Use a load stealer to stop as soon as a function is found
694 de18bd5fe3515358 pfunct: Try sole argument as a function name, just like pahole
695 bc1afd458562f21e pahole: Introduce --numeric_version for use in scripts and Makefiles
696 784c3dfbd63d5bcf dwarves: Switch from a string based version to major/minor numbers
697 fc06ee1b6e9dc14a pahole: Check if the sole arg is a file, not considering it a type if so
698 f47b3a2df3622204 dwarf_loader: Fix partial unit warning
699 5a22c2de79fb9edf btf_encoder: Change functions check due to broken dwarf
700 7b1af3f4844b36b9 btf_encoder: Move find_all_percpu_vars in generic collect_symbols
701 863e6f0f2cc08592 btf_encoder: Check var type after checking var addr.
702 5e7ab5b9e064a3eb btf_loader: Handle union forward declaration properly
703 ec3f944102a71241 cmake: Make libbpf's Linux UAPI headers available to all binaries
704 8cac1c54c83c346b btf_encoder: Ignore zero-sized ELF symbols
705 040fd7f585c9b9fc btf_encoder: Support cross-compiled ELF binaries with different endianness
706 29fce8dc8571c6af strings: use BTF's string APIs for strings management
707 75f3520fedf6afdb strings: Rename strings.h to avoid clashing with /usr/include/strings.h
708 bba7151e0fd2fb3a dwarf_loader: increase the size of lookup hash map
709 2e719cca66721284 btf_encoder: revamp how per-CPU variables are encoded
710 0258a47ef99500db btf_encoder: Discard CUs after BTF encoding
711 3c913e18b2702a9e btf_encoder: Fix emitting __ARRAY_SIZE_TYPE__ as index range type
712 48efa92933e81d28 btf_encoder: Use libbpf APIs to encode BTF type info
713 5d863aa7ce539e86 btf_loader: Use libbpf to load BTF
714 0a9b89910e711951 dwarves: Expose and maintain active debug info loader operations
715 7bc2dd07d51cb5ee btf_encoder: detect BTF encoding errors and exit
716 c35b7fa52cb8112a libbpf: Update to latest libbpf version
717 ef4f971a9cf745fc dwarf_loader: Conditionally define DW_AT_alignment
718 cc3f9dce3378280f pahole: Implement --packed
719 08f49262f474370a man-pages: Fix 'coimbine' typo
721 v1.18:
723 Fri 02 Oct 2020
725 aee6808c478b760f btf_loader: Initialize function->lexblock.tags to fix segfault in pdwtags
726 c815d26689313d8d btf_encoder: Handle DW_TAG_variable that has DW_AT_specification
727 b8068e7373cc1592 pahole: Only try using a single file name as a type name if not encoding BTF or CTF
728 8b1c63283194ebe1 libctf: Make can't get header message to appear only in verbose mode
729 63e11400e80f6ac4 libbtf: Make can't get header message to appear only in verbose mode
730 fc2b317db0bdc1a9 dwarf_loader: Check for unsupported_tag return in last two missing places
731 2b5f4895e8968e83 dwarf_loader: Warn user about unsupported TAGs
732 010a71e181b450d7 dwarf_loader: Handle unsupported_tag return in die__process_class()
733 3d616609ee0fd6df dwarf_loader: Add minimal handling of DW_TAG_subrange_type
734 2e8cd6a435d96335 dwarf_loader: Ignore DW_TAG_variant_part for now to fix a segfault
735 e9e6285fd0d63ed0 dwarf_loader: Skip empty CUs
736 1abc001417b579b8 btf_encoder: Introduce option '--btf_encode_force'
737 da4ad2f65028e321 btf_encoder: Allow disabling BTF var encoding.
738 f5847773d94d4875 fprintf: Support DW_TAG_string_type
739 8b00a5cd677df778 dwarf_loader: Support DW_TAG_string_type
740 0d9c3c9835659fb7 dwarves: Check if a member type wasn't found and avoid a NULL deref
741 2ecc308518edfe05 dwarf_loader: Bail out at DW_TAG_imported_unit tags
742 8c92fd298101171d dwarf_loader: Ignore entries in a DW_TAG_partial_unit, for now
743 4cfd420f7ef13af4 README: Add instructions to do a cross build
744 9e495f68c683574f dwarf_loader: Move vaddr to conditional where it is used
745 69fce762074a5483 pahole: Use "%s" in a snprintf call
746 22f93766cf02f4e0 pahole: Support multiple types for pretty printing
747 78f2177d904902c6 pahole: Print the evaluated range= per class
748 5c32b9d5c7ac8fff pahole: Count the total number of bytes read from stdin
749 e3e5a4626c94d9c5 pahole: Make sure the header is read only once
750 208bcd9873442013 pahole: Introduce 'range=member' as a class argument for pretty printing
751 b9e406311990c2d5 pahole: Cache the type_enum lookups into struct enumerator
752 fda1825f0b9f1c9f dwarves: Introduce tag_cu_node, so that we can have the leaner tag_cu
753 47d4dd4c8a2cf9fd pahole: Optimize --header processing by keeping the first successfull instance
754 fdfc64ec44f4ad53 pahole: Introduce --range
755 f63d3677e31d88a3 pahole: Support multiple enums in type_enum=
756 c50b6d37e99fddec pahole: Add infrastructure to have multiple concatenated type_enum
757 671ea22ca18dd41f pahole: Move finding type_enum to a separate function
758 dd3c0e9eb0cbc77f dwarves: Move the common initialization of fields for 'struct type'
759 aa7ab3e8755a4c12 pahole: Allow for more compact enum filters by suppressing common prefix
760 4ece15c37b028a80 dwarves: Find common enumerators prefix
761 d28bc97b5c12736b man-pages: Document pretty printing capabilities and provide examples
762 a345691f08f04f19 pahole: Make --header without -C to be equivalent to -C header-arg --count=1
763 eba4ac6b2c1dcb11 pahole: Fallback to pretty printing using types in multiple CUs
764 7c12b234ee30f6d2 dwarves: Introduce cus__find_type_by_name()
765 c6f3386e3364486d pahole: Make the type_instance constructor receive the looked up type + its CU
766 30297256e1f27de5 pahole: Pass the header type_instance to tag__stdio_fprintf_value()
767 ead8084d3ffcda1f pahole: Store the CU in the type_instance struct
768 2c886fff0af13510 pahole: Store the CU where type_enum was found
769 526b116bfec71054 pahole: If pretty printing, don't discard CUs, keep them
770 a1b8fddb4dcd90d9 pahole: Show which classes were not processed and why
771 bc6a3cac50cdbdf6 pahole: Fixup the --class_name parsing wrt class args (type=, sizeof=, etc)
772 363c37340521debe pahole: Remope pretty printed classes from the prototypes list
773 9f675e7fdbf525fb cmake: Use -O0 for debug builds
774 4e5b02beea24656d pahole: Don't stop when not finding the type_enum
775 823739b56f2b5230 pahole: Convert class_names into a list of struct prototypes
776 0a97d6c143fcc92a pahole: Factor out parsing class prototypes
777 80af0fbbf3a3f1f6 dutils: Allow for having a priv area per strlist
778 04b6547e7343410e pahole: Honour --hex_fmt when pretty printing
779 266c0255984ddbe7 pahole: Support filters without 'filter='
780 6c683ce0e11d6c1c pahole: Allow for a 'type' boolean class arg meaning 'type=type'
781 1c68f41bb87f7718 pahole: Allow for a 'sizeof' boolean class arg meaning 'sizeof=size'
782 b4b3fb0a3aeb9686 pahole: First look for ',' then '=' to allow for boolean args
783 446b85f7276bda4c pahole: Add support for --size_bytes, accepts header variables
784 0f10fa7529d4a9c7 pahole: Move reading the header to outside the --seek_bytes code
785 9310b04854a8b709 pahole: Add support for referencing header variables when pretty printing
786 611f5e8bd7eb760d pahole: Add == class member filtering
787 f2987224beb2b496 pahole: Do the 'type_enum' class argument validation as soon as we parse it
788 02ca176c6290ff96 pahole: Do the 'type' class argument validation earlier
789 172d743d9ce3f3a1 pahole: Do the 'sizeof' class argument validation earlier
790 9a30c101d7c019ee pahole: As soon as a attribute is found, check if the type is a struct or class
791 a38ccf47237298dc pahole: Allow filter=expression as a class argument for pretty printing
792 3c4ee1d91f5311ac pahole: Pretty print bitfields
793 451d66ec02e94492 pahole: Pretty print unions too, cope with unnamed ones
794 48c7704b49ffa6b1 pahole: Check if the type with arguments is present in the current CU
795 472519ac2c49d340 pahole: Support nested structs
796 ae43029363ee2c53 dwarves_fprintf: Export the 'tabs' variable
797 ab714acec86841b7 pahole: Support zero sized base type arrays
798 ff7815a0f823a676 pahole: Add missing space before '}' in array__fprintf_base_type_value()
799 5f2502274e1097db pahole: Support zero sized arrays in array__fprintf_base_type_value()
800 3aadfbdd72e32016 pahole: Follow array type typedefs to find real sizeof(entry)
801 7309039aa7510eec pahole: Make 'type' + 'type_enum' select a type to cast a variable sized record
802 42b7a759f37e5d45 dutil: Add a strlwr() helper to lowercase a string, returning it
803 a5bb31b86fbe5362 pahole: Fix --skip for variable sized records
804 f4df384d77312867 pahole: Decouple reading ->sizeof_member from printing
805 78cdde5cb7200555 pahole: Introduce 'type_enum' class argument
806 163c330d3138e56f dwarves: Introduce cu__find_enumeration_by_name()
807 20051b7157fce20c pahole: Add the 'type' modifier to make a struct member be used to find a cast type
808 210dffe0d13d171b pahole: Iterate classes in the order specified in the command line:
809 37a5c7c5ba0e1e7d strlist: Allow iterating a strlist in the original order
810 6b5d938d99b2e457 pahole: Support multiple class/struct args
811 affbebf04bcaa1ec pahole: Make the class splitter take into account per-class parameters
812 84387de4a5cf141d pahole: Allow specifying a struct member based sizeof() override
813 e0773683fa3edd61 dwarves: Allow setting a struct/class member as the source of sizeof()
814 f399db09a0d5b069 pahole: Allow simple parser for arguments to classes
815 04d957ba3cdf1047 pahole: Add variable for class name when traversing list of classes
816 f3d9054ba8ff1df0 btf_encoder: Teach pahole to store percpu variables in vmlinux BTF.
817 fe284221448c950d pahole: Introduce --seek_bytes
818 44af7c02b5d0a7f2 pahole: Implement --skip, just like dd
819 5631fdcea1bbe2bc pahole: Introduce --count, just like dd's
820 272bc75024b4f08c man-pages: Add information about stdin raw data pretty printing
821 66835f9e190ce77e pahole: Add support for base type arrays
822 1a67d6e70090953d pahole: Factor out base_type__fprintf_value()
823 6fb98aa1209f02b5 pahole: Support char arrays when dumping from stdin
824 a231d00f8d08825e pahole: Print comma at the end of field name + field value
825 1b2cdda38c0a6f5e dwarves: Introduce tag__is_array()
826 a83313fb22520d8d pahole: Pretty print base types in structs from stdin
827 cc65946e3068f7b6 dwarves: Adopt tag__is_base_type() from ctrace.c
828 d8079c6d373a5754 pahole: Hex dump a type from stdio when it isn't a tty
829 38109ab45fe0307d spec: Fix date
831 v1.17:
833 Fri 13 Mar 2020
835 f14426e41046 docs: Add command line to generate tarball with a prefix
836 0b2621d426ea dwarves: Avoid truncation when concatenating paths for dir entries
837 d7b351079583 dwarves: Don't use conf if its NULL in cus__load_running_kernel()
838 dde3eb086dd3 dwarves: Make list__for_all_tags() more robust
839 081f3618a795 dwarves: Add -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 to build libbpf
840 e8f43a4963bf libbpf: Get latest libbpf
841 de84ae36c738 cmake: libebl was merged into libdw
842 290b8fdbdab7 pahole: Improve --contains --recursive a bit
843 3d5be866e55f pahole: Fill 'tab' with spaces earlier
844 88674f039551 gobuffer: Do not crash on object without any public symbols
845 cb17f94f46a0 Add changes-v1.16 to the MANIFEST file
846 32a19e044c93 pahole: Fix changelog date in dwarves.spec
847 9b09f578b7d1 pahole: Initialize var to silence -Werror=maybe-uninitialized on gcc version 4.8.5 20150623
848 277c2b3d1b4a man-pages: Add section about --hex + -E to locate offsets deep into sub structs
849 812c980b3f76 man-pages: Update some info, expand BTF info, add some EXAMPLES
850 e0942c7b031f pahole: Add support for finding pointers to void
851 6a326e93088e pahole: Make --contains and --find_pointers_to to work with base types
852 3c1a9a3329d9 pahole: Make --contains look for more than just unions, structs
853 ded5d36f9cf5 dwarves: Introduce cu__find_type_by_name
854 88d99562e55c pahole: Add --structs to ask just for structs, counterpart of --unions
855 0b444cf1118c pahole: Make --contains and --find_pointers_to honour --unions
856 a8a7e605bb45 pahole: Make --find_pointers_to consider unions
857 0dc327e382f8 pahole: Consider unions when looking for classes containing some class
858 3661f17d0b2c pahole: Introduce --unions to consider just unions
859 2dd09c617101 pahole: union have no holes, fix --sizes formatter
860 6c29cca8c28f pahole: Don't consider unions for options that only make sense for structs
861 dcba200367f7 pahole: When the sole argument passed isn't a file, take it as a class name
862 1944de0c93e6 pahole: Use function__for_each_parameter()
863 66e640508e4d dwarves: Make function__for_each_parameter receive 'cu' arg
864 252b0fcc91cc pahole: Fix -m/--nr_methods - Number of functions operating on a type pointer
865 202c8d5f5bd5 pahole: Do not require a class name to operate without a file name
866 617f5ac2e6c9 dwarves: Move BTF loader ahead of the CTF one
867 cdd5e1399b9c btf loader: Support raw BTF as available in /sys/kernel/btf/vmlinux
869 v1.16:
871 Mon Dec 16 2019
873 69df73444c69 (HEAD -> master, acme.korg/master) dwarves: Add -O2 to CFLAGS
874 6d11dd157f75 elfcreator: Address initialization warning emitted by 'gcc -O6'
875 1bc63a4cffa7 fprintf: Fixup truncation possibility pointed out by gcc -O2
876 5c590fc29d06 ptr_table: Zero out new id ranges
877 644466dce77f fprintf: Remove extraneous sizeof operator
878 a59459bb80e7 fprintf: Account inline type __aligned__ member types for spacing
879 56547f133a5b fprintf: Fix alignment of class members that are structs/enums/unions
880 be37b64aef38 dwarves: Ignore static members for alignment
881 cca018e495a8 SPEC: Add dwarves dependency on libdwarves1
882 ccf3eebfcd9c btf_loader: Add support for BTF_KIND_FUNC
883 f95fd85f7b53 pfunct: type->type == 0 is void, fix --compile for that
884 3e8f09e304ba (origin/master, origin/HEAD) pdwtags: Print DW_TAG_subroutine_type as well
885 3c5f2a224aa1 btf_encoder: Preserve and encode exported functions as BTF_KIND_FUNC
886 910e060b5c4b btf_loader: Skip BTF_KIND_DATASEC entries
887 96235a74a34d btf_loader: Replace if/else series with a proper switch {}
888 a4ba2234ff58 btf_loader: Support BTF_KIND_VAR
889 5965ce015eab dwarves: Fix ptr_table__add_with_id() handling of pt->nr_entries
890 173911ac38ea btf_loader: Show the unknown kind numbers
891 0d8e11e8568e pglobal: Allow passing the format path specifier, to use with BTF
892 ba27df9f2f94 CMakeLists: Use lib/bpf/include/uapi when building libdwarves
893 95517e1d995e libbpf: Get latest libbpf
894 ca294eebfc47 MANIFEST: Add missing files
895 d5e01d10e515 fprintf: Set tconf.type_spacing earlier
896 c6a9a0eb6ac7 fprintf: Fix up decrementing recursivity level in type__fprintf()
897 93c3cdf89715 cmake: Add -Wall to CFLAGS
898 7360f0528ff3 elfcreator: Remove unused 'machine' variable
899 0f52b11f911c prefcnt: Avoid ambiguous else with for_each macro
900 608813d0affa pglobal: Avoid ambiguous else
901 77d06c2d305d reorganize: Enclose bitfield routines under ifdef
902 2221ae30bce9 reorganize: Ditch unused variable
903 c419c513eae5 libbtf: Enlarge the 'cmd' buffer to not possibly truncate the pathname
904 092fffe56701 btf_loader: Enum values are s32, cast before calling btf_elf__get32()
905 7bfb1aa80f9a libctf: Enlarge the 'cmd' buffer to not possibly truncate the pathname
906 f67c281f9841 fprintf: Correct the type for the 'cacheline' variable, it should be uint32_t
907 7b36fab5a8df fprintf: Add guard against unlikely overlapping copy
908 e737976c09d9 fprintf: Do not scrub type when looking up its type
909 e95dacb704bf fprintf: Remove unused printf arg when printing enumerations
910 71c4f83f2828 emit: Remove unused 'is_pointer' variable
911 fe87354c31bb dwarves: Ditch unused asprintf() function
912 60c73a769882 dwarves: We need to consistently check if 'conf was specified
913 5fdfd09a6bbe dwarves: Fix check in type__find_first_biggest_size_base_type_member()
914 24ced5be8a75 dwarf_loader: Fix array overrun access
915 33e2d7aa35a7 ctf_loader: Plug leak when bailing out due to unknown tag
916 aefa9303818b codiff: Remove unused filenames variable
917 de5e72bc15fb btf_loader: Plug leak when bailing out due to unknown tag
918 511a79129494 dwarves: Remove unused variable
919 b1412a88bb61 fprintf: Fixup handling classes with no members
920 [acme@quaco pahole]$ 
922 v1.15
924 Thu Jun 27 2019
926 3ed9a67967cf fprintf: Avoid null dereference with NULL configs
927 568dae4bd498 printf: Fixup printing "const" early with "const void"
928 68f261d8dfff fprintf: Fix recursively printing named structs in --expand_types
929 139a3b337381 ostra: Initial python3 conversion
930 01276a7e8966 spec: Sync spec with fedora's
931 9f1f0628b9ad rpm: Add missing devel headers
932 989dc3f1ba0d cmake: Install missing devel headers
934 v1.13
936 Tue Apr 16 2019
938 See changes-v1.13 for a more verbose description of the changes.
940 0fb727166a0e pfunct: Strip inlines in the code generated for --compile
941 7b967744db7b emit: Emit the types for inline structs defined in pointer members
942 30526e2848db fprintf: Print relative offsets for inner pointer structs
943 cfa377c238f8 emit: Do not emit a forward declararion to a nameless struct
944 cf459ca16fb2 fprintf: Pretty print struct members that are pointers to nameless structs
945 09ed2e78befe pfunct: Emit definitions for pointers inside pointer to function args
946 e9fc2f647026 fullcircle: Check that we found the CFLAGS
947 05921c47f557 emit: Handle typedefs that are a pointer to typedefs
948 87af9839bf63 fullcircle: Try building from pfunct --compile and check types
949 c7fd9cc1fe97 pfunct: Fixup more return types
950 56c50b8dbe9b emit: Make find_fwd_decl a bit more robust
951 2bcb01fc2f9d fprintf: Handle single zero sized array member structs
952 0987266cd9e2 fprintf: Deal with zero sized arrays in the midle of a union
953 1101337a7450 fprintf: Deal with zero sized arrays in the middle of a struct
954 13aa13eb0ca4 fprintf: Don't reuse 'type' in multiple scopes in the same function
955 c8fc6f5a7a46 core: Use unnatural alignment of struct embedded in another to infer __packed__
956 6f0f9a881589 fprintf: Fixup multi-dimensional zero sized arrays const handling
957 9a4d71930467 fprintf: Allow suppressing the inferred __attribute__((__packed__))
958 ec935ee422b0 fprintf: Allow suppressing the output of force paddings at the end of structs
959 8471736f3c6c core: Cope with zero sized types when looking for natural alignment
960 986a3b58a869 fprintf: Only add bitfield forced paddings when alignment info available
961 49c27bdd6663 core: Allow the loaders to advertise features they have
962 dc6b9437a3a0 emit: Handle structs with DW_AT_alignment=1 meaning __packed__
963 f78633cfb949 core: Infer __packed__ for union struct members
964 75c52de9c6df core: Move packed_attribute_inferred from 'class' to 'type' class
965 1bb4527220f4 fprintf: Fixup const pointers
966 dc3d44196103 core: Improve the natural alignment calculation
967 ac32e5e908ba codiff: Fix comparision of multi-cu against single-cu files
968 f2641ce169d6 core: Take arrays into account when inferring if a struct is packed
969 85c99369631a fprintf: Do not add explicit padding when struct has __aligned__ attr
970 b5e8fab596d3 emit: Cover void ** as a function parameter
971 28a3bc7addad fprintf: Support packed enums
972 f77a442f09e3 fprintf: Do not print the __aligned__ attribute if asked
973 ea583dac52f0 fprintf: Print zero sized flat arrays as [], not [0]
974 f909f13dd724 fprintf: Fixup handling of unnamed bitfields
975 3247a777dcfc core: Infer if a struct is packed by the offsets/natural alignments
976 13e5b9fc00ee fprintf: Add unnamed bitfield padding at the end to rebuild original type
977 ccd67bdb205b fprintf: Print "const" for class members more early, in type__fprintf()
978 b42d77b0bbda fprintf: Print __attribute__((__aligned__(N))) for structs/classes
979 1c9c1d6bbd45 dwarf_loader: Store DW_AT_alignment if available in DW_TAG_{structure,union,class}_type
980 41c55858daf4 codiff: Add --quiet option
981 a104eb1ea11d fprintf: Notice explicit bitfield alignment modifications
982 75f32a24c7c7 codiff: Improve the comparision of anonymous struct members
983 6b1e43f2c1ac codiff: When comparing against a file with just one CU don't bother finding by name
984 15a754f224f7 core: Add nr_entries member to 'struct cus'
985 99750f244cb8 pfunct: Generate a valid return type for the --compile bodies
986 881aabd6fc22 reorganize: Introduce class__for_each_member_from_safe()
987 1b2e3389f304 reorganize: Introduce class__for_each_member_reverse()
988 10fef2916dce reorganize: Introduce class__for_each_member_continue()
989 e7a56ee8cc69 reorganize: Introduce class__for_each_member_from()
990 9a79bb6ced23 tag: Introduce tag__is_pointer_to()
991 45ad54594442 tag: Introduce tag__is_pointer()
992 89ce57a02e3a pdwtags: Find holes in structs
993 ce6f393bc9ea fprintf: Fixup the printing of const parameters
994 7aec7dd6c29c pfunct: Do not reconstruct external functions
995 163b873f81c8 pfunct: Do not reconstruct inline expansions of functions
996 ea83b780eca0 pfunct: Handle unnamed struct typedefs
997 e7ebc05d12e1 emit: Unwind the definitions for typedefs in type__emit_definitions()
998 093135b0bfd5 pfunct: Do not emit a type multiple times
999 3ce2c5216612 pfunct: Ask for generating compilable output that generates DWARF for types
1000 e7a786540d83 pfunct: Make --expand_types/-b without -f expand types for all functions
1001 9b2eadf97b44 pfunct: Follow const, restrict, volatile in --expand_types
1002 f3f86f2f89b0 pfunct: Reconstruct function return types for --expand_types
1003 a7d9c58cb81a fprintf: Add missing closing parens to the align attribute
1004 d83d9f578fa0 dwarf_loader: Handle DW_TAG_label in inline expansions
1005 73e545b144b4 dwarf_loader: Handle unsupported_tag in die__process_inline_expansion
1006 fe590758cb3f class__find_holes: Zero out bit_hole/hole on member
1007 863c2af6e9d7 reorganize: Disable the bitfield coalescing/moving steps
1008 b95961db697a fprintf: Show statistics about holes due to forced alignments
1009 ec772f21f681 fprintf: Show the number of forced alignments in a class
1010 52d1c75ea437 btfdiff: Use --suppress_aligned_attribute with -F dwarf
1011 6cd6a6bd8787 dwarves_fprintf: Allow suppressing the __attribute__((__aligned__(N))
1012 f31ea292e3cb dwarf_loader: Store the DW_AT_alignment if available
1013 c002873c4479 dwarves_fprintf: Move invariant printing of ; to outside if block
1014 8ce85a1ad7f0 reorganize: Use class__find_holes() to recalculate holes
1015 5d1c4029bd45 dwarves: Fix classification of byte/bit hole for aligned bitfield
1016 78c110a7ea24 dwarves: Revert semantics of member bit/byte hole
1017 b56fed297e5f dwarves_fprintf: Count bitfield member sizes separately
1018 c0fdc5e685e9 dwarf_loader: Use DWARF recommended uniform bit offset scheme
1019 5104d1bef384 loaders: Record CU's endianness in dwarf/btf/ctf loaders
1020 975757bc8867 dwarves: Use bit sizes and bit/byte hole info in __class__fprintf
1021 1838d3d7623e dwarves: Revamp bit/byte holes detection logic
1022 03d9b6ebcac7 dwarf_loader: Fix bitfield fixup logic for DWARF
1023 4abc59553918 btf_loader: Adjust negative bitfield offsets early on
1024 41cf0e3cba0c dwarf_loader: Don't recode enums and use real enum size in calculations
1025 55c96aaed8ce loaders: Strip away volatile/const/restrict when fixing bitfields
1026 7005757fd573 libbpf: Sync in latest libbpf sources
1027 69970fc77ec5 pahole: Filter out unions when looking for packable structs
1028 fa963e1a8698 dwarves_fprintf: Print the bit_offset for inline enum bitfield class members
1029 bb8350acf52f dwarves: Switch type_id_t from uint16_t to uint32_t
1030 5375d06faf26 dwarves: Introduce type_id_t for use with the type IDs
1031 f601f6725890 libctf: The type_ids returned are uint32_t fixup where it was uint16_t
1032 c9b2ef034f89 dwarf: Add cu__add_tag_with_id() to stop using id == -1 to allocate id
1033 762e7b58f447 dwarves: Change ptr_table__add() signature to allow for uint32_t returns
1034 079e6890b788 dwarf_loader: Mark tag__recode_dwarf_bitfield() static
1035 3526ebebd3ab pahole: Use 32-bit integers for type ID iterations within CU
1036 3bd8da5202e4 libbpf: update reference to bring in btf_dedup fixes
1037 a9afcc65fc8f btf_encoder: Don't special case packed enums
1038 8f4f280163b7 btf_loader: Simplify fixup code by relying on BTF data more
1039 be5173b4df0f dwarves: Fixup sizeof(long double) in bits in base_type_name_to_size table
1040 5081ed507095 dwarves: Add _Float128 base_type
1041 d52c9f9b9455 dwarf_loader: Fixup bitfield entry with same number of bits as its base_type
1042 6586e423d4fa btf_loader: Fix bitfield fixup code
1043 7daa4300d230 pahole: Complete list of base type names
1044 6bcf0bd70305 btfdiff: Support specifying custom pahole location
1045 88028b5d0c32 btfdiff: Use --show_private_classes with DWARF
1046 e6c59bd11d3d libbpf: Build as PIC and statically link into libdwarves
1047 cf4f3e282d64 cmake: Bump miminum required version to use OBJECT feature
1048 5148be53dc65 btfdiff: Rename tmp files to contain the format used
1049 dd3a7d3ab3e8 btf_encoder: run BTF deduplication before writing out to ELF
1050 54106025cd14 libbtf: Fixup temp filename to .btf, not .btfe
1051 e6dfd10bcbf3 libbpf: Build as shared lib
1052 c234b6ca6e55 libbpf: Pull latest libbpf
1053 fe4e1f799c55 btf_elf: Rename btf_elf__free() to btf_elf__delete()
1054 6780c4334d55 btf: Rename 'struct btf' to 'struct btf_elf'
1055 ca86e9416b8b pahole: use btf.h directly from libbpf
1056 21507cd3e97b pahole: add libbpf as submodule under lib/bpf
1057 c25ada500ddc pahole: Add build dir, config.h to .gitignore
1058 a58c746c4c7e Fixup copyright notices for BTF files authored by Facebook engineers
1059 e714d2eaa150 Adopt SPDX-License-Identifier
1060 c86960dce55d btf_loader: We can set class_member->type_offset earlier
1061 278b64c3eee0 btfdiff: Use diff's -p option to show the struct/union
1062 1182664d6aa6 dwarves_fprintf: Handle negative bit_offsets in packed structs with bitfields
1063 b0cf845e02c6 dwarves: Change type of bitfield_offset from uint8_t to int8_t
1064 06e364bc62e7 btfdiff: Add utility to compare pahole output produced from DWARF and BTF
1065 b79db4cab41c dwarves: add __int128 types in base_type_name_to_size
1066 de3459cc0ebe btf_loader: BTF encodes the size of enums as bytes not bits
1067 693347f8def7 btf_encoder: Fix void handling in FUNC_PROTO.
1068 2d0b70664f3e dwarves_fprintf: Separate basic type stats into separate type__fprintf() method
1069 18f5910f96e0 dwarves: Add type to tag helper
1070 f2092f56586a btf: recognize BTF_KIND_FUNC in btf_loader
1071 11766614096c btf: Fix kind_flag usage in btf_loader
1072 68b93e6858ae dutil: Add missing string.h header include
1073 851ef335e328 dutil: Drop 'noreturn' attribute for ____ilog2_NaN()
1074 ab0cb33e54e8 btf_loader: Fixup class_member->bit_offset for !big_endian files
1075 b24718fe27d3 dwarves: Fix documentation for class_memer->bitfield_size
1076 3ffe5ba93b63 pahole: Do not apply 'struct class' filters to 'struct type'
1077 da18bb340bee dwarves: Check if the tag is a 'struct class' in class__find_holes()
1078 2a82d593be81 btf: Add kind_flag support for btf_loader
1079 472256d3c57b btf_loader: Introduce a loader for the BTF format
1080 93d6d0016523 dwarves: No need to print the "signed ", the name has it already
1081 0a9bac9a3e8e dwarves: Relookup when searching for signed base types
1082 a2cdc6c2a0a3 dutil: Adopt strstart() from the linux perf tools sources
1083 3aa3fd506e6c btf: add func_proto support
1084 8630ce404287 btf: fix struct/union/fwd types with kind_flag
1085 65bd17abc72c btf: Allow multiple cu's in dwarf->btf conversion
1086 d843945ba514 pahole: Search for unions as well with '-C'
1087 da632a36862c dwarves: Introduce {cu,cus}__find_struct_or_union_by_name() methods
1088 31664d60ad41 pahole: Show tagged enums as well when no class is specified
1089 b18354f64cc2 btf: Generate correct struct bitfield member types
1090 70ef8c7f07ff dwarves_fprintf: Set conf.cachelinep in union__fprintf() too
1091 bfdea37668c6 dwarves_fprintf: Print the scope of variables
1092 465110ec99d3 dwarves: Add the DWARF location to struct variable
1093 c65f2cf4361e dwarves: Rename variable->location to ->scope
1094 0d2511fd1d8e btf: Fix bitfield encoding
1095 92417082aad3 MANIFEST: Add missing COPYING file
1096 eb6bd05766f5 dwarf_loader: Process DW_AT_count in DW_TAG_subrange_type
1098 v1.12
1100 Thu Aug 16 2018
1102 1ca2e351dfa1 README.btf: Add section on validating the .BTF section via the kernel
1103 9eda5e8163ce README.btf: No need to use 'llvm.opts = -mattr=dwarfris' with elfutils >= 0.173
1104 7818af53f64a dwarves: Add a README.btf file with steps to test the BTF encoder
1105 f727c22191d0 dwarf_loader: Initial support for DW_TAG_partial_unit
1106 e975ff247aa8 dwarves_fprintf: Print cacheline boundaries in multiple union members
1107 68645f7facc2 btf: Add BTF support
1108 81466af0d4f8 pahole: Show the file where a struct was used
1109 2dd87be78bb2 dwarves_fprintf: Show offsets at union members
1110 66cf3983e1ac README.DEBUG: Add an extra step to make the instructions cut'n'exec
1111 2a092d61453c dwarves: Fix cus__load_files() success return value
1112 02a456f5f54c pahole: Search and use running kernel vmlinux when no file is passed
1113 5f057919a0c0 man-pages: Add entry for --hex
1115 v1.11
1117 Wed Jun 2017
1119 5a57eb074170 man-pages: Update URL to the dwarves paper
1120 b52386d041fa dwarves_fprintf: Find holes when expanding types
1121 103e89bb257d dwarves_fprintf: Find holes on structs embedded in other structs
1122 ab97c07a7ebe dwarves_fprintf: Fixup cacheline boundary printing on expanded structs
1123 046ad67af383 dwarves_fprintf: Shorten class__fprintf() sig
1124 44130bf70e1c dwarves: Update e-mail address
1125 327757975b94 dwarf_loader: Add URL for template tags description
1126 f4d5e21fd1b2 dwarf_loader: Tidy up template tags usage
1127 e12bf9999944 dwarf_loader: Do not hash unsupported tags
1128 3afcfbec9e08 dwarf_loader: Add DW_TAG_GNU_formal_parameter_pack stub in process_function
1129 55d9b20dbaf6 dwarf_loader: Ignore DW_TAG_dwarf_procedure when processing functions
1130 45618c7ec122 dwarf_loader: Initial support for DW_TAG_unspecified_type
1131 658a238b9890 dwarf_loader: Stop emitting warnings about DW_TAG_call_site
1132 0fbb39291d59 dwarf_loader: Add support for DW_TAG_restrict_type
1133 9df42c68265d dwarves: Initial support for rvalue_reference_type
1134 8af5ccd86d21 dwarves: Use cus__fprintf_load_files_err() in the remaining tools
1135 10515a7c4db7 dwarves: Introduce cus__fprintf_load_files_err()
1136 0e6463635082 pahole: Show more informative message when errno is properly set on error
1137 2566cc2c8715 pdwtags: Show proper error messages for files it can't handle
1138 9f3f67e78679 dwarves: Fix cus__load_files() error return
1139 ae3a2720c3d3 dutil: Add ____ilog2_NaN declaration to silence compiler warning
1140 0b81b5ad4743 Update version in CMakeLists.txt
1141 79536f4f9587 cmake: Use INTERFACE_LINK_LIBRARIES
1142 1decb1bc4a41 dwarf_loader: Check cu__find_type_by_ref result
1143 956343d05a41 Add instructions on how to build with debug info
1144 e71353c3fa0a dwarf_loader: Ignore DW_TAG_dwarf_procedure
1145 189695907242 dwarves_fprintf: Add the missing GNU_ suffix to DWARF_TAG_ created by the GNU project
1146 d973b1d5daf0 dwarf_fprintf: Handle DW_TAG_GNU_call_site{_parameter}
1147 c23eab4b1253 dwarf_loader: Print unknown tags as an hex number
1148 943a0de0679a dwarves_fprintf: DW_TAG_mutable_type doesn't exist.
1149 a8e562a15767 dwarf_loader: Use obstack_zalloc when allocating tag
1150 fd3838ae9aa3 dwarves: Stop using 'self'
1151 5ecf1aab9e10 dwarf_loader: Support DW_FORM_data{4,8} for reading class member offsets
1152 c4ccdd5ae63b dwarves_reorganize: Fix member type fixup
1153 e31fda3063e3 dwarves_reorganize: Fixup calculation of bytes needed for bitfield
1154 1e461ec7e0e8 dwarves_fprintf: Fix printf types on 64bit linux
1155 222f0067a9c3 dwarves_fprintf: Don't ignore virtual data members
1156 e512e3f9b36b dwarves: Update git url
1157 8c6378fd8834 dwarves: Support static class data members
1158 a54515fa6ee4 dwarves: Stop using 'self'
1159 6035b0d91f19 rpm: Add missing BuildRequires: zlib-devel
1160 be7b691756ff dwarf_loader: Don't stop processing after finding unsupported tag
1162 v1.10
1164 Wed May 30 2012
1166 . Initial DWARF4 support, by Tom Tromey
1168 . Add stubs for some new GNU Tags
1170 . Fix build on older systems
1172 . Fix a crash when pahole is called with -R -S, from Tal Kelrich
1174 v1.9:
1176 Ignore DW_TAG_template_{type,value}_parameter, fixing a bug reported at:
1178 https://bugzilla.redhat.com/show_bug.cgi?id=654471
1180 More work is needed to properly support these tags.
1182 -----------------------------------------
1184 After a long time without a new release because I was trying to get the CTF
1185 support completed, and due to the very strong gravity force in the Linux kernel
1186 perf tools, here it is 1.8, with lots of performance improvements, bug fixes
1187 and changes to better use these tools in scripts.
1189 For full details please take a look at the git changesets, repo available at:
1191 http://git.kernel.org/cgit/devel/pahole/pahole.git
1193 - Arnaldo
1195 pahole:
1197 . Allow list of structs to be passed to pahole.
1199         E.g.: 'pahole -C str_node,strings'
1201   Suggested by Zack Weinberg <zweinberg@mozilla.com>, for scripting.
1203 . Introduce --hex to print offsets and sizes in hexadecimal
1205 codiff:
1207 . Improve detection of removal and addition of members in structs
1209 . Detect changes in padding and the number of holes/bit_holes
1211 pfunct:
1213 . --no_parm_names
1215     Because CTF doesn't encodes the names of the parameters and I want to
1216     test the upcoming CTF function section code in ctftwdiff.
1218 . pfunct --addr
1220     Using an rbtree to find in which function the given addr is.
1222 libdwarves:
1224 . Greatly reduce the data structures footprint and lookup by recoding
1225   the IDs as short integers, that was done to facilitate support for CTF
1226   but benefited the core libraries greatly.
1228 . Handle GCC support for vector instructions
1230     So now it recognizes, as printed by pdwtags:
1232     908 typedef int __m64 __attribute__ ((__vector_size__ (8))); size: 8
1233     909 int         array __attribute__ ((__vector_size__ (8))); size: 8
1234     910 int         array __attribute__ ((__vector_size__ (4))); size: 4
1235     911 short int   array __attribute__ ((__vector_size__ (2))); size: 2
1236     912 char        array __attribute__ ((__vector_size__ (1))); size: 1
1238 . Destructors were added so that no leaks are left if this library is to
1239   be used in other tools that don't end the program when done using this lib.
1241 . Allow the tools to pass a callback that is used after loading each object
1242   file (CU/Compile Unit), so that we can more quickly find tags and stop
1243   the processing sooner, or at least delete the CU if it doesn't have anything
1244   needed by the tool. This _greatly_ speeded up most of the tools.
1246 . Tools now can pass a debug format "path", specifying the order it wants to
1247   try, so that if a file have both DWARF and CTF, specifying 'ctf,dwarf' will
1248   use the CTF info.
1250 . Now the formatting routines are in a separate file, dwarves_fprintf.c. This
1251   was done for organizational purposes but also to pave the way for multiple
1252   formatting backends, so that we can print, for instance, in CSV the structs,
1253   for easier scripting like done by several folks out there.
1255 . Handle volatile typedef bitfields, like:
1257     struct _GClosure {
1258             volatile guint ref_count:15;    /* 0:17  4 */
1259             volatile guint meta_marshal:1;  /* 0:16  4 */
1260             volatile guint n_guards:1;      /* 0:15  4 */
1262 . Load java 'interfaces' as a struct/class.
1264 . Fix buffer expansion bug, detected thanks to boost that provided things like:
1266         virtual int undefine(class
1267     grammar_helper<boost::spirit::grammar<boost::detail::graph::dot_skipper,
1268     boost::spirit::parser_context<boost::spirit::nil, class
1269     grammar<boost::detail::graph::dot_skipper,
1270     boost::spirit::parser_context<boost::spirit::nil_t> > *); /*
1271     linkage=_ZN5boost6spirit4impl14grammar_helperINS0_7grammarINS_6detail5graph11dot_skipperENS0_14parser_contextINS0_5nil_tEEEEES6_NS0_7scannerINS0_10multi_passISt16istream_i
1272     */
1274 . Allow optional addr information loading, speeding up some apps that don't
1275   use such addresses (or in modes where addrs aren't used) such as pahole.
1277 . Use a obstacks, speeding up apps as measured with the perf tools.
1279 . Support zero sized arrays in the middle of a struct.
1281 . Fix padding calculation in the reorganize routines.
1283 . Fix bitfield demotion in the reorganize routines.
1285 . Support "using" pointing to data members (C++).
1287 . Properly support pointers to const, reported by Jan Engelhardt <jengelh@medozas.de>:
1289 . Support more compact DW_AT_data_member_location form, pointed out by Mark
1290   Wielaard <mjw@redhat.com> and reported by Mike Snitzer <snitzer@redhat.com>
1292 Experimental CTF support:
1294 libdwarves was reorganized so that it can support multiple debugging formats,
1295 with the first one being supported being the Compact C Type Format that comes
1296 from the OpenSolaris world.
1298 David S. Miller contributed an initial CTF decoder and from there I wrote an
1299 encoder.
1301 To test this a regression testing harness (regtest in the sources) that will
1302 take files with DWARF info and from there encode its contents in CTF in another
1303 ELF section in the same file (.SUN_ctf).  Then it will decode both the DWARF
1304 and CTF sections and compare the results for pahole running with some new
1305 flags that cope with some subtleties in the way CTF encodes things.
1307   --flat_arrays
1309         We have just one dimension in CTF, with the total number of entries,
1310         in DWARF we can express this, but not in CTF:
1312         __u8            addr[0][6];    /*   4  0 */
1314         So --flat_arrays will show it as:
1316         __u8            addr[0];       /*   4  0 */
1318   --show_private_classes
1319   --fixup_silly_bitfields
1321         To cope with things like 'char foo:8' that since CTF has only the
1322         number of bits, can't be expressed as we don't know if it is a
1323         bitfield or just a char without the ':8' suffix.
1325   --first_obj_only
1327         Look only at the first object file in a file with multiple object
1328         files, like vmlinux. This is because the CTF support is not complete yet,
1329         needing the merging of types in multiple object files to be done.
1331   --classes_as_structs
1333         CTF has only a type for structs, not for classes like DWARF (DW_TAG_class_type
1334         is not present in CTF), so print them all as 'struct'.
1336 Running with the above limitations produce just a few mismatches, related to
1337 packed structs and enumerations and bitfields.