/* this is how USDT semaphore is actually defined, except volatile modifier */
 volatile unsigned short uprobe_ref_ctr __attribute__((unused)) __attribute((section(".probes")));
 
+/* attach point */
+static void method(void) {
+       return ;
+}
+
 void test_attach_probe(void)
 {
        DECLARE_LIBBPF_OPTS(bpf_uprobe_opts, uprobe_opts);
        if (CHECK(base_addr < 0, "get_base_addr",
                  "failed to find base addr: %zd", base_addr))
                return;
-       uprobe_offset = get_uprobe_offset(&get_base_addr, base_addr);
+       uprobe_offset = get_uprobe_offset(&method, base_addr);
 
        ref_ctr_offset = get_rel_offset((uintptr_t)&uprobe_ref_ctr);
        if (!ASSERT_GE(ref_ctr_offset, 0, "ref_ctr_offset"))
                goto cleanup;
 
        /* trigger & validate uprobe & uretprobe */
-       get_base_addr();
+       method();
 
        if (CHECK(skel->bss->uprobe_res != 3, "check_uprobe_res",
                  "wrong uprobe res: %d\n", skel->bss->uprobe_res))