• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..07-May-2022-

autom4te.cache/H11-Oct-2012-28,19725,752

config/H11-Oct-2012-209,343153,480

doc/H07-May-2022-39,28532,260

po/H07-May-2022-24,11218,982

testsuite/H11-Oct-2012-588,749564,806

CONTRIBUTORSH A D11-Oct-20124.9 KiB11183

COPYINGH A D11-Oct-201217.6 KiB341281

ChangeLogH A D11-Oct-201221.7 KiB609470

ChangeLog-0001H A D11-Oct-2012263.3 KiB7,7045,827

ChangeLog-0203H A D11-Oct-2012267.3 KiB7,5205,874

ChangeLog-9295H A D11-Oct-2012500.4 KiB13,1189,990

ChangeLog-9697H A D11-Oct-2012212.4 KiB5,9604,327

ChangeLog-9899H A D11-Oct-2012168.2 KiB4,8613,507

MAINTAINERSH A D11-Oct-201228 21

Makefile.amH A D11-Oct-2012118.9 KiB2,4992,313

Makefile.inH A D11-Oct-2012137.4 KiB3,4222,834

NEWSH A D11-Oct-201214.4 KiB423266

READMEH A D11-Oct-20127.9 KiB242189

README-vmsH A D11-Oct-201212.5 KiB249212

acinclude.m4H A D11-Oct-20122.1 KiB7370

aclocal.m4H A D11-Oct-201241.1 KiB1,119959

app.cH A D11-Oct-201232.7 KiB1,372993

as.cH A D11-Oct-201230.5 KiB1,166860

as.hH A D11-Oct-201218.6 KiB702432

asintl.hH A D11-Oct-20121.4 KiB4420

atof-generic.cH A D11-Oct-201217.8 KiB631401

bignum-copy.cH A D11-Oct-20122.3 KiB8138

bignum.hH A D11-Oct-20122 KiB5312

bit_fix.hH A D11-Oct-20121.9 KiB4913

cgen.cH A D11-Oct-201221.5 KiB731444

cgen.hH A D11-Oct-20123.5 KiB10342

cond.cH A D11-Oct-201213.3 KiB543402

config-gas.comH A D11-Oct-20125.3 KiB187180

config.inH A D11-Oct-20126.3 KiB283190

configureH A D11-Oct-2012353 KiB12,42910,545

configure.inH A D11-Oct-201232.2 KiB1,087969

debug.cH A D11-Oct-20122.6 KiB10575

dep-in.sedH A D11-Oct-2012960 5448

depend.cH A D11-Oct-20124.5 KiB207125

dw2gencfi.cH A D11-Oct-201222.9 KiB1,043792

dw2gencfi.hH A D11-Oct-20121.9 KiB5321

dwarf2dbg.cH A D11-Oct-201236.2 KiB1,4651,003

dwarf2dbg.hH A D11-Oct-20123.2 KiB8526

ecoff.cH A D11-Oct-2012147.4 KiB5,2373,445

ecoff.hH A D11-Oct-20123.9 KiB11243

ehopt.cH A D11-Oct-201214.1 KiB541335

emul-target.hH A D11-Oct-20121.7 KiB6536

emul.hH A D11-Oct-20121.5 KiB4520

expr.cH A D11-Oct-201249.5 KiB1,9151,395

expr.hH A D11-Oct-20126 KiB17265

flonum-copy.cH A D11-Oct-20122.2 KiB7240

flonum-konst.cH A D11-Oct-20128.1 KiB229151

flonum-mult.cH A D11-Oct-20125.1 KiB189107

flonum.hH A D11-Oct-20124 KiB10320

frags.cH A D11-Oct-201210.9 KiB379234

frags.hH A D11-Oct-20125 KiB16381

gdbinit.inH A D11-Oct-2012507 4030

hash.cH A D11-Oct-201213.1 KiB580406

hash.hH A D11-Oct-20122.7 KiB7918

input-file.cH A D11-Oct-20126.1 KiB274183

input-file.hH A D11-Oct-20122.4 KiB679

input-scrub.cH A D11-Oct-201214.8 KiB515338

itbl-lex.cH A D11-Oct-201240.1 KiB1,7131,167

itbl-lex.lH A D11-Oct-20122.1 KiB11587

itbl-ops.cH A D11-Oct-201223.9 KiB902562

itbl-ops.hH A D11-Oct-20123 KiB10960

itbl-parse.cH A D11-Oct-201241.2 KiB1,548922

itbl-parse.hH A D11-Oct-2012459 3025

itbl-parse.yH A D11-Oct-201210.9 KiB461187

link.cmdH A D11-Oct-2012325 1110

listing.cH A D11-Oct-201229.8 KiB1,345978

listing.hH A D11-Oct-20122.1 KiB6837

literal.cH A D11-Oct-20123.1 KiB9648

m68k-parse.cH A D11-Oct-201258 KiB2,2641,767

mac-as.rH A D11-Oct-2012529 4330

macro.cH A D11-Oct-201226.2 KiB1,178890

macro.hH A D11-Oct-20122.8 KiB8433

make-gas.comH A D11-Oct-20125.2 KiB158157

makefile.vmsH A D11-Oct-20122.9 KiB11694

messages.cH A D11-Oct-201211.5 KiB506344

mpw-config.inH A D11-Oct-20123.6 KiB11690

mpw-make.sedH A D11-Oct-20122.6 KiB9767

obj.hH A D11-Oct-20123.2 KiB9561

output-file.cH A D11-Oct-20123.3 KiB155110

output-file.hH A D11-Oct-20121 KiB273

read.cH A D11-Oct-2012122.1 KiB5,2053,842

read.hH A D11-Oct-20126.3 KiB189136

sb.cH A D11-Oct-20125.3 KiB265156

sb.hH A D11-Oct-20123.2 KiB10041

stabs.cH A D11-Oct-201217.7 KiB709476

stamp-h.inH A D11-Oct-201210 21

struc-symbol.hH A D11-Oct-20125.1 KiB16063

subsegs.cH A D11-Oct-201215.7 KiB647469

subsegs.hH A D11-Oct-20124.8 KiB15669

symbols.cH A D11-Oct-201262.3 KiB2,5771,917

symbols.hH A D11-Oct-20127.1 KiB214138

tc.hH A D11-Oct-20123.3 KiB11366

vmsconf.shH A D11-Oct-20124 KiB129121

write.cH A D11-Oct-201275.9 KiB2,8402,117

write.hH A D11-Oct-20126.5 KiB218102

README

1		README for GAS
2
3A number of things have changed since version 1 and the wonderful
4world of gas looks very different.  There's still a lot of irrelevant
5garbage lying around that will be cleaned up in time.  Documentation
6is scarce, as are logs of the changes made since the last gas release.
7My apologies, and I'll try to get something useful.
8
9Unpacking and Installation - Summary
10====================================
11
12See ../binutils/README.
13
14To build just the assembler, make the target all-gas.
15
16Documentation
17=============
18
19The GAS release includes texinfo source for its manual, which can be processed
20into `info' or `dvi' forms.
21
22The DVI form is suitable for printing or displaying; the commands for doing
23this vary from system to system.  On many systems, `lpr -d' will print a DVI
24file.  On others, you may need to run a program such as `dvips' to convert the
25DVI file into a form your system can print.
26
27If you wish to build the DVI file, you will need to have TeX installed on your
28system.  You can rebuild it by typing:
29
30	cd gas/doc
31	make as.dvi
32
33The Info form is viewable with the GNU Emacs `info' subsystem, or the
34stand-alone `info' program, available as part of the GNU Texinfo distribution.
35To build the info files, you will need the `makeinfo' program.  Type:
36
37	cd gas/doc
38	make info
39
40Specifying names for hosts and targets
41======================================
42
43   The specifications used for hosts and targets in the `configure'
44script are based on a three-part naming scheme, but some short
45predefined aliases are also supported.  The full naming scheme encodes
46three pieces of information in the following pattern:
47
48     ARCHITECTURE-VENDOR-OS
49
50   For example, you can use the alias `sun4' as a HOST argument or in a
51`--target=TARGET' option.  The equivalent full name is
52`sparc-sun-sunos4'.
53
54   The `configure' script accompanying GAS does not provide any query
55facility to list all supported host and target names or aliases.
56`configure' calls the Bourne shell script `config.sub' to map
57abbreviations to full names; you can read the script, if you wish, or
58you can use it to test your guesses on abbreviations--for example:
59
60     % sh config.sub sun4
61     sparc-sun-sunos411
62     % sh config.sub sun3
63     m68k-sun-sunos411
64     % sh config.sub decstation
65     mips-dec-ultrix42
66     % sh config.sub hp300bsd
67     m68k-hp-bsd
68     % sh config.sub i386v
69     i386-unknown-sysv
70     % sh config.sub i786v
71     Invalid configuration `i786v': machine `i786v' not recognized
72
73
74`configure' options
75===================
76
77   Here is a summary of the `configure' options and arguments that are
78most often useful for building GAS.  `configure' also has several other
79options not listed here.
80
81     configure [--help]
82               [--prefix=DIR]
83               [--srcdir=PATH]
84               [--host=HOST]
85               [--target=TARGET]
86               [--with-OPTION]
87               [--enable-OPTION]
88
89You may introduce options with a single `-' rather than `--' if you
90prefer; but you may abbreviate option names if you use `--'.
91
92`--help'
93     Print a summary of the options to `configure', and exit.
94
95`-prefix=DIR'
96     Configure the source to install programs and files under directory
97     `DIR'.
98
99`--srcdir=PATH'
100     Look for the package's source code in directory DIR.  Usually
101     `configure' can determine that directory automatically.
102
103`--host=HOST'
104     Configure GAS to run on the specified HOST.  Normally the
105     configure script can figure this out automatically.
106
107     There is no convenient way to generate a list of all available
108     hosts.
109
110`--target=TARGET'
111     Configure GAS for cross-assembling programs for the specified
112     TARGET.  Without this option, GAS is configured to assemble .o files
113     that run on the same machine (HOST) as GAS itself.
114
115     There is no convenient way to generate a list of all available
116     targets.
117
118`--enable-OPTION'
119     These flags tell the program or library being configured to
120     configure itself differently from the default for the specified
121     host/target combination.  See below for a list of `--enable'
122     options recognized in the gas distribution.
123
124`configure' accepts other options, for compatibility with configuring
125other GNU tools recursively; but these are the only options that affect
126GAS or its supporting libraries.
127
128The `--enable' options recognized by software in the gas distribution are:
129
130`--enable-targets=...'
131     This causes one or more specified configurations to be added to those for
132     which BFD support is compiled.  Currently gas cannot use any format other
133     than its compiled-in default, so this option is not very useful.
134
135`--enable-bfd-assembler'
136     This causes the assembler to use the new code being merged into it to use
137     BFD data structures internally, and use BFD for writing object files.
138     For most targets, this isn't supported yet.  For most targets where it has
139     been done, it's already the default.  So generally you won't need to use
140     this option.
141
142Supported platforms
143===================
144
145At this point I believe gas to be ANSI only code for most target cpu's.  That
146is, there should be relatively few, if any host system dependencies.  So
147porting (as a cross-assembler) to hosts not yet supported should be fairly
148easy.  Porting to a new target shouldn't be too tough if it's a variant of one
149already supported.
150
151Native assembling should work on:
152
153	sun3
154	sun4
155	386bsd
156	bsd/386
157	delta (m68k-sysv from Motorola)
158	delta88 (m88k-sysv from Motorola)
159	GNU/linux
160	m68k hpux 8.0 (hpux 7.0 may be a problem)
161	vax bsd, ultrix, vms
162	hp9000s300
163	decstation
164	irix 4
165	irix 5
166	miniframe (m68k-sysv from Convergent Technologies)
167	i386-aix (ps/2)
168	hppa (hpux 4.3bsd, osf1)
169	AIX
170	unixware
171	sco 3.2v4.2
172	sco openserver 5.0 (a.k.a. 3.2v5.0 )
173	sparc solaris
174	ns32k (netbsd, lites)
175
176I believe that gas as a cross-assembler can currently be targeted for
177most of the above hosts, plus
178
179        arm
180	decstation-bsd (a.out format, to be used in BSD 4.4)
181	ebmon29k
182	go32 (DOS on i386, with DJGPP -- old a.out version)
183	H8/300, H8/500 (Hitachi)
184	i386-aix (ps/2)
185	i960-coff
186	mips ecoff (decstation-ultrix, iris, mips magnum, mips-idt-ecoff)
187	Mitsubishi d10v and d30v
188	nindy960
189	powerpc EABI
190	SH (Hitachi)
191	sco386
192	TI tic30 and tic80
193	vax bsd or ultrix?
194	vms
195	vxworks68k
196	vxworks960
197	z8000 (Zilog)
198
199MIPS ECOFF support has been added, but GAS will not run a C-style
200preprocessor.  If you want that, rename your file to have a ".S" suffix, and
201run gcc on it.  Or run "gcc -xassembler-with-cpp foo.s".
202
203Support for ELF should work now for sparc, hppa, i386, alpha, m68k,
204MIPS, powerpc.
205
206Support for sequent (ns32k), tahoe, i860 may be suffering from bitrot.
207
208If you try out gas on some host or target not listed above, please let me know
209the results, so I can update the list.
210
211Compiler Support Hacks
212======================
213
214On a few targets, the assembler has been modified to support a feature
215that is potentially useful when assembling compiler output, but which
216may confuse assembly language programmers.  If assembler encounters a
217.word pseudo-op of the form symbol1-symbol2 (the difference of two
218symbols), and the difference of those two symbols will not fit in 16
219bits, the assembler will create a branch around a long jump to
220symbol1, and insert this into the output directly before the next
221label: The .word will (instead of containing garbage, or giving an
222error message) contain (the address of the long jump)-symbol2.  This
223allows the assembler to assemble jump tables that jump to locations
224very far away into code that works properly.  If the next label is
225more than 32K away from the .word, you lose (silently); RMS claims
226this will never happen.  If the -K option is given, you will get a
227warning message when this happens.
228
229
230REPORTING BUGS IN GAS
231=====================
232
233Bugs in gas should be reported to:
234
235   bug-binutils@gnu.org.
236
237They may be cross-posted to gcc-bugs@gnu.org if they affect the use of
238gas with gcc.  They should not be reported just to gcc-bugs, since not
239all of the maintainers read that list.
240
241See ../binutils/README for what we need in a bug report.
242

README-vms

1	This document explains a couple of things that are specific to VMS.
2There are currently two "chapters", the first deals with cross-assembly
3issues, and the second deals with the VMS debugger and GNU-CC.
4
5
6***********************************************************************
7****************** Notes for Cross Assembly with VMS ******************
8***********************************************************************
9
10	If you wish to build gas on a non-VMS system to cross-assemble,
11you should use:
12
13configure ${hosttype} -target=vms
14
15and then follow the usual procedure.  The object files generated on
16Unix will be correct from a binary point of view, but the real trick is
17getting them to the VMS machine.  The format of the object file is
18a variable-length record, but each record contains binary data.  gas
19writes the records in the same format that VMS would expect,
20namely a two-byte count followed by that number of bytes.
21
22	If you try to copy the file to a VMS system using ftp, the ftp
23protocol will screw up the file by looking for nulls (record terminator for
24unix) and it will insert it's own record terminators at that point.  This
25will obviously corrupt the file.
26
27	If you try to transfer the file with ftp in binary mode, the
28file itself will not be corrupt, but VMS will think that the file contains
29fixed-length records of 512 bytes.  You can use the public-domain FILE
30utility to change this with a command like:
31
32$FILE foo.o/type=variable
33
34If you do not have this utility available, the following program can be
35used to perform this task:
36
37	#include <fab.h>
38
39	#define RME$C_SETRFM 1
40
41	struct FAB * fab;
42
43	main(int argc, char * argv[]){
44		int i, status;
45		fab = (struct FAB*) malloc(sizeof(struct FAB));
46		*fab = cc$rms_fab;	/* initialize FAB*/
47		fab->fab$b_fac = FAB$M_PUT;
48		fab->fab$l_fop |= FAB$M_ESC;
49		fab->fab$l_ctx = RME$C_SETRFM;
50		fab->fab$w_ifi = 0;
51		for(i=1;i<argc;i++){
52		  printf("Setting %s to variable length records.\n",argv[i]);
53		  fab->fab$l_fna = argv[i];
54	       	  fab->fab$b_fns = strlen(argv[i]);
55		  status = sys$open(fab,0,0);
56		  if((status & 7) != 1) lib$signal(status);
57		  fab->fab$b_rfm = FAB$C_VAR;
58		  status = sys$modify(fab,0,0);
59		  if((status & 7) != 1) lib$signal(status);
60		  status = sys$close(fab,0,0);
61		  if((status & 7) != 1) lib$signal(status);
62		};
63	}
64
65	If you have NFS running on the VMS system, what you need to do
66depends upon which NFS software you are running on the VMS system.  There
67are a number of different TCP/IP packages for VMS available, and only very
68limited testing has been performed.   In the tests that has been done so
69far, the contents of the file will always be correct when transferring the
70file via NFS, but the record attributes may or may not be correct.
71
72	One proprietary TCP/IP/NFS package for VMS is known to
73automatically fix the record attributes of the object file if you NFS mount
74a unix disk from the VMS system, and if the file has a ".obj" extension on
75the unix system.  Other TCP/IP packages might do this for you as well, but
76they have not been checked.
77
78No matter what method you use to get the file to the VMS system, it is
79always a good idea to check to make sure that it is the correct type by
80doing a "$dir/full" on the object file. The desired record attributes will
81be "None".  Undesirable record attributes will be "Stream-LF" or anything
82else.
83
84Once you get the files on the VMS system, you can check their integrity
85with the "$anal/obj" command.  (Naturally at some point you should rename
86the .o files to .obj).  As far as the debugger is concerned, the records
87will be correct, but the debugger will not be able to find the source files,
88since it only has the file name, and not the full directory specification.
89You must give the debugger some help by telling it which directories to
90search for the individual files - once you have done this you should be
91able to proceed normally.
92
93	It is a good idea to use names for your files which will be valid
94under VMS, since otherwise you will have no way of getting the debugger to
95find the source file when deugging.
96
97The reason for this is that the object file normally contins specific
98information that the debugger can use to positively identify a file, and if
99you are assembling on a unix system this information simply does not exist
100in a meaningful way.  You must help the debugger by using the "SET FILE="
101command to tell the debugger where to look for source files. The debugger
102records will be correct, except that the debugger will not be initially
103able to find the source files.  You can use the "SET FILE" command to tell
104the debugger where to look for the source files.
105
106I have only tested this with a SVr4 i486 machine, and everything seems to
107work OK, with the limited testing that I have done.  Other machines may
108or may not work.  You should read the chapters on cross-compilers in the gcc
109manual before fooling with this.  Since gas does not need to do any floating
110point arithmetic, the floating point constants that are generated here should
111be correct - the only concern is with constant folding in the main compiler.
112The range and precision of floats and doubles are similar on the 486 (with
113a builtin 80387) and the VAX, although there is a factor of 2 to 4
114difference in the range.  The double, as implemented on the 486, is quite
115similar to the G_FLOAT on the VAX.
116
117***********************************************************************
118****************** Notes for using GNU CC with the VMS debugger********
119***********************************************************************
120
121
122	1) You should be aware that GNU-C, as with any other decent compiler,
123will do things when optimization is turned on that you may not expect.
124Sometimes intermediate results are not written to variables, if they are only
125used in one place, and sometimes variables that are not used at all will not be
126written to the symbol table.  Also, parameters to inline functions are often
127inaccessible. You can see the assembly code equivalent by using KP7 in the
128debugger, and from this you can tell if in fact a variable should have the
129value that you expect.  You can find out if a variable lives withing a register
130by doing a 'show symbol/addr'.
131
132	2) Overly complex data types, such as:
133
134int (*(*(*(*(*(* sarr6)[1])[1])[2])[3])[4])[5];
135
136will not be debugged properly, since the debugging record overflows an internal
137debugger buffer.  gcc-as will convert these to *void as far as the debugger
138symbol table is concerned, which will avoid any problems, and the assembler
139will give you a message informing you that this has happened.
140
141	3) You must, of course, compile and link with /debug.  If you link
142without debug, you still get traceback table in the executable, but there is no
143symbol table for variables.
144
145	4) Included in the patches to VMS.C are fixes to two bugs that are
146unrelated to the changes that I have made.  One of these made it impossible to
147debug small programs sometimes, and the other caused the debugger to become
148confused about which routine it was in, and give this incorrect info in
149tracebacks.
150
151	5) If you are using the GNU-C++ compiler, you should modify the
152compiler driver file GNU_CC:[000000]GCC.COM (or GXX.COM).  If you have a
153separate GXX.COM, then you need to change one line in GXX.COM to:
154$ if f$locate("D",p2) .ne. P2_Length then Debug = " ""-G0"""
155                                       Notice zero--->  ^
156If you are using a GCC.COM that does both C and C++, add the following lines to
157GCC.COM:
158
159$!
160$! Use old style debugging records for VMS
161$!
162$ if (Debug.nes."" ).and. Plus then Debug = " ""-G0"""
163
164after the variables Plus and Debug are set.  The reason for this, is that C++
165compiler by default generates debugging records that are more complex,
166with many new syntactical elements that allow for the new features of the
167language.  The -G0 switch tells the C++ compiler to use the old style debugging
168records.  Until the debugger understands C++ there is not any point to try and
169use the expanded syntax.
170
171	6) When you have nested scopes, i.e.:
172main(){
173	int i;
174	{int i;
175		{int i;
176};};}
177and you say "EXAM i" the debugger needs to figure out which variable you
178actually want to reference.  I have arranged things to define a block to the
179debugger when you use brackets to enter a new scope, so in the example above,
180the variables would be described as:
181TEST\main\i
182TEST\main\$0\i
183TEST\main\$0\$0\i
184At each level, the block name is a number with a dollar sign prefix, the
185numbers start with 0 and count upward.  When you say EXAM i, the debugger looks
186at the current PC, and decides which block it is currently in.  It works from
187the innermost level outward until it finds a block that has the variable "i"
188defined.  You can always specify the scope explicitly.
189
190	7)  With C++, there can be a lot of inline functions, and it would be
191rather restrictive to force the user to debug the program by converting all of
192the inline functions to normal functions.  What I have done is to essentially
193"add" (with the debugger) source lines from the include files that contain the
194inline functions.  Thus when you step into an inline function it appears as if
195you have called the function, and you can examine variables and so forth.
196There are several *very* important differences, however.  First of all, since
197there is no function call involved, you cannot step over the inline function
198call - you always step into it. Secondly, since the same source lines are used
199in many locations, there is a separate copy of the source for *each* usage.
200Without this, breakpoints do not work, since we must have a 1-to-1 mapping
201between source lines and PC.
202	Since you cannot step over inline function calls, it can be a real pain
203if you are not really interested in what is going on for that function call.
204What I have done is to use the "-D" switch for the assembler to toggle the
205following behavior.  With the "-D" switch, all inline functions are included in
206the object file, and you can debug everything.  Without the "-D" switch
207(default case with VMS implementation), inline functions are included *only* if
208they did not come from system header files (i.e. from GNU_CC_INCLUDE: or
209GNU_GXX_INCLUDE:).  Thus, without the switch the user only debugs his/her own
210inline functions, and not the system ones. (This is especially useful if you do
211a lot of stream I/O in C++).  This probably will not provide enough granularity
212for many users, but for now this is still somewhat experimental, and I would
213like to reflect upon it and get some feedback before I go any further.
214Possible solutions include an interactive prompting, a logical name, or a new
215command line option in gcc.c (which is then passed through somehow to the guts
216of the assembler).
217	The inline functions from header files appear after the source code
218for the source file.  This has the advantage that the source file itself is
219numbered with the same line numbers that you get with an editor.  In addition,
220the entire header file is not included, since the assembler makes a list of
221the min and max source lines that are used, and only includes those lines from
222the first to the last actually used. (It is easy to change it to include the
223whole file).
224
225	8) When you are debugging C++ objects, the object "this" is refered to
226as "$this".  Actually, the compiler writes it as ".this", but the period is
227not good for the debugger, so I have a routine to convert it to a $.  (It
228actually converts all periods to $, but only for variables, since this was
229intended to allow us to access "this".
230
231	9) If you use the asm("...") keyword for global symbols, you will not
232be able to see that symbol with the debugger.  The reason is that there are two
233records for the symbol stored in the data structures of the assembler.  One
234contains the info such as psect number and offset, and the other one contains
235the information having to do with the data type of the variable.  In order to
236debug as symbol, you need to be able to coorelate these records, and the only
237way to do this is by name.  The record with the storage attributes will take
238the name used in the asm directive, and the record that specifies the data type
239has the actual variable name, and thus when you use the asm directive to change
240a variable name, the symbol becomes invisible.
241
242	10) Older versions of the compiler ( GNU-C 1.37.92 and earlier) place
243global constants in the text psect.  This is unfortunate, since to the linker
244this appears to be an entry point.  I sent a patch to the compiler to RMS,
245which will generate a .const section for these variables, and patched the
246assembler to put these variables into a psect just like that for normal
247variables, except that they are marked NOWRT.  static constants are still
248placed in the text psect, since there is no need for any external access.
249