Skip to content

Instantly share code, notes, and snippets.

@bluca
Created April 12, 2019 15:59
Show Gist options
  • Save bluca/40f2fd219fd0e77aaf8cfe462fe60b28 to your computer and use it in GitHub Desktop.
Save bluca/40f2fd219fd0e77aaf8cfe462fe60b28 to your computer and use it in GitHub Desktop.
libbpf 4.19.x to 5.1.x ABI compat report
<?xml version="1.0" encoding="utf-8"?>
<reports>
<report kind="binary" version="1.2">
<test_info>
<library>bpf</library>
<version1>
<number>1</number>
<arch>x86_64</arch>
<gcc>8.3.0</gcc>
</version1>
<version2>
<number>2</number>
<arch>x86_64</arch>
<gcc>8.3.0</gcc>
</version2>
</test_info>
<test_results>
<headers>
<name>bpf.h</name>
<name>btf.h</name>
<name>libbpf.h</name>
</headers>
<libs>
<name>libbpf.so</name>
</libs>
<symbols>101</symbols>
<types>31</types>
<verdict>incompatible</verdict>
<affected>1</affected>
</test_results>
<problem_summary>
<added_symbols>49</added_symbols>
<removed_symbols>0</removed_symbols>
<problems_with_types>
<high>0</high>
<medium>0</medium>
<low>11</low>
<safe>0</safe>
</problems_with_types>
<problems_with_symbols>
<high>0</high>
<medium>3</medium>
<low>10</low>
<safe>0</safe>
</problems_with_symbols>
<problems_with_constants>
<low>0</low>
</problems_with_constants>
</problem_summary>
<added_symbols>
<header name="bpf.h">
<library name="libbpf.so.0.0.2">
<name>bpf_map_lookup_elem_flags@@LIBBPF_0.0.2</name>
<name>bpf_prog_test_run_xattr@@LIBBPF_0.0.1</name>
<name>bpf_map_lookup_and_delete_elem@@LIBBPF_0.0.1</name>
</library>
</header>
<header name="btf.h">
<library name="libbpf.so.0.0.2">
<name>btf_ext__func_info_rec_size@@LIBBPF_0.0.2</name>
<name>btf_ext__get_raw_data@@LIBBPF_0.0.2</name>
<name>btf_ext__line_info_rec_size@@LIBBPF_0.0.2</name>
<name>btf_ext__free@@LIBBPF_0.0.2</name>
<name>btf__get_from_id@@LIBBPF_0.0.1</name>
<name>btf_ext__reloc_line_info@@LIBBPF_0.0.2</name>
<name>btf__dedup@@LIBBPF_0.0.2</name>
<name>btf__load@@LIBBPF_0.0.2</name>
<name>btf_ext__reloc_func_info@@LIBBPF_0.0.2</name>
<name>btf__get_nr_types@@LIBBPF_0.0.2</name>
<name>btf__get_raw_data@@LIBBPF_0.0.2</name>
<name>btf_ext__new@@LIBBPF_0.0.2</name>
<name>btf__get_map_kv_tids@@LIBBPF_0.0.2</name>
</library>
</header>
<header name="libbpf.h">
<library name="libbpf.so.0.0.2">
<name>libbpf_attach_type_by_name@@LIBBPF_0.0.1</name>
<name>bpf_prog_linfo__new@@LIBBPF_0.0.1</name>
<name>bpf_map__prev@@LIBBPF_0.0.1</name>
<name>bpf_map__set_inner_map_fd@@LIBBPF_0.0.1</name>
<name>bpf_object__pin_maps@@LIBBPF_0.0.1</name>
<name>bpf_program__unpin_instance@@LIBBPF_0.0.1</name>
<name>bpf_object__find_map_fd_by_name@@LIBBPF_0.0.2</name>
<name>bpf_prog_linfo__free@@LIBBPF_0.0.1</name>
<name>bpf_object__btf@@LIBBPF_0.0.2</name>
<name>bpf_map__resize@@LIBBPF_0.0.2</name>
<name>bpf_map__unpin@@LIBBPF_0.0.1</name>
<name>bpf_program__unpin@@LIBBPF_0.0.1</name>
<name>bpf_prog_linfo__lfind_addr_func@@LIBBPF_0.0.1</name>
<name>bpf_program__bpil_offs_to_addr@@LIBBPF_0.0.2</name>
<name>bpf_get_link_xdp_id@@LIBBPF_0.0.2</name>
<name>bpf_object__unpin_programs@@LIBBPF_0.0.1</name>
<name>bpf_program__unload@@LIBBPF_0.0.1</name>
<name>bpf_prog_linfo__lfind@@LIBBPF_0.0.1</name>
<name>bpf_object__pin_programs@@LIBBPF_0.0.1</name>
<name>bpf_probe_map_type@@LIBBPF_0.0.2</name>
<name>bpf_object__unpin_maps@@LIBBPF_0.0.1</name>
<name>bpf_probe_helper@@LIBBPF_0.0.2</name>
<name>bpf_program__prev@@LIBBPF_0.0.1</name>
<name>bpf_probe_prog_type@@LIBBPF_0.0.2</name>
<name>bpf_program__bpil_addr_to_offs@@LIBBPF_0.0.2</name>
<name>bpf_program__get_prog_info_linear@@LIBBPF_0.0.2</name>
<name>bpf_program__load@@LIBBPF_0.0.1</name>
</library>
</header>
<header name="xsk.h">
<library name="libbpf.so.0.0.2">
<name>xsk_socket__delete@@LIBBPF_0.0.2</name>
<name>xsk_socket__fd@@LIBBPF_0.0.2</name>
<name>xsk_socket__create@@LIBBPF_0.0.2</name>
<name>xsk_umem__delete@@LIBBPF_0.0.2</name>
<name>xsk_umem__fd@@LIBBPF_0.0.2</name>
<name>xsk_umem__create@@LIBBPF_0.0.2</name>
</library>
</header>
</added_symbols>
<removed_symbols>
</removed_symbols>
<problems_with_types severity="High">
</problems_with_types>
<problems_with_symbols severity="High">
</problems_with_symbols>
<problems_with_types severity="Medium">
</problems_with_types>
<problems_with_symbols severity="Medium">
<header name="btf.h">
<library name="libbpf.so">
<symbol name="btf__new">
<problem id="Removed_Parameter">
<change target="err_log" param_pos="3rd">@param_pos parameter @target has been removed from the calling stack.</change>
<effect>This parameter will be ignored by the function.</effect>
</problem>
</symbol>
</library>
</header>
<header name="libbpf.h">
<library name="libbpf.so">
<symbol name="libbpf_set_print">
<problem id="Removed_Parameter">
<change target="info" param_pos="2nd">@param_pos parameter @target has been removed from the calling stack.</change>
<effect>This parameter will be ignored by the function.</effect>
</problem>
<problem id="Removed_Parameter">
<change target="debug" param_pos="3rd">@param_pos parameter @target has been removed from the calling stack.</change>
<effect>This parameter will be ignored by the function.</effect>
</problem>
</symbol>
</library>
</header>
</problems_with_symbols>
<problems_with_types severity="Low">
<header name="bpf.h">
<type name="struct bpf_load_program_attr">
<problem id="Added_Field_And_Size">
<change target="func_info">Field @target has been added to this type.</change>
<effect>1) This field will not be initialized by old clients.2) Size of the inclusive type has been changed.
NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.</effect>
</problem>
<problem id="Added_Field_And_Size">
<change target="func_info_cnt">Field @target has been added to this type.</change>
<effect>1) This field will not be initialized by old clients.2) Size of the inclusive type has been changed.
NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.</effect>
</problem>
<problem id="Added_Field_And_Size">
<change target="func_info_rec_size">Field @target has been added to this type.</change>
<effect>1) This field will not be initialized by old clients.2) Size of the inclusive type has been changed.
NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.</effect>
</problem>
<problem id="Added_Field_And_Size">
<change target="line_info">Field @target has been added to this type.</change>
<effect>1) This field will not be initialized by old clients.2) Size of the inclusive type has been changed.
NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.</effect>
</problem>
<problem id="Added_Field_And_Size">
<change target="line_info_cnt">Field @target has been added to this type.</change>
<effect>1) This field will not be initialized by old clients.2) Size of the inclusive type has been changed.
NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.</effect>
</problem>
<problem id="Added_Field_And_Size">
<change target="line_info_rec_size">Field @target has been added to this type.</change>
<effect>1) This field will not be initialized by old clients.2) Size of the inclusive type has been changed.
NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.</effect>
</problem>
<problem id="Added_Field_And_Size">
<change target="prog_btf_fd">Field @target has been added to this type.</change>
<effect>1) This field will not be initialized by old clients.2) Size of the inclusive type has been changed.
NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.</effect>
</problem>
<problem id="DataType_Size">
<change old_size="384" new_size="704">Size of this type has been changed from @old_size to @new_size.</change>
<effect>The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.</effect>
</problem>
<problem id="Added_Field">
<change target="log_level">Field @target has been added to this type.</change>
<effect>This field will not be initialized by old clients.NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.</effect>
</problem>
<affected>
<symbol name="bpf_load_program_xattr" param="load_attr">
<comment>1st parameter @param (pointer) has base type struct bpf_load_program_attr.</comment>
</symbol>
</affected>
</type>
</header>
<header name="libbpf.h">
<type name="libbpf_print_fn_t">
<problem id="Typedef_BaseType">
<change old_value="int(*)(char const*, ...)" new_value="int(*)(enum libbpf_print_level, char const*, struct __va_list_tag*)">Base type has been changed from @old_value to @new_value.</change>
<effect>Replacement of the base data type may indicate a change in its semantic meaning.</effect>
</problem>
<affected>
<symbol name="libbpf_set_print" param="warn">
<comment>1st parameter @param is of type libbpf_print_fn_t.</comment>
</symbol>
</affected>
</type>
<type name="bpf_perf_event_print_t">
<problem id="Typedef_BaseType">
<change old_value="enum bpf_perf_event_ret(*)(void*, void*)" new_value="enum bpf_perf_event_ret(*)(struct perf_event_header*, void*)">Base type has been changed from @old_value to @new_value.</change>
<effect>Replacement of the base data type may indicate a change in its semantic meaning.</effect>
</problem>
<affected>
<symbol name="bpf_perf_event_read_simple" param="fn">
<comment>6th parameter @param is of type bpf_perf_event_print_t.</comment>
</symbol>
</affected>
</type>
</header>
</problems_with_types>
<problems_with_symbols severity="Low">
<header name="bpf.h">
<library name="libbpf.so">
<symbol name="bpf_verify_program">
<problem id="Parameter_Type">
<change target="strict_alignment" param_pos="4th" old_value="int" new_value="__u32">Type of @param_pos parameter @target has been changed from @old_value to @new_value.</change>
<effect>Replacement of parameter data type may indicate a change in its semantic meaning.</effect>
</problem>
<problem id="Renamed_Parameter">
<change target="strict_alignment" param_pos="4th" new_value="prog_flags">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>Renaming of a parameter may indicate a change in its semantic meaning.</effect>
</problem>
</symbol>
</library>
</header>
<header name="libbpf.h">
<library name="libbpf.so">
<symbol name="bpf_perf_event_read_simple">
<problem id="Parameter_Type">
<change target="page_size" param_pos="3rd" old_value="unsigned long" new_value="size_t">Type of @param_pos parameter @target has been changed from @old_value to @new_value.</change>
<effect>Replacement of parameter data type may indicate a change in its semantic meaning.</effect>
</problem>
<problem id="Parameter_Type">
<change target="size" param_pos="2nd" old_value="unsigned long" new_value="size_t">Type of @param_pos parameter @target has been changed from @old_value to @new_value.</change>
<effect>Replacement of parameter data type may indicate a change in its semantic meaning.</effect>
</problem>
<problem id="Renamed_Parameter">
<change target="mem" param_pos="1st" new_value="mmap_mem">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>Renaming of a parameter may indicate a change in its semantic meaning.</effect>
</problem>
<problem id="Renamed_Parameter">
<change target="size" param_pos="2nd" new_value="mmap_size">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>Renaming of a parameter may indicate a change in its semantic meaning.</effect>
</problem>
<problem id="Renamed_Parameter">
<change target="buf" param_pos="4th" new_value="copy_mem">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>Renaming of a parameter may indicate a change in its semantic meaning.</effect>
</problem>
<problem id="Renamed_Parameter">
<change target="buf_len" param_pos="5th" new_value="copy_size">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>Renaming of a parameter may indicate a change in its semantic meaning.</effect>
</problem>
<problem id="Renamed_Parameter">
<change target="priv" param_pos="7th" new_value="private_data">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>Renaming of a parameter may indicate a change in its semantic meaning.</effect>
</problem>
</symbol>
<symbol name="libbpf_set_print">
<problem id="Renamed_Parameter">
<change target="warn" param_pos="1st" new_value="fn">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>Renaming of a parameter may indicate a change in its semantic meaning.</effect>
</problem>
</symbol>
</library>
</header>
</problems_with_symbols>
<problems_with_constants severity="Low">
</problems_with_constants>
<problems_with_types severity="Safe">
</problems_with_types>
<problems_with_symbols severity="Safe">
</problems_with_symbols>
<problems_with_constants severity="Low">
</problems_with_constants>
</report>
<report kind="source" version="1.2">
<test_info>
<library>bpf</library>
<version1>
<number>1</number>
<arch>x86_64</arch>
<gcc>8.3.0</gcc>
</version1>
<version2>
<number>2</number>
<arch>x86_64</arch>
<gcc>8.3.0</gcc>
</version2>
</test_info>
<test_results>
<headers>
<name>bpf.h</name>
<name>btf.h</name>
<name>libbpf.h</name>
</headers>
<libs>
<name>libbpf.so</name>
</libs>
<symbols>101</symbols>
<types>31</types>
<verdict>incompatible</verdict>
<affected>1</affected>
</test_results>
<problem_summary>
<added_symbols>49</added_symbols>
<removed_symbols>0</removed_symbols>
<problems_with_types>
<high>0</high>
<medium>0</medium>
<low>10</low>
<safe>0</safe>
</problems_with_types>
<problems_with_symbols>
<high>0</high>
<medium>3</medium>
<low>1</low>
<safe>7</safe>
</problems_with_symbols>
<problems_with_constants>
<low>0</low>
</problems_with_constants>
</problem_summary>
<added_symbols>
<header name="bpf.h">
<library name="">
<name>bpf_map_lookup_and_delete_elem</name>
<name>bpf_prog_test_run_xattr</name>
<name>bpf_map_lookup_elem_flags</name>
</library>
</header>
<header name="btf.h">
<library name="">
<name>btf_ext__func_info_rec_size</name>
<name>btf_ext__reloc_line_info</name>
<name>btf_ext__free</name>
<name>btf_ext__line_info_rec_size</name>
<name>btf_ext__new</name>
<name>btf_ext__reloc_func_info</name>
<name>btf__get_nr_types</name>
<name>btf__load</name>
<name>btf__dedup</name>
<name>btf__get_from_id</name>
<name>btf__get_map_kv_tids</name>
<name>btf_ext__get_raw_data</name>
<name>btf__get_raw_data</name>
</library>
</header>
<header name="libbpf.h">
<library name="">
<name>bpf_map__prev</name>
<name>bpf_object__unpin_maps</name>
<name>bpf_map__resize</name>
<name>bpf_object__pin_programs</name>
<name>bpf_object__btf</name>
<name>bpf_probe_prog_type</name>
<name>bpf_program__unpin_instance</name>
<name>bpf_program__bpil_addr_to_offs</name>
<name>bpf_object__unpin_programs</name>
<name>libbpf_attach_type_by_name</name>
<name>bpf_object__find_map_fd_by_name</name>
<name>bpf_program__load</name>
<name>bpf_probe_helper</name>
<name>bpf_program__bpil_offs_to_addr</name>
<name>bpf_program__get_prog_info_linear</name>
<name>bpf_program__unpin</name>
<name>bpf_prog_linfo__lfind_addr_func</name>
<name>bpf_prog_linfo__lfind</name>
<name>bpf_prog_linfo__new</name>
<name>bpf_prog_linfo__free</name>
<name>bpf_map__set_inner_map_fd</name>
<name>bpf_object__pin_maps</name>
<name>bpf_program__unload</name>
<name>bpf_get_link_xdp_id</name>
<name>bpf_probe_map_type</name>
<name>bpf_map__unpin</name>
<name>bpf_program__prev</name>
</library>
</header>
<header name="xsk.h">
<library name="">
<name>xsk_socket__delete</name>
<name>xsk_socket__create</name>
<name>xsk_umem__create</name>
<name>xsk_umem__delete</name>
<name>xsk_socket__fd</name>
<name>xsk_umem__fd</name>
</library>
</header>
</added_symbols>
<removed_symbols>
</removed_symbols>
<problems_with_types severity="High">
</problems_with_types>
<problems_with_symbols severity="High">
</problems_with_symbols>
<problems_with_types severity="Medium">
</problems_with_types>
<problems_with_symbols severity="Medium">
<header name="btf.h">
<library name="libbpf.so">
<symbol name="btf__new">
<problem id="Removed_Parameter">
<change target="err_log" param_pos="3rd">@param_pos parameter @target has been removed from the calling stack.</change>
<effect>Recompilation of a client program may be broken.</effect>
</problem>
</symbol>
</library>
</header>
<header name="libbpf.h">
<library name="libbpf.so">
<symbol name="libbpf_set_print">
<problem id="Removed_Parameter">
<change target="info" param_pos="2nd">@param_pos parameter @target has been removed from the calling stack.</change>
<effect>Recompilation of a client program may be broken.</effect>
</problem>
<problem id="Removed_Parameter">
<change target="debug" param_pos="3rd">@param_pos parameter @target has been removed from the calling stack.</change>
<effect>Recompilation of a client program may be broken.</effect>
</problem>
</symbol>
</library>
</header>
</problems_with_symbols>
<problems_with_types severity="Low">
<header name="bpf.h">
<type name="struct bpf_load_program_attr">
<problem id="Added_Field">
<change target="func_info">Field @target has been added to this type.</change>
<effect>This field will not be initialized or used by old client applications.</effect>
</problem>
<problem id="Added_Field">
<change target="func_info_cnt">Field @target has been added to this type.</change>
<effect>This field will not be initialized or used by old client applications.</effect>
</problem>
<problem id="Added_Field">
<change target="func_info_rec_size">Field @target has been added to this type.</change>
<effect>This field will not be initialized or used by old client applications.</effect>
</problem>
<problem id="Added_Field">
<change target="line_info">Field @target has been added to this type.</change>
<effect>This field will not be initialized or used by old client applications.</effect>
</problem>
<problem id="Added_Field">
<change target="line_info_cnt">Field @target has been added to this type.</change>
<effect>This field will not be initialized or used by old client applications.</effect>
</problem>
<problem id="Added_Field">
<change target="line_info_rec_size">Field @target has been added to this type.</change>
<effect>This field will not be initialized or used by old client applications.</effect>
</problem>
<problem id="Added_Field">
<change target="log_level">Field @target has been added to this type.</change>
<effect>This field will not be initialized or used by old client applications.</effect>
</problem>
<problem id="Added_Field">
<change target="prog_btf_fd">Field @target has been added to this type.</change>
<effect>This field will not be initialized or used by old client applications.</effect>
</problem>
<affected>
<symbol name="bpf_load_program_xattr" param="load_attr">
<comment>1st parameter @param (pointer) has base type struct bpf_load_program_attr.</comment>
</symbol>
</affected>
</type>
</header>
<header name="libbpf.h">
<type name="bpf_perf_event_print_t">
<problem id="Typedef_BaseType">
<change old_value="enum bpf_perf_event_ret(*)(void*, void*)" new_value="enum bpf_perf_event_ret(*)(struct perf_event_header*, void*)">Base type has been changed from @old_value to @new_value.</change>
<effect>Recompilation of a client program may be broken.</effect>
</problem>
<affected>
<symbol name="bpf_perf_event_read_simple" param="fn">
<comment>6th parameter @param is of type bpf_perf_event_print_t.</comment>
</symbol>
</affected>
</type>
<type name="libbpf_print_fn_t">
<problem id="Typedef_BaseType">
<change old_value="int(*)(char const*, ...)" new_value="int(*)(enum libbpf_print_level, char const*, struct __va_list_tag*)">Base type has been changed from @old_value to @new_value.</change>
<effect>Recompilation of a client program may be broken.</effect>
</problem>
<affected>
<symbol name="libbpf_set_print" param="warn">
<comment>1st parameter @param is of type libbpf_print_fn_t.</comment>
</symbol>
</affected>
</type>
</header>
</problems_with_types>
<problems_with_symbols severity="Low">
<header name="bpf.h">
<library name="libbpf.so">
<symbol name="bpf_verify_program">
<problem id="Parameter_Type">
<change target="strict_alignment" param_pos="4th" old_value="int" new_value="__u32">Type of @param_pos parameter @target has been changed from @old_value to @new_value.</change>
<effect>Recompilation of a client program may be broken.</effect>
</problem>
</symbol>
</library>
</header>
</problems_with_symbols>
<problems_with_constants severity="Low">
</problems_with_constants>
<problems_with_types severity="Safe">
</problems_with_types>
<problems_with_symbols severity="Safe">
<header name="bpf.h">
<library name="libbpf.so">
<symbol name="bpf_verify_program">
<problem id="Renamed_Parameter">
<change target="strict_alignment" param_pos="4th" new_value="prog_flags">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>No effect.</effect>
</problem>
</symbol>
</library>
</header>
<header name="libbpf.h">
<library name="libbpf.so">
<symbol name="bpf_perf_event_read_simple">
<problem id="Renamed_Parameter">
<change target="mem" param_pos="1st" new_value="mmap_mem">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>No effect.</effect>
</problem>
<problem id="Renamed_Parameter">
<change target="size" param_pos="2nd" new_value="mmap_size">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>No effect.</effect>
</problem>
<problem id="Renamed_Parameter">
<change target="buf" param_pos="4th" new_value="copy_mem">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>No effect.</effect>
</problem>
<problem id="Renamed_Parameter">
<change target="buf_len" param_pos="5th" new_value="copy_size">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>No effect.</effect>
</problem>
<problem id="Renamed_Parameter">
<change target="priv" param_pos="7th" new_value="private_data">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>No effect.</effect>
</problem>
</symbol>
<symbol name="libbpf_set_print">
<problem id="Renamed_Parameter">
<change target="warn" param_pos="1st" new_value="fn">@param_pos parameter @target has been renamed to @new_value.</change>
<effect>No effect.</effect>
</problem>
</symbol>
</library>
</header>
</problems_with_symbols>
<problems_with_constants severity="Low">
</problems_with_constants>
</report>
</reports>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment