Created
May 27, 2019 10:12
-
-
Save master-q/b8167531a5a0679b9a830ed12a75619f to your computer and use it in GitHub Desktop.
How to inject ATS's DWARF debug info
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ gcc -g -I /home/kiwamu/src/ATS-Postiats/ccomp/runtime/ -I /home/kiwamu/src/ATS-Postiats/ main_dats.c | |
$ gdb a.out | |
(gdb) b main.dats:atspre_g0int_add_int | |
Breakpoint 1 at 0x120a: file /home/kiwamu/src/ATS-Postiats/prelude/CATS/integer.cats, line 157. | |
(gdb) run | |
Starting program: /home/kiwamu/src/idiomaticca/regress/noinc/arithmetic_op/a.out | |
Breakpoint 1, atspre_g0int_add_int (x1=1, x2=2) at /home/kiwamu/src/ATS-Postiats/prelude/CATS/integer.cats:157 | |
157 (atstype_int x1, atstype_int x2) { return (x1 + x2) ; } | |
(gdb) bt | |
#0 atspre_g0int_add_int (x1=1, x2=2) at /home/kiwamu/src/ATS-Postiats/prelude/CATS/integer.cats:157 | |
#1 0x000055555555529c in mainats_1_void () at main.dats:4 | |
#2 0x0000555555555635 in main (argc=1, argv=0x7fffffffd5d8, envp=0x7fffffffd5e8) at main.dats:3 | |
(gdb) l | |
152 (atstype_int x) { return (x / 2) ; } | |
153 // end of [atspre_g0int_half_int] | |
154 ATSinline() | |
155 atstype_int | |
156 atspre_g0int_add_int | |
157 (atstype_int x1, atstype_int x2) { return (x1 + x2) ; } | |
158 // end of [atspre_g0int_add_int] | |
159 ATSinline() | |
160 atstype_int | |
161 atspre_g0int_sub_int | |
(gdb) up | |
#1 0x000055555555529c in mainats_1_void () at main.dats:4 | |
4 1 + 2 - 3 * 4 / 4 | |
(gdb) l | |
1 #include "share/atspre_staload.hats" | |
2 | |
3 implement main () = | |
4 1 + 2 - 3 * 4 / 4 | |
5 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "share/atspre_staload.hats" | |
implement main () = | |
1 + 2 - 3 * 4 / 4 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
** | |
** The C code is generated by [ATS/Postiats-0-4-0] | |
** The starting compilation time is: 2019-5-27: 18h:18m | |
** | |
*/ | |
/* | |
** include runtime header files | |
*/ | |
#ifndef _ATS_CCOMP_HEADER_NONE_ | |
#include "pats_ccomp_config.h" | |
#include "pats_ccomp_basics.h" | |
#include "pats_ccomp_typedefs.h" | |
#include "pats_ccomp_instrset.h" | |
#include "pats_ccomp_memalloc.h" | |
#ifndef _ATS_CCOMP_EXCEPTION_NONE_ | |
#include "pats_ccomp_memalloca.h" | |
#include "pats_ccomp_exception.h" | |
#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_] | |
#endif /* _ATS_CCOMP_HEADER_NONE_ */ | |
/* | |
** include prelude cats files | |
*/ | |
#ifndef _ATS_CCOMP_PRELUDE_NONE_ | |
// | |
#include "prelude/CATS/basics.cats" | |
#include "prelude/CATS/integer.cats" | |
#include "prelude/CATS/pointer.cats" | |
#include "prelude/CATS/integer_long.cats" | |
#include "prelude/CATS/integer_size.cats" | |
#include "prelude/CATS/integer_short.cats" | |
#include "prelude/CATS/bool.cats" | |
#include "prelude/CATS/char.cats" | |
#include "prelude/CATS/float.cats" | |
#include "prelude/CATS/integer_ptr.cats" | |
#include "prelude/CATS/integer_fixed.cats" | |
#include "prelude/CATS/memory.cats" | |
#include "prelude/CATS/string.cats" | |
#include "prelude/CATS/strptr.cats" | |
// | |
#include "prelude/CATS/fprintf.cats" | |
// | |
#include "prelude/CATS/filebas.cats" | |
// | |
#include "prelude/CATS/list.cats" | |
#include "prelude/CATS/option.cats" | |
#include "prelude/CATS/array.cats" | |
#include "prelude/CATS/arrayptr.cats" | |
#include "prelude/CATS/arrayref.cats" | |
#include "prelude/CATS/matrix.cats" | |
#include "prelude/CATS/matrixptr.cats" | |
// | |
#endif /* _ATS_CCOMP_PRELUDE_NONE_ */ | |
/* | |
** for user-supplied prelude | |
*/ | |
#ifdef _ATS_CCOMP_PRELUDE_USER_ | |
// | |
#include _ATS_CCOMP_PRELUDE_USER_ | |
// | |
#endif /* _ATS_CCOMP_PRELUDE_USER_ */ | |
/* | |
** for user2-supplied prelude | |
*/ | |
#ifdef _ATS_CCOMP_PRELUDE_USER2_ | |
// | |
#include _ATS_CCOMP_PRELUDE_USER2_ | |
// | |
#endif /* _ATS_CCOMP_PRELUDE_USER2_ */ | |
/* | |
staload-prologues(beg) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/basics.dats: 1636(line=50, offs=1) -- 1675(line=50, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/pointer.dats: 1533(line=44, offs=1) -- 1572(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/integer_long.dats: 1602(line=49, offs=1) -- 1641(line=49, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/integer_size.dats: 1597(line=49, offs=1) -- 1636(line=49, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/integer_short.dats: 1603(line=49, offs=1) -- 1642(line=49, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/char.dats: 1610(line=48, offs=1) -- 1649(line=48, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/float.dats: 1636(line=50, offs=1) -- 1675(line=50, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/string.dats: 1631(line=50, offs=1) -- 1670(line=50, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/strptr.dats: 1629(line=50, offs=1) -- 1668(line=50, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/strptr.dats: 1691(line=54, offs=1) -- 1738(line=54, offs=48) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/integer_ptr.dats: 1601(line=49, offs=1) -- 1640(line=49, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/integer_fixed.dats: 1603(line=49, offs=1) -- 1642(line=49, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/memory.dats: 1410(line=38, offs=1) -- 1449(line=39, offs=32) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/filebas.dats: 1607(line=49, offs=1) -- 1646(line=50, offs=32) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/filebas.dats: 1669(line=54, offs=1) -- 1715(line=55, offs=39) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/filebas.dats: 1738(line=59, offs=1) -- 1783(line=60, offs=38) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/libats/libc/SATS/stdio.sats: 1390(line=36, offs=1) -- 1437(line=39, offs=3) | |
*/ | |
#include \ | |
"libats/libc/CATS/stdio.cats" | |
/* | |
/home/kiwamu/src/ATS-Postiats/libats/libc/SATS/stdio.sats: 1950(line=69, offs=1) -- 1999(line=71, offs=34) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3) | |
*/ | |
#include \ | |
"libats/libc/CATS/sys/types.cats" | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/filebas.dats: 1865(line=66, offs=1) -- 1912(line=66, offs=48) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/libats/libc/SATS/sys/stat.sats: 1390(line=36, offs=1) -- 1440(line=39, offs=3) | |
*/ | |
#include \ | |
"libats/libc/CATS/sys/stat.cats" | |
/* | |
/home/kiwamu/src/ATS-Postiats/libats/libc/SATS/sys/stat.sats: 1756(line=58, offs=1) -- 1805(line=60, offs=34) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3) | |
*/ | |
#include \ | |
"libats/libc/CATS/sys/types.cats" | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/filebas.dats: 15937(line=927, offs=1) -- 15974(line=928, offs=30) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/libats/libc/SATS/stdio.sats: 1390(line=36, offs=1) -- 1437(line=39, offs=3) | |
*/ | |
#include \ | |
"libats/libc/CATS/stdio.cats" | |
/* | |
/home/kiwamu/src/ATS-Postiats/libats/libc/SATS/stdio.sats: 1950(line=69, offs=1) -- 1999(line=71, offs=34) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3) | |
*/ | |
#include \ | |
"libats/libc/CATS/sys/types.cats" | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/list.dats: 1529(line=44, offs=1) -- 1568(line=45, offs=32) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/list.dats: 1569(line=46, offs=1) -- 1615(line=47, offs=39) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/list_vt.dats: 1538(line=44, offs=1) -- 1577(line=45, offs=32) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/list_vt.dats: 1578(line=46, offs=1) -- 1624(line=47, offs=39) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/SHARE/list_vt_mergesort.dats: 1546(line=44, offs=1) -- 1585(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/SHARE/list_vt_quicksort.dats: 1546(line=44, offs=1) -- 1585(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/array.dats: 1528(line=44, offs=1) -- 1567(line=45, offs=32) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/SHARE/array_bsearch.dats: 1531(line=44, offs=1) -- 1570(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/SHARE/array_quicksort.dats: 1531(line=44, offs=1) -- 1570(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/arrayptr.dats: 1532(line=44, offs=1) -- 1571(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/arrayref.dats: 1532(line=44, offs=1) -- 1571(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/matrix.dats: 1535(line=44, offs=1) -- 1574(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/matrixptr.dats: 1538(line=44, offs=1) -- 1577(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/matrixref.dats: 1538(line=44, offs=1) -- 1577(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/stream.dats: 1523(line=44, offs=1) -- 1562(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/stream_vt.dats: 1523(line=44, offs=1) -- 1562(line=44, offs=40) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/tostring.dats: 1528(line=44, offs=1) -- 1567(line=45, offs=32) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35) | |
*/ | |
/* | |
/home/kiwamu/src/ATS-Postiats/prelude/DATS/checkast.dats: 1531(line=44, offs=1) -- 1570(line=45, offs=32) | |
*/ | |
/* | |
staload-prologues(end) | |
*/ | |
/* | |
typedefs-for-tyrecs-and-tysums(beg) | |
*/ | |
/* | |
typedefs-for-tyrecs-and-tysums(end) | |
*/ | |
/* | |
dynconlst-declaration(beg) | |
*/ | |
/* | |
dynconlst-declaration(end) | |
*/ | |
/* | |
dyncstlst-declaration(beg) | |
*/ | |
ATSdyncst_mac(atspre_g1int_sub_int) | |
ATSdyncst_mac(atspre_g1int_add_int) | |
ATSdyncst_mac(atspre_g1int_div_int) | |
ATSdyncst_mac(atspre_g1int_mul_int) | |
/* | |
dyncstlst-declaration(end) | |
*/ | |
/* | |
dynvalist-implementation(beg) | |
*/ | |
/* | |
dynvalist-implementation(end) | |
*/ | |
/* | |
exnconlst-declaration(beg) | |
*/ | |
#ifndef _ATS_CCOMP_EXCEPTION_NONE_ | |
ATSextern() | |
atsvoid_t0ype | |
the_atsexncon_initize | |
( | |
atstype_exnconptr d2c, atstype_string exnmsg | |
) ; | |
#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_] | |
/* | |
exnconlst-declaration(end) | |
*/ | |
/* | |
extypelst-declaration(beg) | |
*/ | |
/* | |
extypelst-declaration(end) | |
*/ | |
/* | |
assumelst-declaration(beg) | |
*/ | |
#ifndef _ATS_CCOMP_ASSUME_CHECK_NONE_ | |
#endif // #ifndef(_ATS_CCOMP_ASSUME_CHECK_NONE_) | |
/* | |
assumelst-declaration(end) | |
*/ | |
#if(0) | |
ATSextern() | |
atstkind_t0ype(atstype_int) | |
mainats_1_void() ; | |
#endif // end of [QUALIFIED] | |
/* | |
/home/kiwamu/src/idiomaticca/regress/noinc/arithmetic_op/main.dats: 54(line=3, offs=16) -- 78(line=4, offs=20) | |
*/ | |
/* | |
local: | |
global: mainats_1_void$0$0(level=0) | |
local: | |
global: | |
*/ | |
ATSextern() | |
atstkind_t0ype(atstype_int) | |
mainats_1_void() | |
{ | |
/* tmpvardeclst(beg) */ | |
ATStmpdec(tmpret0, atstkind_t0ype(atstype_int)) ; | |
ATStmpdec(tmp1, atstkind_t0ype(atstype_int)) ; | |
ATStmpdec(tmp2, atstkind_t0ype(atstype_int)) ; | |
ATStmpdec(tmp3, atstkind_t0ype(atstype_int)) ; | |
/* tmpvardeclst(end) */ | |
#line 4 "main.dats" | |
ATSfunbody_beg() | |
/* | |
emit_instr: loc0 = /home/kiwamu/src/idiomaticca/regress/noinc/arithmetic_op/main.dats: 49(line=3, offs=11) -- 78(line=4, offs=20) | |
*/ | |
#line 4 "main.dats" | |
ATSINSflab(__patsflab_main_1_void): | |
/* | |
emit_instr: loc0 = /home/kiwamu/src/idiomaticca/regress/noinc/arithmetic_op/main.dats: 61(line=4, offs=3) -- 66(line=4, offs=8) | |
*/ | |
#line 4 "main.dats" | |
ATSINSmove(tmp1, atspre_g1int_add_int(ATSPMVi0nt(1), ATSPMVi0nt(2))) ; | |
/* | |
emit_instr: loc0 = /home/kiwamu/src/idiomaticca/regress/noinc/arithmetic_op/main.dats: 69(line=4, offs=11) -- 74(line=4, offs=16) | |
*/ | |
#line 4 "main.dats" | |
ATSINSmove(tmp3, atspre_g1int_mul_int(ATSPMVi0nt(3), ATSPMVi0nt(4))) ; | |
/* | |
emit_instr: loc0 = /home/kiwamu/src/idiomaticca/regress/noinc/arithmetic_op/main.dats: 69(line=4, offs=11) -- 78(line=4, offs=20) | |
*/ | |
#line 4 "main.dats" | |
ATSINSmove(tmp2, atspre_g1int_div_int(tmp3, ATSPMVi0nt(4))) ; | |
/* | |
emit_instr: loc0 = /home/kiwamu/src/idiomaticca/regress/noinc/arithmetic_op/main.dats: 61(line=4, offs=3) -- 78(line=4, offs=20) | |
*/ | |
#line 4 "main.dats" | |
ATSINSmove(tmpret0, atspre_g1int_sub_int(tmp1, tmp2)) ; | |
#line 4 "main.dats" | |
ATSfunbody_end() | |
#line 4 "main.dats" | |
ATSreturn(tmpret0) ; | |
#line 368 "main_dats.c" | |
} /* end of [mainats_1_void] */ | |
/* | |
** for initialization(dynloading) | |
*/ | |
ATSdynloadflag_minit(_057_home_057_kiwamu_057_src_057_idiomaticca_057_regress_057_noinc_057_arithmetic_op_057_main_056_dats__dynloadflag) ; | |
ATSextern() | |
atsvoid_t0ype | |
_057_home_057_kiwamu_057_src_057_idiomaticca_057_regress_057_noinc_057_arithmetic_op_057_main_056_dats__dynload() | |
{ | |
ATSfunbody_beg() | |
ATSdynload(/*void*/) | |
ATSdynloadflag_sta( | |
_057_home_057_kiwamu_057_src_057_idiomaticca_057_regress_057_noinc_057_arithmetic_op_057_main_056_dats__dynloadflag | |
) ; | |
ATSif( | |
ATSCKiseqz( | |
_057_home_057_kiwamu_057_src_057_idiomaticca_057_regress_057_noinc_057_arithmetic_op_057_main_056_dats__dynloadflag | |
) | |
) ATSthen() { | |
ATSdynloadset(_057_home_057_kiwamu_057_src_057_idiomaticca_057_regress_057_noinc_057_arithmetic_op_057_main_056_dats__dynloadflag) ; | |
/* | |
dynexnlst-initize(beg) | |
*/ | |
/* | |
dynexnlst-initize(end) | |
*/ | |
} /* ATSendif */ | |
ATSfunbody_end() | |
ATSreturn_void(tmpret_void) ; | |
} /* end of [*_dynload] */ | |
/* | |
** the ATS runtime | |
*/ | |
#ifndef _ATS_CCOMP_RUNTIME_NONE_ | |
#include "pats_ccomp_runtime.c" | |
#include "pats_ccomp_runtime_memalloc.c" | |
#ifndef _ATS_CCOMP_EXCEPTION_NONE_ | |
#include "pats_ccomp_runtime2_dats.c" | |
#ifndef _ATS_CCOMP_RUNTIME_TRYWITH_NONE_ | |
#include "pats_ccomp_runtime_trywith.c" | |
#endif /* _ATS_CCOMP_RUNTIME_TRYWITH_NONE_ */ | |
#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_] | |
#endif /* _ATS_CCOMP_RUNTIME_NONE_ */ | |
/* | |
** the [main] implementation | |
*/ | |
int | |
main | |
( | |
int argc, char **argv, char **envp | |
) { | |
int err = 0 ; | |
#line 3 "main.dats" | |
_057_home_057_kiwamu_057_src_057_idiomaticca_057_regress_057_noinc_057_arithmetic_op_057_main_056_dats__dynload() ; | |
#line 3 "main.dats" | |
ATSmainats_1_void(err) ; | |
#line 3 "main.dats" | |
return (err) ; | |
#line 430 "main_dats.c" | |
} /* end of [main] */ | |
/* ****** ****** */ | |
/* end-of-compilation-unit */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It has already implemented on ATS2 with
--gline
option: