#include <linux/bpf.h>
 #include "bpf_helpers.h"
 
-struct bpf_map_def SEC("maps") cg_ids = {
-       .type = BPF_MAP_TYPE_ARRAY,
-       .key_size = sizeof(__u32),
-       .value_size = sizeof(__u64),
-       .max_entries = 1,
-};
-
-struct bpf_map_def SEC("maps") pidmap = {
-       .type = BPF_MAP_TYPE_ARRAY,
-       .key_size = sizeof(__u32),
-       .value_size = sizeof(__u32),
-       .max_entries = 1,
-};
+struct {
+       __uint(type, BPF_MAP_TYPE_ARRAY);
+       __uint(max_entries, 1);
+       __type(key, __u32);
+       __type(value, __u64);
+} cg_ids SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_ARRAY);
+       __uint(max_entries, 1);
+       __type(key, __u32);
+       __type(value, __u32);
+} pidmap SEC(".maps");
 
 SEC("tracepoint/syscalls/sys_enter_nanosleep")
 int trace(void *ctx)
 
 } Event;
 
 
-struct bpf_elf_map {
-       __u32 type;
-       __u32 size_key;
-       __u32 size_value;
-       __u32 max_elem;
-       __u32 flags;
-};
-
 typedef int pid_t;
 
 typedef struct {
        return true;
 }
 
-struct bpf_elf_map SEC("maps") pidmap = {
-       .type = BPF_MAP_TYPE_HASH,
-       .size_key = sizeof(int),
-       .size_value = sizeof(PidData),
-       .max_elem = 1,
-};
-
-struct bpf_elf_map SEC("maps") eventmap = {
-       .type = BPF_MAP_TYPE_HASH,
-       .size_key = sizeof(int),
-       .size_value = sizeof(Event),
-       .max_elem = 1,
-};
-
-struct bpf_elf_map SEC("maps") symbolmap = {
-       .type = BPF_MAP_TYPE_HASH,
-       .size_key = sizeof(Symbol),
-       .size_value = sizeof(int),
-       .max_elem = 1,
-};
-
-struct bpf_elf_map SEC("maps") statsmap = {
-       .type = BPF_MAP_TYPE_ARRAY,
-       .size_key = sizeof(Stats),
-       .size_value = sizeof(int),
-       .max_elem = 1,
-};
-
-struct bpf_elf_map SEC("maps") perfmap = {
-       .type = BPF_MAP_TYPE_PERF_EVENT_ARRAY,
-       .size_key = sizeof(int),
-       .size_value = sizeof(int),
-       .max_elem = 32,
-};
-
-struct bpf_elf_map SEC("maps") stackmap = {
-       .type = BPF_MAP_TYPE_STACK_TRACE,
-       .size_key = sizeof(int),
-       .size_value = sizeof(long long) * 127,
-       .max_elem = 1000,
-};
+struct {
+       __uint(type, BPF_MAP_TYPE_HASH);
+       __uint(max_entries, 1);
+       __type(key, int);
+       __type(value, PidData);
+} pidmap SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_HASH);
+       __uint(max_entries, 1);
+       __type(key, int);
+       __type(value, Event);
+} eventmap SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_HASH);
+       __uint(max_entries, 1);
+       __type(key, Symbol);
+       __type(value, int);
+} symbolmap SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_ARRAY);
+       __uint(max_entries, 1);
+       __type(key, int);
+       __type(value, Stats);
+} statsmap SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
+       __uint(max_entries, 32);
+       __uint(key_size, sizeof(int));
+       __uint(value_size, sizeof(int));
+} perfmap SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_STACK_TRACE);
+       __uint(max_entries, 1000);
+       __uint(key_size, sizeof(int));
+       __uint(value_size, sizeof(long long) * 127);
+} stackmap SEC(".maps");
 
 static __always_inline int __on_event(struct pt_regs *ctx)
 {
 
 
 int _version SEC("version") = 1;
 
-struct bpf_map_def SEC("maps") sock_map_rx = {
-       .type = BPF_MAP_TYPE_SOCKMAP,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 20,
-};
+struct {
+       __uint(type, BPF_MAP_TYPE_SOCKMAP);
+       __uint(max_entries, 20);
+       __uint(key_size, sizeof(int));
+       __uint(value_size, sizeof(int));
+} sock_map_rx SEC(".maps");
 
-struct bpf_map_def SEC("maps") sock_map_tx = {
-       .type = BPF_MAP_TYPE_SOCKMAP,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 20,
-};
+struct {
+       __uint(type, BPF_MAP_TYPE_SOCKMAP);
+       __uint(max_entries, 20);
+       __uint(key_size, sizeof(int));
+       __uint(value_size, sizeof(int));
+} sock_map_tx SEC(".maps");
 
-struct bpf_map_def SEC("maps") sock_map_msg = {
-       .type = BPF_MAP_TYPE_SOCKMAP,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 20,
-};
+struct {
+       __uint(type, BPF_MAP_TYPE_SOCKMAP);
+       __uint(max_entries, 20);
+       __uint(key_size, sizeof(int));
+       __uint(value_size, sizeof(int));
+} sock_map_msg SEC(".maps");
 
-struct bpf_map_def SEC("maps") sock_map_break = {
-       .type = BPF_MAP_TYPE_ARRAY,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 20,
-};
+struct {
+       __uint(type, BPF_MAP_TYPE_ARRAY);
+       __uint(max_entries, 20);
+       __type(key, int);
+       __type(value, int);
+} sock_map_break SEC(".maps");
 
 SEC("sk_skb2")
 int bpf_prog2(struct __sk_buff *skb)
 
        char dummy_safeguard;
 };
 
-struct bpf_map_def SEC("maps") samples = {
-       .type = BPF_MAP_TYPE_PERF_EVENT_ARRAY,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 32,
-};
-
-struct bpf_map_def SEC("maps") stacks_0 = {
-       .type = BPF_MAP_TYPE_STACK_TRACE,
-       .key_size = sizeof(uint32_t),
-       .value_size = sizeof(uint64_t) * PERF_MAX_STACK_DEPTH,
-       .max_entries = 16,
-};
-
-struct bpf_map_def SEC("maps") stacks_1 = {
-       .type = BPF_MAP_TYPE_STACK_TRACE,
-       .key_size = sizeof(uint32_t),
-       .value_size = sizeof(uint64_t) * PERF_MAX_STACK_DEPTH,
-       .max_entries = 16,
-};
-
-struct bpf_map_def SEC("maps") sample_heap = {
-       .type = BPF_MAP_TYPE_PERCPU_ARRAY,
-       .key_size = sizeof(uint32_t),
-       .value_size = sizeof(struct strobelight_bpf_sample),
-       .max_entries = 1,
-};
-
-struct bpf_map_def SEC("maps") strobemeta_cfgs = {
-       .type = BPF_MAP_TYPE_PERCPU_ARRAY,
-       .key_size = sizeof(pid_t),
-       .value_size = sizeof(struct strobemeta_cfg),
-       .max_entries = STROBE_MAX_CFGS,
-};
+struct {
+       __uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
+       __uint(max_entries, 32);
+       __uint(key_size, sizeof(int));
+       __uint(value_size, sizeof(int));
+} samples SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_STACK_TRACE);
+       __uint(max_entries, 16);
+       __uint(key_size, sizeof(uint32_t));
+       __uint(value_size, sizeof(uint64_t) * PERF_MAX_STACK_DEPTH);
+} stacks_0 SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_STACK_TRACE);
+       __uint(max_entries, 16);
+       __uint(key_size, sizeof(uint32_t));
+       __uint(value_size, sizeof(uint64_t) * PERF_MAX_STACK_DEPTH);
+} stacks_1 SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
+       __uint(max_entries, 1);
+       __type(key, uint32_t);
+       __type(value, struct strobelight_bpf_sample);
+} sample_heap SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
+       __uint(max_entries, STROBE_MAX_CFGS);
+       __type(key, pid_t);
+       __type(value, struct strobemeta_cfg);
+} strobemeta_cfgs SEC(".maps");
 
 /* Type for the dtv.  */
 /* https://github.com/lattera/glibc/blob/master/nptl/sysdeps/x86_64/tls.h#L34 */
 
 #include <linux/types.h>
 #include "bpf_helpers.h"
 
-struct bpf_map_def SEC("maps") mim_array = {
-       .type = BPF_MAP_TYPE_ARRAY_OF_MAPS,
-       .key_size = sizeof(int),
+struct {
+       __uint(type, BPF_MAP_TYPE_ARRAY_OF_MAPS);
+       __uint(max_entries, 1);
+       __uint(map_flags, 0);
+       __uint(key_size, sizeof(__u32));
        /* must be sizeof(__u32) for map in map */
-       .value_size = sizeof(__u32),
-       .max_entries = 1,
-       .map_flags = 0,
-};
-
-struct bpf_map_def SEC("maps") mim_hash = {
-       .type = BPF_MAP_TYPE_HASH_OF_MAPS,
-       .key_size = sizeof(int),
+       __uint(value_size, sizeof(__u32));
+} mim_array SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_HASH_OF_MAPS);
+       __uint(max_entries, 1);
+       __uint(map_flags, 0);
+       __uint(key_size, sizeof(int));
        /* must be sizeof(__u32) for map in map */
-       .value_size = sizeof(__u32),
-       .max_entries = 1,
-       .map_flags = 0,
-};
+       __uint(value_size, sizeof(__u32));
+} mim_hash SEC(".maps");
 
 SEC("xdp_mimtest")
 int xdp_mimtest0(struct xdp_md *ctx)
 
 
 int _version SEC("version") = 1;
 
-struct bpf_map_def SEC("maps") test_map_id = {
-       .type = BPF_MAP_TYPE_ARRAY,
-       .key_size = sizeof(__u32),
-       .value_size = sizeof(__u64),
-       .max_entries = 1,
-};
+struct {
+       __uint(type, BPF_MAP_TYPE_ARRAY);
+       __uint(max_entries, 1);
+       __type(key, __u32);
+       __type(value, __u64);
+} test_map_id SEC(".maps");
 
 SEC("test_obj_id_dummy")
 int test_obj_id(struct __sk_buff *skb)
 
 
 int _version SEC("version") = 1;
 
-struct bpf_map_def SEC("maps") rxcnt = {
-       .type = BPF_MAP_TYPE_PERCPU_ARRAY,
-       .key_size = sizeof(__u32),
-       .value_size = sizeof(__u64),
-       .max_entries = 256,
-};
-
-struct bpf_map_def SEC("maps") vip2tnl = {
-       .type = BPF_MAP_TYPE_HASH,
-       .key_size = sizeof(struct vip),
-       .value_size = sizeof(struct iptnl_info),
-       .max_entries = MAX_IPTNL_ENTRIES,
-};
+struct {
+       __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
+       __uint(max_entries, 256);
+       __type(key, __u32);
+       __type(value, __u64);
+} rxcnt SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_HASH);
+       __uint(max_entries, MAX_IPTNL_ENTRIES);
+       __type(key, struct vip);
+       __type(value, struct iptnl_info);
+} vip2tnl SEC(".maps");
 
 static __always_inline void count_tx(__u32 protocol)
 {
 
 #include <linux/bpf.h>
 #include "bpf_helpers.h"
 
-struct bpf_map_def SEC("maps") tx_port = {
-       .type = BPF_MAP_TYPE_DEVMAP,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 8,
-};
+struct {
+       __uint(type, BPF_MAP_TYPE_DEVMAP);
+       __uint(max_entries, 8);
+       __uint(key_size, sizeof(int));
+       __uint(value_size, sizeof(int));
+} tx_port SEC(".maps");
 
 SEC("redirect_map_0")
 int xdp_redirect_map_0(struct xdp_md *xdp)
 
 
 #include "xdping.h"
 
-struct bpf_map_def SEC("maps") ping_map = {
-       .type = BPF_MAP_TYPE_HASH,
-       .key_size = sizeof(__u32),
-       .value_size = sizeof(struct pinginfo),
-       .max_entries = 256,
-};
+struct {
+       __uint(type, BPF_MAP_TYPE_HASH);
+       __uint(max_entries, 256);
+       __type(key, __u32);
+       __type(value, struct pinginfo);
+} ping_map SEC(".maps");
 
 static __always_inline void swap_src_dst_mac(void *data)
 {
 
 
 int _version SEC("version") = 1;
 
-struct bpf_map_def __attribute__ ((section("maps"), used)) map_in = {
-       .type = MAP_TYPE,
-       .key_size = 0,
-       .value_size = sizeof(__u32),
-       .max_entries = 32,
-       .map_flags = 0,
-};
-
-struct bpf_map_def __attribute__ ((section("maps"), used)) map_out = {
-       .type = MAP_TYPE,
-       .key_size = 0,
-       .value_size = sizeof(__u32),
-       .max_entries = 32,
-       .map_flags = 0,
-};
+struct {
+       __uint(type, MAP_TYPE);
+       __uint(max_entries, 32);
+       __uint(map_flags, 0);
+       __uint(key_size, 0);
+       __uint(value_size, sizeof(__u32));
+} map_in SEC(".maps");
+
+struct {
+       __uint(type, MAP_TYPE);
+       __uint(max_entries, 32);
+       __uint(map_flags, 0);
+       __uint(key_size, 0);
+       __uint(value_size, sizeof(__u32));
+} map_out SEC(".maps");
 
 SEC("test")
 int _test(struct __sk_buff *skb)
 
  * are established and verdicts are decided.
  */
 
-struct bpf_map_def SEC("maps") sock_map = {
-       .type = TEST_MAP_TYPE,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 20,
-};
-
-struct bpf_map_def SEC("maps") sock_map_txmsg = {
-       .type = TEST_MAP_TYPE,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 20,
-};
-
-struct bpf_map_def SEC("maps") sock_map_redir = {
-       .type = TEST_MAP_TYPE,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 20,
-};
-
-struct bpf_map_def SEC("maps") sock_apply_bytes = {
-       .type = BPF_MAP_TYPE_ARRAY,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 1
-};
-
-struct bpf_map_def SEC("maps") sock_cork_bytes = {
-       .type = BPF_MAP_TYPE_ARRAY,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 1
-};
-
-struct bpf_map_def SEC("maps") sock_bytes = {
-       .type = BPF_MAP_TYPE_ARRAY,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 6
-};
-
-struct bpf_map_def SEC("maps") sock_redir_flags = {
-       .type = BPF_MAP_TYPE_ARRAY,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 1
-};
-
-struct bpf_map_def SEC("maps") sock_skb_opts = {
-       .type = BPF_MAP_TYPE_ARRAY,
-       .key_size = sizeof(int),
-       .value_size = sizeof(int),
-       .max_entries = 1
-};
+struct {
+       __uint(type, TEST_MAP_TYPE);
+       __uint(max_entries, 20);
+       __uint(key_size, sizeof(int));
+       __uint(value_size, sizeof(int));
+} sock_map SEC(".maps");
+
+struct {
+       __uint(type, TEST_MAP_TYPE);
+       __uint(max_entries, 20);
+       __uint(key_size, sizeof(int));
+       __uint(value_size, sizeof(int));
+} sock_map_txmsg SEC(".maps");
+
+struct {
+       __uint(type, TEST_MAP_TYPE);
+       __uint(max_entries, 20);
+       __uint(key_size, sizeof(int));
+       __uint(value_size, sizeof(int));
+} sock_map_redir SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_ARRAY);
+       __uint(max_entries, 1);
+       __type(key, int);
+       __type(value, int);
+} sock_apply_bytes SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_ARRAY);
+       __uint(max_entries, 1);
+       __type(key, int);
+       __type(value, int);
+} sock_cork_bytes SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_ARRAY);
+       __uint(max_entries, 6);
+       __type(key, int);
+       __type(value, int);
+} sock_bytes SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_ARRAY);
+       __uint(max_entries, 1);
+       __type(key, int);
+       __type(value, int);
+} sock_redir_flags SEC(".maps");
+
+struct {
+       __uint(type, BPF_MAP_TYPE_ARRAY);
+       __uint(max_entries, 1);
+       __type(key, int);
+       __type(value, int);
+} sock_skb_opts SEC(".maps");
 
 SEC("sk_skb1")
 int bpf_prog1(struct __sk_buff *skb)