sec_desc->sec_type = SEC_RELO;
                        sec_desc->shdr = sh;
                        sec_desc->data = data;
-               } else if (sh->sh_type == SHT_NOBITS && strcmp(name, BSS_SEC) == 0) {
+               } else if (sh->sh_type == SHT_NOBITS && (strcmp(name, BSS_SEC) == 0 ||
+                                                        str_has_pfx(name, BSS_SEC "."))) {
                        sec_desc->sec_type = SEC_BSS;
                        sec_desc->shdr = sh;
                        sec_desc->data = data;
 
        ASSERT_OK(ret, "global_list_push_pop");
        ASSERT_OK(opts.retval, "global_list_push_pop retval");
        if (!leave_in_map)
-               clear_fields(skel->maps.data_A);
+               clear_fields(skel->maps.bss_A);
 
        if (mode == PUSH_POP)
                goto end;
        ASSERT_OK(ret, "global_list_push_pop_multiple");
        ASSERT_OK(opts.retval, "global_list_push_pop_multiple retval");
        if (!leave_in_map)
-               clear_fields(skel->maps.data_A);
+               clear_fields(skel->maps.bss_A);
 
        if (mode == PUSH_POP_MULT)
                goto end;
        ASSERT_OK(ret, "global_list_in_list");
        ASSERT_OK(opts.retval, "global_list_in_list retval");
        if (!leave_in_map)
-               clear_fields(skel->maps.data_A);
+               clear_fields(skel->maps.bss_A);
 end:
        linked_list__destroy(skel);
 }
 
        },
 };
 
-#define private(name) SEC(".data." #name) __hidden __attribute__((aligned(8)))
+#define private(name) SEC(".bss." #name) __hidden __attribute__((aligned(8)))
 
 private(A) struct bpf_spin_lock glock;
 private(A) struct bpf_list_head ghead __contains(foo, node);