diff --git a/benchmark-sets/headerfiles/README.md b/benchmark-sets/headerfiles/README.md
new file mode 100644
index 0000000000..f2053022b2
--- /dev/null
+++ b/benchmark-sets/headerfiles/README.md
@@ -0,0 +1,9 @@
+Selected 50 projects to test the effectiveness of headerfiles. It should be noted that we have corrected the language settings of the following projects:
+
+**From c++ to c:**
+avahi.yaml, brotli.yaml, capstone.yaml, lcms.yaml, libcoap.yaml, libfido2.yaml, libpcap.yaml, librdkafka.yaml, libtpms.yaml, libvnc.yaml, libxls.yaml, mbedtls.yaml, minizip.yaml, ndpi.yaml, njs.yaml, picotls.yaml, tidy-html5.yaml, unicorn.yaml
+
+(In case of incorrect settings, prompt will provide a c++ fuzz target example, and LLM will mimic it by including "FuzzydDataProvider.h", causing compilation errors.)
+
+**From c to c++:**
+libjpeg-turbo.yaml, libsndfile.yaml
diff --git a/benchmark-sets/headerfiles/avahi.yaml b/benchmark-sets/headerfiles/avahi.yaml
new file mode 100644
index 0000000000..0e39418f03
--- /dev/null
+++ b/benchmark-sets/headerfiles/avahi.yaml
@@ -0,0 +1,56 @@
+"functions":
+- "exceptions": []
+ "name": "avahi_string_list_new"
+ "params":
+ - "name": "txt"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "AvahiStringList * avahi_string_list_new(const char *, void)"
+- "exceptions": []
+ "name": "avahi_string_list_add_vprintf"
+ "params":
+ - "name": "l"
+ "type": "bool "
+ - "name": "format"
+ "type": "bool "
+ - "name": "va"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "AvahiStringList * avahi_string_list_add_vprintf(AvahiStringList *, const char *, struct __va_list_tag *)"
+- "exceptions": []
+ "name": "avahi_string_list_add_printf"
+ "params":
+ - "name": "l"
+ "type": "bool "
+ - "name": "format"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "AvahiStringList * avahi_string_list_add_printf(AvahiStringList *, const char *, void)"
+- "exceptions": []
+ "name": "avahi_dns_packet_new_reply"
+ "params":
+ - "name": "p"
+ "type": "bool "
+ - "name": "mtu"
+ "type": "int"
+ - "name": "copy_queries"
+ "type": "int"
+ - "name": "aa"
+ "type": "int"
+ "return_type": "void"
+ "signature": "AvahiDnsPacket * avahi_dns_packet_new_reply(AvahiDnsPacket *, unsigned int, int, int)"
+- "exceptions": []
+ "name": "avahi_string_list_add_pair"
+ "params":
+ - "name": "l"
+ "type": "bool "
+ - "name": "key"
+ "type": "bool "
+ - "name": "value"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "AvahiStringList * avahi_string_list_add_pair(AvahiStringList *, const char *, const char *)"
+"language": "c"
+"project": "avahi"
+"target_name": "fuzz-packet"
+"target_path": "/src/avahi/fuzz/fuzz-packet.c"
diff --git a/benchmark-sets/headerfiles/bind9.yaml b/benchmark-sets/headerfiles/bind9.yaml
new file mode 100644
index 0000000000..29c7932a08
--- /dev/null
+++ b/benchmark-sets/headerfiles/bind9.yaml
@@ -0,0 +1,70 @@
+"functions":
+- "exceptions": []
+ "name": "dns_view_freezezones"
+ "params":
+ - "name": "view"
+ "type": "bool "
+ - "name": "value"
+ "type": "bool"
+ "return_type": "int"
+ "signature": "isc_result_t dns_view_freezezones(dns_view_t *, bool)"
+- "exceptions": []
+ "name": "dns_view_asyncload"
+ "params":
+ - "name": "view"
+ "type": "bool "
+ - "name": "newonly"
+ "type": "bool"
+ - "name": "callback"
+ "type": "bool "
+ - "name": "arg"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "isc_result_t dns_view_asyncload(dns_view_t *, bool, dns_zt_callback_t *, void *)"
+- "exceptions": []
+ "name": "dns_zt_asyncload"
+ "params":
+ - "name": "zt"
+ "type": "bool "
+ - "name": "newonly"
+ "type": "bool"
+ - "name": "loaddone"
+ "type": "bool "
+ - "name": "arg"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "isc_result_t dns_zt_asyncload(dns_zt_t *, bool, dns_zt_callback_t *, void *)"
+- "exceptions": []
+ "name": "dns_zt_freezezones"
+ "params":
+ - "name": "zt"
+ "type": "bool "
+ - "name": "view"
+ "type": "bool "
+ - "name": "freeze"
+ "type": "bool"
+ "return_type": "int"
+ "signature": "isc_result_t dns_zt_freezezones(dns_zt_t *, dns_view_t *, bool)"
+- "exceptions": []
+ "name": "dns__rbtdb_addrdataset"
+ "params":
+ - "name": "db"
+ "type": "bool "
+ - "name": "node"
+ "type": "bool "
+ - "name": "version"
+ "type": "bool "
+ - "name": "now"
+ "type": "int"
+ - "name": "rdataset"
+ "type": "bool "
+ - "name": "options"
+ "type": "int"
+ - "name": "addedrdataset"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "isc_result_t dns__rbtdb_addrdataset(dns_db_t *, dns_dbnode_t *, dns_dbversion_t *, isc_stdtime_t, dns_rdataset_t *, unsigned int, dns_rdataset_t *)"
+"language": "c"
+"project": "bind9"
+"target_name": "dns_qpkey_name_fuzzer"
+"target_path": "/src/bind9/fuzz/dns_qpkey_name.c"
diff --git a/benchmark-sets/headerfiles/bluez.yaml b/benchmark-sets/headerfiles/bluez.yaml
new file mode 100644
index 0000000000..5faf66ce82
--- /dev/null
+++ b/benchmark-sets/headerfiles/bluez.yaml
@@ -0,0 +1,86 @@
+"functions":
+- "exceptions": []
+ "name": "g_obex_put_req"
+ "params":
+ - "name": "obex"
+ "type": "bool "
+ - "name": "data_func"
+ "type": "bool "
+ - "name": "complete_func"
+ "type": "bool "
+ - "name": "user_data"
+ "type": "bool "
+ - "name": "err"
+ "type": "bool "
+ - "name": "first_hdr_id"
+ "type": "int"
+ "return_type": "int"
+ "signature": "guint g_obex_put_req(GObex *, GObexDataProducer, GObexFunc, gpointer, GError **, guint, void)"
+- "exceptions": []
+ "name": "g_obex_new"
+ "params":
+ - "name": "io"
+ "type": "bool "
+ - "name": "transport_type"
+ "type": "int"
+ - "name": "io_rx_mtu"
+ "type": "size_t"
+ - "name": "io_tx_mtu"
+ "type": "size_t"
+ "return_type": "void"
+ "signature": "GObex * g_obex_new(GIOChannel *, GObexTransportType, gssize, gssize)"
+- "exceptions": []
+ "name": "g_obex_get_req"
+ "params":
+ - "name": "obex"
+ "type": "bool "
+ - "name": "data_func"
+ "type": "bool "
+ - "name": "complete_func"
+ "type": "bool "
+ - "name": "user_data"
+ "type": "bool "
+ - "name": "err"
+ "type": "bool "
+ - "name": "first_hdr_id"
+ "type": "int"
+ "return_type": "int"
+ "signature": "guint g_obex_get_req(GObex *, GObexDataConsumer, GObexFunc, gpointer, GError **, guint, void)"
+- "exceptions": []
+ "name": "g_obex_get_req_pkt"
+ "params":
+ - "name": "obex"
+ "type": "bool "
+ - "name": "req"
+ "type": "bool "
+ - "name": "data_func"
+ "type": "bool "
+ - "name": "complete_func"
+ "type": "bool "
+ - "name": "user_data"
+ "type": "bool "
+ - "name": "err"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "guint g_obex_get_req_pkt(GObex *, GObexPacket *, GObexDataConsumer, GObexFunc, gpointer, GError **)"
+- "exceptions": []
+ "name": "g_obex_put_req_pkt"
+ "params":
+ - "name": "obex"
+ "type": "bool "
+ - "name": "req"
+ "type": "bool "
+ - "name": "data_func"
+ "type": "bool "
+ - "name": "complete_func"
+ "type": "bool "
+ - "name": "user_data"
+ "type": "bool "
+ - "name": "err"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "guint g_obex_put_req_pkt(GObex *, GObexPacket *, GObexDataProducer, GObexFunc, gpointer, GError **)"
+"language": "c"
+"project": "bluez"
+"target_name": "fuzz_sdp"
+"target_path": "/src/fuzz_sdp.c"
diff --git a/benchmark-sets/headerfiles/brotli.yaml b/benchmark-sets/headerfiles/brotli.yaml
new file mode 100644
index 0000000000..c088f640e9
--- /dev/null
+++ b/benchmark-sets/headerfiles/brotli.yaml
@@ -0,0 +1,58 @@
+"functions":
+- "exceptions": []
+ "name": "BrotliDecoderAttachDictionary"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "int"
+ - "name": ""
+ "type": "size_t"
+ - "name": ""
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int BrotliDecoderAttachDictionary(BrotliDecoderStateInternal *, BrotliSharedDictionaryType, size_t, const uint8_t *)"
+- "exceptions": []
+ "name": "BrotliDecoderIsFinished"
+ "params":
+ - "name": ""
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int BrotliDecoderIsFinished(const BrotliDecoderStateInternal *)"
+- "exceptions": []
+ "name": "BrotliSafeReadBits32Slow"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "size_t"
+ - "name": ""
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int BrotliSafeReadBits32Slow(const BrotliBitReader *, uint64_t, uint64_t *)"
+- "exceptions": []
+ "name": "BrotliDecoderDecompress"
+ "params":
+ - "name": ""
+ "type": "size_t"
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ "return_type": "int"
+ "signature": "BrotliDecoderResult BrotliDecoderDecompress(size_t, const uint8_t *, size_t *, uint8_t *)"
+- "exceptions": []
+ "name": "BrotliDecoderTakeOutput"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ "return_type": "void"
+ "signature": "const uint8_t * BrotliDecoderTakeOutput(BrotliDecoderStateInternal *, size_t *)"
+"language": "c"
+"project": "brotli"
+"target_name": "decode_fuzzer"
+"target_path": "/src/brotli/c/fuzz/decode_fuzzer.c"
diff --git a/benchmark-sets/headerfiles/capstone.yaml b/benchmark-sets/headerfiles/capstone.yaml
new file mode 100644
index 0000000000..c672515bde
--- /dev/null
+++ b/benchmark-sets/headerfiles/capstone.yaml
@@ -0,0 +1,84 @@
+"functions":
+- "exceptions": []
+ "name": "BPF_getInstruction"
+ "params":
+ - "name": "ud"
+ "type": "size_t"
+ - "name": "code"
+ "type": "bool "
+ - "name": "code_len"
+ "type": "size_t"
+ - "name": "instr"
+ "type": "bool "
+ - "name": "size"
+ "type": "bool "
+ - "name": "address"
+ "type": "size_t"
+ - "name": "info"
+ "type": "bool "
+ "return_type": "bool"
+ "signature": "bool BPF_getInstruction(csh, const uint8_t *, size_t, MCInst *, uint16_t *, uint64_t, void *)"
+- "exceptions": []
+ "name": "LoongArch_printer"
+ "params":
+ - "name": "MI"
+ "type": "bool "
+ - "name": "O"
+ "type": "bool "
+ - "name": "info"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void LoongArch_printer(MCInst *, SStream *, void *)"
+- "exceptions": []
+ "name": "PPC_getInstruction"
+ "params":
+ - "name": "ud"
+ "type": "size_t"
+ - "name": "code"
+ "type": "bool "
+ - "name": "code_len"
+ "type": "size_t"
+ - "name": "instr"
+ "type": "bool "
+ - "name": "size"
+ "type": "bool "
+ - "name": "address"
+ "type": "size_t"
+ - "name": "info"
+ "type": "bool "
+ "return_type": "bool"
+ "signature": "bool PPC_getInstruction(csh, const uint8_t *, size_t, MCInst *, uint16_t *, uint64_t, void *)"
+- "exceptions": []
+ "name": "ARM_getInstruction"
+ "params":
+ - "name": "ud"
+ "type": "size_t"
+ - "name": "code"
+ "type": "bool "
+ - "name": "code_len"
+ "type": "size_t"
+ - "name": "instr"
+ "type": "bool "
+ - "name": "size"
+ "type": "bool "
+ - "name": "address"
+ "type": "size_t"
+ - "name": "info"
+ "type": "bool "
+ "return_type": "bool"
+ "signature": "bool ARM_getInstruction(csh, const uint8_t *, size_t, MCInst *, uint16_t *, uint64_t, void *)"
+- "exceptions": []
+ "name": "AArch64_printer"
+ "params":
+ - "name": "MI"
+ "type": "bool "
+ - "name": "O"
+ "type": "bool "
+ - "name": "info"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void AArch64_printer(MCInst *, SStream *, void *)"
+"language": "c"
+"project": "capstone"
+"target_name": "driverbin"
+"target_path": "/src/capstonev5/suite/fuzz/driverbin.c"
diff --git a/benchmark-sets/headerfiles/coturn.yaml b/benchmark-sets/headerfiles/coturn.yaml
new file mode 100644
index 0000000000..aa7c3b8ab1
--- /dev/null
+++ b/benchmark-sets/headerfiles/coturn.yaml
@@ -0,0 +1,110 @@
+"functions":
+- "exceptions": []
+ "name": "stun_set_allocate_response_str"
+ "params":
+ - "name": "buf"
+ "type": "bool "
+ - "name": "len"
+ "type": "bool "
+ - "name": "tid"
+ "type": "bool "
+ - "name": "relayed_addr1"
+ "type": "bool "
+ - "name": "relayed_addr2"
+ "type": "bool "
+ - "name": "reflexive_addr"
+ "type": "bool "
+ - "name": "lifetime"
+ "type": "int"
+ - "name": "max_lifetime"
+ "type": "int"
+ - "name": "error_code"
+ "type": "int"
+ - "name": "reason"
+ "type": "bool "
+ - "name": "reservation_token"
+ "type": "size_t"
+ - "name": "mobile_id"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int stun_set_allocate_response_str(uint8_t *, size_t *, stun_tid *, const ioa_addr *, const ioa_addr *, const ioa_addr *, uint32_t, uint32_t, int, const uint8_t *, uint64_t, char *)"
+- "exceptions": []
+ "name": "stun_set_binding_response"
+ "params":
+ - "name": "buf"
+ "type": "bool "
+ - "name": "tid"
+ "type": "bool "
+ - "name": "reflexive_addr"
+ "type": "bool "
+ - "name": "error_code"
+ "type": "int"
+ - "name": "reason"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int stun_set_binding_response(stun_buffer *, stun_tid *, const ioa_addr *, int, const uint8_t *)"
+- "exceptions": []
+ "name": "stun_set_channel_bind_request"
+ "params":
+ - "name": "buf"
+ "type": "bool "
+ - "name": "peer_addr"
+ "type": "bool "
+ - "name": "channel_number"
+ "type": "short"
+ "return_type": "short"
+ "signature": "uint16_t stun_set_channel_bind_request(stun_buffer *, const ioa_addr *, uint16_t)"
+- "exceptions": []
+ "name": "stun_set_allocate_response"
+ "params":
+ - "name": "buf"
+ "type": "bool "
+ - "name": "tid"
+ "type": "bool "
+ - "name": "relayed_addr1"
+ "type": "bool "
+ - "name": "relayed_addr2"
+ "type": "bool "
+ - "name": "reflexive_addr"
+ "type": "bool "
+ - "name": "lifetime"
+ "type": "int"
+ - "name": "max_lifetime"
+ "type": "int"
+ - "name": "error_code"
+ "type": "int"
+ - "name": "reason"
+ "type": "bool "
+ - "name": "reservation_token"
+ "type": "size_t"
+ - "name": "mobile_id"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int stun_set_allocate_response(stun_buffer *, stun_tid *, const ioa_addr *, const ioa_addr *, const ioa_addr *, uint32_t, uint32_t, int, const uint8_t *, uint64_t, char *)"
+- "exceptions": []
+ "name": "stun_set_binding_response_str"
+ "params":
+ - "name": "buf"
+ "type": "bool "
+ - "name": "len"
+ "type": "bool "
+ - "name": "tid"
+ "type": "bool "
+ - "name": "reflexive_addr"
+ "type": "bool "
+ - "name": "error_code"
+ "type": "int"
+ - "name": "reason"
+ "type": "bool "
+ - "name": "cookie"
+ "type": "int"
+ - "name": "old_stun"
+ "type": "int"
+ - "name": "no_stun_backward_compatibility"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int stun_set_binding_response_str(uint8_t *, size_t *, stun_tid *, const ioa_addr *, int, const uint8_t *, uint32_t, int, int)"
+"language": "c"
+"project": "coturn"
+"target_name": "FuzzStun"
+"target_path": "/src/coturn/fuzzing/FuzzStun.c"
diff --git a/benchmark-sets/headerfiles/croaring.yaml b/benchmark-sets/headerfiles/croaring.yaml
new file mode 100644
index 0000000000..438e7b73a4
--- /dev/null
+++ b/benchmark-sets/headerfiles/croaring.yaml
@@ -0,0 +1,52 @@
+"functions":
+- "exceptions": []
+ "name": "roaring_bitmap_or_many"
+ "params":
+ - "name": ""
+ "type": "size_t"
+ - "name": ""
+ "type": "bool "
+ "return_type": "void"
+ "signature": "roaring_bitmap_t * roaring_bitmap_or_many(size_t, const roaring_bitmap_t **)"
+- "exceptions": []
+ "name": "roaring_bitmap_lazy_xor_inplace"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void roaring_bitmap_lazy_xor_inplace(roaring_bitmap_t *, const roaring_bitmap_t *)"
+- "exceptions": []
+ "name": "roaring_bitmap_add_offset"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "size_t"
+ "return_type": "void"
+ "signature": "roaring_bitmap_t * roaring_bitmap_add_offset(const roaring_bitmap_t *, int64_t)"
+- "exceptions": []
+ "name": "roaring_bitmap_xor_many"
+ "params":
+ - "name": ""
+ "type": "size_t"
+ - "name": ""
+ "type": "bool "
+ "return_type": "void"
+ "signature": "roaring_bitmap_t * roaring_bitmap_xor_many(size_t, const roaring_bitmap_t **)"
+- "exceptions": []
+ "name": "roaring_bitmap_lazy_or"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool"
+ "return_type": "void"
+ "signature": "roaring_bitmap_t * roaring_bitmap_lazy_or(const roaring_bitmap_t *, const roaring_bitmap_t *, const _Bool)"
+"language": "c"
+"project": "croaring"
+"target_name": "croaring_fuzzer"
+"target_path": "/src/croaring_fuzzer.c"
diff --git a/benchmark-sets/headerfiles/igraph.yaml b/benchmark-sets/headerfiles/igraph.yaml
new file mode 100644
index 0000000000..d5c0f63cb3
--- /dev/null
+++ b/benchmark-sets/headerfiles/igraph.yaml
@@ -0,0 +1,22 @@
+"functions":
+- "exceptions": []
+ "name": "igraph_sparsemat_arpack_rssolve"
+ "params":
+ - "name": "A"
+ "type": "bool "
+ - "name": "options"
+ "type": "bool "
+ - "name": "storage"
+ "type": "bool "
+ - "name": "values"
+ "type": "bool "
+ - "name": "vectors"
+ "type": "bool "
+ - "name": "solvemethod"
+ "type": "int"
+ "return_type": "int"
+ "signature": "igraph_error_t igraph_sparsemat_arpack_rssolve(const igraph_sparsemat_t *, igraph_arpack_options_t *, igraph_arpack_storage_t *, igraph_vector_t *, igraph_matrix_t *, igraph_sparsemat_solve_t)"
+"language": "c"
+"project": "igraph"
+"target_name": "read_pajek"
+"target_path": "/src/igraph/fuzzing/read_pajek.cpp"
diff --git a/benchmark-sets/headerfiles/kamailio.yaml b/benchmark-sets/headerfiles/kamailio.yaml
new file mode 100644
index 0000000000..9fd5cb9567
--- /dev/null
+++ b/benchmark-sets/headerfiles/kamailio.yaml
@@ -0,0 +1,26 @@
+"functions":
+- "exceptions": []
+ "name": "tcp_init_children"
+ "params":
+ - "name": "woneinit"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int tcp_init_children(int *)"
+- "exceptions": []
+ "name": "tcp_receive_loop"
+ "params":
+ - "name": "unix_sock"
+ "type": "int"
+ "return_type": "void"
+ "signature": "void tcp_receive_loop(int)"
+- "exceptions": []
+ "name": "fix_actions"
+ "params":
+ - "name": "a"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int fix_actions(struct action *)"
+"language": "c"
+"project": "kamailio"
+"target_name": "fuzz_uri"
+"target_path": "/src/kamailio/misc/fuzz/fuzz_uri.c"
diff --git a/benchmark-sets/headerfiles/krb5.yaml b/benchmark-sets/headerfiles/krb5.yaml
new file mode 100644
index 0000000000..183b747d1d
--- /dev/null
+++ b/benchmark-sets/headerfiles/krb5.yaml
@@ -0,0 +1,130 @@
+"functions":
+- "exceptions": []
+ "name": "krb5_gss_store_cred_into"
+ "params":
+ - "name": "minor_status"
+ "type": "bool "
+ - "name": "input_cred_handle"
+ "type": "bool "
+ - "name": "cred_usage"
+ "type": "int"
+ - "name": "desired_mech"
+ "type": "bool "
+ - "name": "overwrite_cred"
+ "type": "int"
+ - "name": "default_cred"
+ "type": "int"
+ - "name": "cred_store"
+ "type": "bool "
+ - "name": "elements_stored"
+ "type": "bool "
+ - "name": "cred_usage_stored"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "OM_uint32 krb5_gss_store_cred_into(OM_uint32 *, gss_cred_id_t, gss_cred_usage_t, const gss_OID, OM_uint32, OM_uint32, gss_const_key_value_set_t, gss_OID_set *, gss_cred_usage_t *)"
+- "exceptions": []
+ "name": "iakerb_gss_accept_sec_context"
+ "params":
+ - "name": "minor_status"
+ "type": "bool "
+ - "name": "context_handle"
+ "type": "bool "
+ - "name": "verifier_cred_handle"
+ "type": "bool "
+ - "name": "input_token"
+ "type": "bool "
+ - "name": "input_chan_bindings"
+ "type": "bool "
+ - "name": "src_name"
+ "type": "bool "
+ - "name": "mech_type"
+ "type": "bool "
+ - "name": "output_token"
+ "type": "bool "
+ - "name": "ret_flags"
+ "type": "bool "
+ - "name": "time_rec"
+ "type": "bool "
+ - "name": "delegated_cred_handle"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "OM_uint32 iakerb_gss_accept_sec_context(OM_uint32 *, gss_ctx_id_t *, gss_cred_id_t, gss_buffer_t, gss_channel_bindings_t, gss_name_t *, gss_OID *, gss_buffer_t, OM_uint32 *, OM_uint32 *, gss_cred_id_t *)"
+- "exceptions": []
+ "name": "krb5_gss_store_cred"
+ "params":
+ - "name": "minor_status"
+ "type": "bool "
+ - "name": "input_cred_handle"
+ "type": "bool "
+ - "name": "cred_usage"
+ "type": "int"
+ - "name": "desired_mech"
+ "type": "bool "
+ - "name": "overwrite_cred"
+ "type": "int"
+ - "name": "default_cred"
+ "type": "int"
+ - "name": "elements_stored"
+ "type": "bool "
+ - "name": "cred_usage_stored"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "OM_uint32 krb5_gss_store_cred(OM_uint32 *, gss_cred_id_t, gss_cred_usage_t, const gss_OID, OM_uint32, OM_uint32, gss_OID_set *, gss_cred_usage_t *)"
+- "exceptions": []
+ "name": "krb5_gss_acquire_cred_impersonate_name"
+ "params":
+ - "name": "minor_status"
+ "type": "bool "
+ - "name": "impersonator_cred_handle"
+ "type": "bool "
+ - "name": "desired_name"
+ "type": "bool "
+ - "name": "time_req"
+ "type": "int"
+ - "name": "desired_mechs"
+ "type": "bool "
+ - "name": "cred_usage"
+ "type": "int"
+ - "name": "output_cred_handle"
+ "type": "bool "
+ - "name": "actual_mechs"
+ "type": "bool "
+ - "name": "time_rec"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "OM_uint32 krb5_gss_acquire_cred_impersonate_name(OM_uint32 *, const gss_cred_id_t, const gss_name_t, OM_uint32, const gss_OID_set, gss_cred_usage_t, gss_cred_id_t *, gss_OID_set *, OM_uint32 *)"
+- "exceptions": []
+ "name": "iakerb_gss_init_sec_context"
+ "params":
+ - "name": "minor_status"
+ "type": "bool "
+ - "name": "claimant_cred_handle"
+ "type": "bool "
+ - "name": "context_handle"
+ "type": "bool "
+ - "name": "target_name"
+ "type": "bool "
+ - "name": "mech_type"
+ "type": "bool "
+ - "name": "req_flags"
+ "type": "int"
+ - "name": "time_req"
+ "type": "int"
+ - "name": "input_chan_bindings"
+ "type": "bool "
+ - "name": "input_token"
+ "type": "bool "
+ - "name": "actual_mech_type"
+ "type": "bool "
+ - "name": "output_token"
+ "type": "bool "
+ - "name": "ret_flags"
+ "type": "bool "
+ - "name": "time_rec"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "OM_uint32 iakerb_gss_init_sec_context(OM_uint32 *, gss_cred_id_t, gss_ctx_id_t *, gss_name_t, gss_OID, OM_uint32, OM_uint32, gss_channel_bindings_t, gss_buffer_t, gss_OID *, gss_buffer_t, OM_uint32 *, OM_uint32 *)"
+"language": "c"
+"project": "krb5"
+"target_name": "fuzz_json"
+"target_path": "/src/krb5/src/tests/fuzzing/fuzz_json.c"
diff --git a/benchmark-sets/headerfiles/lcms.yaml b/benchmark-sets/headerfiles/lcms.yaml
new file mode 100644
index 0000000000..f707a4f169
--- /dev/null
+++ b/benchmark-sets/headerfiles/lcms.yaml
@@ -0,0 +1,84 @@
+"functions":
+- "exceptions": []
+ "name": "cmsCreateDeviceLinkFromCubeFileTHR"
+ "params":
+ - "name": "ContextID"
+ "type": "bool "
+ - "name": "cFileName"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "cmsHPROFILE cmsCreateDeviceLinkFromCubeFileTHR(cmsContext, const char *)"
+- "exceptions": []
+ "name": "cmsCreateProofingTransform"
+ "params":
+ - "name": "InputProfile"
+ "type": "bool "
+ - "name": "InputFormat"
+ "type": "int"
+ - "name": "OutputProfile"
+ "type": "bool "
+ - "name": "OutputFormat"
+ "type": "int"
+ - "name": "ProofingProfile"
+ "type": "bool "
+ - "name": "nIntent"
+ "type": "int"
+ - "name": "ProofingIntent"
+ "type": "int"
+ - "name": "dwFlags"
+ "type": "int"
+ "return_type": "void"
+ "signature": "cmsHTRANSFORM cmsCreateProofingTransform(cmsHPROFILE, cmsUInt32Number, cmsHPROFILE, cmsUInt32Number, cmsHPROFILE, cmsUInt32Number, cmsUInt32Number, cmsUInt32Number)"
+- "exceptions": []
+ "name": "cmsCreateDeviceLinkFromCubeFile"
+ "params":
+ - "name": "cFileName"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "cmsHPROFILE cmsCreateDeviceLinkFromCubeFile(const char *)"
+- "exceptions": []
+ "name": "_cmsDefaultICCintents"
+ "params":
+ - "name": "ContextID"
+ "type": "bool "
+ - "name": "nProfiles"
+ "type": "int"
+ - "name": "TheIntents"
+ "type": "bool "
+ - "name": "hProfiles"
+ "type": "bool "
+ - "name": "BPC"
+ "type": "bool "
+ - "name": "AdaptationStates"
+ "type": "bool "
+ - "name": "dwFlags"
+ "type": "int"
+ "return_type": "void"
+ "signature": "cmsPipeline * _cmsDefaultICCintents(cmsContext, cmsUInt32Number, cmsUInt32Number *, cmsHPROFILE *, cmsBool *, cmsFloat64Number *, cmsUInt32Number)"
+- "exceptions": []
+ "name": "cmsCreateProofingTransformTHR"
+ "params":
+ - "name": "ContextID"
+ "type": "bool "
+ - "name": "InputProfile"
+ "type": "bool "
+ - "name": "InputFormat"
+ "type": "int"
+ - "name": "OutputProfile"
+ "type": "bool "
+ - "name": "OutputFormat"
+ "type": "int"
+ - "name": "ProofingProfile"
+ "type": "bool "
+ - "name": "nIntent"
+ "type": "int"
+ - "name": "ProofingIntent"
+ "type": "int"
+ - "name": "dwFlags"
+ "type": "int"
+ "return_type": "void"
+ "signature": "cmsHTRANSFORM cmsCreateProofingTransformTHR(cmsContext, cmsHPROFILE, cmsUInt32Number, cmsHPROFILE, cmsUInt32Number, cmsHPROFILE, cmsUInt32Number, cmsUInt32Number, cmsUInt32Number)"
+"language": "c"
+"project": "lcms"
+"target_name": "cms_cie_cam02_fuzzer"
+"target_path": "/src/cms_cie_cam02_fuzzer.c"
diff --git a/benchmark-sets/headerfiles/libbpf.yaml b/benchmark-sets/headerfiles/libbpf.yaml
new file mode 100644
index 0000000000..4be20ce6cf
--- /dev/null
+++ b/benchmark-sets/headerfiles/libbpf.yaml
@@ -0,0 +1,44 @@
+"functions":
+- "exceptions": []
+ "name": "bpf_object__load"
+ "params":
+ - "name": "obj"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int bpf_object__load(struct bpf_object *)"
+- "exceptions": []
+ "name": "bpf_object__open"
+ "params":
+ - "name": "path"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "struct bpf_object * bpf_object__open(const char *)"
+- "exceptions": []
+ "name": "bpf_object__load_skeleton"
+ "params":
+ - "name": "s"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int bpf_object__load_skeleton(struct bpf_object_skeleton *)"
+- "exceptions": []
+ "name": "bpf_object__open_skeleton"
+ "params":
+ - "name": "s"
+ "type": "bool "
+ - "name": "opts"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int bpf_object__open_skeleton(struct bpf_object_skeleton *, const struct bpf_object_open_opts *)"
+- "exceptions": []
+ "name": "bpf_object__open_file"
+ "params":
+ - "name": "path"
+ "type": "bool "
+ - "name": "opts"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "struct bpf_object * bpf_object__open_file(const char *, const struct bpf_object_open_opts *)"
+"language": "c"
+"project": "libbpf"
+"target_name": "bpf-object-fuzzer"
+"target_path": "/src/libbpf/fuzz/bpf-object-fuzzer.c"
diff --git a/benchmark-sets/headerfiles/libcoap.yaml b/benchmark-sets/headerfiles/libcoap.yaml
new file mode 100644
index 0000000000..b53ba9bc56
--- /dev/null
+++ b/benchmark-sets/headerfiles/libcoap.yaml
@@ -0,0 +1,84 @@
+"functions":
+- "exceptions": []
+ "name": "coap_ws_read"
+ "params":
+ - "name": "session"
+ "type": "bool "
+ - "name": "data"
+ "type": "bool "
+ - "name": "datalen"
+ "type": "size_t"
+ "return_type": "size_t"
+ "signature": "ssize_t coap_ws_read(coap_session_t *, uint8_t *, size_t)"
+- "exceptions": []
+ "name": "coap_new_client_session_oscore_pki"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "local_if"
+ "type": "bool "
+ - "name": "server"
+ "type": "bool "
+ - "name": "proto"
+ "type": "int"
+ - "name": "pki_data"
+ "type": "bool "
+ - "name": "oscore_conf"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "coap_session_t * coap_new_client_session_oscore_pki(coap_context_t *, const coap_address_t *, const coap_address_t *, coap_proto_t, coap_dtls_pki_t *, coap_oscore_conf_t *)"
+- "exceptions": []
+ "name": "coap_new_client_session_oscore_pki_lkd"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "local_if"
+ "type": "bool "
+ - "name": "server"
+ "type": "bool "
+ - "name": "proto"
+ "type": "int"
+ - "name": "pki_data"
+ "type": "bool "
+ - "name": "oscore_conf"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "coap_session_t * coap_new_client_session_oscore_pki_lkd(coap_context_t *, const coap_address_t *, const coap_address_t *, coap_proto_t, coap_dtls_pki_t *, coap_oscore_conf_t *)"
+- "exceptions": []
+ "name": "coap_new_client_session_oscore_psk_lkd"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "local_if"
+ "type": "bool "
+ - "name": "server"
+ "type": "bool "
+ - "name": "proto"
+ "type": "int"
+ - "name": "psk_data"
+ "type": "bool "
+ - "name": "oscore_conf"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "coap_session_t * coap_new_client_session_oscore_psk_lkd(coap_context_t *, const coap_address_t *, const coap_address_t *, coap_proto_t, coap_dtls_cpsk_t *, coap_oscore_conf_t *)"
+- "exceptions": []
+ "name": "coap_new_client_session_oscore_psk"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "local_if"
+ "type": "bool "
+ - "name": "server"
+ "type": "bool "
+ - "name": "proto"
+ "type": "int"
+ - "name": "psk_data"
+ "type": "bool "
+ - "name": "oscore_conf"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "coap_session_t * coap_new_client_session_oscore_psk(coap_context_t *, const coap_address_t *, const coap_address_t *, coap_proto_t, coap_dtls_cpsk_t *, coap_oscore_conf_t *)"
+"language": "c"
+"project": "libcoap"
+"target_name": "pdu_parse_udp_fuzzer"
+"target_path": "/src/libcoap/tests/oss-fuzz/pdu_parse_udp_target.c"
diff --git a/benchmark-sets/headerfiles/libevent.yaml b/benchmark-sets/headerfiles/libevent.yaml
new file mode 100644
index 0000000000..73cb9dd9ba
--- /dev/null
+++ b/benchmark-sets/headerfiles/libevent.yaml
@@ -0,0 +1,54 @@
+"functions":
+- "exceptions": []
+ "name": "evhttp_accept_socket"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "int"
+ "return_type": "int"
+ "signature": "int evhttp_accept_socket(struct evhttp *, int)"
+- "exceptions": []
+ "name": "evhttp_bind_socket_with_handle"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "short"
+ "return_type": "void"
+ "signature": "struct evhttp_bound_socket * evhttp_bind_socket_with_handle(struct evhttp *, const char *, uint16_t)"
+- "exceptions": []
+ "name": "evhttp_accept_socket_with_handle"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "int"
+ "return_type": "void"
+ "signature": "struct evhttp_bound_socket * evhttp_accept_socket_with_handle(struct evhttp *, int)"
+- "exceptions": []
+ "name": "evhttp_start"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "short"
+ "return_type": "void"
+ "signature": "struct evhttp * evhttp_start(const char *, uint16_t)"
+- "exceptions": []
+ "name": "evhttp_bind_socket"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "short"
+ "return_type": "int"
+ "signature": "int evhttp_bind_socket(struct evhttp *, const char *, uint16_t)"
+"language": "c++"
+"project": "libevent"
+"target_name": "dns_config_fuzzer"
+"target_path": "/src/dns_config_fuzzer.cc"
diff --git a/benchmark-sets/headerfiles/libfido2.yaml b/benchmark-sets/headerfiles/libfido2.yaml
new file mode 100644
index 0000000000..fb4221c3ce
--- /dev/null
+++ b/benchmark-sets/headerfiles/libfido2.yaml
@@ -0,0 +1,46 @@
+"functions":
+- "exceptions": []
+ "name": "mutate"
+ "params":
+ - "name": "p"
+ "type": "bool "
+ - "name": "seed"
+ "type": "int"
+ - "name": "flags"
+ "type": "int"
+ "return_type": "void"
+ "signature": "void mutate(struct param *, unsigned int, unsigned int)"
+- "exceptions": []
+ "name": "mutate_blob"
+ "params":
+ - "name": "blob"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void mutate_blob(struct blob *)"
+- "exceptions": []
+ "name": "pack_dummy"
+ "params":
+ - "name": "ptr"
+ "type": "bool "
+ - "name": "len"
+ "type": "size_t"
+ "return_type": "size_t"
+ "signature": "size_t pack_dummy(uint8_t *, size_t)"
+- "exceptions": []
+ "name": "mutate_string"
+ "params":
+ - "name": "s"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void mutate_string(char *)"
+- "exceptions": []
+ "name": "mutate_int"
+ "params":
+ - "name": "i"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void mutate_int(int *)"
+"language": "c"
+"project": "libfido2"
+"target_name": "fuzz_netlink"
+"target_path": "/src/libfido2/fuzz/libfuzzer.c"
diff --git a/benchmark-sets/headerfiles/libical.yaml b/benchmark-sets/headerfiles/libical.yaml
new file mode 100644
index 0000000000..695c1876a7
--- /dev/null
+++ b/benchmark-sets/headerfiles/libical.yaml
@@ -0,0 +1,60 @@
+"functions":
+- "exceptions": []
+ "name": "icalcomponent_foreach_recurrence"
+ "params":
+ - "name": "comp"
+ "type": "bool "
+ - "name": "start"
+ "type": "bool "
+ - "name": "end"
+ "type": "bool "
+ - "name": "callback"
+ "type": "bool "
+ - "name": "callback_data"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void icalcomponent_foreach_recurrence(icalcomponent *, struct icaltimetype, struct icaltimetype, DW_TAG_subroutine_typeInfinite loop *, void *)"
+- "exceptions": []
+ "name": "icalcomponent_set_due"
+ "params":
+ - "name": "comp"
+ "type": "bool "
+ - "name": "v"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void icalcomponent_set_due(icalcomponent *, struct icaltimetype)"
+- "exceptions": []
+ "name": "icaltimezone_truncate_vtimezone"
+ "params":
+ - "name": "vtz"
+ "type": "bool "
+ - "name": "start"
+ "type": "bool "
+ - "name": "end"
+ "type": "bool "
+ - "name": "ms_compatible"
+ "type": "int"
+ "return_type": "void"
+ "signature": "void icaltimezone_truncate_vtimezone(icalcomponent *, icaltimetype, icaltimetype, int)"
+- "exceptions": []
+ "name": "icalcomponent_merge_component"
+ "params":
+ - "name": "comp"
+ "type": "bool "
+ - "name": "comp_to_merge"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void icalcomponent_merge_component(icalcomponent *, icalcomponent *)"
+- "exceptions": []
+ "name": "icalcomponent_get_span"
+ "params":
+ - "name": "comp"
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ "return_type": "void"
+ "signature": "struct icaltime_span icalcomponent_get_span(icalcomponent *)"
+"language": "c++"
+"project": "libical"
+"target_name": "libical_extended_fuzzer"
+"target_path": "/src/libical_extended_fuzzer.cc"
diff --git a/benchmark-sets/headerfiles/libjpeg-turbo.yaml b/benchmark-sets/headerfiles/libjpeg-turbo.yaml
new file mode 100644
index 0000000000..2cdb86cffc
--- /dev/null
+++ b/benchmark-sets/headerfiles/libjpeg-turbo.yaml
@@ -0,0 +1,112 @@
+"functions":
+- "exceptions": []
+ "name": "tjEncodeYUV"
+ "params":
+ - "name": "handle"
+ "type": "bool "
+ - "name": "srcBuf"
+ "type": "bool "
+ - "name": "width"
+ "type": "int"
+ - "name": "pitch"
+ "type": "int"
+ - "name": "height"
+ "type": "int"
+ - "name": "pixelSize"
+ "type": "int"
+ - "name": "dstBuf"
+ "type": "bool "
+ - "name": "subsamp"
+ "type": "int"
+ - "name": "flags"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int tjEncodeYUV(tjhandle, unsigned char *, int, int, int, int, unsigned char *, int, int)"
+- "exceptions": []
+ "name": "tjCompress"
+ "params":
+ - "name": "handle"
+ "type": "bool "
+ - "name": "srcBuf"
+ "type": "bool "
+ - "name": "width"
+ "type": "int"
+ - "name": "pitch"
+ "type": "int"
+ - "name": "height"
+ "type": "int"
+ - "name": "pixelSize"
+ "type": "int"
+ - "name": "jpegBuf"
+ "type": "bool "
+ - "name": "jpegSize"
+ "type": "bool "
+ - "name": "jpegSubsamp"
+ "type": "int"
+ - "name": "jpegQual"
+ "type": "int"
+ - "name": "flags"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int tjCompress(tjhandle, unsigned char *, int, int, int, int, unsigned char *, unsigned long *, int, int, int)"
+- "exceptions": []
+ "name": "tjDecompressToYUV"
+ "params":
+ - "name": "handle"
+ "type": "bool "
+ - "name": "jpegBuf"
+ "type": "bool "
+ - "name": "jpegSize"
+ "type": "size_t"
+ - "name": "dstBuf"
+ "type": "bool "
+ - "name": "flags"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int tjDecompressToYUV(tjhandle, unsigned char *, unsigned long, unsigned char *, int)"
+- "exceptions": []
+ "name": "tj3SaveImage16"
+ "params":
+ - "name": "handle"
+ "type": "bool "
+ - "name": "filename"
+ "type": "bool "
+ - "name": "buffer"
+ "type": "bool "
+ - "name": "width"
+ "type": "int"
+ - "name": "pitch"
+ "type": "int"
+ - "name": "height"
+ "type": "int"
+ - "name": "pixelFormat"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int tj3SaveImage16(tjhandle, const char *, const J16SAMPLE *, int, int, int, int)"
+- "exceptions": []
+ "name": "tjDecompress"
+ "params":
+ - "name": "handle"
+ "type": "bool "
+ - "name": "jpegBuf"
+ "type": "bool "
+ - "name": "jpegSize"
+ "type": "size_t"
+ - "name": "dstBuf"
+ "type": "bool "
+ - "name": "width"
+ "type": "int"
+ - "name": "pitch"
+ "type": "int"
+ - "name": "height"
+ "type": "int"
+ - "name": "pixelSize"
+ "type": "int"
+ - "name": "flags"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int tjDecompress(tjhandle, unsigned char *, unsigned long, unsigned char *, int, int, int, int, int)"
+"language": "c++"
+"project": "libjpeg-turbo"
+"target_name": "compress_lossless_fuzzer_dev"
+"target_path": "/src/libjpeg-turbo.dev/fuzz/compress_lossless.cc"
diff --git a/benchmark-sets/headerfiles/libpcap.yaml b/benchmark-sets/headerfiles/libpcap.yaml
new file mode 100644
index 0000000000..523c45085b
--- /dev/null
+++ b/benchmark-sets/headerfiles/libpcap.yaml
@@ -0,0 +1,68 @@
+"functions":
+- "exceptions": []
+ "name": "pcap_findalldevs_ex"
+ "params":
+ - "name": "source"
+ "type": "bool "
+ - "name": "auth"
+ "type": "bool "
+ - "name": "alldevs"
+ "type": "bool "
+ - "name": "errbuf"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int pcap_findalldevs_ex(const char *, struct pcap_rmtauth *, pcap_if_t **, char *)"
+- "exceptions": []
+ "name": "pcap_compile_nopcap"
+ "params":
+ - "name": "snaplen_arg"
+ "type": "int"
+ - "name": "linktype_arg"
+ "type": "int"
+ - "name": "program"
+ "type": "bool "
+ - "name": "buf"
+ "type": "bool "
+ - "name": "optimize"
+ "type": "int"
+ - "name": "mask"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int pcap_compile_nopcap(int, int, struct bpf_program *, const char *, int, bpf_u_int32)"
+- "exceptions": []
+ "name": "pcap_open"
+ "params":
+ - "name": "source"
+ "type": "bool "
+ - "name": "snaplen"
+ "type": "int"
+ - "name": "flags"
+ "type": "int"
+ - "name": "read_timeout"
+ "type": "int"
+ - "name": "auth"
+ "type": "bool "
+ - "name": "errbuf"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "pcap_t * pcap_open(const char *, int, int, int, struct pcap_rmtauth *, char *)"
+- "exceptions": []
+ "name": "pcap_findalldevs"
+ "params":
+ - "name": "alldevsp"
+ "type": "bool "
+ - "name": "errbuf"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int pcap_findalldevs(pcap_if_t **, char *)"
+- "exceptions": []
+ "name": "pcap_lookupdev"
+ "params":
+ - "name": "errbuf"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "char * pcap_lookupdev(char *)"
+"language": "c"
+"project": "libpcap"
+"target_name": "fuzz_rserver"
+"target_path": "/src/libpcap/testprogs/fuzz/fuzz_rserver.c"
diff --git a/benchmark-sets/headerfiles/librdkafka.yaml b/benchmark-sets/headerfiles/librdkafka.yaml
new file mode 100644
index 0000000000..f2c612be48
--- /dev/null
+++ b/benchmark-sets/headerfiles/librdkafka.yaml
@@ -0,0 +1,18 @@
+"functions":
+- "exceptions": []
+ "name": "re_regexec"
+ "params":
+ - "name": "prog"
+ "type": "bool "
+ - "name": "sp"
+ "type": "bool "
+ - "name": "sub"
+ "type": "bool "
+ - "name": "eflags"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int re_regexec(Reprog *, const char *, Resub *, int)"
+"language": "c"
+"project": "librdkafka"
+"target_name": "fuzz_regex"
+"target_path": "/src/librdkafka/tests/fuzzers/fuzz_regex.c"
diff --git a/benchmark-sets/headerfiles/libsndfile.yaml b/benchmark-sets/headerfiles/libsndfile.yaml
new file mode 100644
index 0000000000..3eedfa956d
--- /dev/null
+++ b/benchmark-sets/headerfiles/libsndfile.yaml
@@ -0,0 +1,62 @@
+"functions":
+- "exceptions": []
+ "name": "sf_open"
+ "params":
+ - "name": "path"
+ "type": "bool "
+ - "name": "mode"
+ "type": "int"
+ - "name": "sfinfo"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "SNDFILE * sf_open(const char *, int, SF_INFO *)"
+- "exceptions": []
+ "name": "sf_command"
+ "params":
+ - "name": "sndfile"
+ "type": "bool "
+ - "name": "command"
+ "type": "int"
+ - "name": "data"
+ "type": "bool "
+ - "name": "datasize"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int sf_command(SNDFILE *, int, void *, int)"
+- "exceptions": []
+ "name": "sf_open_fd"
+ "params":
+ - "name": "fd"
+ "type": "int"
+ - "name": "mode"
+ "type": "int"
+ - "name": "sfinfo"
+ "type": "bool "
+ - "name": "close_desc"
+ "type": "int"
+ "return_type": "void"
+ "signature": "SNDFILE * sf_open_fd(int, int, SF_INFO *, int)"
+- "exceptions": []
+ "name": "sf_get_chunk_iterator"
+ "params":
+ - "name": "sndfile"
+ "type": "bool "
+ - "name": "chunk_info"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "SF_CHUNK_ITERATOR * sf_get_chunk_iterator(SNDFILE *, const SF_CHUNK_INFO *)"
+- "exceptions": []
+ "name": "sf_set_string"
+ "params":
+ - "name": "sndfile"
+ "type": "bool "
+ - "name": "str_type"
+ "type": "int"
+ - "name": "str"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int sf_set_string(SNDFILE *, int, const char *)"
+"language": "c++"
+"project": "libsndfile"
+"target_name": "sndfile_fuzzer"
+"target_path": "/src/libsndfile/ossfuzz/sndfile_fuzzer.cc"
diff --git a/benchmark-sets/headerfiles/libsodium.yaml b/benchmark-sets/headerfiles/libsodium.yaml
new file mode 100644
index 0000000000..3d3815c7eb
--- /dev/null
+++ b/benchmark-sets/headerfiles/libsodium.yaml
@@ -0,0 +1,50 @@
+"functions":
+- "exceptions": []
+ "name": "blake2b_compress_sse41"
+ "params":
+ - "name": "S"
+ "type": "bool "
+ - "name": "block"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int blake2b_compress_sse41(blake2b_state *, const uint8_t *)"
+- "exceptions": []
+ "name": "argon2_initialize"
+ "params":
+ - "name": "instance"
+ "type": "bool "
+ - "name": "context"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int argon2_initialize(argon2_instance_t *, argon2_context *)"
+- "exceptions": []
+ "name": "blake2b_compress_avx2"
+ "params":
+ - "name": "S"
+ "type": "bool "
+ - "name": "block"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int blake2b_compress_avx2(blake2b_state *, const uint8_t *)"
+- "exceptions": []
+ "name": "argon2_finalize"
+ "params":
+ - "name": "context"
+ "type": "bool "
+ - "name": "instance"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void argon2_finalize(const argon2_context *, argon2_instance_t *)"
+- "exceptions": []
+ "name": "ge25519_from_hash"
+ "params":
+ - "name": "s"
+ "type": "bool "
+ - "name": "h"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void ge25519_from_hash(unsigned char *, const unsigned char *)"
+"language": "c++"
+"project": "libsodium"
+"target_name": "secret_key_auth_fuzzer"
+"target_path": "/src/secret_key_auth_fuzzer.cc"
diff --git a/benchmark-sets/headerfiles/libssh.yaml b/benchmark-sets/headerfiles/libssh.yaml
new file mode 100644
index 0000000000..ff71980580
--- /dev/null
+++ b/benchmark-sets/headerfiles/libssh.yaml
@@ -0,0 +1,56 @@
+"functions":
+- "exceptions": []
+ "name": "ssh_userauth_agent_pubkey"
+ "params":
+ - "name": "session"
+ "type": "bool "
+ - "name": "username"
+ "type": "bool "
+ - "name": "publickey"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int ssh_userauth_agent_pubkey(ssh_session, const char *, ssh_public_key)"
+- "exceptions": []
+ "name": "ssh_agent_get_first_ident"
+ "params":
+ - "name": "session"
+ "type": "bool "
+ - "name": "comment"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "ssh_key ssh_agent_get_first_ident(struct ssh_session_struct *, char **)"
+- "exceptions": []
+ "name": "ssh_userauth_publickey"
+ "params":
+ - "name": "session"
+ "type": "bool "
+ - "name": "username"
+ "type": "bool "
+ - "name": "privkey"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int ssh_userauth_publickey(ssh_session, const char *, const ssh_key)"
+- "exceptions": []
+ "name": "ssh_userauth_agent"
+ "params":
+ - "name": "session"
+ "type": "bool "
+ - "name": "username"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int ssh_userauth_agent(ssh_session, const char *)"
+- "exceptions": []
+ "name": "ssh_userauth_publickey_auto"
+ "params":
+ - "name": "session"
+ "type": "bool "
+ - "name": "username"
+ "type": "bool "
+ - "name": "passphrase"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int ssh_userauth_publickey_auto(ssh_session, const char *, const char *)"
+"language": "c"
+"project": "libssh"
+"target_name": "ssh_pubkey_fuzzer"
+"target_path": "/src/libssh/tests/fuzz/ssh_pubkey_fuzzer.c"
diff --git a/benchmark-sets/headerfiles/libssh2.yaml b/benchmark-sets/headerfiles/libssh2.yaml
new file mode 100644
index 0000000000..24617b13c4
--- /dev/null
+++ b/benchmark-sets/headerfiles/libssh2.yaml
@@ -0,0 +1,62 @@
+"functions":
+- "exceptions": []
+ "name": "libssh2_session_startup"
+ "params":
+ - "name": "session"
+ "type": "bool "
+ - "name": "sock"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int libssh2_session_startup(LIBSSH2_SESSION *, int)"
+- "exceptions": []
+ "name": "libssh2_channel_forward_cancel"
+ "params":
+ - "name": "listener"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int libssh2_channel_forward_cancel(LIBSSH2_LISTENER *)"
+- "exceptions": []
+ "name": "libssh2_channel_read_ex"
+ "params":
+ - "name": "channel"
+ "type": "bool "
+ - "name": "stream_id"
+ "type": "int"
+ - "name": "buf"
+ "type": "bool "
+ - "name": "buflen"
+ "type": "size_t"
+ "return_type": "size_t"
+ "signature": "ssize_t libssh2_channel_read_ex(LIBSSH2_CHANNEL *, int, char *, size_t)"
+- "exceptions": []
+ "name": "libssh2_channel_direct_tcpip_ex"
+ "params":
+ - "name": "session"
+ "type": "bool "
+ - "name": "host"
+ "type": "bool "
+ - "name": "port"
+ "type": "int"
+ - "name": "shost"
+ "type": "bool "
+ - "name": "sport"
+ "type": "int"
+ "return_type": "void"
+ "signature": "LIBSSH2_CHANNEL * libssh2_channel_direct_tcpip_ex(LIBSSH2_SESSION *, const char *, int, const char *, int)"
+- "exceptions": []
+ "name": "libssh2_channel_direct_streamlocal_ex"
+ "params":
+ - "name": "session"
+ "type": "bool "
+ - "name": "socket_path"
+ "type": "bool "
+ - "name": "shost"
+ "type": "bool "
+ - "name": "sport"
+ "type": "int"
+ "return_type": "void"
+ "signature": "LIBSSH2_CHANNEL * libssh2_channel_direct_streamlocal_ex(LIBSSH2_SESSION *, const char *, const char *, int)"
+"language": "c++"
+"project": "libssh2"
+"target_name": "ssh2_client_fuzzer"
+"target_path": "/src/libssh2/tests/ossfuzz/ssh2_client_fuzzer.cc"
diff --git a/benchmark-sets/headerfiles/libtpms.yaml b/benchmark-sets/headerfiles/libtpms.yaml
new file mode 100644
index 0000000000..00a5545f94
--- /dev/null
+++ b/benchmark-sets/headerfiles/libtpms.yaml
@@ -0,0 +1,71 @@
+"functions":
+- "exceptions": []
+ "name": "TPM_Process_SetCapability"
+ "params":
+ - "name": "tpm_state"
+ "type": "bool "
+ - "name": "response"
+ "type": "bool "
+ - "name": "tag"
+ "type": "short"
+ - "name": "paramSize"
+ "type": "int"
+ - "name": "ordinal"
+ "type": "int"
+ - "name": "command"
+ "type": "bool "
+ - "name": "transportInternal"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "TPM_RESULT TPM_Process_SetCapability(tpm_state_t *, TPM_STORE_BUFFER *, TPM_TAG, uint32_t, TPM_COMMAND_CODE, unsigned char *, TPM_TRANSPORT_INTERNAL *)"
+- "exceptions": []
+ "name": "TPM2_Create"
+ "params":
+ - "name": "in"
+ "type": "bool "
+ - "name": "out"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "TPM_RC TPM2_Create(Create_In *, Create_Out *)"
+- "exceptions": []
+ "name": "TPM_Process_GetCapabilitySigned"
+ "params":
+ - "name": "tpm_state"
+ "type": "bool "
+ - "name": "response"
+ "type": "bool "
+ - "name": "tag"
+ "type": "short"
+ - "name": "paramSize"
+ "type": "int"
+ - "name": "ordinal"
+ "type": "int"
+ - "name": "command"
+ "type": "bool "
+ - "name": "transportInternal"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "TPM_RESULT TPM_Process_GetCapabilitySigned(tpm_state_t *, TPM_STORE_BUFFER *, TPM_TAG, uint32_t, TPM_COMMAND_CODE, unsigned char *, TPM_TRANSPORT_INTERNAL *)"
+- "exceptions": []
+ "name": "TPM_Process_GetCapability"
+ "params":
+ - "name": "tpm_state"
+ "type": "bool "
+ - "name": "response"
+ "type": "bool "
+ - "name": "tag"
+ "type": "short"
+ - "name": "paramSize"
+ "type": "int"
+ - "name": "ordinal"
+ "type": "int"
+ - "name": "command"
+ "type": "bool "
+ - "name": "transportInternal"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "TPM_RESULT TPM_Process_GetCapability(tpm_state_t *, TPM_STORE_BUFFER *, TPM_TAG, uint32_t, TPM_COMMAND_CODE, unsigned char *, TPM_TRANSPORT_INTERNAL *)"
+"language": "c"
+"project": "libtpms"
+"target_name": "fuzz-main"
+"target_path": "/src/libtpms/tests/fuzz-main.c"
diff --git a/benchmark-sets/headerfiles/libusb.yaml b/benchmark-sets/headerfiles/libusb.yaml
new file mode 100644
index 0000000000..4136b63a73
--- /dev/null
+++ b/benchmark-sets/headerfiles/libusb.yaml
@@ -0,0 +1,74 @@
+"functions":
+- "exceptions": []
+ "name": "libusb_interrupt_transfer"
+ "params":
+ - "name": "dev_handle"
+ "type": "bool "
+ - "name": "endpoint"
+ "type": "char"
+ - "name": "data"
+ "type": "bool "
+ - "name": "length"
+ "type": "int"
+ - "name": "transferred"
+ "type": "bool "
+ - "name": "timeout"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int libusb_interrupt_transfer(libusb_device_handle *, unsigned char, unsigned char *, int, int *, unsigned int)"
+- "exceptions": []
+ "name": "libusb_control_transfer"
+ "params":
+ - "name": "dev_handle"
+ "type": "bool "
+ - "name": "bmRequestType"
+ "type": "char"
+ - "name": "bRequest"
+ "type": "char"
+ - "name": "wValue"
+ "type": "short"
+ - "name": "wIndex"
+ "type": "short"
+ - "name": "data"
+ "type": "bool "
+ - "name": "wLength"
+ "type": "short"
+ - "name": "timeout"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int libusb_control_transfer(libusb_device_handle *, uint8_t, uint8_t, uint16_t, uint16_t, unsigned char *, uint16_t, unsigned int)"
+- "exceptions": []
+ "name": "libusb_get_string_descriptor_ascii"
+ "params":
+ - "name": "dev_handle"
+ "type": "bool "
+ - "name": "desc_index"
+ "type": "char"
+ - "name": "data"
+ "type": "bool "
+ - "name": "length"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int libusb_get_string_descriptor_ascii(libusb_device_handle *, uint8_t, unsigned char *, int)"
+- "exceptions": []
+ "name": "libusb_get_bos_descriptor"
+ "params":
+ - "name": "dev_handle"
+ "type": "bool "
+ - "name": "bos"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int libusb_get_bos_descriptor(libusb_device_handle *, struct libusb_bos_descriptor **)"
+- "exceptions": []
+ "name": "libusb_get_configuration"
+ "params":
+ - "name": "dev_handle"
+ "type": "bool "
+ - "name": "config"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int libusb_get_configuration(libusb_device_handle *, int *)"
+"language": "c++"
+"project": "libusb"
+"target_name": "libusb_fuzzer"
+"target_path": "/src/libusb_fuzzer.cc"
diff --git a/benchmark-sets/headerfiles/libvnc.yaml b/benchmark-sets/headerfiles/libvnc.yaml
new file mode 100644
index 0000000000..ad20b47e86
--- /dev/null
+++ b/benchmark-sets/headerfiles/libvnc.yaml
@@ -0,0 +1,50 @@
+"functions":
+- "exceptions": []
+ "name": "rfbStartOnHoldClient"
+ "params":
+ - "name": "cl"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void rfbStartOnHoldClient(rfbClientPtr)"
+- "exceptions": []
+ "name": "rfbReverseConnection"
+ "params":
+ - "name": "rfbScreen"
+ "type": "bool "
+ - "name": "host"
+ "type": "bool "
+ - "name": "port"
+ "type": "int"
+ "return_type": "void"
+ "signature": "rfbClientPtr rfbReverseConnection(rfbScreenInfoPtr, char *, int)"
+- "exceptions": []
+ "name": "rfbUpdateClient"
+ "params":
+ - "name": "cl"
+ "type": "bool "
+ "return_type": "char"
+ "signature": "rfbBool rfbUpdateClient(rfbClientPtr)"
+- "exceptions": []
+ "name": "rfbProcessEvents"
+ "params":
+ - "name": "screen"
+ "type": "bool "
+ - "name": "usec"
+ "type": "size_t"
+ "return_type": "char"
+ "signature": "rfbBool rfbProcessEvents(rfbScreenInfoPtr, long)"
+- "exceptions": []
+ "name": "rfbRunEventLoop"
+ "params":
+ - "name": "screen"
+ "type": "bool "
+ - "name": "usec"
+ "type": "size_t"
+ - "name": "runInBackground"
+ "type": "char"
+ "return_type": "void"
+ "signature": "void rfbRunEventLoop(rfbScreenInfoPtr, long, rfbBool)"
+"language": "c"
+"project": "libvnc"
+"target_name": "fuzz_server"
+"target_path": "/src/libvncserver/test/fuzz_server.c"
diff --git a/benchmark-sets/headerfiles/libxls.yaml b/benchmark-sets/headerfiles/libxls.yaml
new file mode 100644
index 0000000000..4b6768ee18
--- /dev/null
+++ b/benchmark-sets/headerfiles/libxls.yaml
@@ -0,0 +1,46 @@
+"functions":
+- "exceptions": []
+ "name": "xls_open"
+ "params":
+ - "name": "file"
+ "type": "bool "
+ - "name": "charset"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "xlsWorkBook * xls_open(const char *, const char *)"
+- "exceptions": []
+ "name": "ole2_open_file"
+ "params":
+ - "name": "file"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "OLE2 * ole2_open_file(const char *)"
+- "exceptions": []
+ "name": "xls_open_file"
+ "params":
+ - "name": "file"
+ "type": "bool "
+ - "name": "charset"
+ "type": "bool "
+ - "name": "outError"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "xlsWorkBook * xls_open_file(const char *, const char *, xls_error_t *)"
+- "exceptions": []
+ "name": "xls_close_summaryInfo"
+ "params":
+ - "name": "pSI"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void xls_close_summaryInfo(xlsSummaryInfo *)"
+- "exceptions": []
+ "name": "xls_summaryInfo"
+ "params":
+ - "name": "pWB"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "xlsSummaryInfo * xls_summaryInfo(xlsWorkBook *)"
+"language": "c"
+"project": "libxls"
+"target_name": "fuzz_xls"
+"target_path": "/src/libxls/fuzz/fuzz_xls.c"
diff --git a/benchmark-sets/headerfiles/libyang.yaml b/benchmark-sets/headerfiles/libyang.yaml
new file mode 100644
index 0000000000..67b12be1c0
--- /dev/null
+++ b/benchmark-sets/headerfiles/libyang.yaml
@@ -0,0 +1,76 @@
+"functions":
+- "exceptions": []
+ "name": "lyd_parse_op"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "parent"
+ "type": "bool "
+ - "name": "in"
+ "type": "bool "
+ - "name": "format"
+ "type": "int"
+ - "name": "data_type"
+ "type": "int"
+ - "name": "tree"
+ "type": "bool "
+ - "name": "op"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "LY_ERR lyd_parse_op(const struct ly_ctx *, struct lyd_node *, struct ly_in *, LYD_FORMAT, DW_TAG_enumeration_typelyd_type, struct lyd_node **, struct lyd_node **)"
+- "exceptions": []
+ "name": "lyplg_ext_print_info_extension_instance"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "ext"
+ "type": "bool "
+ - "name": "flag"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void lyplg_ext_print_info_extension_instance(struct lyspr_ctx *, const struct lysc_ext_instance *, ly_bool *)"
+- "exceptions": []
+ "name": "yang_print_compiled"
+ "params":
+ - "name": "out"
+ "type": "bool "
+ - "name": "module"
+ "type": "bool "
+ - "name": "options"
+ "type": "int"
+ "return_type": "int"
+ "signature": "LY_ERR yang_print_compiled(struct ly_out *, const struct lys_module *, uint32_t)"
+- "exceptions": []
+ "name": "ly_ctx_get_yanglib_data"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "root_p"
+ "type": "bool "
+ - "name": "content_id_format"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "LY_ERR ly_ctx_get_yanglib_data(const struct ly_ctx *, struct lyd_node **, const char *, void)"
+- "exceptions": []
+ "name": "lyd_parse_ext_op"
+ "params":
+ - "name": "ext"
+ "type": "bool "
+ - "name": "parent"
+ "type": "bool "
+ - "name": "in"
+ "type": "bool "
+ - "name": "format"
+ "type": "int"
+ - "name": "data_type"
+ "type": "int"
+ - "name": "tree"
+ "type": "bool "
+ - "name": "op"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "LY_ERR lyd_parse_ext_op(const struct lysc_ext_instance *, struct lyd_node *, struct ly_in *, LYD_FORMAT, DW_TAG_enumeration_typelyd_type, struct lyd_node **, struct lyd_node **)"
+"language": "c"
+"project": "libyang"
+"target_name": "lyd_parse_mem_json"
+"target_path": "/src/libyang/tests/fuzz/lyd_parse_mem_json.c"
diff --git a/benchmark-sets/headerfiles/lwan.yaml b/benchmark-sets/headerfiles/lwan.yaml
new file mode 100644
index 0000000000..ab41584319
--- /dev/null
+++ b/benchmark-sets/headerfiles/lwan.yaml
@@ -0,0 +1,46 @@
+"functions":
+- "exceptions": []
+ "name": "lwan_response"
+ "params":
+ - "name": "request"
+ "type": "bool "
+ - "name": "status"
+ "type": "int"
+ "return_type": "void"
+ "signature": "void lwan_response(struct lwan_request *, DW_TAG_enumeration_typelwan_http_status)"
+- "exceptions": []
+ "name": "lwan_init"
+ "params":
+ - "name": "l"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void lwan_init(struct lwan *)"
+- "exceptions": []
+ "name": "lwan_process_request"
+ "params":
+ - "name": "l"
+ "type": "bool "
+ - "name": "request"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void lwan_process_request(struct lwan *, struct lwan_request *)"
+- "exceptions": []
+ "name": "lwan_init_with_config"
+ "params":
+ - "name": "l"
+ "type": "bool "
+ - "name": "config"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void lwan_init_with_config(struct lwan *, const struct lwan_config *)"
+- "exceptions": []
+ "name": "lwan_thread_init"
+ "params":
+ - "name": "l"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void lwan_thread_init(struct lwan *)"
+"language": "c++"
+"project": "lwan"
+"target_name": "h2_huffman_fuzzer"
+"target_path": "/src/lwan/src/bin/fuzz/h2_huffman_fuzzer.cc"
diff --git a/benchmark-sets/headerfiles/mbedtls.yaml b/benchmark-sets/headerfiles/mbedtls.yaml
new file mode 100644
index 0000000000..9478976b0d
--- /dev/null
+++ b/benchmark-sets/headerfiles/mbedtls.yaml
@@ -0,0 +1,53 @@
+"functions":
+- "exceptions": []
+ "name": "mbedtls_ssl_write"
+ "params":
+ - "name": "ssl"
+ "type": "bool "
+ - "name": "buf"
+ "type": "bool "
+ - "name": "len"
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "int mbedtls_ssl_write(mbedtls_ssl_context *, const unsigned char *, size_t)"
+- "exceptions": []
+ "name": "mbedtls_ssl_check_record"
+ "params":
+ - "name": "ssl"
+ "type": "bool "
+ - "name": "buf"
+ "type": "bool "
+ - "name": "buflen"
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "int mbedtls_ssl_check_record(const mbedtls_ssl_context *, unsigned char *, size_t)"
+- "exceptions": []
+ "name": "mbedtls_pk_parse_keyfile"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "path"
+ "type": "bool "
+ - "name": "pwd"
+ "type": "bool "
+ - "name": "f_rng"
+ "type": "bool "
+ - "name": "p_rng"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int mbedtls_pk_parse_keyfile(mbedtls_pk_context *, const char *, const char *, DW_TAG_subroutine_typeInfinite loop *, void *)"
+- "exceptions": []
+ "name": "mbedtls_ssl_write_early_data"
+ "params":
+ - "name": "ssl"
+ "type": "bool "
+ - "name": "buf"
+ "type": "bool "
+ - "name": "len"
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "int mbedtls_ssl_write_early_data(mbedtls_ssl_context *, const unsigned char *, size_t)"
+"language": "c"
+"project": "mbedtls"
+"target_name": "usepsa-fuzz_x509csr"
+"target_path": "/src/mbedtls/programs/fuzz/fuzz_x509csr.c"
diff --git a/benchmark-sets/headerfiles/mdbtools.yaml b/benchmark-sets/headerfiles/mdbtools.yaml
new file mode 100644
index 0000000000..e2fe76ddcf
--- /dev/null
+++ b/benchmark-sets/headerfiles/mdbtools.yaml
@@ -0,0 +1,54 @@
+"functions":
+- "exceptions": []
+ "name": "mdb_data_dump"
+ "params":
+ - "name": "table"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void mdb_data_dump(MdbTableDef *)"
+- "exceptions": []
+ "name": "mdb_print_schema"
+ "params":
+ - "name": "mdb"
+ "type": "bool "
+ - "name": "outfile"
+ "type": "bool "
+ - "name": "tabname"
+ "type": "bool "
+ - "name": "dbnamespace"
+ "type": "bool "
+ - "name": "export_options"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int mdb_print_schema(MdbHandle *, FILE *, char *, char *, guint32)"
+- "exceptions": []
+ "name": "mdb_dump_catalog"
+ "params":
+ - "name": "mdb"
+ "type": "bool "
+ - "name": "obj_type"
+ "type": "int"
+ "return_type": "void"
+ "signature": "void mdb_dump_catalog(MdbHandle *, int)"
+- "exceptions": []
+ "name": "mdb_table_dump"
+ "params":
+ - "name": "entry"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void mdb_table_dump(MdbCatalogEntry *)"
+- "exceptions": []
+ "name": "mdb_read_table_by_name"
+ "params":
+ - "name": "mdb"
+ "type": "bool "
+ - "name": "table_name"
+ "type": "bool "
+ - "name": "obj_type"
+ "type": "int"
+ "return_type": "void"
+ "signature": "MdbTableDef * mdb_read_table_by_name(MdbHandle *, gchar *, int)"
+"language": "c"
+"project": "mdbtools"
+"target_name": "fuzz_mdb"
+"target_path": "/src/mdbtools/src/fuzz/fuzz_mdb.c"
diff --git a/benchmark-sets/headerfiles/minizip.yaml b/benchmark-sets/headerfiles/minizip.yaml
new file mode 100644
index 0000000000..5460132df3
--- /dev/null
+++ b/benchmark-sets/headerfiles/minizip.yaml
@@ -0,0 +1,52 @@
+"functions":
+- "exceptions": []
+ "name": "mz_zip_entry_is_symlink"
+ "params":
+ - "name": "handle"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int32_t mz_zip_entry_is_symlink(void *)"
+- "exceptions": []
+ "name": "mz_zip_attrib_is_symlink"
+ "params":
+ - "name": "attrib"
+ "type": "int"
+ - "name": "version_madeby"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int32_t mz_zip_attrib_is_symlink(uint32_t, int32_t)"
+- "exceptions": []
+ "name": "mz_zip_locate_first_entry"
+ "params":
+ - "name": "handle"
+ "type": "bool "
+ - "name": "userdata"
+ "type": "bool "
+ - "name": "cb"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int32_t mz_zip_locate_first_entry(void *, void *, mz_zip_locate_entry_cb)"
+- "exceptions": []
+ "name": "mz_zip_goto_entry"
+ "params":
+ - "name": "handle"
+ "type": "bool "
+ - "name": "cd_pos"
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "int32_t mz_zip_goto_entry(void *, int64_t)"
+- "exceptions": []
+ "name": "mz_zip_locate_next_entry"
+ "params":
+ - "name": "handle"
+ "type": "bool "
+ - "name": "userdata"
+ "type": "bool "
+ - "name": "cb"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int32_t mz_zip_locate_next_entry(void *, void *, mz_zip_locate_entry_cb)"
+"language": "c"
+"project": "minizip"
+"target_name": "standalone"
+"target_path": "/src/minizip-ng/test/fuzz/standalone.c"
diff --git a/benchmark-sets/headerfiles/ndpi.yaml b/benchmark-sets/headerfiles/ndpi.yaml
new file mode 100644
index 0000000000..8596186110
--- /dev/null
+++ b/benchmark-sets/headerfiles/ndpi.yaml
@@ -0,0 +1,60 @@
+"functions":
+- "exceptions": []
+ "name": "mbedtls_cipher_write_tag"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "tag"
+ "type": "bool "
+ - "name": "tag_len"
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "int mbedtls_cipher_write_tag(mbedtls_cipher_context_t *, unsigned char *, size_t)"
+- "exceptions": []
+ "name": "mbedtls_cipher_update_ad"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "ad"
+ "type": "bool "
+ - "name": "ad_len"
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "int mbedtls_cipher_update_ad(mbedtls_cipher_context_t *, const unsigned char *, size_t)"
+- "exceptions": []
+ "name": "mbedtls_cipher_check_tag"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "tag"
+ "type": "bool "
+ - "name": "tag_len"
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "int mbedtls_cipher_check_tag(mbedtls_cipher_context_t *, const unsigned char *, size_t)"
+- "exceptions": []
+ "name": "libinjection_sqli_get_token"
+ "params":
+ - "name": "sql_state"
+ "type": "bool "
+ - "name": "i"
+ "type": "int"
+ "return_type": "void"
+ "signature": "struct libinjection_sqli_token * libinjection_sqli_get_token(struct libinjection_sqli_state *, int)"
+- "exceptions": []
+ "name": "libinjection_sqli_lookup_word"
+ "params":
+ - "name": "sql_state"
+ "type": "bool "
+ - "name": "lookup_type"
+ "type": "int"
+ - "name": "str"
+ "type": "bool "
+ - "name": "len"
+ "type": "size_t"
+ "return_type": "char"
+ "signature": "char libinjection_sqli_lookup_word(struct libinjection_sqli_state *, int, const char *, size_t)"
+"language": "c"
+"project": "ndpi"
+"target_name": "fuzz_filecfg_risk_domains"
+"target_path": "/src/ndpi/fuzz/fuzz_filecfg_risk_domains.c"
diff --git a/benchmark-sets/headerfiles/njs.yaml b/benchmark-sets/headerfiles/njs.yaml
new file mode 100644
index 0000000000..781ced4f15
--- /dev/null
+++ b/benchmark-sets/headerfiles/njs.yaml
@@ -0,0 +1,60 @@
+"functions":
+- "exceptions": []
+ "name": "njs_buffer_new"
+ "params":
+ - "name": "vm"
+ "type": "bool "
+ - "name": "value"
+ "type": "bool "
+ - "name": "start"
+ "type": "bool "
+ - "name": "size"
+ "type": "int"
+ "return_type": "int"
+ "signature": "njs_int_t njs_buffer_new(njs_vm_t *, njs_value_t *, const u_char *, uint32_t)"
+- "exceptions": []
+ "name": "njs_vm_query_string_parse"
+ "params":
+ - "name": "vm"
+ "type": "bool "
+ - "name": "start"
+ "type": "bool "
+ - "name": "end"
+ "type": "bool "
+ - "name": "retval"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "njs_int_t njs_vm_query_string_parse(njs_vm_t *, u_char *, u_char *, njs_value_t *)"
+- "exceptions": []
+ "name": "njs_vm_value_string"
+ "params":
+ - "name": "vm"
+ "type": "bool "
+ - "name": "dst"
+ "type": "bool "
+ - "name": "src"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "njs_int_t njs_vm_value_string(njs_vm_t *, njs_str_t *, njs_value_t *)"
+- "exceptions": []
+ "name": "njs_vm_exception_string"
+ "params":
+ - "name": "vm"
+ "type": "bool "
+ - "name": "dst"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "njs_int_t njs_vm_exception_string(njs_vm_t *, njs_str_t *)"
+- "exceptions": []
+ "name": "njs_vm_clone"
+ "params":
+ - "name": "vm"
+ "type": "bool "
+ - "name": "external"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "njs_vm_t * njs_vm_clone(njs_vm_t *, njs_external_ptr_t)"
+"language": "c"
+"project": "njs"
+"target_name": "njs_process_script_fuzzer"
+"target_path": "/src/njs/external/njs_shell.c"
diff --git a/benchmark-sets/headerfiles/oniguruma.yaml b/benchmark-sets/headerfiles/oniguruma.yaml
new file mode 100644
index 0000000000..851f2d6f6b
--- /dev/null
+++ b/benchmark-sets/headerfiles/oniguruma.yaml
@@ -0,0 +1,35 @@
+"functions":
+- "exceptions": []
+ "name": "onig_set_meta_char"
+ "params":
+ - "name": "enc"
+ "type": "bool "
+ - "name": "what"
+ "type": "int"
+ - "name": "code"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int onig_set_meta_char(OnigSyntaxType *, unsigned int, OnigCodePoint)"
+- "exceptions": []
+ "name": "onig_scan"
+ "params":
+ - "name": "reg"
+ "type": "bool "
+ - "name": "str"
+ "type": "bool "
+ - "name": "end"
+ "type": "bool "
+ - "name": "region"
+ "type": "bool "
+ - "name": "option"
+ "type": "int"
+ - "name": "scan_callback"
+ "type": "bool "
+ - "name": "callback_arg"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int onig_scan(regex_t *, const OnigUChar *, const OnigUChar *, OnigRegion *, OnigOptionType, DW_TAG_subroutine_typeInfinite loop *, void *)"
+"language": "c"
+"project": "oniguruma"
+"target_name": "regset"
+"target_path": "/src/oniguruma/harnesses/regset.c"
diff --git a/benchmark-sets/headerfiles/openexr.yaml b/benchmark-sets/headerfiles/openexr.yaml
new file mode 100644
index 0000000000..618e1e2282
--- /dev/null
+++ b/benchmark-sets/headerfiles/openexr.yaml
@@ -0,0 +1,58 @@
+"functions":
+- "exceptions": []
+ "name": "_ZN7Imf_3_318DeepTiledInputFile8readTileEiii"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "int"
+ - "name": ""
+ "type": "int"
+ - "name": ""
+ "type": "int"
+ "return_type": "void"
+ "signature": "void Imf_3_3::DeepTiledInputFile::readTile(int, int, int)"
+- "exceptions": []
+ "name": "_ZN7Imf_3_314RgbaOutputFile11writePixelsEi"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "int"
+ "return_type": "void"
+ "signature": "void Imf_3_3::RgbaOutputFile::writePixels(int)"
+- "exceptions": []
+ "name": "_ZN7Imf_3_314RgbaOutputFile5ToYca11writePixelsEi"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "int"
+ "return_type": "void"
+ "signature": "void Imf_3_3::RgbaOutputFile::ToYca::writePixels(int)"
+- "exceptions": []
+ "name": "_ZN7Imf_3_318DeepTiledInputPart8readTileEiii"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "int"
+ - "name": ""
+ "type": "int"
+ - "name": ""
+ "type": "int"
+ "return_type": "void"
+ "signature": "void Imf_3_3::DeepTiledInputPart::readTile(int, int, int)"
+- "exceptions": []
+ "name": "_ZN7Imf_3_310OutputFile10initializeERKNS_6HeaderE"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void Imf_3_3::OutputFile::initialize(const Header &)"
+"language": "c++"
+"project": "openexr"
+"target_name": "openexr_exrcheck_fuzzer"
+"target_path": "/src/openexr/src/test/OpenEXRFuzzTest/oss-fuzz/openexr_exrcheck_fuzzer.cc"
diff --git a/benchmark-sets/headerfiles/opusfile.yaml b/benchmark-sets/headerfiles/opusfile.yaml
new file mode 100644
index 0000000000..88e3843aa8
--- /dev/null
+++ b/benchmark-sets/headerfiles/opusfile.yaml
@@ -0,0 +1,58 @@
+"functions":
+- "exceptions": []
+ "name": "op_read"
+ "params":
+ - "name": "_of"
+ "type": "bool "
+ - "name": "_pcm"
+ "type": "bool "
+ - "name": "_buf_size"
+ "type": "int"
+ - "name": "_li"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int op_read(OggOpusFile *, opus_int16 *, int, int *)"
+- "exceptions": []
+ "name": "op_test_open"
+ "params":
+ - "name": "_of"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int op_test_open(OggOpusFile *)"
+- "exceptions": []
+ "name": "op_read_float"
+ "params":
+ - "name": "_of"
+ "type": "bool "
+ - "name": "_pcm"
+ "type": "bool "
+ - "name": "_buf_size"
+ "type": "int"
+ - "name": "_li"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int op_read_float(OggOpusFile *, float *, int, int *)"
+- "exceptions": []
+ "name": "op_read_float_stereo"
+ "params":
+ - "name": "_of"
+ "type": "bool "
+ - "name": "_pcm"
+ "type": "bool "
+ - "name": "_buf_size"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int op_read_float_stereo(OggOpusFile *, float *, int)"
+- "exceptions": []
+ "name": "op_open_file"
+ "params":
+ - "name": "_path"
+ "type": "bool "
+ - "name": "_error"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "OggOpusFile * op_open_file(const char *, int *)"
+"language": "c"
+"project": "opusfile"
+"target_name": "opusfile_fuzzer"
+"target_path": "/src/opusfile_fuzzer.c"
diff --git a/benchmark-sets/headerfiles/picotls.yaml b/benchmark-sets/headerfiles/picotls.yaml
new file mode 100644
index 0000000000..75e9139a6c
--- /dev/null
+++ b/benchmark-sets/headerfiles/picotls.yaml
@@ -0,0 +1,88 @@
+"functions":
+- "exceptions": []
+ "name": "ptls_send"
+ "params":
+ - "name": "tls"
+ "type": "bool "
+ - "name": "sendbuf"
+ "type": "bool "
+ - "name": "input"
+ "type": "bool "
+ - "name": "inlen"
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "int ptls_send(ptls_t *, ptls_buffer_t *, const void *, size_t)"
+- "exceptions": []
+ "name": "ptls_server_handle_message"
+ "params":
+ - "name": "tls"
+ "type": "bool "
+ - "name": "sendbuf"
+ "type": "bool "
+ - "name": "epoch_offsets"
+ "type": "bool "
+ - "name": "in_epoch"
+ "type": "size_t"
+ - "name": "input"
+ "type": "bool "
+ - "name": "inlen"
+ "type": "size_t"
+ - "name": "properties"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int ptls_server_handle_message(ptls_t *, ptls_buffer_t *, size_t *, size_t, const void *, size_t, ptls_handshake_properties_t *)"
+- "exceptions": []
+ "name": "ptls_import"
+ "params":
+ - "name": "ctx"
+ "type": "bool "
+ - "name": "tls"
+ "type": "bool "
+ - "name": "params"
+ "type": "bool "
+ - "name": ""
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "int ptls_import(ptls_context_t *, ptls_t **, ptls_iovec_t)"
+- "exceptions": []
+ "name": "ptls_client_handle_message"
+ "params":
+ - "name": "tls"
+ "type": "bool "
+ - "name": "sendbuf"
+ "type": "bool "
+ - "name": "epoch_offsets"
+ "type": "bool "
+ - "name": "in_epoch"
+ "type": "size_t"
+ - "name": "input"
+ "type": "bool "
+ - "name": "inlen"
+ "type": "size_t"
+ - "name": "properties"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int ptls_client_handle_message(ptls_t *, ptls_buffer_t *, size_t *, size_t, const void *, size_t, ptls_handshake_properties_t *)"
+- "exceptions": []
+ "name": "ptls_handle_message"
+ "params":
+ - "name": "tls"
+ "type": "bool "
+ - "name": "sendbuf"
+ "type": "bool "
+ - "name": "epoch_offsets"
+ "type": "bool "
+ - "name": "in_epoch"
+ "type": "size_t"
+ - "name": "input"
+ "type": "bool "
+ - "name": "inlen"
+ "type": "size_t"
+ - "name": "properties"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int ptls_handle_message(ptls_t *, ptls_buffer_t *, size_t *, size_t, const void *, size_t, ptls_handshake_properties_t *)"
+"language": "c"
+"project": "picotls"
+"target_name": "fuzz-server-hello"
+"target_path": "/src/picotls/fuzz/fuzz-server-hello.c"
diff --git a/benchmark-sets/headerfiles/pjsip.yaml b/benchmark-sets/headerfiles/pjsip.yaml
new file mode 100644
index 0000000000..adcc8280c4
--- /dev/null
+++ b/benchmark-sets/headerfiles/pjsip.yaml
@@ -0,0 +1,78 @@
+"functions":
+- "exceptions": []
+ "name": "pjsip_endpt_send_request_stateless"
+ "params":
+ - "name": "endpt"
+ "type": "bool "
+ - "name": "tdata"
+ "type": "bool "
+ - "name": "token"
+ "type": "bool "
+ - "name": "cb"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "pj_status_t pjsip_endpt_send_request_stateless(pjsip_endpoint *, pjsip_tx_data *, void *, pjsip_send_callback)"
+- "exceptions": []
+ "name": "pjsip_endpt_send_raw_to_uri"
+ "params":
+ - "name": "endpt"
+ "type": "bool "
+ - "name": "p_dst_uri"
+ "type": "bool "
+ - "name": "sel"
+ "type": "bool "
+ - "name": "raw_data"
+ "type": "bool "
+ - "name": "data_len"
+ "type": "size_t"
+ - "name": "token"
+ "type": "bool "
+ - "name": "cb"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "pj_status_t pjsip_endpt_send_raw_to_uri(pjsip_endpoint *, const pj_str_t *, const pjsip_tpselector *, const void *, pj_size_t, void *, pjsip_tp_send_callback)"
+- "exceptions": []
+ "name": "pjsip_tsx_retransmit_no_state"
+ "params":
+ - "name": "tsx"
+ "type": "bool "
+ - "name": "tdata"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "pj_status_t pjsip_tsx_retransmit_no_state(pjsip_transaction *, pjsip_tx_data *)"
+- "exceptions": []
+ "name": "pjsip_endpt_respond_stateless"
+ "params":
+ - "name": "endpt"
+ "type": "bool "
+ - "name": "rdata"
+ "type": "bool "
+ - "name": "st_code"
+ "type": "int"
+ - "name": "st_text"
+ "type": "bool "
+ - "name": "hdr_list"
+ "type": "bool "
+ - "name": "body"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "pj_status_t pjsip_endpt_respond_stateless(pjsip_endpoint *, pjsip_rx_data *, int, const pj_str_t *, const pjsip_hdr *, const pjsip_msg_body *)"
+- "exceptions": []
+ "name": "pjmedia_endpt_create_sdp"
+ "params":
+ - "name": "endpt"
+ "type": "bool "
+ - "name": "pool"
+ "type": "bool "
+ - "name": "stream_cnt"
+ "type": "int"
+ - "name": "sock_info"
+ "type": "bool "
+ - "name": "p_sdp"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "pj_status_t pjmedia_endpt_create_sdp(pjmedia_endpt *, pj_pool_t *, unsigned int, const pjmedia_sock_info *, pjmedia_sdp_session **)"
+"language": "c"
+"project": "pjsip"
+"target_name": "fuzz-crypto"
+"target_path": "/src/pjsip/tests/fuzz/fuzz-crypto.c"
diff --git a/benchmark-sets/headerfiles/proftpd.yaml b/benchmark-sets/headerfiles/proftpd.yaml
new file mode 100644
index 0000000000..28a9ef2a1b
--- /dev/null
+++ b/benchmark-sets/headerfiles/proftpd.yaml
@@ -0,0 +1,68 @@
+"functions":
+- "exceptions": []
+ "name": "dir_check"
+ "params":
+ - "name": "pp"
+ "type": "bool "
+ - "name": "cmd"
+ "type": "bool "
+ - "name": "group"
+ "type": "bool "
+ - "name": "path"
+ "type": "bool "
+ - "name": "hidden"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int dir_check(pool *, cmd_rec *, const char *, const char *, int *)"
+- "exceptions": []
+ "name": "dir_check_canon"
+ "params":
+ - "name": "pp"
+ "type": "bool "
+ - "name": "cmd"
+ "type": "bool "
+ - "name": "group"
+ "type": "bool "
+ - "name": "path"
+ "type": "bool "
+ - "name": "hidden"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int dir_check_canon(pool *, cmd_rec *, const char *, const char *, int *)"
+- "exceptions": []
+ "name": "core_chmod"
+ "params":
+ - "name": "cmd"
+ "type": "bool "
+ - "name": "path"
+ "type": "bool "
+ - "name": "mode"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int core_chmod(cmd_rec *, const char *, mode_t)"
+- "exceptions": []
+ "name": "core_chgrp"
+ "params":
+ - "name": "cmd"
+ "type": "bool "
+ - "name": "path"
+ "type": "bool "
+ - "name": "uid"
+ "type": "int"
+ - "name": "gid"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int core_chgrp(cmd_rec *, const char *, uid_t, gid_t)"
+- "exceptions": []
+ "name": "pr_data_xfer"
+ "params":
+ - "name": "cl_buf"
+ "type": "bool "
+ - "name": "cl_size"
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "int pr_data_xfer(char *, size_t)"
+"language": "c"
+"project": "proftpd"
+"target_name": "json_fuzzer"
+"target_path": "/src/proftpd/tests/fuzzing/json_fuzzer.c"
diff --git a/benchmark-sets/headerfiles/pupnp.yaml b/benchmark-sets/headerfiles/pupnp.yaml
new file mode 100644
index 0000000000..9ac673b08d
--- /dev/null
+++ b/benchmark-sets/headerfiles/pupnp.yaml
@@ -0,0 +1,50 @@
+"functions":
+- "exceptions": []
+ "name": "ixmlParseBuffer"
+ "params":
+ - "name": "buffer"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "IXML_Document * ixmlParseBuffer(const char *)"
+- "exceptions": []
+ "name": "ixmlParseBufferEx"
+ "params":
+ - "name": "buffer"
+ "type": "bool "
+ - "name": "retDoc"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int ixmlParseBufferEx(const char *, IXML_Document **)"
+- "exceptions": []
+ "name": "ixmlNode_cloneNode"
+ "params":
+ - "name": "nodeptr"
+ "type": "bool "
+ - "name": "deep"
+ "type": "int"
+ "return_type": "void"
+ "signature": "IXML_Node * ixmlNode_cloneNode(IXML_Node *, int)"
+- "exceptions": []
+ "name": "ixmlLoadDocument"
+ "params":
+ - "name": "xmlFile"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "IXML_Document * ixmlLoadDocument(const char *)"
+- "exceptions": []
+ "name": "ixmlDocument_importNode"
+ "params":
+ - "name": "doc"
+ "type": "bool "
+ - "name": "importNode"
+ "type": "bool "
+ - "name": "deep"
+ "type": "int"
+ - "name": "rtNode"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int ixmlDocument_importNode(IXML_Document *, IXML_Node *, int, IXML_Node **)"
+"language": "c"
+"project": "pupnp"
+"target_name": "FuzzIxml"
+"target_path": "/src/pupnp/fuzzer/FuzzIxml.c"
diff --git a/benchmark-sets/headerfiles/sleuthkit.yaml b/benchmark-sets/headerfiles/sleuthkit.yaml
new file mode 100644
index 0000000000..1816b4ca6c
--- /dev/null
+++ b/benchmark-sets/headerfiles/sleuthkit.yaml
@@ -0,0 +1,68 @@
+"functions":
+- "exceptions": []
+ "name": "tsk_fs_open_vol"
+ "params":
+ - "name": "a_part_info"
+ "type": "bool "
+ - "name": "a_ftype"
+ "type": "int"
+ "return_type": "void"
+ "signature": "TSK_FS_INFO * tsk_fs_open_vol(const TSK_VS_PART_INFO *, TSK_FS_TYPE_ENUM)"
+- "exceptions": []
+ "name": "tsk_fs_open_vol_decrypt"
+ "params":
+ - "name": "a_part_info"
+ "type": "bool "
+ - "name": "a_ftype"
+ "type": "int"
+ - "name": "a_pass"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "TSK_FS_INFO * tsk_fs_open_vol_decrypt(const TSK_VS_PART_INFO *, TSK_FS_TYPE_ENUM, const char *)"
+- "exceptions": []
+ "name": "_ZNK12APFSFSCompat5istatE22TSK_FS_ISTAT_FLAG_ENUMP8_IO_FILEmmi"
+ "params":
+ - "name": "this"
+ "type": "bool "
+ - "name": "istat_flags"
+ "type": "int"
+ - "name": "hFile"
+ "type": "bool "
+ - "name": "inode_num"
+ "type": "size_t"
+ - "name": "numblock"
+ "type": "size_t"
+ - "name": "sec_skew"
+ "type": "int"
+ "return_type": "char"
+ "signature": "uint8_t APFSFSCompat::istat(TSK_FS_ISTAT_FLAG_ENUM, FILE *, TSK_INUM_T, TSK_DADDR_T, int32_t)"
+- "exceptions": []
+ "name": "ntfs_dir_open_meta"
+ "params":
+ - "name": "a_fs"
+ "type": "bool "
+ - "name": "a_fs_dir"
+ "type": "bool "
+ - "name": "a_addr"
+ "type": "size_t"
+ - "name": "recursion_depth"
+ "type": "int"
+ "return_type": "int"
+ "signature": "TSK_RETVAL_ENUM ntfs_dir_open_meta(TSK_FS_INFO *, TSK_FS_DIR **, TSK_INUM_T, int)"
+- "exceptions": []
+ "name": "ffs_dir_open_meta"
+ "params":
+ - "name": "a_fs"
+ "type": "bool "
+ - "name": "a_fs_dir"
+ "type": "bool "
+ - "name": "a_addr"
+ "type": "size_t"
+ - "name": "recursion_depth"
+ "type": "int"
+ "return_type": "int"
+ "signature": "TSK_RETVAL_ENUM ffs_dir_open_meta(TSK_FS_INFO *, TSK_FS_DIR **, TSK_INUM_T, int)"
+"language": "c++"
+"project": "sleuthkit"
+"target_name": "sleuthkit_mmls_sun_fuzzer"
+"target_path": "/src/sleuthkit_mmls_fuzzer.cc"
diff --git a/benchmark-sets/headerfiles/tidy-html5.yaml b/benchmark-sets/headerfiles/tidy-html5.yaml
new file mode 100644
index 0000000000..e1a334f087
--- /dev/null
+++ b/benchmark-sets/headerfiles/tidy-html5.yaml
@@ -0,0 +1,48 @@
+"functions":
+- "exceptions": []
+ "name": "tidySaveStdout"
+ "params":
+ - "name": "tdoc"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int tidySaveStdout(TidyDoc)"
+- "exceptions": []
+ "name": "tidySaveString"
+ "params":
+ - "name": "tdoc"
+ "type": "bool "
+ - "name": "buffer"
+ "type": "bool "
+ - "name": "buflen"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int tidySaveString(TidyDoc, tmbstr, uint *)"
+- "exceptions": []
+ "name": "tidyParseSource"
+ "params":
+ - "name": "tdoc"
+ "type": "bool "
+ - "name": "source"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int tidyParseSource(TidyDoc, TidyInputSource *)"
+- "exceptions": []
+ "name": "tidyParseStdin"
+ "params":
+ - "name": "tdoc"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int tidyParseStdin(TidyDoc)"
+- "exceptions": []
+ "name": "tidySaveFile"
+ "params":
+ - "name": "tdoc"
+ "type": "bool "
+ - "name": "filnam"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int tidySaveFile(TidyDoc, ctmbstr)"
+"language": "c"
+"project": "tidy-html5"
+"target_name": "tidy_fuzzer"
+"target_path": "/src/tidy_fuzzer.c"
diff --git a/benchmark-sets/headerfiles/unicorn.yaml b/benchmark-sets/headerfiles/unicorn.yaml
new file mode 100644
index 0000000000..e2d3b49226
--- /dev/null
+++ b/benchmark-sets/headerfiles/unicorn.yaml
@@ -0,0 +1,64 @@
+"functions":
+- "exceptions": []
+ "name": "decNumberLn"
+ "params":
+ - "name": "res"
+ "type": "bool "
+ - "name": "rhs"
+ "type": "bool "
+ - "name": "set"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "decNumber * decNumberLn(decNumber *, const decNumber *, decContext *)"
+- "exceptions": []
+ "name": "decNumberSquareRoot"
+ "params":
+ - "name": "res"
+ "type": "bool "
+ - "name": "rhs"
+ "type": "bool "
+ - "name": "set"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "decNumber * decNumberSquareRoot(decNumber *, const decNumber *, decContext *)"
+- "exceptions": []
+ "name": "ppc64_v3_handle_mmu_fault"
+ "params":
+ - "name": "cpu"
+ "type": "bool "
+ - "name": "eaddr"
+ "type": "size_t"
+ - "name": "rwx"
+ "type": "int"
+ - "name": "mmu_idx"
+ "type": "int"
+ "return_type": "int"
+ "signature": "int ppc64_v3_handle_mmu_fault(PowerPCCPU *, vaddr, int, int)"
+- "exceptions": []
+ "name": "decNumberLog10"
+ "params":
+ - "name": "res"
+ "type": "bool "
+ - "name": "rhs"
+ "type": "bool "
+ - "name": "set"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "decNumber * decNumberLog10(decNumber *, const decNumber *, decContext *)"
+- "exceptions": []
+ "name": "decNumberPower"
+ "params":
+ - "name": "res"
+ "type": "bool "
+ - "name": "lhs"
+ "type": "bool "
+ - "name": "rhs"
+ "type": "bool "
+ - "name": "set"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "decNumber * decNumberPower(decNumber *, const decNumber *, const decNumber *, decContext *)"
+"language": "c"
+"project": "unicorn"
+"target_name": "fuzz_emu_arm_armbe"
+"target_path": "/src/unicorn/tests/fuzz/fuzz_emu_arm_armbe.c"
diff --git a/benchmark-sets/headerfiles/unit.yaml b/benchmark-sets/headerfiles/unit.yaml
new file mode 100644
index 0000000000..dab31fe7c8
--- /dev/null
+++ b/benchmark-sets/headerfiles/unit.yaml
@@ -0,0 +1,52 @@
+"functions":
+- "exceptions": []
+ "name": "nxt_runtime_create"
+ "params":
+ - "name": "task"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "nxt_int_t nxt_runtime_create(nxt_task_t *)"
+- "exceptions": []
+ "name": "nxt_process_init_start"
+ "params":
+ - "name": "task"
+ "type": "bool "
+ - "name": "init"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "nxt_int_t nxt_process_init_start(nxt_task_t *, nxt_process_init_t)"
+- "exceptions": []
+ "name": "nxt_main_process_start"
+ "params":
+ - "name": "thr"
+ "type": "bool "
+ - "name": "task"
+ "type": "bool "
+ - "name": "rt"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "nxt_int_t nxt_main_process_start(nxt_thread_t *, nxt_task_t *, nxt_runtime_t *)"
+- "exceptions": []
+ "name": "nxt_process_start"
+ "params":
+ - "name": "task"
+ "type": "bool "
+ - "name": "process"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "nxt_int_t nxt_process_start(nxt_task_t *, nxt_process_t *)"
+- "exceptions": []
+ "name": "nxt_http_application_handler"
+ "params":
+ - "name": "task"
+ "type": "bool "
+ - "name": "r"
+ "type": "bool "
+ - "name": "action"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "nxt_http_action_t * nxt_http_application_handler(nxt_task_t *, nxt_http_request_t *, nxt_http_action_t *)"
+"language": "c"
+"project": "unit"
+"target_name": "fuzz_http_h1p_peer"
+"target_path": "/src/unit/fuzzing/nxt_http_h1p_peer_fuzz.c"
diff --git a/benchmark-sets/headerfiles/utf8proc.yaml b/benchmark-sets/headerfiles/utf8proc.yaml
new file mode 100644
index 0000000000..37f8b36d5b
--- /dev/null
+++ b/benchmark-sets/headerfiles/utf8proc.yaml
@@ -0,0 +1,27 @@
+"functions":
+- "exceptions": []
+ "name": "utf8proc_decompose"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "size_t"
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "size_t"
+ - "name": ""
+ "type": "int"
+ "return_type": "size_t"
+ "signature": "utf8proc_ssize_t utf8proc_decompose(const utf8proc_uint8_t *, utf8proc_ssize_t, utf8proc_int32_t *, utf8proc_ssize_t, utf8proc_option_t)"
+- "exceptions": []
+ "name": "utf8proc_errmsg"
+ "params":
+ - "name": ""
+ "type": "size_t"
+ "return_type": "void"
+ "signature": "const char * utf8proc_errmsg(utf8proc_ssize_t)"
+"language": "c"
+"project": "utf8proc"
+"target_name": "fuzz_main"
+"target_path": "/src/utf8proc/test/fuzz_main.c"
diff --git a/benchmark-sets/headerfiles/vlc.yaml b/benchmark-sets/headerfiles/vlc.yaml
new file mode 100644
index 0000000000..5dce746355
--- /dev/null
+++ b/benchmark-sets/headerfiles/vlc.yaml
@@ -0,0 +1,46 @@
+"functions":
+- "exceptions": []
+ "name": "ExecuteCommand"
+ "params":
+ - "name": "p_vlm"
+ "type": "bool "
+ - "name": "psz_command"
+ "type": "bool "
+ - "name": "pp_message"
+ "type": "bool "
+ "return_type": "int"
+ "signature": "int ExecuteCommand(vlm_t *, const char *, vlm_message_t **)"
+- "exceptions": []
+ "name": "Preparse"
+ "params":
+ - "name": "data"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void * Preparse(void *)"
+- "exceptions": []
+ "name": "libvlc_release"
+ "params":
+ - "name": "p_instance"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void libvlc_release(libvlc_instance_t *)"
+- "exceptions": []
+ "name": "vlm_New"
+ "params":
+ - "name": "libvlc"
+ "type": "bool "
+ - "name": "psz_vlmconf"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "vlm_t * vlm_New(libvlc_int_t *, const char *)"
+- "exceptions": []
+ "name": "libvlc_InternalCleanup"
+ "params":
+ - "name": "p_libvlc"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "void libvlc_InternalCleanup(libvlc_int_t *)"
+"language": "c"
+"project": "vlc"
+"target_name": "vlc-demux-libfuzzer"
+"target_path": "/src/vlc/test/vlc-demux-libfuzzer.c"
diff --git a/benchmark-sets/headerfiles/w3m.yaml b/benchmark-sets/headerfiles/w3m.yaml
new file mode 100644
index 0000000000..0c6290f499
--- /dev/null
+++ b/benchmark-sets/headerfiles/w3m.yaml
@@ -0,0 +1,46 @@
+"functions":
+- "exceptions": []
+ "name": "Stralign_left"
+ "params":
+ - "name": "s"
+ "type": "bool "
+ - "name": "width"
+ "type": "int"
+ "return_type": "void"
+ "signature": "Str Stralign_left(Str, int)"
+- "exceptions": []
+ "name": "Strnew_m_charp"
+ "params":
+ - "name": "p"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "Str Strnew_m_charp(const char *, void)"
+- "exceptions": []
+ "name": "Stralign_center"
+ "params":
+ - "name": "s"
+ "type": "bool "
+ - "name": "width"
+ "type": "int"
+ "return_type": "void"
+ "signature": "Str Stralign_center(Str, int)"
+- "exceptions": []
+ "name": "Sprintf"
+ "params":
+ - "name": "fmt"
+ "type": "bool "
+ "return_type": "void"
+ "signature": "Str Sprintf(char *, void)"
+- "exceptions": []
+ "name": "Stralign_right"
+ "params":
+ - "name": "s"
+ "type": "bool "
+ - "name": "width"
+ "type": "int"
+ "return_type": "void"
+ "signature": "Str Stralign_right(Str, int)"
+"language": "c"
+"project": "w3m"
+"target_name": "fuzz_conv"
+"target_path": "/src/w3m/fuzz/fuzz-conv.c"
diff --git a/benchmark-sets/headerfiles/wasm3.yaml b/benchmark-sets/headerfiles/wasm3.yaml
new file mode 100644
index 0000000000..9cc9c9dc8c
--- /dev/null
+++ b/benchmark-sets/headerfiles/wasm3.yaml
@@ -0,0 +1,19 @@
+"functions":
+- "exceptions": []
+ "name": "m3_GetFunctionName"
+ "params":
+ - "name": ""
+ "type": "bool "
+ "return_type": "void"
+ "signature": "const char * m3_GetFunctionName(IM3Function)"
+- "exceptions": []
+ "name": "m3_GetMemorySize"
+ "params":
+ - "name": ""
+ "type": "bool "
+ "return_type": "int"
+ "signature": "uint32_t m3_GetMemorySize(IM3Runtime)"
+"language": "c"
+"project": "wasm3"
+"target_name": "fuzzer"
+"target_path": "/src/wasm3/platforms/app_fuzz/fuzzer.c"
diff --git a/benchmark-sets/headerfiles/zydis.yaml b/benchmark-sets/headerfiles/zydis.yaml
new file mode 100644
index 0000000000..5c8edd30d3
--- /dev/null
+++ b/benchmark-sets/headerfiles/zydis.yaml
@@ -0,0 +1,54 @@
+"functions":
+- "exceptions": []
+ "name": "ZydisFormatterBufferRestore"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "ZyanStatus ZydisFormatterBufferRestore(ZydisFormatterBuffer *, ZyanUPointer)"
+- "exceptions": []
+ "name": "ZydisFormatterBasePrintPrefixes"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ "return_type": "int"
+ "signature": "ZyanStatus ZydisFormatterBasePrintPrefixes(const ZydisFormatter *, ZydisFormatterBuffer *, ZydisFormatterContext *)"
+- "exceptions": []
+ "name": "ZydisEncoderNopFill"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "size_t"
+ "return_type": "int"
+ "signature": "ZyanStatus ZydisEncoderNopFill(void *, ZyanUSize)"
+- "exceptions": []
+ "name": "ZydisFormatterSetHook"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "int"
+ - "name": ""
+ "type": "bool "
+ "return_type": "int"
+ "signature": "ZyanStatus ZydisFormatterSetHook(ZydisFormatter *, ZydisFormatterFunction, const void **)"
+- "exceptions": []
+ "name": "ZydisFormatterBufferGetString"
+ "params":
+ - "name": ""
+ "type": "bool "
+ - "name": ""
+ "type": "bool "
+ "return_type": "int"
+ "signature": "ZyanStatus ZydisFormatterBufferGetString(ZydisFormatterBuffer *, ZyanString **)"
+"language": "c"
+"project": "zydis"
+"target_name": "ZydisFuzzReEncoding"
+"target_path": "/src/zydis/tools/ZydisFuzzShared.c"
diff --git a/data_prep/introspector.py b/data_prep/introspector.py
index 8126e11994..92aed8ec8b 100755
--- a/data_prep/introspector.py
+++ b/data_prep/introspector.py
@@ -38,7 +38,9 @@
T = TypeVar('T', str, list, dict, int) # Generic type.
TIMEOUT = 45
-MAX_RETRY = 5
+# We intentionally set MAX_RETRY as 0 for just comparing the build success rate
+# for initial generated drivers/fuzz targets.
+MAX_RETRY = 0
USE_FI_TO_GET_TARGETS = bool(int(os.getenv('OSS_FI_TO_GET_TARGETS', '1')))
diff --git a/data_prep/project_context/context_introspector.py b/data_prep/project_context/context_introspector.py
index 90f2806426..29edf7c7a2 100644
--- a/data_prep/project_context/context_introspector.py
+++ b/data_prep/project_context/context_introspector.py
@@ -6,6 +6,10 @@
from difflib import SequenceMatcher
from typing import Any, Optional
+# import headerfiles.api as headerfiles
+# Eventually we will use headerfiles as an external library for Pypi installation.
+# Now we use headerfiles as a module and want to see the performance difference first.
+from headerfiles.headerfiles import api as headerfiles
from data_prep import introspector
from experiment import benchmark as benchmarklib
@@ -13,6 +17,7 @@
COMPLEX_TYPES = ['const', 'enum', 'struct', 'union', 'volatile']
+HEADERFILES = bool(os.getenv('LLM_HEADERFILES', ''))
class ContextRetriever:
"""Class to retrieve context from introspector for
@@ -56,7 +61,7 @@ def _get_source_line(self, item: dict) -> int:
def _get_source_file(self, item: dict) -> str:
return self._get_nested_item(item, 'source', 'source_file')
- def _get_files_to_include(self) -> list[str]:
+ def _infer_files_via_types(self) -> list[str]:
"""Retrieves files to include.
These files are found from the source files for complex types seen
in the function declaration."""
@@ -107,6 +112,19 @@ def _get_files_to_include(self) -> list[str]:
return list(files)
+ def _get_files_to_include(self) -> list[str]:
+ if HEADERFILES:
+ proj_header_files = headerfiles.get_proj_headers(self._benchmark.project)
+ else:
+ proj_header_files = []
+ type_based_files = self._infer_files_via_types()
+
+ header_files = proj_header_files
+ for file in type_based_files:
+ if file not in header_files:
+ header_files.append(file)
+ return header_files
+
def _clean_type(self, type_name: str) -> str:
"""Cleans a type so that it can be fetched from FI."""
if not type_name:
diff --git a/data_prep/project_src.py b/data_prep/project_src.py
index 4cce93dee3..3e1e3576c6 100755
--- a/data_prep/project_src.py
+++ b/data_prep/project_src.py
@@ -245,7 +245,6 @@ def _copy_project_src_from_local(project: str, out: str, language: str):
'docker',
'run',
'-d',
- '--rm',
'--shm-size=2g',
'--platform',
'linux/amd64',
@@ -286,7 +285,10 @@ def _copy_project_src_from_local(project: str, out: str, language: str):
logger.error('Failed to run OSS-Fuzz image of %s:', project)
logger.error('STDOUT: %s', result.stdout)
logger.error('STDERR: %s', result.stderr)
- raise Exception(f'Failed to run docker command: {" ".join(run_container)}')
+ # I silenced the following code to avoid the bug: "Docker: Error response from daemon: Conflict."
+ # Also, I deleted "-rm" in run_container to ensure that the container exists when copy_strc is executed.
+ # Otherwise, some projects like avahi can not be fully test.
+ #raise Exception(f'Failed to run docker command: {" ".join(run_container)}')
try:
copy_src = ['docker', 'cp', f'{project}-container:/src', out]
diff --git a/experiment/builder_runner.py b/experiment/builder_runner.py
index 5be1b842d2..3eebbcd11d 100644
--- a/experiment/builder_runner.py
+++ b/experiment/builder_runner.py
@@ -121,6 +121,8 @@ def __init__(self,
def _libfuzzer_args(self) -> list[str]:
return [
'-print_final_stats=1',
+ # We intentionally set it to 0 to speed up our testing for headerfiles.
+ '-runs=0',
f'-max_total_time={self.run_timeout}',
# Without this flag, libFuzzer only consider short inputs in short
# experiments, which lowers the coverage for quick performance tests.
diff --git a/experiment/evaluator.py b/experiment/evaluator.py
index dd0bc4ccb7..242fa0a835 100644
--- a/experiment/evaluator.py
+++ b/experiment/evaluator.py
@@ -24,6 +24,11 @@
from google.cloud import storage
+# import headerfiles.api as headerfiles
+# Eventually we will use headerfiles as an external library for Pypi installation.
+# Now we use headerfiles as a module and want to see the performance difference first.
+from headerfiles.headerfiles import api as headerfiles
+
from experiment import builder_runner, oss_fuzz_checkout, textcov
from experiment.benchmark import Benchmark
from experiment.builder_runner import BuildResult, RunResult
@@ -34,8 +39,9 @@
logger = logging.getLogger(__name__)
-LLM_FIX_LIMIT = int(os.getenv('LLM_FIX_LIMIT', '5'))
+LLM_FIX_LIMIT = int(os.getenv('LLM_FIX_LIMIT', '0'))
GENERATE_CORPUS = bool(os.getenv('LLM_GENERATE_CORPUS', ''))
+HEADERFILES = bool(os.getenv('LLM_HEADERFILES', ''))
OSS_FUZZ_COVERAGE_BUCKET = 'oss-fuzz-coverage'
OSS_FUZZ_INTROSPECTOR_BUCKET = 'oss-fuzz-introspector'
@@ -305,6 +311,26 @@ def triage_crash(
dual_logger.log(f'Warning: no crash info in {generated_oss_fuzz_project}.')
return TriageResult.NOT_APPLICABLE
+ def update_build_with_headerfiles_installation(self, generated_oss_fuzz_project):
+ """Updates the build script with header files installation & include logic"""
+ generated_project_path = os.path.join(oss_fuzz_checkout.OSS_FUZZ_DIR,
+ 'projects',
+ generated_oss_fuzz_project)
+ updated_build_script = headerfiles.get_build_script(self.benchmark.project, "/build_install_dir")
+ with open(os.path.join(generated_project_path, 'update_build_script.tmp'), 'w') as file:
+ file.write(updated_build_script)
+
+ # Generate the command to insert the updated script at the beginning of build.sh
+ docker_command = f"""
+ COPY update_build_script.tmp $SRC/update_build_script.tmp
+ RUN cat $SRC/update_build_script.tmp $SRC/build.sh > $SRC/build.sh.tmp && \
+ mv $SRC/build.sh.tmp $SRC/build.sh && \
+ rm $SRC/update_build_script.tmp
+ """
+
+ with open(os.path.join(generated_project_path, 'Dockerfile'), 'a') as file:
+ file.write(docker_command)
+
def extend_build_with_corpus(self, ai_binary, target_path,
generated_oss_fuzz_project):
"""Extends an OSS-Fuzz project with corpus generated programmatically."""
@@ -350,6 +376,9 @@ def check_target(self, ai_binary, target_path: str) -> Result:
# TODO: Log build failure.
# TODO: Log run success/failure.
+ if HEADERFILES:
+ self.update_build_with_headerfiles_installation(generated_oss_fuzz_project)
+
if GENERATE_CORPUS:
self.extend_build_with_corpus(ai_binary, target_path,
generated_oss_fuzz_project)
diff --git a/headerfiles/.gitignore b/headerfiles/.gitignore
new file mode 100644
index 0000000000..9e34841361
--- /dev/null
+++ b/headerfiles/.gitignore
@@ -0,0 +1,27 @@
+__pycache__
+*.pyc
+*.swp
+venv
+
+# egg-info
+*.egg-info/
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
diff --git a/headerfiles/DEV.md b/headerfiles/DEV.md
new file mode 100644
index 0000000000..9e84eec4dd
--- /dev/null
+++ b/headerfiles/DEV.md
@@ -0,0 +1,13 @@
+# Dev Usage
+
+```bash
+python3 -m venv venv
+source venv/bin/activate
+pip install -e .[dev]
+headerfiles-cli --help
+#...
+headerfiles-cli supp libpsl
+headerfiles-cli infer libpsl
+#...
+pip uninstall headerfiles -y
+```
diff --git a/headerfiles/LICENSE b/headerfiles/LICENSE
new file mode 100644
index 0000000000..7a4a3ea242
--- /dev/null
+++ b/headerfiles/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
\ No newline at end of file
diff --git a/headerfiles/MANIFEST.in b/headerfiles/MANIFEST.in
new file mode 100644
index 0000000000..57ea1dd152
--- /dev/null
+++ b/headerfiles/MANIFEST.in
@@ -0,0 +1,5 @@
+include README.md
+include LICENSE
+include setup.py
+graft headerfiles
+prune tests
\ No newline at end of file
diff --git a/headerfiles/README.md b/headerfiles/README.md
new file mode 100644
index 0000000000..8b7d6faebf
--- /dev/null
+++ b/headerfiles/README.md
@@ -0,0 +1,83 @@
+# headerfiles
+Header file inference tool for LLM-based fuzz driver generation to OSS-Fuzz projects. Currently, this project is for [OSS-Fuzz-Gen](https://github.com/google/oss-fuzz-gen) usage purpose and will be more general later.
+
+# API
+
+There are three APIs:
+
+```
+headerfiles.api
+
+- is_supported_proj
+ - Usage: Check if a projection is supported by the API.
+ - Return value: True if the projection is supported, False otherwise.
+
+- get_proj_headers
+ - Usage: Get the inferred headers for a specific project.
+ - Return value: A list of inferred headers for the project, their orders also matter.
+
+- get_build_script
+ - Usage: Get the build script for a specific project supported in OSS-FUZZ.
+ - Return value: The build script for the project.
+
+```
+
+# Support List (50 projects till now)
+
+- [x] avahi
+- [x] bind9
+- [x] bluez
+- [x] brotli
+- [x] capstone
+- [x] coturn
+- [x] croaring
+- [x] igraph
+- [x] kamailio
+- [x] krb5
+- [x] lcms
+- [x] libbpf
+- [x] libcoap
+- [x] libevent
+- [x] libfido2
+- [x] libical
+- [x] libjpeg-turbo
+- [x] libpcap
+- [x] librdkafka
+- [x] libsndfile
+- [x] libsodium
+- [x] libssh
+- [x] libssh2
+- [x] libtpms
+- [x] libusb
+- [x] libvnc
+- [x] libxls
+- [x] libyang
+- [x] lwan
+- [x] mbedtls
+- [x] mdbtools
+- [x] minizip
+- [x] ndpi
+- [x] njs
+- [x] oniguruma
+- [x] openexr
+- [x] opusfile
+- [x] picotls
+- [x] pjsip
+- [x] proftpd
+- [x] pupnp
+- [x] sleuthkit
+- [x] tidy-html5
+- [x] unicorn
+- [x] unit
+- [x] utf8proc
+- [x] vlc
+- [x] w3m
+- [x] wasm3
+- [x] zydis
+
+
+# Test
+
+```bash
+python3 -m tests.test_api
+```
diff --git a/headerfiles/__init__.py b/headerfiles/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/headerfiles/headerfiles/__init__.py b/headerfiles/headerfiles/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/headerfiles/headerfiles/api.py b/headerfiles/headerfiles/api.py
new file mode 100644
index 0000000000..f65e926cd2
--- /dev/null
+++ b/headerfiles/headerfiles/api.py
@@ -0,0 +1,84 @@
+import json
+from importlib import resources
+import os
+
+loaded = False
+headerjson = None
+
+def __load_headerfiles():
+ global loaded, headerjson
+ try:
+ #with resources.open_text('headerfiles.data', "headerfiles.json") as f:
+ # 获取当前脚本文件的目录
+ current_dir = os.path.dirname(os.path.abspath(__file__))
+
+ # 构造 data 目录下 headerfiles.json 文件的完整路径
+ file_path = os.path.join(current_dir, 'data', 'headerfiles.json')
+
+ # 打开并加载 JSON 文件
+ with open(file_path, 'r', encoding='utf-8') as f:
+ headerjson = json.load(f)
+
+ except FileNotFoundError:
+ print("ERROR: headerfiles.json not found")
+ headerjson = {}
+ loaded = True
+
+def is_supported_proj(proj: str) -> bool:
+ """
+ API function `is_supported_proj`
+ - Usage: Check if a projection is supported by the API.
+ - Return value: True if the projection is supported, False otherwise.
+ """
+ global loaded, headerjson
+ if not loaded:
+ __load_headerfiles()
+ return set(headerjson.keys())
+
+def get_proj_headers(proj: str) -> list[str]:
+ """
+ API function `get_proj_headers`
+ - Usage: Get the inferred headers for a specific project.
+ - Return value: A list of inferred headers for the project, their orders also matter.
+ """
+ global loaded, headerjson
+ if not loaded:
+ __load_headerfiles()
+ if proj not in headerjson:
+ return []
+ return headerjson[proj]["headers"]
+
+def get_build_script(proj: str, install_dir: str) -> str:
+ """
+ API function `get_build_script`
+ - Usage: Get the build script for a specific project supported in OSS-FUZZ.
+ - Return value: The build script for the project.
+ """
+ global loaded, headerjson
+ if not loaded:
+ __load_headerfiles()
+
+ script = [ "# Begin of build script from headerfiles" ]
+ script.append(f"export HEADERFILES_CUSTOM_INSTALL_DIR=\"{install_dir}\"")
+ if proj in headerjson:
+ script.append(f"mkdir -p {install_dir}/include")
+ script.append(f"mkdir -p {install_dir}/lib")
+
+ # Initialize variables to avoid "unbound variable" errors
+ script.append("export CFLAGS=\"${CFLAGS:-}\"")
+ script.append("export CXXFLAGS=\"${CXXFLAGS:-}\"")
+ script.append("export LDFLAGS=\"${LDFLAGS:-}\"")
+
+ # Append new flags to existing ones if they are already set
+ script.append(f"export CFLAGS=\"$CFLAGS -I{install_dir}/include\"")
+ script.append(f"export CXXFLAGS=\"$CXXFLAGS -I{install_dir}/include\"")
+ script.append(f"export LDFLAGS=\"$LDFLAGS -L{install_dir}/lib\"")
+
+ # script.append(f"export CFLAGS=\" -I{install_dir}/include\" ")
+ # script.append(f"export CXXFLAGS=\" -I{install_dir}/include\" ")
+ # script.append(f"export LDFLAGS=\" -I{install_dir}/lib\" ")
+
+ script.extend(headerjson[proj].get("build", []))
+ script.append("# End of build script from headerfiles")
+
+ return "\n".join(script) + "\n"
diff --git a/headerfiles/headerfiles/cli.py b/headerfiles/headerfiles/cli.py
new file mode 100644
index 0000000000..cdbdad6a1e
--- /dev/null
+++ b/headerfiles/headerfiles/cli.py
@@ -0,0 +1,28 @@
+import click
+import json
+
+from .api import is_supported_proj, get_proj_headers
+
+@click.group()
+def cli():
+ pass
+
+@click.command(name='is_supported_proj')
+@click.argument('proj')
+def command_is_supported_proj(proj: str):
+ """Command for is_supported_proj API"""
+ result = is_supported_proj(proj)
+ click.echo(f"{result}")
+
+@click.command(name='get_proj_headers')
+@click.argument('proj')
+def command_get_proj_headers(proj: str):
+ """Command for get_proj_headers API"""
+ result = get_proj_headers(proj)
+ click.echo(json.dumps(result, indent=2))
+
+cli.add_command(command_is_supported_proj, name='supp')
+cli.add_command(command_get_proj_headers, name='infer')
+
+if __name__ == "__main__":
+ cli()
diff --git a/headerfiles/headerfiles/data/headerfiles.json b/headerfiles/headerfiles/data/headerfiles.json
new file mode 100644
index 0000000000..ce59189109
--- /dev/null
+++ b/headerfiles/headerfiles/data/headerfiles.json
@@ -0,0 +1,1938 @@
+{
+ "avahi": {
+ "headers": [
+ "assert.h",
+ "sys/socket.h",
+ "avahi-common/address.h",
+ "avahi-common/error.h",
+ "avahi-common/simple-watch.h",
+ "avahi-core/core.h",
+ "avahi-core/publish.h",
+ "avahi-common/alternative.h",
+ "avahi-common/gccmacro.h",
+ "avahi-common/strlst.h",
+ "avahi-core/dns.h",
+ "avahi-core/rr.h",
+ "avahi-common/cdecl.h",
+ "avahi-common/llist.h",
+ "avahi-common/thread-watch.h",
+ "avahi-core/hashmap.h",
+ "avahi-common/defs.h",
+ "avahi-common/malloc.h",
+ "avahi-common/timeval.h",
+ "avahi-core/log.h",
+ "avahi-common/domain.h",
+ "avahi-common/rlist.h",
+ "avahi-common/watch.h",
+ "avahi-core/lookup.h"
+ ],
+ "build": [
+ "#!/bin/bash",
+ "",
+ "set -eux",
+ "",
+ "# Default flags for compilation",
+ "flags=\"-O1 -fno-omit-frame-pointer -g -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address,undefined\"",
+ "",
+ "export CC=${CC:-clang}",
+ "export CFLAGS=${CFLAGS:-$flags}",
+ "",
+ "export CXX=${CXX:-clang++}",
+ "export CXXFLAGS=${CXXFLAGS:-$flags}",
+ "",
+ "# Navigate to the Avahi project root directory",
+ "cd $SRC/avahi",
+ "",
+ "# Update package lists and install dependencies",
+ "apt-get update",
+ "apt-get install -y autoconf gettext libtool m4 automake pkg-config libexpat-dev",
+ "",
+ "# Additional dependencies for i386 architecture",
+ "if [[ \"$ARCHITECTURE\" == i386 ]]; then",
+ " apt-get install -y libexpat-dev:i386",
+ "fi",
+ "",
+ "# Additional undefined behavior sanitizer checks",
+ "if [[ \"$SANITIZER\" == undefined ]]; then",
+ " additional_ubsan_checks=pointer-overflow,alignment",
+ " UBSAN_FLAGS=\"-fsanitize=$additional_ubsan_checks -fno-sanitize-recover=$additional_ubsan_checks\"",
+ " CFLAGS=\"$CFLAGS $UBSAN_FLAGS\"",
+ " CXXFLAGS=\"$CXXFLAGS $UBSAN_FLAGS\"",
+ "fi",
+ "",
+ "# Disable consistency checks in pthread configuration",
+ "sed -i 's/check_inconsistencies=yes/check_inconsistencies=no/' common/acx_pthread.m4",
+ "",
+ "# Generate configuration scripts and configure the project",
+ "if ! ./autogen.sh \\",
+ " --disable-stack-protector --disable-qt3 --disable-qt4 --disable-qt5 --disable-gtk \\",
+ " --disable-gtk3 --disable-dbus --disable-gdbm --disable-libdaemon --disable-python \\",
+ " --disable-manpages --disable-mono --disable-monodoc --disable-glib --disable-gobject \\",
+ " --disable-libevent --disable-libsystemd \\",
+ " --prefix=\"$HEADERFILES_CUSTOM_INSTALL_DIR\"; then",
+ " cat config.log",
+ " exit 1",
+ "fi",
+ "",
+ "# Compile the project using all available processors",
+ "make V=1",
+ "",
+ "# Install the compiled project to the custom install directory",
+ "make install",
+ "",
+ "make clean",
+ "cd -",
+ "# The header files and libraries should now be installed in ${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "echo \"Avahi has been installed to ${HEADERFILES_CUSTOM_INSTALL_DIR}\""
+ ]
+ },
+ "bind9": {
+ "headers": [
+ "dns/acl.h",
+ "dns/adb.h",
+ "dns/badcache.h",
+ "dns/bit.h",
+ "dns/byaddr.h",
+ "dns/cache.h",
+ "dns/callbacks.h",
+ "dns/catz.h",
+ "dns/cert.h",
+ "dns/client.h",
+ "dns/clientinfo.h",
+ "dns/compress.h",
+ "dns/db.h",
+ "dns/dbiterator.h",
+ "dns/diff.h",
+ "dns/dispatch.h",
+ "dns/dlz.h",
+ "dns/dlz_dlopen.h",
+ "dns/dns64.h",
+ "dns/dnssec.h",
+ "dns/dnstap.h",
+ "dns/ds.h",
+ "dns/dsdigest.h",
+ "dns/dyndb.h",
+ "dns/ecs.h",
+ "dns/edns.h",
+ "dns/fixedname.h",
+ "dns/forward.h",
+ "dns/geoip.h",
+ "dns/ipkeylist.h",
+ "dns/iptable.h",
+ "dns/journal.h",
+ "dns/kasp.h",
+ "dns/keydata.h",
+ "dns/keyflags.h",
+ "dns/keymgr.h",
+ "dns/keystore.h",
+ "dns/keytable.h",
+ "dns/keyvalues.h",
+ "dns/master.h",
+ "dns/masterdump.h",
+ "dns/message.h",
+ "dns/name.h",
+ "dns/nametree.h",
+ "dns/ncache.h",
+ "dns/nsec.h",
+ "dns/nsec3.h",
+ "dns/nta.h",
+ "dns/opcode.h",
+ "dns/order.h",
+ "dns/peer.h",
+ "dns/private.h",
+ "dns/qp.h",
+ "dns/rbt.h",
+ "dns/rcode.h",
+ "dns/rdata.h",
+ "dns/rdataclass.h",
+ "dns/rdatalist.h",
+ "dns/rdataset.h",
+ "dns/rdatasetiter.h",
+ "dns/rdataslab.h",
+ "dns/rdatatype.h",
+ "dns/remote.h",
+ "dns/request.h",
+ "dns/resolver.h",
+ "dns/result.h",
+ "dns/rootns.h",
+ "dns/rpz.h",
+ "dns/rriterator.h",
+ "dns/rrl.h",
+ "dns/sdlz.h",
+ "dns/secalg.h",
+ "dns/secproto.h",
+ "dns/skr.h",
+ "dns/soa.h",
+ "dns/ssu.h",
+ "dns/stats.h",
+ "dns/time.h",
+ "dns/tkey.h",
+ "dns/trace.h",
+ "dns/transport.h",
+ "dns/tsig.h",
+ "dns/ttl.h",
+ "dns/types.h",
+ "dns/update.h",
+ "dns/validator.h",
+ "dns/view.h",
+ "dns/xfrin.h",
+ "dns/zone.h",
+ "dns/zonekey.h",
+ "dns/zoneverify.h",
+ "dns/zt.h",
+ "dst/dst.h",
+ "dst/gssapi.h",
+ "irs/resconf.h",
+ "isc/ascii.h",
+ "isc/assertions.h",
+ "isc/async.h",
+ "isc/atomic.h",
+ "isc/attributes.h",
+ "isc/backtrace.h",
+ "isc/barrier.h",
+ "isc/base32.h",
+ "isc/base64.h",
+ "isc/buffer.h",
+ "isc/commandline.h",
+ "isc/condition.h",
+ "isc/counter.h",
+ "isc/dir.h",
+ "isc/dnsstream.h",
+ "isc/endian.h",
+ "isc/entropy.h",
+ "isc/errno.h",
+ "isc/error.h",
+ "isc/file.h",
+ "isc/fips.h",
+ "isc/formatcheck.h",
+ "isc/fuzz.h",
+ "isc/getaddresses.h",
+ "isc/hash.h",
+ "isc/hashmap.h",
+ "isc/heap.h",
+ "isc/helper.h",
+ "isc/hex.h",
+ "isc/histo.h",
+ "isc/hmac.h",
+ "isc/ht.h",
+ "isc/httpd.h",
+ "isc/interfaceiter.h",
+ "isc/iterated_hash.h",
+ "isc/job.h",
+ "isc/lang.h",
+ "isc/lex.h",
+ "isc/list.h",
+ "isc/log.h",
+ "isc/loop.h",
+ "isc/magic.h",
+ "isc/managers.h",
+ "isc/md.h",
+ "isc/mem.h",
+ "isc/meminfo.h",
+ "isc/mutex.h",
+ "isc/mutexblock.h",
+ "isc/net.h",
+ "isc/netaddr.h",
+ "isc/netmgr.h",
+ "isc/netscope.h",
+ "isc/nonce.h",
+ "isc/once.h",
+ "isc/os.h",
+ "isc/overflow.h",
+ "isc/parseint.h",
+ "isc/pause.h",
+ "isc/portset.h",
+ "isc/proxy2.h",
+ "isc/queue.h",
+ "isc/quota.h",
+ "isc/radix.h",
+ "isc/random.h",
+ "isc/ratelimiter.h",
+ "isc/refcount.h",
+ "isc/regex.h",
+ "isc/region.h",
+ "isc/result.h",
+ "isc/rwlock.h",
+ "isc/safe.h",
+ "isc/serial.h",
+ "isc/signal.h",
+ "isc/siphash.h",
+ "isc/sockaddr.h",
+ "isc/spinlock.h",
+ "isc/stats.h",
+ "isc/stdio.h",
+ "isc/stdtime.h",
+ "isc/strerr.h",
+ "isc/string.h",
+ "isc/symtab.h",
+ "isc/syslog.h",
+ "isc/thread.h",
+ "isc/tid.h",
+ "isc/time.h",
+ "isc/timer.h",
+ "isc/tls.h",
+ "isc/tm.h",
+ "isc/types.h",
+ "isc/urcu.h",
+ "isc/url.h",
+ "isc/utf8.h",
+ "isc/util.h",
+ "isc/uv.h",
+ "isc/work.h",
+ "isc/xml.h"
+ ],
+ "build": [
+ "cd /src/bind9",
+ "autoreconf -fi",
+ "./configure --disable-shared --enable-static --enable-developer --without-cmocka --without-zlib --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} --enable-fuzzing=ossfuzz",
+ "make -C lib/isc",
+ "make -C lib/dns",
+ "make -C tests/libtest",
+ "make -C lib/isc install",
+ "make -C lib/dns install",
+ "make -C tests/libtest install",
+ "make -C lib/dns clean",
+ "make -C lib/isc clean",
+ "make -C tests/libtest clean",
+ "cd -"
+ ]
+ },
+ "bluez": {
+ "headers": [
+ "glib.h",
+ "bluetooth/bluetooth.h",
+ "bluetooth/bnep.h",
+ "bluetooth/cmtp.h",
+ "bluetooth/hci.h",
+ "bluetooth/hci_lib.h",
+ "bluetooth/hidp.h",
+ "bluetooth/l2cap.h",
+ "bluetooth/rfcomm.h",
+ "bluetooth/sco.h",
+ "bluetooth/sdp.h",
+ "bluetooth/sdp_lib.h",
+ "bluetooth/uuid.h",
+ "gobex/gobex-apparam.h",
+ "gobex/gobex-debug.h",
+ "gobex/gobex-defs.h",
+ "gobex/gobex-header.h",
+ "gobex/gobex-packet.h",
+ "gobex/gobex.h",
+ "src/adapter.h",
+ "src/adv_monitor.h",
+ "src/advertising.h",
+ "src/agent.h",
+ "src/backtrace.h",
+ "src/battery.h",
+ "src/btd.h",
+ "src/dbus-common.h",
+ "src/device.h",
+ "src/eir.h",
+ "src/error.h",
+ "src/gatt-client.h",
+ "src/gatt-database.h",
+ "src/log.h",
+ "src/oui.h",
+ "src/plugin.h",
+ "src/profile.h",
+ "src/sdp-client.h",
+ "src/sdp-xml.h",
+ "src/sdpd.h",
+ "src/service.h",
+ "src/set.h",
+ "src/settings.h",
+ "src/storage.h",
+ "src/textfile.h",
+ "src/uuid-helper.h"
+ ],
+ "build": [
+ "cd /src/bluez",
+ "autoreconf -fi",
+ "./configure --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} --enable-library",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "brotli": {
+ "headers": [
+ "brotli/decode.h",
+ "brotli/encode.h",
+ "brotli/port.h",
+ "brotli/shared_dictionary.h",
+ "brotli/types.h"
+ ],
+ "build": [
+ "cd /src/brotli",
+ "cmake . -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make -j$(nproc) brotlidec",
+ "make -j$(nproc) install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "capstone": {
+ "headers": [
+ "capstone/capstone.h"
+ ],
+ "build": [
+ "cd /src/capstonenext",
+ "mkdir build1",
+ "cd build1",
+ "cmake -DCAPSTONE_BUILD_SHARED=0 --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..",
+ "make -j$(nproc) install",
+ "make clean"
+ ]
+ },
+ "coturn": {
+ "headers": [
+ "stdio.h",
+ "string.h",
+ "stdlib.h",
+ "fcntl.h",
+ "apputils.h",
+ "ns_turn_utils.h",
+ "stun_buffer.h",
+ "ns_turn_server.h",
+ "ns_turn_msg_addr.h"
+ ],
+ "build": [
+ "mkdir -p /src/coturn/my_build",
+ "cd /src/coturn/my_build",
+ "cmake -DFUZZER=ON -DLIB_FUZZING_ENGINE=\"$LIB_FUZZING_ENGINE\" -DCMAKE_EXE_LINKER_FLAGS=\"-Wl,-rpath,'\\$ORIGIN/lib'\" -DWITH_MYSQL=OFF -Wno-dev --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ../.",
+ "make install",
+ "make clean",
+ "cd -",
+ "rm -rf /src/coturn/my_build",
+ "export CFLAGS=\"${CFLAGS} -I${HEADERFILES_CUSTOM_INSTALL_DIR}/include/turn -I${HEADERFILES_CUSTOM_INSTALL_DIR}/include/turn/client -I${HEADERFILES_CUSTOM_INSTALL_DIR}/include/turn/server \""
+ ]
+ },
+ "croaring": {
+ "headers": [
+ "stdarg.h",
+ "stddef.h",
+ "setjmp.h",
+ "assert.h"
+ ],
+ "build": [
+ "mkdir build-dir && cd build-dir",
+ "cmake -DENABLE_ROARING_TESTS=OFF --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..",
+ "make -j$(nproc)",
+ "make install",
+ "make clean",
+ "cd ..",
+ "rm -rf build-dir"
+ ]
+ },
+ "dovecot": {
+ "headers": [
+ "stdbool.h"
+ ],
+ "build": [
+ "./autogen.sh",
+ "./configure PANDOC=false --with-fuzzer=clang --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean"
+ ]
+ },
+ "igraph": {
+ "headers": [
+ "igraph/igraph.h"
+ ],
+ "build": [
+ "mkdir -p /src/igraph/build",
+ "cd /src/igraph/build",
+ "cmake .. -DIGRAPH_WARNINGS_AS_ERRORS=OFF -DCMAKE_BUILD_TYPE=None -DCMAKE_PREFIX_PATH=$DEPS_PATH -DFLEX_KEEP_LINE_NUMBERS=ON --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "inchi": {
+ "headers": [
+ "ichi.h",
+ "inchi_api.h",
+ "inchi_gui.h",
+ "inchicmp.h",
+ "ichi_bns.h",
+ "ichi_io.h",
+ "ichicano.h",
+ "ichicant.h",
+ "ichicomn.h",
+ "ichicomp.h",
+ "ichidrp.h",
+ "ichierr.h",
+ "ichimain.h",
+ "ichimake.h",
+ "ichinorm.h",
+ "ichiring.h",
+ "ichirvrs.h",
+ "ichisize.h",
+ "ichister.h",
+ "ichitaut.h",
+ "ichitime.h",
+ "ikey_base26.h",
+ "extr_ct.h",
+ "incomdef.h",
+ "inpdef.h",
+ "ixa.h",
+ "mode.h",
+ "mol_fmt.h",
+ "readinch.h",
+ "sha2.h",
+ "strutil.h",
+ "util.h",
+ "ixa_mol.h",
+ "ixa_status.h",
+ "inchi_dll.h",
+ "inchi_dll_a.h",
+ "inchi_dll_b.h",
+ "inchi_dll_main.h"
+ ],
+ "build": []
+ },
+ "kamailio": {
+ "headers": [
+ "hf.h",
+ "keys.h",
+ "msg_parser.h",
+ "parse_addr_spec.h",
+ "parse_allow.h",
+ "parse_body.h",
+ "parse_content.h",
+ "parse_cseq.h",
+ "parse_date.h",
+ "parse_def.h",
+ "parse_disposition.h",
+ "parse_diversion.h",
+ "parse_event.h",
+ "parse_expires.h",
+ "parse_fline.h",
+ "parse_from.h",
+ "parse_hname2.h",
+ "parse_identity.h",
+ "parse_identityinfo.h",
+ "parse_methods.h",
+ "parse_nameaddr.h",
+ "parse_option_tags.h",
+ "parse_param.h",
+ "parse_ppi_pai.h",
+ "parse_privacy.h",
+ "parse_refer_to.h",
+ "parse_require.h",
+ "parse_retry_after.h",
+ "parse_rpid.h",
+ "parse_rr.h",
+ "parse_sipifmatch.h",
+ "parse_subscription_state.h",
+ "parse_supported.h",
+ "parse_to.h",
+ "parse_uri.h",
+ "parse_via.h",
+ "parser_f.h"
+ ],
+ "build": []
+ },
+ "krb5": {
+ "headers": [
+ "com_err.h",
+ "kdb.h",
+ "krad.h",
+ "krb5.h",
+ "profile.h",
+ "verto-module.h",
+ "verto.h",
+ "gssapi.h",
+ "gssapi/gssapi.h",
+ "gssapi/gssapi_alloc.h",
+ "gssapi/gssapi_ext.h",
+ "gssapi/gssapi_generic.h",
+ "gssapi/gssapi_krb5.h",
+ "gssapi/mechglue.h",
+ "gssrpc/types.h",
+ "gssrpc/auth.h",
+ "gssrpc/auth_gss.h",
+ "gssrpc/auth_gssapi.h",
+ "gssrpc/auth_unix.h",
+ "gssrpc/clnt.h",
+ "gssrpc/netdb.h",
+ "gssrpc/pmap_clnt.h",
+ "gssrpc/pmap_prot.h",
+ "gssrpc/pmap_rmt.h",
+ "gssrpc/rename.h",
+ "gssrpc/rpc.h",
+ "gssrpc/rpc_msg.h",
+ "gssrpc/svc.h",
+ "gssrpc/svc_auth.h",
+ "gssrpc/xdr.h",
+ "kadm5/admin.h",
+ "kadm5/chpass_util_strings.h",
+ "kadm5/kadm_err.h",
+ "krb5/krb5.h",
+ "krb5/ccselect_plugin.h",
+ "krb5/certauth_plugin.h",
+ "krb5/clpreauth_plugin.h",
+ "krb5/hostrealm_plugin.h",
+ "krb5/kadm5_auth_plugin.h",
+ "krb5/kadm5_hook_plugin.h",
+ "krb5/kdcpolicy_plugin.h",
+ "krb5/kdcpreauth_plugin.h",
+ "krb5/localauth_plugin.h",
+ "krb5/locate_plugin.h",
+ "krb5/plugin.h",
+ "krb5/preauth_plugin.h",
+ "krb5/pwqual_plugin.h"
+ ],
+ "build": [
+ "pushd src/",
+ "autoreconf",
+ "./configure CFLAGS=\"-fcommon $CFLAGS\" CXXFLAGS=\"-fcommon $CXXFLAGS\" --enable-static --disable-shared --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make",
+ "make install",
+ "make clean",
+ "popd"
+ ]
+ },
+ "lcms": {
+ "headers": [
+ "lcms2.h"
+ ],
+ "build": [
+ "cd /src/lcms",
+ "./configure --enable-shared=no --enable-static --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libarchive": {
+ "headers": [
+ "assert.h",
+ "archive.h",
+ "archive_entry.h"
+ ],
+ "build": [
+ "cd $SRC/libarchive",
+ "mkdir build3",
+ "cd build3",
+ "cmake -DCHECK_CRC_ON_SOLID_SKIP=1 -DDONT_FAIL_ON_CRC_ERROR=1 --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ../",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libbpf": {
+ "headers": [
+ "errno.h",
+ "linux/types.h",
+ "stdbool.h",
+ "bpf/bpf.h",
+ "bpf/btf.h",
+ "bpf/libbpf.h",
+ "bpf/bpf_endian.h",
+ "bpf/libbpf_common.h",
+ "bpf/libbpf_legacy.h",
+ "bpf/libbpf_version.h",
+ "bpf/skel_internal.h"
+ ],
+ "build": [
+ "set -eux",
+ "export CFLAGS=\"${CFLAGS} -I${HEADERFILES_CUSTOM_INSTALL_DIR}/usr/include \"",
+ "export CXXFLAGS=\"${CXXFLAGS} -I${HEADERFILES_CUSTOM_INSTALL_DIR}/usr/include \"",
+ "export LDFLAGS=\"${LDFLAGS} -L${HEADERFILES_CUSTOM_INSTALL_DIR}/usr/lib64 -lbpf \"",
+ "SANITIZER=${SANITIZER:-address}",
+ "flags=\"-O1 -fno-omit-frame-pointer -g -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=$SANITIZER -fsanitize=fuzzer-no-link\"",
+ "export CC=${CC:-clang}",
+ "export CFLAGS=${CFLAGS:-$flags}",
+ "export CXX=${CXX:-clang++}",
+ "export CXXFLAGS=${CXXFLAGS:-$flags}",
+ "pushd $SRC/libbpf",
+ "export OUT=${OUT:-\"$(pwd)/out\"}",
+ "mkdir -p \"$OUT\"",
+ "export LIB_FUZZING_ENGINE=${LIB_FUZZING_ENGINE:--fsanitize=fuzzer}",
+ "# libelf is compiled with _FORTIFY_SOURCE by default and it",
+ "# isn't compatible with MSan. It was borrowed",
+ "# from https://github.com/google/oss-fuzz/pull/7422",
+ "if [[ \"$SANITIZER\" == memory ]]; then",
+ " CFLAGS+=\" -U_FORTIFY_SOURCE\"",
+ " CXXFLAGS+=\" -U_FORTIFY_SOURCE\"",
+ "fi",
+ "# The alignment check is turned off by default on OSS-Fuzz/CFLite so it should be",
+ "# turned on explicitly there. It was borrowed from",
+ "# https://github.com/google/oss-fuzz/pull/7092",
+ "if [[ \"$SANITIZER\" == undefined ]]; then",
+ " additional_ubsan_checks=alignment",
+ " UBSAN_FLAGS=\"-fsanitize=$additional_ubsan_checks -fno-sanitize-recover=$additional_ubsan_checks\"",
+ " CFLAGS+=\" $UBSAN_FLAGS\"",
+ " CXXFLAGS+=\" $UBSAN_FLAGS\"",
+ "fi",
+ "# Ideally libbelf should be built using release tarballs available",
+ "# at https://sourceware.org/elfutils/ftp/. Unfortunately sometimes they",
+ "# fail to compile (for example, elfutils-0.185 fails to compile with LDFLAGS enabled",
+ "# due to https://bugs.gentoo.org/794601) so let's just point the script to",
+ "# commits referring to versions of libelf that actually can be built",
+ "rm -rf elfutils",
+ "git clone https://sourceware.org/git/elfutils.git",
+ "(",
+ "cd elfutils",
+ "git checkout 67a187d4c1790058fc7fd218317851cb68bb087c",
+ "git log --oneline -1",
+ "# ASan isn't compatible with -Wl,--no-undefined: https://github.com/google/sanitizers/issues/380",
+ "sed -i 's/^\\(NO_UNDEFINED=\\).*/\\1/' configure.ac",
+ "# ASan isn't compatible with -Wl,-z,defs either:",
+ "# https://clang.llvm.org/docs/AddressSanitizer.html#usage",
+ "sed -i 's/^\\(ZDEFS_LDFLAGS=\\).*/\\1/' configure.ac",
+ "if [[ \"$SANITIZER\" == undefined ]]; then",
+ " # That's basicaly what --enable-sanitize-undefined does to turn off unaligned access",
+ " # elfutils heavily relies on on i386/x86_64 but without changing compiler flags along the way",
+ " sed -i 's/\\(check_undefined_val\\)=[0-9]/\\1=1/' configure.ac",
+ "fi",
+ "autoreconf -i -f",
+ "if ! ./configure --enable-maintainer-mode --disable-debuginfod --disable-libdebuginfod \\",
+ " --disable-demangler --without-bzlib --without-lzma --without-zstd \\",
+ " CC=\"$CC\" CFLAGS=\"-Wno-error $CFLAGS\" CXX=\"$CXX\" CXXFLAGS=\"-Wno-error $CXXFLAGS\" LDFLAGS=\"$CFLAGS\"; then",
+ " cat config.log",
+ " exit 1",
+ "fi",
+ "make -C config -j$(nproc) V=1",
+ "make -C lib -j$(nproc) V=1",
+ "make -C libelf -j$(nproc) V=1",
+ "make -C config -j$(nproc) V=1 install",
+ "make -C lib -j$(nproc) V=1 install",
+ "make -C libelf -j$(nproc) V=1 install",
+ ")",
+ "make -C src BUILD_STATIC_ONLY=y V=1 clean",
+ "make -C src -j$(nproc) CFLAGS=\"-I$(pwd)/elfutils/libelf $CFLAGS\" BUILD_STATIC_ONLY=y V=1 OBJDIR=/src/libbpf/jarvis-build DESTDIR=${HEADERFILES_CUSTOM_INSTALL_DIR} install",
+ "make -C src clean",
+ "(",
+ "cd elfutils",
+ "make -C config -j$(nproc) V=1 clean",
+ "make -C lib -j$(nproc) V=1 clean",
+ "make -C libelf -j$(nproc) V=1 clean",
+ ")",
+ "popd"
+ ]
+ },
+ "libcbor": {
+ "headers": [
+ "cbor.h"
+ ],
+ "build": [
+ "mkdir -p /src/libcbor/nbuild",
+ "cd /src/libcbor/nbuild",
+ "cmake -D CMAKE_BUILD_TYPE=Debug -D CMAKE_INSTALL_PREFIX=${HEADERFILES_CUSTOM_INSTALL_DIR} -D SANITIZE=OFF ..",
+ "make ",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libcoap": {
+ "headers": [
+ "coap3/coap.h"
+ ],
+ "build": [
+ "export LDFLAGS=\"${LDFLAGS} -lpthread \"",
+ "pushd /src/libcoap",
+ "./autogen.sh",
+ "./configure --disable-doxygen --disable-manpages --disable-dtls --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean",
+ "popd"
+ ]
+ },
+ "libdwarf": {
+ "headers": [
+ "fcntl.h"
+ ],
+ "build": [
+ "mkdir -p /src/libdwarf/build",
+ "cd /src/libdwarf/build",
+ "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..",
+ "make install",
+ "make clean",
+ "cd -",
+ "rm -rf /src/libdwarf/build"
+ ]
+ },
+ "libevent": {
+ "headers": [
+ "event.h",
+ "evdns.h",
+ "event2/dns.h",
+ "evhttp.h",
+ "evrpc.h",
+ "evutil.h",
+ "event2/buffer.h",
+ "event2/dns_compat.h",
+ "event2/http.h",
+ "event2/rpc_compat.h",
+ "event2/visibility.h",
+ "event2/buffer_compat.h",
+ "event2/dns_struct.h",
+ "event2/http_compat.h",
+ "event2/rpc_struct.h",
+ "event2/watch.h",
+ "event2/bufferevent.h",
+ "event2/event-config.h",
+ "event2/http_struct.h",
+ "event2/tag.h",
+ "event2/ws.h",
+ "event2/bufferevent_compat.h",
+ "event2/event.h",
+ "event2/keyvalq_struct.h",
+ "event2/tag_compat.h",
+ "event2/bufferevent_struct.h",
+ "event2/event_compat.h",
+ "event2/listener.h",
+ "event2/thread.h",
+ "event2/event_struct.h",
+ "event2/rpc.h",
+ "event2/util.h"
+ ],
+ "build": [
+ "mkdir -p /src/libevent/build1",
+ "cd /src/libevent/build1",
+ "cmake -DEVENT__DISABLE_MBEDTLS=ON \\",
+ " -DEVENT__DISABLE_OPENSSL=ON \\",
+ " -DEVENT__LIBRARY_TYPE=STATIC \\",
+ " -DEVENT__DISABLE_TESTS=ON \\",
+ " -DEVENT__DISABLE_SAMPLES=ON \\",
+ " --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ../",
+ "make",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libexif": {
+ "headers": [
+ "assert.h",
+ "libexif/exif-data-type.h",
+ "libexif/exif-format.h",
+ "libexif/exif-log.h",
+ "libexif/exif-tag.h",
+ "libexif/exif-byte-order.h",
+ "libexif/exif-data.h",
+ "libexif/exif-ifd.h",
+ "libexif/exif-mem.h",
+ "libexif/exif-utils.h",
+ "libexif/exif-content.h",
+ "libexif/exif-entry.h",
+ "libexif/exif-loader.h",
+ "libexif/exif-mnote-data.h"
+ ],
+ "build": []
+ },
+ "libfido2": {
+ "headers": [
+ "cbor.h",
+ "zconf.h",
+ "zlib.h",
+ "fido.h"
+ ],
+ "build": []
+ },
+ "libfuse": {
+ "headers": [
+ "fuse.h",
+ "fuse_lowlevel.h",
+ "fuse_i.h",
+ "fuse_misc.h",
+ "fuse_kernel.h",
+ "mount_util.h",
+ "fuse_mount_compat.h",
+ "cuse_lowlevel.h"
+ ],
+ "build": []
+ },
+ "libgd": {
+ "headers": [
+ "gd.h",
+ "gd_color_map.h",
+ "gd_errors.h",
+ "gd_io.h",
+ "gdcache.h",
+ "gdfontg.h",
+ "gdfontl.h",
+ "gdfontmb.h",
+ "gdfonts.h",
+ "gdfontt.h",
+ "gdfx.h",
+ "gdpp.h"
+ ],
+ "build": []
+ },
+ "libical": {
+ "headers": [
+ "libical/ical.h",
+ "libical/icalarray.h",
+ "libical/icalattach.h",
+ "libical/icalcalendar.h",
+ "libical/icalclassify.h",
+ "libical/icalcluster.h",
+ "libical/icalcomponent.h",
+ "libical/icalderivedparameter.h",
+ "libical/icalderivedproperty.h",
+ "libical/icalderivedvalue.h",
+ "libical/icaldirset.h",
+ "libical/icaldirsetimpl.h",
+ "libical/icalduration.h",
+ "libical/icalenums.h",
+ "libical/icalerror.h",
+ "libical/icalfileset.h",
+ "libical/icalfilesetimpl.h",
+ "libical/icalgauge.h",
+ "libical/icalgaugeimpl.h",
+ "libical/icallangbind.h",
+ "libical/icalmemory.h",
+ "libical/icalmessage.h",
+ "libical/icalmime.h",
+ "libical/icalparameter.h",
+ "libical/icalparser.h",
+ "libical/icalperiod.h",
+ "libical/icalproperty.h",
+ "libical/icalrecur.h",
+ "libical/icalrestriction.h",
+ "libical/icalset.h",
+ "libical/icalspanlist.h",
+ "libical/icalss.h",
+ "libical/icalssyacc.h",
+ "libical/icaltime.h",
+ "libical/icaltimezone.h",
+ "libical/icaltypes.h",
+ "libical/icaltz-util.h",
+ "libical/icalvcal.h",
+ "libical/libical_ical_export.h",
+ "libical/libical_icalss_export.h",
+ "libical/libical_vcal_export.h",
+ "libical/pvl.h",
+ "libical/sspm.h",
+ "libical/vcaltmp.h",
+ "libical/vcc.h",
+ "libical/vobject.h"
+ ],
+ "build": [
+ "cmake . -DSTATIC_ONLY=ON -DICAL_GLIB=False --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean",
+ "cmake . -DSTATIC_ONLY=ON -DICAL_GLIB=False --install-prefix=/usr/local",
+ "make install",
+ "make clean"
+ ]
+ },
+ "libjpeg-turbo": {
+ "headers": [
+
+ ],
+ "build": [
+ "# build.sh have already done `make install`"
+ ]
+ },
+ "libpcap": {
+ "headers": [
+ "pcap-bpf.h",
+ "pcap-namedb.h",
+ "pcap.h"
+ ],
+ "build": [
+ "mkdir -p /src/libpcap/build1",
+ "cd /src/libpcap/build1",
+ "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "librdkafka": {
+ "headers": [
+ "rdkafka.h",
+ "regexp.h"
+ ],
+ "build": [
+ "mkdir -p /src/librdkafka/build1",
+ "cd /src/librdkafka/build1",
+ "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} -DRDKAFKA_BUILD_STATIC=ON -DRDKAFKA_BUILD_EXAMPLES=OFF -DHAVE_REGEX=OFF ../",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libredwg": {
+ "headers": [
+ "dwg.h",
+ "dwg_api.h"
+ ],
+ "build": [
+ "cd $SRC/libredwg",
+ "sh autogen.sh",
+ "./configure --disable-shared --disable-bindings --enable-release --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libressl": {
+ "headers": [
+ "tls.h",
+ "openssl/aes.h",
+ "openssl/conf.h",
+ "openssl/engine.h",
+ "openssl/objects.h",
+ "openssl/rc4.h",
+ "openssl/tls1.h",
+ "openssl/asn1.h",
+ "openssl/conf_api.h",
+ "openssl/err.h",
+ "openssl/ocsp.h",
+ "openssl/ripemd.h",
+ "openssl/ts.h",
+ "openssl/asn1t.h",
+ "openssl/crypto.h",
+ "openssl/evp.h",
+ "openssl/opensslconf.h",
+ "openssl/rsa.h",
+ "openssl/txt_db.h",
+ "openssl/bio.h",
+ "openssl/ct.h",
+ "openssl/gost.h",
+ "openssl/opensslfeatures.h",
+ "openssl/safestack.h",
+ "openssl/ui.h",
+ "openssl/blowfish.h",
+ "openssl/curve25519.h",
+ "openssl/hkdf.h",
+ "openssl/opensslv.h",
+ "openssl/sha.h",
+ "openssl/ui_compat.h",
+ "openssl/bn.h",
+ "openssl/des.h",
+ "openssl/hmac.h",
+ "openssl/ossl_typ.h",
+ "openssl/sm3.h",
+ "openssl/whrlpool.h",
+ "openssl/buffer.h",
+ "openssl/dh.h",
+ "openssl/idea.h",
+ "openssl/pem.h",
+ "openssl/sm4.h",
+ "openssl/x509.h",
+ "openssl/camellia.h",
+ "openssl/dsa.h",
+ "openssl/kdf.h",
+ "openssl/pem2.h",
+ "openssl/srtp.h",
+ "openssl/x509_verify.h",
+ "openssl/cast.h",
+ "openssl/dso.h",
+ "openssl/lhash.h",
+ "openssl/pkcs12.h",
+ "openssl/ssl.h",
+ "openssl/x509_vfy.h",
+ "openssl/chacha.h",
+ "openssl/dtls1.h",
+ "openssl/md4.h",
+ "openssl/pkcs7.h",
+ "openssl/ssl2.h",
+ "openssl/x509v3.h",
+ "openssl/cmac.h",
+ "openssl/ec.h",
+ "openssl/md5.h",
+ "openssl/poly1305.h",
+ "openssl/ssl23.h",
+ "openssl/cms.h",
+ "openssl/ecdh.h",
+ "openssl/modes.h",
+ "openssl/rand.h",
+ "openssl/ssl3.h",
+ "openssl/comp.h",
+ "openssl/ecdsa.h",
+ "openssl/obj_mac.h",
+ "openssl/rc2.h",
+ "openssl/stack.h"
+ ],
+ "build": [
+ "cd /src/libressl",
+ "cmake -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX \\",
+ " -DCMAKE_C_FLAGS=\"$CFLAGS\" -DCMAKE_CXX_FLAGS=\"$CXXFLAGS\" \\",
+ " $CMAKE_DEFINES --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} $SRC/libressl/",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libsndfile": {
+ "headers": [
+ "sndfile.h"
+ ],
+ "build": [
+ "apt-get update",
+ "apt-get -y install autoconf autogen automake libtool pkg-config python",
+ "cd $SRC/libsndfile",
+ "autoreconf -vif",
+ "./configure --disable-shared --enable-ossfuzzers --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make V=1 install",
+ "make distclean",
+ "cd -"
+ ]
+ },
+ "libsodium": {
+ "headers": [
+ "sodium.h"
+ ],
+ "build": [
+ "cd /src/libsodium",
+ "./configure --enable-static LDFLAGS=\"$LDFLAGS $CXXFLAGS\" --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libsrtp": {
+ "headers": [
+ "srtp2/crypto_types.h",
+ "srtp2/auth.h",
+ "srtp2/cipher.h",
+ "srtp2/srtp.h"
+ ],
+ "build": [
+ "cd /src/libsrtp",
+ "autoreconf -ivf",
+ "./configure --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libssh": {
+ "headers": [
+ "libssh/ssh2.h",
+ "libssh/libssh.h",
+ "libssh/server.h",
+ "libssh/sftp.h",
+ "libssh/callbacks.h"
+ ],
+ "build": [
+ "export LDFLAGS=\"${LDFLAGS} -lpthread \"",
+ "mkdir -p /tmp/build",
+ "cd /tmp/build",
+ "cmake -DCMAKE_C_COMPILER=\"$CC\" -DCMAKE_CXX_COMPILER=\"$CXX\" \\",
+ " -DCMAKE_C_FLAGS=\"$CFLAGS\" -DCMAKE_CXX_FLAGS=\"$CXXFLAGS\" \\",
+ " -DBUILD_SHARED_LIBS=OFF -DWITH_INSECURE_NONE=ON\\",
+ " --install-prefix ${HEADERFILES_CUSTOM_INSTALL_DIR} $SRC/libssh",
+ "make",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libssh2": {
+ "headers": [
+ "libssh2.h",
+ "libssh2_publickey.h",
+ "libssh2_sftp.h"
+ ],
+ "build": [
+ "apt-get update",
+ "apt-get -y install automake libtool libssl-dev zlib1g-dev",
+ "autoreconf -fi",
+ "./configure --disable-shared --enable-ossfuzzers --disable-examples-build --enable-debug --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make",
+ "make install",
+ "make clean"
+ ]
+ },
+ "libtasn1": {
+ "headers": [
+ "libtasn1.h"
+ ],
+ "build": []
+ },
+ "libtpms": {
+ "headers": [
+ "libtpms/tpm_error.h",
+ "libtpms/tpm_library.h",
+ "libtpms/tpm_memory.h",
+ "libtpms/tpm_nvfilename.h",
+ "libtpms/tpm_tis.h",
+ "libtpms/tpm_types.h"
+ ],
+ "build": [
+ "cd /src/libtpms",
+ "autoreconf -vfi",
+ "./configure --disable-shared --enable-static --with-openssl --with-tpm2 --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make distclean",
+ "cd -"
+ ]
+ },
+ "libusb": {
+ "headers": [
+ "assert.h",
+ "libusb/libusb.h"
+ ],
+ "build": [
+ "cd /src/libusb",
+ "./autogen.sh",
+ "./configure --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libvips": {
+ "headers": [
+ "vips/vips.h"
+ ],
+ "build": []
+ },
+ "libvnc": {
+ "headers": [
+ "rfb/rfb.h",
+ "rfb/rfbclient.h",
+ "rfb/rfbregion.h",
+ "sys/types.h",
+ "base64.h",
+ "crypto.h",
+ "d3des.h",
+ "lzoconf.h",
+ "lzodefs.h",
+ "minilzo.h",
+ "sha-private.h",
+ "sha.h",
+ "sockets.h",
+ "turbojpeg.h"
+ ],
+ "build": []
+ },
+ "libwebsockets": {
+ "headers": [
+ "lws_config.h",
+ "libwebsockets.h"
+ ],
+ "build": [
+ "mkdir -p /tmp/mybuild",
+ "cd /tmp/mybuild",
+ "cmake -DCMAKE_C_FLAGS=\"$CFLAGS\" -DCMAKE_CXX_FLAGS=\"$CXXFLAGS\" \\",
+ " -DCMAKE_EXE_LINKER_FLAGS=\"$CFLAGS\" -DCMAKE_SHARED_LINKER_FLAGS=\"$CFLAGS\" --install-prefix ${HEADERFILES_CUSTOM_INSTALL_DIR} ..",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "libxls": {
+ "headers": [
+ "locale.h",
+ "xls.h"
+ ],
+ "build": [
+ "if [ -f ./autogen.sh ]; then",
+ "./autogen.sh",
+ "else",
+ "./bootstrap",
+ "fi",
+ "./configure --enable-static --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean"
+ ]
+ },
+ "libyang": {
+ "headers": [
+ "libyang/libyang.h",
+ "libyang/hash_table.h",
+ "libyang/plugins_types.h",
+ "libyang/version.h"
+ ],
+ "build": [
+ "pushd libyang",
+ "git checkout devel",
+ "mkdir -p build1",
+ "cd build1",
+ "cmake -DENABLE_STATIC=ON --install-prefix ${HEADERFILES_CUSTOM_INSTALL_DIR} ../",
+ "make install",
+ "make clean",
+ "popd"
+ ]
+ },
+ "lua": {
+ "headers": [
+ "lapi.h",
+ "lauxlib.h",
+ "lcode.h",
+ "lctype.h",
+ "ldebug.h",
+ "ldo.h",
+ "lfunc.h",
+ "lgc.h",
+ "llex.h",
+ "llimits.h",
+ "lmem.h",
+ "lobject.h",
+ "lopcodes.h",
+ "lopnames.h",
+ "lparser.h",
+ "lprefix.h",
+ "lstate.h",
+ "lstring.h",
+ "ltable.h",
+ "ltests.h",
+ "ltm.h",
+ "lua.h",
+ "luaconf.h",
+ "lualib.h",
+ "lundump.h",
+ "lvm.h",
+ "lzio.h"
+ ],
+ "build": []
+ },
+ "lwan": {
+ "headers": [
+ "lwan/lwan.h",
+ "lwan/lwan-build-config.h",
+ "lwan/lwan-mod-lua.h",
+ "lwan/lwan-mod-redirect.h",
+ "lwan/lwan-mod-response.h",
+ "lwan/lwan-mod-rewrite.h",
+ "lwan/lwan-mod-serve-files.h",
+ "lwan/lwan-template.h"
+ ],
+ "build": [
+ "mkdir -p /tmp/build",
+ "cd /tmp/build",
+ "cmake -GNinja --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} $SRC/lwan",
+ "ninja -v liblwan.a",
+ "ninja -v install",
+ "cd -"
+ ]
+ },
+ "mbedtls": {
+ "headers": [
+ "mbedtls/aes.h",
+ "mbedtls/aria.h",
+ "mbedtls/asn1.h",
+ "mbedtls/asn1write.h",
+ "mbedtls/base64.h",
+ "mbedtls/block_cipher.h",
+ "mbedtls/camellia.h",
+ "mbedtls/ccm.h",
+ "mbedtls/chacha20.h",
+ "mbedtls/chachapoly.h",
+ "mbedtls/check_config.h",
+ "mbedtls/cipher.h",
+ "mbedtls/cmac.h",
+ "mbedtls/compat-2.x.h",
+ "mbedtls/config_adjust_legacy_crypto.h",
+ "mbedtls/config_adjust_legacy_from_psa.h",
+ "mbedtls/config_adjust_psa_from_legacy.h",
+ "mbedtls/config_adjust_psa_superset_legacy.h",
+ "mbedtls/config_adjust_ssl.h",
+ "mbedtls/config_adjust_x509.h",
+ "mbedtls/config_psa.h",
+ "mbedtls/constant_time.h",
+ "mbedtls/ctr_drbg.h",
+ "mbedtls/debug.h",
+ "mbedtls/des.h",
+ "mbedtls/dhm.h",
+ "mbedtls/ecdh.h",
+ "mbedtls/ecdsa.h",
+ "mbedtls/ecjpake.h",
+ "mbedtls/ecp.h",
+ "mbedtls/entropy.h",
+ "mbedtls/error.h",
+ "mbedtls/gcm.h",
+ "mbedtls/hkdf.h",
+ "mbedtls/hmac_drbg.h",
+ "mbedtls/lms.h",
+ "mbedtls/mbedtls_config.h",
+ "mbedtls/md.h",
+ "mbedtls/md5.h",
+ "mbedtls/memory_buffer_alloc.h",
+ "mbedtls/net_sockets.h",
+ "mbedtls/nist_kw.h",
+ "mbedtls/oid.h",
+ "mbedtls/pem.h",
+ "mbedtls/pk.h",
+ "mbedtls/pkcs12.h",
+ "mbedtls/pkcs5.h",
+ "mbedtls/pkcs7.h",
+ "mbedtls/platform.h",
+ "mbedtls/platform_time.h",
+ "mbedtls/poly1305.h",
+ "mbedtls/psa_util.h",
+ "mbedtls/ripemd160.h",
+ "mbedtls/rsa.h",
+ "mbedtls/sha1.h",
+ "mbedtls/sha256.h",
+ "mbedtls/sha3.h",
+ "mbedtls/sha512.h",
+ "mbedtls/ssl.h",
+ "mbedtls/ssl_cache.h",
+ "mbedtls/ssl_ciphersuites.h",
+ "mbedtls/ssl_cookie.h",
+ "mbedtls/ssl_ticket.h",
+ "mbedtls/threading.h",
+ "mbedtls/timing.h",
+ "mbedtls/version.h",
+ "mbedtls/x509.h",
+ "mbedtls/x509_crl.h",
+ "mbedtls/x509_crt.h",
+ "mbedtls/x509_csr.h",
+ "psa/build_info.h",
+ "psa/crypto.h",
+ "psa/crypto_adjust_auto_enabled.h",
+ "psa/crypto_adjust_config_dependencies.h",
+ "psa/crypto_adjust_config_key_pair_types.h",
+ "psa/crypto_adjust_config_synonyms.h",
+ "psa/crypto_builtin_composites.h",
+ "psa/crypto_builtin_key_derivation.h",
+ "psa/crypto_builtin_primitives.h",
+ "psa/crypto_compat.h",
+ "psa/crypto_config.h",
+ "psa/crypto_driver_common.h",
+ "psa/crypto_driver_contexts_composites.h",
+ "psa/crypto_driver_contexts_key_derivation.h",
+ "psa/crypto_driver_contexts_primitives.h",
+ "psa/crypto_extra.h",
+ "psa/crypto_legacy.h",
+ "psa/crypto_platform.h",
+ "psa/crypto_se_driver.h",
+ "psa/crypto_sizes.h",
+ "psa/crypto_struct.h",
+ "psa/crypto_types.h",
+ "psa/crypto_values.h"
+ ],
+ "build": [
+ "mkdir -p /src/mbedtls/build1",
+ "cd /src/mbedtls/build1",
+ "cmake -DENABLE_TESTING=OFF --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "mdbtools": {
+ "headers": [
+ "mdbfakeglib.h",
+ "mdbtools.h"
+ ],
+ "build": [
+ "cd /src/mdbtools",
+ "autoreconf -f -i",
+ "./configure --enable-static --disable-man --disable-glib --disable-silent-rules --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "minizip": {
+ "headers": [
+ "mz.h",
+ "mz_crypt.h",
+ "mz_strm.h",
+ "mz_strm_mem.h",
+ "mz_strm_pkcrypt.h",
+ "mz_strm_wzaes.h",
+ "mz_zip.h",
+ "mz_zip_rw.h",
+ "zip.h",
+ "mz_compat.h",
+ "mz_os.h",
+ "mz_strm_buf.h",
+ "mz_strm_os.h",
+ "mz_strm_split.h",
+ "unzip.h"
+ ],
+ "build": [
+ "cd /src/minizip-ng",
+ "cmake . -DCMAKE_C_FLAGS=\"$CFLAGS\" -DCMAKE_CXX_FLAGS=\"$CXXFLAGS\" -DMZ_BUILD_FUZZ_TESTS=ON --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} -DCMAKE_VERBOSE_MAKEFILE=ON",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "ndpi": {
+ "headers": [
+ "ndpi_api.h",
+ "ndpi_classify.h",
+ "ndpi_encryption.h",
+ "ndpi_patricia_typedefs.h",
+ "ndpi_replace_printf.h",
+ "ndpi_unix.h"
+ ],
+ "build": [
+ "# build libpcap",
+ "tar -xvzf libpcap-1.9.1.tar.gz",
+ "cd libpcap-1.9.1",
+ "./configure --disable-shared",
+ "make -j$(nproc)",
+ "make install",
+ "make clean",
+ "cd ..",
+ "# build project",
+ "cd ndpi",
+ "RANLIB=llvm-ranlib LDFLAGS=\"-L/usr/local/lib -lpcap\" ./autogen.sh --enable-fuzztargets --with-only-libndpi --enable-tls-sigs --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make -j$(nproc)",
+ "make install",
+ "make clean",
+ "cd .."
+ ]
+ },
+ "netcdf": {
+ "headers": [
+ "netcdf.h",
+ "netcdf_aux.h",
+ "netcdf_dispatch.h",
+ "netcdf_filter.h",
+ "netcdf_mem.h",
+ "netcdf_meta.h"
+ ],
+ "build": [
+ "mkdir -p /src/netcdf-c/build1",
+ "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} -DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_SHARED_LIBS=OFF -DENABLE_HDF5=OFF -DENABLE_DAP=OFF ..",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "njs": {
+ "headers": [
+ "njs_main.h",
+ "qjs.h",
+ "njs_value.h"
+ ],
+ "build": []
+ },
+ "oniguruma": {
+ "headers": [
+ "oniguruma.h",
+ "oniggnu.h"
+ ],
+ "build": [
+ "cd /src/oniguruma",
+ "./autogen.sh",
+ "./configure --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "openexr": {
+ "headers": [
+ "openexr.h"
+ ],
+ "build": [
+ "mkdir -p /tmp/build",
+ "cd /tmp/build",
+ "CMAKE_SETTINGS=(",
+ " \"-D BUILD_SHARED_LIBS=OFF\" # Build static libraries only",
+ " \"-D BUILD_TESTING=OFF\" # Or tests",
+ " \"-D OPENEXR_INSTALL_EXAMPLES=OFF\" # Or examples",
+ " \"-D OPENEXR_LIB_SUFFIX=\" # Don't append the version number to library files",
+ ")",
+ "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} $SRC/openexr ${CMAKE_SETTINGS[@]}",
+ "make -j$(nproc)",
+ "make install",
+ "make clean",
+ "cd -",
+ "export CFLAGS=\"$CFLAGS -I /build_install_dir/include/Imath -I /build_install_dir/include/OpenEXR \"",
+ "export CXXFLAGS=\"$CXXFLAGS -I /build_install_dir/include/Imath -I /build_install_dir/include/OpenEXR \""
+ ]
+ },
+ "opusfile": {
+ "headers": [
+ "fcntl.h",
+ "opus/opusfile.h"
+ ],
+ "build": [
+ "./autogen.sh",
+ "./configure --enable-static --disable-shared --disable-doc --enable-assertions --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make",
+ "make install",
+ "ldconfig",
+ "make clean"
+ ]
+ },
+ "ostree": {
+ "headers": [
+ "fcntl.h",
+ "stdbool.h",
+ "ostree.h"
+ ],
+ "build": [
+ "# Build glib with sanitizer support",
+ "cd glib",
+ "mkdir build",
+ "cd build",
+ "meson --prefix=/usr --buildtype=release -Db_lundef=false -Ddefault_library=static -Dlibmount=disabled",
+ "ninja",
+ "ninja install",
+ "cd ..",
+ "rm -rf build",
+ "# Build libostree",
+ "cd $SRC/ostree",
+ "env NOCONFIGURE=1 ./autogen.sh",
+ "./configure --enable-static --without-selinux --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make V=1 install",
+ "make clean",
+ "cd /src"
+ ]
+ },
+ "picotls": {
+ "headers": [
+ "picotls.h",
+ "picotls/asn1.h",
+ "picotls/ffx.h",
+ "picotls/minicrypto.h",
+ "picotls/pembase64.h",
+ "picotls/certificate_compression.h",
+ "picotls/fusion.h",
+ "picotls/openssl.h",
+ "picotls/ptlsbcrypt.h"
+ ],
+ "build": [
+ "export LDFLAGS=\"${LDFLAGS} -lpthread \"",
+ "pushd $SRC/picotls",
+ "cmake --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} -DBUILD_FUZZER=ON -DOSS_FUZZ=ON .",
+ "make",
+ "make clean",
+ "popd"
+ ]
+ },
+ "pidgin": {
+ "headers": [
+ "purple.h"
+ ],
+ "build": [
+ "# Place to keep dependencies for static linking",
+ "DEPS=/deps",
+ "mkdir -p ${DEPS}",
+ "# Build libffi",
+ "cd $SRC",
+ "tar xvfz libffi-3.2.1.tar.gz",
+ "cd libffi-3.2.1",
+ "./configure --disable-shared",
+ "make -j$(nproc)",
+ "export LIBFFI_LIBS=\"-L/src/libffi-3.2.1 libraries/ -lffi\"",
+ "cp ./x86_64-unknown-linux-gnu/.libs/libffi.a ${DEPS}/",
+ "# Build libxml2",
+ "cd $SRC/libxml2",
+ "./autogen.sh \\",
+ " --disable-shared \\",
+ " --without-debug \\",
+ " --without-ftp \\",
+ " --without-http \\",
+ " --without-legacy \\",
+ " --without-python",
+ "make -j$(nproc)",
+ "make install",
+ "cp .libs/libxml2.a ${DEPS}/",
+ "# Build glib",
+ "cd $SRC/glib",
+ "GLIB_BUILD=$WORK/meson",
+ "rm -rf $GLIB_BUILD",
+ "mkdir $GLIB_BUILD",
+ "meson $GLIB_BUILD \\",
+ " -Db_lundef=false \\",
+ " -Ddefault_library=static \\",
+ " -Dlibmount=disabled",
+ "ninja -C $GLIB_BUILD",
+ "ninja -C $GLIB_BUILD install",
+ "cp ${GLIB_BUILD}/gobject/libgobject-2.0.a ${DEPS}/",
+ "cp ${GLIB_BUILD}/gmodule/libgmodule-2.0.a ${DEPS}/",
+ "cp ${GLIB_BUILD}/glib/libglib-2.0.a ${DEPS}/",
+ "# Build Pidgin",
+ "cd $SRC",
+ "tar -xf pidgin-2.14.10.tar.bz2",
+ "mv pidgin-2.14.10 pidgin",
+ "cd pidgin",
+ "./configure --disable-consoleui \\",
+ " --disable-shared \\",
+ " --disable-screensaver \\",
+ " --disable-sm \\",
+ " --disable-gtkspell \\",
+ " --disable-gevolution \\",
+ " --enable-gnutls=no \\",
+ " --disable-gstreamer \\",
+ " --disable-vv \\",
+ " --disable-idn \\",
+ " --disable-meanwhile \\",
+ " --disable-avahi \\",
+ " --disable-dbus \\",
+ " --disable-perl \\",
+ " --disable-tcl \\",
+ " --disable-cyrus-sasl \\",
+ " --disable-gtkui \\",
+ " --enable-nss=no --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make -j$(nproc) install",
+ "make clean",
+ "cd /src"
+ ]
+ },
+ "pjsip": {
+ "headers": [
+ "pjlib-util.h",
+ "pjlib.h",
+ "pjmedia-codec.h",
+ "pjmedia.h",
+ "pjmedia_audiodev.h",
+ "pjmedia_videodev.h",
+ "pjnath.h",
+ "pjsip.h",
+ "pjsip_simple.h",
+ "pjsip_ua.h",
+ "pjsua.h"
+ ],
+ "build": [
+ "./configure \\",
+ " --disable-ffmpeg --disable-ssl \\",
+ " --disable-speex-aec --disable-speex-codec \\",
+ " --disable-g7221-codec --disable-gsm-codec --disable-ilbc-codec \\",
+ " --disable-resample --disable-libsrtp --disable-libwebrtc --disable-libyuv --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make dep",
+ "make --ignore-errors",
+ "make install",
+ "make clean"
+ ]
+ },
+ "proftpd": {
+ "headers": [
+ "bindings.h",
+ "class.h",
+ "conf.h",
+ "configdb.h",
+ "ctrls.h",
+ "dirtree.h",
+ "error.h",
+ "expr.h",
+ "fsio.h",
+ "inet.h",
+ "jot.h",
+ "json.h",
+ "memcache.h",
+ "mod_ctrls.h",
+ "netaddr.h",
+ "openbsd-blowfish.h",
+ "os.h",
+ "pr-syslog.h",
+ "proftpd.h",
+ "redis.h",
+ "sets.h",
+ "signals.h",
+ "table.h",
+ "version.h"
+ ],
+ "build": [
+ "cd /src/proftpd",
+ "export LDFLAGS=\"${CFLAGS} \"",
+ "./configure --enable-ctrls --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "pupnp": {
+ "headers": [
+ "list.h",
+ "ixml.h",
+ "ixmldebug.h"
+ ],
+ "build": [
+ "mkdir -p tmp/build",
+ "cd tmp/build",
+ "cmake -DFUZZER=ON -DLIB_FUZZING_ENGINE=\"$LIB_FUZZING_ENGINE\" --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ../../",
+ "make -j$(nproc)",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "sleuthkit": {
+ "headers": [
+ "tsk/libtsk.h",
+ "tsk/tsk_incs.h",
+ "tsk/pool/tsk_apfs.h",
+ "tsk/util/detect_encryption.h",
+ "tsk/util/file_system_utils.h",
+ "tsk/vs/tsk_dos.h",
+ "tsk/vs/tsk_mac.h",
+ "tsk/vs/tsk_gpt.h",
+ "tsk/vs/tsk_bsd.h",
+ "tsk/vs/tsk_sun.h",
+ "tsk/img/logical_img.h",
+ "tsk/base/tsk_os.h",
+ "tsk/fs/tsk_exfatfs.h",
+ "tsk/fs/tsk_yaffs.h",
+ "tsk/fs/tsk_fatxxfs.h",
+ "tsk/fs/tsk_logical_fs.h",
+ "tsk/fs/tsk_apfs.h",
+ "tsk/fs/tsk_ffs.h",
+ "tsk/fs/tsk_fs.h",
+ "tsk/fs/tsk_ntfs.h",
+ "tsk/fs/apfs_fs.h",
+ "tsk/fs/tsk_fatfs.h",
+ "tsk/fs/decmpfs.h",
+ "tsk/fs/tsk_ext2fs.h",
+ "tsk/fs/tsk_hfs.h",
+ "tsk/fs/tsk_iso9660.h"
+ ],
+ "build": [
+ "export CFLAGS=\"$CFLAGS -Wno-error=non-c-typedef-for-linkage\"",
+ "export CXXFLAGS=\"$CXXFLAGS -Wno-error=non-c-typedef-for-linkage\"",
+ "# Disable error on all warnings",
+ "sed -i 's/-Werror//g' ./tsk/util/Makefile.am",
+ "sed -i 's/-Werror//g' ./tsk/pool/Makefile.am",
+ "./bootstrap",
+ "./configure --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} --enable-static --disable-shared --disable-java --without-afflib --without-libewf --without-libvhdi --without-libvmdk",
+ "make install",
+ "make clean"
+ ]
+ },
+ "tidy-html5": {
+ "headers": [
+ "tidybuffio.h",
+ "stdio.h",
+ "stdlib.h",
+ "string.h",
+ "stdint.h"
+ ],
+ "build": [
+ "mkdir -p /src/tidy-html5/build1",
+ "cd /src/tidy-html5/build1",
+ "cmake -GNinja -DCMAKE_INSTALL_PREFIX=${HEADERFILES_CUSTOM_INSTALL_DIR} ${SRC}/tidy-html5/",
+ "ninja",
+ "ninja install",
+ "cd -"
+ ]
+ },
+ "unicorn": {
+ "headers": [
+ "uc_priv.h"
+ ],
+ "build": [
+ "mkdir -p /src/unicorn/build1",
+ "cd /src/unicorn/build1",
+ "cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=off --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make install",
+ "make clean",
+ "rm -rf /out/*",
+ "find /src/unicorn/build1 -type f ! -name '*.a' -delete",
+ "cd -",
+ "rm -rf /src/unicorn/build1"
+ ]
+ },
+ "unit": {
+ "headers": [
+ "nxt_main.h",
+ "nxt_conf.h"
+ ],
+ "build": []
+ },
+ "utf8proc": {
+ "headers": [
+ "utf8proc.h"
+ ],
+ "build": [
+ "mkdir -p /src/utf8proc/build1",
+ "cd /src/utf8proc/build1",
+ "cmake .. -DUTF8PROC_ENABLE_TESTING=ON -DLIB_FUZZING_ENGINE=\"$LIB_FUZZING_ENGINE\" --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "V=1 make install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "vlc": {
+ "headers": [
+ "vlc/vlc.h"
+ ],
+ "build": [
+ "cd /src/vlc",
+ "# Use OSS-Fuzz environment rather than hardcoded setup.",
+ "sed -i 's/-fsanitize-coverage=trace-pc-guard//g' ./configure.ac",
+ "sed -i 's/-fsanitize-coverage=trace-cmp//g' ./configure.ac",
+ "sed -i 's/-fsanitize-coverage=trace-pc//g' ./configure.ac",
+ "sed -i 's/-lFuzzer//g' ./configure.ac",
+ "# In order to build statically we avoid libxml and ogg plugins.",
+ "sed -i 's/..\\/..\\/lib\\/libvlc_internal.h/lib\\/libvlc_internal.h/g' ./test/src/input/decoder.c",
+ "sed -i 's/..\\/modules\\/libxml_plugin.la//g' ./test/Makefile.am",
+ "sed -i 's/..\\/modules\\/libogg_plugin.la//g' ./test/Makefile.am",
+ "sed -i 's/f(misc_xml_xml)//g' ./test/src/input/demux-run.c",
+ "sed -i 's/f(demux_ogg)//g' ./test/src/input/demux-run.c",
+ "# Ensure that we compile with the correct link flags.",
+ "RULE=vlc_demux_libfuzzer_LDADD",
+ "FUZZ_LDFLAGS=\"vlc_demux_libfuzzer_LDFLAGS=\\${LIB_FUZZING_ENGINE}\"",
+ "sed -i \"s/${RULE}/${FUZZ_LDFLAGS}\\n${RULE}/g\" ./test/Makefile.am",
+ "RULE=vlc_demux_dec_libfuzzer_LDADD",
+ "FUZZ_LDFLAGS=\"vlc_demux_dec_libfuzzer_LDFLAGS=\\${LIB_FUZZING_ENGINE}\"",
+ "sed -i \"s/${RULE}/${FUZZ_LDFLAGS}\\n${RULE}/g\" ./test/Makefile.am",
+ "./bootstrap",
+ "./configure --disable-ogg --disable-oggspots --disable-libxml2 --disable-lua \\",
+ " --disable-shared \\",
+ " --enable-static \\",
+ " --enable-vlc=no \\",
+ " --disable-avcodec \\",
+ " --disable-swscale \\",
+ " --disable-a52 \\",
+ " --disable-xcb \\",
+ " --disable-alsa \\",
+ " --with-libfuzzer --prefix=${HEADERFILES_CUSTOM_INSTALL_DIR}",
+ "make -j$(nproc) install",
+ "make clean",
+ "cd -"
+ ]
+ },
+ "w3m": {
+ "headers": [
+ "stdlib.h",
+ "stdint.h",
+ "string.h",
+ "stddef.h"
+ ],
+ "build": []
+ },
+ "wasm3": {
+ "headers": [
+ "wasm3.h",
+ "m3_api_libc.h"
+ ],
+ "build": []
+ },
+ "zydis": {
+ "headers": [
+ "Zydis/Decoder.h",
+ "Zydis/DecoderTypes.h",
+ "Zydis/Defines.h",
+ "Zydis/Disassembler.h",
+ "Zydis/Encoder.h",
+ "Zydis/Formatter.h",
+ "Zydis/FormatterBuffer.h",
+ "Zydis/MetaInfo.h",
+ "Zydis/Mnemonic.h",
+ "Zydis/Register.h",
+ "Zydis/Segment.h",
+ "Zydis/SharedTypes.h",
+ "Zydis/ShortString.h",
+ "Zydis/Status.h",
+ "Zydis/Utils.h",
+ "Zydis/Zydis.h"
+ ],
+ "build": [
+ "mkdir -p /src/zydis/build1",
+ "cd /src/zydis/build1",
+ "cmake \\",
+ " -DZYAN_FORCE_ASSERTS=ON \\",
+ " -DZYDIS_BUILD_EXAMPLES=OFF \\",
+ " -DZYDIS_BUILD_TOOLS=OFF \\",
+ " -DCMAKE_BUILD_TYPE=RelWithDebInfo \\",
+ " \"-DCMAKE_C_COMPILER=${CC}\" \\",
+ " \"-DCMAKE_CXX_COMPILER=${CXX}\" \\",
+ " \"-DCMAKE_C_FLAGS=${CFLAGS}\" \\",
+ " \"-DCMAKE_CXX_FLAGS=${CXXFLAGS}\" \\",
+ " --install-prefix=${HEADERFILES_CUSTOM_INSTALL_DIR} ..",
+ "make install",
+ "make clean",
+ "cd -"
+ ]
+ }
+}
diff --git a/headerfiles/headerfiles/data/headerfiles.json.bk b/headerfiles/headerfiles/data/headerfiles.json.bk
new file mode 100644
index 0000000000..5754a5269a
--- /dev/null
+++ b/headerfiles/headerfiles/data/headerfiles.json.bk
@@ -0,0 +1,246 @@
+{
+ "libfdk-aac": [
+ "aacdecoder_lib.h",
+ "aacenc_lib.h",
+ "ac_arith_coder.h",
+ "FDK_drcDecLib.h",
+ "tpdec_lib.h",
+ "tpenc_lib.h",
+ "pcm_utils.h",
+ "pcmdmx_lib.h",
+ "limiter.h",
+ "sac_dec_lib.h",
+ "sacenc_lib.h",
+ "sbrdecoder.h",
+ "sbr_encoder.h",
+ "FDK_audio.h",
+
+ "FDK_lpc.h",
+ "fft_rad2.h",
+ "FDK_matrixCalloc.h",
+ "qmf.h",
+ "FDK_tools_rom.h",
+ "dct.h",
+ "huff_nodes.h",
+ "FDK_bitstream.h",
+ "FDK_bitbuffer.h",
+ "mdct.h",
+ "FDK_core.h",
+ "FDK_qmf_domain.h",
+ "FDK_decorrelate.h",
+ "FDK_hybrid.h",
+ "nlc_dec.h",
+ "FDK_trigFcts.h",
+ "scramble.h",
+ "FDK_crc.h",
+ "fft.h",
+ "autocorr2nd.h",
+ "machine_type.h",
+ "genericStds.h",
+ "syslib_channelMapDescr.h"
+ ],
+ "libfuse": [
+ "fuse.h",
+ "fuse_lowlevel.h",
+ "fuse_i.h",
+ "fuse_misc.h",
+ "fuse_kernel.h",
+ "mount_util.h",
+ "fuse_mount_compat.h",
+ "cuse_lowlevel.h"
+ ],
+ "libpsl": [
+ "unicode/decimfmt.h",
+ "unicode/ucol.h",
+ "unicode/udat.h",
+ "unilbrk.h",
+ "unicode/enumset.h",
+ "unicode/tzrule.h",
+ "unicode/utf_old.h",
+ "unicode/ulocdata.h",
+ "unicode/ureldatefmt.h",
+ "unicode/vtzone.h",
+ "unicode/uregion.h",
+ "unicode/coll.h",
+ "uniwidth.h",
+ "unicode/uloc.h",
+ "unicode/timezone.h",
+ "unicode/rbbi.h",
+ "unicode/unifunct.h",
+ "unicode/usprep.h",
+ "unicode/appendable.h",
+ "unicode/umachine.h",
+ "unicode/regex.h",
+ "unicode/uregex.h",
+ "uniconv.h",
+ "uninorm.h",
+ "unicode/ubiditransform.h",
+ "unicode/locdspnm.h",
+ "unicode/numsys.h",
+ "unicode/ulistformatter.h",
+ "unicode/rbnf.h",
+ "unicode/uspoof.h",
+ "unicode/utypes.h",
+ "unicode/tzfmt.h",
+ "unicode/ustring.h",
+ "unicode/rep.h",
+ "unicode/char16ptr.h",
+ "unicode/uversion.h",
+ "unicode/sortkey.h",
+ "unicode/dtintrv.h",
+ "unicode/currunit.h",
+ "unicode/locid.h",
+ "unicode/utf.h",
+ "unicode/dtptngen.h",
+ "unicode/unorm.h",
+ "unicode/uchriter.h",
+ "unicode/edits.h",
+ "unicode/uenum.h",
+ "unicode/plurfmt.h",
+ "unicode/unumsys.h",
+ "unicode/casemap.h",
+ "unicode/measfmt.h",
+ "unicode/stringpiece.h",
+ "unicode/filteredbrk.h",
+ "unicode/utext.h",
+ "unicode/uobject.h",
+ "unicode/udata.h",
+ "unigbrk.h",
+ "unicode/format.h",
+ "unicode/tmutamt.h",
+ "unicode/ushape.h",
+ "unicode/ucurr.h",
+ "unicode/ucharstriebuilder.h",
+ "unicode/normlzr.h",
+ "unicode/coleitr.h",
+ "unicode/strenum.h",
+ "unicode/rbtz.h",
+ "idn2.h",
+ "unicode/unum.h",
+ "unicode/errorcode.h",
+ "unicode/parsepos.h",
+ "unicode/smpdtfmt.h",
+ "unicode/choicfmt.h",
+ "unicode/tmunit.h",
+ "unicode/ustringtrie.h",
+ "unicode/dtrule.h",
+ "unicode/ptypes.h",
+ "unicode/unirepl.h",
+ "unicode/usearch.h",
+ "unicode/ubidi.h",
+ "punycode.h",
+ "unicode/search.h",
+ "unicode/umsg.h",
+ "unicode/dtitvfmt.h",
+ "unicode/putil.h",
+ "unicode/reldatefmt.h",
+ "unicode/chariter.h",
+ "unicode/currpinf.h",
+ "unicode/ucat.h",
+ "unicode/ucsdet.h",
+ "unicode/uidna.h",
+ "unicode/msgfmt.h",
+ "unicode/umisc.h",
+ "unictype.h",
+ "unicode/parseerr.h",
+ "unicode/ucnvsel.h",
+ "unicode/fieldpos.h",
+ "unicode/uiter.h",
+ "unicode/std_string.h",
+ "unicode/urep.h",
+ "unicode/unistr.h",
+ "unicode/alphaindex.h",
+ "unicode/ubrk.h",
+ "unicode/unorm2.h",
+ "unicode/ucasemap.h",
+ "unicode/dtfmtsym.h",
+ "unicode/messagepattern.h",
+ "unicode/basictz.h",
+ "unicode/stringtriebuilder.h",
+ "unicode/schriter.h",
+ "unicode/brkiter.h",
+ "unicode/unimatch.h",
+ "unicode/idna.h",
+ "unicode/ucharstrie.h",
+ "unicode/normalizer2.h",
+ "unicode/ures.h",
+ "unicode/gregocal.h",
+ "unicode/bytestream.h",
+ "unicode/upluralrules.h",
+ "unicode/listformatter.h",
+ "unicode/utmscale.h",
+ "unicode/compactdecimalformat.h",
+ "unicode/measunit.h",
+ "unicode/uclean.h",
+ "unicase.h",
+ "unicode/selfmt.h",
+ "unicode/region.h",
+ "unicode/tznames.h",
+ "unistdio.h",
+ "unicode/icuplug.h",
+ "unicode/datefmt.h",
+ "unicode/udateintervalformat.h",
+ "unicode/simpletz.h",
+ "unicode/bytestrie.h",
+ "unicode/platform.h",
+ "unicode/urename.h",
+ "unicode/tmutfmt.h",
+ "unicode/scientificnumberformatter.h",
+ "unicode/utf16.h",
+ "unicode/translit.h",
+ "unicode/plurrule.h",
+ "unicode/dbbi.h",
+ "unicode/udatpg.h",
+ "unicode/simpleformatter.h",
+ "unicode/caniter.h",
+ "unicode/uniset.h",
+ "unicode/curramt.h",
+ "unicode/ucnv.h",
+ "unicode/gender.h",
+ "unicode/numfmt.h",
+ "unicode/uscript.h",
+ "unicode/measure.h",
+ "unicode/ucnv_cb.h",
+ "unicode/usetiter.h",
+ "unicode/bytestriebuilder.h",
+ "unicode/ucal.h",
+ "idn-int.h",
+ "unicode/symtable.h",
+ "unicode/fpositer.h",
+ "unicode/ugender.h",
+ "unistr.h",
+ "unicode/unifilt.h",
+ "unicode/utrans.h",
+ "unicode/uformattable.h",
+ "unicode/uconfig.h",
+ "unicode/tblcoll.h",
+ "unicode/stsearch.h",
+ "unicode/uchar.h",
+ "unicode/tztrans.h",
+ "unicode/ufieldpositer.h",
+ "unicode/uldnames.h",
+ "unicode/localpointer.h",
+ "unistring/version.h",
+ "unicode/dcfmtsym.h",
+ "unicode/uset.h",
+ "uniname.h",
+ "unicode/dtitvinf.h",
+ "unicode/udisplaycontext.h",
+ "unitypes.h",
+ "unicode/ucnv_err.h",
+ "unicode/icudataver.h",
+ "unicode/utf8.h",
+ "unicode/fmtable.h",
+ "unicode/calendar.h",
+ "unicode/utrace.h",
+ "unicode/resbund.h",
+ "unicode/ucoleitr.h",
+ "uniwbrk.h"
+ ],
+ "libsodium": [
+ "sodium.h"
+ ],
+ "libtasn1": [
+ "libtasn1.h"
+ ]
+}
\ No newline at end of file
diff --git a/headerfiles/release.sh b/headerfiles/release.sh
new file mode 100644
index 0000000000..ada17e8248
--- /dev/null
+++ b/headerfiles/release.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+# release.sh - A script to build and upload Python packages to PyPI
+
+# Exit immediately if a command exits with a non-zero status
+set -e
+
+# Ensure required tools are installed
+echo "Checking for required tools..."
+REQUIRED_TOOLS=(python3 pip twine)
+for tool in "${REQUIRED_TOOLS[@]}"; do
+ if ! command -v $tool &> /dev/null; then
+ echo "$tool is not installed. Installing..."
+ pip install $tool
+ else
+ echo "$tool is already installed."
+ fi
+done
+
+# Clean previous builds
+echo "Cleaning previous builds..."
+rm -rf build/ dist/ *.egg-info
+
+# Build the package
+echo "Building the package..."
+python3 setup.py sdist bdist_wheel
+
+# Upload the package to PyPI
+echo "Uploading the package to PyPI..."
+twine upload dist/*
+
+echo "Package uploaded successfully!"
+
+# Note: You might need to add --verbose flag to see more details
+# Example: twine upload --verbose dist/*
diff --git a/headerfiles/setup.py b/headerfiles/setup.py
new file mode 100644
index 0000000000..9982f0a07b
--- /dev/null
+++ b/headerfiles/setup.py
@@ -0,0 +1,36 @@
+from setuptools import setup, find_packages
+
+setup(
+ name='headerfiles',
+ version='0.4',
+ packages=find_packages(),
+ include_package_data=True,
+ install_requires=[
+ # add deps here
+ 'click',
+ ],
+ entry_points={
+ 'console_scripts': [
+ 'headerfiles-cli=headerfiles.cli:cli',
+ ],
+ },
+ package_data={
+ 'headerfiles' : ['data/headerfiles.json'],
+ },
+ extras_require={
+ 'dev': [
+ 'pytest',
+ ],
+ },
+ author='Cen Zhang',
+ author_email='blbllhy@gmail.com',
+ description='Header files inference for C/C++ projects',
+ long_description=open('README.md').read(),
+ long_description_content_type='text/markdown',
+ url='https://github.com/occia/headerfiles',
+ classifiers=[
+ 'Programming Language :: Python :: 3',
+ 'Operating System :: OS Independent',
+ ],
+ python_requires='>=3.7',
+)
diff --git a/headerfiles/tests/test_api.py b/headerfiles/tests/test_api.py
new file mode 100644
index 0000000000..7c92e83d5d
--- /dev/null
+++ b/headerfiles/tests/test_api.py
@@ -0,0 +1,25 @@
+import headerfiles.api as api
+
+def test_is_supported_proj():
+ assert api.is_supported_proj("libfdk-aac")
+ assert api.is_supported_proj("libfuse")
+ assert api.is_supported_proj("libpsl")
+ assert api.is_supported_proj("libsodium")
+ assert api.is_supported_proj("libtasn1")
+ assert not api.is_supported_proj("aaa")
+
+def check_result_is_list_of_strings(result: list):
+ assert isinstance(result, list)
+ assert len(result) == 0 or all(isinstance(x, str) for x in result)
+
+def test_get_proj_headers():
+ check_result_is_list_of_strings(api.get_proj_headers("libfdk-aac"))
+ check_result_is_list_of_strings(api.get_proj_headers("libfuse"))
+ check_result_is_list_of_strings(api.get_proj_headers("libpsl"))
+ check_result_is_list_of_strings(api.get_proj_headers("libsodium"))
+ check_result_is_list_of_strings(api.get_proj_headers("libtasn1"))
+ assert api.get_proj_headers("aaa") is None
+
+if __name__ == "__main__":
+ import pytest
+ pytest.main()
diff --git a/llm_toolkit/prompt_builder.py b/llm_toolkit/prompt_builder.py
index 088a7ac1a6..7087614317 100644
--- a/llm_toolkit/prompt_builder.py
+++ b/llm_toolkit/prompt_builder.py
@@ -23,6 +23,9 @@
import jinja2
+# import headerfiles.api as headerfiles
+from headerfiles.headerfiles import api as headerfiles
+
from data_prep import introspector, project_targets
from experiment import oss_fuzz_checkout
from experiment.benchmark import Benchmark, FileType
@@ -73,6 +76,7 @@
C_PROMPT_HEADERS_TO_ALWAYS_INCLUDES = ['stdio.h', 'stdlib.h', 'stdint.h']
+HEADERFILES = bool(os.getenv('LLM_HEADERFILES', ''))
class PromptBuilder:
"""Prompt builder."""
@@ -102,6 +106,24 @@ def build_triager_prompt(self, benchmark: Benchmark, driver_code: str,
def post_process_generated_code(self, generated_code: str) -> str:
"""Allows prompt builder to adjust the generated code."""
# return the same by default
+ if not HEADERFILES:
+ return generated_code
+
+ lines = generated_code.splitlines()
+
+ # filter error lines: "" or ""
+ filtered_lines = [line for line in lines if line not in ("", "")]
+ generated_code = "\n".join(filtered_lines)
+
+ # filter duplicate headers
+ headers_to_include = headerfiles.get_proj_headers(self.benchmark.project)
+ headers_to_include = [f'#include "{header}"' for header in headers_to_include]
+ existing_headers = [line for line in generated_code.splitlines() if line.startswith('#include')]
+ for line in existing_headers:
+ generated_code = generated_code.replace(line, '')
+ headers_to_append = [header for header in existing_headers if header not in headers_to_include]
+ headers_to_include.extend(headers_to_append)
+ generated_code = '\n'.join(headers_to_include) + '\n' + '\n' + generated_code.strip()
return generated_code
@@ -1162,9 +1184,14 @@ def build(self,
function_source)
# Set header inclusion string if there are any headers.
- headers_to_include = \
- introspector.query_introspector_header_files_to_include(
- self.benchmark.project, self.benchmark.function_signature)
+ if HEADERFILES:
+ headers_to_include = headerfiles.get_proj_headers(self.benchmark.project)
+ else:
+ headers_to_include = []
+ for header in introspector.query_introspector_header_files_to_include(
+ self.benchmark.project, self.benchmark.function_signature):
+ if header not in headers_to_include:
+ headers_to_include.append(header)
header_inclusion_string = ''
if headers_to_include:
header_inclusion_string = ', '.join(headers_to_include)
diff --git a/prompts/template_xml/context.txt b/prompts/template_xml/context.txt
index 0a578bb317..87b269c57f 100644
--- a/prompts/template_xml/context.txt
+++ b/prompts/template_xml/context.txt
@@ -1,7 +1,12 @@
-{% if include_statement %}
-You must add the following #include statement in the fuzz target, its header file defines the function-under-test.
+{% if headers or include_statement %}
+We have prepared the following list of headers which covers all target project APIs and will prepend them as #include statments at the beginning of your generated fuzz target. Therefore, you only need to include the headers of non-target-project APIs used in your fuzz target.
+{% if headers %}
+{{ headers }}
+{% endif %}
+{% if include_statement %}
{{ include_statement }}
+{% endif %}
{% endif %}
diff --git a/report/docker_run.sh b/report/docker_run.sh
index f36f0cc378..cf29dde515 100755
--- a/report/docker_run.sh
+++ b/report/docker_run.sh
@@ -28,6 +28,8 @@
# TODO(dongge): Re-write this script in Python as it gets more complex.
+export LLM_HEADERFILES=1
+
BENCHMARK_SET=$1
FREQUENCY_LABEL=$2
RUN_TIMEOUT=$3
diff --git a/run_one_experiment.py b/run_one_experiment.py
index ce64d5cd6b..06b7632e1f 100644
--- a/run_one_experiment.py
+++ b/run_one_experiment.py
@@ -49,7 +49,7 @@
# WARN: Avoid large NUM_SAMPLES in highly parallelized local experiments.
# It controls the number of LLM responses per prompt, which may exceed your
# LLM's limit on query-per-second.
-NUM_SAMPLES = 2
+NUM_SAMPLES = 10
MAX_TOKENS: int = 4096
RUN_TIMEOUT: int = 30
TEMPERATURE: float = 0.4