aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/gna/issue1623/main.c
blob: 9ab757316f453e8c47535bfbd066af62d8edbfdd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>

extern int ghdl_main(int argc, void** argv);

void sigabrtHandler(int sig_num) {
  // Reset handler to catch SIGABRT next time. Refer http://en.cppreference.com/w/c/program/signal
  signal(SIGABRT, sigabrtHandler);
  printf("SIGABRT caught %d!\n", sig_num);
  fflush(stdout);
}

static void exit_handler(void) {
  printf("This is the exit handler.\n");
}

int entry(int argc, void** argv) {
  signal(SIGABRT, sigabrtHandler);
  atexit(exit_handler);

  printf("Hello entry!\n");
  int ecode = ghdl_main(argc, argv);
  printf("Bye entry <%d>!\n", ecode);

  return ecode;
}