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:
parent
3aee8fc51e
commit
39d9eb47d8
40
gnu/dist/bc/Test/BUG.bc
vendored
40
gnu/dist/bc/Test/BUG.bc
vendored
@ -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 */
|
565
gnu/dist/bc/Test/TESTS.bc
vendored
565
gnu/dist/bc/Test/TESTS.bc
vendored
@ -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
|
||||
|
||||
|
14
gnu/dist/bc/Test/array.b
vendored
14
gnu/dist/bc/Test/array.b
vendored
@ -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);
|
||||
|
30
gnu/dist/bc/Test/arrayp.b
vendored
30
gnu/dist/bc/Test/arrayp.b
vendored
@ -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
|
||||
|
16
gnu/dist/bc/Test/aryprm.b
vendored
16
gnu/dist/bc/Test/aryprm.b
vendored
@ -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[]);
|
5
gnu/dist/bc/Test/atan.b
vendored
5
gnu/dist/bc/Test/atan.b
vendored
@ -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
|
109
gnu/dist/bc/Test/checklib.b
vendored
109
gnu/dist/bc/Test/checklib.b
vendored
@ -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)
|
||||
}
|
||||
|
8
gnu/dist/bc/Test/div.b
vendored
8
gnu/dist/bc/Test/div.b
vendored
@ -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
|
||||
|
3
gnu/dist/bc/Test/exp.b
vendored
3
gnu/dist/bc/Test/exp.b
vendored
@ -1,3 +0,0 @@
|
||||
for (a=0; a<150; a++) x=e(a)
|
||||
x
|
||||
quit
|
13
gnu/dist/bc/Test/fact.b
vendored
13
gnu/dist/bc/Test/fact.b
vendored
@ -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
|
||||
|
6
gnu/dist/bc/Test/jn.b
vendored
6
gnu/dist/bc/Test/jn.b
vendored
@ -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
|
3
gnu/dist/bc/Test/ln.b
vendored
3
gnu/dist/bc/Test/ln.b
vendored
@ -1,3 +0,0 @@
|
||||
for (a=1; a<10000000000000000000000000000; a = a*2) x=l(a)
|
||||
x
|
||||
quit
|
7
gnu/dist/bc/Test/mul.b
vendored
7
gnu/dist/bc/Test/mul.b
vendored
@ -1,7 +0,0 @@
|
||||
scale = 20
|
||||
for (i=0; i<1000; i++) {
|
||||
for (j=1; j<100; j++) b=i*j
|
||||
}
|
||||
b
|
||||
quit
|
||||
|
3
gnu/dist/bc/Test/raise.b
vendored
3
gnu/dist/bc/Test/raise.b
vendored
@ -1,3 +0,0 @@
|
||||
for (i=0; i<1000; i++) a = 2^i;
|
||||
a
|
||||
quit
|
87
gnu/dist/bc/Test/signum
vendored
87
gnu/dist/bc/Test/signum
vendored
@ -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
|
||||
"
|
5
gnu/dist/bc/Test/sine.b
vendored
5
gnu/dist/bc/Test/sine.b
vendored
@ -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
|
13
gnu/dist/bc/Test/sqrt.b
vendored
13
gnu/dist/bc/Test/sqrt.b
vendored
@ -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
|
13
gnu/dist/bc/Test/sqrt1.b
vendored
13
gnu/dist/bc/Test/sqrt1.b
vendored
@ -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
|
10
gnu/dist/bc/Test/sqrt2.b
vendored
10
gnu/dist/bc/Test/sqrt2.b
vendored
@ -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
|
47
gnu/dist/bc/Test/testfn.b
vendored
47
gnu/dist/bc/Test/testfn.b
vendored
@ -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;
|
||||
|
||||
}
|
14
gnu/dist/bc/Test/timetest
vendored
14
gnu/dist/bc/Test/timetest
vendored
@ -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
|
435
gnu/dist/bc/doc/dc.info
vendored
435
gnu/dist/bc/doc/dc.info
vendored
@ -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
|
4506
gnu/dist/bc/doc/texinfo.tex
vendored
4506
gnu/dist/bc/doc/texinfo.tex
vendored
File diff suppressed because it is too large
Load Diff
18
gnu/dist/bfd/configure.bat
vendored
18
gnu/dist/bfd/configure.bat
vendored
@ -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
|
142
gnu/dist/bfd/configure.com
vendored
142
gnu/dist/bfd/configure.com
vendored
@ -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'"
|
||||
|
95
gnu/dist/bfd/doc/bfd.info
vendored
95
gnu/dist/bfd/doc/bfd.info
vendored
@ -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
|
1011
gnu/dist/bfd/doc/bfd.info-1
vendored
1011
gnu/dist/bfd/doc/bfd.info-1
vendored
File diff suppressed because it is too large
Load Diff
1113
gnu/dist/bfd/doc/bfd.info-2
vendored
1113
gnu/dist/bfd/doc/bfd.info-2
vendored
File diff suppressed because it is too large
Load Diff
1029
gnu/dist/bfd/doc/bfd.info-3
vendored
1029
gnu/dist/bfd/doc/bfd.info-3
vendored
File diff suppressed because it is too large
Load Diff
1248
gnu/dist/bfd/doc/bfd.info-4
vendored
1248
gnu/dist/bfd/doc/bfd.info-4
vendored
File diff suppressed because it is too large
Load Diff
663
gnu/dist/bfd/doc/bfd.info-5
vendored
663
gnu/dist/bfd/doc/bfd.info-5
vendored
@ -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.
|
||||
|
1040
gnu/dist/bfd/doc/bfd.info-6
vendored
1040
gnu/dist/bfd/doc/bfd.info-6
vendored
File diff suppressed because it is too large
Load Diff
5
gnu/dist/bfd/doc/makefile.vms
vendored
5
gnu/dist/bfd/doc/makefile.vms
vendored
@ -1,5 +0,0 @@
|
||||
CFLAGS = /noopt/include=([],[-],[-.-.include])
|
||||
LDFLAGS = /nomap
|
||||
LDLIBS = ,sys$$library:vaxcrtl.olb/lib
|
||||
|
||||
all: chew.exe
|
49
gnu/dist/bfd/makefile.dos
vendored
49
gnu/dist/bfd/makefile.dos
vendored
@ -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
|
57
gnu/dist/bfd/makefile.vms
vendored
57
gnu/dist/bfd/makefile.vms
vendored
@ -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;
|
86
gnu/dist/bfd/mpw-config.in
vendored
86
gnu/dist/bfd/mpw-config.in
vendored
@ -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
|
81
gnu/dist/bfd/mpw-make.sed
vendored
81
gnu/dist/bfd/mpw-make.sed
vendored
@ -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
|
57
gnu/dist/binutils/binutils.info
vendored
57
gnu/dist/binutils/binutils.info
vendored
@ -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
|
1374
gnu/dist/binutils/binutils.info-1
vendored
1374
gnu/dist/binutils/binutils.info-1
vendored
File diff suppressed because it is too large
Load Diff
891
gnu/dist/binutils/binutils.info-2
vendored
891
gnu/dist/binutils/binutils.info-2
vendored
@ -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.
|
||||
|
||||
|
63
gnu/dist/binutils/configure.bat
vendored
63
gnu/dist/binutils/configure.bat
vendored
@ -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
|
||||
|
78
gnu/dist/binutils/configure.com
vendored
78
gnu/dist/binutils/configure.com
vendored
@ -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'"
|
42
gnu/dist/binutils/mac-binutils.r
vendored
42
gnu/dist/binutils/mac-binutils.r
vendored
@ -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 */
|
93
gnu/dist/binutils/makefile.vms
vendored
93
gnu/dist/binutils/makefile.vms
vendored
@ -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;
|
27
gnu/dist/binutils/mpw-config.in
vendored
27
gnu/dist/binutils/mpw-config.in
vendored
@ -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
|
115
gnu/dist/binutils/mpw-make.sed
vendored
115
gnu/dist/binutils/mpw-make.sed
vendored
@ -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//
|
||||
|
17
gnu/dist/configure.bat
vendored
17
gnu/dist/configure.bat
vendored
@ -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 ..
|
659
gnu/dist/etc/cfg-paper.info
vendored
659
gnu/dist/etc/cfg-paper.info
vendored
@ -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
|
64
gnu/dist/etc/configure.info
vendored
64
gnu/dist/etc/configure.info
vendored
@ -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
|
1174
gnu/dist/etc/configure.info-1
vendored
1174
gnu/dist/etc/configure.info-1
vendored
File diff suppressed because it is too large
Load Diff
566
gnu/dist/etc/configure.info-2
vendored
566
gnu/dist/etc/configure.info-2
vendored
@ -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.
|
||||
|
||||
|
82
gnu/dist/etc/standards.info
vendored
82
gnu/dist/etc/standards.info
vendored
@ -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
|
1891
gnu/dist/etc/standards.info-1
vendored
1891
gnu/dist/etc/standards.info-1
vendored
File diff suppressed because it is too large
Load Diff
1216
gnu/dist/etc/standards.info-2
vendored
1216
gnu/dist/etc/standards.info-2
vendored
File diff suppressed because it is too large
Load Diff
679
gnu/dist/etc/standards.info-3
vendored
679
gnu/dist/etc/standards.info-3
vendored
@ -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.
|
||||
|
||||
|
248
gnu/dist/gas/README-vms
vendored
248
gnu/dist/gas/README-vms
vendored
@ -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
127
gnu/dist/gas/conf.in
vendored
@ -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
|
186
gnu/dist/gas/config-gas.com
vendored
186
gnu/dist/gas/config-gas.com
vendored
@ -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
|
1
gnu/dist/gas/config/arm-big.mt
vendored
1
gnu/dist/gas/config/arm-big.mt
vendored
@ -1 +0,0 @@
|
||||
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=1
|
1
gnu/dist/gas/config/arm-lit.mt
vendored
1
gnu/dist/gas/config/arm-lit.mt
vendored
@ -1 +0,0 @@
|
||||
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=0
|
93
gnu/dist/gas/config/go32.cfg
vendored
93
gnu/dist/gas/config/go32.cfg
vendored
@ -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
|
1
gnu/dist/gas/config/i386coff.mt
vendored
1
gnu/dist/gas/config/i386coff.mt
vendored
@ -1 +0,0 @@
|
||||
TDEFINES=-DI386COFF
|
1
gnu/dist/gas/config/m68kcoff.mt
vendored
1
gnu/dist/gas/config/m68kcoff.mt
vendored
@ -1 +0,0 @@
|
||||
TDEFINES=-DM68KCOFF
|
1
gnu/dist/gas/config/m88kcoff.mt
vendored
1
gnu/dist/gas/config/m88kcoff.mt
vendored
@ -1 +0,0 @@
|
||||
TDEFINES=-DM88KCOFF
|
1
gnu/dist/gas/config/mips-big.mt
vendored
1
gnu/dist/gas/config/mips-big.mt
vendored
@ -1 +0,0 @@
|
||||
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=1
|
1
gnu/dist/gas/config/mips-lit.mt
vendored
1
gnu/dist/gas/config/mips-lit.mt
vendored
@ -1 +0,0 @@
|
||||
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=0
|
1
gnu/dist/gas/config/ppc-big.mt
vendored
1
gnu/dist/gas/config/ppc-big.mt
vendored
@ -1 +0,0 @@
|
||||
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=1
|
1
gnu/dist/gas/config/ppc-lit.mt
vendored
1
gnu/dist/gas/config/ppc-lit.mt
vendored
@ -1 +0,0 @@
|
||||
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=0
|
1
gnu/dist/gas/config/ppc-sol.mt
vendored
1
gnu/dist/gas/config/ppc-sol.mt
vendored
@ -1 +0,0 @@
|
||||
TDEFINES=-DTARGET_BYTES_BIG_ENDIAN=0 -DTARGET_SOLARIS_COMMENT
|
1
gnu/dist/gas/config/sco5.mt
vendored
1
gnu/dist/gas/config/sco5.mt
vendored
@ -1 +0,0 @@
|
||||
TDEFINES=-DSCO_ELF
|
57
gnu/dist/gas/configure.bat
vendored
57
gnu/dist/gas/configure.bat
vendored
@ -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
|
311
gnu/dist/gas/doc/as.info
vendored
311
gnu/dist/gas/doc/as.info
vendored
@ -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
|
1345
gnu/dist/gas/doc/as.info-1
vendored
1345
gnu/dist/gas/doc/as.info-1
vendored
File diff suppressed because it is too large
Load Diff
1368
gnu/dist/gas/doc/as.info-2
vendored
1368
gnu/dist/gas/doc/as.info-2
vendored
File diff suppressed because it is too large
Load Diff
1589
gnu/dist/gas/doc/as.info-3
vendored
1589
gnu/dist/gas/doc/as.info-3
vendored
File diff suppressed because it is too large
Load Diff
1273
gnu/dist/gas/doc/as.info-4
vendored
1273
gnu/dist/gas/doc/as.info-4
vendored
File diff suppressed because it is too large
Load Diff
1270
gnu/dist/gas/doc/as.info-5
vendored
1270
gnu/dist/gas/doc/as.info-5
vendored
File diff suppressed because it is too large
Load Diff
1051
gnu/dist/gas/doc/as.info-6
vendored
1051
gnu/dist/gas/doc/as.info-6
vendored
File diff suppressed because it is too large
Load Diff
941
gnu/dist/gas/doc/as.info-7
vendored
941
gnu/dist/gas/doc/as.info-7
vendored
@ -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.
|
||||
|
||||
|
1086
gnu/dist/gas/doc/gasp.info
vendored
1086
gnu/dist/gas/doc/gasp.info
vendored
File diff suppressed because it is too large
Load Diff
10
gnu/dist/gas/link.cmd
vendored
10
gnu/dist/gas/link.cmd
vendored
@ -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
42
gnu/dist/gas/mac-as.r
vendored
@ -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 */
|
153
gnu/dist/gas/make-gas.com
vendored
153
gnu/dist/gas/make-gas.com
vendored
@ -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)'
|
75
gnu/dist/gas/makefile.vms
vendored
75
gnu/dist/gas/makefile.vms
vendored
@ -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;
|
115
gnu/dist/gas/mpw-config.in
vendored
115
gnu/dist/gas/mpw-config.in
vendored
@ -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
|
100
gnu/dist/gas/mpw-make.sed
vendored
100
gnu/dist/gas/mpw-make.sed
vendored
@ -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/^/#/
|
47
gnu/dist/gcc/config/msdos/configur.bat
vendored
47
gnu/dist/gcc/config/msdos/configur.bat
vendored
@ -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
|
13
gnu/dist/gcc/config/t-gnu
vendored
13
gnu/dist/gcc/config/t-gnu
vendored
@ -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
|
16
gnu/dist/gcc/config/t-linux
vendored
16
gnu/dist/gcc/config/t-linux
vendored
@ -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 =
|
11
gnu/dist/gcc/config/t-linux-aout
vendored
11
gnu/dist/gcc/config/t-linux-aout
vendored
@ -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 =
|
2
gnu/dist/gcc/config/t-linux-gnulibc1
vendored
2
gnu/dist/gcc/config/t-linux-gnulibc1
vendored
@ -1,2 +0,0 @@
|
||||
# We are building for the Linux C library 5.
|
||||
T_CFLAGS = -DUSE_GNULIBC_1
|
6
gnu/dist/gcc/config/t-rtems
vendored
6
gnu/dist/gcc/config/t-rtems
vendored
@ -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 =
|
||||
|
8
gnu/dist/gcc/config/t-svr4
vendored
8
gnu/dist/gcc/config/t-svr4
vendored
@ -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
|
58
gnu/dist/gcc/config/winnt/config-nt.bat
vendored
58
gnu/dist/gcc/config/winnt/config-nt.bat
vendored
@ -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
|
21
gnu/dist/gcc/configure.bat
vendored
21
gnu/dist/gcc/configure.bat
vendored
@ -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
|
||||
|
11
gnu/dist/gcc/cp/mpw-config.in
vendored
11
gnu/dist/gcc/cp/mpw-config.in
vendored
@ -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
|
112
gnu/dist/gcc/cp/mpw-make.sed
vendored
112
gnu/dist/gcc/cp/mpw-make.sed
vendored
@ -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'"'/
|
185
gnu/dist/gcc/fixinc.dgux
vendored
185
gnu/dist/gcc/fixinc.dgux
vendored
@ -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
|
||||
|
190
gnu/dist/gcc/fixinc.irix
vendored
190
gnu/dist/gcc/fixinc.irix
vendored
@ -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
|
257
gnu/dist/gcc/fixinc.ptx
vendored
257
gnu/dist/gcc/fixinc.ptx
vendored
@ -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
Loading…
Reference in New Issue
Block a user