Files
mercury/tests/misc_tests/mdemangle_test_hl.inp
Fergus Henderson 672995c903 Add support for demangling code produced by the MLDS back-end.
Estimated hours taken: 16
Branches: main

util/mdemangle.c:
profiler/demangle.m:
	Add support for demangling code produced by the MLDS back-end.
	XXX util/mdemangle.c it doesn't handle internal labels yet

tests/misc_tests/Mmakefile:
tests/misc_tests/mdemangle_test_hl.inp:
tests/misc_tests/mdemangle_test_hl.exp:
	Add a test case.
	The test is not enabled, since we don't yet pass it;
	demangling works OK for many cases, but fails
	for cases involving internal labels.
2002-09-05 11:37:54 +00:00

141 lines
6.5 KiB
Plaintext

A collection of symbols for use in testing mdemangle.
This file tests demangling of symbols generated by the MLDS (--high-level-code) back-end.
Each symbol is followed by the correct decoding.
a type ctor info
mercury__builtin__builtin__type_ctor_info_int_0
<type_ctor_info for type 'builtin:int'/0>
a nested module type ctor info
mdb__util__mdb__util__type_ctor_info_trace_port_type_0
<type_ctor_info for type 'mdb:util:trace_port_type'/0>
a type ctor layout
the MLDS back-end doesn't generate these yet
a type ctor functors
the MLDS back-end doesn't generate these yet
a mangled name
foo__f_cut_0_p_0
<predicate 'foo:!'/0 mode 0>
a compare predicate
mercury__list____Compare____list_1_0
<compare/3 predicate for type 'list:list'/1>
an index predicate
mercury__list____Index____list_1_0
<index/2 predicate for type 'list:list'/1>
a unify predicate
mercury__list____Unify____list_1_0
<unification predicate for type 'list:list'/1 mode 0>
a normal predicate
mercury__list__append_3_p_0
<predicate 'list:append'/3 mode 0>
a function
mercury__list__append_2_f_0
<function 'list:append'/2 mode 0>
an internal label
mercury__list__append_3_p_4_1
<predicate 'list:append'/3 mode 4 label 1>
unused args
XXX need to test this
higher order specialization
higher_order_func_test__my_map__ho3_3_f_0
<function 'higher_order_func_test:my_map'/3 mode 0 (specialized [#3])>
higher order specialization (regression test for 1 char pred names)
higher_order_func_test__c__ho3_3_f_0
<function 'higher_order_func_test:c'/3 mode 0 (specialized [#3])>
higher order specialization and unused args
higher_order_func_test__c__ho3__ua1_3_f_0
<function 'higher_order_func_test:c'/3 mode 1 (specialized [#3]) (minus unused args [#0])>
mangled name with unused args
(XXX TODO)
some tests of symbols that should not be demangled
(this is a regression test: previous versions of mdemangle
seg faulted for this case)
mercury_data_foo
mercury_data_foo
some lambda goals
(XXX TODO)
mercury__lp__IntroducedFrom__pred__simplex__262__9_7_0_i5
<pred goal (#9) from 'simplex' in module 'lp' line 262 label 5>
mercury__lp__IntroducedFrom__func__collect_vars__153__4_3_0
<func goal (#4) from 'collect_vars' in module 'lp' line 153>
procedures introduced by deforestation
(XXX TODO)
mercury__lp__DeforestationIn__pred__simplex__262__9_7_0_i5
<deforestation procedure (#9) from 'simplex' in module 'lp' line 262 label 5>
mercury__lp__DeforestationIn__pred__collect_vars__153__4_3_0
<deforestation procedure (#4) from 'collect_vars' in module 'lp' line 153>
procedure introduced by type specialization
(XXX TODO)
mercury__fn__f_115_112_97_114_115_101_95_98_105_116_115_101_116_95_95_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_108_105_115_116_95_116_111_95_115_101_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_95_48_95_49_1_0
<function 'sparse_bitset:list_to_set'/1 mode 0 (type specialized [T = var(V_2)])>
type specialization and deforestion
(XXX TODO)
XXX this needs to be fixed
mercury__f_100_111_117_98_108_101_97_112_112_95_105_109_112_108_95_95_68_101_102_111_114_101_115_116_97_116_105_111_110_73_110_95_95_112_114_101_100_95_95_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_100_111_117_98_108_101_95_97_112_112_95_95_91_84_32_61_32_105_110_116_93_95_95_50_49_95_95_48_95_95_117_97_48_5_0
<predicate 'doubleapp_impl:DeforestationIn__pred__TypeSpecOf__pred_or_func__double_app__[T = int]__21__0'/5 mode 0 (minus unused args [#0])>
A realistic test
/usr/lib/crt1.o: In function `_start':
/usr/lib/crt1.o(.text+0x18): undefined reference to `main'
interpreter.o: In function `interpreter__deref_4_p_0':
interpreter.o(.text+0xcb1): undefined reference to `tr_store__get_mutvar_4_p_0'
interpreter.o: In function `interpreter__not_occurs_4_p_0':
interpreter.o(.text+0xdcc): undefined reference to `tr_store__get_mutvar_4_p_0'
interpreter.o: In function `interpreter__unify_4_p_0':
interpreter.o(.text+0xed4): undefined reference to `tr_store__get_mutvar_4_p_0'
interpreter.o(.text+0xf01): undefined reference to `tr_store__get_mutvar_4_p_0'
interpreter.o(.text+0x10bb): undefined reference to `tr_store__set_mutvar_4_p_0'
interpreter.o(.text+0x10fa): undefined reference to `tr_store__get_mutvar_4_p_0'
interpreter.o(.text+0x117a): undefined reference to `tr_store__get_mutvar_4_p_0'
interpreter.o(.text+0x11ba): undefined reference to `tr_store__set_mutvar_4_p_0'
interpreter.o: In function `interpreter__my_term_to_term_8_p_0':
interpreter.o(.text+0x192e): undefined reference to `tr_store__get_mutvar_4_p_0'
interpreter.o: In function `interpreter__term_to_my_term_6_p_0':
interpreter.o(.text+0x1b97): undefined reference to `tr_store__new_mutvar_4_p_0'
interpreter.o: In function `interpreter__main_loop_2_4_p_0_2':
interpreter.o(.text+0x2146): undefined reference to `unsafe__unsafe_perform_io_1_p_0'
collect2: ld returned 1 exit status
/usr/lib/crt1.o: In function `_start':
/usr/lib/crt1.o(.text+0x18): undefined reference to `main'
interpreter.o: In function `<predicate 'interpreter:deref'/4 mode 0>':
interpreter.o(.text+0xcb1): undefined reference to `<predicate 'tr_store:get_mutvar'/4 mode 0>'
interpreter.o: In function `<predicate 'interpreter:not_occurs'/4 mode 0>':
interpreter.o(.text+0xdcc): undefined reference to `<predicate 'tr_store:get_mutvar'/4 mode 0>'
interpreter.o: In function `<predicate 'interpreter:unify'/4 mode 0>':
interpreter.o(.text+0xed4): undefined reference to `<predicate 'tr_store:get_mutvar'/4 mode 0>'
interpreter.o(.text+0xf01): undefined reference to `<predicate 'tr_store:get_mutvar'/4 mode 0>'
interpreter.o(.text+0x10bb): undefined reference to `<predicate 'tr_store:set_mutvar'/4 mode 0>'
interpreter.o(.text+0x10fa): undefined reference to `<predicate 'tr_store:get_mutvar'/4 mode 0>'
interpreter.o(.text+0x117a): undefined reference to `<predicate 'tr_store:get_mutvar'/4 mode 0>'
interpreter.o(.text+0x11ba): undefined reference to `<predicate 'tr_store:set_mutvar'/4 mode 0>'
interpreter.o: In function `<predicate 'interpreter:my_term_to_term'/8 mode 0>':
interpreter.o(.text+0x192e): undefined reference to `<predicate 'tr_store:get_mutvar'/4 mode 0>'
interpreter.o: In function `<predicate 'interpreter:term_to_my_term'/6 mode 0>':
interpreter.o(.text+0x1b97): undefined reference to `<predicate 'tr_store:new_mutvar'/4 mode 0>'
interpreter.o: In function `<predicate 'interpreter:main_loop_2'/4 mode 0 label 2>':
interpreter.o(.text+0x2146): undefined reference to `<predicate 'unsafe:unsafe_perform_io'/1 mode 0>'
collect2: ld returned 1 exit status