diff options
Diffstat (limited to 'lib/tools')
-rw-r--r-- | lib/tools/doc/src/cover.xml | 18 | ||||
-rw-r--r-- | lib/tools/doc/src/venn1.ps | 205 | ||||
-rw-r--r-- | lib/tools/doc/src/venn2.ps | 284 | ||||
-rw-r--r-- | lib/tools/emacs/erlang-pkg.el | 2 | ||||
-rw-r--r-- | lib/tools/emacs/erlang-start.el | 3 | ||||
-rw-r--r-- | lib/tools/src/cover.erl | 104 | ||||
-rw-r--r-- | lib/tools/src/fprof.erl | 8 | ||||
-rw-r--r-- | lib/tools/test/cover_SUITE.erl | 26 |
8 files changed, 107 insertions, 543 deletions
diff --git a/lib/tools/doc/src/cover.xml b/lib/tools/doc/src/cover.xml index a2444ec947..beefd4ee8d 100644 --- a/lib/tools/doc/src/cover.xml +++ b/lib/tools/doc/src/cover.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>2001</year> - <year>2012</year> + <year>2013</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> @@ -214,7 +214,9 @@ <c>{no_abstract_code,BeamFile}</c> is returned. If the abstract code is encrypted, and no key is available for decrypting it, the error reason - <c><![CDATA[{encrypted_abstract_code,BeamFile} is returned. <p>If only the module name (i.e. not the full name of the <c>.beam]]></c> file) is given to this function, the + <c>{encrypted_abstract_code,BeamFile}</c> is returned.</p> + <p>If only the module name (i.e. not the full name of the + <c>.beam</c> file) is given to this function, the <c>.beam</c> file is found by calling <c>code:which(Module)</c>. If no <c>.beam</c> file is found, the error reason <c>non_existing</c> is returned. If the @@ -313,9 +315,15 @@ file, i.e. using <c>compile_beam/1</c> or <c>compile_beam_directory/0,1</c>, it is assumed that the source code can be found in the same directory as the - <c>.beam</c> file, or in <c>../src</c> relative to that - directory. If no source code is found, - <c>,{error,no_source_code_found}</c> is returned.</p> + <c>.beam</c> file, in <c>../src</c> relative to that + directory, or using the source path in + <c>Module:module_info(compile)</c>. When using the latter, + two paths are examined: first the one constructed by + joining <c>../src</c> and the tail of the compiled path + below a trailing <c>src</c> component, then the compiled + path itself. + If no source code is found, + <c>{error,no_source_code_found}</c> is returned.</p> <p>HINT: It is possible to issue multiple analyse_to_file commands at the same time. </p> </desc> diff --git a/lib/tools/doc/src/venn1.ps b/lib/tools/doc/src/venn1.ps deleted file mode 100644 index 9c12048728..0000000000 --- a/lib/tools/doc/src/venn1.ps +++ /dev/null @@ -1,205 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: venn1.ps -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Tue Sep 19 19:28:28 2000 -%%For: hasse@helios (Hans Bolinder) -%%Orientation: Portrait -%%BoundingBox: 0 0 347 253 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --76.0 302.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 6025 m -1000 -1000 l 8035 -1000 l 8035 6025 l cp clip - 0.06000 0.06000 sc -/Times-Roman ff 165.00 scf sf -5127 4544 m -gs 1 -1 sc (Definition and Use) col0 sh gr -% Polyline -7.500 slw -n 6675 3149 m 6985 3149 l gs 0.95 setgray ef gr gs col0 s gr -/Times-Roman ff 120.00 scf sf -2078 3794 m -gs 1 -1 sc (XU) col0 sh gr -/Times-Roman ff 120.00 scf sf -2071 3944 m -gs 1 -1 sc (and) col0 sh gr -/Times-Roman ff 120.00 scf sf -2078 4093 m -gs 1 -1 sc (LU) col0 sh gr -/Times-Roman ff 120.00 scf sf -1594 3934 m -gs 1 -1 sc (LU) col0 sh gr -/Times-Roman ff 120.00 scf sf -2634 3934 m -gs 1 -1 sc (XU) col0 sh gr -/Times-Roman ff 120.00 scf sf -1337 3934 m -gs 1 -1 sc (UU) col0 sh gr -/Times-Roman ff 120.00 scf sf -2760 1576 m -gs 1 -1 sc (U) col0 sh gr -/Times-Roman ff 120.00 scf sf -2760 2006 m -gs 1 -1 sc (B) col0 sh gr -% Polyline -n 2722 1875 m 2917 1875 l gs 0.95 setgray ef gr gs col0 s gr -/Times-Roman ff 165.00 scf sf -1830 2785 m -gs 1 -1 sc (Definition) col0 sh gr -/Times-Roman ff 120.00 scf sf -2022 1338 m -gs 1 -1 sc (X) col0 sh gr -/Times-Roman ff 120.00 scf sf -2022 2085 m -gs 1 -1 sc (L) col0 sh gr -/Times-Roman ff 165.00 scf sf -2025 5025 m -gs 1 -1 sc (Use) col0 sh gr -% Arc -gs n 3177.7 2812.0 1547.3 -25.9 25.9 arc -gs col-1 s gr - gr - -% Arc -gs n 9043.1 2812.0 3868.1 160.4 -160.4 arc -gs col-1 s gr - gr - -% Arc -gs n 2307.7 2812.0 3917.3 -19.4 19.4 arc -gs col-1 s gr - gr - -% Ellipse -n 5700 2812 1327 1327 0 360 DrawEllipse gs col-1 s gr - -% Polyline -n 6677 3706 m 6685 3706 l gs col-1 s gr -% Polyline -n 6675 1912 m 6675 3712 l gs col-1 s gr -% Polyline -n 4368 2806 m 6675 2806 l gs col-1 s gr -% Arc -gs n 563.2 3905.0 966.8 -25.8 25.8 arc -gs col-1 s gr - gr - -% Arc -gs n 23.7 3905.0 2440.3 -19.4 19.4 arc -gs col-1 s gr - gr - -% Arc -gs n 4217.4 3905.0 2407.4 160.4 -160.4 arc -gs col-1 s gr - gr - -% Ellipse -n 2137 3905 826 826 0 360 DrawEllipse gs col-1 s gr - -% Polyline -n 2743 4461 m 2751 4461 l gs col-1 s gr -% Ellipse -n 2115 1665 826 826 0 360 DrawEllipse gs col-1 s gr - -% Polyline -n 2721 2221 m 2729 2221 l gs col-1 s gr -% Polyline -n 2722 1105 m 2722 2225 l gs col-1 s gr -% Polyline -n 1286 1665 m 2722 1665 l gs col-1 s gr -$F2psEnd -rs diff --git a/lib/tools/doc/src/venn2.ps b/lib/tools/doc/src/venn2.ps deleted file mode 100644 index 198ccf285c..0000000000 --- a/lib/tools/doc/src/venn2.ps +++ /dev/null @@ -1,284 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: venn2b.eps -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Oct 9 11:12:20 2001 -%%For: hasse@ulmo2 (Hans Bolinder) -%%BoundingBox: 0 0 409 157 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 157 moveto 0 0 lineto 409 0 lineto 409 157 lineto closepath clip newpath -% Fill background color -0 0 moveto 409 0 lineto 409 157 lineto 0 157 lineto -closepath 1.00 1.00 1.00 setrgbcolor fill - --53.0 212.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /hypen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Times-Roman /Times-Roman-iso isovec ReEncode - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -n 4026 977 m 4011 1025 l 3996 1072 l 3981 1120 l 3966 1177 l 3954 1225 l - 3944 1272 l 3929 1327 l 3919 1412 l 3909 1477 l 3899 1540 l - 3894 1592 l 3894 1642 l 3891 1697 l 3889 1742 l 3889 1770 l - 3394 1767 l 3396 1717 l 3399 1665 l 3409 1610 l 3424 1555 l - 3439 1502 l 3464 1440 l 3489 1390 l 3516 1340 l 3551 1292 l - 3584 1250 l 3631 1200 l 3679 1150 l 3731 1110 l 3801 1065 l - 3869 1030 l 3931 1005 l 3986 982 l 4009 980 l - cp gs 0.75 setgray ef gr -/Times-Roman-iso ff 165.00 scf sf -3965 3044 m -gs 1 -1 sc (X - XU) col0 sh gr -/Times-Roman-iso ff 165.00 scf sf -3688 3299 m -gs 1 -1 sc (exports_not_used) col0 sh gr -% Polyline -n 6107 1757 m 6104 1802 l 6099 1855 l 6094 1902 l 6084 1960 l 6072 2010 l - 6062 2052 l 6049 2092 l 6032 2122 l 6019 2160 l 6007 2180 l - 5984 2140 l 5962 2095 l 5944 2057 l 5929 2007 l 5909 1947 l - 5899 1892 l 5892 1835 l 5889 1800 l 5889 1775 l 5889 1755 l - - cp gs 0.75 setgray ef gr -% Polyline -n 7309 1757 m 7309 2315 l 7287 2340 l 7259 2365 l 7234 2390 l 7199 2412 l - 7164 2440 l 7124 2465 l 7092 2482 l 7054 2502 l 7014 2520 l - 6974 2535 l 6934 2547 l 6897 2557 l 6909 2510 l 6924 2457 l - 6942 2407 l 6954 2357 l 6967 2297 l 6979 2247 l 6992 2192 l - 6999 2142 l 7009 2095 l 7012 2045 l 7019 1990 l 7022 1945 l - 7027 1900 l 7029 1855 l 7029 1805 l 7032 1765 l 7029 1752 l - - cp gs 0.75 setgray ef gr -/Times-Roman-iso ff 165.00 scf sf -6000 3014 m -gs 1 -1 sc (L * \(UU + \(XU - LU\)\)) col0 sh gr -/Times-Roman-iso ff 165.00 scf sf -5850 3299 m -gs 1 -1 sc (locals_not_used \(simplified\)) col0 sh gr -% Polyline -n 1395 1777 m 1400 1857 l 1405 1935 l 1407 2010 l 1417 2070 l 1425 2137 l - 1440 2215 l 1455 2297 l 1470 2365 l 1490 2437 l 1510 2495 l - 1527 2547 l 1535 2580 l 1600 2595 l 1672 2605 l 1772 2602 l - 1865 2595 l 1947 2572 l 2005 2555 l 2075 2525 l 2150 2482 l - 2207 2442 l 2260 2400 l 2295 2367 l 2325 2332 l 2325 1775 l - - cp gs 0.75 setgray ef gr -% Polyline -n 2330 1222 m 2365 1265 l 2402 1317 l 2437 1382 l 2477 1455 l 2500 1517 l - 2520 1585 l 2532 1645 l 2540 1712 l 2542 1780 l 2540 1842 l - 2535 1907 l 2527 1957 l 2517 1990 l 2325 1987 l - cp gs 0.75 setgray ef gr -/Times-Roman-iso ff 165.00 scf sf -1331 3044 m -gs 1 -1 sc (XU - X - B) col0 sh gr -/Times-Roman-iso ff 165.00 scf sf -1113 3314 m -gs 1 -1 sc (undefined_functions) col0 sh gr -% Polyline -7.500 slw -n 4816 1982 m - 5008 1982 l gs 0.95 setgray ef gr gs col0 s gr -% Polyline -n 7308 1967 m - 7500 1967 l gs 0.95 setgray ef gr gs col0 s gr -% Polyline -n 2324 1989 m - 2516 1989 l gs 0.95 setgray ef gr gs col0 s gr -/Times-Roman-iso ff 150.00 scf sf -1275 3525 m -gs 1 -1 sc (\(modules mode\)) col0 sh gr -% Arc -n 2652.5 1773.5 960.5 -25.7 25.7 arc -gs col-1 s gr - -% Arc -n 6307.0 1773.0 2416.0 160.6 -160.6 arc -gs col-1 s gr - -% Arc -n 2105.3 1773.0 2432.7 -19.2 19.2 arc -gs col-1 s gr - -% Ellipse -n 4214 1774 820 821 0 360 DrawEllipse gs col-1 s gr - -% Polyline -n 4817 2325 m 4825 2325 l gs col-1 s gr -% Polyline -n 4816 1217 m - 4816 2329 l gs col-1 s gr -% Polyline -n 3392 1769 m - 4816 1769 l gs col-1 s gr -% Arc -n 5144.5 1758.5 960.5 -25.7 25.7 arc -gs col-1 s gr - -% Arc -n 8799.0 1758.0 2416.0 160.6 -160.6 arc -gs col-1 s gr - -% Arc -n 4597.3 1758.0 2432.7 -19.2 19.2 arc -gs col-1 s gr - -% Ellipse -n 6706 1759 820 821 0 360 DrawEllipse gs col-1 s gr - -% Polyline -n 7309 2310 m 7317 2310 l gs col-1 s gr -% Polyline -n 7308 1202 m - 7308 2314 l gs col-1 s gr -% Polyline -n 5884 1754 m - 7308 1754 l gs col-1 s gr -% Arc -n 160.5 1780.5 960.5 -25.7 25.7 arc -gs col-1 s gr - -% Arc -n 3815.0 1780.0 2416.0 160.6 -160.6 arc -gs col-1 s gr - -% Arc -n -386.7 1780.0 2432.7 -19.2 19.2 arc -gs col-1 s gr - -% Ellipse -n 1722 1781 820 821 0 360 DrawEllipse gs col-1 s gr - -% Polyline -n 2325 2332 m 2333 2332 l gs col-1 s gr -% Polyline -n 2324 1224 m - 2324 2336 l gs col-1 s gr -% Polyline -n 900 1776 m - 2324 1776 l gs col-1 s gr -$F2psEnd -rs diff --git a/lib/tools/emacs/erlang-pkg.el b/lib/tools/emacs/erlang-pkg.el index decc696e21..4d0aa6fcd3 100644 --- a/lib/tools/emacs/erlang-pkg.el +++ b/lib/tools/emacs/erlang-pkg.el @@ -1,3 +1,3 @@ (define-package "erlang" "2.7.0" "Erlang major mode" - '((flymake-mode "0.4.6"))) + '()) diff --git a/lib/tools/emacs/erlang-start.el b/lib/tools/emacs/erlang-start.el index bbcea3e46a..e1dc86621e 100644 --- a/lib/tools/emacs/erlang-start.el +++ b/lib/tools/emacs/erlang-start.el @@ -83,6 +83,7 @@ ;; Associate files extensions ".erl" and ".hrl" with Erlang mode. ;; +;;;###autoload (let ((a '("\\.erl\\'" . erlang-mode)) (b '("\\.hrl\\'" . erlang-mode))) (or (assoc (car a) auto-mode-alist) @@ -94,6 +95,7 @@ ;; Associate files using interpreter "escript" with Erlang mode. ;; +;;;###autoload (add-to-list 'interpreter-mode-alist (cons "escript" 'erlang-mode)) ;; @@ -101,6 +103,7 @@ ;; file completion. ;; +;;;###autoload (let ((erl-ext '(".jam" ".vee" ".beam"))) (while erl-ext (let ((cie completion-ignored-extensions)) diff --git a/lib/tools/src/cover.erl b/lib/tools/src/cover.erl index 2579711dc7..bf21aa6b48 100644 --- a/lib/tools/src/cover.erl +++ b/lib/tools/src/cover.erl @@ -721,6 +721,11 @@ main_process_loop(State) -> end, State#main_state.nodes), reload_originals(State#main_state.compiled), + ets:delete(?COVER_TABLE), + ets:delete(?COVER_CLAUSE_TABLE), + ets:delete(?BINARY_TABLE), + ets:delete(?COLLECTION_TABLE), + ets:delete(?COLLECTION_CLAUSE_TABLE), unregister(?SERVER), reply(From, ok); @@ -876,6 +881,8 @@ remote_process_loop(State) -> {remote,stop} -> reload_originals(State#remote_state.compiled), + ets:delete(?COVER_TABLE), + ets:delete(?COVER_CLAUSE_TABLE), unregister(?SERVER), ok; % not replying since 'DOWN' message will be received anyway @@ -1139,9 +1146,14 @@ remote_collect(Module,Nodes,Stop) -> do_collection(Node, Module, Stop) -> CollectorPid = spawn(fun collector_proc/0), - remote_call(Node,{remote,collect,Module,CollectorPid, self()}), - if Stop -> remote_call(Node,{remote,stop}); - true -> ok + case remote_call(Node,{remote,collect,Module,CollectorPid, self()}) of + {error,node_dead} -> + CollectorPid ! done, + ok; + ok when Stop -> + remote_call(Node,{remote,stop}); + ok -> + ok end. %% Process which receives chunks of data from remote nodes - either when @@ -1951,47 +1963,61 @@ move_clauses([{M,F,A,C,_L}|Clauses]) -> move_clauses(Clauses); move_clauses([]) -> ok. - %% Given a .beam file, find the .erl file. Look first in same directory as -%% the .beam file, then in <beamdir>/../src +%% the .beam file, then in ../src, then in compile info. find_source(Module, File0) -> - case filename:rootname(File0,".beam") of - File0 -> - File0; - File -> - InSameDir = File++".erl", - case filelib:is_file(InSameDir) of - true -> - InSameDir; - false -> - Dir = filename:dirname(File), - Mod = filename:basename(File), - InDotDotSrc = filename:join([Dir,"..","src",Mod++".erl"]), - case filelib:is_file(InDotDotSrc) of - true -> - InDotDotSrc; - false -> - find_source_from_module(Module, File0) - end - end + try + Root = filename:rootname(File0, ".beam"), + Root == File0 andalso throw(File0), %% not .beam + %% Look for .erl in pwd. + File = Root ++ ".erl", + throw_file(File), + %% Not in pwd: look in ../src. + BeamDir = filename:dirname(File), + Base = filename:basename(File), + throw_file(filename:join([BeamDir, "..", "src", Base])), + %% Not in ../src: look for source path in compile info, but + %% first look relative the beam directory. + Info = lists:keyfind(source, 1, Module:module_info(compile)), + false == Info andalso throw({beam, File0}), %% stripped + {source, SrcFile} = Info, + throw_file(splice(BeamDir, SrcFile)), %% below ../src + throw_file(SrcFile), %% or absolute + %% No success means that source is either not under ../src or + %% its relative path differs from that of compile info. (For + %% example, compiled under src/x but installed under src/y.) + %% An option to specify an arbitrary source path explicitly is + %% probably a better solution than either more heuristics or a + %% potentially slow filesystem search. + {beam, File0} + catch + Path -> Path end. -%% In case we can't find the file from the given .beam, -%% we try to get the information directly from the module source -find_source_from_module(Module, File) -> - Compile = Module:module_info(compile), - case lists:keyfind(source, 1, Compile) of - {source, Path} -> - case filelib:is_file(Path) of - true -> - Path; - false -> - {beam, File} - end; - false -> - {beam, File} - end. +throw_file(Path) -> + false /= Path andalso filelib:is_file(Path) andalso throw(Path). + +%% Splice the tail of a source path, starting from the last "src" +%% component, onto the parent of a beam directory, or return false if +%% no "src" component is found. +%% +%% Eg. splice("/path/to/app-1.0/ebin", "/compiled/path/to/app/src/x/y.erl") +%% --> "/path/to/app-1.0/ebin/../src/x/y.erl" +%% +%% This handles the case of source in subdirectories of ../src with +%% beams that have moved since compilation. +%% +splice(BeamDir, SrcFile) -> + case lists:splitwith(fun(C) -> C /= "src" end, revsplit(SrcFile)) of + {T, [_|_]} -> %% found src component + filename:join([BeamDir, "..", "src" | lists:reverse(T)]); + {_, []} -> %% or not + false + end. + +revsplit(Path) -> + lists:reverse(filename:split(Path)). do_parallel_analysis(Module, Analysis, Level, Loaded, From, State) -> analyse_info(Module,State#main_state.imported), diff --git a/lib/tools/src/fprof.erl b/lib/tools/src/fprof.erl index 4cbb910f11..877218bda0 100644 --- a/lib/tools/src/fprof.erl +++ b/lib/tools/src/fprof.erl @@ -1226,10 +1226,7 @@ spawn_3step(Spawn, FunPrelude, FunAck, FunBody) MRef = erlang:monitor(process, Parent), receive {Parent, Ref, Go} -> - erlang:demonitor(MRef), - receive {'DOWN', MRef, _, _, _} -> ok - after 0 -> ok - end, + erlang:demonitor(MRef, [flush]), FunBody(Go); {'DOWN', MRef, _, _, _} -> ok @@ -1238,8 +1235,7 @@ spawn_3step(Spawn, FunPrelude, FunAck, FunBody) MRef = erlang:monitor(process, Child), receive {Child, Ref, Ack} -> - erlang:demonitor(MRef), - receive {'DOWN', MRef, _, _, _} -> ok after 0 -> ok end, + erlang:demonitor(MRef, [flush]), try FunAck(Ack) of {Result, Go} -> catch Child ! {Parent, Ref, Go}, diff --git a/lib/tools/test/cover_SUITE.erl b/lib/tools/test/cover_SUITE.erl index 5abc5c41b1..c033be98a3 100644 --- a/lib/tools/test/cover_SUITE.erl +++ b/lib/tools/test/cover_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2012. All Rights Reserved. +%% Copyright Ericsson AB 2001-2013. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -27,7 +27,8 @@ dont_reconnect_after_stop/1, stop_node_after_disconnect/1, export_import/1, otp_5031/1, eif/1, otp_5305/1, otp_5418/1, otp_6115/1, otp_7095/1, - otp_8188/1, otp_8270/1, otp_8273/1, otp_8340/1]). + otp_8188/1, otp_8270/1, otp_8273/1, otp_8340/1, + otp_10979_hanging_node/1]). -include_lib("test_server/include/test_server.hrl"). @@ -52,7 +53,7 @@ all() -> dont_reconnect_after_stop, stop_node_after_disconnect, export_import, otp_5031, eif, otp_5305, otp_5418, otp_6115, otp_7095, otp_8188, otp_8270, otp_8273, - otp_8340]; + otp_8340, otp_10979_hanging_node]; _pid -> {skip, "It looks like the test server is running " @@ -1381,6 +1382,25 @@ comprehension_8188(Cf) -> ok. +otp_10979_hanging_node(_Config) -> + + P1 = processes(), + + cover:stop(non_existing_node), + cover:stop(), + + P2 = processes(), + + case P2--P1 of + [] -> + ok; + New -> + [io:format("New: ~p, ~p~n",[P,process_info(P)]) || P<-New], + ct:fail(hanging_process) + end, + + ok. + %%--Auxiliary------------------------------------------------------------ analyse_expr(Expr, Config) -> |