Linux中C语言怎么运行已知内存的死码

学习中遇到的一道问题

下面的代码中, void do_not_call()这个是完全没有没执行过的死码, 就是一开始的时候会知道他的内存地址。

用gcc跑的话, 用什么办法才能执行这个do_not_call()呢?

compile的时候用的方法是: gcc -g -o L6-ex1-test -fno-stack-protector -no-pie L6-ex1.c

#include <stdio.h>
#include <stdlib.h>

int i;

void do_not_call()
{
    puts("achieved attacker control flow!\n");
    exit(1);
}

int i, c;

void readinput()
{
    char buf[8]; 

    printf("Enter a string: ");
    for (i = 0; (c = getchar()) != '\n'; i++) buf[i] = c;
    buf[i] = '\0';
    printf("string = [%s]\n", buf);
}


int main(int argc, char *argv[])
{
    printf("do_not_call: %p\n", do_not_call);
    readinput();
    return 0;
}

什么意思? 你是要在哪执行do_not_call()?
直接在main函数中调用do_not_call()啊