Skip to content

Test bot on feature/llvm 19#11

Open
PLukas2018 wants to merge 8 commits into
PLukas2018:masterfrom
DanielKriz:feature/llvm-19
Open

Test bot on feature/llvm 19#11
PLukas2018 wants to merge 8 commits into
PLukas2018:masterfrom
DanielKriz:feature/llvm-19

Conversation

@PLukas2018

Copy link
Copy Markdown
Owner

No description provided.

@PLukas2018

Copy link
Copy Markdown
Owner Author

\evaluate --rebuild

@diffkemp-dev-bot

Copy link
Copy Markdown

Error: EqBench failed

@diffkemp-dev-bot

Copy link
Copy Markdown

Error occurred while running evaluation.

@DanielKriz DanielKriz force-pushed the feature/llvm-19 branch 7 times, most recently from 521be64 to 654c194 Compare September 17, 2025 11:10
@PLukas2018

Copy link
Copy Markdown
Owner Author

\eqbench --help

@PLukas2018

Copy link
Copy Markdown
Owner Author

\evaluate --help

@diffkemp-dev-bot

Copy link
Copy Markdown
Usage: \evaluate [options]

Evaluator of pull requests

Options:
  --run <experiments...>     selection of experiments to be run (choices:
                             "eqbench", "rhel-sysctl", "rhel-functions")
  --pr-cmp-opt <options...>  option to add options for PR's `compare` command
  --cmp-opt <options...>     option to add options for `compare` command
  --rebuild                  rebuild snapshots for comparisons on PR
  -h, --help                 display help for command

@PLukas2018

Copy link
Copy Markdown
Owner Author

\evaluate --rebuild

@diffkemp-dev-bot

Copy link
Copy Markdown

EqBench

description TN FP TP FN compare runtime
default optimization 56 91 123 2 331s
-O2 optimization 97 50 123 $$\color{red}-2$$ 2 $$\color{red}+2$$ 343s $$\color{green}-11$$
Details
Details for default optimization

Details for default optimization

Details for -O2 optimization

Details for -O2 optimization

New false negatives

@diffkemp-dev-bot diffkemp-dev-bot Bot added the Failure: EqBench more FN/FP EqBench experiment: more false negatives/positives were found than on the master branch. label Sep 17, 2025
@diffkemp-dev-bot

Copy link
Copy Markdown

Error: RHEL functions failed

@diffkemp-dev-bot

Copy link
Copy Markdown

Error occurred while running evaluation.

@DanielKriz DanielKriz force-pushed the feature/llvm-19 branch 2 times, most recently from 811a7e8 to cfa4f3c Compare September 26, 2025 07:17
@PLukas2018

Copy link
Copy Markdown
Owner Author

\evaluate

@diffkemp-dev-bot diffkemp-dev-bot Bot removed the Failure: EqBench more FN/FP EqBench experiment: more false negatives/positives were found than on the master branch. label Sep 26, 2025
@diffkemp-dev-bot

Copy link
Copy Markdown

EqBench

description TN FP TP FN compare runtime
default optimization 56 91 123 2 330s $$\color{green}-199$$
-O2 optimization 97 50 123 $$\color{red}-2$$ 2 $$\color{red}+2$$ 339s $$\color{green}-208$$
Details
Details for default optimization

Details for default optimization

Details for -O2 optimization

Details for -O2 optimization

New false negatives

@diffkemp-dev-bot diffkemp-dev-bot Bot added the Failure: EqBench more FN/FP EqBench experiment: more false negatives/positives were found than on the master branch. label Sep 26, 2025
@diffkemp-dev-bot

Copy link
Copy Markdown

RHEL functions

versions equal not equal unknown errors total differences compare runtime
8.0-8.1 362 $$\color{red}-3$$ 84 $$\color{red}+3$$ 75 0 98 $$\color{red}+2$$ 1255s $$\color{green}-235$$
8.1-8.2 329 $$\color{green}+1$$ 164 $$\color{green}-1$$ 80 0 159 $$\color{green}-12$$ 1052s $$\color{red}+198$$
8.2-8.3 409 $$\color{green}+4$$ 189 $$\color{green}-4$$ 89 0 197 $$\color{green}-12$$ 2636s $$\color{red}+152$$
8.3-8.4 435 $$\color{green}+7$$ 166 $$\color{green}-7$$ 90 0 189 $$\color{green}-9$$ 1904s $$\color{red}+111$$
8.4-8.5 440 $$\color{red}-1$$ 170 $$\color{red}+1$$ 90 0 156 $$\color{red}+2$$ 2133s $$\color{red}+30$$
Details
Details for 8.0-8.1

Details for 8.0-8.1

Compared symbols newly evaluated as non-equal

  • kfree
  • kmem_cache_alloc_node
  • si_meminfo

New differing symbols

  • pid [include/linux/pid.h:57:66, include/linux/pid.h:61:70] (in pid_task)

  • global_node_page_state [include/linux/vmstat.h:187:195, include/linux/vmstat.h:187:195] (in si_meminfo)

Details for 8.1-8.2

Details for 8.1-8.2

Compared symbols previously evaluated as non-equal

  • kvfree

New differing symbols

  • __purge_vmap_area_lazy [mm/vmalloc.c:656:689, mm/vmalloc.c:656:701] (in __vmalloc, vmalloc, vmap, vzalloc, vzalloc_node)

    @@ -660,3 +660,3 @@
     	struct vmap_area *n_va;
    -	bool do_free = false;
    +	int resched_threshold;
     
    @@ -665,2 +665,15 @@
     	valist = llist_del_all(&vmap_purge_list);
    +	if (unlikely(valist == NULL))
    +		return false;
    +
    +	/*
    +	 * First make sure the mappings are removed from all page-tables
    +	 * before they are freed.
    +	 */
    +	vmalloc_sync_all();
    +
    +	/*
    +	 * TODO: to calculate a flush range without looping.
    +	 * The list can be up to lazy_max_pages() elements.
    +	 */
     	llist_for_each_entry(va, valist, purge_list) {
    @@ -670,9 +683,6 @@
     			end = va->va_end;
    -		do_free = true;
     	}
     
    -	if (!do_free)
    -		return false;
    -
     	flush_tlb_kernel_range(start, end);
    +	resched_threshold = (int) lazy_max_pages() << 1;
     
    @@ -684,3 +694,5 @@
     		atomic_sub(nr, &vmap_lazy_nr);
    -		cond_resched_lock(&vmap_area_lock);
    +
    +		if (atomic_read(&vmap_lazy_nr) < resched_threshold)
    +			cond_resched_lock(&vmap_area_lock);
     	}
    
  • vunmap_page_range [mm/vmalloc.c:120:133, mm/vmalloc.c:120:133] (in __vmalloc, vmalloc, vzalloc, vzalloc_node)

Eliminated differing symbols

  • __vmalloc_node [mm/vmalloc.c:1852:1858, mm/vmalloc.c:1864:1870] (in __vmalloc, vmalloc, vzalloc, vzalloc_node)

  • do_exit [kernel/exit.c:765:926, kernel/exit.c:765:926] (in complete_and_exit)

  • arch_get_random_long [arch/x86/include/asm/archrandom.h:100:103, arch/x86/include/asm/archrandom.h:100:103] (in get_random_bytes)

  • arch_get_random_seed_long [arch/x86/include/asm/archrandom.h:110:113, arch/x86/include/asm/archrandom.h:110:113] (in get_random_bytes)

  • is_vmalloc_addr [include/linux/mm.h:560:569, include/linux/mm.h:558:567] (in kvfree)

  • p4d_free [arch/x86/include/asm/pgalloc.h:212:219, arch/x86/include/asm/pgalloc.h:212:219] (in remap_pfn_range)

  • p4d_offset [arch/x86/include/asm/pgtable.h:921:926, arch/x86/include/asm/pgtable.h:938:943] (in remap_pfn_range, unmap_mapping_range, zap_vma_ptes)

  • pgd_none [arch/x86/include/asm/pgtable.h:941:952, arch/x86/include/asm/pgtable.h:958:969] (in remap_pfn_range, unmap_mapping_range, zap_vma_ptes)

  • pgd_populate [arch/x86/include/asm/pgalloc.h:187:193, arch/x86/include/asm/pgalloc.h:187:193] (in remap_pfn_range)

  • pgd_present [arch/x86/include/asm/pgtable.h:902:907, arch/x86/include/asm/pgtable.h:919:924] (in remap_pfn_range)

  • __tlb_reset_range [include/asm-generic/tlb.h:132:140, include/asm-generic/tlb.h:143:151] (in unmap_mapping_range, zap_vma_ptes)

  • pgd_bad [arch/x86/include/asm/pgtable.h:928:939, arch/x86/include/asm/pgtable.h:945:956] (in unmap_mapping_range, zap_vma_ptes)

  • do_munmap [mm/mmap.c:2705:2804, mm/mmap.c:2699:2798] (in vm_munmap)

  • get_vm_area_caller [mm/vmalloc.c:1446:1451, mm/vmalloc.c:1458:1463] (in vmap)

Details for 8.2-8.3

Details for 8.2-8.3

Compared symbols previously evaluated as non-equal

  • kvfree
  • remap_pfn_range
  • vm_munmap
  • vmalloc_to_page

New differing symbols

  • exit_mm [kernel/exit.c:495:548, kernel/exit.c:435:488] (in complete_and_exit)

    @@ -499,3 +439,3 @@
     
    -	mm_release(current, mm);
    +	exit_mm_release(current, mm);
     	if (!mm)
    
  • find_child_reaper [kernel/exit.c:561:586, kernel/exit.c:501:522] (in complete_and_exit)

    @@ -577,6 +517,2 @@
     	write_unlock_irq(&tasklist_lock);
    -	if (unlikely(pid_ns == &init_pid_ns)) {
    -		panic("Attempted to kill init! exitcode=0x%08x\n",
    -			father->signal->group_exit_code ?: father->exit_code);
    -	}
     	zap_pid_ns_processes(pid_ns);
    
  • release_task [kernel/exit.c:185:228, kernel/exit.c:190:234] (in complete_and_exit)

    @@ -221,4 +226,5 @@
     	write_unlock_irq(&tasklist_lock);
    +	cgroup_release(p);
     	release_thread(p);
    -	call_rcu(&p->rcu, delayed_put_task_struct);
    +	put_task_struct_rcu_user(p);
     
    
  • bstats_cpu_update [include/net/sch_generic.h:837:843, include/net/sch_generic.h:822:828] (in dev_queue_xmit)

Eliminated differing symbols

  • pfn_valid [include/linux/mmzone.h:1362:1376, include/linux/mmzone.h:1365:1379] (in __virt_addr_valid, ioremap_cache, ioremap_nocache)

  • __vmalloc_node [mm/vmalloc.c:1864:1870, mm/vmalloc.c:1867:1873] (in __vmalloc, vmalloc, vzalloc, vzalloc_node)

  • arch_get_random_long [arch/x86/include/asm/archrandom.h:100:103, arch/x86/include/asm/archrandom.h:100:103] (in get_random_bytes)

  • arch_get_random_seed_long [arch/x86/include/asm/archrandom.h:110:113, arch/x86/include/asm/archrandom.h:110:113] (in get_random_bytes)

  • get_gate_page [mm/gup.c:569:617, mm/gup.c:564:612] (in get_user_pages, get_user_pages_remote)

  • p4d_offset [arch/x86/include/asm/pgtable.h:938:943, arch/x86/include/asm/pgtable.h:939:944] (in get_user_pages, get_user_pages_remote, remap_pfn_range, unmap_mapping_range, vfree, vmalloc_to_page, vmap, vunmap, zap_vma_ptes)

  • pgd_bad [arch/x86/include/asm/pgtable.h:945:956, arch/x86/include/asm/pgtable.h:946:957] (in get_user_pages, get_user_pages_remote, unmap_mapping_range, vfree, vmap, vunmap, zap_vma_ptes)

  • pgd_none [arch/x86/include/asm/pgtable.h:958:969, arch/x86/include/asm/pgtable.h:959:970] (in get_user_pages, get_user_pages_remote, remap_pfn_range, unmap_mapping_range, vfree, vmalloc_to_page, vmap, vunmap, zap_vma_ptes)

  • read_pkru [arch/x86/include/asm/pgtable.h:127:132, arch/x86/include/asm/pgtable.h:127:132] (in get_user_pages, get_user_pages_remote)

  • is_vmalloc_addr [include/linux/mm.h:558:567, include/linux/mm.h:555:564] (in kvfree, netlink_broadcast, netlink_unicast)

  • p4d_free [arch/x86/include/asm/pgalloc.h:212:219, arch/x86/include/asm/pgalloc.h:212:219] (in remap_pfn_range)

  • pgd_populate [arch/x86/include/asm/pgalloc.h:187:193, arch/x86/include/asm/pgalloc.h:187:193] (in remap_pfn_range)

  • pgd_present [arch/x86/include/asm/pgtable.h:919:924, arch/x86/include/asm/pgtable.h:920:925] (in remap_pfn_range)

  • __tlb_reset_range [include/asm-generic/tlb.h:143:151, include/asm-generic/tlb.h:143:151] (in unmap_mapping_range, zap_vma_ptes)

  • do_munmap [mm/mmap.c:2699:2798, mm/mmap.c:2699:2798] (in vm_munmap)

  • get_vm_area_caller [mm/vmalloc.c:1458:1463, mm/vmalloc.c:1461:1466] (in vmap)

Details for 8.3-8.4

Details for 8.3-8.4

Compared symbols previously evaluated as non-equal

  • get_seconds
  • ktime_get_real_seconds
  • ktime_get_seconds
  • kvfree
  • netlink_broadcast
  • netlink_unicast
  • vmalloc_to_page

New differing symbols

  • __count_vm_event [include/linux/vmstat.h:61:64, include/linux/vmstat.h:63:66] (in __free_pages, free_pages)

  • __count_vm_events [include/linux/vmstat.h:71:74, include/linux/vmstat.h:73:76] (in __free_pages, free_pages)

  • __vmalloc_node_range [mm/vmalloc.c:1808:1845, mm/vmalloc.c:2477:2514] (in __vmalloc, vmalloc, vzalloc, vzalloc_node)

    @@ -1817,6 +2486,6 @@
     	size = PAGE_ALIGN(size);
    -	if (!size || (size >> PAGE_SHIFT) > totalram_pages)
    +	if (!size || (size >> PAGE_SHIFT) > totalram_pages())
     		goto fail;
     
    -	area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED |
    +	area = __get_vm_area_node(real_size, align, VM_ALLOC | VM_UNINITIALIZED |
     				vm_flags, start, end, node, gfp_mask, caller);
    
  • count_vm_events [include/linux/vmstat.h:76:79, include/linux/vmstat.h:78:81] (in submit_bio)

  • RB_DECLARE_CALLBACKS [, ] (in vm_munmap) Error: Missing definitions for the differing function!

  • vma_gap_callbacks_rotate [mm/mmap.c:400:415, mm/mmap.c:406:422] (in vm_munmap)

    @@ -400,3 +406,4 @@
    -RB_DECLARE_CALLBACKS(static, vma_gap_callbacks, struct vm_area_struct, vm_rb,
    -		     unsigned long, rb_subtree_gap, vma_compute_subtree_gap)
    +RB_DECLARE_CALLBACKS_MAX(static, vma_gap_callbacks,
    +			 struct vm_area_struct, vm_rb,
    +			 unsigned long, rb_subtree_gap, vma_compute_gap)
     
    @@ -410,4 +417,4 @@
     	/*
    -	 * As it turns out, RB_DECLARE_CALLBACKS() already created a callback
    -	 * function that does exacltly what we want.
    +	 * As it turns out, RB_DECLARE_CALLBACKS_MAX() already created
    +	 * a callback function that does exactly what we want.
     	 */
    

Eliminated differing symbols

  • pfn_valid [include/linux/mmzone.h:1365:1379, include/linux/mmzone.h:1381:1395] (in __virt_addr_valid, ioremap_cache, ioremap_nocache)

  • __vmalloc_node [mm/vmalloc.c:1867:1873, mm/vmalloc.c:2537:2543] (in __vmalloc, vmalloc, vzalloc, vzalloc_node)

  • net_device [include/linux/netdevice.h:1927:2263, include/linux/netdevice.h:1944:2273] (in alloc_netdev_mqs, free_netdev)

    @@ -2214,14 +2231,4 @@
     	struct sfp_bus		*sfp_bus;
    -	RH_KABI_DEPRECATE(struct lock_class_key	*, qdisc_tx_busylock)
    -	RH_KABI_DEPRECATE(struct lock_class_key	*, qdisc_running_key)
    -	/* RHEL: The KABI breakage here is not real. We are inserting
    -	 * 4 fields of type struct lock_class_key but the size of this
    -	 * structure is zero for non-debug kernel configs because
    -	 * LOCKDEP is not enabled for them and for debug flavours
    -	 * KABI is not preserved.
    -	 */
    -	RH_KABI_BROKEN_INSERT(struct lock_class_key qdisc_tx_busylock_key)
    -	RH_KABI_BROKEN_INSERT(struct lock_class_key qdisc_running_key)
    -	RH_KABI_BROKEN_INSERT(struct lock_class_key qdisc_xmit_lock_key)
    -	RH_KABI_BROKEN_INSERT(struct lock_class_key addr_list_lock_key)
    +	struct lock_class_key	*qdisc_tx_busylock;
    +	struct lock_class_key	*qdisc_running_key;
     	bool			proto_down;
    @@ -2235,5 +2242,8 @@
     	RH_KABI_USE(4, struct xdp_dev_bulk_queue __percpu *xdp_bulkq)
    -	RH_KABI_RESERVE(5)
    -	RH_KABI_RESERVE(6)
    -	RH_KABI_RESERVE(7)
    +	RH_KABI_USE(5, const struct udp_tunnel_nic_info	*udp_tunnel_nic_info)
    +	RH_KABI_USE(6, struct udp_tunnel_nic	*udp_tunnel_nic)
    +
    +	/* protected by rtnl_lock */
    +	RH_KABI_USE(7, struct bpf_xdp_entity	*xdp_state)
    +
     	RH_KABI_RESERVE(8)
    
  • arch_get_random_long [arch/x86/include/asm/archrandom.h:100:103, arch/x86/include/asm/archrandom.h:100:103] (in get_random_bytes)

  • arch_get_random_seed_long [arch/x86/include/asm/archrandom.h:110:113, arch/x86/include/asm/archrandom.h:110:113] (in get_random_bytes)

  • get_seconds [kernel/time/timekeeping.c:2153:2158, kernel/time/timekeeping.c:2163:2168] (in get_seconds)

  • ktime_get_real_seconds [kernel/time/timekeeping.c:928:944, kernel/time/timekeeping.c:938:954] (in ktime_get_real_seconds)

  • ktime_get_seconds [kernel/time/timekeeping.c:908:914, kernel/time/timekeeping.c:918:924] (in ktime_get_seconds)

  • is_vmalloc_addr [include/linux/mm.h:555:564, include/linux/mm.h:664:673] (in kvfree, netlink_broadcast, netlink_unicast)

  • p4d_free [arch/x86/include/asm/pgalloc.h:212:219, arch/x86/include/asm/pgalloc.h:212:219] (in remap_pfn_range)

  • p4d_offset [arch/x86/include/asm/pgtable.h:939:944, arch/x86/include/asm/pgtable.h:969:974] (in remap_pfn_range, vmalloc_to_page)

  • pgd_none [arch/x86/include/asm/pgtable.h:959:970, arch/x86/include/asm/pgtable.h:989:1000] (in remap_pfn_range, vmalloc_to_page)

  • pgd_populate [arch/x86/include/asm/pgalloc.h:187:193, arch/x86/include/asm/pgalloc.h:187:193] (in remap_pfn_range)

  • pgd_present [arch/x86/include/asm/pgtable.h:920:925, arch/x86/include/asm/pgtable.h:950:955] (in remap_pfn_range)

  • do_munmap [mm/mmap.c:2699:2798, mm/mmap.c:2710:2809] (in vm_munmap)

Details for 8.4-8.5

Details for 8.4-8.5

Compared symbols newly evaluated as non-equal

  • si_meminfo

New differing symbols

  • global_node_page_state_pages [include/linux/vmstat.h:196:204, include/linux/vmstat.h:197:205] (in si_meminfo)

  • global_zone_page_state [include/linux/vmstat.h:185:193, include/linux/vmstat.h:186:194] (in si_meminfo)

@diffkemp-dev-bot diffkemp-dev-bot Bot added the Failure: RHEL functions more NEQ/UNK/ERR RHEL KABI functions: more non-equal/unknown/error functions were gained than on the master branch. label Sep 26, 2025
@diffkemp-dev-bot

Copy link
Copy Markdown

RHEL sysctl

versions equal not equal unknown errors total differences compare runtime
8.0-8.1 239 $$\color{red}-3$$ 36 $$\color{red}+3$$ 0 0 46 $$\color{red}+2$$ 1914s $$\color{green}-776$$
8.1-8.2 219 $$\color{green}+3$$ 55 $$\color{green}-3$$ 0 0 98 $$\color{green}-9$$ 971s $$\color{green}-48$$
8.2-8.3 219 $$\color{green}+3$$ 52 $$\color{green}-3$$ 0 0 103 $$\color{green}-5$$ 1459s $$\color{green}-697$$
8.3-8.4 214 $$\color{red}-1$$ 59 $$\color{red}+1$$ 0 0 87 $$\color{green}-2$$ 876s $$\color{green}-25$$
8.4-8.5 237 $$\color{red}-7$$ 50 $$\color{red}+7$$ 0 0 62 $$\color{red}+4$$ 1315s $$\color{green}-687$$
Details
Details for 8.0-8.1

Details for 8.0-8.1

Compared symbols newly evaluated as non-equal

  • balance_dirty_pages
  • check_panic_on_oom
  • dirty_ratio_handler

New differing symbols

  • global_node_page_state [, ] (in balance_dirty_pages, check_panic_on_oom, dirty_ratio_handler, wb_check_old_data_flush) Error: Missing definitions for the differing function!
  • try_to_free_mem_cgroup_pages [, ] (in try_to_free_mem_cgroup_pages) Error: Missing definitions for the differing function!
Details for 8.1-8.2

Details for 8.1-8.2

Compared symbols previously evaluated as non-equal

  • balance_dirty_pages
  • hugetlb_overcommit_handler
  • move_vma

New differing symbols

  • put_devmap_managed_page [, ] (in __do_sys_perf_event_open, hugetlb_mempolicy_sysctl_handler, hugetlb_sysctl_handler) Error: Missing definitions for the differing function!
  • pfn_range_valid_gigantic [, ] (in hugetlb_mempolicy_sysctl_handler, hugetlb_sysctl_handler) Error: Missing definitions for the differing function!
  • pfn_valid [, ] (in hugetlb_mempolicy_sysctl_handler, hugetlb_sysctl_handler) Error: Missing definitions for the differing function!

Eliminated differing symbols

  • perf_output_sample_ustack [, ] (in __do_sys_perf_event_open) Error: Missing definitions for the differing function!
  • perf_ustack_task_size [, ] (in __do_sys_perf_event_open) Error: Missing definitions for the differing function!
  • perf_virt_to_phys [, ] (in __do_sys_perf_event_open) Error: Missing definitions for the differing function!
  • do_munmap [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • execute_only_pkey [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • get_unmapped_area [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • hugetlb_sysctl_handler_common [, ] (in hugetlb_mempolicy_sysctl_handler, hugetlb_sysctl_handler) Error: Missing definitions for the differing function!
  • hugetlb_overcommit_handler [, ] (in hugetlb_overcommit_handler) Error: Missing definitions for the differing function!
  • p4d_offset [, ] (in move_vma) Error: Missing definitions for the differing function!
  • pgd_bad [, ] (in move_vma) Error: Missing definitions for the differing function!
  • pgd_none [, ] (in move_vma) Error: Missing definitions for the differing function!
  • __reset_isolation_suitable [, ] (in sysctl_compaction_handler) Error: Missing definitions for the differing function!
Details for 8.2-8.3

Details for 8.2-8.3

Compared symbols previously evaluated as non-equal

  • balance_dirty_pages
  • hardlockup_detector_event_create
  • rebalance_domains

New differing symbols

  • perf_event_release_kernel [, ] (in __do_sys_perf_event_open) Error: Missing definitions for the differing function!
  • __nr_to_section [, ] (in memory_failure) Error: Missing definitions for the differing function!
  • atomic_long_dec [, ] (in memory_failure) Error: Missing definitions for the differing function!
  • page_ref_add_unless [, ] (in memory_failure) Error: Missing definitions for the differing function!

Eliminated differing symbols

  • wb_min_max_ratio [, ] (in balance_dirty_pages) Error: Missing definitions for the differing function!
  • do_munmap [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • execute_only_pkey [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • get_unmapped_area [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • hardlockup_detector_event_create [, ] (in hardlockup_detector_event_create) Error: Missing definitions for the differing function!
  • memory_failure [, ] (in memory_failure) Error: Missing definitions for the differing function!
  • p4d_offset [, ] (in move_vma) Error: Missing definitions for the differing function!
  • pgd_bad [, ] (in move_vma) Error: Missing definitions for the differing function!
  • pgd_none [, ] (in move_vma) Error: Missing definitions for the differing function!
Details for 8.3-8.4

Details for 8.3-8.4

Compared symbols newly evaluated as non-equal

  • drop_caches_sysctl_handler

New differing symbols

  • global_node_page_state [, ] (in balance_dirty_pages, dirty_ratio_handler, wb_check_old_data_flush) Error: Missing definitions for the differing function!
  • count_vm_event [, ] (in drop_caches_sysctl_handler) Error: Missing definitions for the differing function!

Eliminated differing symbols

  • is_dump_unreclaim_slabs [, ] (in check_panic_on_oom) Error: Missing definitions for the differing function!
  • do_munmap [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • execute_only_pkey [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • get_unmapped_area [, ] (in do_mmap) Error: Missing definitions for the differing function!
Details for 8.4-8.5

Details for 8.4-8.5

Compared symbols newly evaluated as non-equal

  • balance_dirty_pages
  • dirty_ratio_handler
  • init_admin_reserve
  • init_user_reserve
  • node_dirty_limit
  • reserve_mem_notifier
  • try_to_free_pages

New differing symbols

  • global_node_page_state_pages [, ] (in balance_dirty_pages, check_panic_on_oom, dirty_ratio_handler, out_of_memory, wb_check_old_data_flush) Error: Missing definitions for the differing function!
  • global_zone_page_state [, ] (in dirty_ratio_handler, init_admin_reserve, init_user_reserve, reserve_mem_notifier) Error: Missing definitions for the differing function!
  • do_try_to_free_pages [, ] (in try_to_free_pages) Error: Missing definitions for the differing function!
  • shrink_node [, ] (in try_to_free_pages) Error: Missing definitions for the differing function!

@diffkemp-dev-bot diffkemp-dev-bot Bot added the Failure: RHEL sysctl more NEQ/UNK/ERR RHEL KABI sysctl: more non-equal/unknown/error functions were gained than on the master branch. label Sep 26, 2025
@DanielKriz DanielKriz force-pushed the feature/llvm-19 branch 2 times, most recently from 9b5523a to 278ce48 Compare October 9, 2025 08:36
@diffkemp-dev-bot diffkemp-dev-bot Bot removed Failure: RHEL functions more NEQ/UNK/ERR RHEL KABI functions: more non-equal/unknown/error functions were gained than on the master branch. Failure: RHEL sysctl more NEQ/UNK/ERR RHEL KABI sysctl: more non-equal/unknown/error functions were gained than on the master branch. Failure: EqBench more FN/FP EqBench experiment: more false negatives/positives were found than on the master branch. labels Nov 13, 2025
This makes sure that the DiffKemp command is running in correct and
well-defined environment with correct version of LLVM tools (otherwise
tools from system might be used).
This commit adds a support for LLVM 19, the main differences in
comparison to the previous version are:

1. The removal of `equals` method from `StringRef` class.
2. The removal of `getPredicate` from `ConstExpr` class.
3. Various changes in includes, that require us to use more fine-grained
   include strategy.
4. The separation of some analysis functions and classes into a separate
   header.
5. The deprecation of debug intrinsics has begun.

The `equals` method was removed in this commit [1] and the equality
operator is in the code base from LLVM 3, so it should be safe to use.

The name of some passes has changed in [2]. Therefore, we have to check
for some of these passes and change their name in accordance to the used
LLVM version.

Because of that we have to check the version with which was the DiffKemp
SimpLL library built. This required addition of new function to the FFI.

The `getPredicate` method was removed from `ConstExpr` class in commit [3],
we have extracted the method for getting an instruction from expression
into a stand-alone function, but this method has changed upstream.
Therefore, I have extracted the new changed method into a new function.

The analysis classes and functions were moved into a new header in [4].

The LLVM aims to remove debug intrinsics, as explained in [5]. However,
we still rely on them in our tests. Therefore, we have to set the debug
type back to the old one as our code was affected by [6].

[1]: llvm/llvm-project@3fa409f
[2]: llvm/llvm-project@e390c22
[3]: llvm/llvm-project@deab451
[4]: llvm/llvm-project@a4cd981
[5]: https://llvm.org/docs/RemoveDIsDebugInfo.html
[6]: llvm/llvm-project@9997e03
Some includes are in a different format that what is used elsewhere.
This commit makes all of them adhere to a common style by:

1. Make local includes actually use local module lookup (double quotes)
2. Do the same thing for global includes
@PLukas2018

Copy link
Copy Markdown
Owner Author

\evaluate

@diffkemp-dev-bot

Copy link
Copy Markdown

EqBench

description TN FP TP FN compare runtime
default optimization 56 91 123 2 338s $$\color{green}-14$$
-O2 optimization 97 50 123 $$\color{red}-2$$ 2 $$\color{red}+2$$ 343s $$\color{green}-16$$
Details
Details for default optimization

Details for default optimization

Details for -O2 optimization

Details for -O2 optimization

New false negatives

@diffkemp-dev-bot diffkemp-dev-bot Bot added the Failure: EqBench more FN/FP EqBench experiment: more false negatives/positives were found than on the master branch. label Nov 14, 2025
@diffkemp-dev-bot

Copy link
Copy Markdown

RHEL functions

versions equal not equal unknown errors total differences compare runtime
8.0-8.1 362 $$\color{red}-3$$ 84 $$\color{red}+3$$ 75 0 98 $$\color{red}+2$$ 1243s $$\color{green}-119$$
8.1-8.2 329 $$\color{green}+1$$ 164 $$\color{green}-1$$ 80 0 159 $$\color{green}-12$$ 1027s $$\color{red}+48$$
8.2-8.3 409 $$\color{green}+4$$ 189 $$\color{green}-4$$ 89 0 197 $$\color{green}-12$$ 2493s $$\color{red}+19$$
8.3-8.4 435 $$\color{green}+7$$ 166 $$\color{green}-7$$ 90 0 189 $$\color{green}-9$$ 1952s $$\color{green}-52$$
8.4-8.5 440 $$\color{red}-1$$ 170 $$\color{red}+1$$ 90 0 156 $$\color{red}+2$$ 2168s $$\color{green}-128$$
Details
Details for 8.0-8.1

Details for 8.0-8.1

Compared symbols newly evaluated as non-equal

  • kfree
  • kmem_cache_alloc_node
  • si_meminfo

New differing symbols

  • pid [include/linux/pid.h:57:66, include/linux/pid.h:61:70] (in pid_task)

  • global_node_page_state [include/linux/vmstat.h:187:195, include/linux/vmstat.h:187:195] (in si_meminfo)

Details for 8.1-8.2

Details for 8.1-8.2

Compared symbols previously evaluated as non-equal

  • kvfree

New differing symbols

  • __purge_vmap_area_lazy [mm/vmalloc.c:656:689, mm/vmalloc.c:656:701] (in __vmalloc, vmalloc, vmap, vzalloc, vzalloc_node)

    @@ -660,3 +660,3 @@
     	struct vmap_area *n_va;
    -	bool do_free = false;
    +	int resched_threshold;
     
    @@ -665,2 +665,15 @@
     	valist = llist_del_all(&vmap_purge_list);
    +	if (unlikely(valist == NULL))
    +		return false;
    +
    +	/*
    +	 * First make sure the mappings are removed from all page-tables
    +	 * before they are freed.
    +	 */
    +	vmalloc_sync_all();
    +
    +	/*
    +	 * TODO: to calculate a flush range without looping.
    +	 * The list can be up to lazy_max_pages() elements.
    +	 */
     	llist_for_each_entry(va, valist, purge_list) {
    @@ -670,9 +683,6 @@
     			end = va->va_end;
    -		do_free = true;
     	}
     
    -	if (!do_free)
    -		return false;
    -
     	flush_tlb_kernel_range(start, end);
    +	resched_threshold = (int) lazy_max_pages() << 1;
     
    @@ -684,3 +694,5 @@
     		atomic_sub(nr, &vmap_lazy_nr);
    -		cond_resched_lock(&vmap_area_lock);
    +
    +		if (atomic_read(&vmap_lazy_nr) < resched_threshold)
    +			cond_resched_lock(&vmap_area_lock);
     	}
    
  • vunmap_page_range [mm/vmalloc.c:120:133, mm/vmalloc.c:120:133] (in __vmalloc, vmalloc, vzalloc, vzalloc_node)

Eliminated differing symbols

  • __vmalloc_node [mm/vmalloc.c:1852:1858, mm/vmalloc.c:1864:1870] (in __vmalloc, vmalloc, vzalloc, vzalloc_node)

  • do_exit [kernel/exit.c:765:926, kernel/exit.c:765:926] (in complete_and_exit)

  • arch_get_random_long [arch/x86/include/asm/archrandom.h:100:103, arch/x86/include/asm/archrandom.h:100:103] (in get_random_bytes)

  • arch_get_random_seed_long [arch/x86/include/asm/archrandom.h:110:113, arch/x86/include/asm/archrandom.h:110:113] (in get_random_bytes)

  • is_vmalloc_addr [include/linux/mm.h:560:569, include/linux/mm.h:558:567] (in kvfree)

  • p4d_free [arch/x86/include/asm/pgalloc.h:212:219, arch/x86/include/asm/pgalloc.h:212:219] (in remap_pfn_range)

  • p4d_offset [arch/x86/include/asm/pgtable.h:921:926, arch/x86/include/asm/pgtable.h:938:943] (in remap_pfn_range, unmap_mapping_range, zap_vma_ptes)

  • pgd_none [arch/x86/include/asm/pgtable.h:941:952, arch/x86/include/asm/pgtable.h:958:969] (in remap_pfn_range, unmap_mapping_range, zap_vma_ptes)

  • pgd_populate [arch/x86/include/asm/pgalloc.h:187:193, arch/x86/include/asm/pgalloc.h:187:193] (in remap_pfn_range)

  • pgd_present [arch/x86/include/asm/pgtable.h:902:907, arch/x86/include/asm/pgtable.h:919:924] (in remap_pfn_range)

  • __tlb_reset_range [include/asm-generic/tlb.h:132:140, include/asm-generic/tlb.h:143:151] (in unmap_mapping_range, zap_vma_ptes)

  • pgd_bad [arch/x86/include/asm/pgtable.h:928:939, arch/x86/include/asm/pgtable.h:945:956] (in unmap_mapping_range, zap_vma_ptes)

  • do_munmap [mm/mmap.c:2705:2804, mm/mmap.c:2699:2798] (in vm_munmap)

  • get_vm_area_caller [mm/vmalloc.c:1446:1451, mm/vmalloc.c:1458:1463] (in vmap)

Details for 8.2-8.3

Details for 8.2-8.3

Compared symbols previously evaluated as non-equal

  • kvfree
  • remap_pfn_range
  • vm_munmap
  • vmalloc_to_page

New differing symbols

  • exit_mm [kernel/exit.c:495:548, kernel/exit.c:435:488] (in complete_and_exit)

    @@ -499,3 +439,3 @@
     
    -	mm_release(current, mm);
    +	exit_mm_release(current, mm);
     	if (!mm)
    
  • find_child_reaper [kernel/exit.c:561:586, kernel/exit.c:501:522] (in complete_and_exit)

    @@ -577,6 +517,2 @@
     	write_unlock_irq(&tasklist_lock);
    -	if (unlikely(pid_ns == &init_pid_ns)) {
    -		panic("Attempted to kill init! exitcode=0x%08x\n",
    -			father->signal->group_exit_code ?: father->exit_code);
    -	}
     	zap_pid_ns_processes(pid_ns);
    
  • release_task [kernel/exit.c:185:228, kernel/exit.c:190:234] (in complete_and_exit)

    @@ -221,4 +226,5 @@
     	write_unlock_irq(&tasklist_lock);
    +	cgroup_release(p);
     	release_thread(p);
    -	call_rcu(&p->rcu, delayed_put_task_struct);
    +	put_task_struct_rcu_user(p);
     
    
  • bstats_cpu_update [include/net/sch_generic.h:837:843, include/net/sch_generic.h:822:828] (in dev_queue_xmit)

Eliminated differing symbols

  • pfn_valid [include/linux/mmzone.h:1362:1376, include/linux/mmzone.h:1365:1379] (in __virt_addr_valid, ioremap_cache, ioremap_nocache)

  • __vmalloc_node [mm/vmalloc.c:1864:1870, mm/vmalloc.c:1867:1873] (in __vmalloc, vmalloc, vzalloc, vzalloc_node)

  • arch_get_random_long [arch/x86/include/asm/archrandom.h:100:103, arch/x86/include/asm/archrandom.h:100:103] (in get_random_bytes)

  • arch_get_random_seed_long [arch/x86/include/asm/archrandom.h:110:113, arch/x86/include/asm/archrandom.h:110:113] (in get_random_bytes)

  • get_gate_page [mm/gup.c:569:617, mm/gup.c:564:612] (in get_user_pages, get_user_pages_remote)

  • p4d_offset [arch/x86/include/asm/pgtable.h:938:943, arch/x86/include/asm/pgtable.h:939:944] (in get_user_pages, get_user_pages_remote, remap_pfn_range, unmap_mapping_range, vfree, vmalloc_to_page, vmap, vunmap, zap_vma_ptes)

  • pgd_bad [arch/x86/include/asm/pgtable.h:945:956, arch/x86/include/asm/pgtable.h:946:957] (in get_user_pages, get_user_pages_remote, unmap_mapping_range, vfree, vmap, vunmap, zap_vma_ptes)

  • pgd_none [arch/x86/include/asm/pgtable.h:958:969, arch/x86/include/asm/pgtable.h:959:970] (in get_user_pages, get_user_pages_remote, remap_pfn_range, unmap_mapping_range, vfree, vmalloc_to_page, vmap, vunmap, zap_vma_ptes)

  • read_pkru [arch/x86/include/asm/pgtable.h:127:132, arch/x86/include/asm/pgtable.h:127:132] (in get_user_pages, get_user_pages_remote)

  • is_vmalloc_addr [include/linux/mm.h:558:567, include/linux/mm.h:555:564] (in kvfree, netlink_broadcast, netlink_unicast)

  • p4d_free [arch/x86/include/asm/pgalloc.h:212:219, arch/x86/include/asm/pgalloc.h:212:219] (in remap_pfn_range)

  • pgd_populate [arch/x86/include/asm/pgalloc.h:187:193, arch/x86/include/asm/pgalloc.h:187:193] (in remap_pfn_range)

  • pgd_present [arch/x86/include/asm/pgtable.h:919:924, arch/x86/include/asm/pgtable.h:920:925] (in remap_pfn_range)

  • __tlb_reset_range [include/asm-generic/tlb.h:143:151, include/asm-generic/tlb.h:143:151] (in unmap_mapping_range, zap_vma_ptes)

  • do_munmap [mm/mmap.c:2699:2798, mm/mmap.c:2699:2798] (in vm_munmap)

  • get_vm_area_caller [mm/vmalloc.c:1458:1463, mm/vmalloc.c:1461:1466] (in vmap)

Details for 8.3-8.4

Details for 8.3-8.4

Compared symbols previously evaluated as non-equal

  • get_seconds
  • ktime_get_real_seconds
  • ktime_get_seconds
  • kvfree
  • netlink_broadcast
  • netlink_unicast
  • vmalloc_to_page

New differing symbols

  • __count_vm_event [include/linux/vmstat.h:61:64, include/linux/vmstat.h:63:66] (in __free_pages, free_pages)

  • __count_vm_events [include/linux/vmstat.h:71:74, include/linux/vmstat.h:73:76] (in __free_pages, free_pages)

  • __vmalloc_node_range [mm/vmalloc.c:1808:1845, mm/vmalloc.c:2477:2514] (in __vmalloc, vmalloc, vzalloc, vzalloc_node)

    @@ -1817,6 +2486,6 @@
     	size = PAGE_ALIGN(size);
    -	if (!size || (size >> PAGE_SHIFT) > totalram_pages)
    +	if (!size || (size >> PAGE_SHIFT) > totalram_pages())
     		goto fail;
     
    -	area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNINITIALIZED |
    +	area = __get_vm_area_node(real_size, align, VM_ALLOC | VM_UNINITIALIZED |
     				vm_flags, start, end, node, gfp_mask, caller);
    
  • count_vm_events [include/linux/vmstat.h:76:79, include/linux/vmstat.h:78:81] (in submit_bio)

  • RB_DECLARE_CALLBACKS [, ] (in vm_munmap) Error: Missing definitions for the differing function!

  • vma_gap_callbacks_rotate [mm/mmap.c:400:415, mm/mmap.c:406:422] (in vm_munmap)

    @@ -400,3 +406,4 @@
    -RB_DECLARE_CALLBACKS(static, vma_gap_callbacks, struct vm_area_struct, vm_rb,
    -		     unsigned long, rb_subtree_gap, vma_compute_subtree_gap)
    +RB_DECLARE_CALLBACKS_MAX(static, vma_gap_callbacks,
    +			 struct vm_area_struct, vm_rb,
    +			 unsigned long, rb_subtree_gap, vma_compute_gap)
     
    @@ -410,4 +417,4 @@
     	/*
    -	 * As it turns out, RB_DECLARE_CALLBACKS() already created a callback
    -	 * function that does exacltly what we want.
    +	 * As it turns out, RB_DECLARE_CALLBACKS_MAX() already created
    +	 * a callback function that does exactly what we want.
     	 */
    

Eliminated differing symbols

  • pfn_valid [include/linux/mmzone.h:1365:1379, include/linux/mmzone.h:1381:1395] (in __virt_addr_valid, ioremap_cache, ioremap_nocache)

  • __vmalloc_node [mm/vmalloc.c:1867:1873, mm/vmalloc.c:2537:2543] (in __vmalloc, vmalloc, vzalloc, vzalloc_node)

  • net_device [include/linux/netdevice.h:1927:2263, include/linux/netdevice.h:1944:2273] (in alloc_netdev_mqs, free_netdev)

    @@ -2214,14 +2231,4 @@
     	struct sfp_bus		*sfp_bus;
    -	RH_KABI_DEPRECATE(struct lock_class_key	*, qdisc_tx_busylock)
    -	RH_KABI_DEPRECATE(struct lock_class_key	*, qdisc_running_key)
    -	/* RHEL: The KABI breakage here is not real. We are inserting
    -	 * 4 fields of type struct lock_class_key but the size of this
    -	 * structure is zero for non-debug kernel configs because
    -	 * LOCKDEP is not enabled for them and for debug flavours
    -	 * KABI is not preserved.
    -	 */
    -	RH_KABI_BROKEN_INSERT(struct lock_class_key qdisc_tx_busylock_key)
    -	RH_KABI_BROKEN_INSERT(struct lock_class_key qdisc_running_key)
    -	RH_KABI_BROKEN_INSERT(struct lock_class_key qdisc_xmit_lock_key)
    -	RH_KABI_BROKEN_INSERT(struct lock_class_key addr_list_lock_key)
    +	struct lock_class_key	*qdisc_tx_busylock;
    +	struct lock_class_key	*qdisc_running_key;
     	bool			proto_down;
    @@ -2235,5 +2242,8 @@
     	RH_KABI_USE(4, struct xdp_dev_bulk_queue __percpu *xdp_bulkq)
    -	RH_KABI_RESERVE(5)
    -	RH_KABI_RESERVE(6)
    -	RH_KABI_RESERVE(7)
    +	RH_KABI_USE(5, const struct udp_tunnel_nic_info	*udp_tunnel_nic_info)
    +	RH_KABI_USE(6, struct udp_tunnel_nic	*udp_tunnel_nic)
    +
    +	/* protected by rtnl_lock */
    +	RH_KABI_USE(7, struct bpf_xdp_entity	*xdp_state)
    +
     	RH_KABI_RESERVE(8)
    
  • arch_get_random_long [arch/x86/include/asm/archrandom.h:100:103, arch/x86/include/asm/archrandom.h:100:103] (in get_random_bytes)

  • arch_get_random_seed_long [arch/x86/include/asm/archrandom.h:110:113, arch/x86/include/asm/archrandom.h:110:113] (in get_random_bytes)

  • get_seconds [kernel/time/timekeeping.c:2153:2158, kernel/time/timekeeping.c:2163:2168] (in get_seconds)

  • ktime_get_real_seconds [kernel/time/timekeeping.c:928:944, kernel/time/timekeeping.c:938:954] (in ktime_get_real_seconds)

  • ktime_get_seconds [kernel/time/timekeeping.c:908:914, kernel/time/timekeeping.c:918:924] (in ktime_get_seconds)

  • is_vmalloc_addr [include/linux/mm.h:555:564, include/linux/mm.h:664:673] (in kvfree, netlink_broadcast, netlink_unicast)

  • p4d_free [arch/x86/include/asm/pgalloc.h:212:219, arch/x86/include/asm/pgalloc.h:212:219] (in remap_pfn_range)

  • p4d_offset [arch/x86/include/asm/pgtable.h:939:944, arch/x86/include/asm/pgtable.h:969:974] (in remap_pfn_range, vmalloc_to_page)

  • pgd_none [arch/x86/include/asm/pgtable.h:959:970, arch/x86/include/asm/pgtable.h:989:1000] (in remap_pfn_range, vmalloc_to_page)

  • pgd_populate [arch/x86/include/asm/pgalloc.h:187:193, arch/x86/include/asm/pgalloc.h:187:193] (in remap_pfn_range)

  • pgd_present [arch/x86/include/asm/pgtable.h:920:925, arch/x86/include/asm/pgtable.h:950:955] (in remap_pfn_range)

  • do_munmap [mm/mmap.c:2699:2798, mm/mmap.c:2710:2809] (in vm_munmap)

Details for 8.4-8.5

Details for 8.4-8.5

Compared symbols newly evaluated as non-equal

  • si_meminfo

New differing symbols

  • global_node_page_state_pages [include/linux/vmstat.h:196:204, include/linux/vmstat.h:197:205] (in si_meminfo)

  • global_zone_page_state [include/linux/vmstat.h:185:193, include/linux/vmstat.h:186:194] (in si_meminfo)

@diffkemp-dev-bot diffkemp-dev-bot Bot added the Failure: RHEL functions more NEQ/UNK/ERR RHEL KABI functions: more non-equal/unknown/error functions were gained than on the master branch. label Nov 14, 2025
@diffkemp-dev-bot

Copy link
Copy Markdown

RHEL sysctl

versions equal not equal unknown errors total differences compare runtime
8.0-8.1 239 $$\color{red}-3$$ 36 $$\color{red}+3$$ 0 0 46 $$\color{red}+2$$ 1872s $$\color{green}-223$$
8.1-8.2 219 $$\color{green}+3$$ 55 $$\color{green}-3$$ 0 0 98 $$\color{green}-9$$ 952s $$\color{green}-37$$
8.2-8.3 219 $$\color{green}+3$$ 52 $$\color{green}-3$$ 0 0 103 $$\color{green}-5$$ 1430s $$\color{red}+14$$
8.3-8.4 214 $$\color{red}-1$$ 59 $$\color{red}+1$$ 0 0 87 $$\color{green}-2$$ 862s $$\color{green}-24$$
8.4-8.5 237 $$\color{red}-7$$ 50 $$\color{red}+7$$ 0 0 62 $$\color{red}+4$$ 1295s $$\color{green}-139$$
Details
Details for 8.0-8.1

Details for 8.0-8.1

Compared symbols newly evaluated as non-equal

  • balance_dirty_pages
  • check_panic_on_oom
  • dirty_ratio_handler

New differing symbols

  • global_node_page_state [, ] (in balance_dirty_pages, check_panic_on_oom, dirty_ratio_handler, wb_check_old_data_flush) Error: Missing definitions for the differing function!
  • try_to_free_mem_cgroup_pages [, ] (in try_to_free_mem_cgroup_pages) Error: Missing definitions for the differing function!
Details for 8.1-8.2

Details for 8.1-8.2

Compared symbols previously evaluated as non-equal

  • balance_dirty_pages
  • hugetlb_overcommit_handler
  • move_vma

New differing symbols

  • put_devmap_managed_page [, ] (in __do_sys_perf_event_open, hugetlb_mempolicy_sysctl_handler, hugetlb_sysctl_handler) Error: Missing definitions for the differing function!
  • pfn_range_valid_gigantic [, ] (in hugetlb_mempolicy_sysctl_handler, hugetlb_sysctl_handler) Error: Missing definitions for the differing function!
  • pfn_valid [, ] (in hugetlb_mempolicy_sysctl_handler, hugetlb_sysctl_handler) Error: Missing definitions for the differing function!

Eliminated differing symbols

  • perf_output_sample_ustack [, ] (in __do_sys_perf_event_open) Error: Missing definitions for the differing function!
  • perf_ustack_task_size [, ] (in __do_sys_perf_event_open) Error: Missing definitions for the differing function!
  • perf_virt_to_phys [, ] (in __do_sys_perf_event_open) Error: Missing definitions for the differing function!
  • do_munmap [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • execute_only_pkey [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • get_unmapped_area [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • hugetlb_sysctl_handler_common [, ] (in hugetlb_mempolicy_sysctl_handler, hugetlb_sysctl_handler) Error: Missing definitions for the differing function!
  • hugetlb_overcommit_handler [, ] (in hugetlb_overcommit_handler) Error: Missing definitions for the differing function!
  • p4d_offset [, ] (in move_vma) Error: Missing definitions for the differing function!
  • pgd_bad [, ] (in move_vma) Error: Missing definitions for the differing function!
  • pgd_none [, ] (in move_vma) Error: Missing definitions for the differing function!
  • __reset_isolation_suitable [, ] (in sysctl_compaction_handler) Error: Missing definitions for the differing function!
Details for 8.2-8.3

Details for 8.2-8.3

Compared symbols previously evaluated as non-equal

  • balance_dirty_pages
  • hardlockup_detector_event_create
  • rebalance_domains

New differing symbols

  • perf_event_release_kernel [, ] (in __do_sys_perf_event_open) Error: Missing definitions for the differing function!
  • __nr_to_section [, ] (in memory_failure) Error: Missing definitions for the differing function!
  • atomic_long_dec [, ] (in memory_failure) Error: Missing definitions for the differing function!
  • page_ref_add_unless [, ] (in memory_failure) Error: Missing definitions for the differing function!

Eliminated differing symbols

  • wb_min_max_ratio [, ] (in balance_dirty_pages) Error: Missing definitions for the differing function!
  • do_munmap [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • execute_only_pkey [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • get_unmapped_area [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • hardlockup_detector_event_create [, ] (in hardlockup_detector_event_create) Error: Missing definitions for the differing function!
  • memory_failure [, ] (in memory_failure) Error: Missing definitions for the differing function!
  • p4d_offset [, ] (in move_vma) Error: Missing definitions for the differing function!
  • pgd_bad [, ] (in move_vma) Error: Missing definitions for the differing function!
  • pgd_none [, ] (in move_vma) Error: Missing definitions for the differing function!
Details for 8.3-8.4

Details for 8.3-8.4

Compared symbols newly evaluated as non-equal

  • drop_caches_sysctl_handler

New differing symbols

  • global_node_page_state [, ] (in balance_dirty_pages, dirty_ratio_handler, wb_check_old_data_flush) Error: Missing definitions for the differing function!
  • count_vm_event [, ] (in drop_caches_sysctl_handler) Error: Missing definitions for the differing function!

Eliminated differing symbols

  • is_dump_unreclaim_slabs [, ] (in check_panic_on_oom) Error: Missing definitions for the differing function!
  • do_munmap [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • execute_only_pkey [, ] (in do_mmap) Error: Missing definitions for the differing function!
  • get_unmapped_area [, ] (in do_mmap) Error: Missing definitions for the differing function!
Details for 8.4-8.5

Details for 8.4-8.5

Compared symbols newly evaluated as non-equal

  • balance_dirty_pages
  • dirty_ratio_handler
  • init_admin_reserve
  • init_user_reserve
  • node_dirty_limit
  • reserve_mem_notifier
  • try_to_free_pages

New differing symbols

  • global_node_page_state_pages [, ] (in balance_dirty_pages, check_panic_on_oom, dirty_ratio_handler, out_of_memory, wb_check_old_data_flush) Error: Missing definitions for the differing function!
  • global_zone_page_state [, ] (in dirty_ratio_handler, init_admin_reserve, init_user_reserve, reserve_mem_notifier) Error: Missing definitions for the differing function!
  • do_try_to_free_pages [, ] (in try_to_free_pages) Error: Missing definitions for the differing function!
  • shrink_node [, ] (in try_to_free_pages) Error: Missing definitions for the differing function!

@diffkemp-dev-bot diffkemp-dev-bot Bot added the Failure: RHEL sysctl more NEQ/UNK/ERR RHEL KABI sysctl: more non-equal/unknown/error functions were gained than on the master branch. label Nov 14, 2025
DanielKriz and others added 2 commits November 18, 2025 11:36
There might be some incompatibilities when using LLVM tools from
different version than the one with which was DiffKemp built. Therefore,
we have to embed the build version into the DiffKemp binary and then
check during runtime whether the environment is compatible.
From LLVM 19 by default are used debug records instead of debug
intrinsics [1,2]. For this reason it was necessary to update
`getPointeeStructTypeInfo` function. The changes are connected
with changes of `llvm::findDbgValues` function [3,4] that currently
return both records (for debug records) and instructions
(for debug intrinsics).
For LLVM 19 we are trying to find type of the struct by using both
(records and instrinsics).

Changes:
- It was necessary in `DifferentialFunctionComparator::cmpAllocs`
  to check if `getNextNode` does not returns nullptr, because without
  it `DifferentialFunctionComparatorTest.CmpAllocs` test was failing.
  The reason is that for LLVM <= 18 the next node was dbg intrinsic,
  but for LLVM 19 there is no next node (dbg record is not probably
  considered as node).
- In tests, there is change in calling of the `insertDbgValueIntrinsic`
  function. Previously the debug info was inserted at the end of the
  basic block, now it is inserted before previous instruction.
  The reason is that, there was problem with memory leaking when
  the debug info was placed at the end of the basic block. When
  the debug info is inserted before instruction, the instruction
  manages deallocation of the debug info.
- The `getPointeeStructTypeInfo` is split into two version to make
  the code more readable.
- The `getDbgTypeForValue` function was created and split into two
  version for LLVM >=19, LLVM >=15. The function extracts the type
  of the struct.

[1] https://releases.llvm.org/19.1.0/docs/ReleaseNotes.html
[2] https://llvm.org/docs/RemoveDIsDebugInfo.html
[3] llvm/llvm-project@4259198
[4] llvm/llvm-project@ffd08c7
@diffkemp-dev-bot diffkemp-dev-bot Bot removed Failure: RHEL functions more NEQ/UNK/ERR RHEL KABI functions: more non-equal/unknown/error functions were gained than on the master branch. Failure: RHEL sysctl more NEQ/UNK/ERR RHEL KABI sysctl: more non-equal/unknown/error functions were gained than on the master branch. Failure: EqBench more FN/FP EqBench experiment: more false negatives/positives were found than on the master branch. labels Nov 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants