From 75552bd3bb4e7f3cf4dab81a5c81cf73b1d3fb99 Mon Sep 17 00:00:00 2001 From: Scott Lystig Fritchie Date: Fri, 17 Aug 2012 03:24:20 -0500 Subject: Relocate bodies of DTrace probes to the statically-linked VM. Due to various operating systems (in both the DTrace and SystemTap worlds) not fully supporting DTrace probes (or SystemTap-compatibility mode probes) in shared libraries, we relocate those probes to the statically-linked virtual machine. This could be seen as pollution of the pristine VM by a (yet) experimental feature. However: 1. This code can be eliminated completely by the C preprocessor. 2. Leaving the probes in the dyntrace NIF shared library simply does not work correctly on too many platforms. *Many* thanks to Macneil Shonle at Basho for assisting when my RSI-injured fingers gave out. Tested on: * CentOS 5, SystemTap 1.3 * Solaris 10 (note) * Solaris 11 * OpenIndiana 151 * SmartOS 20120809T221258Z * FreeBSD 9.0-RELEASE (note) I had hoped to be able to test CentOS 6 + SystemTap 1.7, but the details of dealing with all dependencies for a 2.6.32-279.5.1.el6.x86_64 kernel are too time consuming right now. (note: Solaris 10 and FreeBSD 9.0-RELEASE can take a long time to compile) --- lib/runtime_tools/c_src/dyntrace.c | 1136 +----------------------------------- 1 file changed, 7 insertions(+), 1129 deletions(-) (limited to 'lib/runtime_tools/c_src/dyntrace.c') diff --git a/lib/runtime_tools/c_src/dyntrace.c b/lib/runtime_tools/c_src/dyntrace.c index 62a392fe56..eef03afd1c 100644 --- a/lib/runtime_tools/c_src/dyntrace.c +++ b/lib/runtime_tools/c_src/dyntrace.c @@ -36,6 +36,10 @@ void dtrace_nifenv_str(ErlNifEnv *env, char *process_buf); void get_string_maybe(ErlNifEnv *env, const ERL_NIF_TERM term, char **ptr, char *buf, int bufsiz); +#ifdef HAVE_USE_DTRACE +ERL_NIF_TERM erl_nif_user_trace_s1(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +ERL_NIF_TERM erl_nif_user_trace_i4s4(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); +#endif #ifdef VALGRIND # include @@ -98,1151 +102,25 @@ static ERL_NIF_TERM available(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[ static ERL_NIF_TERM user_trace_s1(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { #ifdef HAVE_USE_DTRACE - ErlNifBinary message_bin; - DTRACE_CHARBUF(messagebuf, MESSAGE_BUFSIZ + 1); - - if (DTRACE_ENABLED(user_trace_s1)) { - if (!enif_inspect_iolist_as_binary(env, argv[0], &message_bin) || - message_bin.size > MESSAGE_BUFSIZ) { - return atom_badarg; - } - memcpy(messagebuf, (char *) message_bin.data, message_bin.size); - messagebuf[message_bin.size] = '\0'; - DTRACE1(user_trace_s1, messagebuf); - return atom_true; - } else { - return atom_false; - } + return erl_nif_user_trace_s1(env, argc, argv); #else return atom_error; #endif } -void -get_string_maybe(ErlNifEnv *env, - const ERL_NIF_TERM term, char **ptr, char *buf, int bufsiz) -{ - ErlNifBinary str_bin; - - if (!enif_inspect_iolist_as_binary(env, term, &str_bin) || - str_bin.size > bufsiz) { - *ptr = NULL; - } else { - memcpy(buf, (char *) str_bin.data, str_bin.size); - buf[str_bin.size] = '\0'; - *ptr = buf; - } -} - static ERL_NIF_TERM user_trace_i4s4(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { #ifdef HAVE_USE_DTRACE - DTRACE_CHARBUF(procbuf, 32 + 1); - DTRACE_CHARBUF(user_tagbuf, MESSAGE_BUFSIZ + 1); - char *utbuf = NULL; - ErlNifSInt64 i1, i2, i3, i4; - DTRACE_CHARBUF(messagebuf1, MESSAGE_BUFSIZ + 1); - DTRACE_CHARBUF(messagebuf2, MESSAGE_BUFSIZ + 1); - DTRACE_CHARBUF(messagebuf3, MESSAGE_BUFSIZ + 1); - DTRACE_CHARBUF(messagebuf4, MESSAGE_BUFSIZ + 1); - char *mbuf1 = NULL, *mbuf2 = NULL, *mbuf3 = NULL, *mbuf4 = NULL; - - if (DTRACE_ENABLED(user_trace_i4s4)) { - dtrace_nifenv_str(env, procbuf); - get_string_maybe(env, argv[0], &utbuf, user_tagbuf, MESSAGE_BUFSIZ); - if (! enif_get_int64(env, argv[1], &i1)) - i1 = 0; - if (! enif_get_int64(env, argv[2], &i2)) - i2 = 0; - if (! enif_get_int64(env, argv[3], &i3)) - i3 = 0; - if (! enif_get_int64(env, argv[4], &i4)) - i4 = 0; - get_string_maybe(env, argv[5], &mbuf1, messagebuf1, MESSAGE_BUFSIZ); - get_string_maybe(env, argv[6], &mbuf2, messagebuf2, MESSAGE_BUFSIZ); - get_string_maybe(env, argv[7], &mbuf3, messagebuf3, MESSAGE_BUFSIZ); - get_string_maybe(env, argv[8], &mbuf4, messagebuf4, MESSAGE_BUFSIZ); - DTRACE10(user_trace_i4s4, procbuf, utbuf, - i1, i2, i3, i4, mbuf1, mbuf2, mbuf3, mbuf4); - return atom_true; - } else { - return atom_false; - } + return erl_nif_user_trace_i4s4(env, argc, argv); #else return atom_error; #endif } -#define DTRACE10_LABEL(name, label, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ - erlang_##name##label((a0), (a1), (a2), (a3), (a4), (a5), (a6), (a7), (a8), (a9)) -#define N_STATEMENT(the_label) \ - case the_label: \ - if (DTRACE_ENABLED(user_trace_n##the_label)) { \ - dtrace_nifenv_str(env, procbuf); \ - get_string_maybe(env, argv[1], &utbuf, user_tagbuf, MESSAGE_BUFSIZ); \ - if (! enif_get_int64(env, argv[2], &i1)) \ - i1 = 0; \ - if (! enif_get_int64(env, argv[3], &i2)) \ - i2 = 0; \ - if (! enif_get_int64(env, argv[4], &i3)) \ - i3 = 0; \ - if (! enif_get_int64(env, argv[5], &i4)) \ - i4 = 0; \ - get_string_maybe(env, argv[6], &mbuf1, messagebuf1, MESSAGE_BUFSIZ); \ - get_string_maybe(env, argv[7], &mbuf2, messagebuf2, MESSAGE_BUFSIZ); \ - get_string_maybe(env, argv[8], &mbuf3, messagebuf3, MESSAGE_BUFSIZ); \ - get_string_maybe(env, argv[9], &mbuf4, messagebuf4, MESSAGE_BUFSIZ); \ - DTRACE10_LABEL(user_trace_n, the_label, procbuf, utbuf, \ - i1, i2, i3, i4, mbuf1, mbuf2, mbuf3, mbuf4); \ - return atom_true; \ - } else { \ - return atom_false; \ - } \ - break - static ERL_NIF_TERM user_trace_n(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { #ifdef HAVE_USE_DTRACE - DTRACE_CHARBUF(procbuf, 32 + 1); - DTRACE_CHARBUF(user_tagbuf, MESSAGE_BUFSIZ + 1); - char *utbuf = NULL; - ErlNifSInt64 i1, i2, i3, i4; - DTRACE_CHARBUF(messagebuf1, MESSAGE_BUFSIZ + 1); - DTRACE_CHARBUF(messagebuf2, MESSAGE_BUFSIZ + 1); - DTRACE_CHARBUF(messagebuf3, MESSAGE_BUFSIZ + 1); - DTRACE_CHARBUF(messagebuf4, MESSAGE_BUFSIZ + 1); - char *mbuf1 = NULL, *mbuf2 = NULL, *mbuf3 = NULL, *mbuf4 = NULL; - ErlNifSInt64 label = 0; - - if (! enif_get_int64(env, argv[0], &label) || label < 0 || label > 1023) - return atom_badarg; - switch (label) { - N_STATEMENT(0); - N_STATEMENT(1); - N_STATEMENT(2); - N_STATEMENT(3); - N_STATEMENT(4); - N_STATEMENT(5); - N_STATEMENT(6); - N_STATEMENT(7); - N_STATEMENT(8); - N_STATEMENT(9); - N_STATEMENT(10); - N_STATEMENT(11); - N_STATEMENT(12); - N_STATEMENT(13); - N_STATEMENT(14); - N_STATEMENT(15); - N_STATEMENT(16); - N_STATEMENT(17); - N_STATEMENT(18); - N_STATEMENT(19); - N_STATEMENT(20); - N_STATEMENT(21); - N_STATEMENT(22); - N_STATEMENT(23); - N_STATEMENT(24); - N_STATEMENT(25); - N_STATEMENT(26); - N_STATEMENT(27); - N_STATEMENT(28); - N_STATEMENT(29); - N_STATEMENT(30); - N_STATEMENT(31); - N_STATEMENT(32); - N_STATEMENT(33); - N_STATEMENT(34); - N_STATEMENT(35); - N_STATEMENT(36); - N_STATEMENT(37); - N_STATEMENT(38); - N_STATEMENT(39); - N_STATEMENT(40); - N_STATEMENT(41); - N_STATEMENT(42); - N_STATEMENT(43); - N_STATEMENT(44); - N_STATEMENT(45); - N_STATEMENT(46); - N_STATEMENT(47); - N_STATEMENT(48); - N_STATEMENT(49); - N_STATEMENT(50); - N_STATEMENT(51); - N_STATEMENT(52); - N_STATEMENT(53); - N_STATEMENT(54); - N_STATEMENT(55); - N_STATEMENT(56); - N_STATEMENT(57); - N_STATEMENT(58); - N_STATEMENT(59); - N_STATEMENT(60); - N_STATEMENT(61); - N_STATEMENT(62); - N_STATEMENT(63); - N_STATEMENT(64); - N_STATEMENT(65); - N_STATEMENT(66); - N_STATEMENT(67); - N_STATEMENT(68); - N_STATEMENT(69); - N_STATEMENT(70); - N_STATEMENT(71); - N_STATEMENT(72); - N_STATEMENT(73); - N_STATEMENT(74); - N_STATEMENT(75); - N_STATEMENT(76); - N_STATEMENT(77); - N_STATEMENT(78); - N_STATEMENT(79); - N_STATEMENT(80); - N_STATEMENT(81); - N_STATEMENT(82); - N_STATEMENT(83); - N_STATEMENT(84); - N_STATEMENT(85); - N_STATEMENT(86); - N_STATEMENT(87); - N_STATEMENT(88); - N_STATEMENT(89); - N_STATEMENT(90); - N_STATEMENT(91); - N_STATEMENT(92); - N_STATEMENT(93); - N_STATEMENT(94); - N_STATEMENT(95); - N_STATEMENT(96); - N_STATEMENT(97); - N_STATEMENT(98); - N_STATEMENT(99); - N_STATEMENT(100); - N_STATEMENT(101); - N_STATEMENT(102); - N_STATEMENT(103); - N_STATEMENT(104); - N_STATEMENT(105); - N_STATEMENT(106); - N_STATEMENT(107); - N_STATEMENT(108); - N_STATEMENT(109); - N_STATEMENT(110); - N_STATEMENT(111); - N_STATEMENT(112); - N_STATEMENT(113); - N_STATEMENT(114); - N_STATEMENT(115); - N_STATEMENT(116); - N_STATEMENT(117); - N_STATEMENT(118); - N_STATEMENT(119); - N_STATEMENT(120); - N_STATEMENT(121); - N_STATEMENT(122); - N_STATEMENT(123); - N_STATEMENT(124); - N_STATEMENT(125); - N_STATEMENT(126); - N_STATEMENT(127); - N_STATEMENT(128); - N_STATEMENT(129); - N_STATEMENT(130); - N_STATEMENT(131); - N_STATEMENT(132); - N_STATEMENT(133); - N_STATEMENT(134); - N_STATEMENT(135); - N_STATEMENT(136); - N_STATEMENT(137); - N_STATEMENT(138); - N_STATEMENT(139); - N_STATEMENT(140); - N_STATEMENT(141); - N_STATEMENT(142); - N_STATEMENT(143); - N_STATEMENT(144); - N_STATEMENT(145); - N_STATEMENT(146); - N_STATEMENT(147); - N_STATEMENT(148); - N_STATEMENT(149); - N_STATEMENT(150); - N_STATEMENT(151); - N_STATEMENT(152); - N_STATEMENT(153); - N_STATEMENT(154); - N_STATEMENT(155); - N_STATEMENT(156); - N_STATEMENT(157); - N_STATEMENT(158); - N_STATEMENT(159); - N_STATEMENT(160); - N_STATEMENT(161); - N_STATEMENT(162); - N_STATEMENT(163); - N_STATEMENT(164); - N_STATEMENT(165); - N_STATEMENT(166); - N_STATEMENT(167); - N_STATEMENT(168); - N_STATEMENT(169); - N_STATEMENT(170); - N_STATEMENT(171); - N_STATEMENT(172); - N_STATEMENT(173); - N_STATEMENT(174); - N_STATEMENT(175); - N_STATEMENT(176); - N_STATEMENT(177); - N_STATEMENT(178); - N_STATEMENT(179); - N_STATEMENT(180); - N_STATEMENT(181); - N_STATEMENT(182); - N_STATEMENT(183); - N_STATEMENT(184); - N_STATEMENT(185); - N_STATEMENT(186); - N_STATEMENT(187); - N_STATEMENT(188); - N_STATEMENT(189); - N_STATEMENT(190); - N_STATEMENT(191); - N_STATEMENT(192); - N_STATEMENT(193); - N_STATEMENT(194); - N_STATEMENT(195); - N_STATEMENT(196); - N_STATEMENT(197); - N_STATEMENT(198); - N_STATEMENT(199); - N_STATEMENT(200); - N_STATEMENT(201); - N_STATEMENT(202); - N_STATEMENT(203); - N_STATEMENT(204); - N_STATEMENT(205); - N_STATEMENT(206); - N_STATEMENT(207); - N_STATEMENT(208); - N_STATEMENT(209); - N_STATEMENT(210); - N_STATEMENT(211); - N_STATEMENT(212); - N_STATEMENT(213); - N_STATEMENT(214); - N_STATEMENT(215); - N_STATEMENT(216); - N_STATEMENT(217); - N_STATEMENT(218); - N_STATEMENT(219); - N_STATEMENT(220); - N_STATEMENT(221); - N_STATEMENT(222); - N_STATEMENT(223); - N_STATEMENT(224); - N_STATEMENT(225); - N_STATEMENT(226); - N_STATEMENT(227); - N_STATEMENT(228); - N_STATEMENT(229); - N_STATEMENT(230); - N_STATEMENT(231); - N_STATEMENT(232); - N_STATEMENT(233); - N_STATEMENT(234); - N_STATEMENT(235); - N_STATEMENT(236); - N_STATEMENT(237); - N_STATEMENT(238); - N_STATEMENT(239); - N_STATEMENT(240); - N_STATEMENT(241); - N_STATEMENT(242); - N_STATEMENT(243); - N_STATEMENT(244); - N_STATEMENT(245); - N_STATEMENT(246); - N_STATEMENT(247); - N_STATEMENT(248); - N_STATEMENT(249); - N_STATEMENT(250); - N_STATEMENT(251); - N_STATEMENT(252); - N_STATEMENT(253); - N_STATEMENT(254); - N_STATEMENT(255); - N_STATEMENT(256); - N_STATEMENT(257); - N_STATEMENT(258); - N_STATEMENT(259); - N_STATEMENT(260); - N_STATEMENT(261); - N_STATEMENT(262); - N_STATEMENT(263); - N_STATEMENT(264); - N_STATEMENT(265); - N_STATEMENT(266); - N_STATEMENT(267); - N_STATEMENT(268); - N_STATEMENT(269); - N_STATEMENT(270); - N_STATEMENT(271); - N_STATEMENT(272); - N_STATEMENT(273); - N_STATEMENT(274); - N_STATEMENT(275); - N_STATEMENT(276); - N_STATEMENT(277); - N_STATEMENT(278); - N_STATEMENT(279); - N_STATEMENT(280); - N_STATEMENT(281); - N_STATEMENT(282); - N_STATEMENT(283); - N_STATEMENT(284); - N_STATEMENT(285); - N_STATEMENT(286); - N_STATEMENT(287); - N_STATEMENT(288); - N_STATEMENT(289); - N_STATEMENT(290); - N_STATEMENT(291); - N_STATEMENT(292); - N_STATEMENT(293); - N_STATEMENT(294); - N_STATEMENT(295); - N_STATEMENT(296); - N_STATEMENT(297); - N_STATEMENT(298); - N_STATEMENT(299); - N_STATEMENT(300); - N_STATEMENT(301); - N_STATEMENT(302); - N_STATEMENT(303); - N_STATEMENT(304); - N_STATEMENT(305); - N_STATEMENT(306); - N_STATEMENT(307); - N_STATEMENT(308); - N_STATEMENT(309); - N_STATEMENT(310); - N_STATEMENT(311); - N_STATEMENT(312); - N_STATEMENT(313); - N_STATEMENT(314); - N_STATEMENT(315); - N_STATEMENT(316); - N_STATEMENT(317); - N_STATEMENT(318); - N_STATEMENT(319); - N_STATEMENT(320); - N_STATEMENT(321); - N_STATEMENT(322); - N_STATEMENT(323); - N_STATEMENT(324); - N_STATEMENT(325); - N_STATEMENT(326); - N_STATEMENT(327); - N_STATEMENT(328); - N_STATEMENT(329); - N_STATEMENT(330); - N_STATEMENT(331); - N_STATEMENT(332); - N_STATEMENT(333); - N_STATEMENT(334); - N_STATEMENT(335); - N_STATEMENT(336); - N_STATEMENT(337); - N_STATEMENT(338); - N_STATEMENT(339); - N_STATEMENT(340); - N_STATEMENT(341); - N_STATEMENT(342); - N_STATEMENT(343); - N_STATEMENT(344); - N_STATEMENT(345); - N_STATEMENT(346); - N_STATEMENT(347); - N_STATEMENT(348); - N_STATEMENT(349); - N_STATEMENT(350); - N_STATEMENT(351); - N_STATEMENT(352); - N_STATEMENT(353); - N_STATEMENT(354); - N_STATEMENT(355); - N_STATEMENT(356); - N_STATEMENT(357); - N_STATEMENT(358); - N_STATEMENT(359); - N_STATEMENT(360); - N_STATEMENT(361); - N_STATEMENT(362); - N_STATEMENT(363); - N_STATEMENT(364); - N_STATEMENT(365); - N_STATEMENT(366); - N_STATEMENT(367); - N_STATEMENT(368); - N_STATEMENT(369); - N_STATEMENT(370); - N_STATEMENT(371); - N_STATEMENT(372); - N_STATEMENT(373); - N_STATEMENT(374); - N_STATEMENT(375); - N_STATEMENT(376); - N_STATEMENT(377); - N_STATEMENT(378); - N_STATEMENT(379); - N_STATEMENT(380); - N_STATEMENT(381); - N_STATEMENT(382); - N_STATEMENT(383); - N_STATEMENT(384); - N_STATEMENT(385); - N_STATEMENT(386); - N_STATEMENT(387); - N_STATEMENT(388); - N_STATEMENT(389); - N_STATEMENT(390); - N_STATEMENT(391); - N_STATEMENT(392); - N_STATEMENT(393); - N_STATEMENT(394); - N_STATEMENT(395); - N_STATEMENT(396); - N_STATEMENT(397); - N_STATEMENT(398); - N_STATEMENT(399); - N_STATEMENT(400); - N_STATEMENT(401); - N_STATEMENT(402); - N_STATEMENT(403); - N_STATEMENT(404); - N_STATEMENT(405); - N_STATEMENT(406); - N_STATEMENT(407); - N_STATEMENT(408); - N_STATEMENT(409); - N_STATEMENT(410); - N_STATEMENT(411); - N_STATEMENT(412); - N_STATEMENT(413); - N_STATEMENT(414); - N_STATEMENT(415); - N_STATEMENT(416); - N_STATEMENT(417); - N_STATEMENT(418); - N_STATEMENT(419); - N_STATEMENT(420); - N_STATEMENT(421); - N_STATEMENT(422); - N_STATEMENT(423); - N_STATEMENT(424); - N_STATEMENT(425); - N_STATEMENT(426); - N_STATEMENT(427); - N_STATEMENT(428); - N_STATEMENT(429); - N_STATEMENT(430); - N_STATEMENT(431); - N_STATEMENT(432); - N_STATEMENT(433); - N_STATEMENT(434); - N_STATEMENT(435); - N_STATEMENT(436); - N_STATEMENT(437); - N_STATEMENT(438); - N_STATEMENT(439); - N_STATEMENT(440); - N_STATEMENT(441); - N_STATEMENT(442); - N_STATEMENT(443); - N_STATEMENT(444); - N_STATEMENT(445); - N_STATEMENT(446); - N_STATEMENT(447); - N_STATEMENT(448); - N_STATEMENT(449); - N_STATEMENT(450); - N_STATEMENT(451); - N_STATEMENT(452); - N_STATEMENT(453); - N_STATEMENT(454); - N_STATEMENT(455); - N_STATEMENT(456); - N_STATEMENT(457); - N_STATEMENT(458); - N_STATEMENT(459); - N_STATEMENT(460); - N_STATEMENT(461); - N_STATEMENT(462); - N_STATEMENT(463); - N_STATEMENT(464); - N_STATEMENT(465); - N_STATEMENT(466); - N_STATEMENT(467); - N_STATEMENT(468); - N_STATEMENT(469); - N_STATEMENT(470); - N_STATEMENT(471); - N_STATEMENT(472); - N_STATEMENT(473); - N_STATEMENT(474); - N_STATEMENT(475); - N_STATEMENT(476); - N_STATEMENT(477); - N_STATEMENT(478); - N_STATEMENT(479); - N_STATEMENT(480); - N_STATEMENT(481); - N_STATEMENT(482); - N_STATEMENT(483); - N_STATEMENT(484); - N_STATEMENT(485); - N_STATEMENT(486); - N_STATEMENT(487); - N_STATEMENT(488); - N_STATEMENT(489); - N_STATEMENT(490); - N_STATEMENT(491); - N_STATEMENT(492); - N_STATEMENT(493); - N_STATEMENT(494); - N_STATEMENT(495); - N_STATEMENT(496); - N_STATEMENT(497); - N_STATEMENT(498); - N_STATEMENT(499); - N_STATEMENT(500); - N_STATEMENT(501); - N_STATEMENT(502); - N_STATEMENT(503); - N_STATEMENT(504); - N_STATEMENT(505); - N_STATEMENT(506); - N_STATEMENT(507); - N_STATEMENT(508); - N_STATEMENT(509); - N_STATEMENT(510); - N_STATEMENT(511); - N_STATEMENT(512); - N_STATEMENT(513); - N_STATEMENT(514); - N_STATEMENT(515); - N_STATEMENT(516); - N_STATEMENT(517); - N_STATEMENT(518); - N_STATEMENT(519); - N_STATEMENT(520); - N_STATEMENT(521); - N_STATEMENT(522); - N_STATEMENT(523); - N_STATEMENT(524); - N_STATEMENT(525); - N_STATEMENT(526); - N_STATEMENT(527); - N_STATEMENT(528); - N_STATEMENT(529); - N_STATEMENT(530); - N_STATEMENT(531); - N_STATEMENT(532); - N_STATEMENT(533); - N_STATEMENT(534); - N_STATEMENT(535); - N_STATEMENT(536); - N_STATEMENT(537); - N_STATEMENT(538); - N_STATEMENT(539); - N_STATEMENT(540); - N_STATEMENT(541); - N_STATEMENT(542); - N_STATEMENT(543); - N_STATEMENT(544); - N_STATEMENT(545); - N_STATEMENT(546); - N_STATEMENT(547); - N_STATEMENT(548); - N_STATEMENT(549); - N_STATEMENT(550); - N_STATEMENT(551); - N_STATEMENT(552); - N_STATEMENT(553); - N_STATEMENT(554); - N_STATEMENT(555); - N_STATEMENT(556); - N_STATEMENT(557); - N_STATEMENT(558); - N_STATEMENT(559); - N_STATEMENT(560); - N_STATEMENT(561); - N_STATEMENT(562); - N_STATEMENT(563); - N_STATEMENT(564); - N_STATEMENT(565); - N_STATEMENT(566); - N_STATEMENT(567); - N_STATEMENT(568); - N_STATEMENT(569); - N_STATEMENT(570); - N_STATEMENT(571); - N_STATEMENT(572); - N_STATEMENT(573); - N_STATEMENT(574); - N_STATEMENT(575); - N_STATEMENT(576); - N_STATEMENT(577); - N_STATEMENT(578); - N_STATEMENT(579); - N_STATEMENT(580); - N_STATEMENT(581); - N_STATEMENT(582); - N_STATEMENT(583); - N_STATEMENT(584); - N_STATEMENT(585); - N_STATEMENT(586); - N_STATEMENT(587); - N_STATEMENT(588); - N_STATEMENT(589); - N_STATEMENT(590); - N_STATEMENT(591); - N_STATEMENT(592); - N_STATEMENT(593); - N_STATEMENT(594); - N_STATEMENT(595); - N_STATEMENT(596); - N_STATEMENT(597); - N_STATEMENT(598); - N_STATEMENT(599); - N_STATEMENT(600); - N_STATEMENT(601); - N_STATEMENT(602); - N_STATEMENT(603); - N_STATEMENT(604); - N_STATEMENT(605); - N_STATEMENT(606); - N_STATEMENT(607); - N_STATEMENT(608); - N_STATEMENT(609); - N_STATEMENT(610); - N_STATEMENT(611); - N_STATEMENT(612); - N_STATEMENT(613); - N_STATEMENT(614); - N_STATEMENT(615); - N_STATEMENT(616); - N_STATEMENT(617); - N_STATEMENT(618); - N_STATEMENT(619); - N_STATEMENT(620); - N_STATEMENT(621); - N_STATEMENT(622); - N_STATEMENT(623); - N_STATEMENT(624); - N_STATEMENT(625); - N_STATEMENT(626); - N_STATEMENT(627); - N_STATEMENT(628); - N_STATEMENT(629); - N_STATEMENT(630); - N_STATEMENT(631); - N_STATEMENT(632); - N_STATEMENT(633); - N_STATEMENT(634); - N_STATEMENT(635); - N_STATEMENT(636); - N_STATEMENT(637); - N_STATEMENT(638); - N_STATEMENT(639); - N_STATEMENT(640); - N_STATEMENT(641); - N_STATEMENT(642); - N_STATEMENT(643); - N_STATEMENT(644); - N_STATEMENT(645); - N_STATEMENT(646); - N_STATEMENT(647); - N_STATEMENT(648); - N_STATEMENT(649); - N_STATEMENT(650); - N_STATEMENT(651); - N_STATEMENT(652); - N_STATEMENT(653); - N_STATEMENT(654); - N_STATEMENT(655); - N_STATEMENT(656); - N_STATEMENT(657); - N_STATEMENT(658); - N_STATEMENT(659); - N_STATEMENT(660); - N_STATEMENT(661); - N_STATEMENT(662); - N_STATEMENT(663); - N_STATEMENT(664); - N_STATEMENT(665); - N_STATEMENT(666); - N_STATEMENT(667); - N_STATEMENT(668); - N_STATEMENT(669); - N_STATEMENT(670); - N_STATEMENT(671); - N_STATEMENT(672); - N_STATEMENT(673); - N_STATEMENT(674); - N_STATEMENT(675); - N_STATEMENT(676); - N_STATEMENT(677); - N_STATEMENT(678); - N_STATEMENT(679); - N_STATEMENT(680); - N_STATEMENT(681); - N_STATEMENT(682); - N_STATEMENT(683); - N_STATEMENT(684); - N_STATEMENT(685); - N_STATEMENT(686); - N_STATEMENT(687); - N_STATEMENT(688); - N_STATEMENT(689); - N_STATEMENT(690); - N_STATEMENT(691); - N_STATEMENT(692); - N_STATEMENT(693); - N_STATEMENT(694); - N_STATEMENT(695); - N_STATEMENT(696); - N_STATEMENT(697); - N_STATEMENT(698); - N_STATEMENT(699); - N_STATEMENT(700); - N_STATEMENT(701); - N_STATEMENT(702); - N_STATEMENT(703); - N_STATEMENT(704); - N_STATEMENT(705); - N_STATEMENT(706); - N_STATEMENT(707); - N_STATEMENT(708); - N_STATEMENT(709); - N_STATEMENT(710); - N_STATEMENT(711); - N_STATEMENT(712); - N_STATEMENT(713); - N_STATEMENT(714); - N_STATEMENT(715); - N_STATEMENT(716); - N_STATEMENT(717); - N_STATEMENT(718); - N_STATEMENT(719); - N_STATEMENT(720); - N_STATEMENT(721); - N_STATEMENT(722); - N_STATEMENT(723); - N_STATEMENT(724); - N_STATEMENT(725); - N_STATEMENT(726); - N_STATEMENT(727); - N_STATEMENT(728); - N_STATEMENT(729); - N_STATEMENT(730); - N_STATEMENT(731); - N_STATEMENT(732); - N_STATEMENT(733); - N_STATEMENT(734); - N_STATEMENT(735); - N_STATEMENT(736); - N_STATEMENT(737); - N_STATEMENT(738); - N_STATEMENT(739); - N_STATEMENT(740); - N_STATEMENT(741); - N_STATEMENT(742); - N_STATEMENT(743); - N_STATEMENT(744); - N_STATEMENT(745); - N_STATEMENT(746); - N_STATEMENT(747); - N_STATEMENT(748); - N_STATEMENT(749); - N_STATEMENT(750); - N_STATEMENT(751); - N_STATEMENT(752); - N_STATEMENT(753); - N_STATEMENT(754); - N_STATEMENT(755); - N_STATEMENT(756); - N_STATEMENT(757); - N_STATEMENT(758); - N_STATEMENT(759); - N_STATEMENT(760); - N_STATEMENT(761); - N_STATEMENT(762); - N_STATEMENT(763); - N_STATEMENT(764); - N_STATEMENT(765); - N_STATEMENT(766); - N_STATEMENT(767); - N_STATEMENT(768); - N_STATEMENT(769); - N_STATEMENT(770); - N_STATEMENT(771); - N_STATEMENT(772); - N_STATEMENT(773); - N_STATEMENT(774); - N_STATEMENT(775); - N_STATEMENT(776); - N_STATEMENT(777); - N_STATEMENT(778); - N_STATEMENT(779); - N_STATEMENT(780); - N_STATEMENT(781); - N_STATEMENT(782); - N_STATEMENT(783); - N_STATEMENT(784); - N_STATEMENT(785); - N_STATEMENT(786); - N_STATEMENT(787); - N_STATEMENT(788); - N_STATEMENT(789); - N_STATEMENT(790); - N_STATEMENT(791); - N_STATEMENT(792); - N_STATEMENT(793); - N_STATEMENT(794); - N_STATEMENT(795); - N_STATEMENT(796); - N_STATEMENT(797); - N_STATEMENT(798); - N_STATEMENT(799); - N_STATEMENT(800); - N_STATEMENT(801); - N_STATEMENT(802); - N_STATEMENT(803); - N_STATEMENT(804); - N_STATEMENT(805); - N_STATEMENT(806); - N_STATEMENT(807); - N_STATEMENT(808); - N_STATEMENT(809); - N_STATEMENT(810); - N_STATEMENT(811); - N_STATEMENT(812); - N_STATEMENT(813); - N_STATEMENT(814); - N_STATEMENT(815); - N_STATEMENT(816); - N_STATEMENT(817); - N_STATEMENT(818); - N_STATEMENT(819); - N_STATEMENT(820); - N_STATEMENT(821); - N_STATEMENT(822); - N_STATEMENT(823); - N_STATEMENT(824); - N_STATEMENT(825); - N_STATEMENT(826); - N_STATEMENT(827); - N_STATEMENT(828); - N_STATEMENT(829); - N_STATEMENT(830); - N_STATEMENT(831); - N_STATEMENT(832); - N_STATEMENT(833); - N_STATEMENT(834); - N_STATEMENT(835); - N_STATEMENT(836); - N_STATEMENT(837); - N_STATEMENT(838); - N_STATEMENT(839); - N_STATEMENT(840); - N_STATEMENT(841); - N_STATEMENT(842); - N_STATEMENT(843); - N_STATEMENT(844); - N_STATEMENT(845); - N_STATEMENT(846); - N_STATEMENT(847); - N_STATEMENT(848); - N_STATEMENT(849); - N_STATEMENT(850); - N_STATEMENT(851); - N_STATEMENT(852); - N_STATEMENT(853); - N_STATEMENT(854); - N_STATEMENT(855); - N_STATEMENT(856); - N_STATEMENT(857); - N_STATEMENT(858); - N_STATEMENT(859); - N_STATEMENT(860); - N_STATEMENT(861); - N_STATEMENT(862); - N_STATEMENT(863); - N_STATEMENT(864); - N_STATEMENT(865); - N_STATEMENT(866); - N_STATEMENT(867); - N_STATEMENT(868); - N_STATEMENT(869); - N_STATEMENT(870); - N_STATEMENT(871); - N_STATEMENT(872); - N_STATEMENT(873); - N_STATEMENT(874); - N_STATEMENT(875); - N_STATEMENT(876); - N_STATEMENT(877); - N_STATEMENT(878); - N_STATEMENT(879); - N_STATEMENT(880); - N_STATEMENT(881); - N_STATEMENT(882); - N_STATEMENT(883); - N_STATEMENT(884); - N_STATEMENT(885); - N_STATEMENT(886); - N_STATEMENT(887); - N_STATEMENT(888); - N_STATEMENT(889); - N_STATEMENT(890); - N_STATEMENT(891); - N_STATEMENT(892); - N_STATEMENT(893); - N_STATEMENT(894); - N_STATEMENT(895); - N_STATEMENT(896); - N_STATEMENT(897); - N_STATEMENT(898); - N_STATEMENT(899); - N_STATEMENT(900); - N_STATEMENT(901); - N_STATEMENT(902); - N_STATEMENT(903); - N_STATEMENT(904); - N_STATEMENT(905); - N_STATEMENT(906); - N_STATEMENT(907); - N_STATEMENT(908); - N_STATEMENT(909); - N_STATEMENT(910); - N_STATEMENT(911); - N_STATEMENT(912); - N_STATEMENT(913); - N_STATEMENT(914); - N_STATEMENT(915); - N_STATEMENT(916); - N_STATEMENT(917); - N_STATEMENT(918); - N_STATEMENT(919); - N_STATEMENT(920); - N_STATEMENT(921); - N_STATEMENT(922); - N_STATEMENT(923); - N_STATEMENT(924); - N_STATEMENT(925); - N_STATEMENT(926); - N_STATEMENT(927); - N_STATEMENT(928); - N_STATEMENT(929); - N_STATEMENT(930); - N_STATEMENT(931); - N_STATEMENT(932); - N_STATEMENT(933); - N_STATEMENT(934); - N_STATEMENT(935); - N_STATEMENT(936); - N_STATEMENT(937); - N_STATEMENT(938); - N_STATEMENT(939); - N_STATEMENT(940); - N_STATEMENT(941); - N_STATEMENT(942); - N_STATEMENT(943); - N_STATEMENT(944); - N_STATEMENT(945); - N_STATEMENT(946); - N_STATEMENT(947); - N_STATEMENT(948); - N_STATEMENT(949); - N_STATEMENT(950); - N_STATEMENT(951); - N_STATEMENT(952); - N_STATEMENT(953); - N_STATEMENT(954); - N_STATEMENT(955); - N_STATEMENT(956); - N_STATEMENT(957); - N_STATEMENT(958); - N_STATEMENT(959); - N_STATEMENT(960); - N_STATEMENT(961); - N_STATEMENT(962); - N_STATEMENT(963); - N_STATEMENT(964); - N_STATEMENT(965); - N_STATEMENT(966); - N_STATEMENT(967); - N_STATEMENT(968); - N_STATEMENT(969); - N_STATEMENT(970); - N_STATEMENT(971); - N_STATEMENT(972); - N_STATEMENT(973); - N_STATEMENT(974); - N_STATEMENT(975); - N_STATEMENT(976); - N_STATEMENT(977); - N_STATEMENT(978); - N_STATEMENT(979); - N_STATEMENT(980); - N_STATEMENT(981); - N_STATEMENT(982); - N_STATEMENT(983); - N_STATEMENT(984); - N_STATEMENT(985); - N_STATEMENT(986); - N_STATEMENT(987); - N_STATEMENT(988); - N_STATEMENT(989); - N_STATEMENT(990); - N_STATEMENT(991); - N_STATEMENT(992); - N_STATEMENT(993); - N_STATEMENT(994); - N_STATEMENT(995); - N_STATEMENT(996); - N_STATEMENT(997); - N_STATEMENT(998); - N_STATEMENT(999); - N_STATEMENT(1000); - N_STATEMENT(1001); - N_STATEMENT(1002); - N_STATEMENT(1003); - N_STATEMENT(1004); - N_STATEMENT(1005); - N_STATEMENT(1006); - N_STATEMENT(1007); - N_STATEMENT(1008); - N_STATEMENT(1009); - N_STATEMENT(1010); - N_STATEMENT(1011); - N_STATEMENT(1012); - N_STATEMENT(1013); - N_STATEMENT(1014); - N_STATEMENT(1015); - N_STATEMENT(1016); - N_STATEMENT(1017); - N_STATEMENT(1018); - N_STATEMENT(1019); - N_STATEMENT(1020); - N_STATEMENT(1021); - N_STATEMENT(1022); - N_STATEMENT(1023); - } - return atom_error; /* NOTREACHED, shut up the compiler */ + return erl_nif_user_trace_n(env, argc, argv); #else return atom_error; #endif -- cgit v1.2.3