Fix crash hit during PR's fuzzing job (#1126)

* Fix crash hit during PR's fuzzing job

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix crash hit during PR's fuzzing job

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* PR feedback and more coverage

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
This commit is contained in:
Alan Jowett 2022-05-19 14:27:02 -06:00 коммит произвёл GitHub
Родитель e6c68671b2
Коммит 8106ab3ead
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
5 изменённых файлов: 159 добавлений и 48 удалений

Просмотреть файл

@ -1939,6 +1939,11 @@ ebpf_map_find_entry(
}
if (ebpf_map_metadata_tables[map->ebpf_map_definition.type].find_entry == NULL) {
EBPF_LOG_MESSAGE_UINT64(
EBPF_TRACELOG_LEVEL_ERROR,
EBPF_TRACELOG_KEYWORD_MAP,
"ebpf_map_find_entry not supported on map",
map->ebpf_map_definition.type);
return EBPF_OPERATION_NOT_SUPPORTED;
}
@ -2006,13 +2011,12 @@ ebpf_map_get_program_from_entry(_In_ ebpf_map_t* map, size_t key_size, _In_reads
return NULL;
}
ebpf_map_type_t type = map->ebpf_map_definition.type;
if (type != BPF_MAP_TYPE_PROG_ARRAY) {
EBPF_LOG_MESSAGE_UINT64(
EBPF_TRACELOG_LEVEL_ERROR, EBPF_TRACELOG_KEYWORD_MAP, "Operation not supported on map", type);
return NULL;
}
if (ebpf_map_metadata_tables[type].get_object_from_entry == NULL) {
EBPF_LOG_MESSAGE_UINT64(
EBPF_TRACELOG_LEVEL_ERROR,
EBPF_TRACELOG_KEYWORD_MAP,
"ebpf_map_get_program_from_entry not supported on map",
map->ebpf_map_definition.type);
return NULL;
}
return (ebpf_program_t*)ebpf_map_metadata_tables[type].get_object_from_entry(map, key);
@ -2125,6 +2129,16 @@ ebpf_map_delete_entry(_In_ ebpf_map_t* map, size_t key_size, _In_reads_(key_size
map->ebpf_map_definition.key_size);
return EBPF_INVALID_ARGUMENT;
}
if (ebpf_map_metadata_tables[map->ebpf_map_definition.type].delete_entry == NULL) {
EBPF_LOG_MESSAGE_UINT64(
EBPF_TRACELOG_LEVEL_ERROR,
EBPF_TRACELOG_KEYWORD_MAP,
"ebpf_map_delete_entry not supported on map",
map->ebpf_map_definition.type);
return EBPF_OPERATION_NOT_SUPPORTED;
}
ebpf_result_t result = ebpf_map_metadata_tables[map->ebpf_map_definition.type].delete_entry(map, key);
return result;
}
@ -2147,6 +2161,11 @@ ebpf_map_next_key(
return EBPF_INVALID_ARGUMENT;
}
if (ebpf_map_metadata_tables[map->ebpf_map_definition.type].next_key == NULL) {
EBPF_LOG_MESSAGE_UINT64(
EBPF_TRACELOG_LEVEL_ERROR,
EBPF_TRACELOG_KEYWORD_MAP,
"ebpf_map_next_key not supported on map",
map->ebpf_map_definition.type);
return EBPF_OPERATION_NOT_SUPPORTED;
}
return ebpf_map_metadata_tables[map->ebpf_map_definition.type].next_key(map, previous_key, next_key);
@ -2196,7 +2215,12 @@ ebpf_map_push_entry(_In_ ebpf_map_t* map, size_t value_size, _In_reads_(value_si
}
if (ebpf_map_metadata_tables[map->ebpf_map_definition.type].update_entry == NULL) {
return EBPF_INVALID_ARGUMENT;
EBPF_LOG_MESSAGE_UINT64(
EBPF_TRACELOG_LEVEL_ERROR,
EBPF_TRACELOG_KEYWORD_MAP,
"ebpf_map_push_entry not supported on map",
map->ebpf_map_definition.type);
return EBPF_OPERATION_NOT_SUPPORTED;
}
return ebpf_map_metadata_tables[map->ebpf_map_definition.type].update_entry(map, NULL, value, flags);
@ -2211,7 +2235,12 @@ ebpf_map_pop_entry(_In_ ebpf_map_t* map, size_t value_size, _Out_writes_(value_s
}
if (ebpf_map_metadata_tables[map->ebpf_map_definition.type].find_entry == NULL) {
return EBPF_INVALID_ARGUMENT;
EBPF_LOG_MESSAGE_UINT64(
EBPF_TRACELOG_LEVEL_ERROR,
EBPF_TRACELOG_KEYWORD_MAP,
"ebpf_map_pop_entry not supported on map",
map->ebpf_map_definition.type);
return EBPF_OPERATION_NOT_SUPPORTED;
}
ebpf_result_t result =
@ -2233,6 +2262,15 @@ ebpf_map_peek_entry(_In_ ebpf_map_t* map, size_t value_size, _Out_writes_(value_
return EBPF_INVALID_ARGUMENT;
}
if (ebpf_map_metadata_tables[map->ebpf_map_definition.type].find_entry == NULL) {
EBPF_LOG_MESSAGE_UINT64(
EBPF_TRACELOG_LEVEL_ERROR,
EBPF_TRACELOG_KEYWORD_MAP,
"ebpf_map_peek_entry not supported on map",
map->ebpf_map_definition.type);
return EBPF_OPERATION_NOT_SUPPORTED;
}
ebpf_result_t result =
ebpf_map_metadata_tables[map->ebpf_map_definition.type].find_entry(map, NULL, false, &return_value);
if (result != EBPF_SUCCESS) {

Просмотреть файл

@ -222,6 +222,13 @@ _test_crud_operations(ebpf_map_type_t map_type)
auto retrieved_map_definition = *ebpf_map_get_definition(map.get());
retrieved_map_definition.value_size = ebpf_map_get_effective_value_size(map.get());
REQUIRE(memcmp(&retrieved_map_definition, &map_definition, sizeof(map_definition)) == 0);
// Negative test for key size.
uint32_t key = 0;
REQUIRE(
ebpf_map_next_key(
map.get(), sizeof(key) - 1, reinterpret_cast<uint8_t*>(&key), reinterpret_cast<uint8_t*>(&key)) ==
EBPF_INVALID_ARGUMENT);
}
#define MAP_TEST(MAP_TYPE) \
@ -468,6 +475,39 @@ TEST_CASE("map_crud_operations_queue", "[execution_context]")
REQUIRE(
ebpf_map_pop_entry(map.get(), sizeof(return_value), reinterpret_cast<uint8_t*>(&return_value), 0) ==
EBPF_OBJECT_NOT_FOUND);
// Negative tests.
REQUIRE(
ebpf_map_delete_entry(map.get(), sizeof(return_value), reinterpret_cast<uint8_t*>(&return_value), 0) ==
EBPF_INVALID_ARGUMENT);
REQUIRE(
ebpf_map_delete_entry(map.get(), sizeof(return_value) - 1, reinterpret_cast<uint8_t*>(&return_value), 0) ==
EBPF_INVALID_ARGUMENT);
REQUIRE(
ebpf_map_pop_entry(map.get(), sizeof(return_value) - 1, reinterpret_cast<uint8_t*>(&return_value), 0) ==
EBPF_INVALID_ARGUMENT);
REQUIRE(
ebpf_map_push_entry(map.get(), sizeof(return_value) - 1, reinterpret_cast<uint8_t*>(&return_value), 0) ==
EBPF_INVALID_ARGUMENT);
REQUIRE(
ebpf_map_peek_entry(map.get(), sizeof(return_value) - 1, reinterpret_cast<uint8_t*>(&return_value), 0) ==
EBPF_INVALID_ARGUMENT);
// Wrong key size.
REQUIRE(
ebpf_map_update_entry_with_handle(
map.get(), sizeof(return_value) - 1, reinterpret_cast<uint8_t*>(&return_value), 0, EBPF_ANY) ==
EBPF_INVALID_ARGUMENT);
// Not supported.
REQUIRE(
ebpf_map_update_entry_with_handle(
map.get(), sizeof(return_value), reinterpret_cast<uint8_t*>(&return_value), 0, EBPF_ANY) ==
EBPF_INVALID_ARGUMENT);
}
TEST_CASE("map_crud_operations_stack", "[execution_context]")
@ -700,4 +740,37 @@ TEST_CASE("ring_buffer_async_query", "[execution_context]")
REQUIRE(ebpf_ring_buffer_map_output(map.get(), reinterpret_cast<uint8_t*>(&value), sizeof(value)) == EBPF_SUCCESS);
REQUIRE(completion.value == value);
}
{
uint32_t key = 0;
uint32_t value2 = 0;
REQUIRE(
ebpf_map_update_entry(map.get(), sizeof(key), reinterpret_cast<uint8_t*>(&key), 0, nullptr, EBPF_ANY, 0) ==
EBPF_INVALID_ARGUMENT);
// Negative test cases.
REQUIRE(
ebpf_map_update_entry(
map.get(), 0, nullptr, sizeof(value2), reinterpret_cast<uint8_t*>(&value2), EBPF_ANY, 0) ==
EBPF_INVALID_ARGUMENT);
REQUIRE(ebpf_map_update_entry(map.get(), 0, nullptr, 0, nullptr, EBPF_ANY, 0) == EBPF_OPERATION_NOT_SUPPORTED);
REQUIRE(ebpf_map_get_program_from_entry(map.get(), sizeof(&key), reinterpret_cast<uint8_t*>(&key)) == nullptr);
REQUIRE(ebpf_map_get_program_from_entry(map.get(), 0, 0) == nullptr);
REQUIRE(
ebpf_map_find_entry(map.get(), sizeof(key), reinterpret_cast<uint8_t*>(&key), 0, nullptr, 0) ==
EBPF_INVALID_ARGUMENT);
REQUIRE(
ebpf_map_find_entry(map.get(), 0, nullptr, sizeof(value2), reinterpret_cast<uint8_t*>(&value2), 0) ==
EBPF_INVALID_ARGUMENT);
REQUIRE(ebpf_map_find_entry(map.get(), 0, nullptr, 0, nullptr, 0) == EBPF_OPERATION_NOT_SUPPORTED);
REQUIRE(ebpf_map_delete_entry(map.get(), 0, nullptr, 0) == EBPF_OPERATION_NOT_SUPPORTED);
REQUIRE(ebpf_map_next_key(map.get(), 0, nullptr, nullptr) == EBPF_OPERATION_NOT_SUPPORTED);
REQUIRE(ebpf_map_push_entry(map.get(), 0, nullptr, 0) == EBPF_OPERATION_NOT_SUPPORTED);
REQUIRE(ebpf_map_pop_entry(map.get(), 0, nullptr, 0) == EBPF_OPERATION_NOT_SUPPORTED);
REQUIRE(ebpf_map_peek_entry(map.get(), 0, nullptr, 0) == EBPF_OPERATION_NOT_SUPPORTED);
}
}

Просмотреть файл

@ -143,7 +143,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 23 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_REG pc=12 dst=r8 src=r0 offset=0 imm=0
// EBPF_OP_MOV64_REG pc=12 dst=r8 src=r0 offset=0 imm=0
#line 23 "sample/printk.c"
r8 = r0;
// EBPF_OP_MOV64_IMM pc=13 dst=r1 src=r0 offset=0 imm=10
@ -176,7 +176,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 24 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_REG pc=21 dst=r6 src=r0 offset=0 imm=0
// EBPF_OP_MOV64_REG pc=21 dst=r6 src=r0 offset=0 imm=0
#line 24 "sample/printk.c"
r6 = r0;
// EBPF_OP_CALL pc=22 dst=r0 src=r0 offset=0 imm=19
@ -188,7 +188,7 @@ func(void* context)
if ((func_helpers[1].tail_call) && (r0 == 0))
#line 27 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=23 dst=r1 src=r0 offset=0 imm=977553744
// EBPF_OP_LDDW pc=23 dst=r1 src=r0 offset=0 imm=977553744
#line 27 "sample/printk.c"
r1 = (uint64_t)32973392621881680;
// EBPF_OP_STXDW pc=25 dst=r10 src=r1 offset=-32 imm=0
@ -221,7 +221,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 28 "sample/printk.c"
return 0;
// EBPF_OP_ADD64_REG pc=33 dst=r6 src=r0 offset=0 imm=0
// EBPF_OP_ADD64_REG pc=33 dst=r6 src=r0 offset=0 imm=0
#line 28 "sample/printk.c"
r6 += r0;
// EBPF_OP_MOV64_IMM pc=34 dst=r8 src=r0 offset=0 imm=117
@ -266,7 +266,7 @@ func(void* context)
if ((func_helpers[3].tail_call) && (r0 == 0))
#line 29 "sample/printk.c"
return 0;
// EBPF_OP_STXH pc=48 dst=r10 src=r8 offset=-4 imm=0
// EBPF_OP_STXH pc=48 dst=r10 src=r8 offset=-4 imm=0
#line 31 "sample/printk.c"
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-4)) = (uint16_t)r8;
// EBPF_OP_MOV64_IMM pc=49 dst=r1 src=r0 offset=0 imm=622869070
@ -320,7 +320,7 @@ func(void* context)
if ((func_helpers[4].tail_call) && (r0 == 0))
#line 31 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_IMM pc=66 dst=r1 src=r0 offset=0 imm=9504
// EBPF_OP_MOV64_IMM pc=66 dst=r1 src=r0 offset=0 imm=9504
#line 31 "sample/printk.c"
r1 = IMMEDIATE(9504);
// EBPF_OP_STXH pc=67 dst=r10 src=r1 offset=-28 imm=0
@ -359,7 +359,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 35 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=77 dst=r1 src=r0 offset=0 imm=843333954
// EBPF_OP_LDDW pc=77 dst=r1 src=r0 offset=0 imm=843333954
#line 35 "sample/printk.c"
r1 = (uint64_t)7812660273793483074;
// EBPF_OP_STXDW pc=79 dst=r10 src=r1 offset=-32 imm=0
@ -392,7 +392,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 36 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=87 dst=r1 src=r0 offset=0 imm=860111170
// EBPF_OP_LDDW pc=87 dst=r1 src=r0 offset=0 imm=860111170
#line 36 "sample/printk.c"
r1 = (uint64_t)7220718397787750722;
// EBPF_OP_STXDW pc=89 dst=r10 src=r1 offset=-32 imm=0
@ -425,7 +425,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 37 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=97 dst=r1 src=r0 offset=0 imm=876888386
// EBPF_OP_LDDW pc=97 dst=r1 src=r0 offset=0 imm=876888386
#line 37 "sample/printk.c"
r1 = (uint64_t)31566017637663042;
// EBPF_OP_STXDW pc=99 dst=r10 src=r1 offset=-32 imm=0
@ -455,7 +455,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 38 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_IMM pc=106 dst=r1 src=r0 offset=0 imm=893665602
// EBPF_OP_MOV64_IMM pc=106 dst=r1 src=r0 offset=0 imm=893665602
#line 38 "sample/printk.c"
r1 = IMMEDIATE(893665602);
// EBPF_OP_STXW pc=107 dst=r10 src=r1 offset=-32 imm=0
@ -488,7 +488,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 42 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=115 dst=r1 src=r0 offset=0 imm=910442818
// EBPF_OP_LDDW pc=115 dst=r1 src=r0 offset=0 imm=910442818
#line 42 "sample/printk.c"
r1 = (uint64_t)32973392554770754;
// EBPF_OP_STXDW pc=117 dst=r10 src=r1 offset=-32 imm=0
@ -515,7 +515,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 43 "sample/printk.c"
return 0;
// EBPF_OP_STXB pc=123 dst=r10 src=r8 offset=-22 imm=0
// EBPF_OP_STXB pc=123 dst=r10 src=r8 offset=-22 imm=0
#line 46 "sample/printk.c"
*(uint8_t*)(uintptr_t)(r10 + OFFSET(-22)) = (uint8_t)r8;
// EBPF_OP_MOV64_IMM pc=124 dst=r1 src=r0 offset=0 imm=25966
@ -551,7 +551,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 46 "sample/printk.c"
return 0;
// EBPF_OP_ADD64_REG pc=134 dst=r6 src=r0 offset=0 imm=0
// EBPF_OP_ADD64_REG pc=134 dst=r6 src=r0 offset=0 imm=0
#line 46 "sample/printk.c"
r6 += r0;
// EBPF_OP_MOV64_REG pc=135 dst=r0 src=r6 offset=0 imm=0

Просмотреть файл

@ -105,7 +105,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 23 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_REG pc=12 dst=r8 src=r0 offset=0 imm=0
// EBPF_OP_MOV64_REG pc=12 dst=r8 src=r0 offset=0 imm=0
#line 23 "sample/printk.c"
r8 = r0;
// EBPF_OP_MOV64_IMM pc=13 dst=r1 src=r0 offset=0 imm=10
@ -138,7 +138,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 24 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_REG pc=21 dst=r6 src=r0 offset=0 imm=0
// EBPF_OP_MOV64_REG pc=21 dst=r6 src=r0 offset=0 imm=0
#line 24 "sample/printk.c"
r6 = r0;
// EBPF_OP_CALL pc=22 dst=r0 src=r0 offset=0 imm=19
@ -150,7 +150,7 @@ func(void* context)
if ((func_helpers[1].tail_call) && (r0 == 0))
#line 27 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=23 dst=r1 src=r0 offset=0 imm=977553744
// EBPF_OP_LDDW pc=23 dst=r1 src=r0 offset=0 imm=977553744
#line 27 "sample/printk.c"
r1 = (uint64_t)32973392621881680;
// EBPF_OP_STXDW pc=25 dst=r10 src=r1 offset=-32 imm=0
@ -183,7 +183,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 28 "sample/printk.c"
return 0;
// EBPF_OP_ADD64_REG pc=33 dst=r6 src=r0 offset=0 imm=0
// EBPF_OP_ADD64_REG pc=33 dst=r6 src=r0 offset=0 imm=0
#line 28 "sample/printk.c"
r6 += r0;
// EBPF_OP_MOV64_IMM pc=34 dst=r8 src=r0 offset=0 imm=117
@ -228,7 +228,7 @@ func(void* context)
if ((func_helpers[3].tail_call) && (r0 == 0))
#line 29 "sample/printk.c"
return 0;
// EBPF_OP_STXH pc=48 dst=r10 src=r8 offset=-4 imm=0
// EBPF_OP_STXH pc=48 dst=r10 src=r8 offset=-4 imm=0
#line 31 "sample/printk.c"
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-4)) = (uint16_t)r8;
// EBPF_OP_MOV64_IMM pc=49 dst=r1 src=r0 offset=0 imm=622869070
@ -282,7 +282,7 @@ func(void* context)
if ((func_helpers[4].tail_call) && (r0 == 0))
#line 31 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_IMM pc=66 dst=r1 src=r0 offset=0 imm=9504
// EBPF_OP_MOV64_IMM pc=66 dst=r1 src=r0 offset=0 imm=9504
#line 31 "sample/printk.c"
r1 = IMMEDIATE(9504);
// EBPF_OP_STXH pc=67 dst=r10 src=r1 offset=-28 imm=0
@ -321,7 +321,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 35 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=77 dst=r1 src=r0 offset=0 imm=843333954
// EBPF_OP_LDDW pc=77 dst=r1 src=r0 offset=0 imm=843333954
#line 35 "sample/printk.c"
r1 = (uint64_t)7812660273793483074;
// EBPF_OP_STXDW pc=79 dst=r10 src=r1 offset=-32 imm=0
@ -354,7 +354,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 36 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=87 dst=r1 src=r0 offset=0 imm=860111170
// EBPF_OP_LDDW pc=87 dst=r1 src=r0 offset=0 imm=860111170
#line 36 "sample/printk.c"
r1 = (uint64_t)7220718397787750722;
// EBPF_OP_STXDW pc=89 dst=r10 src=r1 offset=-32 imm=0
@ -387,7 +387,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 37 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=97 dst=r1 src=r0 offset=0 imm=876888386
// EBPF_OP_LDDW pc=97 dst=r1 src=r0 offset=0 imm=876888386
#line 37 "sample/printk.c"
r1 = (uint64_t)31566017637663042;
// EBPF_OP_STXDW pc=99 dst=r10 src=r1 offset=-32 imm=0
@ -417,7 +417,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 38 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_IMM pc=106 dst=r1 src=r0 offset=0 imm=893665602
// EBPF_OP_MOV64_IMM pc=106 dst=r1 src=r0 offset=0 imm=893665602
#line 38 "sample/printk.c"
r1 = IMMEDIATE(893665602);
// EBPF_OP_STXW pc=107 dst=r10 src=r1 offset=-32 imm=0
@ -450,7 +450,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 42 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=115 dst=r1 src=r0 offset=0 imm=910442818
// EBPF_OP_LDDW pc=115 dst=r1 src=r0 offset=0 imm=910442818
#line 42 "sample/printk.c"
r1 = (uint64_t)32973392554770754;
// EBPF_OP_STXDW pc=117 dst=r10 src=r1 offset=-32 imm=0
@ -477,7 +477,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 43 "sample/printk.c"
return 0;
// EBPF_OP_STXB pc=123 dst=r10 src=r8 offset=-22 imm=0
// EBPF_OP_STXB pc=123 dst=r10 src=r8 offset=-22 imm=0
#line 46 "sample/printk.c"
*(uint8_t*)(uintptr_t)(r10 + OFFSET(-22)) = (uint8_t)r8;
// EBPF_OP_MOV64_IMM pc=124 dst=r1 src=r0 offset=0 imm=25966
@ -513,7 +513,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 46 "sample/printk.c"
return 0;
// EBPF_OP_ADD64_REG pc=134 dst=r6 src=r0 offset=0 imm=0
// EBPF_OP_ADD64_REG pc=134 dst=r6 src=r0 offset=0 imm=0
#line 46 "sample/printk.c"
r6 += r0;
// EBPF_OP_MOV64_REG pc=135 dst=r0 src=r6 offset=0 imm=0

Просмотреть файл

@ -272,7 +272,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 23 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_REG pc=12 dst=r8 src=r0 offset=0 imm=0
// EBPF_OP_MOV64_REG pc=12 dst=r8 src=r0 offset=0 imm=0
#line 23 "sample/printk.c"
r8 = r0;
// EBPF_OP_MOV64_IMM pc=13 dst=r1 src=r0 offset=0 imm=10
@ -305,7 +305,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 24 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_REG pc=21 dst=r6 src=r0 offset=0 imm=0
// EBPF_OP_MOV64_REG pc=21 dst=r6 src=r0 offset=0 imm=0
#line 24 "sample/printk.c"
r6 = r0;
// EBPF_OP_CALL pc=22 dst=r0 src=r0 offset=0 imm=19
@ -317,7 +317,7 @@ func(void* context)
if ((func_helpers[1].tail_call) && (r0 == 0))
#line 27 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=23 dst=r1 src=r0 offset=0 imm=977553744
// EBPF_OP_LDDW pc=23 dst=r1 src=r0 offset=0 imm=977553744
#line 27 "sample/printk.c"
r1 = (uint64_t)32973392621881680;
// EBPF_OP_STXDW pc=25 dst=r10 src=r1 offset=-32 imm=0
@ -350,7 +350,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 28 "sample/printk.c"
return 0;
// EBPF_OP_ADD64_REG pc=33 dst=r6 src=r0 offset=0 imm=0
// EBPF_OP_ADD64_REG pc=33 dst=r6 src=r0 offset=0 imm=0
#line 28 "sample/printk.c"
r6 += r0;
// EBPF_OP_MOV64_IMM pc=34 dst=r8 src=r0 offset=0 imm=117
@ -395,7 +395,7 @@ func(void* context)
if ((func_helpers[3].tail_call) && (r0 == 0))
#line 29 "sample/printk.c"
return 0;
// EBPF_OP_STXH pc=48 dst=r10 src=r8 offset=-4 imm=0
// EBPF_OP_STXH pc=48 dst=r10 src=r8 offset=-4 imm=0
#line 31 "sample/printk.c"
*(uint16_t*)(uintptr_t)(r10 + OFFSET(-4)) = (uint16_t)r8;
// EBPF_OP_MOV64_IMM pc=49 dst=r1 src=r0 offset=0 imm=622869070
@ -449,7 +449,7 @@ func(void* context)
if ((func_helpers[4].tail_call) && (r0 == 0))
#line 31 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_IMM pc=66 dst=r1 src=r0 offset=0 imm=9504
// EBPF_OP_MOV64_IMM pc=66 dst=r1 src=r0 offset=0 imm=9504
#line 31 "sample/printk.c"
r1 = IMMEDIATE(9504);
// EBPF_OP_STXH pc=67 dst=r10 src=r1 offset=-28 imm=0
@ -488,7 +488,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 35 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=77 dst=r1 src=r0 offset=0 imm=843333954
// EBPF_OP_LDDW pc=77 dst=r1 src=r0 offset=0 imm=843333954
#line 35 "sample/printk.c"
r1 = (uint64_t)7812660273793483074;
// EBPF_OP_STXDW pc=79 dst=r10 src=r1 offset=-32 imm=0
@ -521,7 +521,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 36 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=87 dst=r1 src=r0 offset=0 imm=860111170
// EBPF_OP_LDDW pc=87 dst=r1 src=r0 offset=0 imm=860111170
#line 36 "sample/printk.c"
r1 = (uint64_t)7220718397787750722;
// EBPF_OP_STXDW pc=89 dst=r10 src=r1 offset=-32 imm=0
@ -554,7 +554,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 37 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=97 dst=r1 src=r0 offset=0 imm=876888386
// EBPF_OP_LDDW pc=97 dst=r1 src=r0 offset=0 imm=876888386
#line 37 "sample/printk.c"
r1 = (uint64_t)31566017637663042;
// EBPF_OP_STXDW pc=99 dst=r10 src=r1 offset=-32 imm=0
@ -584,7 +584,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 38 "sample/printk.c"
return 0;
// EBPF_OP_MOV64_IMM pc=106 dst=r1 src=r0 offset=0 imm=893665602
// EBPF_OP_MOV64_IMM pc=106 dst=r1 src=r0 offset=0 imm=893665602
#line 38 "sample/printk.c"
r1 = IMMEDIATE(893665602);
// EBPF_OP_STXW pc=107 dst=r10 src=r1 offset=-32 imm=0
@ -617,7 +617,7 @@ func(void* context)
if ((func_helpers[2].tail_call) && (r0 == 0))
#line 42 "sample/printk.c"
return 0;
// EBPF_OP_LDDW pc=115 dst=r1 src=r0 offset=0 imm=910442818
// EBPF_OP_LDDW pc=115 dst=r1 src=r0 offset=0 imm=910442818
#line 42 "sample/printk.c"
r1 = (uint64_t)32973392554770754;
// EBPF_OP_STXDW pc=117 dst=r10 src=r1 offset=-32 imm=0
@ -644,7 +644,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 43 "sample/printk.c"
return 0;
// EBPF_OP_STXB pc=123 dst=r10 src=r8 offset=-22 imm=0
// EBPF_OP_STXB pc=123 dst=r10 src=r8 offset=-22 imm=0
#line 46 "sample/printk.c"
*(uint8_t*)(uintptr_t)(r10 + OFFSET(-22)) = (uint8_t)r8;
// EBPF_OP_MOV64_IMM pc=124 dst=r1 src=r0 offset=0 imm=25966
@ -680,7 +680,7 @@ func(void* context)
if ((func_helpers[0].tail_call) && (r0 == 0))
#line 46 "sample/printk.c"
return 0;
// EBPF_OP_ADD64_REG pc=134 dst=r6 src=r0 offset=0 imm=0
// EBPF_OP_ADD64_REG pc=134 dst=r6 src=r0 offset=0 imm=0
#line 46 "sample/printk.c"
r6 += r0;
// EBPF_OP_MOV64_REG pc=135 dst=r0 src=r6 offset=0 imm=0