dwarves_fprintf: Allow suppressing the __attribute__((__aligned__(N))

So that we can use it in things like btfdiff.

Cc: Alexei Starovoitov <ast@fb.com>
Cc: Andrii Nakryiko <andriin@fb.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Wielaard <mark@klomp.org>
Cc: Yonghong Song <yhs@fb.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Arnaldo Carvalho de Melo 2019-04-03 13:08:02 -03:00
parent f31ea292e3
commit 6cd6a6bd87
4 changed files with 16 additions and 2 deletions

View File

@ -69,6 +69,7 @@ struct conf_fprintf {
uint8_t rel_offset:1;
uint8_t emit_stats:1;
uint8_t suppress_comments:1;
uint8_t suppress_aligned_attribute:1;
uint8_t suppress_offset_comment:1;
uint8_t show_decl_info:1;
uint8_t show_only_data_members:1;

View File

@ -774,7 +774,7 @@ static size_t class_member__fprintf(struct class_member *member, bool union_memb
printed += fprintf(fp, ":%u", member->bitfield_size);
}
if (member->alignment != 0)
if (!sconf.suppress_aligned_attribute && member->alignment != 0)
printed += fprintf(fp, " __attribute__((__aligned__(%u))", member->alignment);
fputc(';', fp);

View File

@ -167,9 +167,14 @@ Show CUs where CLASS_NAME (-C) is defined.
.TP
.B \-\-flat_arrays
Flatten arrays, so that array[10][2] becomes array[20].
Useful when generating from both CTF and DWARF encodings
Useful when generating from both CTF/BTF and DWARF encodings
for the same binary for testing purposes.
.TP
.B \-\-suppress_aligned_attribute
Suppress forced alignment markers, so that one can compare BTF or
CTF output, that don't have that info, to output from DWARF >= 5.
.TP
.B \-\-fixup_silly_bitfields
Converts silly bitfields such as "int foo:32" to plain "int foo".

View File

@ -749,6 +749,7 @@ ARGP_PROGRAM_VERSION_HOOK_DEF = dwarves_print_version;
#define ARGP_first_obj_only 303
#define ARGP_classes_as_structs 304
#define ARGP_hex_fmt 305
#define ARGP_suppress_aligned_attribute 306
static const struct argp_option pahole__options[] = {
{
@ -946,6 +947,11 @@ static const struct argp_option pahole__options[] = {
.key = ARGP_flat_arrays,
.doc = "Flat arrays",
},
{
.name = "suppress_aligned_attribute",
.key = ARGP_suppress_aligned_attribute,
.doc = "Suppress __attribute__((aligned(N))",
},
{
.name = "show_private_classes",
.key = ARGP_show_private_classes,
@ -1046,6 +1052,8 @@ static error_t pahole__options_parser(int key, char *arg,
break;
case 'Z': ctf_encode = 1; break;
case ARGP_flat_arrays: conf.flat_arrays = 1; break;
case ARGP_suppress_aligned_attribute:
conf.suppress_aligned_attribute = 1; break;
case ARGP_show_private_classes:
show_private_classes = true;
conf.show_only_data_members = 1; break;