// cc -o testlines testlines.c /home/gtoal/src/compilers101/new-parser/imps/perms.c -I. -lm -ldl

#include <imp_perms.h>

void DUMPALLLINEINFO(void) {}
_imp_string ADDRESS2MODULE(int ANADDRESS, const char *fn) { return _imp_c2istr(fn); }

int _imp_mainep(int _imp_argc, char **_imp_argv) {
  extern void DUMPALLLINEINFO(void);
  extern _imp_string ADDRESS2MODULE(int ANADDRESS, const char *fn);
  #define ADDRESS2MODULE(A) ADDRESS2MODULE(A,__PRETTY_FUNCTION__)
  static int FRED = 20;

  void HACKING(void) {
    int FREDADDRESS;

    _imp_string MYMODULE;

    FRED = FRED + 1;
    FREDADDRESS = ADDR(FRED);
    if (FRED == 27) _imp_signal(15,0,0,_imp_str_literal(""));
    printf("fred=%d fredAddress=%08X", FRED, FREDADDRESS);
    NEWLINE();

    MYMODULE = ADDRESS2MODULE(FREDADDRESS);
    PRINTSTRING(_imp_str_literal("fred is in module '"));
    PRINTSTRING(MYMODULE);
    PRINTSTRING(_imp_str_literal("'"));
    NEWLINE();

    /* End of Rt/Fn/Map/begin depth=1 */
  }

  SELECTOUTPUT(1);
  DUMPALLLINEINFO();

  do {
    HACKING();
  } while (1);

}
