First round of gnu/dist cleanup - remove:

- files removed in binutils 2.8.1 or 2.9.1
- some testsuite stuff
- VMS, MS-DOS, and MPW Macintosh build environmanet (most of which are
  quite old and out of maintenance)
- generated GNU info files
- non-NetBSD-target makefile fragments
This commit is contained in:
tv 1999-02-03 18:50:07 +00:00
parent 3aee8fc51e
commit 39d9eb47d8
155 changed files with 0 additions and 58151 deletions

View File

@ -1,40 +0,0 @@
/* <--- bug.bc ---><--- bug.bc ---><--- bug.bc ---><--- bug.bc ---> */
/*
* See the file "signum" for a description and reference for this
* program.
*
* THIS BUG IS *NOT* IN GNU BC!!!
*
*/
obase=16
ibase=16
x=1A8F5C99605AE52 /* dividend */
y=BB0B404 /* divisor */
q=245A07AD /* (correct) quotient */
r=147EB9E /* (correct) remainder */
"Base 16
"
"x = "; x /* output numbers just to be sure... */
"y = "; y
"quo = "; q
"rem = "; r
"x/y = "; x/y /* watch this result! */
"x%y = "; x%y /* watch this result! */
"y*q+r= "; y*q+r /* check quotient & remainder */
/*
* Do the same thing in base 10:
*/
"
Base 10
"
ibase=A
obase=10
"x = "; x /* output numbers just to be sure... */
"y = "; y
"q = "; q
"r = "; r
"x/y = "; x/y /* watch this result! */
"x%y = "; x%y /* watch this result! */
"y*q+r= "; y*q+r /* check quotient & remainder */

View File

@ -1,565 +0,0 @@
From phil@cs.wwu.edu Mon Mar 20 23:13:22 1995
Date: Mon, 20 Mar 1995 23:12:17 -0800
From: Phil Nelson <phil@cs.wwu.edu>
To: phil@steelhead.cs.wwu.edu
Subject: [jhn@ironwood.cray.com: XPG4 bc(1) failures]
From: jhn@ironwood.cray.com (James Nordby)
Subject: XPG4 bc(1) failures
To: phil@cs.wwu.edu
Date: Fri, 17 Mar 1995 12:14:13 -0600 (CST)
X-Mailer: ELM [version 2.4 PL24-CRI-b]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 14277
Phil,
Here are the test results I'm getting from the XPG4 test suite,
with some explanation and fixes so far. Let me know what you
think...
Thanks much,
Jim Nordby (jhn@cray.com)
-------- bc 08:38:34 --------
Assertion #20 (A): bc reads text files
Expected exit code = 0; Received 139
Standard output isn't the same as file 'bc_eso_20_1'
diff of "out.stdout" and "bc_eso_20_1":
*** out.stdout Fri Mar 17 08:39:22 1995
--- bc_eso_20_1 Fri Mar 17 08:39:22 1995
***************
*** 0 ****
--- 1,31 ----
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 11111111111111111111111111111111111111111111111111111111111111111111
+ 1111111
Assertion Result: FAIL
I couldn't reproduce this problem; when I rebuilt your bc and
ran it, I got a different problem with printing out a large
number. The XPG4 tests expected lines to be 70 characters
long, INCLUDING the newline (this comes from the POSIX definition
of a line). To fix it, I changed util.c like so:
*** util.c Thu Mar 16 10:47:36 1995
--- util.c.old Thu Mar 16 10:50:10 1995
***************
*** 309,323 ****
else
{
out_col++;
- #ifdef _CRAY
- /*
- * XPG4 considers a line to include the <newline>;
- * therefore we want 68 numerals, <backslash>, <newline>
- */
- if (out_col == 69)
- #else
if (out_col == 70)
- #endif
{
putchar ('\\');
putchar ('\n');
--- 309,315 ----
Assertion #42 (A): check reserved words
Standard error isn't empty
Contents of out.stderr:
(standard_in) 6: syntax error
(standard_in) 15: syntax error
Standard output isn't the same as file 'bc_eso_42_1'
diff of "out.stdout" and "bc_eso_42_1":
*** out.stdout Fri Mar 17 08:39:43 1995
--- bc_eso_42_1 Fri Mar 17 08:39:43 1995
***************
*** 1,2 ****
--- 1,3 ----
2
1
+ 0
Assertion Result: FAIL
This one is debatable, based on the grammar in the POSIX manual.
Here's the input file:
cat << \VSC-EOF > input
define a() {
auto b;
for ( b = 0; b < 10; b++ ) {
b;
if ( b == 1 )
break;
}
return ( 5 ) ;
}
ibase = 10;
length ( obase );
scale = 0;
sqrt(1);
while ( a() != 5 )
VSC-EOF
They want these constructs to be accepted:
if (b == 1)
whatever;
for (x = 0; x < 10; x++)
whatever;
while (x < 10)
whatever;
rather than just
if (b == 1) {
whatever
}
etc.
The grammar as it's currently worded requires a '{' before hitting
a NEWLINE for these constructs. It's easy enough to change in bc.y
(see below), but if I do change it, it still barfs on the last
line of the file ( 'while (a() != 5)' ). Since the while lacks
a body, it gives a syntax error; they're expecting a '0' to be
returned. The grammar could be changed to support this, but is
it a good idea?
*** bc.y Thu Mar 16 10:47:20 1995
--- bc.y.old Thu Mar 16 10:50:11 1995
***************
*** 142,150 ****
| error statement
{ $$ = $2; }
;
- allow_newlines : /* empty */
- | NEWLINE allow_newlines
- ;
statement : Warranty
{ warranty (""); }
| Limits
--- 142,147 ----
***************
*** 231,237 ****
sprintf (genstr, "pJ%1d:N%1d:", $4, $7);
generate (genstr);
}
! allow_newlines statement
{
sprintf (genstr, "J%1d:N%1d:",
continue_label, break_label);
--- 228,234 ----
sprintf (genstr, "pJ%1d:N%1d:", $4, $7);
generate (genstr);
}
! statement
{
sprintf (genstr, "J%1d:N%1d:",
continue_label, break_label);
***************
*** 246,252 ****
sprintf (genstr, "Z%1d:", if_label);
generate (genstr);
}
! allow_newlines statement opt_else
{
sprintf (genstr, "N%1d:", if_label);
generate (genstr);
--- 243,249 ----
sprintf (genstr, "Z%1d:", if_label);
generate (genstr);
}
! statement opt_else
{
sprintf (genstr, "N%1d:", if_label);
generate (genstr);
***************
*** 265,271 ****
sprintf (genstr, "Z%1d:", break_label);
generate (genstr);
}
! ')' allow_newlines statement
{
sprintf (genstr, "J%1d:N%1d:", $1, break_label);
generate (genstr);
--- 262,268 ----
sprintf (genstr, "Z%1d:", break_label);
generate (genstr);
}
! ')' statement
{
sprintf (genstr, "J%1d:N%1d:", $1, break_label);
generate (genstr);
Assertion #49 (A): check strings
Expected exit code = 0; Received 1
Standard error isn't empty
Contents of out.stderr:
File (NULL) is unavailable.
Standard output isn't the same as file 'bc_eso_49_1'
diff of "out.stdout" and "bc_eso_49_1":
cmd-1794 diff: Missing newline at end of file 'bc_eso_49_1'.
*** out.stdout Fri Mar 17 08:40:01 1995
--- bc_eso_49_1 Fri Mar 17 08:40:01 1995
***************
*** 0 ****
--- 1 ----
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
*LINE CONTINUATION -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
*LINE CONTINUATION -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Assertion Result: FAIL
This gist of this is that the standard expects numbers to
be truncated to 70 characters, but STRINGS should not.
My changes to fix this are:
*** execute.c Thu Mar 16 13:06:39 1995
--- execute.c.old Thu Mar 16 10:50:09 1995
***************
*** 208,218 ****
case 'O' : /* Write a string to the output with processing. */
while ((ch = byte(&pc)) != '"')
if (ch != '\\')
- #ifdef _CRAY
- putchar (ch);
- #else
out_char (ch);
- #endif
else
{
ch = byte(&pc);
--- 207,213 ----
***************
*** 219,234 ****
if (ch == '"') break;
switch (ch)
{
- #ifdef _CRAY
- case 'a': putchar (007); break;
- case 'b': putchar ('\b'); break;
- case 'f': putchar ('\f'); break;
- case 'n': putchar ('\n'); break;
- case 'q': putchar ('"'); break;
- case 'r': putchar ('\r'); break;
- case 't': putchar ('\t'); break;
- case '\\': putchar ('\\'); break;
- #else
case 'a': out_char (007); break;
case 'b': out_char ('\b'); break;
case 'f': out_char ('\f'); break;
--- 214,219 ----
***************
*** 237,243 ****
case 'r': out_char ('\r'); break;
case 't': out_char ('\t'); break;
case '\\': out_char ('\\'); break;
- #endif
default: break;
}
}
--- 222,227 ----
***************
*** 350,360 ****
break;
case 'w' : /* Write a string to the output. */
- #ifdef _CRAY
- while ((ch = byte(&pc)) != '"') putchar (ch);
- #else
while ((ch = byte(&pc)) != '"') out_char (ch);
- #endif
if (interactive) fflush (stdout);
break;
Assertion #77 (C): output longer than 70 characters
Standard output isn't the same as file 'bc_eso_77_1'
diff of "out.stdout" and "bc_eso_77_1":
*** out.stdout Fri Mar 17 08:41:13 1995
--- bc_eso_77_1 Fri Mar 17 08:41:13 1995
***************
*** 1,2 ****
! 3.3333333333333333333333333333333333333333333333333333333333333333333
! 33333333333333333333333333333333
--- 1,2 ----
! 3.333333333333333333333333333333333333333333333333333333333333333333
! 333333333333333333333333333333333
Assertion Result: FAIL
Same as assertion #20 above...
Assertion #92 (A): check %
Standard output isn't the same as file 'bc_eso_92_1'
diff of "out.stdout" and "bc_eso_92_1":
*** out.stdout Fri Mar 17 08:41:33 1995
--- bc_eso_92_1 Fri Mar 17 08:41:33 1995
***************
*** 4,8 ****
4
15
1
! 0
! 0
--- 4,8 ----
4
15
1
! 6
! 5
Assertion Result: FAIL
This one is a pain. The failing code looks like this:
scale = 4
scale ( 5.000000 % 2.0 )
scale ( 5.00 % 2.0 )
They expect '6' and '5' for output, instead of '0', based on
the explanation of the modulus operator ("scale of the result
shall be 'max(scale + scale(b), scale(a)'"), even though the
result is a 0. I was able to fix this problem by the change
below:
*** number.c Thu Mar 16 13:15:43 1995
--- number.c.old Thu Mar 16 10:50:09 1995
***************
*** 614,623 ****
case 0:
/* They are equal! return zero! */
diff = copy_num (_zero_);
- #ifdef _CRAY
- /* correct the scale here */
- diff->n_scale = MAX (n1->n_scale, n2->n_scale);
- #endif
break;
case 1:
/* n2 is less than n1, subtract n2 from n1. */
but this causes another test failure that I haven't looked at.
Assertion #130 (A): functions are call by value
Standard output isn't the same as file 'bc_eso_130_1'
diff of "out.stdout" and "bc_eso_130_1":
*** out.stdout Fri Mar 17 08:42:24 1995
--- bc_eso_130_1 Fri Mar 17 08:42:24 1995
***************
*** 4,10 ****
5
4
0
! 4
3
3
5
--- 4,10 ----
5
4
0
! 5
3
3
5
Assertion Result: FAIL
Assertion #131 (A): functions are call by value
Standard output isn't the same as file 'bc_eso_131_1'
diff of "out.stdout" and "bc_eso_131_1":
*** out.stdout Fri Mar 17 08:42:28 1995
--- bc_eso_131_1 Fri Mar 17 08:42:28 1995
***************
*** 4,10 ****
5
4
0
! 4
3
3
5
--- 4,10 ----
5
4
0
! 5
3
3
5
Assertion Result: FAIL
Both of these are the 'arrays are passed by value' problem.
One of the test cases is below:
cat << \VSC-EOF > bc_in_130_1
a[0] = 3
a[0]
define b(a[]) {
a[0]
a[0] = 4
a[0]
}
a[0]
a[0] = 5
a[0]
b(a[])
a[0]
VSC-EOF
They expect the assignment of a[0] inside the b() function
to not affect a[0] outside of the function.
Assertion #139 (A): check sin
Standard output isn't the same as file 'bc_eso_139_1'
diff of "out.stdout" and "bc_eso_139_1":
*** out.stdout Fri Mar 17 08:42:40 1995
--- bc_eso_139_1 Fri Mar 17 08:42:39 1995
***************
*** 1,5 ****
0
! 20
1.68294196961579301330
20
1.6829419696
--- 1,5 ----
0
! 0
1.68294196961579301330
20
1.6829419696
Assertion Result: FAIL
Assertion #141 (A): check arctanngent
Standard output isn't the same as file 'bc_eso_141_1'
diff of "out.stdout" and "bc_eso_141_1":
*** out.stdout Fri Mar 17 08:42:44 1995
--- bc_eso_141_1 Fri Mar 17 08:42:44 1995
***************
*** 1,5 ****
0
! 20
3.14159265358979323844
20
3.1415926532
--- 1,5 ----
0
! 0
3.14159265358979323844
20
3.1415926532
Assertion Result: FAIL
Assertion #142 (A): check log
Standard output isn't the same as file 'bc_eso_142_1'
diff of "out.stdout" and "bc_eso_142_1":
*** out.stdout Fri Mar 17 08:42:47 1995
--- bc_eso_142_1 Fri Mar 17 08:42:47 1995
***************
*** 1,5 ****
0
! 20
2.30258509299404568401
20
2.3025850929
--- 1,5 ----
0
! 0
2.30258509299404568401
20
2.3025850929
Assertion Result: FAIL
Assertion #144 (A): check bessel
Standard output isn't the same as file 'bc_eso_144_1'
diff of "out.stdout" and "bc_eso_144_1":
*** out.stdout Fri Mar 17 08:42:51 1995
--- bc_eso_144_1 Fri Mar 17 08:42:51 1995
***************
*** 1,5 ****
0
! 20
.57672480775687338720
20
.5767248077
--- 1,5 ----
0
! 0
.57672480775687338720
20
.5767248077
Assertion Result: FAIL
All of these are the same. I'll give you the test case
for 'sin'; what they're expecting is 0:
scale(s(0))
bc outputs '20' (which is the scale at the time), but the
interpretation of the standard says that it should be '0',
since s(0) is 0, and the scale of 0 is 0. I think that
this interpretation disagrees with one of the previous
assertions (assertion #92).
/* end of test results */
--
Phil Nelson
e-mail: phil@cs.wwu.edu
http://www.cs.wwu.edu/~phil

View File

@ -1,14 +0,0 @@
"This tests arrays!
"
define p(x,y) {
auto i;
for (i=x; i<y; i++) a[i];
}
for (i=0; i<10; i++) a[i] = i;
j = p(0,10);
for (i=1000; i<1030; i++) a[i] = i;
j = p(1000,1030);
j = p(0,10);

View File

@ -1,30 +0,0 @@
"This tests arrays!
"
define p(a[],x,y) {
auto i;
for (i=x; i<y; i++) a[i];
}
define m(a[],x,y) {
auto i;
for (i=x; i<y; i++) a[i] = i;
}
define m1(*a[],x,y) {
auto i;
print "m1\n"
for (i=x; i<y; i++) a[i] = i;
}
for (i=0; i<10; i++) a[i] = i;
j = p(a[],0,10);
j = m(b[],0,10);
j = p(b[],0,10);
print "---\n";
j = m1(b[],0,10);
j = p(b[],0,10);
quit

View File

@ -1,16 +0,0 @@
define p ( x[] ) {
auto i;
for (i=0; i<10; i++) x[i];
}
define m ( x[] ) {
auto i;
for (i=0; i<10; i++) x[i] *= 2;
}
scale = 20;
for (i=0; i<10; i++) a[i] = sqrt(i);
p(a[]);
m(a[]);
p(a[]);

View File

@ -1,5 +0,0 @@
for (a=0; a<1000; a+=2) x=a(a)
x
for (a=0; a<2; a+=.01) x=a(a)
x
quit

View File

@ -1,109 +0,0 @@
define t (x,y,d,s,t) {
auto u, v, w, i, b, c;
if (s >= t) {
"Bad Scales. Try again.
"; return;
}
for (i = x; i < y; i += d) {
scale = s;
u = f(i);
scale = t;
v = f(i);
scale = s;
w = v / 1;
b += 1;
if (u != w) {
c += 1;
"
Failed:
"
" index = "; i;
" val1 = "; u;
" val2 = "; v;
"
"
}
}
"
Total tests: "; b;
"
Total failures: "; c;
"
Percent failed: "; scale = 2; c*100/b;
}
/*
b = begining scale value,
l = limit scale value,
i = increment scale value.
if b is set to a non-zero value before this file is executed,
b, l and i are not reset.
*/
if (b == 0) { b = 10; l = 61; i = 10; }
"
Checking e(x)"
define f(x) {
return (e(x))
}
for (s=10; s<l; s=s+i) {
"
scale = "; s
j = t(0,200,1,s,s+4)
}
"
Checking l(x)"
define f(x) {
return (l(x))
}
for (s=10; s<l; s=s+i) {
"
scale = "; s
j = t(1,10000,25,s,s+4)
}
"
Checking s(x)"
define f(x) {
return (s(x))
}
for (s=10; s<l; s=s+i) {
"
scale = "; s
j = t(0,8*a(1),.01,s,s+4)
}
"
Checking a(x)"
define f(x) {
return (a(x))
}
for (s=10; s<l; s=s+i) {
"
scale = "; s
j = t(-1000,1000,10,s,s+4)
}
"
Checking j(n,x)"
define f(x) {
return (j(n,x))
}
for (s=10; s<l; s=s+i) {
"
n=0, scale = "; s
n=0
j = t(0,30,.1,s,s+4)
"
n=1, scale = "; s
n=1
j = t(0,30,.1,s,s+4)
}

View File

@ -1,8 +0,0 @@
scale = 20
a=2/3
for (i=0; i<1000; i++) {
for (j=1; j<100; j++) b=a/j
}
b
quit

View File

@ -1,3 +0,0 @@
for (a=0; a<150; a++) x=e(a)
x
quit

View File

@ -1,13 +0,0 @@
define f (x) {
if (x<=1) return(1)
return (f(x-1)*x)
}
"Here we go"
for (a=1; a<100; a++) b+=f(a)/a
"
"
"b=";b
quit

View File

@ -1,6 +0,0 @@
scale = 30
for (a=0; a<5; a=a+2) {
for (b=0; b<100; b=b+10) x=j(a,b)
}
x
quit

View File

@ -1,3 +0,0 @@
for (a=1; a<10000000000000000000000000000; a = a*2) x=l(a)
x
quit

View File

@ -1,7 +0,0 @@
scale = 20
for (i=0; i<1000; i++) {
for (j=1; j<100; j++) b=i*j
}
b
quit

View File

@ -1,3 +0,0 @@
for (i=0; i<1000; i++) a = 2^i;
a
quit

View File

@ -1,87 +0,0 @@
/* From gnu@cygnus.com Wed Jul 14 13:46:44 1993
Return-Path: <gnu@cygnus.com>
To: phil@cs.wwu.edu, gnu@cygnus.com
Subject: bc/dc - no rest for the wicked
Date: Tue, 06 Jul 93 19:12:40 -0700
From: gnu@cygnus.com
GNU bc 1.02 passes all these tests. Can you add the test to the distribution?
Putting it into a DejaGnu test case for GNU bc would be a great thing, too.
(I haven't seen the Signum paper, maybe you can dig it out.)
John Gilmore
Cygnus Support
------- Forwarded Message
Date: Tue, 6 Jul 93 08:45:48 PDT
From: uunet!Eng.Sun.COM!David.Hough@uunet.UU.NET (David Hough)
Message-Id: <9307061545.AA14477@dgh.Eng.Sun.COM>
To: numeric-interest@validgh.com
Subject: bc/dc - no rest for the wicked
Steve Sommars sent me a bc script which reproduces ALL the test cases from
Dittmer's paper. Neither SunOS 5.2 on SPARC nor 5.1 on x86 come out clean.
Anybody else who has fixed all the bugs would be justified in
bragging about it here. */
/*Ingo Dittmer, ACM Signum, April 1993, page 8-11*/
define g(x,y,z){
auto a
a=x%y
if(a!=z){
"
x=";x
"y=";y
"Should be ";z
"was ";a
}
}
/*Table 1*/
g=g(53894380494284,9980035577,2188378484)
g=g(47907874973121,9980035577,3704203521)
g=g(76850276401922,9980035577,4002459022)
g=g(85830854846664,9980035577,2548884464)
g=g(43915353970066,9980035577,3197431266)
g=g(35930746212825,9980035577,2618135625)
g=g(51900604524715,9980035577,4419524315)
g=g(87827018005068,9980035577,2704927468)
g=g(57887902441764,9980035577,3696095164)
g=g(96810941031110,9980035577,4595934210)
/*Table 2*/
g=g(86833646827370,9980035577,7337307470)
g=g(77850880592435,9980035577,6603091835)
g=g(84836601050323,9980035577,6298645823)
g=g(85835110016211,9980035577,6804054011)
g=g(94817143459192,9980035577,6805477692)
g=g(94818870293481,9980035577,8532311981)
g=g(91823235571154,9980035577,6908262754)
g=g(59885451951796,9980035577,5238489796)
g=g(80844460893239,9980035577,6172719539)
g=g(67869195894693,9980035577,4953971093)
g=g(95813990985202,9980035577,5649446002)
/*Skip Table 3, duplicate of line 1, table 1*/
/*Table 4*/
g=g(28420950579078013018256253301,17987947258,16619542243)
g=g(12015118977201790601658257234,16687885701,8697335297)
g=g(14349070374946789715188912007,13712994561,3605141129)
g=g(61984050238512905451986475027,13337935089,5296182558)
g=g(86189707791214681859449918641,17837971389,14435206830)
g=g(66747908181102582528134773954,19462997965,8615839889)
/*Table 6*/
g=g(4999253,9998,253)
g=g(8996373,9995,873)
/* Added by Phil Nelson..... */
"end of tests
"

View File

@ -1,5 +0,0 @@
for (i=0; i<8*a(1); i=i+.01) x=s(i)
x
for (i=i; i<16*a(1); i=i+.01) x=s(i+.1234123412341234)
x
quit

View File

@ -1,13 +0,0 @@
scale = 5
for (a=1; a<500; a++) r=sqrt(a)
r
scale = 10
for (a=1; a<500; a++) r=sqrt(a)
r
scale = 25
for (a=1; a<500; a++) r=sqrt(a)
r
scale = 40
for (a=1; a<500; a++) r=sqrt(a)
r
quit

View File

@ -1,13 +0,0 @@
for (j=0; j<10; j++) {
a = .9;
b = .9+j;
scale = 2;
for (i=0; i<90; i++) {
scale += 1;
a /= 10;
b += a;
x = sqrt(b);
}
x;
}
quit

View File

@ -1,10 +0,0 @@
scale = 20
for (a=1; a<5000; a += 1) r=sqrt(a)
r
for (a=1; a<50000; a += 100) r=sqrt(a)
r
for (a=1; a<500000; a+=1000) r=sqrt(a)
r
for (a=1; a<5000000; a+=10000) r=sqrt(a)
r
quit

View File

@ -1,47 +0,0 @@
/* This function "t" tests the function "f" to see if computing at
two different scales has much effect on the accuracy.
test from f(x) to f(y) incrementing the index by d. f(i) is
computed at two scales, scale s and then scale t, where t>s.
the result from scale t is divided by 1 at scale s and the
results are compared. If they are different, the function is
said to have failed. It will then print out the value of i
(called index) and the two original values val1 (scale s) and
val2 (scale t) */
define t (x,y,d,s,t) {
auto u, v, w, i, b, c;
if (s >= t) {
"Bad Scales. Try again.
"; return;
}
for (i = x; i < y; i += d) {
scale = s;
u = f(i);
scale = t;
v = f(i);
scale = s;
w = v / 1;
b += 1;
if (u != w) {
c += 1;
"
Failed:
"
" index = "; i;
" val1 = "; u;
" val2 = "; v;
"
"
}
}
"
Total tests: "; b;
"
Total failures: "; c;
"
Percent failed: "; scale = 2; c*100/b;
}

View File

@ -1,14 +0,0 @@
#!/bin/sh
#
# Time the functions.
#
BC=../bc/bc
SYSBC=/usr/bin/bc
for file in exp.b ln.b sine.b atan.b jn.b mul.b div.b raise.b sqrt.b
do
for prog in $BC $SYSBC
do
echo Timing $file with $prog
time $prog -l $file
done
done

View File

@ -1,435 +0,0 @@
This is Info file dc.info, produced by Makeinfo-1.64 from the input
file dc.texi.
This file documents DC, an arbitrary precision calculator.
Published by the Free Software Foundation, 675 Massachusetts Avenue,
Cambridge, MA 02139 USA
Copyright (C) 1984, 1994, 1997, 1998 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by the Foundation.

File: dc.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
* Menu:
* Introduction:: Introduction
* Invocation:: Invocation
* Printing Commands:: Printing Commands
* Arithmetic:: Arithmetic
* Stack Control:: Stack Control
* Registers:: Registers
* Parameters:: Parameters
* Strings:: Strings
* Status Inquiry:: Status Inquiry
* Miscellaneous:: Other commands
* Reporting bugs:: Reporting bugs

File: dc.info, Node: Introduction, Next: Invocation, Prev: Top, Up: Top
Introduction
************
DC is a reverse-polish desk calculator which supports unlimited
precision arithmetic. It also allows you to define and call macros.
Normally DC reads from the standard input; if any command arguments are
given to it, they are filenames, and DC reads and executes the contents
of the files instead of reading from standard input. All normal output
is to standard output; all error messages are written to standard error.
To exit, use `q'. `C-c' does not exit; it is used to abort macros
that are looping, etc. (Currently this is not true; `C-c' does exit.)
A reverse-polish calculator stores numbers on a stack. Entering a
number pushes it on the stack. Arithmetic operations pop arguments off
the stack and push the results.
To enter a number in DC, type the digits, with an optional decimal
point. Exponential notation is not supported. To enter a negative
number, begin the number with `_'. `-' cannot be used for this, as it
is a binary operator for subtraction instead. To enter two numbers in
succession, separate them with spaces or newlines. These have no
meaning as commands.

File: dc.info, Node: Invocation, Next: Printing Commands, Prev: Introduction, Up: Top
Invocation
**********
DC may be invoked with the following command-line options:
`-e EXPR'
`--expression=EXPR'
Evaluate EXPR as DC commands.
`-f FILE'
`--file=FILE'
Read and evaluate DC commands from FILE.
`-h'
`--help'
Print a usage message summarizing the command-line options, then
exit.
`-V'
`--version'
Print the version information for this program, then exit.
If any command-line parameters remain after processing the options,
these parameters are interpreted as additional FILEs whose contents are
read and evaluated. A file name of `-' refers to the standard input
stream. If no `-e' option was specified, and no files were specified,
then the standard input will be read for commands to evaluate.

File: dc.info, Node: Printing Commands, Next: Arithmetic, Prev: Invocation, Up: Top
Printing Commands
*****************
`p'
Prints the value on the top of the stack, without altering the
stack. A newline is printed after the value.
`n'
Prints the value on the top of the stack, popping it off, and does
not print a newline after. (This command is a GNU extension.)
`P'
Pops off the value on top of the stack. If it it a string, it is
simply printed without a trailing newline. Otherwise it is a
number, and the integer portion of its absolute value is printed
out as a "base (UCHAR_MAX+1)" byte stream. Assuming that
(UCHAR_MAX+1) is 256 (as it is on most machines with 8-bit bytes),
the sequence `KSK 0k1/ [_1*]sx d0>x [256~aPd0<x]dsxx sxLKk' could
also accomplish this function, except for the side-effect of
clobbering the x register. (Details of the behavior with a number
are a GNU extension.)
`f'
Prints the entire contents of the stack without altering anything.
This is a good command to use if you are lost or want to figure
out what the effect of some command has been.

File: dc.info, Node: Arithmetic, Next: Stack Control, Prev: Printing Commands, Up: Top
Arithmetic
**********
`+'
Pops two values off the stack, adds them, and pushes the result.
The precision of the result is determined only by the values of
the arguments, and is enough to be exact.
`-'
Pops two values, subtracts the first one popped from the second
one popped, and pushes the result.
`*'
Pops two values, multiplies them, and pushes the result. The
number of fraction digits in the result is the largest of the
precision value, the number of fraction digits in the multiplier,
or the number of fraction digits in the multiplicand; but in no
event exceeding the number of digits required for an exact result.
`/'
Pops two values, divides the second one popped from the first one
popped, and pushes the result. The number of fraction digits is
specified by the precision value.
`%'
Pops two values, computes the remainder of the division that the
`/' command would do, and pushes that. The value computed is the
same as that computed by the sequence `Sd dld/ Ld*-' .
`~'
Pops two values, divides the second one popped from the first one
popped. The quotient is pushed first, and the remainder is pushed
next. The number of fraction digits used in the division is
specified by the precision value. (The sequence `SdSn lnld/
LnLd%' could also accomplish this function, with slightly
different error checking.) (This command is a GNU extension.)
`^'
Pops two values and exponentiates, using the first value popped as
the exponent and the second popped as the base. The fraction part
of the exponent is ignored. The precision value specifies the
number of fraction digits in the result.
`|'
Pops three values and computes a modular exponentiation. The
first value popped is used as the reduction modulus; this value
must be a non-zero number, and the result may not be accurate if
the modulus is not an integer. The second popped is used as the
exponent; this value must be a non-negative number, and any
fractional part of this exponent will be ignored. The third value
popped is the base which gets exponentiated, which should be an
integer. For small integers this is like the sequence `Sm^Lm%',
but, unlike `^', this command will work with arbritrarily large
exponents. (This command is a GNU extension.)
`v'
Pops one value, computes its square root, and pushes that. The
precision value specifies the number of fraction digits in the
result.
Most arithmetic operations are affected by the *precision value*,
which you can set with the `k' command. The default precision value is
zero, which means that all arithmetic except for addition and
subtraction produces integer results.

File: dc.info, Node: Stack Control, Next: Registers, Prev: Arithmetic, Up: Top
Stack Control
*************
`c'
Clears the stack, rendering it empty.
`d'
Duplicates the value on the top of the stack, pushing another copy
of it. Thus, `4d*p' computes 4 squared and prints it.
`r'
Reverses the order of (swaps) the top two values on the stack.
(This command is a GNU extension.)

File: dc.info, Node: Registers, Next: Parameters, Prev: Stack Control, Up: Top
Registers
*********
DC provides at least 256 memory registers, each named by a single
character. You can store a number in a register and retrieve it later.
`sR'
Pop the value off the top of the stack and store it into register
R.
`lR'
Copy the value in register R, and push it onto the stack. This
does not alter the contents of R.
Each register also contains its own stack. The current register
value is the top of the register's stack.
`SR'
Pop the value off the top of the (main) stack and push it onto the
stack of register R. The previous value of the register becomes
inaccessible.
`LR'
Pop the value off the top of register R's stack and push it onto
the main stack. The previous value in register R's stack, if any,
is now accessible via the `lR' command.

File: dc.info, Node: Parameters, Next: Strings, Prev: Registers, Up: Top
Parameters
**********
DC has three parameters that control its operation: the precision,
the input radix, and the output radix. The precision specifies the
number of fraction digits to keep in the result of most arithmetic
operations. The input radix controls the interpretation of numbers
typed in; *all* numbers typed in use this radix. The output radix is
used for printing numbers.
The input and output radices are separate parameters; you can make
them unequal, which can be useful or confusing. The input radix must
be between 2 and 16 inclusive. The output radix must be at least 2.
The precision must be zero or greater. The precision is always
measured in decimal digits, regardless of the current input or output
radix.
`i'
Pops the value off the top of the stack and uses it to set the
input radix.
`o'
Pops the value off the top of the stack and uses it to set the
output radix.
`k'
Pops the value off the top of the stack and uses it to set the
precision.
`I'
Pushes the current input radix on the stack.
`O'
Pushes the current output radix on the stack.
`K'
Pushes the current precision on the stack.

File: dc.info, Node: Strings, Next: Status Inquiry, Prev: Parameters, Up: Top
Strings
*******
DC can operate on strings as well as on numbers. The only things
you can do with strings are print them and execute them as macros
(which means that the contents of the string are processed as DC
commands). Both registers and the stack can hold strings, and DC
always knows whether any given object is a string or a number. Some
commands such as arithmetic operations demand numbers as arguments and
print errors if given strings. Other commands can accept either a
number or a string; for example, the `p' command can accept either and
prints the object according to its type.
`[CHARACTERS]'
Makes a string containing CHARACTERS and pushes it on the stack.
For example, `[foo]P' prints the characters `foo' (with no
newline).
`a'
The mnemonic for this is somewhat erroneous: asciify. The
top-of-stack is popped. If it was a number, then the low-order
byte of this number is converted into a string and pushed onto the
stack. Otherwise the top-of-stack was a string, and the first
character of that string is pushed back. (This command is a GNU
extension.)
`x'
Pops a value off the stack and executes it as a macro. Normally
it should be a string; if it is a number, it is simply pushed back
onto the stack. For example, `[1p]x' executes the macro `1p',
which pushes 1 on the stack and prints `1' on a separate line.
Macros are most often stored in registers; `[1p]sa' stores a macro
to print `1' into register `a', and `lax' invokes the macro.
`>R'
Pops two values off the stack and compares them assuming they are
numbers, executing the contents of register R as a macro if the
original top-of-stack is greater. Thus, `1 2>a' will invoke
register `a''s contents and `2 1>a' will not.
`!>R'
Similar but invokes the macro if the original top-of-stack is not
greater (is less than or equal to) what was the second-to-top.
`<R'
Similar but invokes the macro if the original top-of-stack is less.
`!<R'
Similar but invokes the macro if the original top-of-stack is not
less (is greater than or equal to) what was the second-to-top.
`=R'
Similar but invokes the macro if the two numbers popped are equal.
`!=R'
Similar but invokes the macro if the two numbers popped are not
equal.
`?'
Reads a line from the terminal and executes it. This command
allows a macro to request input from the user.
`q'
During the execution of a macro, this command exits from the macro
and also from the macro which invoked it. If called from the top
level, or from a macro which was called directly from the top
level, the `q' command will cause DC to exit.
`Q'
Pops a value off the stack and uses it as a count of levels of
macro execution to be exited. Thus, `3Q' exits three levels.

File: dc.info, Node: Status Inquiry, Next: Miscellaneous, Prev: Strings, Up: Top
Status Inquiry
**************
`Z'
Pops a value off the stack, calculates the number of digits it has
(or number of characters, if it is a string) and pushes that
number.
`X'
Pops a value off the stack, calculates the number of fraction
digits it has, and pushes that number. For a string, the value
pushed is 0.
`z'
Pushes the current stack depth: the number of objects on the stack
before the execution of the `z' command.

File: dc.info, Node: Miscellaneous, Next: Reporting bugs, Prev: Status Inquiry, Up: Top
Miscellaneous
*************
`!'
Will run the rest of the line as a system command. Note that
parsing of the !<, !=, and !> commands take precidence, so if you
want to run a command starting with <, =, or > you will need to
add a space after the !.
`#'
Will interpret the rest of the line as a comment. (This command
is a GNU extension.)
`:R'
Will pop the top two values off of the stack. The old
second-to-top value will be stored in the array R, indexed by the
old top-of-stack value.
`;R'
Pops the top-of-stack and uses it as an index into the array R.
The selected value is then pushed onto the stack.
Note that each stacked instance of a register has its own array
associated with it. Thus `1 0:A 0SA 2 0:A LA 0;Ap' will print 1,
because the 2 was stored in an instance of 0:A that was later popped.

File: dc.info, Node: Reporting bugs, Prev: Miscellaneous, Up: Top
Reporting bugs
**************
Email bug reports to `bug-gnu-utils@prep.ai.mit.edu'. Be sure to
include the word "dc" somewhere in the "Subject:" field.

Tag Table:
Node: Top975
Node: Introduction1554
Node: Invocation2771
Node: Printing Commands3611
Node: Arithmetic4789
Node: Stack Control7701
Node: Registers8114
Node: Parameters9040
Node: Strings10301
Node: Status Inquiry13271
Node: Miscellaneous13828
Node: Reporting bugs14795

End Tag Table

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +0,0 @@
@echo off
if "%1" == "h8/300" goto h8300
echo Configuring bfd for go32
update hosts\go32.h sysdep.h
update Makefile.dos Makefile
echo s/@WORDSIZE@/32/g>config.sed
sed -e s/^/s\/@VERSION@\// -e s/$/\/g/g version >>config.sed
sed -f config.sed < bfd-in2.h > bfd.h2
update bfd.h2 bfd.h
goto exit
:h8300
echo Configuring bfd for H8/300
update hosts\h-go32.h sysdep.h
update Makefile.dos Makefile
:exit

View File

@ -1,142 +0,0 @@
$!
$! This file configures the bfd library for use with openVMS/Alpha
$! We do not use the configure script, since we do not have /bin/sh
$! to execute it.
$!
$! Written by Klaus K"ampf (kkaempf@progis.de)
$!
$arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2
$arch = f$element(arch_indx,"|","|VAX|Alpha|")
$if arch .eqs. "VAX"
$then
$ write sys$output "Target VAX not supported."
$ exit 2
$endif
$!
$! copy bfd-in2.h to bfd.h, replacing @ macros
$!
$ edit/tpu/nojournal/nosection/nodisplay/command=sys$input -
[]bfd-in2.h /output=[]bfd.h
$DECK
!
! Copy file, changing lines with macros (@@)
!
!
vfile := CREATE_BUFFER("vfile", "CONFIGURE.IN");
rang := CREATE_RANGE(BEGINNING_OF(vfile), END_OF(vfile));
match_pos := SEARCH_QUIETLY('AM_INIT_AUTOMAKE(bfd, ', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
vers := CURRENT_LINE-")";
ELSE;
vers := "2.8.1";
ENDIF;
file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name"));
rang := CREATE_RANGE(BEGINNING_OF(file), END_OF(file));
match_pos := SEARCH_QUIETLY('@VERSION@', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
COPY_TEXT(vers);
ENDIF;
match_pos := SEARCH_QUIETLY('@wordsize@', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
COPY_TEXT('64');
ENDIF;
match_pos := SEARCH_QUIETLY('@BFD_HOST_64BIT_LONG@', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
COPY_TEXT('0');
ENDIF;
match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT_DEFINED@', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
COPY_TEXT('__DECC');
SPLIT_LINE;
COPY_TEXT('#include <ints.h>');
ENDIF;
match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT@', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
COPY_TEXT('int64');
ENDIF;
match_pos := SEARCH_QUIETLY('@BFD_HOST_U_64_BIT@', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
COPY_TEXT('uint64');
ENDIF;
WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file"));
QUIT
$ EOD
$ write sys$output "Generated `bfd.h' from `bfd-in2.h'."
$!
$!
$! create targmatch.h
$!
$ open/write tfile []targmatch.h
$ write tfile "{ " + """alpha-*-*vms*""" + ","
$ write tfile "#if defined (SELECT_VECS)"
$ write tfile "SELECT_VECS"
$ write tfile "#else"
$ write tfile "UNSUPPORTED_TARGET"
$ write tfile "#endif"
$ write tfile "},"
$ close tfile
$ write sys$output "Generated `targmatch.h'"
$!
$!
$! create config.h
$!
$ create []config.h
/* config.h-vms. Generated by hand by Klaus Kämpf, kkaempf@didymus.rmi.de. */
/* config.in. Generated automatically from configure.in by autoheader. */
/* Whether malloc must be declared even if <stdlib.h> is included. */
/* #undef NEED_DECLARATION_MALLOC */
/* Whether free must be declared even if <stdlib.h> is included. */
/* #undef NEED_DECLARATION_FREE */
/* Define if you have a working `mmap' system call. */
/* #define HAVE_MMAP 1 */
/* Do we need to use the b modifier when opening binary files? */
/* #undef USE_BINARY_FOPEN */
/* Name of host specific header file to include in trad-core.c. */
/* #undef TRAD_HEADER */
/* Define only if <sys/procfs.h> is available *and* it defines prstatus_t. */
/* #undef HAVE_SYS_PROCFS_H */
/* Do we really want to use mmap if it's available? */
/* #undef USE_MMAP */
/* Define if you have the fcntl function. */
#define HAVE_FCNTL 1
/* Define if you have the getpagesize function. */
#define HAVE_GETPAGESIZE 1
/* Define if you have the madvise function. */
#define HAVE_MADVISE 1
/* Define if you have the mprotect function. */
#define HAVE_MPROTECT 1
/* Define if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
/* Define if you have the <stddef.h> header file. */
#define HAVE_STDDEF_H 1
/* Define if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define if you have the <sys/file.h> header file. */
#define HAVE_SYS_FILE_H 1
/* Define if you have the <time.h> header file. */
#define HAVE_TIME_H 1
/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
$!
$ write sys$output "Generated `config.h'"

View File

@ -1,95 +0,0 @@
This is Info file bfd.info, produced by Makeinfo version 1.68 from the
input file bfd.texinfo.
START-INFO-DIR-ENTRY
* Bfd: (bfd). The Binary File Descriptor library.
END-INFO-DIR-ENTRY
This file documents the BFD library.
Copyright (C) 1991 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, subject to the
terms of the GNU General Public License, which includes the provision
that the entire resulting derived work is distributed under the terms
of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions.

Indirect:
bfd.info-1: 942
bfd.info-2: 37582
bfd.info-3: 78554
bfd.info-4: 113353
bfd.info-5: 162239
bfd.info-6: 188304

Tag Table:
(Indirect)
Node: Top942
Node: Overview1207
Node: History2257
Node: How It Works3198
Node: What BFD Version 2 Can Do4739
Node: BFD information loss6053
Node: Canonical format8576
Node: BFD front end12937
Node: Memory Usage31680
Node: Initialization32903
Node: Sections33280
Node: Section Input33758
Node: Section Output35114
Node: typedef asection37582
Node: section prototypes51158
Node: Symbols56978
Node: Reading Symbols58568
Node: Writing Symbols59742
Node: Mini Symbols61432
Node: typedef asymbol62397
Node: symbol handling functions67361
Node: Archives71416
Node: Formats75034
Node: Relocations77835
Node: typedef arelent78554
Node: howto manager93396
Node: Core Files110371
Node: Targets111392
Node: bfd_target113353
Node: Architectures131107
Node: Opening and Closing142532
Node: Internal146127
Node: File Caching151309
Node: Linker Functions154087
Node: Creating a Linker Hash Table155753
Node: Adding Symbols to the Hash Table157480
Node: Differing file formats158370
Node: Adding symbols from an object file160103
Node: Adding symbols from an archive162239
Node: Performing the Final Link164638
Node: Information provided by the linker165869
Node: Relocating the section contents167005
Node: Writing the symbol table168742
Node: Hash Tables171336
Node: Creating and Freeing a Hash Table172527
Node: Looking Up or Entering a String173683
Node: Traversing a Hash Table174925
Node: Deriving a New Hash Table Type175703
Node: Define the Derived Structures176758
Node: Write the Derived Creation Routine177824
Node: Write Other Derived Routines180523
Node: BFD back ends181823
Node: What to Put Where182042
Node: aout182180
Node: coff188304
Node: elf214335
Node: Index215168

End Tag Table

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,663 +0,0 @@
This is Info file bfd.info, produced by Makeinfo version 1.68 from the
input file bfd.texinfo.
START-INFO-DIR-ENTRY
* Bfd: (bfd). The Binary File Descriptor library.
END-INFO-DIR-ENTRY
This file documents the BFD library.
Copyright (C) 1991 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, subject to the
terms of the GNU General Public License, which includes the provision
that the entire resulting derived work is distributed under the terms
of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions.

File: bfd.info, Node: Adding symbols from an archive, Prev: Adding symbols from an object file, Up: Adding Symbols to the Hash Table
Adding symbols from an archive
..............................
When the `_bfd_link_add_symbols' routine is passed an archive, it
must look through the symbols defined by the archive and decide which
elements of the archive should be included in the link. For each such
element it must call the `add_archive_element' linker callback, and it
must add the symbols from the object file to the linker hash table.
In most cases the work of looking through the symbols in the archive
should be done by the `_bfd_generic_link_add_archive_symbols' function.
This function builds a hash table from the archive symbol table and
looks through the list of undefined symbols to see which elements
should be included. `_bfd_generic_link_add_archive_symbols' is passed
a function to call to make the final decision about adding an archive
element to the link and to do the actual work of adding the symbols to
the linker hash table.
The function passed to `_bfd_generic_link_add_archive_symbols' must
read the symbols of the archive element and decide whether the archive
element should be included in the link. If the element is to be
included, the `add_archive_element' linker callback routine must be
called with the element as an argument, and the elements symbols must
be added to the linker hash table just as though the element had itself
been passed to the `_bfd_link_add_symbols' function.
When the a.out `_bfd_link_add_symbols' function receives an archive,
it calls `_bfd_generic_link_add_archive_symbols' passing
`aout_link_check_archive_element' as the function argument.
`aout_link_check_archive_element' calls `aout_link_check_ar_symbols'.
If the latter decides to add the element (an element is only added if
it provides a real, non-common, definition for a previously undefined
or common symbol) it calls the `add_archive_element' callback and then
`aout_link_check_archive_element' calls `aout_link_add_symbols' to
actually add the symbols to the linker hash table.
The ECOFF back end is unusual in that it does not normally call
`_bfd_generic_link_add_archive_symbols', because ECOFF archives already
contain a hash table of symbols. The ECOFF back end searches the
archive itself to avoid the overhead of creating a new hash table.

File: bfd.info, Node: Performing the Final Link, Prev: Adding Symbols to the Hash Table, Up: Linker Functions
Performing the final link
-------------------------
When all the input files have been processed, the linker calls the
`_bfd_final_link' entry point of the output BFD. This routine is
responsible for producing the final output file, which has several
aspects. It must relocate the contents of the input sections and copy
the data into the output sections. It must build an output symbol
table including any local symbols from the input files and the global
symbols from the hash table. When producing relocateable output, it
must modify the input relocs and write them into the output file.
There may also be object format dependent work to be done.
The linker will also call the `write_object_contents' entry point
when the BFD is closed. The two entry points must work together in
order to produce the correct output file.
The details of how this works are inevitably dependent upon the
specific object file format. The a.out `_bfd_final_link' routine is
`NAME(aout,final_link)'.
* Menu:
* Information provided by the linker::
* Relocating the section contents::
* Writing the symbol table::

File: bfd.info, Node: Information provided by the linker, Next: Relocating the section contents, Prev: Performing the Final Link, Up: Performing the Final Link
Information provided by the linker
..................................
Before the linker calls the `_bfd_final_link' entry point, it sets
up some data structures for the function to use.
The `input_bfds' field of the `bfd_link_info' structure will point
to a list of all the input files included in the link. These files are
linked through the `link_next' field of the `bfd' structure.
Each section in the output file will have a list of `link_order'
structures attached to the `link_order_head' field (the `link_order'
structure is defined in `bfdlink.h'). These structures describe how to
create the contents of the output section in terms of the contents of
various input sections, fill constants, and, eventually, other types of
information. They also describe relocs that must be created by the BFD
backend, but do not correspond to any input file; this is used to
support -Ur, which builds constructors while generating a relocateable
object file.

File: bfd.info, Node: Relocating the section contents, Next: Writing the symbol table, Prev: Information provided by the linker, Up: Performing the Final Link
Relocating the section contents
...............................
The `_bfd_final_link' function should look through the `link_order'
structures attached to each section of the output file. Each
`link_order' structure should either be handled specially, or it should
be passed to the function `_bfd_default_link_order' which will do the
right thing (`_bfd_default_link_order' is defined in `linker.c').
For efficiency, a `link_order' of type `bfd_indirect_link_order'
whose associated section belongs to a BFD of the same format as the
output BFD must be handled specially. This type of `link_order'
describes part of an output section in terms of a section belonging to
one of the input files. The `_bfd_final_link' function should read the
contents of the section and any associated relocs, apply the relocs to
the section contents, and write out the modified section contents. If
performing a relocateable link, the relocs themselves must also be
modified and written out.
The functions `_bfd_relocate_contents' and
`_bfd_final_link_relocate' provide some general support for performing
the actual relocations, notably overflow checking. Their arguments
include information about the symbol the relocation is against and a
`reloc_howto_type' argument which describes the relocation to perform.
These functions are defined in `reloc.c'.
The a.out function which handles reading, relocating, and writing
section contents is `aout_link_input_section'. The actual relocation
is done in `aout_link_input_section_std' and
`aout_link_input_section_ext'.

File: bfd.info, Node: Writing the symbol table, Prev: Relocating the section contents, Up: Performing the Final Link
Writing the symbol table
........................
The `_bfd_final_link' function must gather all the symbols in the
input files and write them out. It must also write out all the symbols
in the global hash table. This must be controlled by the `strip' and
`discard' fields of the `bfd_link_info' structure.
The local symbols of the input files will not have been entered into
the linker hash table. The `_bfd_final_link' routine must consider
each input file and include the symbols in the output file. It may be
convenient to do this when looking through the `link_order' structures,
or it may be done by stepping through the `input_bfds' list.
The `_bfd_final_link' routine must also traverse the global hash
table to gather all the externally visible symbols. It is possible
that most of the externally visible symbols may be written out when
considering the symbols of each input file, but it is still necessary
to traverse the hash table since the linker script may have defined
some symbols that are not in any of the input files.
The `strip' field of the `bfd_link_info' structure controls which
symbols are written out. The possible values are listed in
`bfdlink.h'. If the value is `strip_some', then the `keep_hash' field
of the `bfd_link_info' structure is a hash table of symbols to keep;
each symbol should be looked up in this hash table, and only symbols
which are present should be included in the output file.
If the `strip' field of the `bfd_link_info' structure permits local
symbols to be written out, the `discard' field is used to further
controls which local symbols are included in the output file. If the
value is `discard_l', then all local symbols which begin with a certain
prefix are discarded; this is controlled by the
`bfd_is_local_label_name' entry point.
The a.out backend handles symbols by calling
`aout_link_write_symbols' on each input BFD and then traversing the
global hash table with the function `aout_link_write_other_symbol'. It
builds a string table while writing out the symbols, which is written
to the output file at the end of `NAME(aout,final_link)'.
`bfd_link_split_section'
........................
*Synopsis*
boolean bfd_link_split_section(bfd *abfd, asection *sec);
*Description*
Return nonzero if SEC should be split during a reloceatable or final
link.
#define bfd_link_split_section(abfd, sec) \
BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))

File: bfd.info, Node: Hash Tables, Prev: Linker Functions, Up: BFD front end
Hash Tables
===========
BFD provides a simple set of hash table functions. Routines are
provided to initialize a hash table, to free a hash table, to look up a
string in a hash table and optionally create an entry for it, and to
traverse a hash table. There is currently no routine to delete an
string from a hash table.
The basic hash table does not permit any data to be stored with a
string. However, a hash table is designed to present a base class from
which other types of hash tables may be derived. These derived types
may store additional information with the string. Hash tables were
implemented in this way, rather than simply providing a data pointer in
a hash table entry, because they were designed for use by the linker
back ends. The linker may create thousands of hash table entries, and
the overhead of allocating private data and storing and following
pointers becomes noticeable.
The basic hash table code is in `hash.c'.
* Menu:
* Creating and Freeing a Hash Table::
* Looking Up or Entering a String::
* Traversing a Hash Table::
* Deriving a New Hash Table Type::

File: bfd.info, Node: Creating and Freeing a Hash Table, Next: Looking Up or Entering a String, Prev: Hash Tables, Up: Hash Tables
Creating and freeing a hash table
---------------------------------
To create a hash table, create an instance of a `struct
bfd_hash_table' (defined in `bfd.h') and call `bfd_hash_table_init' (if
you know approximately how many entries you will need, the function
`bfd_hash_table_init_n', which takes a SIZE argument, may be used).
`bfd_hash_table_init' returns `false' if some sort of error occurs.
The function `bfd_hash_table_init' take as an argument a function to
use to create new entries. For a basic hash table, use the function
`bfd_hash_newfunc'. *Note Deriving a New Hash Table Type:: for why you
would want to use a different value for this argument.
`bfd_hash_table_init' will create an objalloc which will be used to
allocate new entries. You may allocate memory on this objalloc using
`bfd_hash_allocate'.
Use `bfd_hash_table_free' to free up all the memory that has been
allocated for a hash table. This will not free up the `struct
bfd_hash_table' itself, which you must provide.

File: bfd.info, Node: Looking Up or Entering a String, Next: Traversing a Hash Table, Prev: Creating and Freeing a Hash Table, Up: Hash Tables
Looking up or entering a string
-------------------------------
The function `bfd_hash_lookup' is used both to look up a string in
the hash table and to create a new entry.
If the CREATE argument is `false', `bfd_hash_lookup' will look up a
string. If the string is found, it will returns a pointer to a `struct
bfd_hash_entry'. If the string is not found in the table
`bfd_hash_lookup' will return `NULL'. You should not modify any of the
fields in the returns `struct bfd_hash_entry'.
If the CREATE argument is `true', the string will be entered into
the hash table if it is not already there. Either way a pointer to a
`struct bfd_hash_entry' will be returned, either to the existing
structure or to a newly created one. In this case, a `NULL' return
means that an error occurred.
If the CREATE argument is `true', and a new entry is created, the
COPY argument is used to decide whether to copy the string onto the
hash table objalloc or not. If COPY is passed as `false', you must be
careful not to deallocate or modify the string as long as the hash table
exists.

File: bfd.info, Node: Traversing a Hash Table, Next: Deriving a New Hash Table Type, Prev: Looking Up or Entering a String, Up: Hash Tables
Traversing a hash table
-----------------------
The function `bfd_hash_traverse' may be used to traverse a hash
table, calling a function on each element. The traversal is done in a
random order.
`bfd_hash_traverse' takes as arguments a function and a generic
`void *' pointer. The function is called with a hash table entry (a
`struct bfd_hash_entry *') and the generic pointer passed to
`bfd_hash_traverse'. The function must return a `boolean' value, which
indicates whether to continue traversing the hash table. If the
function returns `false', `bfd_hash_traverse' will stop the traversal
and return immediately.

File: bfd.info, Node: Deriving a New Hash Table Type, Prev: Traversing a Hash Table, Up: Hash Tables
Deriving a new hash table type
------------------------------
Many uses of hash tables want to store additional information which
each entry in the hash table. Some also find it convenient to store
additional information with the hash table itself. This may be done
using a derived hash table.
Since C is not an object oriented language, creating a derived hash
table requires sticking together some boilerplate routines with a few
differences specific to the type of hash table you want to create.
An example of a derived hash table is the linker hash table. The
structures for this are defined in `bfdlink.h'. The functions are in
`linker.c'.
You may also derive a hash table from an already derived hash table.
For example, the a.out linker backend code uses a hash table derived
from the linker hash table.
* Menu:
* Define the Derived Structures::
* Write the Derived Creation Routine::
* Write Other Derived Routines::

File: bfd.info, Node: Define the Derived Structures, Next: Write the Derived Creation Routine, Prev: Deriving a New Hash Table Type, Up: Deriving a New Hash Table Type
Define the derived structures
.............................
You must define a structure for an entry in the hash table, and a
structure for the hash table itself.
The first field in the structure for an entry in the hash table must
be of the type used for an entry in the hash table you are deriving
from. If you are deriving from a basic hash table this is `struct
bfd_hash_entry', which is defined in `bfd.h'. The first field in the
structure for the hash table itself must be of the type of the hash
table you are deriving from itself. If you are deriving from a basic
hash table, this is `struct bfd_hash_table'.
For example, the linker hash table defines `struct
bfd_link_hash_entry' (in `bfdlink.h'). The first field, `root', is of
type `struct bfd_hash_entry'. Similarly, the first field in `struct
bfd_link_hash_table', `table', is of type `struct bfd_hash_table'.

File: bfd.info, Node: Write the Derived Creation Routine, Next: Write Other Derived Routines, Prev: Define the Derived Structures, Up: Deriving a New Hash Table Type
Write the derived creation routine
..................................
You must write a routine which will create and initialize an entry
in the hash table. This routine is passed as the function argument to
`bfd_hash_table_init'.
In order to permit other hash tables to be derived from the hash
table you are creating, this routine must be written in a standard way.
The first argument to the creation routine is a pointer to a hash
table entry. This may be `NULL', in which case the routine should
allocate the right amount of space. Otherwise the space has already
been allocated by a hash table type derived from this one.
After allocating space, the creation routine must call the creation
routine of the hash table type it is derived from, passing in a pointer
to the space it just allocated. This will initialize any fields used
by the base hash table.
Finally the creation routine must initialize any local fields for
the new hash table type.
Here is a boilerplate example of a creation routine. FUNCTION_NAME
is the name of the routine. ENTRY_TYPE is the type of an entry in the
hash table you are creating. BASE_NEWFUNC is the name of the creation
routine of the hash table type your hash table is derived from.
struct bfd_hash_entry *
FUNCTION_NAME (entry, table, string)
struct bfd_hash_entry *entry;
struct bfd_hash_table *table;
const char *string;
{
struct ENTRY_TYPE *ret = (ENTRY_TYPE *) entry;
/* Allocate the structure if it has not already been allocated by a
derived class. */
if (ret == (ENTRY_TYPE *) NULL)
{
ret = ((ENTRY_TYPE *)
bfd_hash_allocate (table, sizeof (ENTRY_TYPE)));
if (ret == (ENTRY_TYPE *) NULL)
return NULL;
}
/* Call the allocation method of the base class. */
ret = ((ENTRY_TYPE *)
BASE_NEWFUNC ((struct bfd_hash_entry *) ret, table, string));
/* Initialize the local fields here. */
return (struct bfd_hash_entry *) ret;
}
*Description*
The creation routine for the linker hash table, which is in `linker.c',
looks just like this example. FUNCTION_NAME is
`_bfd_link_hash_newfunc'. ENTRY_TYPE is `struct bfd_link_hash_entry'.
BASE_NEWFUNC is `bfd_hash_newfunc', the creation routine for a basic
hash table.
`_bfd_link_hash_newfunc' also initializes the local fields in a
linker hash table entry: `type', `written' and `next'.

File: bfd.info, Node: Write Other Derived Routines, Prev: Write the Derived Creation Routine, Up: Deriving a New Hash Table Type
Write other derived routines
............................
You will want to write other routines for your new hash table, as
well.
You will want an initialization routine which calls the
initialization routine of the hash table you are deriving from and
initializes any other local fields. For the linker hash table, this is
`_bfd_link_hash_table_init' in `linker.c'.
You will want a lookup routine which calls the lookup routine of the
hash table you are deriving from and casts the result. The linker hash
table uses `bfd_link_hash_lookup' in `linker.c' (this actually takes an
additional argument which it uses to decide how to return the looked up
value).
You may want a traversal routine. This should just call the
traversal routine of the hash table you are deriving from with
appropriate casts. The linker hash table uses `bfd_link_hash_traverse'
in `linker.c'.
These routines may simply be defined as macros. For example, the
a.out backend linker hash table, which is derived from the linker hash
table, uses macros for the lookup and traversal routines. These are
`aout_link_hash_lookup' and `aout_link_hash_traverse' in aoutx.h.

File: bfd.info, Node: BFD back ends, Next: Index, Prev: BFD front end, Up: Top
BFD back ends
*************
* Menu:
* What to Put Where::
* aout :: a.out backends
* coff :: coff backends
* elf :: elf backends

File: bfd.info, Node: What to Put Where, Next: aout, Prev: BFD back ends, Up: BFD back ends
All of BFD lives in one directory.

File: bfd.info, Node: aout, Next: coff, Prev: What to Put Where, Up: BFD back ends
a.out backends
==============
*Description*
BFD supports a number of different flavours of a.out format, though the
major differences are only the sizes of the structures on disk, and the
shape of the relocation information.
The support is split into a basic support file `aoutx.h' and other
files which derive functions from the base. One derivation file is
`aoutf1.h' (for a.out flavour 1), and adds to the basic a.out functions
support for sun3, sun4, 386 and 29k a.out files, to create a target
jump vector for a specific target.
This information is further split out into more specific files for
each machine, including `sunos.c' for sun3 and sun4, `newsos3.c' for
the Sony NEWS, and `demo64.c' for a demonstration of a 64 bit a.out
format.
The base file `aoutx.h' defines general mechanisms for reading and
writing records to and from disk and various other methods which BFD
requires. It is included by `aout32.c' and `aout64.c' to form the names
`aout_32_swap_exec_header_in', `aout_64_swap_exec_header_in', etc.
As an example, this is what goes on to make the back end for a sun4,
from `aout32.c':
#define ARCH_SIZE 32
#include "aoutx.h"
Which exports names:
...
aout_32_canonicalize_reloc
aout_32_find_nearest_line
aout_32_get_lineno
aout_32_get_reloc_upper_bound
...
from `sunos.c':
#define TARGET_NAME "a.out-sunos-big"
#define VECNAME sunos_big_vec
#include "aoutf1.h"
requires all the names from `aout32.c', and produces the jump vector
sunos_big_vec
The file `host-aout.c' is a special case. It is for a large set of
hosts that use "more or less standard" a.out files, and for which
cross-debugging is not interesting. It uses the standard 32-bit a.out
support routines, but determines the file offsets and addresses of the
text, data, and BSS sections, the machine architecture and machine
type, and the entry point address, in a host-dependent manner. Once
these values have been determined, generic code is used to handle the
object file.
When porting it to run on a new system, you must supply:
HOST_PAGE_SIZE
HOST_SEGMENT_SIZE
HOST_MACHINE_ARCH (optional)
HOST_MACHINE_MACHINE (optional)
HOST_TEXT_START_ADDR
HOST_STACK_END_ADDR
in the file `../include/sys/h-XXX.h' (for your host). These values,
plus the structures and macros defined in `a.out.h' on your host
system, will produce a BFD target that will access ordinary a.out files
on your host. To configure a new machine to use `host-aout.c', specify:
TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec
TDEPFILES= host-aout.o trad-core.o
in the `config/XXX.mt' file, and modify `configure.in' to use the
`XXX.mt' file (by setting "`bfd_target=XXX'") when your configuration
is selected.
Relocations
-----------
*Description*
The file `aoutx.h' provides for both the *standard* and *extended*
forms of a.out relocation records.
The standard records contain only an address, a symbol index, and a
type field. The extended records (used on 29ks and sparcs) also have a
full integer for an addend.
Internal entry points
---------------------
*Description*
`aoutx.h' exports several routines for accessing the contents of an
a.out file, which are gathered and exported in turn by various format
specific files (eg sunos.c).
`aout_SIZE_swap_exec_header_in'
...............................
*Synopsis*
void aout_SIZE_swap_exec_header_in,
(bfd *abfd,
struct external_exec *raw_bytes,
struct internal_exec *execp);
*Description*
Swap the information in an executable header RAW_BYTES taken from a raw
byte stream memory image into the internal exec header structure EXECP.
`aout_SIZE_swap_exec_header_out'
................................
*Synopsis*
void aout_SIZE_swap_exec_header_out
(bfd *abfd,
struct internal_exec *execp,
struct external_exec *raw_bytes);
*Description*
Swap the information in an internal exec header structure EXECP into
the buffer RAW_BYTES ready for writing to disk.
`aout_SIZE_some_aout_object_p'
..............................
*Synopsis*
const bfd_target *aout_SIZE_some_aout_object_p
(bfd *abfd,
const bfd_target *(*callback_to_real_object_p)());
*Description*
Some a.out variant thinks that the file open in ABFD checking is an
a.out file. Do some more checking, and set up for access if it really
is. Call back to the calling environment's "finish up" function just
before returning, to handle any last-minute setup.
`aout_SIZE_mkobject'
....................
*Synopsis*
boolean aout_SIZE_mkobject, (bfd *abfd);
*Description*
Initialize BFD ABFD for use with a.out files.
`aout_SIZE_machine_type'
........................
*Synopsis*
enum machine_type aout_SIZE_machine_type
(enum bfd_architecture arch,
unsigned long machine));
*Description*
Keep track of machine architecture and machine type for a.out's. Return
the `machine_type' for a particular architecture and machine, or
`M_UNKNOWN' if that exact architecture and machine can't be represented
in a.out format.
If the architecture is understood, machine type 0 (default) is
always understood.
`aout_SIZE_set_arch_mach'
.........................
*Synopsis*
boolean aout_SIZE_set_arch_mach,
(bfd *,
enum bfd_architecture arch,
unsigned long machine));
*Description*
Set the architecture and the machine of the BFD ABFD to the values ARCH
and MACHINE. Verify that ABFD's format can support the architecture
required.
`aout_SIZE_new_section_hook'
............................
*Synopsis*
boolean aout_SIZE_new_section_hook,
(bfd *abfd,
asection *newsect));
*Description*
Called by the BFD in response to a `bfd_make_section' request.

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +0,0 @@
CFLAGS = /noopt/include=([],[-],[-.-.include])
LDFLAGS = /nomap
LDLIBS = ,sys$$library:vaxcrtl.olb/lib
all: chew.exe

View File

@ -1,49 +0,0 @@
CFLAGS=-O2
.c.o :
gcc $(CFLAGS) -I. -I../include -c $<
all : libbfd.a
targets.o : targets.c
gcc $(CFLAGS) -I. -I../include -DSELECT_VECS=&go32coff_vec,&i386aout_vec -DDEFAULT_VECTOR=go32coff_vec -c $*.c
archures.o : archures.c
gcc $(CFLAGS) -I. -I../include -DSELECT_ARCHITECTURES=bfd_i386_arch -c $*.c
OBJS = \
libbfd.o \
opncls.o \
bfd.o \
archive.o \
targets.o \
cache.o \
archures.o \
corefile.o \
section.o \
format.o \
syms.o \
reloc.o \
init.o \
coffgen.o \
srec.o \
hash.o \
linker.o \
ecoff.o \
ecofflink.o \
elf.o \
aout32.o \
stab-sym.o \
i386aout.o \
cpu-i386.o \
coff-go32.o \
cofflink.o \
elf32.o \
binary.o \
tekhex.o \
$E
libbfd.a : $(OBJS)
-rm libbfd.a
ar rvs libbfd.a $(OBJS)
ranlib libbfd.a

View File

@ -1,57 +0,0 @@
#
# Makefile for bfd library under openVMS/Alpha
#
# For use with gnu-make for vms
#
# Created by Klaus K"ampf, kkaempf@progis.de
#
#
OBJS=archive.obj,archures.obj,bfd.obj,cache.obj,coffgen.obj,corefile.obj,format.obj,\
init.obj,libbfd.obj,opncls.obj,reloc.obj,section.obj,syms.obj,targets.obj,\
hash.obj,linker.obj,elf.obj,srec.obj,binary.obj,tekhex.obj,ihex.obj,stab-syms.obj,\
evax-alpha.obj,evax-emh.obj,evax-egsd.obj,evax-etir.obj,evax-misc.obj,\
cpu-alpha.obj
ifeq ($(CC),gcc)
DEFS=/define=(SELECT_VECS="&evax_alpha_vec",SELECT_ARCHITECTURES="&bfd_alpha_arch",\
"HAVE_evax_alpha_vec=1")
CFLAGS=/include=([],[-.include])$(DEFS)
else
DEFS=/define=(DEFAULT_VECTOR="evax_alpha_vec",SELECT_VECS="&evax_alpha_vec",\
SELECT_ARCHITECTURES="&bfd_alpha_arch","unlink=remove","const=",\
"_bfd_generic_get_section_contents_in_window"="_bfd_generic_get_win_section_cont",\
"_bfd_elf_section_from_bfd_section"="_bfd_elf_sec_from_bfd_sec")
CFLAGS=/noopt/debug/include=([],[-.include])$(DEFS)/warnings=disable=(missingreturn,implicitfunc)
endif
libbfd.olb: sysdep.h bfd.h $(OBJS)
purge
lib/create libbfd $(OBJS)
sysdep.h: [.hosts]alphavms.h config.h
$(CP) $< $@
bfd.h: bfd-in2.h
$$ @configure
targmatch.h: bfd.h
config.h: bfd.h
evax-alpha.c: evax.h
evax-emh.c: evax.h
evax-egsd.c: evax.h
evax-etir.c: evax.h
evax-misc.c: evax.h
targets.c: targmatch.h
clean:
$$ purge
$(RM) libbfd.olb;
$(RM) sysdep.h;
$(RM) bfd.h;
$(RM) targmatch.h;
$(RM) config.h;
$(RM) *.obj;

View File

@ -1,86 +0,0 @@
# Configuration fragment for BFD.
# This is almost always correct.
Set selarchs "&bfd_{target_cpu}_arch"
Set defvec ""
Set selvecs ""
Set havevecs ""
If "{target_canonical}" =~ /m68k-apple-macos/
Set BFD_BACKENDS '"{o}"coff-m68k.c.o "{o}"cofflink.c.o'
Set defvec m68kcoff_vec
Set selvecs '&m68kcoff_vec'
Set havevecs '-d HAVE_m68kcoff_vec'
Else If "{target_canonical}" =~ /powerpc-apple-macos/
Set BFD_BACKENDS '"{o}"coff-pmac.c.o "{o}"xcofflink.c.o'
Set defvec pmac_xcoff_vec
Set selvecs '&pmac_xcoff_vec'
Set havevecs '-d HAVE_pmac_xcoff_vec'
Set selarchs "&bfd_powerpc_arch"
Else If "{target_canonical}" =~ /i386-\Option-x-go32/
Set BFD_BACKENDS '"{o}"coff-i386.c.o'
Set defvec i386coff_vec
Set selvecs '&i386coff_vec'
Set havevecs '-d HAVE_i386coff_vec'
Else If "{target_canonical}" =~ /mips-\Option-x-\Option-x/
Set BFD_BACKENDS '"{o}"coff-mips.c.o "{o}"ecoff.c.o "{o}"ecofflink.c.o "{o}"elf32.c.o "{o}"elf32-mips.c.o "{o}"elflink.c.o'
Set defvec ecoff_big_vec
Set selvecs '&ecoff_big_vec,&ecoff_little_vec,&bfd_elf32_bigmips_vec'
Set havevecs '-d HAVE_ecoff_big_vec -d HAVE_ecoff_little_vec -d HAVE_bfd_elf32_bigmips_vec'
Else If "{target_canonical}" =~ /sh-\Option-x-hms/
Set BFD_BACKENDS '"{o}"coff-sh.c.o "{o}"cofflink.c.o'
Set defvec shcoff_vec
Set selvecs '&shcoff_vec,&shlcoff_vec'
Set havevecs '-d HAVE_shcoff_vec -d HAVE_shlcoff_vec'
End If
Set ta `echo {selarchs} | sed -e 's/&bfd_/{o}cpu-/g' -e 's/_arch/.c.o/g'`
Set tdefaults "-d DEFAULT_VECTOR={defvec} -d SELECT_VECS={selvecs} -d SELECT_ARCHITECTURES={selarchs} {havevecs}"
Echo '# From mpw-config.in' > "{o}"mk.tmp
Echo 'WORDSIZE = 32' >> "{o}"mk.tmp
Echo 'BFD_MACHINES = ' {ta} >> "{o}"mk.tmp
Echo 'BFD_BACKENDS = ' {BFD_BACKENDS} >> "{o}"mk.tmp
Echo 'TDEFAULTS = ' {tdefaults} >> "{o}"mk.tmp
Echo 'HDEPFILES = ' >> "{o}"mk.tmp
Echo 'TDEPFILES = ' >> "{o}"mk.tmp
Echo '# End from mpw-config.in' >> "{o}"mk.tmp
Echo '/* config.h. Generated by mpw-configure. */' > "{o}"config.new
Echo '#include "mpw.h"' >> "{o}"config.new
MoveIfChange "{o}"config.new "{o}"config.h
# We can only handle 32-bit targets right now.
sed -e 's/@WORDSIZE@/32/' \Option-d
-e 's/@wordsize@/32/' \Option-d
-e "s/@VERSION@/`Catenate {srcdir}VERSION`/" \Option-d
-e 's/@BFD_HOST_64_BIT_DEFINED@/0/' \Option-d
-e 's/@BFD_HOST_64_BIT@//' \Option-d
-e 's/@BFD_HOST_U_64_BIT@//' \Option-d
-e 's/@BFD_HOST_64BIT_LONG@/0/' \Option-d
"{srcdir}"bfd-in2.h >"{o}"bfd.h-new
MoveIfChange "{o}"bfd.h-new "{o}"bfd.h
sed -e 's/NN/32/g' "{srcdir}"elfxx-target.h >"{o}"elf32-target.h-new
MoveIfChange "{o}"elf32-target.h-new "{o}"elf32-target.h
# Pre-expand some macros in coffswap.h, so MPW C doesn't choke.
sed -e 's/^ PUT_AOUTHDR_TSIZE (/ bfd_h_put_32 (/' \Option-d
-e 's/^ PUT_AOUTHDR_DSIZE (/ bfd_h_put_32 (/' \Option-d
-e 's/^ PUT_AOUTHDR_BSIZE (/ bfd_h_put_32 (/' \Option-d
-e 's/^ PUT_AOUTHDR_ENTRY (/ bfd_h_put_32 (/' \Option-d
-e 's/^ PUT_AOUTHDR_TEXT_START (/ bfd_h_put_32 (/' \Option-d
-e 's/^ PUT_AOUTHDR_DATA_START (/ bfd_h_put_32 (/' \Option-d
"{srcdir}"coffswap.h >"{o}"coffswap.h-new
MoveIfChange "{o}"coffswap.h-new "{o}"coffswap.h

View File

@ -1,81 +0,0 @@
# Sed commands to finish translating the Unix BFD Makefile into MPW syntax.
# Whack out unused host and target define bits.
/HDEFINES/s/@HDEFINES@//
/TDEFINES/s/@TDEFINES@//
# Fix pathnames to include directories.
/^INCDIR = /s/^INCDIR = .*$/INCDIR = "{topsrcdir}"include/
/^CSEARCH = /s/$/ -i "{INCDIR}":mpw: -i ::extra-include:/
# Comment out setting of vars, configure script will add these itself.
/^WORDSIZE =/s/^/#/
# /^ALL_BACKENDS/s/^/#/
/^BFD_BACKENDS/s/^/#/
/^BFD_MACHINES/s/^/#/
/^TDEFAULTS/s/^/#/
# Remove extra, useless, "all".
/^all \\Option-f _oldest/,/^$/d
# Remove the Makefile rebuild rule.
/^Makefile /,/--recheck/d
# Don't do any recursive subdir stuff.
/ subdir_do/s/{MAKE}/null-command/
/BFD_H/s/^{BFD_H}/#{BFD_H}/
# Add explicit srcdir paths to special files.
/config.bfd/s/ config.bfd/ "{s}"config.bfd/g
/targmatch.sed/s/ targmatch.sed/ "{s}"targmatch.sed/g
# Point at include files that are always in the objdir.
/bfd/s/"{s}"bfd\.h/"{o}"bfd.h/g
/config/s/"{s}"config\.h/"{o}"config.h/g
/targmatch/s/"{s}"targmatch\.h/"{o}"targmatch.h/g
/targmatch/s/^targmatch\.h/"{o}"targmatch.h/
/elf32-target/s/"{s}"elf32-target\.h/"{o}"elf32-target.h/g
/elf32-target/s/^elf32-target\.h/"{o}"elf32-target.h/
/elf64-target/s/"{s}"elf64-target\.h/"{o}"elf64-target.h/g
/elf64-target/s/^elf64-target\.h/"{o}"elf64-target.h/
/"{s}"{INCDIR}/s/"{s}"{INCDIR}/"{INCDIR}"/g
/dep/s/\.dep/__dep/g
# Removing duplicates is cool but presently unnecessary,
# so whack this out.
/^ofiles \\Option-f/,/^$/d
/ofiles/s/{OFILES} ofiles/{OFILES}/
/echo ofiles = /d
/cat ofiles/s/`cat ofiles`/{OFILES}/
# No corefile support.
/COREFILE/s/@COREFILE@//
/COREFLAG/s/@COREFLAG@//
# No PIC foolery in this environment.
/@ALLLIBS@/s/@ALLLIBS@/{TARGETLIB}/
/@PICLIST@/s/@PICLIST@//
/@PICFLAG@/s/@PICFLAG@//
/^{OFILES} \\Option-f stamp-picdir/,/^$/d
# Remove the pic trickery from the default build rule.
/^\.c\.o \\Option-f /,/End If/c\
.c.o \\Option-f .c
# MPW Make doesn't know about $<.
/"{o}"targets.c.o \\Option-f "{s}"targets.c Makefile/,/^$/c\
"{o}"targets.c.o \\Option-f "{s}"targets.c Makefile\
{CC} @DASH_C_FLAG@ {ALL_CFLAGS} {TDEFAULTS} "{s}"targets.c -o "{o}"targets.c.o
/"{o}"archures.c.o \\Option-f "{s}"archures.c Makefile/,/^$/c\
"{o}"archures.c.o \\Option-f "{s}"archures.c Makefile\
{CC} @DASH_C_FLAG@ {ALL_CFLAGS} {TDEFAULTS} "{s}"archures.c -o "{o}"archures.c.o
# Remove the .h rebuilding rules, we don't currently have a doc subdir,
# or a way to build the prototype-hacking tool that's in it.
/^"{srcdir}"bfd-in2.h \\Option-f /,/^$/d
/^"{srcdir}"libbfd.h \\Option-f /,/^$/d
/^"{srcdir}"libcoff.h \\Option-f /,/^$/d

View File

@ -1,57 +0,0 @@
This is Info file binutils.info, produced by Makeinfo version 1.68 from
the input file binutils.texi.
START-INFO-DIR-ENTRY
* Binutils: (binutils). The GNU binary utilities "ar", "objcopy",
"objdump", "nm", "nlmconv", "size",
"strings", "strip", and "ranlib".
END-INFO-DIR-ENTRY
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software
Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the entire resulting derived work is distributed under the terms
of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions.

Indirect:
binutils.info-1: 979
binutils.info-2: 50570

Tag Table:
(Indirect)
Node: Top979
Node: ar2061
Node: ar cmdline4227
Node: ar scripts11462
Node: nm17143
Node: objcopy23691
Node: objdump34033
Node: ranlib42320
Node: size43054
Node: strings45780
Node: strip47605
Node: c++filt50570
Node: addr2line53131
Node: nlmconv55528
Node: windres58133
Node: Selecting The Target System62605
Node: Target Selection63622
Node: Architecture Selection66322
Node: Linker Emulation Selection67554
Node: Reporting Bugs68432
Node: Bug Criteria69183
Node: Bug Reporting69729
Node: Index76710

End Tag Table

File diff suppressed because it is too large Load Diff

View File

@ -1,891 +0,0 @@
This is Info file binutils.info, produced by Makeinfo version 1.68 from
the input file binutils.texi.
START-INFO-DIR-ENTRY
* Binutils: (binutils). The GNU binary utilities "ar", "objcopy",
"objdump", "nm", "nlmconv", "size",
"strings", "strip", and "ranlib".
END-INFO-DIR-ENTRY
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software
Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the entire resulting derived work is distributed under the terms
of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions.

File: binutils.info, Node: c++filt, Next: addr2line, Prev: strip, Up: Top
c++filt
*******
c++filt [ -_ | --strip-underscores ]
[ -n | --no-strip-underscores ]
[ -s FORMAT | --format=FORMAT ]
[ --help ] [ --version ] [ SYMBOL... ]
The C++ language provides function overloading, which means that you
can write many functions with the same name (providing each takes
parameters of different types). All C++ function names are encoded
into a low-level assembly label (this process is known as "mangling").
The `c++filt' program does the inverse mapping: it decodes
("demangles") low-level names into user-level names so that the linker
can keep these overloaded functions from clashing.
Every alphanumeric word (consisting of letters, digits, underscores,
dollars, or periods) seen in the input is a potential label. If the
label decodes into a C++ name, the C++ name replaces the low-level name
in the output.
You can use `c++filt' to decipher individual symbols:
c++filt SYMBOL
If no SYMBOL arguments are given, `c++filt' reads symbol names from
the standard input and writes the demangled names to the standard
output. All results are printed on the standard output.
`-_'
`--strip-underscores'
On some systems, both the C and C++ compilers put an underscore in
front of every name. For example, the C name `foo' gets the
low-level name `_foo'. This option removes the initial
underscore. Whether `c++filt' removes the underscore by default
is target dependent.
`-n'
`--no-strip-underscores'
Do not remove the initial underscore.
`-s FORMAT'
`--format=FORMAT'
GNU `nm' can decode three different methods of mangling, used by
different C++ compilers. The argument to this option selects which
method it uses:
`gnu'
the one used by the GNU compiler (the default method)
`lucid'
the one used by the Lucid compiler
`arm'
the one specified by the C++ Annotated Reference Manual
`--help'
Print a summary of the options to `c++filt' and exit.
`--version'
Print the version number of `c++filt' and exit.
*Warning:* `c++filt' is a new utility, and the details of its user
interface are subject to change in future releases. In particular,
a command-line option may be required in the the future to decode
a name passed as an argument on the command line; in other words,
c++filt SYMBOL
may in a future release become
c++filt OPTION SYMBOL

File: binutils.info, Node: addr2line, Next: nlmconv, Prev: c++filt, Up: Top
addr2line
*********
addr2line [ -b BFDNAME | --target=BFDNAME ]
[ -C | --demangle ]
[ -e FILENAME | --exe=FILENAME ]
[ -f | --functions ] [ -s | --basename ]
[ -H | --help ] [ -V | --version ]
[ addr addr ... ]
`addr2line' translates program addresses into file names and line
numbers. Given an address and an executable, it uses the debugging
information in the executable to figure out which file name and line
number are associated with a given address.
The executable to use is specified with the `-e' option. The
default is `a.out'.
`addr2line' has two modes of operation.
In the first, hexadecimal addresses are specified on the command
line, and `addr2line' displays the file name and line number for each
address.
In the second, `addr2line' reads hexadecimal addresses from standard
input, and prints the file name and line number for each address on
standard output. In this mode, `addr2line' may be used in a pipe to
convert dynamically chosen addresses.
The format of the output is `FILENAME:LINENO'. The file name and
line number for each address is printed on a separate line. If the
`-f' option is used, then each `FILENAME:LINENO' line is preceded by a
`FUNCTIONNAME' line which is the name of the function containing the
address.
If the file name or function name can not be determined, `addr2line'
will print two question marks in their place. If the line number can
not be determined, `addr2line' will print 0.
The long and short forms of options, shown here as alternatives, are
equivalent.
`-b BFDNAME'
`--target=BFDNAME'
Specify that the object-code format for the object files is
BFDNAME.
`-C'
`--demangle'
Decode ("demangle") low-level symbol names into user-level names.
Besides removing any initial underscore prepended by the system,
this makes C++ function names readable. *Note c++filt::, for more
information on demangling.
`-e FILENAME'
`--exe=FILENAME'
Specify the name of the executable for which addresses should be
translated. The default file is `a.out'.
`-f'
`--functions'
Display function names as well as file and line number information.
`-s'
`--basenames'
Display only the base of each file name.

File: binutils.info, Node: nlmconv, Next: windres, Prev: addr2line, Up: Top
nlmconv
*******
`nlmconv' converts a relocatable object file into a NetWare Loadable
Module.
*Warning:* `nlmconv' is not always built as part of the binary
utilities, since it is only useful for NLM targets.
nlmconv [ -I BFDNAME | --input-target=BFDNAME ]
[ -O BFDNAME | --output-target=BFDNAME ]
[ -T HEADERFILE | --header-file=HEADERFILE ]
[ -d | --debug] [ -l LINKER | --linker=LINKER ]
[ -h | --help ] [ -V | --version ]
INFILE OUTFILE
`nlmconv' converts the relocatable `i386' object file INFILE into
the NetWare Loadable Module OUTFILE, optionally reading HEADERFILE for
NLM header information. For instructions on writing the NLM command
file language used in header files, see the `linkers' section,
`NLMLINK' in particular, of the `NLM Development and Tools Overview',
which is part of the NLM Software Developer's Kit ("NLM SDK"),
available from Novell, Inc. `nlmconv' uses the GNU Binary File
Descriptor library to read INFILE; see *Note BFD: (ld.info)BFD, for
more information.
`nlmconv' can perform a link step. In other words, you can list
more than one object file for input if you list them in the definitions
file (rather than simply specifying one input file on the command line).
In this case, `nlmconv' calls the linker for you.
`-I BFDNAME'
`--input-target=BFDNAME'
Object format of the input file. `nlmconv' can usually determine
the format of a given file (so no default is necessary). *Note
Target Selection::, for more information.
`-O BFDNAME'
`--output-target=BFDNAME'
Object format of the output file. `nlmconv' infers the output
format based on the input format, e.g. for a `i386' input file the
output format is `nlm32-i386'. *Note Target Selection::, for more
information.
`-T HEADERFILE'
`--header-file=HEADERFILE'
Reads HEADERFILE for NLM header information. For instructions on
writing the NLM command file language used in header files, see
see the `linkers' section, of the `NLM Development and Tools
Overview', which is part of the NLM Software Developer's Kit,
available from Novell, Inc.
`-d'
`--debug'
Displays (on standard error) the linker command line used by
`nlmconv'.
`-l LINKER'
`--linker=LINKER'
Use LINKER for any linking. LINKER can be an abosolute or a
relative pathname.
`-h'
`--help'
Prints a usage summary.
`-V'
`--version'
Prints the version number for `nlmconv'.

File: binutils.info, Node: windres, Next: Selecting The Target System, Prev: nlmconv, Up: Top
windres
*******
`windres' may be used to manipulate Windows resources.
*Warning:* `windres' is not always built as part of the binary
utilities, since it is only useful for Windows targets.
windres [options] [input-file] [output-file]
`windres' reads resources from an input file and copies them into an
output file. Either file may be in one of three formats:
`rc'
A text format read by the Resource Compiler.
`res'
A binary format generated by the Resource Compiler.
`coff'
A COFF object or executable.
The exact description of these different formats is available in
documentation from Microsoft.
When `windres' converts from the `rc' format to the `res' format, it
is acting like the Windows Resource Compiler. When `windres' converts
from the `res' format to the `coff' format, it is acting like the
Windows `CVTRES' program.
When `windres' generates an `rc' file, the output is similar but not
identical to the format expected for the input. When an input `rc'
file refers to an external filename, an output `rc' file will instead
include the file contents.
If the input or output format is not specified, `windres' will guess
based on the file name, or, for the input file, the file contents. A
file with an extension of `.rc' will be treated as an `rc' file, a file
with an extension of `.res' will be treated as a `res' file, and a file
with an extension of `.o' or `.exe' will be treated as a `coff' file.
If no output file is specified, `windres' will print the resources
in `rc' format to standard output.
The normal use is for you to write an `rc' file, use `windres' to
convert it to a COFF object file, and then link the COFF file into your
application. This will make the resources described in the `rc' file
available to Windows.
`-i FILENAME'
`--input FILENAME'
The name of the input file. If this option is not used, then
`windres' will use the first non-option argument as the input file
name. If there are no non-option arguments, then `windres' will
read from standard input. `windres' can not read a COFF file from
standard input.
`-o FILENAME'
`--output FILENAME'
The name of the output file. If this option is not used, then
`windres' will use the first non-option argument, after any used
for the input file name, as the output file name. If there is no
non-option argument, then `windres' will write to standard output.
`windres' can not write a COFF file to standard output.
`-I FORMAT'
`--input-format FORMAT'
The input format to read. FORMAT may be `res', `rc', or `coff'.
If no input format is specified, `windres' will guess, as
described above.
`-O FORMAT'
`--output-format FORMAT'
The output format to generate. FORMAT may be `res', `rc', or
`coff'. If no output format is specified, `windres' will guess,
as described above.
`-F TARGET'
`--target TARGET'
Specify the BFD format to use for a COFF file as input or output.
This is a BFD target name; you can use the `--help' option to see
a list of supported targets. Normally `windres' will use the
default format, which is the first one listed by the `--help'
option. *Note Target Selection::.
`--preprocessor PROGRAM'
When `windres' reads an `rc' file, it runs it through the C
preprocessor first. This option may be used to specify the
preprocessor to use, including any leading arguments. The default
preprocessor argument is `gcc -E -xc-header -DRC_INVOKED'.
`--include-dir DIRECTORY'
Specify an include directory to use when reading an `rc' file.
`windres' will pass this to the preprocessor as an `-I' option.
`windres' will also search this directory when looking for files
named in the `rc' file.
`--define SYM[=VAL]'
Specify a `-D' option to pass to the preprocessor when reading an
`rc' file.
`--language VAL'
Specify the default language to use when reading an `rc' file.
VAL should be a hexadecimal language code. The low eight bits are
the language, and the high eight bits are the sublanguage.
`--help'
Prints a usage summary.
`--version'
Prints the version number for `windres'.
`--yydebug'
If `windres' is compiled with `YYDEBUG' defined as `1', this will
turn on parser debugging.

File: binutils.info, Node: Selecting The Target System, Next: Reporting Bugs, Prev: windres, Up: Top
Selecting the target system
***************************
You can specify three aspects of the target system to the GNU binary
file utilities, each in several ways:
* the target
* the architecture
* the linker emulation (which applies to the linker only)
In the following summaries, the lists of ways to specify values are
in order of decreasing precedence. The ways listed first override those
listed later.
The commands to list valid values only list the values for which the
programs you are running were configured. If they were configured with
`--enable-targets=all', the commands list most of the available values,
but a few are left out; not all targets can be configured in at once
because some of them can only be configured "native" (on hosts with the
same type as the target system).
* Menu:
* Target Selection::
* Architecture Selection::
* Linker Emulation Selection::

File: binutils.info, Node: Target Selection, Next: Architecture Selection, Up: Selecting The Target System
Target Selection
================
A "target" is an object file format. A given target may be
supported for multiple architectures (*note Architecture Selection::.).
A target selection may also have variations for different operating
systems or architectures.
The command to list valid target values is `objdump -i' (the first
column of output contains the relevant information).
Some sample values are: `a.out-hp300bsd', `ecoff-littlemips',
`a.out-sunos-big'.
You can also specify a target using a configuration triplet. This is
the same sort of name that is passed to configure to specify a target.
When you use a configuration triplet as an argument, it must be fully
canonicalized. You can see the canonical version of a triplet by
running the shell script `config.sub' which is included with the
sources.
Some sample configuration triplets are: `m68k-hp-bsd',
`mips-dec-ultrix', `sparc-sun-sunos'.
`objdump' Target
----------------
Ways to specify:
1. command line option: `-b' or `--target'
2. environment variable `GNUTARGET'
3. deduced from the input file
`objcopy' and `strip' Input Target
----------------------------------
Ways to specify:
1. command line options: `-I' or `--input-target', or `-F' or
`--target'
2. environment variable `GNUTARGET'
3. deduced from the input file
`objcopy' and `strip' Output Target
-----------------------------------
Ways to specify:
1. command line options: `-O' or `--output-target', or `-F' or
`--target'
2. the input target (see "`objcopy' and `strip' Input Target" above)
3. environment variable `GNUTARGET'
4. deduced from the input file
`nm', `size', and `strings' Target
----------------------------------
Ways to specify:
1. command line option: `--target'
2. environment variable `GNUTARGET'
3. deduced from the input file
Linker Input Target
-------------------
Ways to specify:
1. command line option: `-b' or `--format' (*note Options:
(ld.info)Options.)
2. script command `TARGET' (*note Option Commands: (ld.info)Option
Commands.)
3. environment variable `GNUTARGET' (*note Environment:
(ld.info)Environment.)
4. the default target of the selected linker emulation (*note Linker
Emulation Selection::.)
Linker Output Target
--------------------
Ways to specify:
1. command line option: `-oformat' (*note Options: (ld.info)Options.)
2. script command `OUTPUT_FORMAT' (*note Option Commands:
(ld.info)Option Commands.)
3. the linker input target (see "Linker Input Target" above)

File: binutils.info, Node: Architecture Selection, Next: Linker Emulation Selection, Prev: Target Selection, Up: Selecting The Target System
Architecture selection
======================
An "architecture" is a type of CPU on which an object file is to
run. Its name may contain a colon, separating the name of the
processor family from the name of the particular CPU.
The command to list valid architecture values is `objdump -i' (the
second column contains the relevant information).
Sample values: `m68k:68020', `mips:3000', `sparc'.
`objdump' Architecture
----------------------
Ways to specify:
1. command line option: `-m' or `--architecture'
2. deduced from the input file
`objcopy', `nm', `size', `strings' Architecture
-----------------------------------------------
Ways to specify:
1. deduced from the input file
Linker Input Architecture
-------------------------
Ways to specify:
1. deduced from the input file
Linker Output Architecture
--------------------------
Ways to specify:
1. script command `OUTPUT_ARCH' (*note Option Commands:
(ld.info)Option Commands.)
2. the default architecture from the linker output target (*note
Target Selection::.)

File: binutils.info, Node: Linker Emulation Selection, Prev: Architecture Selection, Up: Selecting The Target System
Linker emulation selection
==========================
A linker "emulation" is a "personality" of the linker, which gives
the linker default values for the other aspects of the target system.
In particular, it consists of
* the linker script
* the target
* several "hook" functions that are run at certain stages of the
linking process to do special things that some targets require
The command to list valid linker emulation values is `ld -V'.
Sample values: `hp300bsd', `mipslit', `sun4'.
Ways to specify:
1. command line option: `-m' (*note Options: (ld.info)Options.)
2. environment variable `LDEMULATION'
3. compiled-in `DEFAULT_EMULATION' from `Makefile', which comes from
`EMUL' in `config/TARGET.mt'

File: binutils.info, Node: Reporting Bugs, Next: Index, Prev: Selecting The Target System, Up: Top
Reporting Bugs
**************
Your bug reports play an essential role in making the binary
utilities reliable.
Reporting a bug may help you by bringing a solution to your problem,
or it may not. But in any case the principal function of a bug report
is to help the entire community by making the next version of the binary
utilities work better. Bug reports are your contribution to their
maintenance.
In order for a bug report to serve its purpose, you must include the
information that enables us to fix the bug.
* Menu:
* Bug Criteria:: Have you found a bug?
* Bug Reporting:: How to report bugs

File: binutils.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs
Have you found a bug?
=====================
If you are not sure whether you have found a bug, here are some
guidelines:
* If a binary utility gets a fatal signal, for any input whatever,
that is a bug. Reliable utilities never crash.
* If a binary utility produces an error message for valid input,
that is a bug.
* If you are an experienced user of binary utilities, your
suggestions for improvement are welcome in any case.

File: binutils.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs
How to report bugs
==================
A number of companies and individuals offer support for GNU
products. If you obtained the binary utilities from a support
organization, we recommend you contact that organization first.
You can find contact information for many support companies and
individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
In any event, we also recommend that you send bug reports for the
binary utilities to `bug-gnu-utils@gnu.org'.
The fundamental principle of reporting bugs usefully is this:
*report all the facts*. If you are not sure whether to state a fact or
leave it out, state it!
Often people omit facts because they think they know what causes the
problem and assume that some details do not matter. Thus, you might
assume that the name of a file you use in an example does not matter.
Well, probably it does not, but one cannot be sure. Perhaps the bug is
a stray memory reference which happens to fetch from the location where
that pathname is stored in memory; perhaps, if the pathname were
different, the contents of that location would fool the utility into
doing the right thing despite the bug. Play it safe and give a
specific, complete example. That is the easiest thing for you to do,
and the most helpful.
Keep in mind that the purpose of a bug report is to enable us to fix
the bug if it is new to us. Therefore, always write your bug reports
on the assumption that the bug has not been reported previously.
Sometimes people give a few sketchy facts and ask, "Does this ring a
bell?" Those bug reports are useless, and we urge everyone to *refuse
to respond to them* except to chide the sender to report bugs properly.
To enable us to fix the bug, you should include all these things:
* The version of the utility. Each utility announces it if you
start it with the `--version' argument.
Without this, we will not know whether there is any point in
looking for the bug in the current version of the binary utilities.
* Any patches you may have applied to the source, including any
patches made to the `BFD' library.
* The type of machine you are using, and the operating system name
and version number.
* What compiler (and its version) was used to compile the
utilities--e.g. "`gcc-2.7'".
* The command arguments you gave the utility to observe the bug. To
guarantee you will not omit something important, list them all. A
copy of the Makefile (or the output from make) is sufficient.
If we were to try to guess the arguments, we would probably guess
wrong and then we might not encounter the bug.
* A complete input file, or set of input files, that will reproduce
the bug. If the utility is reading an object file or files, then
it is generally most helpful to send the actual object files,
uuencoded if necessary to get them through the mail system.
Making them available for anonymous FTP is not as good, but may be
the only reasonable choice for large object files.
If the source files were produced exclusively using GNU programs
(e.g., `gcc', `gas', and/or the GNU `ld'), then it may be OK to
send the source files rather than the object files. In this case,
be sure to say exactly what version of `gcc', or whatever, was
used to produce the object files. Also say how `gcc', or
whatever, was configured.
* A description of what behavior you observe that you believe is
incorrect. For example, "It gets a fatal signal."
Of course, if the bug is that the utility gets a fatal signal,
then we will certainly notice it. But if the bug is incorrect
output, we might not notice unless it is glaringly wrong. You
might as well not give us a chance to make a mistake.
Even if the problem you experience is a fatal signal, you should
still say so explicitly. Suppose something strange is going on,
such as, your copy of the utility is out of synch, or you have
encountered a bug in the C library on your system. (This has
happened!) Your copy might crash and ours would not. If you told
us to expect a crash, then when ours fails to crash, we would know
that the bug was not happening for us. If you had not told us to
expect a crash, then we would not be able to draw any conclusion
from our observations.
* If you wish to suggest changes to the source, send us context
diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
Always send diffs from the old file to the new file. If you even
discuss something in the `ld' source, refer to it by context, not
by line number.
The line numbers in our development sources will not match those
in your sources. Your line numbers would convey no useful
information to us.
Here are some things that are not necessary:
* A description of the envelope of the bug.
Often people who encounter a bug spend a lot of time investigating
which changes to the input file will make the bug go away and which
changes will not affect it.
This is often time consuming and not very useful, because the way
we will find the bug is by running a single example under the
debugger with breakpoints, not by pure deduction from a series of
examples. We recommend that you save your time for something else.
Of course, if you can find a simpler example to report *instead*
of the original one, that is a convenience for us. Errors in the
output will be easier to spot, running under the debugger will take
less time, and so on.
However, simplification is not vital; if you do not want to do
this, report the bug anyway and send us the entire test case you
used.
* A patch for the bug.
A patch for the bug does help us if it is a good one. But do not
omit the necessary information, such as the test case, on the
assumption that a patch is all we need. We might see problems
with your patch and decide to fix the problem another way, or we
might not understand it at all.
Sometimes with programs as complicated as the binary utilities it
is very hard to construct an example that will make the program
follow a certain path through the code. If you do not send us the
example, we will not be able to construct one, so we will not be
able to verify that the bug is fixed.
And if we cannot understand what bug you are trying to fix, or why
your patch should be an improvement, we will not install it. A
test case will help us to understand.
* A guess about what the bug is or what it depends on.
Such guesses are usually wrong. Even we cannot guess right about
such things without first using the debugger to find the facts.

File: binutils.info, Node: Index, Prev: Reporting Bugs, Up: Top
Index
*****
* Menu:
* .stab: objdump.
* addr2line: addr2line.
* address to file name and line number: addr2line.
* all header information, object file: objdump.
* ar: ar.
* ar compatibility: ar.
* architecture: objdump.
* architectures available: objdump.
* archive contents: ranlib.
* archive headers: objdump.
* archives: ar.
* bug criteria: Bug Criteria.
* bug reports: Bug Reporting.
* bugs: Reporting Bugs.
* bugs, reporting: Bug Reporting.
* c++filt: c++filt.
* collections of files: ar.
* compatibility, ar: ar.
* contents of archive: ar cmdline.
* crash: Bug Criteria.
* creating archives: ar cmdline.
* dates in archive: ar cmdline.
* debug symbols: objdump.
* debugging symbols: nm.
* deleting from archive: ar cmdline.
* demangling C++ symbols: c++filt.
* demangling in nm: nm.
* demangling in objdump <1>: objdump.
* demangling in objdump: addr2line.
* disassembling object code: objdump.
* disassembly architecture: objdump.
* disassembly endianness: objdump.
* disassembly, with source: objdump.
* discarding symbols: strip.
* dynamic relocation entries, in object file: objdump.
* dynamic symbol table entries, printing: objdump.
* dynamic symbols: nm.
* ELF object file format: objdump.
* endianness: objdump.
* error on valid input: Bug Criteria.
* external symbols: nm.
* extract from archive: ar cmdline.
* fatal signal: Bug Criteria.
* file name: nm.
* header information, all: objdump.
* input file name: nm.
* libraries: ar.
* listings strings: strings.
* machine instructions: objdump.
* moving in archive: ar cmdline.
* MRI compatibility, ar: ar scripts.
* name duplication in archive: ar cmdline.
* name length: ar.
* nm: nm.
* nm compatibility: nm.
* nm format: nm.
* not writing archive index: ar cmdline.
* objdump: objdump.
* object code format <1>: objdump.
* object code format <2>: addr2line.
* object code format <3>: nm.
* object code format <4>: size.
* object code format: strings.
* object file header: objdump.
* object file information: objdump.
* object file sections: objdump.
* object formats available: objdump.
* operations on archive: ar cmdline.
* printing from archive: ar cmdline.
* printing strings: strings.
* quick append to archive: ar cmdline.
* radix for section sizes: size.
* ranlib: ranlib.
* relative placement in archive: ar cmdline.
* relocation entries, in object file: objdump.
* removing symbols: strip.
* repeated names in archive: ar cmdline.
* replacement in archive: ar cmdline.
* reporting bugs: Reporting Bugs.
* scripts, ar: ar scripts.
* section addresses in objdump: objdump.
* section headers: objdump.
* section information: objdump.
* section sizes: size.
* sections, full contents: objdump.
* size: size.
* size display format: size.
* size number format: size.
* sorting symbols: nm.
* source disassembly: objdump.
* source file name: nm.
* source filenames for object files: objdump.
* stab: objdump.
* start-address: objdump.
* stop-address: objdump.
* strings: strings.
* strings, printing: strings.
* strip: strip.
* symbol index <1>: ar.
* symbol index: ranlib.
* symbol index, listing: nm.
* symbol line numbers: nm.
* symbol table entries, printing: objdump.
* symbols: nm.
* symbols, discarding: strip.
* undefined symbols: nm.
* Unix compatibility, ar: ar cmdline.
* updating an archive: ar cmdline.
* version: Top.
* VMA in objdump: objdump.
* wide output, printing: objdump.
* writing archive index: ar cmdline.

View File

@ -1,63 +0,0 @@
@echo off
if "%1" == "h8/300" goto h8300
echo Configuring binutils for go32
update ../bfd/hosts/go32.h sysdep.h
goto common
:h8300
echo Configuring binutils for H8/300
update ..\bfd\hosts\h-go32.h sysdep.h
:common
echo # Makefile generated by "configure.bat"> Makefile
if exist config.sed del config.sed
sed -n "/^VERSION=/ p" Makefile.in | sed -e "s/^/s^/" -e "s/=/^\"/" -e "s/$/\"^/" > config.sed
sed -f config.sed version.c > version2.c
if exist config.sed del config.sed
echo "s/version\./version2\./g ">> config.sed
echo "s/-DVERSION=[^ ]* // ">> config.sed
echo "s/^ \$(srcdir)\/move-if-change/ update/ ">> config.sed
echo "/^###$/ i\ ">> config.sed
echo "CC = gcc ">> config.sed
echo "s/:\([^ ]\)/: \1/g ">> config.sed
echo "s/^ \ *\.\// go32 / ">> config.sed
echo "s/`echo \$(srcdir)\///g ">> config.sed
echo "s/ | sed 's,\^\\\.\/,,'`//g ">> config.sed
echo "s/^ cd \$(srcdir)[ ]*;// ">> config.sed
echo "/^arparse\.c/ i\ ">> config.sed
echo "arparse.o: arparse.c\ ">> config.sed
echo " $(CC) -c $(CFLAGS) $(INCLUDES) $(HDEFINES) $(TDEFINES) arparse.c ">> config.sed
echo "/\$(BISON)/ c\ ">> config.sed
echo " bison $(BISONFLAGS) -o $@ arparse.y ">> config.sed
echo "/y\.tab\./ d ">> config.sed
echo "/^arlex.c/ { ">> config.sed
echo " i\ ">> config.sed
echo "arlex.o: arlex.c ">> config.sed
echo " i\ ">> config.sed
echo " $(CC) -c $(CFLAGS) $(INCLUDES) $(HDEFINES) $(TDEFINES) arlex.c ">> config.sed
echo "} ">> config.sed
echo "/\$(LEX)/ c\ ">> config.sed
echo " flex $(LEX_OPTIONS) arlex.l ">> config.sed
echo "s/lex\.yy\./lexyy./g ">> config.sed
echo "s/'"/\\"/g ">> config.sed
echo "s/"'/\\"/g ">> config.sed
echo "s/c++filt/cxxfilt/g ">> config.sed
sed -e "s/^\"//" -e "s/\"$//" -e "s/[ ]*$//" config.sed > config2.sed
sed -f config2.sed Makefile.in >> Makefile
del config.sed
del config2.sed
echo int prepends_underscore = 1; > underscore.c

View File

@ -1,78 +0,0 @@
$!
$! This file configures binutils for use with openVMS/Alpha
$! We do not use the configure script, since we do not have /bin/sh
$! to execute it.
$!
$! Written by Klaus K"ampf (kkaempf@progis.de)
$!
$arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2
$arch = f$element(arch_indx,"|","|VAX|Alpha|")
$if arch .eqs. "VAX"
$then
$ write sys$output "Target VAX not supported."
$ exit 2
$endif
$!
$!
$! Generate config.h
$!
$ create []config.h
/* config.h. Generated automatically by configure. */
/* config.in. Generated automatically from configure.in by autoheader. */
/* Is the type time_t defined in <time.h>? */
#define HAVE_TIME_T_IN_TIME_H 1
/* Is the type time_t defined in <sys/types.h>? */
#define HAVE_TIME_T_IN_TYPES_H 1
/* Does <utime.h> define struct utimbuf? */
#define HAVE_GOOD_UTIME_H 1
/* Whether fprintf must be declared even if <stdio.h> is included. */
#define NEED_DECLARATION_FPRINTF 1
/* Whether sbrk must be declared even if <unistd.h> is included. */
#undef NEED_DECLARATION_SBRK
/* Do we need to use the b modifier when opening binary files? */
/* #undef USE_BINARY_FOPEN */
/* Define if you have the sbrk function. */
/* #undef HAVE_SBRK 1 */
/* Define if you have the utimes function. */
#define HAVE_UTIMES 1
/* Define if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
/* Define if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define if you have the <sys/file.h> header file. */
#define HAVE_SYS_FILE_H 1
/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
$ write sys$output "Generated `config.h'"
$!
$!
$! Edit VERSION in makefile.vms
$!
$ edit/tpu/nojournal/nosection/nodisplay/command=sys$input -
[]makefile.vms /output=[]makefile.vms
$DECK
!
! Get VERSION from Makefile.in
!
mfile := CREATE_BUFFER("mfile", "Makefile.in");
rang := CREATE_RANGE(BEGINNING_OF(mfile), END_OF(mfile));
v_pos := SEARCH_QUIETLY('VERSION=', FORWARD, EXACT, rang);
POSITION(BEGINNING_OF(v_pos));
vers := CURRENT_LINE;
IF match_pos <> 0 THEN;
file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name"));
rang := CREATE_RANGE(BEGINNING_OF(file), END_OF(file));
match_pos := SEARCH_QUIETLY('VERSION=', FORWARD, EXACT, rang);
POSITION(BEGINNING_OF(match_pos));
ERASE_LINE;
COPY_TEXT(vers);
SPLIT_LINE;
ENDIF;
WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file"));
QUIT
$ EOD
$ write sys$output "Patched `makefile.vms'"

View File

@ -1,42 +0,0 @@
/* Resources for GNU binutils. */
#include "SysTypes.r"
/* Version resources. */
resource 'vers' (1) {
0,
0,
0,
0,
verUs,
VERSION_STRING,
VERSION_STRING " (C) 1986-95 FSF, Inc."
};
resource 'vers' (2, purgeable) {
0,
0,
0,
0,
verUs,
VERSION_STRING,
"binutils " VERSION_STRING " for MPW"
};
#ifdef WANT_CFRG
#include "CodeFragmentTypes.r"
resource 'cfrg' (0) {
{
kPowerPC,
kFullLib,
kNoVersionNum, kNoVersionNum,
0,0,
kIsApp, kOnDiskFlat, kZeroOffset, kWholeFork,
PROG_NAME
}
};
#endif /* WANT_CFRG */

View File

@ -1,93 +0,0 @@
#
# Makefile for binutils under openVMS/Alpha
#
# For use with gnu-make for vms
#
# Created by Klaus K"ampf, kkaempf@progis.de
#
#
# Distribution version, filled in by configure.com
VERSION=
TARGET=""evax-alpha""
ifeq ($(CC),gcc)
CFLAGS=/include=([],[-.include],[-.bfd])$(DEFS)
DEFS=/define=("TARGET=$(TARGET)")
LIBS=,GNU:[000000]libgcc/lib,sys$$library:vaxcrtl.olb/lib,GNU:[000000]crt0.obj
else
CFLAGS=/noopt/debug/include=([],[-.include],[-.bfd])$(DEFS)/warnings=disable=(missingreturn,implicitfunc)
DEFS=/define=("TARGET=$(TARGET)",\
"const=","unlink=remove",\
"_bfd_generic_get_section_contents_in_window"="_bfd_generic_get_win_section_cont",\
"_bfd_elf_section_from_bfd_section"="_bfd_elf_sec_from_bfd_sec")
LIBS=,sys$$library:vaxcrtl.olb/lib
endif
BFDLIB = [-.bfd]libbfd.olb/lib
BFDLIB_DEP = [-.bfd]libbfd.olb
LIBIBERTY_DEP = [-.libiberty]libiberty.olb
LIBIBERTY = [-.libiberty]libiberty.olb/lib
OPCODES_DEP = [-.opcodes]libopcodes.olb
OPCODES = [-.opcodes]libopcodes.olb/lib
DEBUG_OBJS = rddbg.obj,debug.obj,stabs.obj,ieee.obj,rdcoff.obj
WRITE_DEBUG_OBJS = $(DEBUG_OBJS),wrstabs.obj
BULIBS = []bucomm.obj,version.obj,filemode.obj
ADDL_DEPS = $(BULIBS),$(BFDLIB_DEP),$(LIBIBERTY_DEP)
ADDL_LIBS = $(BULIBS),$(BFDLIB),$(LIBIBERTY)
SIZEOBJS = $(ADDL_DEPS),size.obj
STRINGSOBJS = $(ADDL_DEPS),strings.obj
NMOBJS = $(ADDL_DEPS),nm.obj
OBJDUMPOBJS = $(ADDL_DEPS),objdump.obj,prdbg.obj,$(DEBUG_OBJS),$(OPCODES_DEP)
all: config.h size.exe strings.exe objdump.exe nm.exe
size.exe: $(SIZEOBJS)
link/exe=$@ size.obj,$(ADDL_LIBS)$(LIBS)
strings.exe: $(STRINGSOBJS)
link/exe=$@ strings.obj,$(ADDL_LIBS)$(LIBS)
nm.exe: $(NMOBJS)
link/exe=$@ nm.obj,$(ADDL_LIBS)$(LIBS)
objdump.exe: $(OBJDUMPOBJS)
link/exe=$@ objdump.obj,prdbg.obj,$(DEBUG_OBJS),$(BFDLIB),$(OPCODES),$(ADDL_LIBS)$(LIBS)
version.obj: version.c
$(CC) $(CFLAGS)/define=(VERSION="""$(VERSION)""") $<
config.h:
$$ @configure
$(MAKE) -f makefile.vms
[-.bfd]libbfd.olb:
$(CD) [-.bfd]
$(MAKE) -f makefile.vms
$(CD) [-.binutils]
[-.libiberty]libiberty.olb:
$(CD) [-.libiberty]
$(MAKE) -f makefile.vms
$(CD) [-.binutils]
[-.opcodes]libopcodes.olb:
$(CD) [-.opcodes]
$(MAKE) -f makefile.vms
$(CD) [-.binutils]
clean:
$$ purge
$(RM) *.obj;
$(RM) *.exe;
$(RM) config.h;

View File

@ -1,27 +0,0 @@
# Configuration fragment for binutils.
Set target_arch `echo {target_canonical} | sed -e 's/-.*-.*//'`
# (should canonicalize arch name) */
Set archname ARCH_{target_arch}
Set underscore 0
If "{target_canonical}" =~ /sh-hitachi-hms/
Set underscore 1
End If
Echo '# From mpw-config.in' > "{o}"mk.tmp
Echo "ARCHDEFS = -d" {archname} >> "{o}"mk.tmp
Echo "UNDERSCORE = " {underscore} >> "{o}"mk.tmp
Echo "BUILD_NLMCONV = " >> "{o}"mk.tmp
Echo "BUILD_SRCONV = " >> "{o}"mk.tmp
Echo "SYSINFO_PROG = " >> "{o}"mk.tmp
Echo "BUILD_DLLTOOL = " >> "{o}"mk.tmp
Echo '# End from mpw-config.in' >> "{o}"mk.tmp
Echo '/* config.h. Generated by mpw-configure. */' > "{o}"config.new
Echo '#include "mpw.h"' >> "{o}"config.new
MoveIfChange "{o}"config.new "{o}"config.h

View File

@ -1,115 +0,0 @@
# Sed commands to finish translating the binutils Unix makefile into MPW syntax.
# Add a rule.
/^#### .*/a\
\
"{o}"underscore.c.o \\Option-f "{o}"underscore.c\
# Comment out any alias settings.
/^host_alias =/s/^/#/
/^target_alias =/s/^/#/
# Whack out unused host define bits.
/HDEFINES/s/@HDEFINES@//
# Don't build specialized tools.
/BUILD_NLMCONV/s/@BUILD_NLMCONV@//
/BUILD_SRCONV/s/@BUILD_SRCONV@//
/BUILD_DLLTOOL/s/@BUILD_DLLTOOL@//
/UNDERSCORE/s/@UNDERSCORE@/{UNDERSCORE}/
# Don't need this.
/@HLDFLAGS@/s/@HLDFLAGS@//
# Point at the libraries directly.
/@BFDLIB@/s/@BFDLIB@/::bfd:libbfd.o/
/@OPCODES@/s/@OPCODES@/::opcodes:libopcodes.o/
# Whack out target makefile fragment.
/target_makefile_fragment/s/target_makefile_fragment@//
# Fix and add to the include paths.
/^INCLUDES = .*$/s/$/ -i "{INCDIR}":mpw: -i ::extra-include:/
/BFDDIR/s/-i {BFDDIR} /-i "{BFDDIR}": /
/INCDIR/s/-i {INCDIR} /-i "{INCDIR}": /
# Use byacc instead of bison (for now anyway).
/BISON/s/^BISON =.*$/BISON = byacc/
#/BISONFLAGS/s/^BISONFLAGS =.*$/BISONFLAGS = /
# Embed the version in symbolic doublequotes that will expand to
# the right thing for each compiler.
/VERSION/s/'"{VERSION}"'/{dq}{VERSION}{dq}/
# '+' is a special char to MPW, don't use it ever.
/c++filt/s/c++filt/cplusfilt/
# All of the binutils use the same Rez file, change names to refer to it.
/^{[A-Z]*_PROG}/s/$/ "{s}"mac-binutils.r/
/{[A-Z]*_PROG}\.r/s/{[A-Z]*_PROG}\.r/mac-binutils.r/
# There are auto-generated references to BFD .h files that are not
# in the objdir (like bfd.h) but are in the source dir.
/::bfd:lib/s/::bfd:lib\([a-z]*\)\.h/{BFDDIR}:lib\1.h/g
# Fix the locations of generated files.
/config/s/"{s}"config\.h/"{o}"config.h/g
/config/s/^config\.h/"{o}"config\.h/
/underscore/s/"{s}"underscore\.c/"{o}"underscore.c/g
/underscore/s/^underscore\.c/"{o}"underscore\.c/
# Fix paths to generated source files.
/lex.yy.c/s/"{s}"lex\.yy\.c/"{o}"lex.yy.c/g
/lex.yy.c/s/^lex\.yy\.c/"{o}"lex.yy.c/
/arlex.c/s/"{s}"arlex\.c/"{o}"arlex.c/g
/arlex.c/s/^arlex\.c/"{o}"arlex.c/
/y.tab.c/s/"{s}"y\.tab\.c/"{o}"y.tab.c/g
/y.tab.c/s/^y\.tab\.c/"{o}"y.tab.c/
/arparse.c/s/"{s}"arparse\.c/"{o}"arparse.c/g
/arparse.c/s/^arparse\.c/"{o}"arparse.c/
/y.tab.h/s/"{s}"y\.tab\.h/"{o}"y.tab.h/g
/y.tab.h/s/^y\.tab\.h/"{o}"y.tab.h/
/arparse.h/s/"{s}"arparse\.h/"{o}"arparse.h/g
/arparse.h/s/^arparse\.h/"{o}"arparse.h/
/"{s}"{INCDIR}/s/"{s}"{INCDIR}/"{INCDIR}"/g
# The generated lexer may include an ifdef for older Mac compilers that
# needs to work with newer compilers also.
/lex.yy.c/s/Rename -y \([^ ]*\) \([^ ]*\)$/sed -e 's,ifdef macintosh,if defined(macintosh) || defined(__MWERKS__),' \1 > \2/
# Fix an over-eagerness.
/echo.*WARNING.*This file/s/'.*'/' '/
# Add a "stamps" target.
$a\
stamps \\Option-f stamp-under\
/^install \\Option-f /,/^$/c\
install \\Option-f all install-only\
\
install-only \\Option-f\
NewFolderRecursive "{bindir}"\
# Need to copy all the tools\
For prog in {PROGS}\
Set progname `echo {prog} | sed -e 's/.new//'`\
Duplicate -y :{prog} "{bindir}"{progname}\
End For\
/true/s/ ; @true$//
# dot files are trouble, remove them and their actions.
/^\.dep/,/^$/d
# Remove un-useful targets.
/^Makefile \\Option-f/,/^$/d
/^"{o}"config.h \\Option-f/,/^$/d
/^config.status \\Option-f/,/^$/d
# Don't try to make the demangler's man page, it's useless.
/^{DEMANGLER_PROG}\.1 \\Option-f/,/^$/d
# Don't depend on it either.
/{DEMANGLER_PROG}/s/ {DEMANGLER_PROG}\.1//

View File

@ -1,17 +0,0 @@
@echo off
chdir libiberty
call configure %1 %2 %3 %4 %5 %6 %7 %8 %9
chdir ..\bfd
call configure %1 %2 %3 %4 %5 %6 %7 %8 %9
chdir ..\opcodes
call configure %1 %2 %3 %4 %5 %6 %7 %8 %9
chdir ..\gprof
call configure %1 %2 %3 %4 %5 %6 %7 %8 %9
chdir ..\binutils
call configure %1 %2 %3 %4 %5 %6 %7 %8 %9
chdir ..\gas
call configure %1 %2 %3 %4 %5 %6 %7 %8 %9
chdir ..\ld
call configure %1 %2 %3 %4 %5 %6 %7 %8 %9
chdir ..

View File

@ -1,659 +0,0 @@
This is Info file cfg-paper.info, produced by Makeinfo-1.64 from the
input file ./cfg-paper.texi.
This document attempts to describe the general concepts behind
configuration of the GNU Development Tools. It also discusses common
usage.
Copyright (C) 1991, 1992, 1994 Cygnus Support Permission is granted
to make and distribute verbatim copies of this manual provided the
copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by Cygnus Support.
START-INFO-DIR-ENTRY
* configuration: (cfg-paper). Some theory on configuring source.
END-INFO-DIR-ENTRY

File: cfg-paper.info, Node: Top, Next: Some Basic Terms, Prev: (dir), Up: (dir)
This document attempts to describe the general concepts behind
configuration of the GNU Development Tools. It also discusses common
usage.
* Menu:
* Some Basic Terms:: Some Basic Terms
* Specifics.:: Specifics
* Building Development Environments:: Building Development Environments
* A Walk Through:: A Walk Through
* Final Notes:: Final Notes
* Index:: Index
-- The Detailed Node Listing --
Some Basic Terms
* Host Environments:: Host Environments
* Configuration Time Options:: Configuration Time Options
A Walk Through
* Native Development Environments:: Native Development Environments
* Emulation Environments:: Emulation Environments
* Simple Cross Environments:: Simple Cross Environments
* Crossing Into Targets:: Crossing Into Targets
* Canadian Cross:: Canadian Cross
Final Notes
* Hacking Configurations:: Hacking Configurations

File: cfg-paper.info, Node: Some Basic Terms, Next: Specifics., Prev: Top, Up: Top
Some Basic Terms
****************
There are a lot of terms that are frequently used when discussing
development tools. Most of the common terms have been used for many
different concepts such that their meanings have become ambiguous to the
point of being confusing. Typically, we only guess at their meanings
from context and we frequently guess wrong.
This document uses very few terms by comparison. The intent is to
make the concepts as clear as possible in order to convey the usage and
intent of these tools.
*Programs* run on *machines*. Programs are very nearly always
written in *source*. Programs are *built* from source. *Compilation*
is a process that is frequently, but not always, used when building
programs.
* Menu:
* Host Environments:: Host Environments
* Configuration Time Options:: Configuration Time Options

File: cfg-paper.info, Node: Host Environments, Next: Configuration Time Options, Prev: Some Basic Terms, Up: Some Basic Terms
Host Environments
=================
In this document, the word *host* refers to the environment in which
the source in question will be compiled. *host* and *host name* have
nothing to do with the proper name of your host, like *ucbvax*,
*prep.ai.mit.edu* or *att.com*. Instead they refer to things like
*sun4* and *dec3100*.
Forget for a moment that this particular directory of source is the
source for a development environment. Instead, pretend that it is the
source for a simpler, more mundane, application, say, a desk calculator.
Source that can be compiled in more than one environment, generally
needs to be set up for each environment explicitly. Here we refer to
that process as configuration. That is, we configure the source for a
host.
For example, if we wanted to configure our mythical desk calculator
to compile on a SparcStation, we might configure for host sun4. With
our configuration system:
cd desk-calculator ; ./configure sun4
does the trick. `configure' is a shell script that sets up Makefiles,
subdirectories, and symbolic links appropriate for compiling the source
on a sun4.
The *host* environment does not necessarily refer to the machine on
which the tools are built. It is possible to provide a sun3 development
environment on a sun4. If we wanted to use a cross compiler on the sun4
to build a program intended to be run on a sun3, we would configure the
source for sun3.
cd desk-calculator ; ./configure sun3
The fact that we are actually building the program on a sun4 makes no
difference if the sun3 cross compiler presents an environment that looks
like a sun3 from the point of view of the desk calculator source code.
Specifically, the environment is a sun3 environment if the header files,
predefined symbols, and libraries appear as they do on a sun3.
Nor does the host environment refer to the the machine on which the
program to be built will run. It is possible to provide a sun3
emulation environment on a sun4 such that programs built in a sun3
development environment actually run on the sun4. This technique is
often used within individual programs to remedy deficiencies in the host
operating system. For example, some operating systems do not provide
the `bcopy' function and so it is emulated using the `memcpy' funtion.
Host environment simply refers to the environment in which the
program will be built from the source.

File: cfg-paper.info, Node: Configuration Time Options, Prev: Host Environments, Up: Some Basic Terms
Configuration Time Options
==========================
Many programs have compile time options. That is, features of the
program that are either compiled into the program or not based on a
choice made by the person who builds the program. We refer to these as
*configuration options*. For example, our desk calculator might be
capable of being compiled into a program that either uses infix notation
or postfix as a configuration option. For a sun3, to choose infix you
might use:
./configure sun3 --enable-notation=infix
while for a sun4 with postfix you might use:
./configure sun4 --enable-notation=postfix
If we wanted to build both at the same time, the intermediate pieces
used in the build process must be kept separate.
mkdir ../objdir.sun4
(cd ../objdir.sun4 ; ../configure sun4 --enable-notation=postfix --srcdir=../src)
mkdir ../objdir.sun3
(cd ../objdir.sun3 ; ../configure sun3 --enable-notation=infix --srcdir=../src)
will create subdirectories for the intermediate pieces of the sun4 and
sun3 configurations. This is necessary as previous systems were only
capable of one configuration at a time. Otherwise, a second
configuration would write over the first. We've chosen to retain this
behaviour so the obj directories and the `--srcdir' configuration
option are necessary to get the new behaviour. The order of the
arguments doesn't matter. There should be exactly one argument without
a leading `-' and that argument will be assumed to be the host name.
From here on the examples will assume that you want to build the
tools *in place* and won't show the `--srcdir' option, but remember
that it is available.
In order to actually install the program, the configuration system
needs to know where you would like the program installed. The default
location is `/usr/local'. We refer to this location as `$(prefix)'.
All user visible programs will be installed in ``$(prefix)'/bin'. All
other programs and files will be installed in a subdirectory of
``$(prefix)'/lib'.
You can only change `$(prefix)' as a configuration time option.
./configure sun4 --enable-notation=postfix --prefix=/local
Will configure the source such that:
make install
will put its programs in `/local/bin' and `/local/lib/gcc'. If you
change `$(prefix)' after building the source, you will need to:
make clean
before the change will be propogated properly. This is because some
tools need to know the locations of other tools.
With these concepts in mind, we can drop the desk calculator example
and move on to the application that resides in these directories,
namely, the source to a development environment.

File: cfg-paper.info, Node: Specifics., Next: Building Development Environments, Prev: Some Basic Terms, Up: Top
Specifics
*********
The GNU Development Tools can be built on a wide variety of hosts.
So, of course, they must be configured. Like the last example,
./configure sun4 --prefix=/local
./configure sun3 --prefix=/local
will configure the source to be built in subdirectories, in order to
keep the intermediate pieces separate, and to be installed in `/local'.
When built with suitable development environments, these will be
native tools. We'll explain the term *native* later.

File: cfg-paper.info, Node: Building Development Environments, Next: A Walk Through, Prev: Specifics., Up: Top
Building Development Environments
*********************************
The GNU development tools can not only be built in a number of host
development environments, they can also be configured to create a
number of different development environments on each of those hosts.
We refer to a specific development environment created as a *target*.
That is, the word *target* refers to the development environment
produced by compiling this source and installing the resulting programs.
For the GNU development tools, the default target is the same as the
host. That is, the development environment produced is intended to be
compatible with the environment used to build the tools.
In the example above, we created two configurations, one for sun4 and
one for sun3. The first configuration is expecting to be built in a
sun4 development environment, to create a sun4 development environment.
It doesn't necessarily need to be built on a sun4 if a sun4 development
environment is available elsewhere. Likewise, if the available sun4
development environment produces executables intended for something
other than sun4, then the development environment built from this sun4
configuration will run on something other than a sun4. From the point
of view of the configuration system and the GNU development tools
source, this doesn't matter. What matters is that they will be built in
a sun4 environment.
Similarly, the second configuration given above is expecting to be
built in a sun3 development environment, to create a sun3 development
environment.
The development environment produced is a configuration time option,
just like `$(prefix)'.
./configure sun4 --prefix=/local --target=sun3
./configure sun3 --prefix=/local --target=sun4
In this example, like before, we create two configurations. The
first is intended to be built in a sun4 environment, in subdirectories,
to be installed in `/local'. The second is intended to be built in a
sun3 environment, in subdirectories, to be installed in `/local'.
Unlike the previous example, the first configuration will produce a
sun3 development environment, perhaps even suitable for building the
second configuration. Likewise, the second configuration will produce
a sun4 development environment, perhaps even suitable for building the
first configuration.
The development environment used to build these configurations will
determine the machines on which the resulting development environments
can be used.

File: cfg-paper.info, Node: A Walk Through, Next: Final Notes, Prev: Building Development Environments, Up: Top
A Walk Through
**************
* Menu:
* Native Development Environments:: Native Development Environments
* Emulation Environments:: Emulation Environments
* Simple Cross Environments:: Simple Cross Environments
* Crossing Into Targets:: Crossing Into Targets
* Canadian Cross:: Canadian Cross

File: cfg-paper.info, Node: Native Development Environments, Next: Emulation Environments, Prev: A Walk Through, Up: A Walk Through
Native Development Environments
===============================
Let us assume for a moment that you have a sun4 and that with your
sun4 you received a development environment. This development
environment is intended to be run on your sun4 to build programs that
can be run on your sun4. You could, for instance, run this development
environment on your sun4 to build our example desk calculator program.
You could then run the desk calculator program on your sun4.
The resulting desk calculator program is referred to as a *native*
program. The development environment itself is composed of native
programs that, when run, build other native programs. Any other program
is referred to as *foreign*. Programs intended for other machines are
foreign programs.
This type of development environment, which is by far the most
common, is refered to as *native*. That is, a native development
environment runs on some machine to build programs for that same
machine. The process of using a native development environment to
build native programs is called a *native* build.
./configure sun4
will configure this source such that when built in a sun4 development
environment, with a development environment that builds programs
intended to be run on sun4 machines, the programs built will be native
programs and the resulting development environment will be a native
development environment.
The development system that came with your sun4 is one such
environment. Using it to build the GNU Development Tools is a very
common activity and the resulting development environment is quite
popular.
make all
will build the tools as configured and will assume that you want to use
the native development environment that came with your machine.
Using a development environment to build a development environment is
called *bootstrapping*. The release of the GNU Development Tools is
capable of bootstrapping itself. This is a very powerful feature that
we'll return to later. For now, let's pretend that you used the native
development environment that came with your sun4 to bootstrap the
release and let's call the new development environment *stage1*.
Why bother? Well, most people find that the GNU development
environment builds programs that run faster and take up less space than
the native development environments that came with their machines. Some
people didn't get development environments with their machines and some
people just like using the GNU tools better than using other tools.
While you're at it, if the GNU tools produce better programs, maybe
you should use them to build the GNU tools. So let's pretend that you
do. Let's call the new development environment *stage2*.
So far you've built a development environment, stage1, and you've
used stage1 to build a new, faster and smaller development environment,
stage2, but you haven't run any of the programs that the GNU tools have
built. You really don't yet know if these tools work. Do you have any
programs built with the GNU tools? Yes, you do. stage2. What does
that program do? It builds programs. Ok, do you have any source handy
to build into a program? Yes, you do. The GNU tools themselves. In
fact, if you use stage2 to build the GNU tools again the resulting
programs should be identical to stage2. Let's pretend that you do and
call the new development environment *stage3*.
You've just completed what's called a *three stage boot*. You now
have a small, fast, somewhat tested, development environment.
make bootstrap
will do a three stage boot across all tools and will compare stage2 to
stage3 and complain if they are not identical.
Once built,
make install
will install the development environment in the default location, or in
`$(prefix)' if you specified an alternate when you configured.
Any development environment that is not a native development
environment is refered to as a *cross* development environment. There
are many different types of cross development environments but most
fall into one of three basic categories.

File: cfg-paper.info, Node: Emulation Environments, Next: Simple Cross Environments, Prev: Native Development Environments, Up: A Walk Through
Emulation Environments
======================
The first category of cross development environment is called
*emulation*. There are two primary types of emulation, but both types
result in programs that run on the native host.
The first type is *software emulation*. This form of cross
development environment involves a native program that when run on the
native host, is capable of interpreting, and in most aspects running, a
program intended for some other machine. This technique is typically
used when the other machine is either too expensive, too slow, too fast,
or not available, perhaps because it hasn't yet been built. The native,
interpreting program is called a *software emulator*.
The GNU Development Tools do not currently include any software
emulators. Some do exist and the GNU Development Tools can be
configured to create simple cross development environments for with
these emulators. More on this later.
The second type of emulation is when source intended for some other
development environment is built into a program intended for the native
host. The concepts of operating system universes and hosted operating
systems are two such development environments.

File: cfg-paper.info, Node: Simple Cross Environments, Next: Crossing Into Targets, Prev: Emulation Environments, Up: A Walk Through
Simple Cross Environments
=========================
./configure sun4 --target=a29k
will configure the tools such that when compiled in a sun4 development
environment the resulting development environment can be used to create
programs intended for an a29k. Again, this does not necessarily mean
that the new development environment can be run on a sun4. That would
depend on the development environment used to build these tools.
Earlier you saw how to configure the tools to build a native
development environment, that is, a development environment that runs
on your sun4 and builds programs for your sun4. Let's pretend that you
use stage3 to build this simple cross configuration and let's call the
new development environment gcc-a29k. Remember that this is a native
build. Gcc-a29k is a collection of native programs intended to run on
your sun4. That's what stage3 builds, programs for your sun4.
Gcc-a29k represents an a29k development environment that builds
programs intended to run on an a29k. But, remember, gcc-a29k runs on
your sun4. Programs built with gcc-a29k will run on your sun4 only
with the help of an appropriate software emulator.
Building gcc-a29k is also a bootstrap but of a slightly different
sort. We call gcc-a29k a *simple cross* environment and using gcc-a29k
to build a program intended for a29k is called *crossing to* a29k.
Simple cross environments are the second category of cross development
environments.

File: cfg-paper.info, Node: Crossing Into Targets, Next: Canadian Cross, Prev: Simple Cross Environments, Up: A Walk Through
Crossing Into Targets
=====================
./configure a29k --target=a29k
will configure the tools such that when compiled in an a29k development
environment, the resulting development environment can be used to create
programs intended for an a29k. Again, this does not necessarily mean
that the new development environment can be run on an a29k. That would
depend on the development environment used to build these tools.
If you've been following along this walk through, then you've already
built an a29k environment, namely gcc-a29k. Let's pretend you use
gcc-a29k to build the current configuration.
Gcc-a29k builds programs intended for the a29k so the new development
environment will be intended for use on an a29k. That is, this new gcc
consists of programs that are foreign to your sun4. They cannot be run
on your sun4.
The process of building this configuration is a another bootstrap.
This bootstrap is also a cross to a29k. Because this type of build is
both a bootstrap and a cross to a29k, it is sometimes referred to as a
*cross into* a29k. This new development environment isn't really a
cross development environment at all. It is intended to run on an a29k
to produce programs for an a29k. You'll remember that this makes it, by
definition, an a29k native compiler. *Crossing into* has been
introduced here not because it is a type of cross development
environment, but because it is frequently mistaken as one. The process
is *a cross* but the resulting development environment is a native
development environment.
You could not have built this configuration with stage3, because
stage3 doesn't provide an a29k environment. Instead it provides a sun4
environment.
If you happen to have an a29k lying around, you could now use this
fresh development environment on the a29k to three-stage these tools
all over again. This process would look just like it did when we built
the native sun4 development environment because we would be building
another native development environment, this one on a29k.

File: cfg-paper.info, Node: Canadian Cross, Prev: Crossing Into Targets, Up: A Walk Through
Canadian Cross
==============
So far you've seen that our development environment source must be
configured for a specific host and for a specific target. You've also
seen that the resulting development environment depends on the
development environment used in the build process.
When all four match identically, that is, the configured host, the
configured target, the environment presented by the development
environment used in the build, and the machine on which the resulting
development environment is intended to run, then the new development
environment will be a native development environment.
When all four match except the configured host, then we can assume
that the development environment used in the build is some form of
library emulation.
When all four match except for the configured target, then the
resulting development environment will be a simple cross development
environment.
When all four match except for the host on which the development
environment used in the build runs, the build process is a *cross into*
and the resulting development environment will be native to some other
machine.
Most of the other permutations do exist in some form, but only one
more is interesting to the current discussion.
./configure a29k --target=sun3
will configure the tools such that when compiled in an a29k development
environment, the resulting development environment can be used to create
programs intended for a sun3. Again, this does not necessarily mean
that the new development environment can be run on an a29k. That would
depend on the development environment used to build these tools.
If you are still following along, then you have two a29k development
environments, the native development environment that runs on a29k, and
the simple cross that runs on your sun4. If you use the a29k native
development environment on the a29k, you will be doing the same thing we
did a while back, namely building a simple cross from a29k to sun3.
Let's pretend that instead, you use gcc-a29k, the simple cross
development environment that runs on sun4 but produces programs for
a29k.
The resulting development environment will run on a29k because that's
what gcc-a29k builds, a29k programs. This development environment will
produce programs for a sun3 because that is how it was configured. This
means that the resulting development environment is a simple cross.
There really isn't a common name for this process because very few
development environments are capable of being configured this
extensively. For the sake of discussion, let's call this process a
*Canadian cross*. It's a three party cross, Canada has a three party
system, hence Canadian Cross.

File: cfg-paper.info, Node: Final Notes, Next: Index, Prev: A Walk Through, Up: Top
Final Notes
***********
By *configures*, I mean that links, Makefile, .gdbinit, and
config.status are built. Configuration is always done from the source
directory.
`./configure NAME'
configures this directory, perhaps recursively, for a single
host+target pair where the host and target are both NAME. If a
previous configuration existed, it will be overwritten.
`./configure HOSTNAME --target=TARGETNAME'
configures this directory, perhaps recursively, for a single
host+target pair where the host is HOSTNAME and target is
TARGETNAME. If a previous configuration existed, it will be
overwritten.
* Menu:
* Hacking Configurations:: Hacking Configurations

File: cfg-paper.info, Node: Hacking Configurations, Prev: Final Notes, Up: Final Notes
Hacking Configurations
======================
The configure scripts essentially do three things, create
subdirectories if appropriate, build a `Makefile', and create links to
files, all based on and tailored to, a specific host+target pair. The
scripts also create a `.gdbinit' if appropriate but this is not
tailored.
The Makefile is created by prepending some variable definitions to a
Makefile template called `Makefile.in' and then inserting host and
target specific Makefile fragments. The variables are set based on the
chosen host+target pair and build style, that is, if you use `--srcdir'
or not. The host and target specific Makefile may or may not exist.
* Makefiles can be edited directly, but those changes will
eventually be lost. Changes intended to be permanent for a
specific host should be made to the host specific Makefile
fragment. This should be in `./config/mh-HOST' if it exists.
Changes intended to be permanent for a specific target should be
made to the target specific Makefile fragment. This should be in
`./config/mt-TARGET' if it exists. Changes intended to be
permanent for the directory should be made in `Makefile.in'. To
propogate changes to any of these, either use `make Makefile' or
`./config.status' or re-configure.

File: cfg-paper.info, Node: Index, Prev: Final Notes, Up: Top
Index
*****
* Menu:
* Bootstrapping: Native Development Environments.
* Building: Some Basic Terms.
* Canadian Cross: Canadian Cross.
* Compilation: Some Basic Terms.
* Cross: Native Development Environments.
* Crossing into: Crossing Into Targets.
* Crossing to: Simple Cross Environments.
* Emulation: Emulation Environments.
* Foreign: Native Development Environments.
* host: Host Environments.
* Machines: Some Basic Terms.
* Native: Native Development Environments.
* Programs: Some Basic Terms.
* Simple cross: Simple Cross Environments.
* Software emulation: Emulation Environments.
* Software emulator: Emulation Environments.
* Source: Some Basic Terms.
* Stage1: Native Development Environments.
* Stage2: Native Development Environments.
* Stage3: Native Development Environments.
* Target: Building Development Environments.
* Three party cross: Canadian Cross.
* Three stage boot: Native Development Environments.

Tag Table:
Node: Top1055
Node: Some Basic Terms2009
Node: Host Environments2951
Node: Configuration Time Options5513
Node: Specifics.8316
Node: Building Development Environments8934
Node: A Walk Through11554
Node: Native Development Environments11972
Node: Emulation Environments16221
Node: Simple Cross Environments17579
Node: Crossing Into Targets19188
Node: Canadian Cross21381
Node: Final Notes24208
Node: Hacking Configurations25003
Node: Index26418

End Tag Table

View File

@ -1,64 +0,0 @@
This is Info file configure.info, produced by Makeinfo-1.64 from the
input file ./configure.texi.
START-INFO-DIR-ENTRY
* configure: (configure). Cygnus configure.
END-INFO-DIR-ENTRY
This document describes the Cygnus Support version of `configure'.
Copyright (C) 1991, 1992, 1993 Cygnus Support Permission is granted
to make and distribute verbatim copies of this manual provided the
copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by Cygnus Support.

Indirect:
configure.info-1: 968
configure.info-2: 50426

Tag Table:
(Indirect)
Node: Top968
Node: What configure does1449
Node: Invoking configure4769
Node: Using configure11824
Node: What configure really does13089
Node: Build variables18366
Node: Build directories20568
Node: Makefile generation23970
Node: config.guess25501
Node: config.status26391
Node: configure.in26948
Node: configure variables28618
Node: Minimal36784
Node: Declarations37594
Node: per-host38068
Node: per-target38805
Node: post-target39628
Node: Example40211
Node: Install locations40918
Node: prefix41719
Node: exec_prefix42612
Node: Install details44417
Node: Host49354
Node: Target49990
Node: Makefile fragments50426
Node: Makefile extensions52042
Node: Porting55769
Node: Programs56221
Node: Hosts and targets61075
Node: Sites62738
Node: Variables Index63438
Node: Concept Index66610

End Tag Table

File diff suppressed because it is too large Load Diff

View File

@ -1,566 +0,0 @@
This is Info file configure.info, produced by Makeinfo-1.64 from the
input file ./configure.texi.
START-INFO-DIR-ENTRY
* configure: (configure). Cygnus configure.
END-INFO-DIR-ENTRY
This document describes the Cygnus Support version of `configure'.
Copyright (C) 1991, 1992, 1993 Cygnus Support Permission is granted
to make and distribute verbatim copies of this manual provided the
copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by Cygnus Support.

File: configure.info, Node: Makefile fragments, Next: Makefile extensions, Prev: Target, Up: Using configure
Adding information about local conventions
==========================================
If you find that a tool does not get configured to your liking, or if
`configure''s conventions differ from your local conventions, you should
probably consider "site-specific `Makefile' fragments". See also *Note
Adding site info: Sites.
These are probably not the right choice for options that can be set
from the `configure' command line or for differences that are host or
target dependent.
Cygnus `configure' uses three types of `Makefile' fragments. In a
generated `Makefile' they appear in the order: "target fragment", "host
fragment", and "site fragment". This allows host fragments to override
target fragments, and site fragments to override both.
Host-specific `Makefile' fragments conventionally reside in the
`./config/' subdirectory with names of the form `mh-HOSTTYPE'. They
are used for hosts that require odd options to the standard compiler and
for compile time options based on the host configuration.
Target-specific `Makefile' fragments conventionally reside in the
`./config/' subdirectory with names of the form `mt-TARGET'. They are
used for target dependent compile time options.
Site specific `Makefile' fragments conventionally reside in the
`./config/' subdirectory with names of the form `ms-SITE'. They are
used to override host- and target-independent compile time options.
Note that you can also override these options on the `make' invocation
line.

File: configure.info, Node: Makefile extensions, Prev: Makefile fragments, Up: Using configure
Extensions to the GNU coding standards
======================================
The following additions to the GNU coding standards are required for
Cygnus `configure' to work properly.
* The `Makefile' must contain exactly one line starting with `####'.
This line should follow any default macro definitions but precede
any rules. Host, target, and site-specific `Makefile' fragments
will be inserted immediately after this line. If the line is
missing, the fragments will not be inserted.
* Cygnus adds the following targets to each `Makefile'. Their
existence is not required for Cygnus `configure', but they are
documented here for completeness.
`info'
Build all info files from texinfo source.
`install-info'
Install all info files.
`clean-info'
Remove all info files and any intermediate files that can be
generated from texinfo source.
`Makefile'
Calls `./config.status' to rebuild the `Makefile' in this
directory.
* The following `Makefile' targets have revised semantics:
`install'
Should *not* depend on the target `all'. If the program is
not already built, `make install' should fail. This allows
you to install programs even when `make' would otherwise
determine them to be out of date. This can happen, for
example, when the result of a `make all' is transported via
tape to another machine for installation.
`clean'
Should remove any file that can be regenerated by the
`Makefile', excepting only the `Makefile' itself, and any
links created by `configure'. That is, `make all clean'
should return all directories to their original condition.
If this is not done, then the command sequence
configure HOST1 ; make all install clean ;
configure HOST2 ; make all install
will fail because of intermediate files intended for HOST1.
* Cygnus adds the following macros to all `Makefile.in' files, but
you are not required to use them to run Cygnus `configure'.
`docdir'
The directory in which to install any documentation that is
not either a `man' page or an `info' file. For `man' pages,
see `mandir'; for `info', see `infodir'.
`includedir'
The directory in which to install any header files that
should be made available to users. This is distinct from the
`gcc' include directory, which is intended for `gcc' only.
Files in `includedir' may be used by `cc' as well.
* The following macros have revised semantics. Most of them describe
installation directories; see also *Note Full description of all
installation subdirectories: Install details.
`datadir'
is used for host independent data files.
`mandir'
The default path for `mandir' depends on `prefix'.
`infodir'
The default path for `infodir' depends on `prefix'.
`BISON'
is assumed to have a `yacc' calling convention. To use GNU
`bison', use `BISON=bison -y'.
* Each Cygnus `Makefile' also conforms to one additional restriction:
When libraries are installed, the line containing the call to
`INSTALL_DATA' should always be followed by a line containing a
call to `RANLIB' on the installed library. This is to accommodate
systems that use `ranlib'. Systems that do not use `ranlib' can
set `RANLIB' to "`echo'" in a host specific `Makefile' fragment.

File: configure.info, Node: Porting, Next: Variables Index, Prev: Using configure, Up: Top
Porting with `configure'
************************
This section explains how to add programs, host and target
configuration names, and site-specific information to Cygnus
`configure'.
* Menu:
* Programs:: Adding configure to new programs
* Hosts and targets:: Adding hosts and targets
* Sites:: Adding site info

File: configure.info, Node: Programs, Next: Hosts and targets, Up: Porting
Adding `configure' to new programs
==================================
If you are writing a new program, you probably shouldn't worry about
porting or configuration issues until it is running reasonably on some
host. Then refer back to this section.
If your program currently has a `configure' script that meets the GNU
standards (*note How Configuration Should Work:
(standards)Configuration., please do not add Cygnus `configure'. It
should be possible to add this program without change to a Cygnus
`configure' style source tree.
If the program is not target dependent, please consider using
`autoconf' instead of Cygnus `configure'. `autoconf' is available from
the Free Software Foundation; it is a program which generates an
executable shell script called `configure' by automatically finding
information on the system to be configured on and embedding this
information in the shell script. `configure' scripts generated by
`autoconf' require no arguments, and accept the same options as Cygnus
`configure'. For detailed instructions on using `autoconf', see *Note
How to organize and produce Autoconf scripts: (autoconf)Making
configure Scripts.
To add Cygnus `configure' to an existing program, do the following:
*Make sure the `Makefile' conforms to the GNU standard
The coding standard for writing a GNU `Makefile' is described in
*Note Makefile Conventions: (standards)Makefiles. For technical
information on writing a `Makefile', see *Note Writing Makefiles:
(make)Makefiles.
*Add Cygnus extensions to the `Makefile'
These are described in *Note Extensions to the GNU coding
standards: Makefile extensions.
*Collect package specific definitions in a single file
Many packages are best configured using a common `Makefile'
fragment which is included by all of the makefiles in the
different directories of the package. In order to accomplish
this, set the variable `package_makefile_fragment' to the name of
the file. It will be inserted into the final `Makefile' before
the target-specific fragment.
*Move host support from `Makefile' to fragments
This usually involves finding sections of the `Makefile' that say
things like "uncomment these lines for host HOSTTYPE" and moving
them to a new file called `./config/mh-HOSTTYPE'. For more
information, see *Note Adding hosts and targets: Hosts and targets.
*Choose defaults
If the program has compile-time options that determine the way the
program should behave, choose reasonable defaults and make these
`Makefile' variables. Be sure the variables are assigned their
default values before the `####' line so that site-specific
`Makefile' fragments can override them (*note Extensions to the
GNU coding standards: Makefile extensions.).
*Locate configuration files
If there is configuration information in header files or source
files, separate it in such a way that the files have generic
names. Then move the specific instances of those files into the
`./config/' subdirectory.
*Separate host and target information
Some programs already have this information separated. If yours
does not, you will need to separate these two kinds of
configuration information. "Host specific" information is the
information needed to compile the program. "Target specific"
information is information on the format of data files that the
program will read or write. This information should live in
separate files in the `./config/' subdirectory with names that
reflect the configuration for which they are intended.
At this point you might skip this step and simply move on. If you
do, you should end up with a program that can be configured only
to build "native" tools, that is, tools for which the host system
is also the target system. Later, you could attempt to build a
cross tool and separate out the target-specific information by
figuring out what went wrong. This is often simpler than combing
through all of the source code.
*Write `configure.in'
Usually this involves writing shell script fragments to map from
canonical configuration names into the names of the configuration
files. These files will then be linked at configure time from the
specific instances of those files in `./config' to files in the
build directory with more generic names. (See also *Note Build
directories: Build directories.) The format of `configure.in' is
described in *Note The `configure.in' input file: configure.in.
*Rename `Makefile' to `Makefile.in'
At this point you should have a program that can be configured using
Cygnus `configure'.

File: configure.info, Node: Hosts and targets, Next: Sites, Prev: Programs, Up: Porting
Adding hosts and targets
========================
To add a host or target to a program that already uses Cygnus
`configure', do the following.
* Make sure the new configuration name is represented in
`config.sub'. If not, add it. For more details, see the comments
in the shell script `config.sub'.
* If you are adding a host configuration, look in `configure.in', in
the "per-host" section. Make sure that your configuration name is
represented in the mapping from host configuration names to
configuration files. If not, add it. Also see *Note The
`configure.in' input file: configure.in.
* If you are adding a target configuration, look in `configure.in',
in the "per-target" section. Make sure that your configuration
name is represented in the mapping from target configuration names
to configuration files. If not, add it. Also see *Note The
`configure.in' input file: configure.in.
* Look in `configure.in' for the variables `files', `links',
`host_makefile_frag', and `target_makefile_frag'. The values
assigned to these variables are the names of the configuration
files, (relative to `srcdir') that the program uses. Make sure
that copies of the files exist for your host. If not, create
them. See also *Note Variables available to `configure.in':
configure variables.
This should be enough to `configure' for a new host or target
configuration name. Getting the program to compile and run properly
represents the hardest work of any port.

File: configure.info, Node: Sites, Prev: Hosts and targets, Up: Porting
Adding site info
================
If some of the `Makefile' defaults are not right for your site, you
can build site-specific `Makefile' fragments. To do this, do the
following.
* Choose a name for your site. It must currently be less than
eleven characters.
* If the program source does not have a `./config/' subdirectory,
create it.
* Create a file called `./config/ms-SITE' where SITE is the name of
your site. In it, set whatever `Makefile' variables you need to
override to match your site's conventions.
* Configure the program with:
configure ... --site=SITE

File: configure.info, Node: Variables Index, Next: Concept Index, Prev: Porting, Up: Top
Variable Index
**************
* Menu:
* bindir: Install details.
* configdirs: configure variables.
* disable-FEATURE: Invoking configure.
* docdir: Install details.
* enable-FEATURE: Invoking configure.
* exec-prefix: Invoking configure.
* exec_prefix <1>: exec_prefix.
* exec_prefix: Install details.
* files: configure variables.
* floating_point: configure variables.
* gas: configure variables.
* host: configure variables.
* host_cpu: configure variables.
* host_makefile_frag: configure variables.
* host_os: configure variables.
* host_vendor: configure variables.
* includedir: Install details.
* infodir: Install details.
* libdir: Install details.
* links: configure variables.
* Makefile: configure variables.
* manNdir: Install details.
* manNext: Install details.
* mandir: Install details.
* nfp: Invoking configure.
* norecursion: Invoking configure.
* package_makefile_frag: configure variables.
* prefix <1>: prefix.
* prefix <2>: Install details.
* prefix: Invoking configure.
* program-prefix: Invoking configure.
* removing: configure variables.
* rm: Invoking configure.
* site: Invoking configure.
* site_makefile_frag: configure variables.
* srcdir <1>: configure variables.
* srcdir <2>: What configure does.
* srcdir: Invoking configure.
* srcname: configure variables.
* srctrigger: configure variables.
* subdirs: configure variables.
* target <1>: Invoking configure.
* target: configure variables.
* target_cpu: configure variables.
* target_makefile_frag: configure variables.
* target_os: configure variables.
* target_vendor: configure variables.
* tmpdir: Invoking configure.
* verbose: Invoking configure.
* with-PACKAGE: Invoking configure.
* without-PACKAGE: Invoking configure.

File: configure.info, Node: Concept Index, Prev: Variables Index, Up: Top
Concept Index
*************
* Menu:
* -disable-FEATURE: Invoking configure.
* -enable-FEATURE: Invoking configure.
* -exec-prefix: Invoking configure.
* -help: Invoking configure.
* -nfp: Invoking configure.
* -norecursion: Invoking configure.
* -prefix: Invoking configure.
* -program-prefix: Invoking configure.
* -rm: Invoking configure.
* -site: Invoking configure.
* -srcdir: Invoking configure.
* -target: Invoking configure.
* -tmpdir: Invoking configure.
* -verbose: Invoking configure.
* -version: Invoking configure.
* -with-PACKAGE: Invoking configure.
* -without-PACKAGE: Invoking configure.
* -s: Invoking configure.
* -v: Invoking configure.
* .gdbinit: What configure does.
* autoconf: Programs.
* bindir: Install details.
* config.guess: config.guess.
* config.guess definition: What configure really does.
* config.status <1>: config.status.
* config.status: What configure does.
* config.status definition: What configure really does.
* config.sub definition: What configure really does.
* config/ subdirectory: What configure really does.
* configdirs: configure variables.
* configure.in: configure.in.
* configure.in definition: What configure really does.
* configure back end: What configure really does.
* configure details: What configure really does.
* disable-FEATURE option: Invoking configure.
* docdir: Install details.
* enable-FEATURE option: Invoking configure.
* exec-prefix option: Invoking configure.
* exec_prefix: Install details.
* floating_point: configure variables.
* help option: Invoking configure.
* host: configure variables.
* includedir: Install details.
* infodir: Install details.
* libdir: Install details.
* Makefile.in definition: What configure really does.
* Makefile extensions: Makefile extensions.
* Makefile fragments: Makefile fragments.
* Makefile generation <1>: Makefile generation.
* Makefile generation: What configure does.
* manNdir: Install details.
* manNext: Install details.
* mandir: Install details.
* nfp option <1>: Invoking configure.
* nfp option: configure variables.
* norecursion option: Invoking configure.
* prefix: Install details.
* prefix option <1>: Invoking configure.
* prefix option: prefix.
* program-prefix option: Invoking configure.
* rm option <1>: Invoking configure.
* rm option: configure variables.
* site option: Invoking configure.
* srcdir <1>: configure variables.
* srcdir: What configure does.
* srcdir option: Invoking configure.
* srcname: configure variables.
* srctrigger: configure variables.
* subdirs: configure variables.
* s option: Invoking configure.
* target: configure variables.
* target option: Invoking configure.
* tmpdir option: Invoking configure.
* verbose option: Invoking configure.
* v option: Invoking configure.
* with-PACKAGE option: Invoking configure.
* with-gnu-as option: configure variables.
* without-PACKAGE option: Invoking configure.
* configure.in interface: configure variables.
* host shell-script fragment: per-host.
* per-host section <1>: per-host.
* per-host section: configure.in.
* per-invocation section <1>: configure.in.
* per-invocation section: Declarations.
* per-target section <1>: configure.in.
* per-target section: per-target.
* post-target section <1>: configure.in.
* post-target section: post-target.
* Abbreviating option names: Invoking configure.
* Adding configure to new programs: Programs.
* Adding hosts and targets: Hosts and targets.
* Adding local info: Makefile fragments.
* Adding site info <1>: Sites.
* Adding site info: Makefile fragments.
* Behind the scenes: What configure really does.
* BISON: Makefile extensions.
* Build directories <1>: What configure does.
* Build directories: Build directories.
* Build variables: Build variables.
* Building for multiple hosts: Build directories.
* Building for multiple targets: Build directories.
* Canonical "triple": configure variables.
* Changing the install directory: prefix.
* clean: Makefile extensions.
* clean-info: Makefile extensions.
* Coding standards extensions: Makefile extensions.
* configure variables: configure variables.
* Configuring for multiple hosts: exec_prefix.
* Cygnus extensions: Makefile extensions.
* Cygnus Support Developer's Kit <1>: What configure does.
* Cygnus Support Developer's Kit: Build variables.
* datadir: Makefile extensions.
* Declarations section: Declarations.
* Default configuration: Makefile generation.
* Detailed usage: Using configure.
* docdir: Makefile extensions.
* Example configure.in: Example.
* Example session <1>: Build directories.
* Example session <2>: exec_prefix.
* Example session <3>: Build variables.
* Example session <4>: Makefile extensions.
* Example session <5>: What configure really does.
* Example session <6>: Sites.
* Example session: Invoking configure.
* For each invocation: Declarations.
* Host: Host.
* Host-specific instructions: per-host.
* Hosts and targets: Hosts and targets.
* includedir: Makefile extensions.
* info: Makefile extensions.
* infodir: Makefile extensions.
* install: Makefile extensions.
* Install details: Install details.
* Install locations: Install locations.
* install-info: Makefile extensions.
* Installation subdirectories: Install details.
* Installing host-independent files: exec_prefix.
* Introduction: What configure does.
* Invoking configure: Invoking configure.
* Local conventions: Makefile fragments.
* Makefile: Makefile extensions.
* mandir: Makefile extensions.
* Minimal configure.in example: Minimal.
* Object directories: Build directories.
* Other files: What configure really does.
* Overview: What configure does.
* Porting with configure: Porting.
* Post-target shell-script fragment: post-target.
* Recursion: What configure does.
* Sample configure.in: Example.
* Sharing host-independent files: exec_prefix.
* Sites: Sites.
* Subdirectories: Install details.
* Symbolic links <1>: What configure does.
* Symbolic links: configure variables.
* Target: Target.
* target shell-script fragment: per-target.
* Target-specific instructions: per-target.
* The exec_prefix directory: exec_prefix.
* Truncating option names: Invoking configure.
* Usage: Invoking configure.
* Usage: detailed: Using configure.
* Using configure: Using configure.
* Variables: Build variables.
* Verbose Output: Invoking configure.
* version: Invoking configure.
* What configure does: What configure does.
* What configure really does: What configure really does.
* Where to install: Install locations.

View File

@ -1,82 +0,0 @@
This is Info file standards.info, produced by Makeinfo-1.64 from the
input file ./standards.texi.
START-INFO-DIR-ENTRY
* Standards: (standards). GNU coding standards.
END-INFO-DIR-ENTRY
GNU Coding Standards Copyright (C) 1992, 1993, 1994, 1995, 1996 Free
Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by the Free Software Foundation.

Indirect:
standards.info-1: 968
standards.info-2: 48339
standards.info-3: 97867

Tag Table:
(Indirect)
Node: Top968
Node: Preface1512
Node: Intellectual Property2554
Node: Reading Non-Free Code2929
Node: Contributions4661
Node: Design Advice6259
Node: Compatibility6776
Node: Using Extensions8420
Node: ANSI C9922
Node: Source Language11158
Node: Program Behavior12292
Node: Semantics13001
Node: Libraries16755
Node: Errors17990
Node: User Interfaces19213
Node: Option Table25935
Node: Memory Usage40039
Node: Writing C41033
Node: Formatting41872
Node: Comments45144
Node: Syntactic Conventions48339
Node: Names51277
Node: System Portability53013
Node: CPU Portability54789
Node: System Functions56950
Node: Internationalization62054
Node: Mmap65199
Node: Documentation65904
Node: GNU Manuals66462
Node: Manual Structure Details70349
Node: NEWS File71679
Node: Change Logs72360
Node: Change Log Concepts73077
Node: Style of Change Logs74845
Node: Simple Changes76399
Node: Conditional Changes77590
Node: Man Pages78967
Node: Reading other Manuals80586
Node: Managing Releases81370
Node: Configuration82106
Node: Makefile Conventions89046
Node: Makefile Basics89726
Node: Utilities in Makefiles92895
Node: Command Variables95031
Node: Directory Variables97867
Node: Standard Targets108436
Node: Install Command Categories118937
Node: Releases123510

End Tag Table

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,679 +0,0 @@
This is Info file standards.info, produced by Makeinfo-1.64 from the
input file ./standards.texi.
START-INFO-DIR-ENTRY
* Standards: (standards). GNU coding standards.
END-INFO-DIR-ENTRY
GNU Coding Standards Copyright (C) 1992, 1993, 1994, 1995, 1996 Free
Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by the Free Software Foundation.

File: standards.info, Node: Directory Variables, Next: Standard Targets, Prev: Command Variables, Up: Makefile Conventions
Variables for Installation Directories
--------------------------------------
Installation directories should always be named by variables, so it
is easy to install in a nonstandard place. The standard names for these
variables are described below. They are based on a standard filesystem
layout; variants of it are used in SVR4, 4.4BSD, Linux, Ultrix v4, and
other modern operating systems.
These two variables set the root for the installation. All the other
installation directories should be subdirectories of one of these two,
and nothing should be directly installed into these two directories.
`prefix'
A prefix used in constructing the default values of the variables
listed below. The default value of `prefix' should be
`/usr/local'. When building the complete GNU system, the prefix
will be empty and `/usr' will be a symbolic link to `/'. (If you
are using Autoconf, write it as `@prefix@'.)
`exec_prefix'
A prefix used in constructing the default values of some of the
variables listed below. The default value of `exec_prefix' should
be `$(prefix)'. (If you are using Autoconf, write it as
`@exec_prefix@'.)
Generally, `$(exec_prefix)' is used for directories that contain
machine-specific files (such as executables and subroutine
libraries), while `$(prefix)' is used directly for other
directories.
Executable programs are installed in one of the following
directories.
`bindir'
The directory for installing executable programs that users can
run. This should normally be `/usr/local/bin', but write it as
`$(exec_prefix)/bin'. (If you are using Autoconf, write it as
`@bindir@'.)
`sbindir'
The directory for installing executable programs that can be run
from the shell, but are only generally useful to system
administrators. This should normally be `/usr/local/sbin', but
write it as `$(exec_prefix)/sbin'. (If you are using Autoconf,
write it as `@sbindir@'.)
`libexecdir'
The directory for installing executable programs to be run by other
programs rather than by users. This directory should normally be
`/usr/local/libexec', but write it as `$(exec_prefix)/libexec'.
(If you are using Autoconf, write it as `@libexecdir@'.)
Data files used by the program during its execution are divided into
categories in two ways.
* Some files are normally modified by programs; others are never
normally modified (though users may edit some of these).
* Some files are architecture-independent and can be shared by all
machines at a site; some are architecture-dependent and can be
shared only by machines of the same kind and operating system;
others may never be shared between two machines.
This makes for six different possibilities. However, we want to
discourage the use of architecture-dependent files, aside from object
files and libraries. It is much cleaner to make other data files
architecture-independent, and it is generally not hard.
Therefore, here are the variables Makefiles should use to specify
directories:
`datadir'
The directory for installing read-only architecture independent
data files. This should normally be `/usr/local/share', but write
it as `$(prefix)/share'. (If you are using Autoconf, write it as
`@datadir@'.) As a special exception, see `$(infodir)' and
`$(includedir)' below.
`sysconfdir'
The directory for installing read-only data files that pertain to a
single machine-that is to say, files for configuring a host.
Mailer and network configuration files, `/etc/passwd', and so
forth belong here. All the files in this directory should be
ordinary ASCII text files. This directory should normally be
`/usr/local/etc', but write it as `$(prefix)/etc'. (If you are
using Autoconf, write it as `@sysconfdir@'.)
Do not install executables in this directory (they probably belong
in `$(libexecdir)' or `$(sbindir)'). Also do not install files
that are modified in the normal course of their use (programs
whose purpose is to change the configuration of the system
excluded). Those probably belong in `$(localstatedir)'.
`sharedstatedir'
The directory for installing architecture-independent data files
which the programs modify while they run. This should normally be
`/usr/local/com', but write it as `$(prefix)/com'. (If you are
using Autoconf, write it as `@sharedstatedir@'.)
`localstatedir'
The directory for installing data files which the programs modify
while they run, and that pertain to one specific machine. Users
should never need to modify files in this directory to configure
the package's operation; put such configuration information in
separate files that go in `$(datadir)' or `$(sysconfdir)'.
`$(localstatedir)' should normally be `/usr/local/var', but write
it as `$(prefix)/var'. (If you are using Autoconf, write it as
`@localstatedir@'.)
`libdir'
The directory for object files and libraries of object code. Do
not install executables here, they probably ought to go in
`$(libexecdir)' instead. The value of `libdir' should normally be
`/usr/local/lib', but write it as `$(exec_prefix)/lib'. (If you
are using Autoconf, write it as `@libdir@'.)
`infodir'
The directory for installing the Info files for this package. By
default, it should be `/usr/local/info', but it should be written
as `$(prefix)/info'. (If you are using Autoconf, write it as
`@infodir@'.)
`lispdir'
The directory for installing any Emacs Lisp files in this package.
By default, it should be `/usr/local/share/emacs/site-lisp', but
it should be written as `$(prefix)/share/emacs/site-lisp'.
If you are using Autoconf, write the default as `@lispdir@'. In
order to make `@lispdir@' work, you need the following lines in
your `configure.in' file:
lispdir='${datadir}/emacs/site-lisp'
AC_SUBST(lispdir)
`includedir'
The directory for installing header files to be included by user
programs with the C `#include' preprocessor directive. This
should normally be `/usr/local/include', but write it as
`$(prefix)/include'. (If you are using Autoconf, write it as
`@includedir@'.)
Most compilers other than GCC do not look for header files in
`/usr/local/include'. So installing the header files this way is
only useful with GCC. Sometimes this is not a problem because some
libraries are only really intended to work with GCC. But some
libraries are intended to work with other compilers. They should
install their header files in two places, one specified by
`includedir' and one specified by `oldincludedir'.
`oldincludedir'
The directory for installing `#include' header files for use with
compilers other than GCC. This should normally be `/usr/include'.
(If you are using Autoconf, you can write it as `@oldincludedir@'.)
The Makefile commands should check whether the value of
`oldincludedir' is empty. If it is, they should not try to use
it; they should cancel the second installation of the header files.
A package should not replace an existing header in this directory
unless the header came from the same package. Thus, if your Foo
package provides a header file `foo.h', then it should install the
header file in the `oldincludedir' directory if either (1) there
is no `foo.h' there or (2) the `foo.h' that exists came from the
Foo package.
To tell whether `foo.h' came from the Foo package, put a magic
string in the file--part of a comment--and `grep' for that string.
Unix-style man pages are installed in one of the following:
`mandir'
The top-level directory for installing the man pages (if any) for
this package. It will normally be `/usr/local/man', but you should
write it as `$(prefix)/man'. (If you are using Autoconf, write it
as `@mandir@'.)
`man1dir'
The directory for installing section 1 man pages. Write it as
`$(mandir)/man1'.
`man2dir'
The directory for installing section 2 man pages. Write it as
`$(mandir)/man2'
`...'
*Don't make the primary documentation for any GNU software be a
man page. Write a manual in Texinfo instead. Man pages are just
for the sake of people running GNU software on Unix, which is a
secondary application only.*
`manext'
The file name extension for the installed man page. This should
contain a period followed by the appropriate digit; it should
normally be `.1'.
`man1ext'
The file name extension for installed section 1 man pages.
`man2ext'
The file name extension for installed section 2 man pages.
`...'
Use these names instead of `manext' if the package needs to
install man pages in more than one section of the manual.
And finally, you should set the following variable:
`srcdir'
The directory for the sources being compiled. The value of this
variable is normally inserted by the `configure' shell script.
(If you are using Autconf, use `srcdir = @srcdir@'.)
For example:
# Common prefix for installation directories.
# NOTE: This directory must exist when you start the install.
prefix = /usr/local
exec_prefix = $(prefix)
# Where to put the executable for the command `gcc'.
bindir = $(exec_prefix)/bin
# Where to put the directories used by the compiler.
libexecdir = $(exec_prefix)/libexec
# Where to put the Info files.
infodir = $(prefix)/info
If your program installs a large number of files into one of the
standard user-specified directories, it might be useful to group them
into a subdirectory particular to that program. If you do this, you
should write the `install' rule to create these subdirectories.
Do not expect the user to include the subdirectory name in the value
of any of the variables listed above. The idea of having a uniform set
of variable names for installation directories is to enable the user to
specify the exact same values for several different GNU packages. In
order for this to be useful, all the packages must be designed so that
they will work sensibly when the user does so.

File: standards.info, Node: Standard Targets, Next: Install Command Categories, Prev: Directory Variables, Up: Makefile Conventions
Standard Targets for Users
--------------------------
All GNU programs should have the following targets in their
Makefiles:
`all'
Compile the entire program. This should be the default target.
This target need not rebuild any documentation files; Info files
should normally be included in the distribution, and DVI files
should be made only when explicitly asked for.
By default, the Make rules should compile and link with `-g', so
that executable programs have debugging symbols. Users who don't
mind being helpless can strip the executables later if they wish.
`install'
Compile the program and copy the executables, libraries, and so on
to the file names where they should reside for actual use. If
there is a simple test to verify that a program is properly
installed, this target should run that test.
Do not strip executables when installing them. Devil-may-care
users can use the `install-strip' target to do that.
If possible, write the `install' target rule so that it does not
modify anything in the directory where the program was built,
provided `make all' has just been done. This is convenient for
building the program under one user name and installing it under
another.
The commands should create all the directories in which files are
to be installed, if they don't already exist. This includes the
directories specified as the values of the variables `prefix' and
`exec_prefix', as well as all subdirectories that are needed. One
way to do this is by means of an `installdirs' target as described
below.
Use `-' before any command for installing a man page, so that
`make' will ignore any errors. This is in case there are systems
that don't have the Unix man page documentation system installed.
The way to install Info files is to copy them into `$(infodir)'
with `$(INSTALL_DATA)' (*note Command Variables::.), and then run
the `install-info' program if it is present. `install-info' is a
program that edits the Info `dir' file to add or update the menu
entry for the given Info file; it is part of the Texinfo package.
Here is a sample rule to install an Info file:
$(infodir)/foo.info: foo.info
$(POST_INSTALL)
# There may be a newer info file in . than in srcdir.
-if test -f foo.info; then d=.; \
else d=$(srcdir); fi; \
$(INSTALL_DATA) $$d/foo.info $@; \
# Run install-info only if it exists.
# Use `if' instead of just prepending `-' to the
# line so we notice real errors from install-info.
# We use `$(SHELL) -c' because some shells do not
# fail gracefully when there is an unknown command.
if $(SHELL) -c 'install-info --version' \
>/dev/null 2>&1; then \
install-info --dir-file=$(infodir)/dir \
$(infodir)/foo.info; \
else true; fi
When writing the `install' target, you must classify all the
commands into three categories: normal ones, "pre-installation"
commands and "post-installation" commands. *Note Install Command
Categories::.
`uninstall'
Delete all the installed files--the copies that the `install'
target creates.
This rule should not modify the directories where compilation is
done, only the directories where files are installed.
The uninstallation commands are divided into three categories,
just like the installation commands. *Note Install Command
Categories::.
`install-strip'
Like `install', but strip the executable files while installing
them. In many cases, the definition of this target can be very
simple:
install-strip:
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
install
Normally we do not recommend stripping an executable unless you
are sure the program has no bugs. However, it can be reasonable
to install a stripped executable for actual execution while saving
the unstripped executable elsewhere in case there is a bug.
`clean'
Delete all files from the current directory that are normally
created by building the program. Don't delete the files that
record the configuration. Also preserve files that could be made
by building, but normally aren't because the distribution comes
with them.
Delete `.dvi' files here if they are not part of the distribution.
`distclean'
Delete all files from the current directory that are created by
configuring or building the program. If you have unpacked the
source and built the program without creating any other files,
`make distclean' should leave only the files that were in the
distribution.
`mostlyclean'
Like `clean', but may refrain from deleting a few files that people
normally don't want to recompile. For example, the `mostlyclean'
target for GCC does not delete `libgcc.a', because recompiling it
is rarely necessary and takes a lot of time.
`maintainer-clean'
Delete almost everything from the current directory that can be
reconstructed with this Makefile. This typically includes
everything deleted by `distclean', plus more: C source files
produced by Bison, tags tables, Info files, and so on.
The reason we say "almost everything" is that running the command
`make maintainer-clean' should not delete `configure' even if
`configure' can be remade using a rule in the Makefile. More
generally, `make maintainer-clean' should not delete anything that
needs to exist in order to run `configure' and then begin to build
the program. This is the only exception; `maintainer-clean' should
delete everything else that can be rebuilt.
The `maintainer-clean' target is intended to be used by a
maintainer of the package, not by ordinary users. You may need
special tools to reconstruct some of the files that `make
maintainer-clean' deletes. Since these files are normally
included in the distribution, we don't take care to make them easy
to reconstruct. If you find you need to unpack the full
distribution again, don't blame us.
To help make users aware of this, the commands for the special
`maintainer-clean' target should start with these two:
@echo 'This command is intended for maintainers to use; it'
@echo 'deletes files that may need special tools to rebuild.'
`TAGS'
Update a tags table for this program.
`info'
Generate any Info files needed. The best way to write the rules
is as follows:
info: foo.info
foo.info: foo.texi chap1.texi chap2.texi
$(MAKEINFO) $(srcdir)/foo.texi
You must define the variable `MAKEINFO' in the Makefile. It should
run the `makeinfo' program, which is part of the Texinfo
distribution.
Normally a GNU distribution comes with Info files, and that means
the Info files are present in the source directory. Therefore,
the Make rule for an info file should update it in the source
directory. When users build the package, ordinarily Make will not
update the Info files because they will already be up to date.
`dvi'
Generate DVI files for all Texinfo documentation. For example:
dvi: foo.dvi
foo.dvi: foo.texi chap1.texi chap2.texi
$(TEXI2DVI) $(srcdir)/foo.texi
You must define the variable `TEXI2DVI' in the Makefile. It should
run the program `texi2dvi', which is part of the Texinfo
distribution.(1) Alternatively, write just the dependencies, and
allow GNU `make' to provide the command.
`dist'
Create a distribution tar file for this program. The tar file
should be set up so that the file names in the tar file start with
a subdirectory name which is the name of the package it is a
distribution for. This name can include the version number.
For example, the distribution tar file of GCC version 1.40 unpacks
into a subdirectory named `gcc-1.40'.
The easiest way to do this is to create a subdirectory
appropriately named, use `ln' or `cp' to install the proper files
in it, and then `tar' that subdirectory.
Compress the tar file file with `gzip'. For example, the actual
distribution file for GCC version 1.40 is called `gcc-1.40.tar.gz'.
The `dist' target should explicitly depend on all non-source files
that are in the distribution, to make sure they are up to date in
the distribution. *Note Making Releases: Releases.
`check'
Perform self-tests (if any). The user must build the program
before running the tests, but need not install the program; you
should write the self-tests so that they work when the program is
built but not installed.
The following targets are suggested as conventional names, for
programs in which they are useful.
`installcheck'
Perform installation tests (if any). The user must build and
install the program before running the tests. You should not
assume that `$(bindir)' is in the search path.
`installdirs'
It's useful to add a target named `installdirs' to create the
directories where files are installed, and their parent
directories. There is a script called `mkinstalldirs' which is
convenient for this; you can find it in the Texinfo package. You
can use a rule like this:
# Make sure all installation directories (e.g. $(bindir))
# actually exist by making them if necessary.
installdirs: mkinstalldirs
$(srcdir)/mkinstalldirs $(bindir) $(datadir) \
$(libdir) $(infodir) \
$(mandir)
This rule should not modify the directories where compilation is
done. It should do nothing but create installation directories.
---------- Footnotes ----------
(1) `texi2dvi' uses TeX to do the real work of formatting. TeX is
not distributed with Texinfo.

File: standards.info, Node: Install Command Categories, Prev: Standard Targets, Up: Makefile Conventions
Install Command Categories
--------------------------
When writing the `install' target, you must classify all the
commands into three categories: normal ones, "pre-installation"
commands and "post-installation" commands.
Normal commands move files into their proper places, and set their
modes. They may not alter any files except the ones that come entirely
from the package they belong to.
Pre-installation and post-installation commands may alter other
files; in particular, they can edit global configuration files or data
bases.
Pre-installation commands are typically executed before the normal
commands, and post-installation commands are typically run after the
normal commands.
The most common use for a post-installation command is to run
`install-info'. This cannot be done with a normal command, since it
alters a file (the Info directory) which does not come entirely and
solely from the package being installed. It is a post-installation
command because it needs to be done after the normal command which
installs the package's Info files.
Most programs don't need any pre-installation commands, but we have
the feature just in case it is needed.
To classify the commands in the `install' rule into these three
categories, insert "category lines" among them. A category line
specifies the category for the commands that follow.
A category line consists of a tab and a reference to a special Make
variable, plus an optional comment at the end. There are three
variables you can use, one for each category; the variable name
specifies the category. Category lines are no-ops in ordinary execution
because these three Make variables are normally undefined (and you
*should not* define them in the makefile).
Here are the three possible category lines, each with a comment that
explains what it means:
$(PRE_INSTALL) # Pre-install commands follow.
$(POST_INSTALL) # Post-install commands follow.
$(NORMAL_INSTALL) # Normal commands follow.
If you don't use a category line at the beginning of the `install'
rule, all the commands are classified as normal until the first category
line. If you don't use any category lines, all the commands are
classified as normal.
These are the category lines for `uninstall':
$(PRE_UNINSTALL) # Pre-uninstall commands follow.
$(POST_UNINSTALL) # Post-uninstall commands follow.
$(NORMAL_UNINSTALL) # Normal commands follow.
Typically, a pre-uninstall command would be used for deleting entries
from the Info directory.
If the `install' or `uninstall' target has any dependencies which
act as subroutines of installation, then you should start *each*
dependency's commands with a category line, and start the main target's
commands with a category line also. This way, you can ensure that each
command is placed in the right category regardless of which of the
dependencies actually run.
Pre-installation and post-installation commands should not run any
programs except for these:
[ basename bash cat chgrp chmod chown cmp cp dd diff echo
egrep expand expr false fgrep find getopt grep gunzip gzip
hostname install install-info kill ldconfig ln ls md5sum
mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee
test touch true uname xargs yes
The reason for distinguishing the commands in this way is for the
sake of making binary packages. Typically a binary package contains
all the executables and other files that need to be installed, and has
its own method of installing them--so it does not need to run the normal
installation commands. But installing the binary package does need to
execute the pre-installation and post-installation commands.
Programs to build binary packages work by extracting the
pre-installation and post-installation commands. Here is one way of
extracting the pre-installation commands:
make -n install -o all \
PRE_INSTALL=pre-install \
POST_INSTALL=post-install \
NORMAL_INSTALL=normal-install \
| gawk -f pre-install.awk
where the file `pre-install.awk' could contain this:
$0 ~ /^\t[ \t]*(normal_install|post_install)[ \t]*$/ {on = 0}
on {print $0}
$0 ~ /^\t[ \t]*pre_install[ \t]*$/ {on = 1}
The resulting file of pre-installation commands is executed as a
shell script as part of installing the binary package.

File: standards.info, Node: Releases, Prev: Makefile Conventions, Up: Managing Releases
Making Releases
===============
Package the distribution of Foo version 69.96 in a gzipped tar file
named `foo-69.96.tar.gz'. It should unpack into a subdirectory named
`foo-69.96'.
Building and installing the program should never modify any of the
files contained in the distribution. This means that all the files
that form part of the program in any way must be classified into "source
files" and "non-source files". Source files are written by humans and
never changed automatically; non-source files are produced from source
files by programs under the control of the Makefile.
Naturally, all the source files must be in the distribution. It is
okay to include non-source files in the distribution, provided they are
up-to-date and machine-independent, so that building the distribution
normally will never modify them. We commonly include non-source files
produced by Bison, `lex', TeX, and `makeinfo'; this helps avoid
unnecessary dependencies between our distributions, so that users can
install whichever packages they want to install.
Non-source files that might actually be modified by building and
installing the program should *never* be included in the distribution.
So if you do distribute non-source files, always make sure they are up
to date when you make a new distribution.
Make sure that the directory into which the distribution unpacks (as
well as any subdirectories) are all world-writable (octal mode 777).
This is so that old versions of `tar' which preserve the ownership and
permissions of the files from the tar archive will be able to extract
all the files even if the user is unprivileged.
Make sure that all the files in the distribution are world-readable.
Make sure that no file name in the distribution is more than 14
characters long. Likewise, no file created by building the program
should have a name longer than 14 characters. The reason for this is
that some systems adhere to a foolish interpretation of the POSIX
standard, and refuse to open a longer name, rather than truncating as
they did in the past.
Don't include any symbolic links in the distribution itself. If the
tar file contains symbolic links, then people cannot even unpack it on
systems that don't support symbolic links. Also, don't use multiple
names for one file in different directories, because certain file
systems cannot handle this and that prevents unpacking the distribution.
Try to make sure that all the file names will be unique on MS-DOS. A
name on MS-DOS consists of up to 8 characters, optionally followed by a
period and up to three characters. MS-DOS will truncate extra
characters both before and after the period. Thus, `foobarhacker.c'
and `foobarhacker.o' are not ambiguous; they are truncated to
`foobarha.c' and `foobarha.o', which are distinct.
Include in your distribution a copy of the `texinfo.tex' you used to
test print any `*.texinfo' or `*.texi' files.
Likewise, if your program uses small GNU software packages like
regex, getopt, obstack, or termcap, include them in the distribution
file. Leaving them out would make the distribution file a little
smaller at the expense of possible inconvenience to a user who doesn't
know what other files to get.

View File

@ -1,248 +0,0 @@
This document explains a couple of things that are specific to VMS.
There are currently two "chapters", the first deals with cross-assembly
issues, and the second deals with the VMS debugger and GNU-CC.
***********************************************************************
****************** Notes for Cross Assembly with VMS ******************
***********************************************************************
If you wish to build gas on a non-VMS system to cross-assemble,
you should use:
configure ${hosttype} -target=vms
and then follow the usual procedure. The object files generated on
Unix will be correct from a binary point of view, but the real trick is
getting them to the VMS machine. The format of the object file is
a variable-length record, but each record contains binary data. gas
writes the records in the same format that VMS would expect,
namely a two-byte count followed by that number of bytes.
If you try to copy the file to a VMS system using ftp, the ftp
protocol will screw up the file by looking for nulls (record terminator for
unix) and it will insert it's own record terminators at that point. This
will obviously corrupt the file.
If you try to transfer the file with ftp in binary mode, the
file itself will not be corrupt, but VMS will think that the file contains
fixed-length records of 512 bytes. You can use the public-domain FILE
utility to change this with a command like:
$FILE foo.o/type=variable
If you do not have this utility available, the following program can be
used to perform this task:
#include <fab.h>
#define RME$C_SETRFM 1
struct FAB * fab;
main(int argc, char * argv[]){
int i, status;
fab = (struct FAB*) malloc(sizeof(struct FAB));
*fab = cc$rms_fab; /* initialize FAB*/
fab->fab$b_fac = FAB$M_PUT;
fab->fab$l_fop |= FAB$M_ESC;
fab->fab$l_ctx = RME$C_SETRFM;
fab->fab$w_ifi = 0;
for(i=1;i<argc;i++){
printf("Setting %s to variable length records.\n",argv[i]);
fab->fab$l_fna = argv[i];
fab->fab$b_fns = strlen(argv[i]);
status = sys$open(fab,0,0);
if((status & 7) != 1) lib$signal(status);
fab->fab$b_rfm = FAB$C_VAR;
status = sys$modify(fab,0,0);
if((status & 7) != 1) lib$signal(status);
status = sys$close(fab,0,0);
if((status & 7) != 1) lib$signal(status);
};
}
If you have NFS running on the VMS system, what you need to do
depends upon which NFS software you are running on the VMS system. There
are a number of different TCP/IP packages for VMS available, and only very
limited testing has been performed. In the tests that has been done so
far, the contents of the file will always be correct when transferring the
file via NFS, but the record attributes may or may not be correct.
One proprietary TCP/IP/NFS package for VMS is known to
automatically fix the record attributes of the object file if you NFS mount
a unix disk from the VMS system, and if the file has a ".obj" extension on
the unix system. Other TCP/IP packages might do this for you as well, but
they have not been checked.
No matter what method you use to get the file to the VMS system, it is
always a good idea to check to make sure that it is the correct type by
doing a "$dir/full" on the object file. The desired record attributes will
be "None". Undesirable record attributes will be "Stream-LF" or anything
else.
Once you get the files on the VMS system, you can check their integrity
with the "$anal/obj" command. (Naturally at some point you should rename
the .o files to .obj). As far as the debugger is concerned, the records
will be correct, but the debugger will not be able to find the source files,
since it only has the file name, and not the full directory specification.
You must give the debugger some help by telling it which directories to
search for the individual files - once you have done this you should be
able to proceed normally.
It is a good idea to use names for your files which will be valid
under VMS, since otherwise you will have no way of getting the debugger to
find the source file when deugging.
The reason for this is that the object file normally contins specific
information that the debugger can use to positively identify a file, and if
you are assembling on a unix system this information simply does not exist
in a meaningful way. You must help the debugger by using the "SET FILE="
command to tell the debugger where to look for source files. The debugger
records will be correct, except that the debugger will not be initially
able to find the source files. You can use the "SET FILE" command to tell
the debugger where to look for the source files.
I have only tested this with a SVr4 i486 machine, and everything seems to
work OK, with the limited testing that I have done. Other machines may
or may not work. You should read the chapters on cross-compilers in the gcc
manual before fooling with this. Since gas does not need to do any floating
point arithmetic, the floating point constants that are generated here should
be correct - the only concern is with constant folding in the main compiler.
The range and precision of floats and doubles are similar on the 486 (with
a builtin 80387) and the VAX, although there is a factor of 2 to 4
difference in the range. The double, as implemented on the 486, is quite
similar to the G_FLOAT on the VAX.
***********************************************************************
****************** Notes for using GNU CC with the VMS debugger********
***********************************************************************
1) You should be aware that GNU-C, as with any other decent compiler,
will do things when optimization is turned on that you may not expect.
Sometimes intermediate results are not written to variables, if they are only
used in one place, and sometimes variables that are not used at all will not be
written to the symbol table. Also, parameters to inline functions are often
inaccessible. You can see the assembly code equivalent by using KP7 in the
debugger, and from this you can tell if in fact a variable should have the
value that you expect. You can find out if a variable lives withing a register
by doing a 'show symbol/addr'.
2) Overly complex data types, such as:
int (*(*(*(*(*(* sarr6)[1])[1])[2])[3])[4])[5];
will not be debugged properly, since the debugging record overflows an internal
debugger buffer. gcc-as will convert these to *void as far as the debugger
symbol table is concerned, which will avoid any problems, and the assembler
will give you a message informing you that this has happened.
3) You must, of course, compile and link with /debug. If you link
without debug, you still get traceback table in the executable, but there is no
symbol table for variables.
4) Included in the patches to VMS.C are fixes to two bugs that are
unrelated to the changes that I have made. One of these made it impossible to
debug small programs sometimes, and the other caused the debugger to become
confused about which routine it was in, and give this incorrect info in
tracebacks.
5) If you are using the GNU-C++ compiler, you should modify the
compiler driver file GNU_CC:[000000]GCC.COM (or GXX.COM). If you have a
seperate GXX.COM, then you need to change one line in GXX.COM to:
$ if f$locate("D",p2) .ne. P2_Length then Debug = " ""-G0"""
Notice zero---> ^
If you are using a GCC.COM that does both C and C++, add the following lines to
GCC.COM:
$!
$! Use old style debugging records for VMS
$!
$ if (Debug.nes."" ).and. Plus then Debug = " ""-G0"""
after the variables Plus and Debug are set. The reason for this, is that C++
compiler by default generates debugging records that are more complex,
with many new syntactical elements that allow for the new features of the
language. The -G0 switch tells the C++ compiler to use the old style debugging
records. Until the debugger understands C++ there is not any point to try and
use the expanded syntax.
6) When you have nested scopes, i.e.:
main(){
int i;
{int i;
{int i;
};};}
and you say "EXAM i" the debugger needs to figure out which variable you
actually want to reference. I have arranged things to define a block to the
debugger when you use brackets to enter a new scope, so in the example above,
the variables would be described as:
TEST\main\i
TEST\main\$0\i
TEST\main\$0\$0\i
At each level, the block name is a number with a dollar sign prefix, the
numbers start with 0 and count upward. When you say EXAM i, the debugger looks
at the current PC, and decides which block it is currently in. It works from
the innermost level outward until it finds a block that has the variable "i"
defined. You can always specify the scope explicitly.
7) With C++, there can be a lot of inline functions, and it would be
rather restrictive to force the user to debug the program by converting all of
the inline functions to normal functions. What I have done is to essentially
"add" (with the debugger) source lines from the include files that contain the
inline functions. Thus when you step into an inline function it appears as if
you have called the function, and you can examine variables and so forth.
There are several *very* important differences, however. First of all, since
there is no function call involved, you cannot step over the inline function
call - you always step into it. Secondly, since the same source lines are used
in many locations, there is a seperate copy of the source for *each* usage.
Without this, breakpoints do not work, since we must have a 1-to-1 mapping
between source lines and PC.
Since you cannot step over inline function calls, it can be a real pain
if you are not really interested in what is going on for that function call.
What I have done is to use the "-D" switch for the assembler to toggle the
following behavior. With the "-D" switch, all inline functions are included in
the object file, and you can debug everything. Without the "-D" switch
(default case with VMS implementation), inline functions are included *only* if
they did not come from system header files (i.e. from GNU_CC_INCLUDE: or
GNU_GXX_INCLUDE:). Thus, without the switch the user only debugs his/her own
inline functions, and not the system ones. (This is especially useful if you do
a lot of stream I/O in C++). This probably will not provide enough granularity
for many users, but for now this is still somewhat experimental, and I would
like to reflect upon it and get some feedback before I go any further.
Possible solutions include an interactive prompting, a logical name, or a new
command line option in gcc.c (which is then passed through somehow to the guts
of the assembler).
The inline functions from header files appear after the source code
for the source file. This has the advantage that the source file itself is
numbered with the same line numbers that you get with an editor. In addition,
the entire header file is not included, since the assembler makes a list of
the min and max source lines that are used, and only includes those lines from
the first to the last actually used. (It is easy to change it to include the
whole file).
8) When you are debugging C++ objects, the object "this" is refered to
as "$this". Actually, the compiler writes it as ".this", but the period is
not good for the debugger, so I have a routine to convert it to a $. (It
actually converts all periods to $, but only for variables, since this was
intended to allow us to access "this".
9) If you use the asm("...") keyword for global symbols, you will not
be able to see that symbol with the debugger. The reason is that there are two
records for the symbol stored in the data structures of the assembler. One
contains the info such as psect number and offset, and the other one contains
the information having to do with the data type of the variable. In order to
debug as symbol, you need to be able to coorelate these records, and the only
way to do this is by name. The record with the storage attributes will take
the name used in the asm directive, and the record that specifies the data type
has the actual variable name, and thus when you use the asm directive to change
a variable name, the symbol becomes invisible.
10) Older versions of the compiler ( GNU-C 1.37.92 and earlier) place
global constants in the text psect. This is unfortunate, since to the linker
this appears to be an entry point. I sent a patch to the compiler to RMS,
which will generate a .const section for these variables, and patched the
assembler to put these variables into a psect just like that for normal
variables, except that they are marked NOWRT. static constants are still
placed in the text psect, since there is no need for any external access.

127
gnu/dist/gas/conf.in vendored
View File

@ -1,127 +0,0 @@
/* conf.in. Generated automatically from configure.in by autoheader. */
/* Define if using alloca.c. */
#undef C_ALLOCA
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
This function is required for alloca.c support on those systems. */
#undef CRAY_STACKSEG_END
/* Define if you have alloca, as a function or macro. */
#undef HAVE_ALLOCA
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
#undef HAVE_ALLOCA_H
/* Define as __inline if that's what the C compiler calls it. */
#undef inline
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown
*/
#undef STACK_DIRECTION
/* Should gas use high-level BFD interfaces? */
#undef BFD_ASSEMBLER
/* Some assert/preprocessor combinations are incapable of handling
certain kinds of constructs in the argument of assert. For example,
quoted strings (if requoting isn't done right) or newlines. */
#undef BROKEN_ASSERT
/* If we aren't doing cross-assembling, some operations can be optimized,
since byte orders and value sizes don't need to be adjusted. */
#undef CROSS_COMPILE
/* Some gas code wants to know these parameters. */
#undef TARGET_ALIAS
#undef TARGET_CPU
#undef TARGET_CANONICAL
#undef TARGET_OS
#undef TARGET_VENDOR
/* Sometimes the system header files don't declare strstr. */
#undef NEED_DECLARATION_STRSTR
/* Sometimes the system header files don't declare malloc and realloc. */
#undef NEED_DECLARATION_MALLOC
/* Sometimes the system header files don't declare free. */
#undef NEED_DECLARATION_FREE
/* Sometimes the system header files don't declare sbrk. */
#undef NEED_DECLARATION_SBRK
/* Sometimes errno.h doesn't declare errno itself. */
#undef NEED_DECLARATION_ERRNO
#undef MANY_SEGMENTS
/* Needed only for sparc configuration. */
#undef SPARC_V9
#undef SPARC_ARCH64
/* Defined if using CGEN. */
#undef USING_CGEN
/* Needed only for some configurations that can produce multiple output
formats. */
#undef DEFAULT_EMULATION
#undef EMULATIONS
#undef USE_EMULATIONS
#undef OBJ_MAYBE_AOUT
#undef OBJ_MAYBE_BOUT
#undef OBJ_MAYBE_COFF
#undef OBJ_MAYBE_ECOFF
#undef OBJ_MAYBE_ELF
#undef OBJ_MAYBE_GENERIC
#undef OBJ_MAYBE_HP300
#undef OBJ_MAYBE_IEEE
#undef OBJ_MAYBE_SOM
#undef OBJ_MAYBE_VMS
/* Used for some of the COFF configurations, when the COFF code needs
to select something based on the CPU type before it knows it... */
#undef I386COFF
#undef M68KCOFF
#undef M88KCOFF
/* Define if you have the remove function. */
#undef HAVE_REMOVE
/* Define if you have the sbrk function. */
#undef HAVE_SBRK
/* Define if you have the unlink function. */
#undef HAVE_UNLINK
/* Define if you have the <errno.h> header file. */
#undef HAVE_ERRNO_H
/* Define if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define if you have the <stdarg.h> header file. */
#undef HAVE_STDARG_H
/* Define if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define if you have the <varargs.h> header file. */
#undef HAVE_VARARGS_H

View File

@ -1,186 +0,0 @@
$!config-gas.com
$! This file sets things up to build gas on a VMS system to generate object
$! files for a VMS system. We do not use the configure script, since we
$! do not have /bin/sh to execute it.
$!
$!
$ gas_host="vms"
$ arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2
$ arch = f$element(arch_indx,"|","|VAX|Alpha|")
$ if arch.eqs."VAX"
$ then
$ cpu_type="vax"
$ obj_format="vms"
$ atof="vax"
$ else
$ cpu_type="alpha"
$ obj_format="evax"
$ atof="ieee"
$ endif
$ emulation="generic"
$!
$ DELETE = "delete/noConfirm"
$ ECHO = "write sys$output"
$!
$! Target specific information
$ call make "targ-cpu.h" "[.config]tc-''cpu_type'.h"
$ call make "targ-env.h" "[.config]te-''emulation'.h"
$!
$! Code to handle the object file format.
$ call make "obj-format.h" "[.config]obj-''obj_format'.h"
$!
$! (not currently used for vax or alpha)
$ call make "itbl-cpu.h" "[.config]itbl-''cpu_type'.h"
$!
$!
$! Create the file version.opt, which helps identify the executable.
$!
$if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
$search CONFIGURE.IN "AM_INIT_AUTOMAKE"/Exact/Output=config-gas-tmp.tmp
$open ifile$ config-gas-tmp.tmp
$read ifile$ line
$close ifile$
$DELETE config-gas-tmp.tmp;*
$! Discard "AM_INIT_AUTOMAKE(gas, " and ")" parts.
$ijk=f$locate(",",line)+2
$line=f$extract(ijk,f$length(line)-ijk,line)
$ijk=f$locate(")",line)
$line=f$extract(0,ijk,line)
$!
$ if f$search("version.opt").nes."" then DELETE version.opt;*
$copy _NL: version.opt
$open/Append ifile$ version.opt
$write ifile$ "identification="+""""+line+""""
$close ifile$
$!
$! Now write config.h.
$!
$ if f$search("config.h").nes."" then DELETE config.h;*
$copy _NL: config.h
$open/Append ifile$ config.h
$write ifile$ "/* config.h. Generated by config-gas.com. */
$write ifile$ "#ifndef VERSION"
$write ifile$ "#define VERSION """,line,""""
$write ifile$ "#endif"
$write ifile$ "/*--*/"
$if arch .eqs. "VAX"
$then
$append [.config]vms-conf.h ifile$:
$else
$ append [.config]vms-a-conf.h ifile$:
$endif
$close ifile$
$ECHO "Created config.h."
$!
$! Check for, and possibly make, header file <unistd.h>.
$!
$ if f$search("tmp-chk-h.*").nes."" then DELETE tmp-chk-h.*;*
$!can't use simple `#include HDR' with `gcc /Define="HDR=<foo.h>"'
$!because the 2.6.[0-3] preprocessor handles it wrong (VMS-specific gcc bug)
$ create tmp-chk-h.c
int tmp_chk_h; /* guarantee non-empty output */
#ifdef HAVE_STDIO_H
#include <stdio.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_UNIXIO_H
#include <unixio.h>
#endif
#ifdef HAVE_UNIXLIB_H
#include <unixlib.h>
#endif
$ on warning then continue
$ CHECK = "call tmp_chk_h"
$ CHECK "HAVE_STDIO_H"
$ if .not.$status
$ then type sys$input:
? could not compile <stdio.h>.
If you're compiling with DEC C or VAX C, create config.status as an
empty file and start gnu make again.
If you're compiling with GNU C, there is some setup problem and
gas configuration cannot proceed.
$ DELETE tmp-chk-h.c;*
$ exit %x002C
$ endif
$!
$ CHECK "HAVE_UNISTD_H"
$ if .not.$status
$ then
$ if f$trnlnm("HFILE$").nes."" then close/noLog hfile$
$ CHECK "HAVE_UNIXIO_H"
$ got_unixio = ($status .and. 1)
$ CHECK "HAVE_UNIXLIB_H"
$ got_unixlib = ($status .and. 1)
$ create []unistd.h !with rudimentary contents
/* <unistd.h> substitute for building gas */
#ifndef UNISTD_H
#define UNISTD_H
$ open/Append hfile$ []unistd.h
$ if got_unixio
$ then write hfile$ "#include <unixio.h>"
$ else append sys$input: hfile$:
/* some of the routines normally prototyped in <unixio.h> */
extern int creat(), open(), close(), read(), write();
extern int access(), dup(), dup2(), fstat(), stat();
extern long lseek();
$ endif
$ write hfile$ ""
$ if got_unixlib
$ then write hfile$ "#include <unixlib.h>"
$ else append sys$input: hfile$:
/* some of the routines normally prototyped in <unixlib.h> */
extern char *sbrk(), *getcwd(), *cuserid();
extern int brk(), chdir(), chmod(), chown(), mkdir();
extern unsigned getuid(), umask();
$ endif
$ append sys$input: hfile$:
#endif /*UNISTD_H*/
$ close hfile$
$ ECHO "Created ""[]unistd.h""."
$ endif !gcc '#include <unistd.h>' failed
$ DELETE tmp-chk-h.c;*
$
$tmp_chk_h: subroutine
$ set noOn
$ hname = f$edit("<" + (p1 - "HAVE_" - "_H") + ".h>","LOWERCASE")
$ write sys$output "Checking for ''hname'."
$ if f$search("tmp-chk-h.obj").nes."" then DELETE tmp-chk-h.obj;*
$ define/noLog sys$error _NL: !can't use /User_Mode here due to gcc
$ define/noLog sys$output _NL: ! driver's use of multiple image activation
$ gcc /Include=([],[-.include]) /Define=("''p1'") tmp-chk-h.c
$!can't just check $status; gcc 2.6.[0-3] preprocessor doesn't set it correctly
$ ok = (($status.and.1).and.(f$search("tmp-chk-h.obj").nes."")) .or. %x10000000
$ deassign sys$error !restore, more or less
$ deassign sys$output
$ if ok then DELETE tmp-chk-h.obj;*
$ exit ok
$ endsubroutine !tmp_chk_h
$
$!
$! Done
$!
$ if f$search("config.status") .nes. "" then DELETE config.status;*
$ open/write cfile []config.status
$ write cfile "Links are now set up for use with a "+arch+" running VMS."
$ close cfile
$ type []config.status
$exit
$!
$!
$make: subroutine
$ if f$search(p1).nes."" then DELETE 'p1';*
$ create 'p1'
$ if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
$ open/Append ifile$ 'p1'
$ write ifile$ "#include ""''f$string(p2 - "[.config]")'"""
$ close ifile$
$ ECHO "Created ''p1' for ''p2'."
$endsubroutine !make

View File

@ -1 +0,0 @@
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=1

View File

@ -1 +0,0 @@
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=0

View File

@ -1,93 +0,0 @@
/* config.h for go32 */
#define I386COFF 1
/* Define if using alloca.c. */
#undef C_ALLOCA
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
This function is required for alloca.c support on those systems. */
#undef CRAY_STACKSEG_END
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
#undef HAVE_ALLOCA_H
/* Define as __inline if that's what the C compiler calls it. */
#undef inline
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown
*/
#undef STACK_DIRECTION
/* Should gas use high-level BFD interfaces? */
#undef BFD_ASSEMBLER
/* If we aren't doing cross-assembling, some operations can be optimized,
since byte orders and value sizes don't need to be adjusted. */
#undef CROSS_COMPILE
/* Some gas code wants to know these parameters. */
#define TARGET_ALIAS "i386"
#define TARGET_CPU "i386"
#define TARGET_CANONICAL "i386-i386"
#define TARGET_OS "djgpp"
#define TARGET_VENDOR "djgpp"
/* Some operating systems, for example DOS, require the use of "wb" mode when
opening a binary file for writing. If only "w" is used, the file will not
be correct. However, some other systems reject such a mode. This indicates
which ../include/fopen-*.h header file we want to include, so that we can
get macros that'll do the right thing for this system. */
#define WANT_FOPEN_BIN 1
/* Sometimes the system header files don't declare malloc and realloc. */
#undef NEED_DECLARATION_MALLOC
/* Sometimes the system header files don't declare free. */
#undef NEED_DECLARATION_FREE
/* Sometimes errno.h doesn't declare errno itself. */
#undef NEED_DECLARATION_ERRNO
#define MANY_SEGMENTS 1
/* Needed only for sparc configuration */
#undef sparcv9
/* Define if you have the remove function. */
#define HAVE_REMOVE 1
/* Define if you have the unlink function. */
#define HAVE_UNLINK 1
/* Define if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1
/* Define if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define if you have the <stdarg.h> header file. */
#define HAVE_STDARG_H 1
/* Define if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define if you have the <varargs.h> header file. */
#undef HAVE_VARARGS_H

View File

@ -1 +0,0 @@
TDEFINES=-DI386COFF

View File

@ -1 +0,0 @@
TDEFINES=-DM68KCOFF

View File

@ -1 +0,0 @@
TDEFINES=-DM88KCOFF

View File

@ -1 +0,0 @@
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=1

View File

@ -1 +0,0 @@
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=0

View File

@ -1 +0,0 @@
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=1

View File

@ -1 +0,0 @@
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=0

View File

@ -1 +0,0 @@
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=0 -DTARGET_SOLARIS_COMMENT

View File

@ -1 +0,0 @@
TDEFINES=-DSCO_ELF

View File

@ -1,57 +0,0 @@
@echo off
if "%1" == "h8/300" goto h8300
echo Configuring gas for go32
update config/tc-i386.c targ-cpu.c
update config/tc-i386.h targ-cpu.h
update config/te-go32.h targ-env.h
update config/obj-coff.h obj-format.h
update config/obj-coff.c obj-format.c
update config/atof-ieee.c atof-targ.c
goto common
:h8300
echo Configuring gas for H8/300
copy config\ho-go32.h host.h
copy config\tc-h8300.c targ-cpu.c
copy config\tc-h8300.h targ-cpu.h
copy config\te-generic.h targ-env.h
copy config\objcoffbfd.h obj-format.h
copy config\objcoffbfd.c obj-format.c
copy config\atof-ieee.c atof-targ.c
:common
echo # Makefile generated by "configure.bat"> Makefile.2
echo all.dos : as.new gasp.new>> Makefile.2
if exist config.sed del config.sed
echo "s/@srcdir@/./g ">> config.sed
echo "s/@target_alias@/go32/ ">> config.sed
echo "s/@prefix@// ">> config.sed
echo "s/@CC@/gcc/g ">> config.sed
echo "s/@OPCODES_LIB@/..\/opcodes\/libopcodes.a/g ">> config.sed
echo "s/@BFDLIB@/..\/bfd\/libbfd.a/g ">> config.sed
echo "s/@ALL_OBJ_DEPS@/..\/bfd\/bfd.h/g ">> config.sed
echo "/^all[ ]*:/ a\ ">> config.sed
echo "dummy: ">> config.sed
echo "s/\/usr[^ ]*.h//g ">> config.sed
echo "/^config.h[ ]*:/ d ">> config.sed
echo "s/^Makefile/not-Makefile/ ">> config.sed
sed -e "s/^\"//" -e "s/\"$//" -e "s/[ ]*$//" config.sed > config2.sed
sed -f config2.sed Makefile.in >> Makefile.2
update Makefile.2 Makefile
del Makefile.2
del config.sed
del config2.sed
echo #ifndef GAS_VERSION> config.new
sed -n "/^VERSION=/p" Makefile.in | sed -e "s/VERSION=/#define GAS_VERSION \"/" -e "s/$/\"/">> config.new
type config\go32.cfg >> config.new
echo #endif>> config.new
update config.new config.h

View File

@ -1,311 +0,0 @@
This is Info file as.info, produced by Makeinfo version 1.68 from the
input file as.texinfo.
START-INFO-DIR-ENTRY
* As: (as). The GNU assembler.
END-INFO-DIR-ENTRY
This file documents the GNU Assembler "as".
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software
Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions.

Indirect:
as.info-1: 884
as.info-2: 48330
as.info-3: 97421
as.info-4: 147389
as.info-5: 197063
as.info-6: 239578
as.info-7: 278841

Tag Table:
(Indirect)
Node: Top884
Node: Overview1543
Node: Manual11603
Node: GNU Assembler12542
Node: Object Formats13709
Node: Command Line14156
Node: Input Files15238
Node: Object17144
Node: Errors18091
Node: Invoking19289
Node: a20989
Node: D22323
Node: f22543
Node: I23046
Node: K23585
Node: L23884
Node: M24735
Node: MD29124
Node: o29543
Node: R29991
Node: statistics31007
Node: traditional-format31407
Node: v31873
Node: W32141
Node: Z32723
Node: Syntax33238
Node: Preprocessing33828
Node: Whitespace35388
Node: Comments35778
Node: Symbol Intro37765
Node: Statements38448
Node: Constants40694
Node: Characters41320
Node: Strings41813
Node: Chars43966
Node: Numbers44707
Node: Integers45238
Node: Bignums45881
Node: Flonums46224
Node: Sections47956
Node: Secs Background48330
Node: Ld Sections53356
Node: As Sections55750
Node: Sub-Sections56655
Node: bss59654
Node: Symbols60599
Node: Labels61246
Node: Setting Symbols61972
Node: Symbol Names62338
Node: Dot65300
Node: Symbol Attributes65742
Node: Symbol Value66474
Node: Symbol Type67510
Node: a.out Symbols67889
Node: Symbol Desc68139
Node: Symbol Other68421
Node: COFF Symbols68577
Node: SOM Symbols69206
Node: Expressions69639
Node: Empty Exprs70387
Node: Integer Exprs70729
Node: Arguments71119
Node: Operators72216
Node: Prefix Ops72542
Node: Infix Ops72861
Node: Pseudo Ops74353
Node: Abort78267
Node: ABORT78668
Node: Align78930
Node: App-File81095
Node: Ascii81632
Node: Asciz81937
Node: Balign82177
Node: Byte84035
Node: Comm84268
Node: Data85627
Node: Def85937
Node: Desc86305
Node: Dim86800
Node: Double87191
Node: Eject87522
Node: Else87690
Node: Endef87979
Node: Endif88301
Node: Equ88552
Node: Equiv88855
Node: Err89251
Node: Extern89555
Node: File89807
Node: Fill90458
Node: Float91415
Node: Global91751
Node: hword92494
Node: Ident92815
Node: If93115
Node: Include93971
Node: Int94511
Node: Irp94880
Node: Irpc95674
Node: Lcomm96493
Node: Lflags97234
Node: Line97421
Node: Linkonce98444
Node: Ln99664
Node: MRI99812
Node: List100139
Node: Long100742
Node: Macro100912
Node: Nolist103296
Node: Octa103712
Node: Org104038
Node: P2align105313
Node: Psize107229
Node: Quad107902
Node: Rept108342
Node: Sbttl108748
Node: Scl109106
Node: Section109602
Node: Set111951
Node: Short112504
Node: Single112818
Node: Size113155
Node: Sleb128113550
Node: Skip113865
Node: Space114180
Node: Stab115065
Node: String117061
Node: Symver117480
Node: Tag119065
Node: Text119573
Node: Title119885
Node: Type120257
Node: Val120633
Node: Uleb128120991
Node: Word121306
Node: Deprecated123143
Node: Machine Dependencies123379
Node: ARC-Dependent125075
Node: ARC-Opts125389
Node: ARC-Float126123
Node: ARC-Directives126421
Node: AMD29K-Dependent126814
Node: AMD29K Options127195
Node: AMD29K Syntax127369
Node: AMD29K-Macros127633
Node: AMD29K-Chars127884
Node: AMD29K-Regs128147
Node: AMD29K Floating Point129411
Node: AMD29K Directives129617
Node: AMD29K Opcodes131025
Node: ARM-Dependent131361
Node: ARM Options131735
Node: ARM Syntax133475
Node: ARM-Chars133695
Node: ARM-Regs133894
Node: ARM Floating Point134066
Node: ARM Directives134256
Node: ARM Opcodes135175
Node: D10V-Dependent135511
Node: D10V-Opts135855
Node: D10V-Syntax136488
Node: D10V-Size137008
Node: D10V-Subs137968
Node: D10V-Chars138990
Node: D10V-Regs140576
Node: D10V-Addressing141607
Node: D10V-Word142280
Node: D10V-Float142781
Node: D10V-Opcodes143083
Node: H8/300-Dependent143467
Node: H8/300 Options143871
Node: H8/300 Syntax144052
Node: H8/300-Chars144339
Node: H8/300-Regs144623
Node: H8/300-Addressing145527
Node: H8/300 Floating Point146553
Node: H8/300 Directives146869
Node: H8/300 Opcodes147389
Node: H8/500-Dependent155742
Node: H8/500 Options156146
Node: H8/500 Syntax156327
Node: H8/500-Chars156614
Node: H8/500-Regs156905
Node: H8/500-Addressing157661
Node: H8/500 Floating Point158278
Node: H8/500 Directives158594
Node: H8/500 Opcodes158913
Node: HPPA-Dependent164026
Node: HPPA Notes164448
Node: HPPA Options165195
Node: HPPA Syntax165379
Node: HPPA Floating Point166638
Node: HPPA Directives166833
Node: HPPA Opcodes173424
Node: i386-Dependent173672
Node: i386-Options174341
Node: i386-Syntax174485
Node: i386-Opcodes176435
Node: i386-Regs178554
Node: i386-prefixes179695
Node: i386-Memory181364
Node: i386-jumps183638
Node: i386-Float184708
Node: i386-16bit186199
Node: i386-Notes188591
Node: i960-Dependent189432
Node: Options-i960189824
Node: Floating Point-i960193705
Node: Directives-i960193962
Node: Opcodes for i960195982
Node: callj-i960196588
Node: Compare-and-branch-i960197063
Node: M68K-Dependent198952
Node: M68K-Opts199406
Node: M68K-Syntax204354
Node: M68K-Moto-Syntax206182
Node: M68K-Float208760
Node: M68K-Directives209269
Node: M68K-opcodes209864
Node: M68K-Branch210076
Node: M68K-Chars212891
Node: MIPS-Dependent213289
Node: MIPS Opts214169
Node: MIPS Object217005
Node: MIPS Stabs218560
Node: MIPS ISA219271
Node: MIPS autoextend220379
Node: MIPS insn221090
Node: MIPS option stack221576
Node: SH-Dependent222289
Node: SH Options222672
Node: SH Syntax222837
Node: SH-Chars223096
Node: SH-Regs223375
Node: SH-Addressing223974
Node: SH Floating Point224868
Node: SH Directives225164
Node: SH Opcodes225520
Node: Sparc-Dependent229767
Node: Sparc-Opts230139
Node: Sparc-Aligned-Data232385
Node: Sparc-Float233229
Node: Sparc-Directives233419
Node: Z8000-Dependent234637
Node: Z8000 Options235596
Node: Z8000 Syntax235771
Node: Z8000-Chars236047
Node: Z8000-Regs236265
Node: Z8000-Addressing237037
Node: Z8000 Directives237980
Node: Z8000 Opcodes239578
Node: Vax-Dependent249514
Node: VAX-Opts250021
Node: VAX-float252311
Node: VAX-directives252932
Node: VAX-opcodes253781
Node: VAX-branch254159
Node: VAX-operands256655
Node: VAX-no257407
Node: V850-Dependent257633
Node: V850 Options258019
Node: V850 Syntax259049
Node: V850-Chars259275
Node: V850-Regs259425
Node: V850 Floating Point260800
Node: V850 Directives260995
Node: V850 Opcodes261669
Node: Reporting Bugs266162
Node: Bug Criteria266885
Node: Bug Reporting267645
Node: Acknowledgements274214
Node: Index278841

End Tag Table

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,941 +0,0 @@
This is Info file as.info, produced by Makeinfo version 1.68 from the
input file as.texinfo.
START-INFO-DIR-ENTRY
* As: (as). The GNU assembler.
END-INFO-DIR-ENTRY
This file documents the GNU Assembler "as".
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software
Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions.

File: as.info, Node: Index, Prev: Acknowledgements, Up: Top
Index
*****
* Menu:
* #: Comments.
* #APP: Preprocessing.
* #NO_APP: Preprocessing.
* $ in symbol names <1>: D10V-Chars.
* $ in symbol names <2>: H8/500-Chars.
* $ in symbol names: SH-Chars.
* -: Command Line.
* -+ option, VAX/VMS: VAX-Opts.
* --base-size-default-16: M68K-Opts.
* --base-size-default-32: M68K-Opts.
* --bitwise-or option, M680x0: M68K-Opts.
* --disp-size-default-16: M68K-Opts.
* --disp-size-default-32: M68K-Opts.
* --register-prefix-optional option, M680x0: M68K-Opts.
* -a: a.
* -A options, i960: Options-i960.
* -ac: a.
* -ad: a.
* -ah: a.
* -al: a.
* -an: a.
* -as: a.
* -Asparclet: Sparc-Opts.
* -Asparclite: Sparc-Opts.
* -Av6: Sparc-Opts.
* -Av8: Sparc-Opts.
* -Av9: Sparc-Opts.
* -Av9a: Sparc-Opts.
* -b option, i960: Options-i960.
* -D: D.
* -D, ignored on VAX: VAX-Opts.
* -d, VAX option: VAX-Opts.
* -EB command line option, ARM: ARM Options.
* -EB option (MIPS): MIPS Opts.
* -EL command line option, ARM: ARM Options.
* -EL option (MIPS): MIPS Opts.
* -enforce-aligned-data: Sparc-Aligned-Data.
* -f: f.
* -G option (MIPS): MIPS Opts.
* -h option, VAX/VMS: VAX-Opts.
* -I PATH: I.
* -J, ignored on VAX: VAX-Opts.
* -K: K.
* -L: L.
* -l option, M680x0: M68K-Opts.
* -M: M.
* -m68000 and related options: M68K-Opts.
* -mall command line option, ARM: ARM Options.
* -mapcs command line option, ARM: ARM Options.
* -marm command line option, ARM: ARM Options.
* -marmv command line option, ARM: ARM Options.
* -mbig-endian option (ARC): ARC-Opts.
* -MD: MD.
* -mfpa command line option, ARM: ARM Options.
* -mfpe-old command line option, ARM: ARM Options.
* -mlittle-endian option (ARC): ARC-Opts.
* -mno-fpu command line option, ARM: ARM Options.
* -mthumb command line option, ARM: ARM Options.
* -mthumb-interwork command line option, ARM: ARM Options.
* -mv850 command line option, V850: V850 Options.
* -no-relax option, i960: Options-i960.
* -nocpp ignored (MIPS): MIPS Opts.
* -o: o.
* -R: R.
* -S, ignored on VAX: VAX-Opts.
* -statistics: statistics.
* -t, ignored on VAX: VAX-Opts.
* -T, ignored on VAX: VAX-Opts.
* -traditional-format: traditional-format.
* -v: v.
* -V, redundant on VAX: VAX-Opts.
* -version: v.
* -W: W.
* -wsigned_overflow command line option, V850: V850 Options.
* -wunsigned_overflow command line option, V850: V850 Options.
* . (symbol): Dot.
* .insn: MIPS insn.
* .o: Object.
* .param on HPPA: HPPA Directives.
* .set autoextend: MIPS autoextend.
* .set mipsN: MIPS ISA.
* .set noautoextend: MIPS autoextend.
* .set pop: MIPS option stack.
* .set push: MIPS option stack.
* .v850 directive, V850: V850 Directives.
* 16-bit code, i386: i386-16bit.
* 29K support: AMD29K-Dependent.
* : (label): Statements.
* @word modifier, D10V: D10V-Word.
* \" (doublequote character): Strings.
* \\ (\ character): Strings.
* \b (backspace character): Strings.
* \DDD (octal character code): Strings.
* \f (formfeed character): Strings.
* \n (newline character): Strings.
* \r (carriage return character): Strings.
* \t (tab): Strings.
* \XD... (hex character code): Strings.
* a.out: Object.
* a.out symbol attributes: a.out Symbols.
* ABORT directive: ABORT.
* abort directive: Abort.
* absolute section: Ld Sections.
* addition, permitted arguments: Infix Ops.
* addresses: Expressions.
* addresses, format of: Secs Background.
* addressing modes, D10V: D10V-Addressing.
* addressing modes, H8/300: H8/300-Addressing.
* addressing modes, H8/500: H8/500-Addressing.
* addressing modes, M680x0: M68K-Syntax.
* addressing modes, SH: SH-Addressing.
* addressing modes, Z8000: Z8000-Addressing.
* advancing location counter: Org.
* align directive: Align.
* align directive, SPARC: Sparc-Directives.
* altered difference tables: Word.
* alternate syntax for the 680x0: M68K-Moto-Syntax.
* AMD 29K floating point (IEEE): AMD29K Floating Point.
* AMD 29K identifiers: AMD29K-Chars.
* AMD 29K line comment character: AMD29K-Chars.
* AMD 29K machine directives: AMD29K Directives.
* AMD 29K macros: AMD29K-Macros.
* AMD 29K opcodes: AMD29K Opcodes.
* AMD 29K options (none): AMD29K Options.
* AMD 29K protected registers: AMD29K-Regs.
* AMD 29K register names: AMD29K-Regs.
* AMD 29K special purpose registers: AMD29K-Regs.
* AMD 29K support: AMD29K-Dependent.
* app-file directive: App-File.
* ARC architectures: ARC-Opts.
* ARC big-endian output: ARC-Opts.
* ARC endianness: Overview.
* ARC floating point (IEEE): ARC-Float.
* ARC little-endian output: ARC-Opts.
* ARC machine directives: ARC-Directives.
* ARC options: ARC-Opts.
* ARC support: ARC-Dependent.
* architecture options, i960: Options-i960.
* architecture options, M680x0: M68K-Opts.
* architectures, ARC: ARC-Opts.
* architectures, SPARC: Sparc-Opts.
* arguments for addition: Infix Ops.
* arguments for subtraction: Infix Ops.
* arguments in expressions: Arguments.
* arithmetic functions: Operators.
* arithmetic operands: Arguments.
* arm directive, ARM: ARM Directives.
* ARM floating point (IEEE): ARM Floating Point.
* ARM identifiers: ARM-Chars.
* ARM line comment character: ARM-Chars.
* ARM machine directives: ARM Directives.
* ARM opcodes: ARM Opcodes.
* ARM options (none): ARM Options.
* ARM register names: ARM-Regs.
* ARM support: ARM-Dependent.
* ascii directive: Ascii.
* asciz directive: Asciz.
* assembler bugs, reporting: Bug Reporting.
* assembler crash: Bug Criteria.
* assembler internal logic error: As Sections.
* assembler version: v.
* assembler, and linker: Secs Background.
* assembly listings, enabling: a.
* assigning values to symbols <1>: Setting Symbols.
* assigning values to symbols: Equ.
* attributes, symbol: Symbol Attributes.
* auxiliary attributes, COFF symbols: COFF Symbols.
* auxiliary symbol information, COFF: Dim.
* Av7: Sparc-Opts.
* backslash (\\): Strings.
* backspace (\b): Strings.
* balign directive: Balign.
* balignl directive: Balign.
* balignw directive: Balign.
* big endian output, ARC: Overview.
* big endian output, MIPS: Overview.
* big-endian output, ARC: ARC-Opts.
* big-endian output, MIPS: MIPS Opts.
* bignums: Bignums.
* binary integers: Integers.
* bitfields, not supported on VAX: VAX-no.
* block: Z8000 Directives.
* block directive, AMD 29K: AMD29K Directives.
* branch improvement, M680x0: M68K-Branch.
* branch improvement, VAX: VAX-branch.
* branch recording, i960: Options-i960.
* branch statistics table, i960: Options-i960.
* bss directive, i960: Directives-i960.
* bss section <1>: Ld Sections.
* bss section: bss.
* bug criteria: Bug Criteria.
* bug reports: Bug Reporting.
* bugs in assembler: Reporting Bugs.
* bus lock prefixes, i386: i386-prefixes.
* bval: Z8000 Directives.
* byte directive: Byte.
* call instructions, i386: i386-Opcodes.
* callj, i960 pseudo-opcode: callj-i960.
* carriage return (\r): Strings.
* character constants: Characters.
* character escape codes: Strings.
* character, single: Chars.
* characters used in symbols: Symbol Intro.
* code directive, ARM: ARM Directives.
* code16 directive, i386: i386-16bit.
* code32 directive, i386: i386-16bit.
* COFF auxiliary symbol information: Dim.
* COFF structure debugging: Tag.
* COFF symbol attributes: COFF Symbols.
* COFF symbol descriptor: Desc.
* COFF symbol storage class: Scl.
* COFF symbol type: Type.
* COFF symbols, debugging: Def.
* COFF value attribute: Val.
* COMDAT: Linkonce.
* comm directive: Comm.
* command line conventions: Command Line.
* command line options, V850: V850 Options.
* command-line options ignored, VAX: VAX-Opts.
* comments: Comments.
* comments, M680x0: M68K-Chars.
* comments, removed by preprocessor: Preprocessing.
* common directive, SPARC: Sparc-Directives.
* common sections: Linkonce.
* common variable storage: bss.
* compare and jump expansions, i960: Compare-and-branch-i960.
* compare/branch instructions, i960: Compare-and-branch-i960.
* conditional assembly: If.
* constant, single character: Chars.
* constants: Constants.
* constants, bignum: Bignums.
* constants, character: Characters.
* constants, converted by preprocessor: Preprocessing.
* constants, floating point: Flonums.
* constants, integer: Integers.
* constants, number: Numbers.
* constants, string: Strings.
* continuing statements: Statements.
* conversion instructions, i386: i386-Opcodes.
* coprocessor wait, i386: i386-prefixes.
* cpu directive, SPARC: ARC-Directives.
* cputype directive, AMD 29K: AMD29K Directives.
* crash of assembler: Bug Criteria.
* current address: Dot.
* current address, advancing: Org.
* D10V @word modifier: D10V-Word.
* D10V addressing modes: D10V-Addressing.
* D10V floating point: D10V-Float.
* D10V line comment character: D10V-Chars.
* D10V opcode summary: D10V-Opcodes.
* D10V optimization: Overview.
* D10V options: D10V-Opts.
* D10V registers: D10V-Regs.
* D10V size modifiers: D10V-Size.
* D10V sub-instruction ordering: D10V-Chars.
* D10V sub-instructions: D10V-Subs.
* D10V support: D10V-Dependent.
* D10V syntax: D10V-Syntax.
* data alignment on SPARC: Sparc-Aligned-Data.
* data and text sections, joining: R.
* data directive: Data.
* data section: Ld Sections.
* data1 directive, M680x0: M68K-Directives.
* data2 directive, M680x0: M68K-Directives.
* debuggers, and symbol order: Symbols.
* debugging COFF symbols: Def.
* decimal integers: Integers.
* def directive: Def.
* dependency tracking: MD.
* deprecated directives: Deprecated.
* desc directive: Desc.
* descriptor, of a.out symbol: Symbol Desc.
* dfloat directive, VAX: VAX-directives.
* difference tables altered: Word.
* difference tables, warning: K.
* dim directive: Dim.
* directives and instructions: Statements.
* directives, M680x0: M68K-Directives.
* directives, machine independent: Pseudo Ops.
* directives, Z8000: Z8000 Directives.
* displacement sizing character, VAX: VAX-operands.
* dot (symbol): Dot.
* double directive: Double.
* double directive, i386: i386-Float.
* double directive, M680x0: M68K-Float.
* double directive, VAX: VAX-float.
* doublequote (\"): Strings.
* ECOFF sections: MIPS Object.
* ecr register, V850: V850-Regs.
* eight-byte integer: Quad.
* eipc register, V850: V850-Regs.
* eipsw register, V850: V850-Regs.
* eject directive: Eject.
* else directive: Else.
* empty expressions: Empty Exprs.
* emulation: Overview.
* endef directive: Endef.
* endianness, ARC: Overview.
* endianness, MIPS: Overview.
* endif directive: Endif.
* endm directive: Macro.
* EOF, newline must precede: Statements.
* ep register, V850: V850-Regs.
* equ directive: Equ.
* equiv directive: Equiv.
* err directive: Err.
* error messsages: Errors.
* error on valid input: Bug Criteria.
* errors, continuing after: Z.
* escape codes, character: Strings.
* even: Z8000 Directives.
* even directive, M680x0: M68K-Directives.
* exitm directive: Macro.
* expr (internal section): As Sections.
* expression arguments: Arguments.
* expressions: Expressions.
* expressions, empty: Empty Exprs.
* expressions, integer: Integer Exprs.
* extend directive M680x0: M68K-Float.
* extended directive, i960: Directives-i960.
* extern directive: Extern.
* faster processing (-f): f.
* fatal signal: Bug Criteria.
* fepc register, V850: V850-Regs.
* fepsw register, V850: V850-Regs.
* ffloat directive, VAX: VAX-directives.
* file directive: File.
* file directive, AMD 29K: AMD29K Directives.
* file name, logical <1>: App-File.
* file name, logical: File.
* files, including: Include.
* files, input: Input Files.
* fill directive: Fill.
* filling memory <1>: Skip.
* filling memory: Space.
* float directive: Float.
* float directive, i386: i386-Float.
* float directive, M680x0: M68K-Float.
* float directive, VAX: VAX-float.
* floating point numbers: Flonums.
* floating point numbers (double): Double.
* floating point numbers (single) <1>: Single.
* floating point numbers (single): Float.
* floating point, AMD 29K (IEEE): AMD29K Floating Point.
* floating point, ARC (IEEE): ARC-Float.
* floating point, ARM (IEEE): ARM Floating Point.
* floating point, D10V: D10V-Float.
* floating point, H8/300 (IEEE): H8/300 Floating Point.
* floating point, H8/500 (IEEE): H8/500 Floating Point.
* floating point, HPPA (IEEE): HPPA Floating Point.
* floating point, i386: i386-Float.
* floating point, i960 (IEEE): Floating Point-i960.
* floating point, M680x0: M68K-Float.
* floating point, SH (IEEE): SH Floating Point.
* floating point, SPARC (IEEE): Sparc-Float.
* floating point, V850 (IEEE): V850 Floating Point.
* floating point, VAX: VAX-float.
* flonums: Flonums.
* force_thumb directive, ARM: ARM Directives.
* format of error messages: Errors.
* format of warning messages: Errors.
* formfeed (\f): Strings.
* functions, in expressions: Operators.
* gbr960, i960 postprocessor: Options-i960.
* gfloat directive, VAX: VAX-directives.
* global: Z8000 Directives.
* global directive: Global.
* gp register, MIPS: MIPS Object.
* gp register, V850: V850-Regs.
* grouping data: Sub-Sections.
* H8/300 addressing modes: H8/300-Addressing.
* H8/300 floating point (IEEE): H8/300 Floating Point.
* H8/300 line comment character: H8/300-Chars.
* H8/300 line separator: H8/300-Chars.
* H8/300 machine directives (none): H8/300 Directives.
* H8/300 opcode summary: H8/300 Opcodes.
* H8/300 options (none): H8/300 Options.
* H8/300 registers: H8/300-Regs.
* H8/300 size suffixes: H8/300 Opcodes.
* H8/300 support: H8/300-Dependent.
* H8/300H, assembling for: H8/300 Directives.
* H8/500 addressing modes: H8/500-Addressing.
* H8/500 floating point (IEEE): H8/500 Floating Point.
* H8/500 line comment character: H8/500-Chars.
* H8/500 line separator: H8/500-Chars.
* H8/500 machine directives (none): H8/500 Directives.
* H8/500 opcode summary: H8/500 Opcodes.
* H8/500 options (none): H8/500 Options.
* H8/500 registers: H8/500-Regs.
* H8/500 support: H8/500-Dependent.
* half directive, SPARC: Sparc-Directives.
* hex character code (\XD...): Strings.
* hexadecimal integers: Integers.
* hfloat directive, VAX: VAX-directives.
* hi pseudo-op, V850: V850 Opcodes.
* hi0 pseudo-op, V850: V850 Opcodes.
* HPPA directives not supported: HPPA Directives.
* HPPA floating point (IEEE): HPPA Floating Point.
* HPPA Syntax: HPPA Options.
* HPPA-only directives: HPPA Directives.
* hword directive: hword.
* i386 16-bit code: i386-16bit.
* i386 conversion instructions: i386-Opcodes.
* i386 floating point: i386-Float.
* i386 immediate operands: i386-Syntax.
* i386 jump optimization: i386-jumps.
* i386 jump, call, return: i386-Syntax.
* i386 jump/call operands: i386-Syntax.
* i386 memory references: i386-Memory.
* i386 mul, imul instructions: i386-Notes.
* i386 opcode naming: i386-Opcodes.
* i386 opcode prefixes: i386-prefixes.
* i386 options (none): i386-Options.
* i386 register operands: i386-Syntax.
* i386 registers: i386-Regs.
* i386 sections: i386-Syntax.
* i386 size suffixes: i386-Syntax.
* i386 source, destination operands: i386-Syntax.
* i386 support: i386-Dependent.
* i386 syntax compatibility: i386-Syntax.
* i80306 support: i386-Dependent.
* i960 architecture options: Options-i960.
* i960 branch recording: Options-i960.
* i960 callj pseudo-opcode: callj-i960.
* i960 compare and jump expansions: Compare-and-branch-i960.
* i960 compare/branch instructions: Compare-and-branch-i960.
* i960 floating point (IEEE): Floating Point-i960.
* i960 machine directives: Directives-i960.
* i960 opcodes: Opcodes for i960.
* i960 options: Options-i960.
* i960 support: i960-Dependent.
* ident directive: Ident.
* identifiers, AMD 29K: AMD29K-Chars.
* identifiers, ARM: ARM-Chars.
* if directive: If.
* ifdef directive: If.
* ifndef directive: If.
* ifnotdef directive: If.
* immediate character, M680x0: M68K-Chars.
* immediate character, VAX: VAX-operands.
* immediate operands, i386: i386-Syntax.
* imul instruction, i386: i386-Notes.
* include directive: Include.
* include directive search path: I.
* indirect character, VAX: VAX-operands.
* infix operators: Infix Ops.
* inhibiting interrupts, i386: i386-prefixes.
* input: Input Files.
* input file linenumbers: Input Files.
* instruction set, M680x0: M68K-opcodes.
* instruction summary, D10V: D10V-Opcodes.
* instruction summary, H8/300: H8/300 Opcodes.
* instruction summary, H8/500: H8/500 Opcodes.
* instruction summary, SH: SH Opcodes.
* instruction summary, Z8000: Z8000 Opcodes.
* instructions and directives: Statements.
* int directive: Int.
* int directive, H8/300: H8/300 Directives.
* int directive, H8/500: H8/500 Directives.
* int directive, i386: i386-Float.
* integer expressions: Integer Exprs.
* integer, 16-byte: Octa.
* integer, 8-byte: Quad.
* integers: Integers.
* integers, 16-bit: hword.
* integers, 32-bit: Int.
* integers, binary: Integers.
* integers, decimal: Integers.
* integers, hexadecimal: Integers.
* integers, octal: Integers.
* integers, one byte: Byte.
* internal assembler sections: As Sections.
* invalid input: Bug Criteria.
* invocation summary: Overview.
* irp directive: Irp.
* irpc directive: Irpc.
* joining text and data sections: R.
* jump instructions, i386: i386-Opcodes.
* jump optimization, i386: i386-jumps.
* jump/call operands, i386: i386-Syntax.
* label (:): Statements.
* labels: Labels.
* lcomm directive: Lcomm.
* ld: Object.
* ldouble directive M680x0: M68K-Float.
* leafproc directive, i960: Directives-i960.
* length of symbols: Symbol Intro.
* lflags directive (ignored): Lflags.
* line comment character: Comments.
* line comment character, AMD 29K: AMD29K-Chars.
* line comment character, ARM: ARM-Chars.
* line comment character, D10V: D10V-Chars.
* line comment character, H8/300: H8/300-Chars.
* line comment character, H8/500: H8/500-Chars.
* line comment character, M680x0: M68K-Chars.
* line comment character, SH: SH-Chars.
* line comment character, V850: V850-Chars.
* line comment character, Z8000: Z8000-Chars.
* line directive: Line.
* line directive, AMD 29K: AMD29K Directives.
* line numbers, in input files: Input Files.
* line numbers, in warnings/errors: Errors.
* line separator character: Statements.
* line separator, H8/300: H8/300-Chars.
* line separator, H8/500: H8/500-Chars.
* line separator, SH: SH-Chars.
* line separator, Z8000: Z8000-Chars.
* lines starting with #: Comments.
* linker: Object.
* linker, and assembler: Secs Background.
* linkonce directive: Linkonce.
* list directive: List.
* listing control, turning off: Nolist.
* listing control, turning on: List.
* listing control: new page: Eject.
* listing control: paper size: Psize.
* listing control: subtitle: Sbttl.
* listing control: title line: Title.
* listings, enabling: a.
* little endian output, ARC: Overview.
* little endian output, MIPS: Overview.
* little-endian output, ARC: ARC-Opts.
* little-endian output, MIPS: MIPS Opts.
* ln directive: Ln.
* lo pseudo-op, V850: V850 Opcodes.
* local common symbols: Lcomm.
* local labels, retaining in output: L.
* local symbol names: Symbol Names.
* location counter: Dot.
* location counter, advancing: Org.
* logical file name <1>: File.
* logical file name: App-File.
* logical line number: Line.
* logical line numbers: Comments.
* long directive: Long.
* long directive, i386: i386-Float.
* lp register, V850: V850-Regs.
* lval: Z8000 Directives.
* M680x0 addressing modes: M68K-Syntax.
* M680x0 architecture options: M68K-Opts.
* M680x0 branch improvement: M68K-Branch.
* M680x0 directives: M68K-Directives.
* M680x0 floating point: M68K-Float.
* M680x0 immediate character: M68K-Chars.
* M680x0 line comment character: M68K-Chars.
* M680x0 opcodes: M68K-opcodes.
* M680x0 options: M68K-Opts.
* M680x0 pseudo-opcodes: M68K-Branch.
* M680x0 size modifiers: M68K-Syntax.
* M680x0 support: M68K-Dependent.
* M680x0 syntax: M68K-Syntax.
* machine dependencies: Machine Dependencies.
* machine directives, AMD 29K: AMD29K Directives.
* machine directives, ARC: ARC-Directives.
* machine directives, ARM: ARM Directives.
* machine directives, H8/300 (none): H8/300 Directives.
* machine directives, H8/500 (none): H8/500 Directives.
* machine directives, i960: Directives-i960.
* machine directives, SH: SH Directives.
* machine directives, SPARC: Sparc-Directives.
* machine directives, V850: V850 Directives.
* machine directives, VAX: VAX-directives.
* machine independent directives: Pseudo Ops.
* machine instructions (not covered): Manual.
* machine-independent syntax: Syntax.
* macro directive: Macro.
* macros: Macro.
* Macros, AMD 29K: AMD29K-Macros.
* macros, count executed: Macro.
* make rules: MD.
* manual, structure and purpose: Manual.
* memory references, i386: i386-Memory.
* merging text and data sections: R.
* messages from assembler: Errors.
* minus, permitted arguments: Infix Ops.
* MIPS architecture options: MIPS Opts.
* MIPS big-endian output: MIPS Opts.
* MIPS debugging directives: MIPS Stabs.
* MIPS ECOFF sections: MIPS Object.
* MIPS endianness: Overview.
* MIPS ISA: Overview.
* MIPS ISA override: MIPS ISA.
* MIPS little-endian output: MIPS Opts.
* MIPS option stack: MIPS option stack.
* MIPS processor: MIPS-Dependent.
* MIT: M68K-Syntax.
* mnemonics for opcodes, VAX: VAX-opcodes.
* mnemonics, D10V: D10V-Opcodes.
* mnemonics, H8/300: H8/300 Opcodes.
* mnemonics, H8/500: H8/500 Opcodes.
* mnemonics, SH: SH Opcodes.
* mnemonics, Z8000: Z8000 Opcodes.
* Motorola syntax for the 680x0: M68K-Moto-Syntax.
* MRI compatibility mode: M.
* mri directive: MRI.
* MRI mode, temporarily: MRI.
* mul instruction, i386: i386-Notes.
* multi-line statements: Statements.
* name: Z8000 Directives.
* named section: Section.
* named sections: Ld Sections.
* names, symbol: Symbol Names.
* naming object file: o.
* new page, in listings: Eject.
* newline (\n): Strings.
* newline, required at file end: Statements.
* nolist directive: Nolist.
* null-terminated strings: Asciz.
* number constants: Numbers.
* number of macros executed: Macro.
* numbered subsections: Sub-Sections.
* numbers, 16-bit: hword.
* numeric values: Expressions.
* object file: Object.
* object file format: Object Formats.
* object file name: o.
* object file, after errors: Z.
* obsolescent directives: Deprecated.
* octa directive: Octa.
* octal character code (\DDD): Strings.
* octal integers: Integers.
* offset directive, V850: V850 Directives.
* opcode mnemonics, VAX: VAX-opcodes.
* opcode naming, i386: i386-Opcodes.
* opcode prefixes, i386: i386-prefixes.
* opcode suffixes, i386: i386-Syntax.
* opcode summary, D10V: D10V-Opcodes.
* opcode summary, H8/300: H8/300 Opcodes.
* opcode summary, H8/500: H8/500 Opcodes.
* opcode summary, SH: SH Opcodes.
* opcode summary, Z8000: Z8000 Opcodes.
* opcodes for AMD 29K: AMD29K Opcodes.
* opcodes for ARM: ARM Opcodes.
* opcodes for V850: V850 Opcodes.
* opcodes, i960: Opcodes for i960.
* opcodes, M680x0: M68K-opcodes.
* operand delimiters, i386: i386-Syntax.
* operand notation, VAX: VAX-operands.
* operands in expressions: Arguments.
* operator precedence: Infix Ops.
* operators, in expressions: Operators.
* operators, permitted arguments: Infix Ops.
* optimization, D10V: Overview.
* option summary: Overview.
* options for AMD29K (none): AMD29K Options.
* options for ARC: ARC-Opts.
* options for ARM (none): ARM Options.
* options for i386 (none): i386-Options.
* options for SPARC: Sparc-Opts.
* options for V850 (none): V850 Options.
* options for VAX/VMS: VAX-Opts.
* options, all versions of assembler: Invoking.
* options, command line: Command Line.
* options, D10V: D10V-Opts.
* options, H8/300 (none): H8/300 Options.
* options, H8/500 (none): H8/500 Options.
* options, i960: Options-i960.
* options, M680x0: M68K-Opts.
* options, SH (none): SH Options.
* options, Z8000: Z8000 Options.
* org directive: Org.
* other attribute, of a.out symbol: Symbol Other.
* output file: Object.
* p2align directive: P2align.
* p2alignl directive: P2align.
* p2alignw directive: P2align.
* padding the location counter: Align.
* padding the location counter given a power of two: P2align.
* padding the location counter given number of bytes: Balign.
* page, in listings: Eject.
* paper size, for listings: Psize.
* paths for .include: I.
* patterns, writing in memory: Fill.
* plus, permitted arguments: Infix Ops.
* precedence of operators: Infix Ops.
* precision, floating point: Flonums.
* prefix operators: Prefix Ops.
* prefixes, i386: i386-prefixes.
* preprocessing: Preprocessing.
* preprocessing, turning on and off: Preprocessing.
* primary attributes, COFF symbols: COFF Symbols.
* proc directive, SPARC: Sparc-Directives.
* protected registers, AMD 29K: AMD29K-Regs.
* pseudo-opcodes, M680x0: M68K-Branch.
* pseudo-ops for branch, VAX: VAX-branch.
* pseudo-ops, machine independent: Pseudo Ops.
* psize directive: Psize.
* psw register, V850: V850-Regs.
* purpose of GNU assembler: GNU Assembler.
* quad directive: Quad.
* quad directive, i386: i386-Float.
* real-mode code, i386: i386-16bit.
* register names, AMD 29K: AMD29K-Regs.
* register names, ARM: ARM-Regs.
* register names, H8/300: H8/300-Regs.
* register names, V850: V850-Regs.
* register names, VAX: VAX-operands.
* register operands, i386: i386-Syntax.
* registers, D10V: D10V-Regs.
* registers, H8/500: H8/500-Regs.
* registers, i386: i386-Regs.
* registers, SH: SH-Regs.
* registers, Z8000: Z8000-Regs.
* relocation: Sections.
* relocation example: Ld Sections.
* repeat prefixes, i386: i386-prefixes.
* reporting bugs in assembler: Reporting Bugs.
* rept directive: Rept.
* reserve directive, SPARC: Sparc-Directives.
* return instructions, i386: i386-Syntax.
* rsect: Z8000 Directives.
* sbttl directive: Sbttl.
* scl directive: Scl.
* sdaoff pseudo-op, V850: V850 Opcodes.
* search path for .include: I.
* sect directive, AMD 29K: AMD29K Directives.
* section directive: Section.
* section directive, V850: V850 Directives.
* section override prefixes, i386: i386-prefixes.
* section-relative addressing: Secs Background.
* sections: Sections.
* sections in messages, internal: As Sections.
* sections, i386: i386-Syntax.
* sections, named: Ld Sections.
* seg directive, SPARC: Sparc-Directives.
* segm: Z8000 Directives.
* set directive: Set.
* SH addressing modes: SH-Addressing.
* SH floating point (IEEE): SH Floating Point.
* SH line comment character: SH-Chars.
* SH line separator: SH-Chars.
* SH machine directives: SH Directives.
* SH opcode summary: SH Opcodes.
* SH options (none): SH Options.
* SH registers: SH-Regs.
* SH support: SH-Dependent.
* short directive: Short.
* single character constant: Chars.
* single directive: Single.
* single directive, i386: i386-Float.
* sixteen bit integers: hword.
* sixteen byte integer: Octa.
* size directive: Size.
* size modifiers, D10V: D10V-Size.
* size modifiers, M680x0: M68K-Syntax.
* size prefixes, i386: i386-prefixes.
* size suffixes, H8/300: H8/300 Opcodes.
* sizes operands, i386: i386-Syntax.
* skip directive: Skip.
* skip directive, M680x0: M68K-Directives.
* skip directive, SPARC: Sparc-Directives.
* sleb128 directive: Sleb128.
* small objects, MIPS ECOFF: MIPS Object.
* SOM symbol attributes: SOM Symbols.
* source program: Input Files.
* source, destination operands; i386: i386-Syntax.
* sp register, V850: V850-Regs.
* space directive: Space.
* space used, maximum for assembly: statistics.
* SPARC architectures: Sparc-Opts.
* SPARC data alignment: Sparc-Aligned-Data.
* SPARC floating point (IEEE): Sparc-Float.
* SPARC machine directives: Sparc-Directives.
* SPARC options: Sparc-Opts.
* SPARC support: Sparc-Dependent.
* special characters, M680x0: M68K-Chars.
* special purpose registers, AMD 29K: AMD29K-Regs.
* stabd directive: Stab.
* stabn directive: Stab.
* stabs directive: Stab.
* stabX directives: Stab.
* standard assembler sections: Secs Background.
* standard input, as input file: Command Line.
* statement on multiple lines: Statements.
* statement separator character: Statements.
* statement separator, H8/300: H8/300-Chars.
* statement separator, H8/500: H8/500-Chars.
* statement separator, SH: SH-Chars.
* statement separator, Z8000: Z8000-Chars.
* statements, structure of: Statements.
* statistics, about assembly: statistics.
* stopping the assembly: Abort.
* string constants: Strings.
* string directive: String.
* string directive on HPPA: HPPA Directives.
* string literals: Ascii.
* string, copying to object file: String.
* structure debugging, COFF: Tag.
* sub-instruction ordering, D10V: D10V-Chars.
* sub-instructions, D10V: D10V-Subs.
* subexpressions: Arguments.
* subtitles for listings: Sbttl.
* subtraction, permitted arguments: Infix Ops.
* summary of options: Overview.
* support: HPPA-Dependent.
* supporting files, including: Include.
* suppressing warnings: W.
* sval: Z8000 Directives.
* symbol attributes: Symbol Attributes.
* symbol attributes, a.out: a.out Symbols.
* symbol attributes, COFF: COFF Symbols.
* symbol attributes, SOM: SOM Symbols.
* symbol descriptor, COFF: Desc.
* symbol names: Symbol Names.
* symbol names, $ in <1>: D10V-Chars.
* symbol names, $ in <2>: H8/500-Chars.
* symbol names, $ in: SH-Chars.
* symbol names, local: Symbol Names.
* symbol names, temporary: Symbol Names.
* symbol storage class (COFF): Scl.
* symbol type: Symbol Type.
* symbol type, COFF: Type.
* symbol value: Symbol Value.
* symbol value, setting: Set.
* symbol values, assigning: Setting Symbols.
* symbol versioning: Symver.
* symbol, common: Comm.
* symbol, making visible to linker: Global.
* symbolic debuggers, information for: Stab.
* symbols: Symbols.
* symbols with lowercase, VAX/VMS: VAX-Opts.
* symbols, assigning values to: Equ.
* symbols, local common: Lcomm.
* symver directive: Symver.
* syntax compatibility, i386: i386-Syntax.
* syntax, D10V: D10V-Syntax.
* syntax, M680x0: M68K-Syntax.
* syntax, machine-independent: Syntax.
* sysproc directive, i960: Directives-i960.
* tab (\t): Strings.
* tag directive: Tag.
* tdaoff pseudo-op, V850: V850 Opcodes.
* temporary symbol names: Symbol Names.
* text and data sections, joining: R.
* text directive: Text.
* text section: Ld Sections.
* tfloat directive, i386: i386-Float.
* thumb directive, ARM: ARM Directives.
* Thumb support: ARM-Dependent.
* thumb_func directive, ARM: ARM Directives.
* time, total for assembly: statistics.
* title directive: Title.
* tp register, V850: V850-Regs.
* trusted compiler: f.
* turning preprocessing on and off: Preprocessing.
* type directive: Type.
* type of a symbol: Symbol Type.
* ualong directive, SH: SH Directives.
* uaword directive, SH: SH Directives.
* uleb128 directive: Uleb128.
* undefined section: Ld Sections.
* unsegm: Z8000 Directives.
* use directive, AMD 29K: AMD29K Directives.
* V850 command line options: V850 Options.
* V850 floating point (IEEE): V850 Floating Point.
* V850 line comment character: V850-Chars.
* V850 machine directives: V850 Directives.
* V850 opcodes: V850 Opcodes.
* V850 options (none): V850 Options.
* V850 register names: V850-Regs.
* V850 support: V850-Dependent.
* val directive: Val.
* value attribute, COFF: Val.
* value of a symbol: Symbol Value.
* VAX bitfields not supported: VAX-no.
* VAX branch improvement: VAX-branch.
* VAX command-line options ignored: VAX-Opts.
* VAX displacement sizing character: VAX-operands.
* VAX floating point: VAX-float.
* VAX immediate character: VAX-operands.
* VAX indirect character: VAX-operands.
* VAX machine directives: VAX-directives.
* VAX opcode mnemonics: VAX-opcodes.
* VAX operand notation: VAX-operands.
* VAX register names: VAX-operands.
* VAX support: Vax-Dependent.
* Vax-11 C compatibility: VAX-Opts.
* VAX/VMS options: VAX-Opts.
* version of assembler: v.
* versions of symbols: Symver.
* VMS (VAX) options: VAX-Opts.
* warning for altered difference tables: K.
* warning messages: Errors.
* warnings, suppressing: W.
* whitespace: Whitespace.
* whitespace, removed by preprocessor: Preprocessing.
* wide floating point directives, VAX: VAX-directives.
* word directive: Word.
* word directive, H8/300: H8/300 Directives.
* word directive, H8/500: H8/500 Directives.
* word directive, i386: i386-Float.
* word directive, SPARC: Sparc-Directives.
* writing patterns in memory: Fill.
* wval: Z8000 Directives.
* xword directive, SPARC: Sparc-Directives.
* Z800 addressing modes: Z8000-Addressing.
* Z8000 directives: Z8000 Directives.
* Z8000 line comment character: Z8000-Chars.
* Z8000 line separator: Z8000-Chars.
* Z8000 opcode summary: Z8000 Opcodes.
* Z8000 options: Z8000 Options.
* Z8000 registers: Z8000-Regs.
* Z8000 support: Z8000-Dependent.
* zdaoff pseudo-op, V850: V850 Opcodes.
* zero register, V850: V850-Regs.
* zero-terminated strings: Asciz.

File diff suppressed because it is too large Load Diff

10
gnu/dist/gas/link.cmd vendored
View File

@ -1,10 +0,0 @@
ALIGN=1024
RESNUM 0x0000, 0x8000
; Putting in .lit1 gives errors.
ORDER .data=0x80002000, .data1, .lit, .bss
; Let's put this on the command line so it goes first, which is what
; GDB expects.
; LOAD /s2/amd/29k/lib/crt0.o
LOAD /s2/amd/29k/lib/libqcb0h.lib
LOAD /s2/amd/29k/lib/libscb0h.lib
LOAD /s2/amd/29k/lib/libacb0h.lib

42
gnu/dist/gas/mac-as.r vendored
View File

@ -1,42 +0,0 @@
/* Resources for GNU AS. */
#include "SysTypes.r"
/* Version resources. */
resource 'vers' (1) {
0,
0,
0,
0,
verUs,
VERSION_STRING,
VERSION_STRING " (C) 1986-95 FSF, Inc."
};
resource 'vers' (2, purgeable) {
0,
0,
0,
0,
verUs,
VERSION_STRING,
"GAS " VERSION_STRING " for MPW"
};
#ifdef WANT_CFRG
#include "CodeFragmentTypes.r"
resource 'cfrg' (0) {
{
kPowerPC,
kFullLib,
kNoVersionNum, kNoVersionNum,
0,0,
kIsApp, kOnDiskFlat, kZeroOffset, kWholeFork,
PROG_NAME
}
};
#endif /* WANT_CFRG */

View File

@ -1,153 +0,0 @@
$!make-gas.com
$! Set the def dir to proper place for use in batch. Works for interactive to.
$flnm = f$enviroment("PROCEDURE") ! get current procedure name
$set default 'f$parse(flnm,,,"DEVICE")''f$parse(flnm,,,"DIRECTORY")'
$v = 'f$verify(0)'
$!
$! Command file to build a GNU assembler on VMS
$!
$! If you are using a version of GCC that supports global constants
$! you should remove the define="const=" from the gcc lines.
$!
$! Caution: Versions 1.38.1 and earlier had a bug in the handling of
$! some static constants. If you are using such a version of the
$! assembler, and you wish to compile without the "const=" hack,
$! you should first build this version *with* the "const="
$! definition, and then use that assembler to rebuild it without the
$! "const=" definition. Failure to do this will result in an assembler
$! that will mung floating point constants.
$!
$! Note: The version of gas shipped on the GCC VMS tapes has been patched
$! to fix the above mentioned bug.
$!
$ !The gcc-vms driver was modified to use `-1' quite some time ago,
$ !so don't echo this text any more...
$ !write sys$output "If this assembler is going to be used with GCC 1.n, you"
$ !write sys$output "need to modify the driver to supply the -1 switch to gas."
$ !write sys$output "This is required because of a small change in how global"
$ !write sys$output "constant variables are handled. Failure to include this"
$ !write sys$output "will result in linker warning messages about mismatched
$ !write sys$output "psect attributes."
$!
$ gas_host="vms"
$ arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2
$ arch = f$element(arch_indx,"|","|VAX|Alpha|")
$ if arch.eqs."VAX"
$ then
$ cpu_type="vax"
$ obj_format="vms"
$ atof="vax"
$ else
$ cpu_type="alpha"
$ obj_format="evax"
$ atof="ieee"
$ endif
$ emulation="generic"
$!
$ COPY = "copy/noLog"
$!
$ C_DEFS :="""VMS"""
$! C_DEFS :="""VMS""","""const="""
$ C_INCLUDES = "/Include=([],[.config],[-.include],[-.include.aout])"
$ C_FLAGS = "/noVerbose/Debug" + c_includes
$!
$!
$ on error then goto bail
$ if f$search("[-.libiberty]liberty.olb").eqs.""
$ then @[-.libiberty]vmsbuild.com
$ write sys$output "Now building gas."
$ endif
$ if "''p1'" .eqs. "LINK" then goto Link
$!
$! This helps gcc 1.nn find the aout/* files.
$!
$ aout_dev = f$parse(flnm,,,"DEVICE")
$ tmp = aout_dev - ":"
$if f$trnlnm(tmp).nes."" then aout_dev = f$trnlnm(tmp)
$ aout_dir = aout_dev+f$parse(flnm,,,"DIRECTORY")' -
- "GAS]" + "INCLUDE.AOUT.]" - "]["
$assign 'aout_dir' aout/tran=conc
$ opcode_dir = aout_dev+f$parse(flnm,,,"DIRECTORY")' -
- "GAS]" + "INCLUDE.OPCODE.]" - "]["
$assign 'opcode_dir' opcode/tran=conc
$!
$ set verify
$!
$ gcc 'c_flags'/Define=('C_DEFS')/Object=[]tc-'cpu_type'.obj [.config]tc-'cpu_type'.c
$ gcc 'c_flags'/Define=('C_DEFS')/Object=[]obj-'obj_format'.obj [.config]obj-'obj_format'.c
$ gcc 'c_flags'/Define=('C_DEFS')/Object=[]atof-'atof'.obj [.config]atof-'atof'.c
$ gcc 'c_flags'/Define=('C_DEFS') app.c
$ gcc 'c_flags'/Define=('C_DEFS') as.c
$ gcc 'c_flags'/Define=('C_DEFS') atof-generic.c
$ gcc 'c_flags'/Define=('C_DEFS') bignum-copy.c
$ gcc 'c_flags'/Define=('C_DEFS') cond.c
$ gcc 'c_flags'/Define=('C_DEFS') depend.c
$ gcc 'c_flags'/Define=('C_DEFS') ehopt.c
$ gcc 'c_flags'/Define=('C_DEFS') expr.c
$ gcc 'c_flags'/Define=('C_DEFS') flonum-konst.c
$ gcc 'c_flags'/Define=('C_DEFS') flonum-copy.c
$ gcc 'c_flags'/Define=('C_DEFS') flonum-mult.c
$ gcc 'c_flags'/Define=('C_DEFS') frags.c
$ gcc 'c_flags'/Define=('C_DEFS') hash.c
$ gcc 'c_flags'/Define=('C_DEFS') input-file.c
$ gcc 'c_flags'/Define=('C_DEFS') input-scrub.c
$ gcc 'c_flags'/Define=('C_DEFS') literal.c
$ gcc 'c_flags'/Define=('C_DEFS') messages.c
$ gcc 'c_flags'/Define=('C_DEFS') output-file.c
$ gcc 'c_flags'/Define=('C_DEFS') read.c
$ gcc 'c_flags'/Define=('C_DEFS') subsegs.c
$ gcc 'c_flags'/Define=('C_DEFS') symbols.c
$ gcc 'c_flags'/Define=('C_DEFS') write.c
$ gcc 'c_flags'/Define=('C_DEFS') listing.c
$ gcc 'c_flags'/Define=('C_DEFS') ecoff.c
$ gcc 'c_flags'/Define=('C_DEFS') stabs.c
$ gcc 'c_flags'/Define=('C_DEFS') sb.c
$ gcc 'c_flags'/Define=('C_DEFS') macro.c
$link:
$!'f$verify(0)'
$ if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
$ create gcc-as.opt
!
! Linker options file for GNU assembler
!
$ open/Append ifile$ gcc-as.opt
$ write ifile$ "tc-''cpu_type'.obj"
$ write ifile$ "obj-''obj_format'.obj"
$ write ifile$ "atof-''atof'.obj"
$ COPY sys$input: ifile$:
app.obj,-
as.obj,-
atof-generic.obj,-
bignum-copy.obj,-
cond.obj,-
depend.obj,-
ehopt.obj,-
expr.obj,-
flonum-konst.obj,-
flonum-copy.obj,-
flonum-mult.obj,-
frags.obj,-
hash.obj,-
input-file.obj,-
input-scrub.obj,-
literal.obj,-
messages.obj,-
output-file.obj,-
read.obj,-
subsegs.obj,-
symbols.obj,-
write.obj,-
listing.obj,-
ecoff.obj,-
stabs.obj,-
sb.obj,-
macro.obj,-
[-.libiberty]liberty.olb/Lib
gnu_cc:[000000]gcclib.olb/Lib,sys$library:vaxcrtl.olb/Lib
! Tell linker exactly what psect attributes we want -- match VAXCRTL.
psect_attr=ENVIRON,long,pic,ovr,rel,gbl,noshr,noexe,rd,wrt
$ close ifile$
$ set verify=(Proc,noImag)
$ link/noMap/Exec=gcc-as.exe gcc-as.opt/Opt,version.opt/Opt
$!
$bail: exit $status + 0*f$verify(v) !'f$verify(0)'

View File

@ -1,75 +0,0 @@
#
# makefile for gas
#
# Created by Klaus K"ampf, kkaempf@progis.de
#
ifeq ($(CC),gcc)
DEFS=
CFLAGS=/include=([],[-.bfd],[.config],[-.include],[-])$(DEFS)
LFLAGS=
LIBS=,GNU_CC_LIBRARY:libgcc/lib,sys$$library:vaxcrtl.olb/lib,GNU_CC_LIBRARY:crt0.obj
else
DEFS=/define=("table_size_of_flonum_powers_of_ten"="tabsiz_flonum_powers_of_ten",\
"_bfd_generic_get_section_contents_in_window"="_bfd_generic_get_win_section_cont",\
"_elf_section_from_bfd_section"="_bfd_elf_sec_from_bfd_sec","const=")
CFLAGS=/noopt/debug/include=([],[-.bfd],[.config],[-.include],[-])$(DEFS)\
/warnings=disable=(missingreturn,implicitfunc,ptrmismatch,undefescap,longextern,duptypespec)
LFLAGS=
LIBS=,sys$$library:vaxcrtl.olb/lib
endif
OBJS=targ-cpu.obj,obj-format.obj,atof-targ.obj,app.obj,as.obj,atof-generic.obj,\
bignum-copy.obj,cond.obj,depend.obj,expr.obj,flonum-konst.obj,flonum-copy.obj,\
flonum-mult.obj,frags.obj,hash.obj,input-file.obj,input-scrub.obj,\
literal.obj,messages.obj,output-file.obj,read.obj,subsegs.obj,symbols.obj,\
write.obj,listing.obj,ecoff.obj,stabs.obj,sb.obj,macro.obj
GASPOBJS = gasp.obj,macro.obj,sb.obj,hash.obj
LIBIBERTY = [-.libiberty]libiberty.olb
LIBBFD = [-.bfd]libbfd.olb
LIBOPCODES = [-.opcodes]libopcodes.olb
all: config.status [-.bfd]bfd.h as.exe gasp.exe
as.exe: $(OBJS) $(LIBOPCODES) $(LIBBFD) $(LIBIBERTY)
link$(LFLAGS)/exe=$@ $(OBJS),$(LIBOPCODES)/lib,$(LIBBFD)/lib,$(LIBIBERTY)/lib$(LIBS)
gasp.exe: $(GASPOBJS) $(LIBBFD) $(LIBIBERTY)
link$(LFLAGS)/exe=$@ $(GASPOBJS),$(LIBBFD)/lib,$(LIBIBERTY)/lib$(LIBS)
config.status:
$$ @config-gas
targ-cpu.c: [.config]tc-alpha.c
copy $< $@
targ-cpu.h: [.config]tc-alpha.h
copy $< $@
targ-env.h: [.config]te-generic.h
copy $< $@
obj-format.h: [.config]obj-evax.h
copy $< $@
obj-format.c: [.config]obj-evax.c
copy $< $@
atof-targ.c: [.config]atof-ieee.c
copy $< $@
targ-cpu.obj: targ-cpu.c targ-cpu.h [.config]atof-vax.c
[-.bfd]bfd.h:
$(CD) [-.bfd]
gmake -f makefile.vms
$(CD) [-.gas]
clean:
$$ purge
$(RM) *.obj;
$(RM) *.exe;
$(RM) atof-targ.c;
$(RM) obj-format.c;
$(RM) obj-format.h;
$(RM) targ-env.h;
$(RM) targ-cpu.h;
$(RM) targ-cpu.c;
$(RM) config.status;

View File

@ -1,115 +0,0 @@
# Configuration fragment for GAS.
Set target_arch `echo {target_canonical} | sed -e 's/-.*-.*//'`
If "{target_arch}" =~ /powerpc/
Set short_arch_name "ppc"
Set target_cpu "powerpc"
Else
Set short_arch_name "{target_arch}"
End If
# The following works for many configurations, though not all.
Set obj_format `echo {target_canonical} | sed -e 's/.*-.*-//'`
Set target_os `echo {target_canonical} | sed -e 's/.*-.*-//'`
Set bfd_gas no
Set TDEFINES ""
Set EXTRA_OBJECTS ""
# Default emulation.
Set em generic
If "{target_canonical}" =~ /m68k-apple-macos/
Set obj_format "coff"
Set TDEFINES '-d M68KCOFF'
Set EXTRA_OBJECTS '"{o}"m68k-parse.c.o'
Else If "{target_canonical}" =~ /powerpc-apple-macos/
Set obj_format "coff"
Set bfd_gas yes
Set em macos
Else If "{target_canonical}" =~ /i386-\Option-x-go32/
Set obj_format "coff"
Set TDEFINES '-d I386COFF'
Else If "{target_canonical}" =~ /m68k-\Option-x-coff/
Set TDEFINES '-d M68KCOFF'
Else If "{target_canonical}" =~ /mips-idt-ecoff/
Set bfd_gas yes
Set TDEFINES '-d TARGET_BYTES_BIG_ENDIAN=1'
Else If "{target_canonical}" =~ /mips-\Option-x-\Option-x/
# Assume other OSes etc use ELF
Set obj_format "elf"
Set bfd_gas yes
Set TDEFINES '-d TARGET_BYTES_BIG_ENDIAN=1'
forward-include "{srcroot}"bfd:elf-bfd.h 'bfd/elf-bfd.h'
Else If "{target_canonical}" =~ /sh-\Option-x-hms/
Set obj_format "coff"
forward-include "{srcroot}"opcodes:sh-opc.h 'opcodes/sh-opc.h'
End If
forward-include "{srcdir}"config:tc-{short_arch_name}.c targ-cpu.c
forward-include "{srcdir}"config:tc-{short_arch_name}.h targ-cpu.h
forward-include "{srcdir}"config:obj-{obj_format}.c obj-format.c
forward-include "{srcdir}"config:obj-{obj_format}.h obj-format.h
forward-include "{srcdir}"config:te-{em}.h targ-env.h
# Special cases for float handling.
If "{target_arch}" =~ /ns32k/
forward-include "{srcdir}"config:atof-ns32k.c atof-targ.c
Else If "{target_arch}" =~ /tahoe/
forward-include "{srcdir}"config:atof-tahoe.c atof-targ.c
Else If "{target_arch}" =~ /vax/
forward-include "{srcdir}"config:atof-vax.c atof-targ.c
Else
# Use IEEE by default.
forward-include "{srcdir}"config:atof-ieee.c atof-targ.c
End If
Echo '# From mpw-config.in' > "{o}"mk.tmp
Echo "TDEFINES = " {TDEFINES} >> "{o}"mk.tmp
Echo "EXTRA_OBJECTS = " {EXTRA_OBJECTS} >> "{o}"mk.tmp
# (We use the -n option here so as not to get extra spaces inserted)
Echo -n 'TARG_CPU_DEP = {TARG_CPU_DEP_' >> "{o}"mk.tmp
Echo -n {short_arch_name} >> "{o}"mk.tmp
Echo -n '}' >> "{o}"mk.tmp
Echo '# End from mpw-config.in' >> "{o}"mk.tmp
Echo '/* conf. Generated by mpw-configure. */' > "{o}"conf.new
Echo -n '#define TARGET_CPU "' >> "{o}"conf.new
Echo -n "{target_cpu}" >> "{o}"conf.new
Echo '"' >> "{o}"conf.new
Echo -n '#define TARGET_OS "' >> "{o}"conf.new
Echo -n "{target_os}" >> "{o}"conf.new
Echo '"' >> "{o}"conf.new
Echo -n '#define TARGET_ALIAS "' >> "{o}"conf.new
Echo -n "{target_alias}" >> "{o}"conf.new
Echo '"' >> "{o}"conf.new
Echo -n '#define TARGET_CANONICAL "' >> "{o}"conf.new
Echo -n "{target_canonical}" >> "{o}"conf.new
Echo '"' >> "{o}"conf.new
Echo '#include "mpw.h"' >> "{o}"conf.new
If "{bfd_gas}" =~ /yes/
Echo "#define BFD_ASSEMBLER" >> "{o}"conf.new
Else
Echo "#define MANY_SEGMENTS" >> "{o}"conf.new
End If
Echo '#define CR_EOL' >> "{o}"conf.new
Echo '#define OBJ_COFF_OMIT_TIMESTAMP' >> "{o}"conf.new
Echo '#define LOSING_COMPILER' >> "{o}"conf.new
MoveIfChange "{o}"conf.new "{o}"conf
sed -e "s/@srcdir@/{srcdir}/" "{srcdir}"gdbinit.in > "{o}"_gdbinit

View File

@ -1,100 +0,0 @@
# Sed commands that finish translating the GAS Unix Makefile to MPW syntax.
/^# @target_frag@/a\
\
HDEFINES = \
LOCAL_LOADLIBES = \
/^srcroot = /s/^/#/
/^target_alias = /s/^/#/
/INCLUDES/s/-i "{srcdir}":\([a-z]*\)/-i "{topsrcdir}"\1/
/INCLUDES/s/-i "{srcdir}"\.\./-i "{topsrcdir}"/
/^INCLUDES = .*$/s/$/ -i "{topsrcdir}"include:mpw: -i ::extra-include:/
/$(TARG_CPU_DEP_@target_cpu_type@)/s/$(TARG_CPU_DEP_@target_cpu_type@)/{TARG_CPU_DEP}/
/@OPCODES_LIB@/s/@OPCODES_LIB@/::opcodes:libopcodes.o/
/@BFDLIB@/s/@BFDLIB@/::bfd:libbfd.o/
# Point at the libraries directly.
/@OPCODES_DEP@/s/@OPCODES_DEP@/::opcodes:libopcodes.o/
/@BFDDEP@/s/@BFDDEP@/::bfd:libbfd.o/
# Don't need this.
/@HLDFLAGS@/s/@HLDFLAGS@//
/extra_objects@/s/extra_objects@/{EXTRA_OBJECTS}/
/LOADLIBES/s/{LOADLIBES}/{EXTRALIBS}/
/@ALL_OBJ_DEPS@/s/@ALL_OBJ_DEPS@/::bfd:bfd.h/
# This causes problems - not sure why.
/^tags TAGS/,/etags /d
/^make-gas.com/s/^/#/
/true/s/ ; @true$//
# Remove references to conf.in, we don't need them.
/conf\.in/s/conf\.in//g
# Use _gdbinit everywhere instead of .gdbinit.
/gdbinit/s/\.gdbinit/_gdbinit/g
/atof-targ/s/"{s}"atof-targ\.c/"{o}"atof-targ.c/g
/config/s/"{s}"config\.h/"{o}"config.h/g
/config/s/^config\.h/"{o}"config.h/
/obj-format/s/"{s}"obj-format\.c/"{o}"obj-format.c/g
/obj-format/s/"{s}"obj-format\.h/"{o}"obj-format.h/g
/targ-cpu/s/"{s}"targ-cpu\.c/"{o}"targ-cpu.c/g
/targ-cpu/s/"{s}"targ-cpu\.h/"{o}"targ-cpu.h/g
/targ-env/s/"{s}"targ-env\.h/"{o}"targ-env.h/g
/m68k-parse.c/s/"{s}"m68k-parse\.c/"{o}"m68k-parse.c/g
/m68k-parse.c/s/^m68k-parse\.c/"{o}"m68k-parse.c/
# Whack out the config.h dependency, it only causes excess rebuilds.
/{OBJS}/s/{OBJS} \\Option-f "{o}"config.h/{OBJS} \\Option-f/
/gasp.c/s/gasp\.c "{o}"config.h/gasp.c/
# ALL_CFLAGS includes TDEFINES, which is not desirable at link time.
/CC_LD/s/ALL_CFLAGS/CFLAGS/g
# The resource file is called mac-as.r.
/as.new.r/s/as\.new\.r/mac-as.r/
/gasp.new.r/s/gasp\.new\.r/mac-as.r/
# ...and the PROG_NAME doesn't have a .new in it.
/PROG_NAME/s/PROG_NAME='"'as.new'"'/PROG_NAME='"'as'"'/
/PROG_NAME/s/PROG_NAME='"'gasp.new'"'/PROG_NAME='"'gasp'"'/
# Whack out recursive makes, they won't work.
/^[ ][ ]*srcroot=/,/^[ ][ ]*(cd /d
# Work around quoting problems by using multiple echo commands.
/'#define GAS_VERSION "{VERSION}"'/c\
Echo -n '#define GAS_VERSION "' >> "{o}"config.new\
Echo -n "{VERSION}" >> "{o}"config.new\
Echo -n '"' >> "{o}"config.new
# Add a "stamps" target.
$a\
stamps \\Option-f config-stamp\
/^install \\Option-f/,/^$/c\
install \\Option-f all install-only\
\
install-only \\Option-f\
NewFolderRecursive "{bindir}"\
Duplicate -y :as.new "{bindir}"as\
Duplicate -y :gasp.new "{bindir}"gasp\
# Whack out config-rebuilding targets, they won't work.
/^Makefile \\Option-f/,/^$/d
/^config.status \\Option-f/,/^$/d
/^"{o}"config.h \\Option-f/s/^/#/

View File

@ -1,47 +0,0 @@
@echo off
echo Configuring GCC for go32
rem This batch file assumes a unix-type "sed" program
if not exist config\msdos\configure.bat chdir ..\..
update config\i386\xm-dos.h config.h
update config\i386\xm-dos.h hconfig.h
update config\i386\xm-dos.h tconfig.h
update config\i386\go32.h tm.h
update config\i386\i386.md md
update config\i386\i386.c aux-output.c
echo # Makefile generated by "configure.bat"> Makefile
echo all.dos: cccp cc1 cc1obj xgcc libgcc.a s-objlist >> Makefile
sed -f config/msdos/top.sed Makefile.in >> Makefile
set LANG=
if not exist ada\make-lang.in goto no_ada
sed -f config/msdos/top.sed ada\make-lang.in >> Makefile
sed -f config/msdos/top.sed ada\makefile.in > ada\Makefile
set LANG=%LANG% ada.&
:no_ada
if not exist cp\make-lang.in goto no_cp
sed -f config/msdos/top.sed cp\make-lang.in >> Makefile
sed -f config/msdos/top.sed cp\makefile.in > cp\Makefile
set LANG=%LANG% c++.&
:no_cp
echo lang.mostlyclean: %LANG% | sed "s/&/mostlyclean/g" >> Makefile
echo lang.clean: %LANG% | sed "s/&/clean/g" >> Makefile
echo lang.distclean: %LANG% | sed "s/&/distclean/g" >> Makefile
echo lang.maintainer-clean: %LANG% | sed "s/&/maintainer-clean/g" >> Makefile
echo /* options.h */ > options.h
if exist cp\lang-options.h echo #include "cp/lang-options.h" >> options.h
if exist ada\lang-options.h echo #include "ada/lang-options.h" >> options.h
if exist f\lang-options.h echo #include "f/lang-options.h" >> options.h
echo /* specs.h */ > specs.h
if exist cp\lang-specs.h echo #include "cp/lang-specs.h" >> specs.h
if exist ada\lang-specs.h echo #include "ada/lang-specs.h" >> specs.h
if exist f\lang-specs.h echo #include "f/lang-specs.h" >> specs.h
echo #define MULTILIB_SELECT ". ;" > multilib.h1
update multilib.h1 multilib.h
del multilib.h1

View File

@ -1,13 +0,0 @@
LIBGCC1=libgcc1.null
CROSS_LIBGCC1=libgcc1.null
# The pushl in CTOR initialization interferes with frame pointer elimination.
# We need to use -fPIC when we are using gcc to compile the routines in
# crtstuff.c. This is only really needed when we are going to use gcc/g++
# to produce a shared library, but since we don't know ahead of time when
# we will be doing that, we just always use -fPIC when compiling the
# routines in crtstuff.c.
CRTSTUFF_T_CFLAGS = -fPIC -fno-omit-frame-pointer
TARGET_LIBGCC2_CFLAGS = -fPIC

View File

@ -1,16 +0,0 @@
# Don't run fixproto
STMP_FIXPROTO =
# Don't install "assert.h" in gcc. We use the one in glibc.
INSTALL_ASSERT_H =
# Compile crtbeginS.o and crtendS.o with pic.
CRTSTUFF_T_CFLAGS_S = -fPIC
# Compile libgcc2.a with pic.
TARGET_LIBGCC2_CFLAGS = -fPIC
# Do not build libgcc1. Let gcc generate those functions. The GNU/Linux
# C library can handle them.
LIBGCC1 =
CROSS_LIBGCC1 =
LIBGCC1_TEST =

View File

@ -1,11 +0,0 @@
# Don't run fixproto
STMP_FIXPROTO =
# Don't install "assert.h" in gcc. We use the one in glibc.
INSTALL_ASSERT_H =
# Do not build libgcc1. Let gcc generate those functions. The GNU/Linux
# C library can handle them.
LIBGCC1 =
CROSS_LIBGCC1 =
LIBGCC1_TEST =

View File

@ -1,2 +0,0 @@
# We are building for the Linux C library 5.
T_CFLAGS = -DUSE_GNULIBC_1

View File

@ -1,6 +0,0 @@
# RTEMS uses newlib which does not require prototype fixing
STMP_FIXPROTO =
# Don't install "assert.h" in gcc. RTEMS uses the one in newlib.
INSTALL_ASSERT_H =

View File

@ -1,8 +0,0 @@
# We need to use -fPIC when we are using gcc to compile the routines in
# crtstuff.c. This is only really needed when we are going to use gcc/g++
# to produce a shared library, but since we don't know ahead of time when
# we will be doing that, we just always use -fPIC when compiling the
# routines in crtstuff.c. Likewise for libgcc2.c.
CRTSTUFF_T_CFLAGS = -fPIC
TARGET_LIBGCC2_CFLAGS = -fPIC

View File

@ -1,58 +0,0 @@
echo Configuring GCC for Windows NT on %2
rem This batch file assumes a unix-type "sed" program
if %2.==alpha. echo #include "alpha/xm-alpha.h" >config.h
if %2.==alpha. echo #include "winnt/xm-winnt.h" >>config.h
if %2.==alpha. echo #include "alpha/xm-winnt.h" >>config.h
if not %2.==alpha. echo #include "%2/xm-winnt.h" >config.h
copy config.h hconfig.h
copy config.h tconfig.h
if %2.==alpha. echo #define TARGET_CPU_DEFAULT 64 >tm.h
if %2.==alpha. echo #include "alpha/alpha.h" >>tm.h
if %2.==alpha. echo #include "alpha/win-nt.h" >>tm.h
if not %2.==alpha. echo #include "%2/win-nt.h" >tm.h
rem This batch file assumes a unix-type "sed" program
echo # Makefile generated by "config-nt.bat"> Makefile
echo all.nt: cpp.exe cc1.exe cc1obj.exe xgcc.exe ld.exe stmp-headers libgcc.lib stmp-float_h specs stamp-objlist>> Makefile
sed -f config/%2/config-nt.sed -f config/winnt/config-nt.sed Makefile.in >> Makefile
set LANG=
echo # >specs.h
echo # >options.h
if not exist cp\make-lang.in goto no_cp
if exist cp\lang-specs.h echo #include "cp/lang-specs.h">>specs.h
if exist cp\lang-options.h echo #include "cp/lang-options.h">>options.h
sed -f config/%2/config-nt.sed -f config/winnt/config-nt.sed cp\make-lang.in >> Makefile
sed -f config/%2/config-nt.sed -f config/winnt/config-nt.sed cp\makefile.in > cp\Makefile
set LANG=%LANG% c++.#
:no_cp
if not exist ada\make-lang.in goto no_ada
if exist ada\lang-specs.h echo #include "ada/lang-specs.h">>specs.h
if exist ada\lang-options.h echo #include "ada/lang-options.h">>options.h
sed -f config/%2/config-nt.sed -f config/winnt/config-nt.sed ada\make-lang.in >> Makefile
sed -f config/%2/config-nt.sed -f config/winnt/config-nt.sed ada\makefile.in > ada\Makefile
set LANG=%LANG% ada.#
:no_ada
if not exist f\make-lang.in goto no_f
if exist f\lang-specs.h echo #include "f/lang-specs.h">>specs.h
if exist f\lang-options.h echo #include "f/lang-options.h">>options.h
sed -f config/%2/config-nt.sed -f config/winnt/config-nt.sed f\make-lang.in >> Makefile
sed -f config/%2/config-nt.sed -f config/winnt/config-nt.sed f\makefile.in > f\Makefile
set LANG=%LANG% f.#
:no_f
echo lang.mostlyclean: %LANG% | sed "s/#/mostlyclean/g" >> Makefile
echo lang.clean: %LANG% | sed "s/#/clean/g" >> Makefile
echo lang.distclean: %LANG% | sed "s/#/distclean/g" >> Makefile
echo lang.realclean: %LANG% | sed "s/#/realclean/g" >> Makefile
echo #define MULTILIB_SELECT ". ;" > multilib.h1
copy multilib.h1 multilib.h
del multilib.h1

View File

@ -1,21 +0,0 @@
@echo off
if %1.==go32. goto call_go32
if %1.==winnt. goto call_winnt
echo Usage: configure go32 or configure winnt cpu
goto END
:call_go32
call config\msdos\configure %1 %2 %3 %4
goto END
:call_winnt
if %2.==i386. goto really_call_winnt
if %2.==alpha. goto really_call_winnt
echo Usage: configure winnt i386 or configure winnt alpha
goto END
:really_call_winnt
call config\winnt\config-nt %1 %2 %3 %4
goto END
:END

View File

@ -1,11 +0,0 @@
# Configuration fragment for G++.
# Most of the real configuration work happens in the main GCC configure.
# We need to join some lines in the Makefile.in before the sed
# process will work properly. The funky little sed script works by
# recognizing lines with a trailing '$@ \', adding the next line to
# its "pattern space", editing out the backslash and line, then
# putting the result out.
sed -e '/$@ \\/{N;s/$@ \\./$@ /;P;D;}' \Option-d
"{srcdir}"Makefile.in >"{o}"hacked_Makefile.in

View File

@ -1,112 +0,0 @@
# Sed commands to finish translating the G++ Unix makefile into MPW syntax.
# Remove control-Ls, they upset MPW make.
s/ //g
# Remove references to always-empty variables used to mark things.
/CYGNUS-LOCAL-/s/{CYGNUS-LOCAL-[a-z0-9]*}//g
# Add a bunch of definitions, mostly empty.
/^# Variables that exist for you to override.$/a\
\
xmake_file = \
tmake_file = \
build_xm_file = \
MALLOC = \
MD_DEPS = \
REAL_H = \
HOST_CC_LD = {CC_LD}\
ALL_CCLDFLAGS = \
HOST_CCLDFLAGS = \
CONFIG_H = \
LIBDEPS = \
# The "target" variable is special to MPW make, avoid it.
/{target}/s/{target}/{target_canonical}/g
# Suppress the suppression of smart makes.
/^\.y\.c/d
# Whack out "..." assignments.
/\.\.\./s/^\([a-z_]*= \.\.\.\)/#\1/
# Previous edits go a little overboard, undo.
/^objext = /s/"{o}"//
# Always link in low-level MPW functions.
/^LIBDEPS=/s/$/ ::strerror.c.o ::mpwlib.c.o/
/{CLIB}/s/{CLIB}/ ::strerror.c.o ::mpwlib.c.o {CLIB}/
# Don't get tricky about finding various .o file, point at dir above.
/^SUBDIR_OBSTACK/s/`.*`/::obstack.c.o/
/^SUBDIR_USE_ALLOCA/s/`.*`/::alloca.c.o/
/^SUBDIR_MALLOC/s/`.*`//
# Point includes at parent directly correctly.
/^INCLUDES = /s/:\./::/g
/^INCLUDES = /s/"{srcdir}"\.\./"{topsrcdir}"gcc:/g
/^INCLUDES = /s,"{srcdir}"/\.\.,"{topsrcdir}"gcc:,g
/^INCLUDES = /s,"{srcdir}":config,"{topsrcdir}"gcc:config:,g
# Add the special MPW include dirs.
/^INCLUDES = /s/$/ -i "{topsrcdir}"include:mpw: -i :::extra-include:/
# A nasty hack to reduce confusion.
/true/s/ ; @true$//
# (should be in common translation?)
/{CC_LD} /s/$/ {EXTRALIBS}/
# Don't use general compiler flags (which may include definitions
# and other compiler-only bits) with linking commands.
/{CC_LD} /s/ALL_CFLAGS/ALL_CCLDFLAGS/
# Whack out build rules that are not useful.
/^Makefile \\Option-f /,/^$/d
/^config.status \\Option-f /,/^$/d
# (Note that MPW make is not case sensitive, and so this name
# is considered the same as "md_file".)
/^{MD_FILE} \\Option-f/,/^$/d
# Depending on config.status is not useful for us.
/config.status/s/ config.status//
# Repeat of stuff from generic edit.
/{s}/s/"{s}""{s}"/"{s}"/g
/{s}/s/"{s}""{srcdir}"/"{s}"/g
/{s}/s/"{srcdir}""{s}"/"{s}"/g
# Fix references to C frontend files in main dir.
/::c-/s/"{o}"::c-/"{o}":c-/g
# Fix pathnames to generated files in the objdir.
/parse/s/"{s}"parse\.\([chy]\)/"{o}"parse.\1/g
/parse/s/^parse\.\([chy]\)/"{o}"parse.\1/
/y.tab.c/s/"{s}"y\.tab\.c/"{o}"y.tab.c/g
/y.tab.c/s/^y\.tab\.c/"{o}"y.tab.c/
/y.tab.h/s/"{s}"y\.tab\.h/"{o}"y.tab.h/g
/y.tab.h/s/^y\.tab\.h/"{o}"y.tab.h/
# Put in the definition of YYEMPTY directly.
/grep/s/grep .* >>/Echo '#define YYEMPTY -1' >>/
# If the dates are wrong, then this tries to run gperf, which we don't
# really want.
/^"{srcdir}"hash.h/,/hash.h$/d
# Sed the object file list instead of using cat (meow).
/cat/s/`cat /`sed -e 's,:,::,g' -e 's,{objext},.o,g' /
# Simplify dependencies of generated parser files.
/^{PARSE_C}/s/^/#/
/^stamp-parse/s/^stamp-parse/{PARSE_C}/
# Fix the compile line for the generated parser.
/{CC} -c/,/echo {PARSE_C}/c\
{CC} @DASH_C_FLAG@ {ALL_CFLAGS} {ALL_CPPFLAGS} {INCLUDES} {BIG_SWITCHFLAG} "{o}"parse.c -o "{o}"parse.c.o\
# Change all Rez commands to use mac-gcc.r.
/{REZ}/s/"{s}"[-a-zA-Z{}]*\.r/"{topsrcdir}"gcc:mac-gcc.r/
# Remove pathname junk from the container name.
/{REZ}/s/'"'::cc1plus'"'/'"'cc1plus'"'/

View File

@ -1,185 +0,0 @@
#!/bin/sh
#
# modified for dgux by hassey@dg-rtp.dg.com based on
#
# fixinc.svr4 written by Ron Guilmette (rfg@ncd.com).
#
# This file is part of GNU CC.
#
# GNU CC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# GNU CC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU CC; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
#
# See README-fixinc for more information.
# Directory containing the original header files.
INPUT=${2-${INPUT-/usr/include}}
# Fail if no arg to specify a directory for the output.
if [ x$1 = x ]
then echo fixincludes: no output directory specified
exit 1
fi
# Directory in which to store the results.
LIB=${1?"fixincludes: output directory not specified"}
# Make sure it exists.
if [ ! -d $LIB ]; then
mkdir $LIB || exit 1
fi
ORIG_DIR=`pwd`
# Make LIB absolute if it is relative.
# Don't do this if not necessary, since may screw up automounters.
case $LIB in
/*)
;;
*)
cd $LIB; LIB=`${PWDCMD-pwd}`
;;
esac
echo 'Building fixincludes in ' ${LIB}
# Determine whether this filesystem has symbolic links.
if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
rm -f $LIB/ShouldNotExist
LINKS=true
else
LINKS=false
fi
echo 'Making directories:'
cd ${INPUT}
if $LINKS; then
files=`ls -LR | sed -n s/:$//p`
else
files=`find . -type d -print | sed '/^.$/d'`
fi
for file in $files; do
rm -rf $LIB/$file
if [ ! -d $LIB/$file ]
then mkdir $LIB/$file
fi
done
# treetops gets an alternating list
# of old directories to copy
# and the new directories to copy to.
treetops="${INPUT} ${LIB}"
if $LINKS; then
echo 'Making internal symbolic directory links'
for file in $files; do
dest=`ls -ld $file | sed -n 's/.*-> //p'`
if [ "$dest" ]; then
cwd=`pwd`
# In case $dest is relative, get to $file's dir first.
cd ${INPUT}
cd `echo ./$file | sed -n 's&[^/]*$&&p'`
# Check that the target directory exists.
# Redirections changed to avoid bug in sh on Ultrix.
(cd $dest) > /dev/null 2>&1
if [ $? = 0 ]; then
cd $dest
# X gets the dir that the link actually leads to.
x=`pwd`
# If link leads back into ${INPUT},
# make a similar link here.
if expr $x : "${INPUT}/.*" > /dev/null; then
# Y gets the actual target dir name, relative to ${INPUT}.
y=`echo $x | sed -n "s&${INPUT}/&&p"`
# DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
dots=`echo "$file" |
sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
echo $file '->' $dots$y ': Making link'
rm -fr ${LIB}/$file > /dev/null 2>&1
ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
else
# If the link is to outside ${INPUT},
# treat this directory as if it actually contained the files.
# This line used to have $dest instead of $x.
# $dest seemed to be wrong for links found in subdirectories
# of ${INPUT}. Does this change break anything?
treetops="$treetops $x ${LIB}/$file"
fi
fi
cd $cwd
fi
done
fi
# Completely replace <_int_varargs.h> with a file that defines
# va_list and gnuc_va_list
file=_int_varargs.h
if [ -r ${INPUT}/$file ]; then
echo Replacing $file
cat > ${LIB}/$file << EOF
/* This file was generated by fixinc.dgux. */
#ifndef __INT_VARARGS_H
#define __INT_VARARGS_H
#if defined(__m88k__) && defined (__DGUX__)
#ifndef __GNUC_VA_LIST
#define __GNUC_VA_LIST
typedef struct
{
int __va_arg; /* argument number */
int *__va_stk; /* start of args passed on stack */
int *__va_reg; /* start of args passed in regs */
} __gnuc_va_list;
#endif /* not __GNUC_VA_LIST */
#endif /* 88k && dgux */
#ifndef _VA_LIST_
#define _VA_LIST_
typedef __gnuc_va_list va_list;
#endif /* _VA_LIST_ */
#endif /* __INT_VARARGS_H */
EOF
chmod a+r ${LIB}/$file
fi
echo 'Removing unneeded directories:'
cd $LIB
files=`find . -type d -print | sort -r`
for file in $files; do
rmdir $LIB/$file > /dev/null 2>&1
done
if $LINKS; then
echo 'Making internal symbolic non-directory links'
cd ${INPUT}
files=`find . -type l -print`
for file in $files; do
dest=`ls -ld $file | sed -n 's/.*-> //p'`
if expr "$dest" : '[^/].*' > /dev/null; then
target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
if [ -f $target ]; then
ln -s $dest ${LIB}/$file >/dev/null 2>&1
fi
fi
done
fi
cd ${ORIG_DIR}
exit 0

View File

@ -1,190 +0,0 @@
#! /bin/sh
# Install modified versions of certain problematic Irix include files.
# Copyright (C) 1997 Free Software Foundation, Inc.
# Contributed by Brendan Kehoe (brendan@cygnus.com).
#
# This file is part of GNU CC.
#
# GNU CC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# GNU CC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU CC; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# See README-fixinc for more information.
# Directory containing the original header files.
INPUT=${2-${INPUT-/usr/include}}
# Fail if no arg to specify a directory for the output.
if [ x$1 = x ]
then echo fixincludes: no output directory specified
exit 1
fi
# Directory in which to store the results.
LIB=${1?"fixincludes: output directory not specified"}
# Make sure it exists.
if [ ! -d $LIB ]; then
mkdir $LIB || exit 1
fi
ORIG_DIR=`pwd`
# Make LIB absolute if it is relative.
# Don't do this if not necessary, since may screw up automounters.
case $LIB in
/*)
;;
*)
LIB=$ORIG_DIR/$LIB
;;
esac
echo 'Building fixincludes in ' ${LIB}
#
# Note: For Irix, we deliberately don't try to create the directory trees,
# since we only modify math.h, limits.h and unistd.h. If we
# ADD ANY OTHERS, the "Making directories:" and symlinks code from
# fixinc.svr4 may have to go back in.
# The Irix math.h defines struct exception, which conflicts with
# the class exception defined in the C++ file std/stdexcept.h. We
# redefine it to __math_exception. This is not a great fix, but I
# haven't been able to think of anything better.
file=math.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
sed -e '/struct exception/i\
#ifdef __cplusplus\
#define exception __math_exception\
#endif'\
-e '/struct exception/a\
#ifdef __cplusplus\
#undef exception\
#endif' $file_to_fix > /tmp/$base
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# In limits.h, put #ifndefs around things that are supposed to be defined
# in float.h to avoid redefinition errors if float.h is included first.
file=limits.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
sed -e '/[ ]FLT_MIN[ ]/i\
#ifndef FLT_MIN
'\
-e '/[ ]FLT_MIN[ ]/a\
#endif
'\
-e '/[ ]FLT_MAX[ ]/i\
#ifndef FLT_MAX
'\
-e '/[ ]FLT_MAX[ ]/a\
#endif
'\
-e '/[ ]FLT_DIG[ ]/i\
#ifndef FLT_DIG
'\
-e '/[ ]FLT_DIG[ ]/a\
#endif
'\
-e '/[ ]DBL_MIN[ ]/i\
#ifndef DBL_MIN
'\
-e '/[ ]DBL_MIN[ ]/a\
#endif
'\
-e '/[ ]DBL_MAX[ ]/i\
#ifndef DBL_MAX
'\
-e '/[ ]DBL_MAX[ ]/a\
#endif
'\
-e '/[ ]DBL_DIG[ ]/i\
#ifndef DBL_DIG
'\
-e '/[ ]DBL_DIG[ ]/a\
#endif
' $file_to_fix > /tmp/$base
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
# The Irix unistd.h will introduce a call to __vfork in its libc, but the
# function is never actually prototyped.
file=unistd.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
sed -e '/__vfork/i\
extern pid_t __vfork(void);'\
$file_to_fix > /tmp/$base
if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
true
else
echo Fixed $file_to_fix
rm -f ${LIB}/$file
cp /tmp/$base ${LIB}/$file
chmod a+r ${LIB}/$file
fi
rm -f /tmp/$base
fi
exit 0

View File

@ -1,257 +0,0 @@
#! /bin/sh
# Install modified versions of certain ANSI-incompatible
# native Sequent DYNIX/ptx System V Release 3.2 system include files.
# Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc.
# Contributed by Bill Burton <billb@progress.com>
# Portions adapted from fixinc.svr4 and fixincludes.
#
# This file is part of GNU CC.
#
# GNU CC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# GNU CC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU CC; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# This script munges the native include files provided with DYNIX/ptx
# so as to remove things which are violations of the ANSI C standard.
# This is done by first running fixinc.svr4 which does most of the
# work. A few includes have fixes made to them afterwards by this
# script. Once munged, the resulting new system include files are
# placed in a directory that GNU C will search *before* searching the
# /usr/include directory. This script should work properly for most
# DYNIX/ptx systems. For other types of systems, you should use the
# `fixincludes' script instead.
#
# See README-fixinc for more information.
# Directory containing the original header files.
INPUT=${2-${INPUT-/usr/include}}
# Fail if no arg to specify a directory for the output.
if [ x$1 = x ]
then echo fixincludes: no output directory specified
exit 1
fi
# Directory in which to store the results.
LIB=${1?"fixincludes: output directory not specified"}
# Make sure it exists.
if [ ! -d $LIB ]; then
mkdir $LIB || exit 1
fi
ORIG_DIR=`pwd`
# Make LIB absolute if it is relative.
# Don't do this if not necessary, since may screw up automounters.
case $LIB in
/*)
;;
*)
LIB=$ORIG_DIR/$LIB
;;
esac
echo 'Running fixinc.svr4'
# DYNIX/ptx has dirname so this is no problem
`dirname $0`/fixinc.svr4 $*
echo 'Finished fixinc.svr4'
echo 'Building fixincludes in ' ${LIB}
# Copied from fixincludes.
# Don't use or define the name va_list in stdio.h.
# This is for ANSI and also to interoperate properly with gcc's varargs.h.
file=stdio.h
if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
chmod +w ${LIB}/$file 2>/dev/null
chmod a+r ${LIB}/$file 2>/dev/null
fi
if [ -r ${LIB}/$file ]; then
echo Fixing $file, use of va_list
# Arrange for stdio.h to use stdarg.h to define __gnuc_va_list
(echo "#define __need___va_list"
echo "#include <stdarg.h>") > ${LIB}/${file}.sed
# Use __gnuc_va_list in arg types in place of va_list.
# On 386BSD use __gnuc_va_list instead of _VA_LIST_. We're hoping the
# trailing parentheses and semicolon save all other systems from this.
# Define __va_list__ (something harmless and unused) instead of va_list.
# Don't claim to have defined va_list.
sed -e 's@ va_list @ __gnuc_va_list @' \
-e 's@ va_list)@ __gnuc_va_list)@' \
-e 's@ _VA_LIST_));@ __gnuc_va_list));@' \
-e 's@ va_list@ __va_list__@' \
-e 's@\*va_list@*__va_list__@' \
-e 's@ __va_list)@ __gnuc_va_list)@' \
-e 's@_NEED___VA_LIST@_NEED___Va_LIST@' \
-e 's@VA_LIST@DUMMY_VA_LIST@' \
-e 's@_NEED___Va_LIST@_NEED___VA_LIST@' \
${LIB}/$file >> ${LIB}/${file}.sed
rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
if cmp $file ${LIB}/$file >/dev/null 2>&1; then
rm -f ${LIB}/$file
fi
fi
# In pwd.h, PTX 1.x needs stdio.h included since FILE * was added in a
# prototype later on in the file.
file=pwd.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep stdio $file_to_fix > /dev/null; then
true
else
sed -e '/#include <sys\/types\.h>/a\
\
#if defined(__STDC__) || defined(__cplusplus)\
#include <stdio.h>\
#endif /* __STDC__ */
' \
$file_to_fix > ${LIB}/${file}.sed
rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
echo Fixed $file_to_fix
fi
fi
# Copied from fixincludes.
# math.h puts the declaration of matherr before the definition
# of struct exception, so the prototype (added by fixproto) causes havoc.
file=math.h
if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
chmod +w ${LIB}/$file 2>/dev/null
chmod a+r ${LIB}/$file 2>/dev/null
fi
if [ -r ${LIB}/$file ]; then
echo Fixing $file, matherr declaration
sed -e '/^struct exception/,$b' \
-e '/matherr/i\
struct exception;
'\
${LIB}/$file > ${LIB}/${file}.sed
rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
if cmp $file ${LIB}/$file >/dev/null 2>&1; then
rm -f ${LIB}/$file
fi
fi
# In netinet/in.h, the network byte swapping asm functions supported by the
# native cc compiler on PTX 1.x and 2.x is not supported in gcc. Instead,
# include <sys/byteorder.h> written out by the fixinc.svr4 script which has
# these same routines written in an asm format supported by gcc.
file=netinet/in.h
base=`basename $file`
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep __GNUC__ $file_to_fix > /dev/null; then
true
else
sed -e '/#define NETSWAP/a\
\
#if defined (__GNUC__) || defined (__GNUG__)\
#include <sys/byteorder.h>\
#else /* not __GNUC__ */
' \
-e '/#endif[ ]*\/\* NETSWAP \*\//i\
#endif /* not __GNUC__ */
' \
$file_to_fix > ${LIB}/${file}.sed
rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
echo Fixed $file_to_fix
fi
fi
# /usr/include/sys/mc_param.h has an embedded asm for the cpuid instruction
# on the P5. This is not used by anything else so we ifdef it out.
file=sys/mc_param.h
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep __GNUC__ $file_to_fix > /dev/null; then
true
else
sed -e '/__asm/,/}/{
/__asm/i\
#if !defined (__GNUC__) && !defined (__GNUG__)
/}/a\
#endif
}' \
$file_to_fix > ${LIB}/${file}.sed
rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
echo Fixed $file_to_fix
fi
fi
# /usr/include/sys/mc_param.h has an embedded asm for the cpuid instruction
# on the P5. This is not used by anything else so we ifdef it out.
file=sys/mc_param.h
if [ -r ${LIB}/$file ]; then
file_to_fix=${LIB}/$file
else
if [ -r ${INPUT}/$file ]; then
file_to_fix=${INPUT}/$file
else
file_to_fix=""
fi
fi
if [ \! -z "$file_to_fix" ]; then
echo Checking $file_to_fix
if grep __GNUC__ $file_to_fix > /dev/null; then
true
else
sed -e '/__asm/,/}/{
/__asm/i\
#if !defined (__GNUC__) && !defined (__GNUG__)
/}/a\
#endif
}' \
$file_to_fix > ${LIB}/${file}.sed
rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
echo Fixed $file_to_fix
fi
fi
exit 0

Some files were not shown because too many files have changed in this diff Show More