aboutsummaryrefslogtreecommitdiffstats
path: root/lib/tools
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tools')
-rw-r--r--lib/tools/doc/src/cover.xml18
-rw-r--r--lib/tools/doc/src/venn1.ps205
-rw-r--r--lib/tools/doc/src/venn2.ps284
-rw-r--r--lib/tools/emacs/erlang-pkg.el2
-rw-r--r--lib/tools/emacs/erlang-start.el3
-rw-r--r--lib/tools/src/cover.erl104
-rw-r--r--lib/tools/src/fprof.erl8
-rw-r--r--lib/tools/test/cover_SUITE.erl26
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) ->