Eduard Zingerman
96c6aa4c63
bpf: compute SCCs in program control flow graph
Compute strongly connected components in the program CFG.
Assign an SCC number to each instruction, recorded in
env->insn_aux[*].scc. Use Tarjan's algorithm for SCC computation
adapted to run non-recursively.
For debug purposes print out computed SCCs as a part of full program
dump in compute_live_registers() at log level 2, e.g.:
func#0 @0
Live regs before insn:
0: .......... (b4) w6 = 10
2 1: ......6... (18) r1 = 0xffff88810bbb5565
2 3: .1....6... (b4) w2 = 2
2 4: .12...6... (85) call bpf_trace_printk#6
2 5: ......6... (04) w6 += -1
2 6: ......6... (56) if w6 != 0x0 goto pc-6
7: .......... (b4) w6 = 5
1 8: ......6... (18) r1 = 0xffff88810bbb5567
1 10: .1....6... (b4) w2 = 2
1 11: .12...6... (85) call bpf_trace_printk#6
1 12: ......6... (04) w6 += -1
1 13: ......6... (56) if w6 != 0x0 goto pc-6
14: .......... (b4) w0 = 0
15: 0......... (95) exit
^^^
SCC number for the instruction
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20250611200836.4135542-2-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2025-06-12 16:52:42 -07:00
..
2025-06-12 16:52:42 -07:00
2025-06-09 16:17:11 -07:00
2025-05-28 15:24:36 -07:00
2025-04-02 18:17:33 -07:00
2025-05-27 20:09:06 -07:00
2025-04-29 08:27:10 +02:00
2025-05-31 15:44:16 -07:00
2025-06-02 16:00:26 -07:00
2025-04-30 21:53:35 +02:00
2025-05-27 08:15:26 -07:00
2025-05-08 19:49:33 +02:00
2025-05-14 13:16:24 +02:00
2025-06-02 12:24:58 -07:00
2025-06-02 17:35:06 -07:00
2025-05-31 15:44:16 -07:00
2025-03-27 19:22:24 -07:00
2025-05-27 08:31:21 -07:00
2025-06-04 12:07:16 -07:00
2025-05-27 09:04:15 -07:00
2025-06-02 13:12:26 -04:00
2025-02-12 12:24:16 +01:00
2024-04-04 16:24:16 +02:00
2025-04-15 11:32:34 +02:00
2025-04-11 14:14:41 -04:00
2024-10-11 14:34:16 -04:00
2024-12-05 19:22:38 -05:00
2025-03-18 15:34:27 +01:00
2024-06-24 22:24:55 -07:00
2024-04-29 08:29:29 -07:00
2025-03-07 22:03:09 -06:00
2025-03-30 15:44:36 -07:00
2025-03-04 18:44:29 -08:00
2025-05-08 21:50:19 +02:00
2025-02-10 16:56:58 -08:00
2025-05-21 10:48:21 -07:00
2025-05-11 17:54:10 -07:00
2024-12-02 11:25:09 +01:00
2025-05-27 19:40:33 -07:00
2024-02-23 17:48:22 -08:00
2025-05-31 19:12:53 -07:00
2025-05-31 15:44:16 -07:00
2024-10-14 09:14:35 +02:00
2025-03-15 21:22:52 +09:00
2025-05-11 17:54:08 -07:00
2025-02-21 15:05:38 +01:00
2025-01-13 22:40:36 -08:00
2025-03-10 11:54:46 +01:00
2024-07-20 16:33:21 +09:00
2025-01-02 22:12:12 +01:00
2025-02-18 10:16:04 +01:00
2025-02-21 10:25:33 +01:00
2025-02-21 09:20:30 +01:00
2025-05-31 19:12:53 -07:00
2024-11-07 15:25:05 +01:00
2024-12-30 17:59:08 -08:00
2025-04-29 15:54:53 -04:00
2025-03-16 22:30:47 -07:00
2025-05-31 19:12:53 -07:00
2025-05-12 23:50:40 -07:00
2025-05-12 23:50:40 -07:00
2024-04-23 14:59:01 +10:00
2024-12-24 09:46:49 +01:00
2025-03-10 11:54:46 +01:00
2025-01-07 16:59:15 +01:00
2025-04-05 10:30:12 +02:00
2025-01-28 13:48:37 +01:00
2025-05-31 19:12:53 -07:00
2024-11-05 17:12:31 -08:00
2025-05-09 13:13:54 +02:00
2025-05-19 13:44:16 +08:00
2025-05-31 19:12:53 -07:00
2025-05-07 20:24:59 +02:00
2025-03-06 10:18:36 +01:00
2025-01-28 13:48:37 +01:00
2025-05-06 13:59:00 +02:00
2024-08-04 13:36:28 -07:00
2025-05-11 17:48:15 -07:00
2025-04-01 10:06:52 -07:00
2024-04-25 21:07:03 -07:00
2025-05-11 17:54:09 -07:00
2024-10-09 12:47:19 -07:00
2025-03-21 22:10:05 -07:00
2025-03-06 22:26:49 +01:00
2024-11-14 16:09:51 -08:00
2025-02-24 11:17:10 -08:00
2025-04-09 13:32:16 +02:00
2025-01-28 11:34:03 -08:00
2025-03-25 10:46:44 +01:00
2025-01-28 13:48:37 +01:00
2025-03-30 15:44:36 -07:00
2025-03-11 10:15:52 -07:00
2024-07-18 12:19:20 -07:00
2025-05-03 12:02:07 +02:00
2025-04-14 14:13:41 +02:00
2025-04-09 13:32:16 +02:00
2025-01-13 22:40:36 -08:00
2024-11-03 01:28:06 -05:00
2025-02-05 07:14:24 -08:00
2025-03-21 15:30:10 -04:00
2024-07-12 16:39:53 -07:00
2025-03-16 22:30:50 -07:00
2025-01-28 13:48:37 +01:00
2025-02-12 12:12:27 +01:00
2024-09-12 12:16:09 +02:00
2025-01-28 13:48:37 +01:00
2025-04-18 10:08:11 -04:00
2025-05-11 17:54:04 -07:00
2025-03-24 09:52:37 -07:00
2025-04-01 10:06:52 -07:00
2025-05-21 10:48:22 -07:00
2025-05-27 20:49:06 -07:00