Commit | Line | Data |
a0d0e21e |
1 | # hints/dec_osf.sh |
8e964347 |
2 | |
3 | # |
4 | # How to make a DEBUGGING VERSION of perl for DECs cc compiler |
5 | # |
6 | # If you want to debug perl or want to send a |
7 | # stack trace for inclusion into an bug report, call |
8 | # Configure with the additional argument -Doptimize=-g2 |
9 | # or uncomment this assignment to "optimize": |
10 | # |
11 | #optimize=-g2 |
12 | # |
8a019ce7 |
13 | # If you want both to optimise and debug with the DEC cc |
14 | # you must have -g3, e.g. "-O4 -g3", and (re)run Configure. |
15 | # |
16 | # Note 1: gcc can always have both -g and optimisation on. |
17 | # |
18 | # Note 2: debugging optimised code, no matter what compiler |
19 | # one is using, can be surprising and confusing because of |
20 | # the optimisation tricks like code motion, code removal, |
21 | # loop unrolling, and inlining. The source code and the |
22 | # executable code simply do not agree any more while in |
23 | # mid-execution, the optimiser only cares about the results. |
24 | # |
f2c69087 |
25 | # Note 3: Configure will automatically add the often quoted |
26 | # -DDEBUGGING for you if the -g is specified. |
27 | # |
28 | # Note 4: There is even more optimisation available in the new |
29 | # (GEM) DEC cc: -O5 and -fast. "man cc" will tell more about them. |
30 | # The jury is still out whether either or neither help for Perl |
31 | # and how much. Based on very quick testing, -fast boosts |
32 | # raw data copy by about 5-15% (-fast brings in, among other |
33 | # things, inlined, ahem, fast memcpy()), while on the other |
34 | # hand searching things (index, m//, s///), seems to get slower. |
35 | # Your mileage will vary. |
8e964347 |
36 | # |
37 | |
1fc4cb55 |
38 | case "$optimize" in |
8e964347 |
39 | '') case "$cc" in |
8a019ce7 |
40 | *gcc*) |
41 | optimize='-O3' |
42 | ;; |
43 | *) |
44 | # compile something small: taint.c is fine for this. |
45 | # the main point is the '-v' flag of 'cc'. |
46 | case "`cc -v -I. -c taint.c -o /tmp/taint$$.o 2>&1`" in |
47 | */gemc_cc*) |
48 | # we have the new DEC GEM CC |
49 | optimize='-O4' |
50 | ;; |
51 | *) |
52 | # we have the old MIPS CC |
53 | optimize='-O2 -Olimit 3200' |
54 | ;; |
55 | esac |
56 | # cleanup |
57 | rm -f /tmp/taint$$.o |
8e964347 |
58 | esac |
59 | ;; |
1fc4cb55 |
60 | esac |
28757baa |
61 | |
8a019ce7 |
62 | # all compilers are ANSI |
fed7345c |
63 | ccflags="$ccflags -DSTANDARD_C" |
28757baa |
64 | |
8e964347 |
65 | # dlopen() is in libc |
66 | libswanted="`echo $libswanted | sed -e 's/ dl / /'`" |
67 | |
8a019ce7 |
68 | # PW contains nothing useful for perl |
69 | libswanted="`echo $libswanted | sed -e 's/ PW / /'`" |
70 | |
71 | # bsd contains nothing used by perl that is not already in libc |
72 | libswanted="`echo $libswanted | sed -e 's/ bsd / /'`" |
73 | |
74 | # c need not be separately listed |
75 | libswanted="`echo $libswanted | sed -e 's/ c / /'`" |
76 | |
77 | # dbm is already in libc (as is ndbm) |
78 | libswanted="`echo $libswanted | sed -e 's/ dbm / /'`" |
79 | |
80 | # the basic lddlflags used always |
81 | lddlflags='-shared -expect_unresolved "*"' |
82 | |
83 | # Check if it's a CMW version of OSF1, |
84 | # if so, do not hide the symbols. |
85 | test `uname -s` = "MLS+" || lddlflags="$lddlflags -hidden" |
86 | |
87 | # If debugging (-g) do not strip the objects, otherwise, strip. |
88 | case "$optimize" in |
89 | *-g*) ;; # left intentionally blank |
90 | *) lddlflags="$lddlflags -s" |
91 | esac |
8e964347 |
92 | |
93 | # |
94 | # History: |
95 | # |
f2c69087 |
96 | # perl5.003_24: |
97 | # |
98 | # 30-Jan-1997 Jarkko Hietaniemi <jhi@iki.fi> |
99 | # |
100 | # * Fixing the note on -DDEBUGGING. |
101 | # |
102 | # * Note on -O5 -fast. |
103 | # |
104 | # |
8a019ce7 |
105 | # perl5.003_23: |
106 | # |
107 | # 26-Jan-1997 Jarkko Hietaniemi <jhi@iki.fi> |
108 | # |
109 | # * Notes on how to do both optimisation and debugging. |
110 | # |
111 | # |
112 | # 25-Jan-1997 Jarkko Hietaniemi <jhi@iki.fi> |
113 | # |
114 | # * Remove unneeded libraries from $libswanted: PW, bsd, c, dbm |
115 | # |
116 | # * Restructure the $lddlflags build. |
117 | # |
118 | # * $optimize based on which compiler we have. |
119 | # |
120 | # |
8e964347 |
121 | # perl5.003_22: |
122 | # |
123 | # 23-Jan-1997 Achim Bohnet <ach@rosat.mpe-garching.mpg.de> |
124 | # |
125 | # * Added comments 'how to create a debugging version of perl' |
126 | # |
127 | # * Fixed logic of this script to prevent stripping of shared |
128 | # objects by the loader (see ld man page for -s) is debugging |
129 | # is set via the -g switch. |
130 | # |
131 | # |
132 | # 21-Jan-1997 Achim Bohnet <ach@rosat.mpe-garching.mpg.de> |
133 | # |
134 | # * now 'dl' is always removed from libswanted. Not only if |
135 | # optimize is an empty string. |
136 | # |
137 | # |
138 | # 17-Jan-1997 Achim Bohnet <ach@rosat.mpe-garching.mpg.de> |
139 | # |
140 | # * Removed 'dl' from libswanted: When the FreePort binary |
141 | # translator for Sun binaries is installed Configure concludes |
142 | # that it should use libdl.x.yz.fpx.so :-( |
143 | # Because the dlopen, dlclose,... calls are in the |
144 | # C library it not necessary at all to check for the |
145 | # dl library. Therefore dl is removed from libswanted. |
146 | # |
147 | # |
148 | # 1-Jan-1997 Achim Bohnet <ach@rosat.mpe-garching.mpg.de> |
149 | # |
150 | # * Set -Olimit to 3200 because perl_yylex.c got too big |
151 | # for the optimizer. |
152 | # |