Compare commits

...

398 Commits

Author SHA1 Message Date
gdbadmin
33f3bed3f6 *** empty log message *** 2005-11-03 00:00:33 +00:00
gdbadmin
774ad06287 *** empty log message *** 2005-11-02 00:00:33 +00:00
gdbadmin
70c850011a *** empty log message *** 2005-11-01 00:00:03 +00:00
gdbadmin
7ac34c91b7 *** empty log message *** 2005-10-31 00:00:03 +00:00
gdbadmin
d3af445f38 *** empty log message *** 2005-10-30 00:00:05 +00:00
gdbadmin
15e0f6ce30 *** empty log message *** 2005-10-29 00:00:34 +00:00
gdbadmin
77dbaddf43 *** empty log message *** 2005-10-28 00:00:38 +00:00
gdbadmin
9aa6108aac *** empty log message *** 2005-10-27 00:00:34 +00:00
gdbadmin
6e67147d88 *** empty log message *** 2005-10-26 00:00:33 +00:00
gdbadmin
6ce1e3de4a *** empty log message *** 2005-10-25 00:00:03 +00:00
gdbadmin
19595032ab *** empty log message *** 2005-10-24 00:00:34 +00:00
gdbadmin
f377a0bf6a *** empty log message *** 2005-10-23 00:00:07 +00:00
gdbadmin
1a20006165 *** empty log message *** 2005-10-22 00:00:32 +00:00
gdbadmin
f9389b7d82 *** empty log message *** 2005-10-21 00:00:35 +00:00
gdbadmin
5598f087d8 *** empty log message *** 2005-10-20 00:00:34 +00:00
gdbadmin
d2a4e4f3cf *** empty log message *** 2005-10-19 00:00:32 +00:00
gdbadmin
f2f467832e *** empty log message *** 2005-10-18 00:00:03 +00:00
gdbadmin
81566c2afe *** empty log message *** 2005-10-17 00:00:33 +00:00
gdbadmin
6298e71a20 *** empty log message *** 2005-10-16 00:00:33 +00:00
gdbadmin
caa1824ac6 *** empty log message *** 2005-10-15 00:00:33 +00:00
gdbadmin
e12c9dab1b *** empty log message *** 2005-10-14 00:00:03 +00:00
gdbadmin
6999da306d *** empty log message *** 2005-10-13 00:00:08 +00:00
gdbadmin
84b554ded4 *** empty log message *** 2005-10-12 00:00:33 +00:00
gdbadmin
ad7834495a *** empty log message *** 2005-10-11 00:00:33 +00:00
gdbadmin
cf6fa5ab0c *** empty log message *** 2005-10-10 00:00:03 +00:00
gdbadmin
0fee4a94f8 *** empty log message *** 2005-10-09 00:00:33 +00:00
gdbadmin
45b6676311 *** empty log message *** 2005-10-08 00:00:35 +00:00
gdbadmin
351436a163 *** empty log message *** 2005-10-07 00:00:04 +00:00
gdbadmin
83df7248f1 *** empty log message *** 2005-10-06 00:00:02 +00:00
gdbadmin
14366771be *** empty log message *** 2005-10-05 00:00:03 +00:00
gdbadmin
efc2d4fb7c *** empty log message *** 2005-10-04 00:00:33 +00:00
gdbadmin
e3d28aea8b *** empty log message *** 2005-10-03 00:00:32 +00:00
gdbadmin
f92108f05e *** empty log message *** 2005-10-02 03:00:32 +00:00
gdbadmin
4e26676633 *** empty log message *** 2005-10-01 00:00:33 +00:00
gdbadmin
7b78e1fd68 *** empty log message *** 2005-09-30 00:00:06 +00:00
gdbadmin
d48d94bce9 *** empty log message *** 2005-09-29 00:00:06 +00:00
gdbadmin
250bf15de5 *** empty log message *** 2005-09-28 00:00:35 +00:00
gdbadmin
85850c5e97 *** empty log message *** 2005-09-27 00:00:34 +00:00
gdbadmin
ffe1a92752 *** empty log message *** 2005-09-26 00:00:34 +00:00
gdbadmin
c63a0c6cc3 *** empty log message *** 2005-09-25 00:00:03 +00:00
gdbadmin
7a1dcc791a *** empty log message *** 2005-09-24 00:00:04 +00:00
gdbadmin
f77c0963f4 *** empty log message *** 2005-09-23 00:00:33 +00:00
gdbadmin
5b39ea9ed6 *** empty log message *** 2005-09-22 00:00:33 +00:00
gdbadmin
f944f0f160 *** empty log message *** 2005-09-21 00:00:39 +00:00
gdbadmin
825239cd2e *** empty log message *** 2005-09-20 00:00:08 +00:00
gdbadmin
34a5019b77 *** empty log message *** 2005-09-19 00:00:37 +00:00
gdbadmin
575e8973a6 *** empty log message *** 2005-09-18 00:00:04 +00:00
gdbadmin
3bef865647 *** empty log message *** 2005-09-17 00:00:35 +00:00
gdbadmin
5f962dc64d *** empty log message *** 2005-09-16 00:00:04 +00:00
gdbadmin
01e84e49ce *** empty log message *** 2005-09-15 00:00:32 +00:00
gdbadmin
49b72713a8 *** empty log message *** 2005-09-14 00:00:40 +00:00
gdbadmin
fcf87f483f *** empty log message *** 2005-09-13 00:00:02 +00:00
gdbadmin
f2d1c8411c *** empty log message *** 2005-09-12 00:00:32 +00:00
gdbadmin
19b7c92661 *** empty log message *** 2005-09-11 00:00:04 +00:00
gdbadmin
92a9e2983d *** empty log message *** 2005-09-10 00:00:04 +00:00
gdbadmin
84c162b08e *** empty log message *** 2005-09-09 00:00:34 +00:00
gdbadmin
dc5e747d75 *** empty log message *** 2005-09-08 00:00:33 +00:00
gdbadmin
34b6103448 *** empty log message *** 2005-09-07 00:00:08 +00:00
gdbadmin
bfaa00f467 *** empty log message *** 2005-09-06 00:00:37 +00:00
gdbadmin
6ed8af5205 *** empty log message *** 2005-09-05 00:00:07 +00:00
gdbadmin
3cb2f68280 *** empty log message *** 2005-09-04 00:00:39 +00:00
gdbadmin
67416ccb9a *** empty log message *** 2005-09-03 00:00:35 +00:00
gdbadmin
3701b3b242 *** empty log message *** 2005-09-02 00:00:09 +00:00
gdbadmin
aeba3ec262 *** empty log message *** 2005-09-01 00:00:04 +00:00
gdbadmin
e3f4cc273c *** empty log message *** 2005-08-31 00:00:33 +00:00
gdbadmin
814491d4bb *** empty log message *** 2005-08-30 00:00:03 +00:00
gdbadmin
427087c17c *** empty log message *** 2005-08-29 00:00:33 +00:00
gdbadmin
819208a579 *** empty log message *** 2005-08-28 00:00:32 +00:00
gdbadmin
8e44e9986d *** empty log message *** 2005-08-27 00:00:05 +00:00
gdbadmin
63646aa3d1 *** empty log message *** 2005-08-26 00:00:34 +00:00
gdbadmin
19af64d652 *** empty log message *** 2005-08-25 00:00:01 +00:00
gdbadmin
6d14ff066d *** empty log message *** 2005-08-24 00:00:03 +00:00
gdbadmin
62a1b667a7 *** empty log message *** 2005-08-23 00:00:34 +00:00
gdbadmin
c979c2c461 *** empty log message *** 2005-08-22 00:00:03 +00:00
gdbadmin
761a4c21a1 *** empty log message *** 2005-08-21 00:00:34 +00:00
gdbadmin
280e9b4c84 *** empty log message *** 2005-08-20 00:00:34 +00:00
gdbadmin
e3b9b206c4 *** empty log message *** 2005-08-19 00:00:02 +00:00
gdbadmin
31012ed2b4 *** empty log message *** 2005-08-18 00:00:33 +00:00
gdbadmin
908b3c157f *** empty log message *** 2005-08-17 00:00:34 +00:00
gdbadmin
98d4125d83 *** empty log message *** 2005-08-16 00:00:37 +00:00
gdbadmin
060333f90d *** empty log message *** 2005-08-15 00:00:33 +00:00
gdbadmin
798cd03423 *** empty log message *** 2005-08-14 00:00:02 +00:00
gdbadmin
d14bd53898 *** empty log message *** 2005-08-13 00:00:04 +00:00
gdbadmin
f1511cbb51 *** empty log message *** 2005-08-12 00:00:03 +00:00
gdbadmin
26887b83b7 *** empty log message *** 2005-08-11 00:00:33 +00:00
gdbadmin
e3f40fe898 *** empty log message *** 2005-08-10 00:00:36 +00:00
gdbadmin
1107039795 *** empty log message *** 2005-08-09 00:00:33 +00:00
gdbadmin
dc210e930a *** empty log message *** 2005-08-08 00:00:02 +00:00
gdbadmin
f69f1f6c5c *** empty log message *** 2005-08-07 00:00:07 +00:00
gdbadmin
7da920a2df *** empty log message *** 2005-08-06 00:00:35 +00:00
gdbadmin
6a0c041769 *** empty log message *** 2005-08-05 00:00:06 +00:00
gdbadmin
2dea15f94a *** empty log message *** 2005-08-04 00:00:37 +00:00
gdbadmin
b61a0a358a *** empty log message *** 2005-08-03 00:00:33 +00:00
gdbadmin
6a97e3a97d *** empty log message *** 2005-08-02 00:00:03 +00:00
gdbadmin
b28dec139b *** empty log message *** 2005-08-01 00:00:34 +00:00
gdbadmin
609dcb4414 *** empty log message *** 2005-07-31 00:00:05 +00:00
gdbadmin
1f09c6fa04 *** empty log message *** 2005-07-30 00:00:37 +00:00
gdbadmin
10e5936256 *** empty log message *** 2005-07-29 00:00:11 +00:00
gdbadmin
59a83214ba *** empty log message *** 2005-07-28 00:00:11 +00:00
gdbadmin
8a3fe70ce7 *** empty log message *** 2005-07-27 00:00:36 +00:00
gdbadmin
ee7bcdaaa4 *** empty log message *** 2005-07-26 00:00:33 +00:00
gdbadmin
81ff659a94 *** empty log message *** 2005-07-25 00:00:33 +00:00
gdbadmin
0ad535c76c *** empty log message *** 2005-07-24 00:00:35 +00:00
gdbadmin
8263058341 *** empty log message *** 2005-07-23 00:00:34 +00:00
gdbadmin
17d3bc9b52 *** empty log message *** 2005-07-22 00:00:35 +00:00
gdbadmin
a0a12c678a *** empty log message *** 2005-07-21 00:00:04 +00:00
gdbadmin
6e988f3a41 *** empty log message *** 2005-07-20 00:00:42 +00:00
gdbadmin
f4719cf6c6 *** empty log message *** 2005-07-19 00:00:04 +00:00
gdbadmin
376fe7d43a *** empty log message *** 2005-07-18 00:00:33 +00:00
gdbadmin
67629d2658 *** empty log message *** 2005-07-17 00:00:06 +00:00
gdbadmin
a4c4068b08 *** empty log message *** 2005-07-16 00:00:03 +00:00
gdbadmin
0f962910b7 *** empty log message *** 2005-07-15 00:00:33 +00:00
gdbadmin
eef6cd1945 *** empty log message *** 2005-07-14 00:00:03 +00:00
gdbadmin
3829729efc *** empty log message *** 2005-07-13 00:00:33 +00:00
gdbadmin
1de681cd7f *** empty log message *** 2005-07-12 00:00:03 +00:00
gdbadmin
8f09208c5e *** empty log message *** 2005-07-11 00:00:33 +00:00
gdbadmin
15b5cdbac1 *** empty log message *** 2005-07-10 00:00:02 +00:00
gdbadmin
64ec18fb23 *** empty log message *** 2005-07-09 00:00:33 +00:00
gdbadmin
a81b506c36 *** empty log message *** 2005-07-08 00:00:33 +00:00
gdbadmin
81ff7e785a *** empty log message *** 2005-07-07 00:00:33 +00:00
gdbadmin
25edec052d *** empty log message *** 2005-07-06 00:00:34 +00:00
gdbadmin
187c5dbf46 *** empty log message *** 2005-07-05 00:00:05 +00:00
gdbadmin
40cf5da74a *** empty log message *** 2005-07-04 00:00:02 +00:00
gdbadmin
0bef388a9a *** empty log message *** 2005-07-03 00:00:33 +00:00
gdbadmin
d3609503ee *** empty log message *** 2005-07-02 00:00:32 +00:00
gdbadmin
8241adb5e8 *** empty log message *** 2005-07-01 00:00:33 +00:00
gdbadmin
ce224f8de3 *** empty log message *** 2005-06-30 00:00:34 +00:00
gdbadmin
1237b68d79 *** empty log message *** 2005-06-29 00:00:09 +00:00
gdbadmin
1d666aa8c0 *** empty log message *** 2005-06-28 00:00:03 +00:00
gdbadmin
30d760a668 *** empty log message *** 2005-06-27 00:00:02 +00:00
gdbadmin
72e0f3d166 *** empty log message *** 2005-06-26 00:00:32 +00:00
gdbadmin
69e97757b4 *** empty log message *** 2005-06-25 00:00:03 +00:00
gdbadmin
ff5e5c47af *** empty log message *** 2005-06-24 00:00:36 +00:00
gdbadmin
4750c686fd *** empty log message *** 2005-06-23 00:00:33 +00:00
gdbadmin
50e46ab12f *** empty log message *** 2005-06-22 00:00:33 +00:00
gdbadmin
c3f522ff30 *** empty log message *** 2005-06-21 00:00:34 +00:00
gdbadmin
1ccf82ae72 *** empty log message *** 2005-06-20 00:00:04 +00:00
gdbadmin
e516ee9b04 *** empty log message *** 2005-06-19 00:00:02 +00:00
gdbadmin
29c96b7ca9 *** empty log message *** 2005-06-18 00:00:34 +00:00
gdbadmin
df04bc6624 *** empty log message *** 2005-06-17 00:00:36 +00:00
gdbadmin
7728d47ec6 *** empty log message *** 2005-06-16 00:00:04 +00:00
gdbadmin
99b474a84f *** empty log message *** 2005-06-15 00:00:33 +00:00
gdbadmin
80ffd31ef4 *** empty log message *** 2005-06-14 00:00:03 +00:00
gdbadmin
096dbc48ad *** empty log message *** 2005-06-13 00:00:33 +00:00
gdbadmin
fbf11e9327 *** empty log message *** 2005-06-12 00:00:35 +00:00
gdbadmin
74041ec60b *** empty log message *** 2005-06-11 00:00:05 +00:00
gdbadmin
3f93bacaac *** empty log message *** 2005-06-10 00:00:07 +00:00
gdbadmin
82ddf049cd *** empty log message *** 2005-06-09 00:00:33 +00:00
gdbadmin
bd40d3e996 *** empty log message *** 2005-06-08 00:00:08 +00:00
gdbadmin
73a6e94d67 *** empty log message *** 2005-06-07 00:00:35 +00:00
gdbadmin
f30fabc50d *** empty log message *** 2005-06-06 00:00:34 +00:00
gdbadmin
bd7756e4c4 *** empty log message *** 2005-06-05 00:00:05 +00:00
gdbadmin
08e1c1be82 *** empty log message *** 2005-06-04 00:00:05 +00:00
gdbadmin
48a77dd9c9 *** empty log message *** 2005-06-03 00:00:34 +00:00
gdbadmin
019c688371 *** empty log message *** 2005-06-02 00:00:33 +00:00
gdbadmin
ca7d03b8d0 *** empty log message *** 2005-06-01 00:00:38 +00:00
gdbadmin
6c0ef2dbaa *** empty log message *** 2005-05-31 00:00:04 +00:00
gdbadmin
fcf020d095 *** empty log message *** 2005-05-30 00:00:05 +00:00
gdbadmin
d7a10dac13 *** empty log message *** 2005-05-29 00:00:03 +00:00
gdbadmin
214d97e850 *** empty log message *** 2005-05-28 00:00:33 +00:00
gdbadmin
c52f980831 *** empty log message *** 2005-05-27 00:00:05 +00:00
gdbadmin
f77d4a4d16 *** empty log message *** 2005-05-26 00:00:07 +00:00
gdbadmin
22dcb15bf1 *** empty log message *** 2005-05-25 00:00:39 +00:00
gdbadmin
4f3d45a64a *** empty log message *** 2005-05-24 00:00:35 +00:00
gdbadmin
0c26659c7b *** empty log message *** 2005-05-23 00:00:04 +00:00
gdbadmin
aafe38993c *** empty log message *** 2005-05-22 00:00:32 +00:00
gdbadmin
94ad7a02cd *** empty log message *** 2005-05-21 00:00:34 +00:00
gdbadmin
4b0580f5e9 *** empty log message *** 2005-05-20 00:00:03 +00:00
gdbadmin
469e21b02b *** empty log message *** 2005-05-19 00:00:03 +00:00
gdbadmin
c4a6e18977 *** empty log message *** 2005-05-18 00:00:33 +00:00
gdbadmin
ff7ab140a0 *** empty log message *** 2005-05-17 00:00:03 +00:00
gdbadmin
3e34eaf714 *** empty log message *** 2005-05-16 00:00:03 +00:00
gdbadmin
854d3dc9f2 *** empty log message *** 2005-05-15 00:00:32 +00:00
gdbadmin
cd7e92e475 *** empty log message *** 2005-05-14 00:00:34 +00:00
gdbadmin
5df9f6778d *** empty log message *** 2005-05-13 00:00:32 +00:00
gdbadmin
9800d9d63e *** empty log message *** 2005-05-12 00:00:33 +00:00
gdbadmin
d91581eab4 *** empty log message *** 2005-05-11 00:00:33 +00:00
gdbadmin
6b1bf1c634 *** empty log message *** 2005-05-10 00:00:32 +00:00
gdbadmin
2fed33c1d8 *** empty log message *** 2005-05-09 00:00:32 +00:00
gdbadmin
dda85f217e *** empty log message *** 2005-05-08 00:00:05 +00:00
gdbadmin
2eb1673795 *** empty log message *** 2005-05-07 00:00:03 +00:00
gdbadmin
f9faa30f9b *** empty log message *** 2005-05-06 00:00:03 +00:00
gdbadmin
d4a3e03c59 *** empty log message *** 2005-05-05 00:00:34 +00:00
gdbadmin
b421b3fc81 *** empty log message *** 2005-05-04 00:00:35 +00:00
gdbadmin
829e4f0be1 *** empty log message *** 2005-05-03 00:00:32 +00:00
gdbadmin
c963642f4c *** empty log message *** 2005-05-02 00:00:33 +00:00
gdbadmin
ccc8ed893d *** empty log message *** 2005-05-01 00:00:03 +00:00
gdbadmin
1abde2d45e *** empty log message *** 2005-04-30 00:00:35 +00:00
gdbadmin
6b49600935 *** empty log message *** 2005-04-29 00:00:34 +00:00
gdbadmin
4b9e539eb6 *** empty log message *** 2005-04-28 00:00:03 +00:00
gdbadmin
02896e8456 *** empty log message *** 2005-04-27 00:00:33 +00:00
gdbadmin
85b9fb0ea5 *** empty log message *** 2005-04-26 00:00:34 +00:00
gdbadmin
2fb59203f4 *** empty log message *** 2005-04-25 00:00:35 +00:00
gdbadmin
644444ccd2 *** empty log message *** 2005-04-24 00:00:03 +00:00
gdbadmin
2ba849b67d *** empty log message *** 2005-04-23 00:00:36 +00:00
gdbadmin
d49b7cd7e2 *** empty log message *** 2005-04-22 00:00:03 +00:00
gdbadmin
dfa3a084f7 *** empty log message *** 2005-04-21 00:00:34 +00:00
gdbadmin
e682f56cc8 *** empty log message *** 2005-04-20 00:00:35 +00:00
gdbadmin
6bf3342fd9 *** empty log message *** 2005-04-19 00:00:03 +00:00
gdbadmin
f210b758bc *** empty log message *** 2005-04-18 00:00:32 +00:00
gdbadmin
5c75cf177e *** empty log message *** 2005-04-17 00:00:32 +00:00
gdbadmin
3708aa1830 *** empty log message *** 2005-04-16 00:00:04 +00:00
gdbadmin
487bd0d8ab *** empty log message *** 2005-04-15 00:00:02 +00:00
gdbadmin
63facded4b *** empty log message *** 2005-04-14 00:00:33 +00:00
gdbadmin
e588816568 *** empty log message *** 2005-04-13 00:00:05 +00:00
gdbadmin
e44ead73d4 *** empty log message *** 2005-04-12 00:00:03 +00:00
gdbadmin
63b5884751 *** empty log message *** 2005-04-11 00:00:02 +00:00
gdbadmin
45b023a1eb *** empty log message *** 2005-04-10 00:00:32 +00:00
gdbadmin
6b856a3a21 *** empty log message *** 2005-04-09 00:00:37 +00:00
gdbadmin
51010f8b33 *** empty log message *** 2005-04-08 00:00:32 +00:00
gdbadmin
33a993ba03 *** empty log message *** 2005-04-07 00:00:03 +00:00
gdbadmin
367a0f9997 *** empty log message *** 2005-04-06 00:00:07 +00:00
gdbadmin
097b2e46b6 *** empty log message *** 2005-04-05 00:00:03 +00:00
gdbadmin
7bf1e9d009 *** empty log message *** 2005-04-04 00:00:32 +00:00
gdbadmin
b05ed953a5 *** empty log message *** 2005-04-03 00:00:34 +00:00
gdbadmin
fcce2a4ac3 *** empty log message *** 2005-04-02 00:00:10 +00:00
gdbadmin
62dfb5ddf5 *** empty log message *** 2005-04-01 00:00:33 +00:00
gdbadmin
422cb61dbd *** empty log message *** 2005-03-31 00:00:33 +00:00
gdbadmin
934a6957fb *** empty log message *** 2005-03-30 00:00:03 +00:00
gdbadmin
ba4e8ce17f *** empty log message *** 2005-03-29 00:00:03 +00:00
gdbadmin
b9ca5b2782 *** empty log message *** 2005-03-28 00:00:34 +00:00
gdbadmin
7e73943d4f *** empty log message *** 2005-03-27 00:00:33 +00:00
gdbadmin
6a4b170b5a *** empty log message *** 2005-03-26 00:00:08 +00:00
gdbadmin
d77fffdd2f *** empty log message *** 2005-03-25 00:00:37 +00:00
gdbadmin
bbc3bb43fe *** empty log message *** 2005-03-24 00:00:38 +00:00
gdbadmin
390226e324 *** empty log message *** 2005-03-23 00:00:33 +00:00
gdbadmin
06909c3f99 *** empty log message *** 2005-03-22 00:00:09 +00:00
gdbadmin
1eab7f2055 *** empty log message *** 2005-03-21 00:00:36 +00:00
gdbadmin
84899114af *** empty log message *** 2005-03-20 00:00:04 +00:00
gdbadmin
f76372c924 *** empty log message *** 2005-03-19 00:00:36 +00:00
gdbadmin
cc21339e42 *** empty log message *** 2005-03-18 00:00:07 +00:00
gdbadmin
da79f3b41d *** empty log message *** 2005-03-17 00:00:33 +00:00
gdbadmin
929d5098b7 *** empty log message *** 2005-03-16 00:00:33 +00:00
gdbadmin
88c86b4451 *** empty log message *** 2005-03-15 00:00:02 +00:00
gdbadmin
5d934a419e *** empty log message *** 2005-03-14 00:00:03 +00:00
gdbadmin
d4eb12c4c6 *** empty log message *** 2005-03-13 00:00:33 +00:00
gdbadmin
f2b60527a5 *** empty log message *** 2005-03-12 00:00:37 +00:00
gdbadmin
423b71569f *** empty log message *** 2005-03-11 00:00:36 +00:00
gdbadmin
1f16cf1030 *** empty log message *** 2005-03-10 00:00:06 +00:00
gdbadmin
24405ddfbb *** empty log message *** 2005-03-09 00:00:05 +00:00
gdbadmin
60cb26dfd6 *** empty log message *** 2005-03-08 00:00:03 +00:00
gdbadmin
f129c4c2b0 *** empty log message *** 2005-03-07 00:00:33 +00:00
gdbadmin
05fb9cf35a *** empty log message *** 2005-03-06 00:00:04 +00:00
gdbadmin
88750a0891 *** empty log message *** 2005-03-05 00:00:06 +00:00
gdbadmin
3bbefc9ef4 *** empty log message *** 2005-03-04 00:00:34 +00:00
gdbadmin
c4eca886c5 *** empty log message *** 2005-03-03 00:00:05 +00:00
gdbadmin
b60ab25182 *** empty log message *** 2005-03-02 00:00:05 +00:00
gdbadmin
f896dd1a36 *** empty log message *** 2005-03-01 00:00:04 +00:00
gdbadmin
2862d1ab5b *** empty log message *** 2005-02-28 00:00:33 +00:00
gdbadmin
1605acde89 *** empty log message *** 2005-02-27 00:00:36 +00:00
gdbadmin
808dff7e8f *** empty log message *** 2005-02-26 00:00:39 +00:00
gdbadmin
908810ac50 *** empty log message *** 2005-02-25 00:00:03 +00:00
gdbadmin
f73cfa6181 *** empty log message *** 2005-02-24 00:00:06 +00:00
gdbadmin
6ea8b85046 *** empty log message *** 2005-02-23 00:00:37 +00:00
gdbadmin
8f9142f305 *** empty log message *** 2005-02-22 00:00:03 +00:00
gdbadmin
3f72ff7a7d *** empty log message *** 2005-02-21 00:00:07 +00:00
gdbadmin
e386bdbd5f *** empty log message *** 2005-02-20 00:00:05 +00:00
gdbadmin
b9340ab174 *** empty log message *** 2005-02-19 00:00:34 +00:00
gdbadmin
21ff9488b4 *** empty log message *** 2005-02-18 00:00:40 +00:00
gdbadmin
10afb5d0fc *** empty log message *** 2005-02-17 00:00:33 +00:00
gdbadmin
6c3c54db5c *** empty log message *** 2005-02-16 00:00:32 +00:00
gdbadmin
9a2d0b7823 *** empty log message *** 2005-02-15 00:00:04 +00:00
gdbadmin
cf7cb51317 *** empty log message *** 2005-02-14 00:00:36 +00:00
gdbadmin
38c05cd076 *** empty log message *** 2005-02-13 00:00:34 +00:00
gdbadmin
46644f086b *** empty log message *** 2005-02-12 00:00:06 +00:00
gdbadmin
f168ac4946 *** empty log message *** 2005-02-11 00:00:34 +00:00
gdbadmin
f2fd7c359c *** empty log message *** 2005-02-10 00:00:06 +00:00
gdbadmin
07f3ffbf55 *** empty log message *** 2005-02-09 00:00:04 +00:00
gdbadmin
573b491fbd *** empty log message *** 2005-02-08 00:00:02 +00:00
gdbadmin
e6d3559fd8 *** empty log message *** 2005-02-07 07:00:33 +00:00
gdbadmin
b96bdaf22c *** empty log message *** 2005-02-03 00:00:07 +00:00
gdbadmin
cc80bdf5c5 *** empty log message *** 2005-02-02 00:00:35 +00:00
gdbadmin
7825e53e62 *** empty log message *** 2005-02-01 00:00:07 +00:00
gdbadmin
f9db6a365d *** empty log message *** 2005-01-31 00:00:35 +00:00
gdbadmin
b7a5b1b8f2 *** empty log message *** 2005-01-30 00:00:04 +00:00
gdbadmin
ba441d9383 *** empty log message *** 2005-01-29 00:00:06 +00:00
gdbadmin
9c61d24a0f *** empty log message *** 2005-01-28 00:00:34 +00:00
gdbadmin
c51a355b00 *** empty log message *** 2005-01-27 00:00:34 +00:00
gdbadmin
257d9dd073 *** empty log message *** 2005-01-26 00:00:02 +00:00
gdbadmin
b4aa968add *** empty log message *** 2005-01-25 00:00:06 +00:00
gdbadmin
25af0bc717 *** empty log message *** 2005-01-24 00:00:05 +00:00
gdbadmin
fd14d18efb *** empty log message *** 2005-01-23 00:00:03 +00:00
gdbadmin
e72ede5228 *** empty log message *** 2005-01-22 00:00:35 +00:00
gdbadmin
5f702c6cfb *** empty log message *** 2005-01-21 00:00:04 +00:00
gdbadmin
1ba632047f *** empty log message *** 2005-01-20 00:00:35 +00:00
gdbadmin
43943cdff2 *** empty log message *** 2005-01-19 00:00:06 +00:00
gdbadmin
ede04e8585 *** empty log message *** 2005-01-18 00:00:38 +00:00
gdbadmin
9ecf997530 *** empty log message *** 2005-01-17 00:00:03 +00:00
gdbadmin
095a915bbf *** empty log message *** 2005-01-16 00:00:03 +00:00
gdbadmin
e097e2a353 *** empty log message *** 2005-01-15 00:00:06 +00:00
gdbadmin
ccb6cfbf23 *** empty log message *** 2005-01-14 00:00:05 +00:00
gdbadmin
527cbd1a88 *** empty log message *** 2005-01-13 00:00:34 +00:00
gdbadmin
56a67261d0 *** empty log message *** 2005-01-12 00:00:34 +00:00
gdbadmin
f6c9288c15 *** empty log message *** 2005-01-11 00:00:34 +00:00
gdbadmin
9ea5e52b9b *** empty log message *** 2005-01-10 00:00:33 +00:00
gdbadmin
62f75866b4 *** empty log message *** 2005-01-09 00:00:32 +00:00
gdbadmin
fc5db63eec *** empty log message *** 2005-01-08 00:00:36 +00:00
gdbadmin
f2562b34fd *** empty log message *** 2005-01-07 00:00:33 +00:00
gdbadmin
40cacac04f *** empty log message *** 2005-01-06 00:00:02 +00:00
gdbadmin
b85be87e65 *** empty log message *** 2005-01-05 00:00:37 +00:00
Andrew Cagney
8fde34fcc9 2005-01-04 Andrew Cagney <cagney@gnu.org>
* version.in: Change format from 6.3.0.90_YYYY-MM-DD-cvs to
	6.3.0.YYYYMMDD-cvs.
2005-01-04 19:49:33 +00:00
gdbadmin
2b094af321 *** empty log message *** 2005-01-04 00:00:35 +00:00
gdbadmin
3561452318 *** empty log message *** 2005-01-03 00:00:08 +00:00
gdbadmin
9f80e52d90 *** empty log message *** 2005-01-02 00:00:33 +00:00
gdbadmin
378a5d41ad *** empty log message *** 2005-01-01 00:00:34 +00:00
gdbadmin
5271e44ee6 *** empty log message *** 2004-12-31 00:00:04 +00:00
gdbadmin
84889f6476 *** empty log message *** 2004-12-30 00:00:04 +00:00
gdbadmin
e82a90442d *** empty log message *** 2004-12-29 00:00:33 +00:00
gdbadmin
6759f753fd *** empty log message *** 2004-12-28 00:00:32 +00:00
gdbadmin
f99183db13 *** empty log message *** 2004-12-27 00:00:04 +00:00
gdbadmin
4756963664 *** empty log message *** 2004-12-26 00:00:04 +00:00
gdbadmin
f822378f43 *** empty log message *** 2004-12-25 00:00:34 +00:00
gdbadmin
18daa42b2c *** empty log message *** 2004-12-24 00:00:04 +00:00
gdbadmin
ccb96f6f2b *** empty log message *** 2004-12-23 00:00:33 +00:00
gdbadmin
fe92e2435e *** empty log message *** 2004-12-22 00:00:33 +00:00
gdbadmin
af0059dda3 *** empty log message *** 2004-12-21 00:00:03 +00:00
gdbadmin
64d880b73f *** empty log message *** 2004-12-20 00:00:04 +00:00
gdbadmin
84cc7f1745 *** empty log message *** 2004-12-19 00:00:33 +00:00
gdbadmin
26d907e845 *** empty log message *** 2004-12-18 00:00:06 +00:00
gdbadmin
f07994cfba *** empty log message *** 2004-12-17 00:00:38 +00:00
gdbadmin
3e4347746e *** empty log message *** 2004-12-16 00:00:32 +00:00
gdbadmin
e55a772bc5 *** empty log message *** 2004-12-15 00:00:08 +00:00
gdbadmin
b29002c07b *** empty log message *** 2004-12-14 00:00:33 +00:00
gdbadmin
87efefd222 *** empty log message *** 2004-12-13 00:00:04 +00:00
gdbadmin
e716bec2c6 *** empty log message *** 2004-12-12 00:00:02 +00:00
gdbadmin
d653f4c6dc *** empty log message *** 2004-12-11 00:00:04 +00:00
gdbadmin
8f18d8add3 *** empty log message *** 2004-12-10 00:00:03 +00:00
gdbadmin
bcde78685c *** empty log message *** 2004-12-09 00:00:02 +00:00
gdbadmin
24a72a2f52 *** empty log message *** 2004-12-08 00:00:36 +00:00
gdbadmin
530a683d4a *** empty log message *** 2004-12-07 00:00:04 +00:00
gdbadmin
f2eb145b45 *** empty log message *** 2004-12-06 00:00:03 +00:00
gdbadmin
8bdd6dba61 *** empty log message *** 2004-12-05 00:00:35 +00:00
gdbadmin
e265a8c02a *** empty log message *** 2004-12-04 00:00:33 +00:00
gdbadmin
61934f9226 *** empty log message *** 2004-12-03 00:00:36 +00:00
gdbadmin
ca65ec6ca2 *** empty log message *** 2004-12-02 00:00:33 +00:00
gdbadmin
abbfb5da3a *** empty log message *** 2004-12-01 00:00:11 +00:00
gdbadmin
121cde343a *** empty log message *** 2004-11-30 00:00:03 +00:00
gdbadmin
ee5022ef4f *** empty log message *** 2004-11-29 00:00:35 +00:00
gdbadmin
6f34d37faf *** empty log message *** 2004-11-28 00:00:10 +00:00
gdbadmin
f1f55f4aba *** empty log message *** 2004-11-27 00:00:36 +00:00
gdbadmin
b6a81a42ab *** empty log message *** 2004-11-26 00:00:34 +00:00
gdbadmin
dc325e9043 *** empty log message *** 2004-11-25 00:00:32 +00:00
gdbadmin
6c98ee650c *** empty log message *** 2004-11-24 00:00:03 +00:00
gdbadmin
2e3e6b2b0c *** empty log message *** 2004-11-23 00:00:35 +00:00
gdbadmin
dde3bc3a0b *** empty log message *** 2004-11-22 00:00:04 +00:00
gdbadmin
ce4428fc3e *** empty log message *** 2004-11-21 00:00:32 +00:00
Mark Kettenis
97e59c7af4 * dwarf2-frame.c (decode_frame_entry_1): Correctly skip
personality routine in a CIE augmentation.  Avoid indirection.
2004-11-20 09:42:18 +00:00
gdbadmin
c4582c1350 *** empty log message *** 2004-11-20 00:00:05 +00:00
gdbadmin
042e8c8123 *** empty log message *** 2004-11-19 00:00:02 +00:00
gdbadmin
c6653dee0f *** empty log message *** 2004-11-18 00:00:33 +00:00
gdbadmin
3b85755b19 *** empty log message *** 2004-11-17 00:01:02 +00:00
gdbadmin
23252ac220 *** empty log message *** 2004-11-16 00:00:02 +00:00
gdbadmin
1785e3806c *** empty log message *** 2004-11-15 00:00:32 +00:00
gdbadmin
c17573fbd3 *** empty log message *** 2004-11-14 00:00:03 +00:00
gdbadmin
d029bbcf49 *** empty log message *** 2004-11-13 00:00:05 +00:00
Kazuhiro Inaoka
9f4af5bc09 2004-11-12 Kei Sakamoto <sakamoto.kei@renesas.com>
* Makefile.in (m32r-linux-tdep.o): Update dependencies.
	* m32r-linux-tdep.c (m32r_linux_init_abi): Call
	set_gdbarch_regset_from_core_section for core file support.
	(m32r_linux_supply_gregset, m32r_linux_regset_from_core_section):
	New functions.
2004-11-12 00:58:28 +00:00
gdbadmin
82b8fd18ac *** empty log message *** 2004-11-12 00:00:02 +00:00
gdbadmin
0e05b82359 *** empty log message *** 2004-11-11 00:00:31 +00:00
Andrew Cagney
164be3ba88 Let the good times roll. 2004-11-10 00:24:44 +00:00
Andrew Cagney
456e8f6d1d GDB 6.3 2004-11-09 23:59:22 +00:00
gdbadmin
0db2ea6fff *** empty log message *** 2004-11-09 00:00:03 +00:00
Andrew Cagney
210f13e254 2004-11-08 Andrew Cagney <cagney@gnu.org>
* README: Refer to 6.3, not 6.2, update directory listing droppng
	references to intl/ and mmalloc/.
	* PROBLEMS: Refer to 6.3 not 6.2.
2004-11-08 15:54:34 +00:00
Andrew Cagney
f27375e2cf 2004-11-08 Andrew Cagney <cagney@gnu.org>
* PROBLEMS: Delete no-longer applicable problems.
2004-11-08 15:31:40 +00:00
gdbadmin
dc8830bc39 *** empty log message *** 2004-11-08 00:00:04 +00:00
gdbadmin
d371d490f3 *** empty log message *** 2004-11-07 00:00:33 +00:00
gdbadmin
690a3ae296 *** empty log message *** 2004-11-06 00:00:34 +00:00
Andrew Cagney
b572b73ef2 2004-11-05 Andrew Cagney <cagney@gnu.org>
Backport 2004-10-27 Jim Blandy <jimb@redhat.com>
	* remote.c (fetch_register_using_p): Construct 'p' packet in a
	manner independent of the host byte order.
2004-11-05 23:38:25 +00:00
gdbadmin
ca8ec20a5b *** empty log message *** 2004-11-05 00:00:03 +00:00
Kazuhiro Inaoka
5b82fc7211 2004-11-04 Kei Sakamoto <sakamoto.kei@denesas.com>
* Makefile.in (m32r-tdep.o): Update dependencies.
	* m32r-tdep.c (m32r_gdbarch_init): Call gdbarch_init_osabi for
	ABI-specific overrides.
2004-11-04 02:18:49 +00:00
Kazuhiro Inaoka
aaac35b8dd 2004-11-04 Kei Sakamoto <sakamoto.kei@denesas.com>
* m32r-tdep.c (m32r_memory_insert_breakpoint): Remove
        unnecessary parallel execution bit.
        (m32r_memory_remove_breakpoint): Ditto.
        (m32r_breakpoint_from_pc): Update.
2004-11-04 00:48:01 +00:00
gdbadmin
b3a73d9457 *** empty log message *** 2004-11-04 00:00:03 +00:00
Randolph Chung
7da6062b13 2004-11-03 Randolph Chung <tausq@debian.org>
* hppa-tdep.c (hppa_frame_cache): Use frame_pc_unwind instead of
    frame_func_unwind to locate the unwind entry.
	(hppa_frame_this_id): Likewise.
2004-11-03 23:39:36 +00:00
Andrew Cagney
e936816ced 2004-11-03 Andrew Cagney <cagney@gnu.org>
* gdb/NEWS: Mention internationalization, m32r-*-linux-gnu, 'p'
	packet, obsolete configurations, end-of-life deprecated_registers.
2004-11-03 14:36:53 +00:00
gdbadmin
de675a31a4 *** empty log message *** 2004-11-03 00:00:32 +00:00
Mark Kettenis
e69100588a * dwarf2-frame.c (read_encoded_value): Set proper size for signed
encodings as well as unsigned encodings.
2004-11-02 22:36:39 +00:00
Paul N. Hilfinger
a54beb4ee0 NEWS: GDB understands GNAT Ada. 2004-11-02 09:34:15 +00:00
gdbadmin
6ba6040a20 *** empty log message *** 2004-11-02 00:00:02 +00:00
gdbadmin
8d00e3a408 *** empty log message *** 2004-11-01 00:00:33 +00:00
gdbadmin
e6a4f915da *** empty log message *** 2004-10-31 00:00:33 +00:00
gdbadmin
74348be6f3 *** empty log message *** 2004-10-30 00:00:34 +00:00
gdbadmin
88e41d9b16 *** empty log message *** 2004-10-29 00:00:02 +00:00
gdbadmin
07ea97e534 *** empty log message *** 2004-10-28 00:00:32 +00:00
Andrew Cagney
3c5e8402a6 2004-10-07 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
Committed by Andrew Cagney.
	* traps-linux.c: Don't include linux/module.h.
	(m32r_trap): Remove dummy systemcall's entry of __NR_ustat and
	__NR_get_kernel_syms.
2004-10-27 17:24:26 +00:00
gdbadmin
0c6ca8a7bb *** empty log message *** 2004-10-27 00:00:03 +00:00
gdbadmin
36ff11790d *** empty log message *** 2004-10-26 00:00:33 +00:00
gdbadmin
221251161e *** empty log message *** 2004-10-25 00:00:33 +00:00
gdbadmin
64c66ed6b0 *** empty log message *** 2004-10-24 00:00:02 +00:00
Ulrich Weigand
e8fd903c22 * s390-tdep.c (enum pv_boolean): Remove.
(pv_is_array_ref): Remove.
	(s390_on_stack): Remove.
	(S390_NUM_SPILL_SLOTS): Remove.
	(struct s390_prologue_data): Remove members 'spill' and 'back_chain',
	add members 'gpr_slot', 'fpr_slot', and 'back_chain_saved_p'.
	(s390_store): Track all stores of orginal incoming registers to the
	stack constant offsets relative to the CFA, instead of only tracking
	stores into specific spill slots.
	(s390_load): Likewise.
	(s390_analyze_prologue): Adapt to struct s390_prologue_data changes.
	(s390_prologue_frame_unwind_cache): Likewise.  Only track registers
	defined as call-saved by the ABI.
	(s390_push_dummy_call): Use bottom of dummy call argument save area
	as return value, not the top.  Do not store to the called function's
	register save area.
	(s390_unwind_dummy_id): Adapt accordingly.
2004-10-23 16:32:24 +00:00
gdbadmin
cb991ef0e4 *** empty log message *** 2004-10-23 00:00:32 +00:00
gdbadmin
ce7e7e127d *** empty log message *** 2004-10-22 00:00:03 +00:00
Joel Brobecker
a9b652f71b * linux-x86-64-low.c (ARCH_SET_GS): Add definition if missing.
(ARCH_SET_FS): Likewise.
        (ARCH_GET_FS): Likewise.
        (ARCH_GET_GS): Likewise.
2004-10-21 17:26:49 +00:00
gdbadmin
8aaf25423e *** empty log message *** 2004-10-21 00:00:35 +00:00
gdbadmin
04ea77320e *** empty log message *** 2004-10-20 00:00:31 +00:00
Michael Chastain
b22b0a6264 2004-10-19 Michael Chastain <mec.gnu@mindspring.com>
* NEWS: GDB works with GCC -feliminate-dwarf2-dups.
2004-10-19 20:17:09 +00:00
Andrew Cagney
9c762a4177 2004-10-19 Andrew Cagney <cagney@gnu.org>
* src-release (do-djunpack, do-md5sum): Install the generated file
	directly into the proto-toplev/ directory.
2004-10-19 18:51:08 +00:00
Andrew Cagney
22487fb3e9 2004-10-19 Andrew Cagney <cagney@gnu.org>
GDB 6.3 branch created.
	* version.in: Bump to version 6.2.90.
2004-10-19 18:19:03 +00:00
Andrew Cagney
a139091afd 2004-10-19 Andrew Cagney <cagney@gnu.org>
* src-release (GDB_SUPPORT_DIRS): Remove utils and intl.
2004-10-19 18:09:38 +00:00
nobody
2b10a680d7 This commit was manufactured by cvs2svn to create branch 'gdb_6_3-branch'.
Sprout from master 2004-10-18 08:06:31 UTC Nick Clifton <nickc@redhat.com> 'Compute	'name' for relocs against both local and global symbols.'
Cherrypick from cygnus 2000-02-22 15:59:20 UTC Ian Lance Taylor <ian@airs.com> 'import libiberty from egcs':
    COPYING
    COPYING.LIB
    README
    bfd/PORTING
    bfd/TODO
    bfd/cf-m68klynx.c
    bfd/coff-svm68k.c
    bfd/coff-u68k.c
    bfd/configure.com
    bfd/doc/doc.str
    bfd/doc/makefile.vms
    bfd/elf64.c
    bfd/hosts/decstation.h
    bfd/hosts/delta68.h
    bfd/hosts/dpx2.h
    bfd/hosts/hp300bsd.h
    bfd/hosts/i386bsd.h
    bfd/hosts/i386linux.h
    bfd/hosts/i386mach3.h
    bfd/hosts/i386sco.h
    bfd/hosts/i860mach3.h
    bfd/hosts/m68kaux.h
    bfd/hosts/m68klinux.h
    bfd/hosts/m88kmach3.h
    bfd/hosts/mipsbsd.h
    bfd/hosts/mipsmach3.h
    bfd/hosts/news-mips.h
    bfd/hosts/news.h
    bfd/hosts/pc532mach.h
    bfd/hosts/riscos.h
    bfd/hosts/symmetry.h
    bfd/hosts/tahoe.h
    bfd/hosts/vaxbsd.h
    bfd/hosts/vaxult.h
    bfd/hosts/vaxult2.h
    bfd/makefile.vms
    bfd/stamp-h.in
    config/mh-armpic
    config/mh-elfalphapic
    config/mh-m68kpic
    config/mh-papic
    config/mh-ppcpic
    config/mh-x86pic
    config/mt-d30v
    config/mt-netware
    config/mt-ospace
    etc/add-log.el
    etc/add-log.vi
    etc/configbuild.ein
    etc/configbuild.fig
    etc/configbuild.jin
    etc/configbuild.tin
    etc/configdev.ein
    etc/configdev.fig
    etc/configdev.jin
    etc/configdev.tin
    etc/configure
    etc/configure.in
    include/aout/hp.h
    include/aout/hppa.h
    include/coff/sym.h
    include/fopen-bin.h
    include/fopen-same.h
    include/fopen-vms.h
    include/gdbm.h
    include/nlm/ppc-ext.h
    include/opcode/mn10200.h
    include/opcode/tahoe.h
    include/opcode/tic30.h
    libiberty/config.h-vms
    libiberty/config/mh-aix
    libiberty/config/mh-cxux7
    libiberty/config/mh-fbsd21
    libiberty/config/mh-windows
    libiberty/makefile.vms
    libiberty/mpw-config.in
    libiberty/mpw-make.sed
    libiberty/mpw.c
    libiberty/msdos.c
    libiberty/vmsbuild.com
    makefile.vms
    move-if-change
    opcodes/makefile.vms
    opcodes/stamp-h.in
    setup.com
Cherrypick from FSF 2002-08-23 22:02:32 UTC Elena Zannoni <ezannoni@kwikemart.cygnus.com> 'import of readline-4.3':
    readline/USAGE
    readline/examples/excallback.c
Delete:
    binutils/ChangeLog
    binutils/ChangeLog-0001
    binutils/ChangeLog-0203
    binutils/ChangeLog-9197
    binutils/ChangeLog-9899
    binutils/MAINTAINERS
    binutils/Makefile.am
    binutils/Makefile.in
    binutils/NEWS
    binutils/README
    binutils/acinclude.m4
    binutils/aclocal.m4
    binutils/addr2line.c
    binutils/ar.c
    binutils/arlex.l
    binutils/arparse.y
    binutils/arsup.c
    binutils/arsup.h
    binutils/binemul.c
    binutils/binemul.h
    binutils/bucomm.c
    binutils/bucomm.h
    binutils/budbg.h
    binutils/budemang.c
    binutils/budemang.h
    binutils/coffdump.c
    binutils/coffgrok.c
    binutils/coffgrok.h
    binutils/config.in
    binutils/configure
    binutils/configure.com
    binutils/configure.in
    binutils/configure.tgt
    binutils/cxxfilt.c
    binutils/debug.c
    binutils/debug.h
    binutils/deflex.l
    binutils/defparse.y
    binutils/dep-in.sed
    binutils/dlltool.c
    binutils/dlltool.h
    binutils/dllwrap.c
    binutils/doc/Makefile.am
    binutils/doc/Makefile.in
    binutils/doc/binutils.texi
    binutils/doc/fdl.texi
    binutils/emul_aix.c
    binutils/emul_vanilla.c
    binutils/filemode.c
    binutils/ieee.c
    binutils/is-ranlib.c
    binutils/is-strip.c
    binutils/makefile.vms-in
    binutils/maybe-ranlib.c
    binutils/maybe-strip.c
    binutils/nlmconv.c
    binutils/nlmconv.h
    binutils/nlmheader.y
    binutils/nm.c
    binutils/not-ranlib.c
    binutils/not-strip.c
    binutils/objcopy.c
    binutils/objdump.c
    binutils/po/.cvsignore
    binutils/po/Make-in
    binutils/po/POTFILES.in
    binutils/po/binutils.pot
    binutils/po/da.po
    binutils/po/es.po
    binutils/po/fr.po
    binutils/po/ja.po
    binutils/po/ru.po
    binutils/po/sv.po
    binutils/po/tr.po
    binutils/po/zh_CN.po
    binutils/prdbg.c
    binutils/ranlib.sh
    binutils/rclex.l
    binutils/rcparse.y
    binutils/rdcoff.c
    binutils/rddbg.c
    binutils/readelf.c
    binutils/rename.c
    binutils/resbin.c
    binutils/rescoff.c
    binutils/resrc.c
    binutils/resres.c
    binutils/sanity.sh
    binutils/size.c
    binutils/srconv.c
    binutils/stabs.c
    binutils/stamp-h.in
    binutils/strings.c
    binutils/sysdump.c
    binutils/sysinfo.y
    binutils/syslex.l
    binutils/sysroff.info
    binutils/testsuite/ChangeLog
    binutils/testsuite/ChangeLog-9303
    binutils/testsuite/binutils-all/ar.exp
    binutils/testsuite/binutils-all/bintest.s
    binutils/testsuite/binutils-all/dlltool.exp
    binutils/testsuite/binutils-all/fastcall.def
    binutils/testsuite/binutils-all/hppa/addendbug.s
    binutils/testsuite/binutils-all/hppa/freg.s
    binutils/testsuite/binutils-all/hppa/objdump.exp
    binutils/testsuite/binutils-all/m68k/movem.s
    binutils/testsuite/binutils-all/m68k/objdump.exp
    binutils/testsuite/binutils-all/nm.exp
    binutils/testsuite/binutils-all/objcopy.exp
    binutils/testsuite/binutils-all/objdump.exp
    binutils/testsuite/binutils-all/readelf.exp
    binutils/testsuite/binutils-all/readelf.h
    binutils/testsuite/binutils-all/readelf.r
    binutils/testsuite/binutils-all/readelf.r-64
    binutils/testsuite/binutils-all/readelf.s
    binutils/testsuite/binutils-all/readelf.s-64
    binutils/testsuite/binutils-all/readelf.ss
    binutils/testsuite/binutils-all/readelf.ss-64
    binutils/testsuite/binutils-all/readelf.ss-mips
    binutils/testsuite/binutils-all/readelf.ss-tmips
    binutils/testsuite/binutils-all/size.exp
    binutils/testsuite/binutils-all/testprog.c
    binutils/testsuite/binutils-all/windres/README
    binutils/testsuite/binutils-all/windres/bmp1.bmp
    binutils/testsuite/binutils-all/windres/bmpalign.rc
    binutils/testsuite/binutils-all/windres/bmpalign.rsd
    binutils/testsuite/binutils-all/windres/capstyle.rc
    binutils/testsuite/binutils-all/windres/capstyle.rsd
    binutils/testsuite/binutils-all/windres/checkbox.rc
    binutils/testsuite/binutils-all/windres/checkbox.rsd
    binutils/testsuite/binutils-all/windres/combobox.rc
    binutils/testsuite/binutils-all/windres/combobox.rsd
    binutils/testsuite/binutils-all/windres/deflang.rc
    binutils/testsuite/binutils-all/windres/deflang.rsd
    binutils/testsuite/binutils-all/windres/dialog0.rc
    binutils/testsuite/binutils-all/windres/dialog0.rsd
    binutils/testsuite/binutils-all/windres/dialog1.rc
    binutils/testsuite/binutils-all/windres/dialog1.rsd
    binutils/testsuite/binutils-all/windres/dialogid.rc
    binutils/testsuite/binutils-all/windres/dialogid.rsd
    binutils/testsuite/binutils-all/windres/dialogsignature.rc
    binutils/testsuite/binutils-all/windres/dialogsignature.rsd
    binutils/testsuite/binutils-all/windres/dlgfont.rc
    binutils/testsuite/binutils-all/windres/dlgfont.rsd
    binutils/testsuite/binutils-all/windres/edittext.rc
    binutils/testsuite/binutils-all/windres/edittext.rsd
    binutils/testsuite/binutils-all/windres/escapea.rc
    binutils/testsuite/binutils-all/windres/escapea.rsd
    binutils/testsuite/binutils-all/windres/escapex.rc
    binutils/testsuite/binutils-all/windres/escapex.rsd
    binutils/testsuite/binutils-all/windres/lang.rc
    binutils/testsuite/binutils-all/windres/lang.rsd
    binutils/testsuite/binutils-all/windres/listbox.rc
    binutils/testsuite/binutils-all/windres/listbox.rsd
    binutils/testsuite/binutils-all/windres/msupdate
    binutils/testsuite/binutils-all/windres/nocaption.rc
    binutils/testsuite/binutils-all/windres/nocaption.rsd
    binutils/testsuite/binutils-all/windres/printstyle.rc
    binutils/testsuite/binutils-all/windres/printstyle.rsd
    binutils/testsuite/binutils-all/windres/quoteclass.rc
    binutils/testsuite/binutils-all/windres/scrollbar.rc
    binutils/testsuite/binutils-all/windres/scrollbar.rsd
    binutils/testsuite/binutils-all/windres/strtab1.rc
    binutils/testsuite/binutils-all/windres/strtab1.rsd
    binutils/testsuite/binutils-all/windres/sublang.rc
    binutils/testsuite/binutils-all/windres/sublang.rsd
    binutils/testsuite/binutils-all/windres/windres.exp
    binutils/testsuite/config/default.exp
    binutils/testsuite/config/hppa.sed
    binutils/testsuite/lib/utils-lib.exp
    binutils/unwind-ia64.c
    binutils/unwind-ia64.h
    binutils/version.c
    binutils/windres.c
    binutils/windres.h
    binutils/winduni.c
    binutils/winduni.h
    binutils/wrstabs.c
    compile
    depcomp
    gas/CONTRIBUTORS
    gas/COPYING
    gas/ChangeLog
    gas/ChangeLog-0001
    gas/ChangeLog-0203
    gas/ChangeLog-9295
    gas/ChangeLog-9697
    gas/ChangeLog-9899
    gas/MAINTAINERS
    gas/Makefile.am
    gas/Makefile.in
    gas/NEWS
    gas/README
    gas/README-vms
    gas/acinclude.m4
    gas/aclocal.m4
    gas/app.c
    gas/as.c
    gas/as.h
    gas/asintl.h
    gas/atof-generic.c
    gas/bignum-copy.c
    gas/bignum.h
    gas/bit_fix.h
    gas/cgen.c
    gas/cgen.h
    gas/cond.c
    gas/config-gas.com
    gas/config.in
    gas/config/aout_gnu.h
    gas/config/atof-ieee.c
    gas/config/atof-tahoe.c
    gas/config/atof-vax.c
    gas/config/e-crisaout.c
    gas/config/e-criself.c
    gas/config/e-i386aout.c
    gas/config/e-i386coff.c
    gas/config/e-i386elf.c
    gas/config/e-mipsecoff.c
    gas/config/e-mipself.c
    gas/config/itbl-mips.h
    gas/config/m68k-parse.h
    gas/config/m68k-parse.y
    gas/config/m88k-opcode.h
    gas/config/obj-aout.c
    gas/config/obj-aout.h
    gas/config/obj-bout.c
    gas/config/obj-bout.h
    gas/config/obj-coff.c
    gas/config/obj-coff.h
    gas/config/obj-ecoff.c
    gas/config/obj-ecoff.h
    gas/config/obj-elf.c
    gas/config/obj-elf.h
    gas/config/obj-evax.c
    gas/config/obj-evax.h
    gas/config/obj-hp300.c
    gas/config/obj-hp300.h
    gas/config/obj-ieee.c
    gas/config/obj-ieee.h
    gas/config/obj-multi.c
    gas/config/obj-multi.h
    gas/config/obj-som.c
    gas/config/obj-som.h
    gas/config/obj-vms.c
    gas/config/obj-vms.h
    gas/config/tc-a29k.c
    gas/config/tc-a29k.h
    gas/config/tc-alpha.c
    gas/config/tc-alpha.h
    gas/config/tc-arc.c
    gas/config/tc-arc.h
    gas/config/tc-arm.c
    gas/config/tc-arm.h
    gas/config/tc-avr.c
    gas/config/tc-avr.h
    gas/config/tc-cris.c
    gas/config/tc-cris.h
    gas/config/tc-crx.c
    gas/config/tc-crx.h
    gas/config/tc-d10v.c
    gas/config/tc-d10v.h
    gas/config/tc-d30v.c
    gas/config/tc-d30v.h
    gas/config/tc-dlx.c
    gas/config/tc-dlx.h
    gas/config/tc-fr30.c
    gas/config/tc-fr30.h
    gas/config/tc-frv.c
    gas/config/tc-frv.h
    gas/config/tc-generic.c
    gas/config/tc-generic.h
    gas/config/tc-h8300.c
    gas/config/tc-h8300.h
    gas/config/tc-h8500.c
    gas/config/tc-h8500.h
    gas/config/tc-hppa.c
    gas/config/tc-hppa.h
    gas/config/tc-i370.c
    gas/config/tc-i370.h
    gas/config/tc-i386.c
    gas/config/tc-i386.h
    gas/config/tc-i860.c
    gas/config/tc-i860.h
    gas/config/tc-i960.c
    gas/config/tc-i960.h
    gas/config/tc-ia64.c
    gas/config/tc-ia64.h
    gas/config/tc-ip2k.c
    gas/config/tc-ip2k.h
    gas/config/tc-iq2000.c
    gas/config/tc-iq2000.h
    gas/config/tc-m32r.c
    gas/config/tc-m32r.h
    gas/config/tc-m68851.h
    gas/config/tc-m68hc11.c
    gas/config/tc-m68hc11.h
    gas/config/tc-m68k.c
    gas/config/tc-m68k.h
    gas/config/tc-m88k.c
    gas/config/tc-m88k.h
    gas/config/tc-mcore.c
    gas/config/tc-mcore.h
    gas/config/tc-mips.c
    gas/config/tc-mips.h
    gas/config/tc-mmix.c
    gas/config/tc-mmix.h
    gas/config/tc-mn10200.c
    gas/config/tc-mn10200.h
    gas/config/tc-mn10300.c
    gas/config/tc-mn10300.h
    gas/config/tc-msp430.c
    gas/config/tc-msp430.h
    gas/config/tc-ns32k.c
    gas/config/tc-ns32k.h
    gas/config/tc-openrisc.c
    gas/config/tc-openrisc.h
    gas/config/tc-or32.c
    gas/config/tc-or32.h
    gas/config/tc-pdp11.c
    gas/config/tc-pdp11.h
    gas/config/tc-pj.c
    gas/config/tc-pj.h
    gas/config/tc-ppc.c
    gas/config/tc-ppc.h
    gas/config/tc-s390.c
    gas/config/tc-s390.h
    gas/config/tc-sh.c
    gas/config/tc-sh.h
    gas/config/tc-sh64.c
    gas/config/tc-sh64.h
    gas/config/tc-sparc.c
    gas/config/tc-sparc.h
    gas/config/tc-tahoe.c
    gas/config/tc-tahoe.h
    gas/config/tc-tic30.c
    gas/config/tc-tic30.h
    gas/config/tc-tic4x.c
    gas/config/tc-tic4x.h
    gas/config/tc-tic54x.c
    gas/config/tc-tic54x.h
    gas/config/tc-tic80.c
    gas/config/tc-tic80.h
    gas/config/tc-v850.c
    gas/config/tc-v850.h
    gas/config/tc-vax.c
    gas/config/tc-vax.h
    gas/config/tc-w65.c
    gas/config/tc-w65.h
    gas/config/tc-xstormy16.c
    gas/config/tc-xstormy16.h
    gas/config/tc-xtensa.c
    gas/config/tc-xtensa.h
    gas/config/tc-z8k.c
    gas/config/tc-z8k.h
    gas/config/te-386bsd.h
    gas/config/te-aix5.h
    gas/config/te-aux.h
    gas/config/te-delt88.h
    gas/config/te-delta.h
    gas/config/te-dpx2.h
    gas/config/te-dynix.h
    gas/config/te-epoc-pe.h
    gas/config/te-freebsd.h
    gas/config/te-generic.h
    gas/config/te-go32.h
    gas/config/te-hp300.h
    gas/config/te-hppa.h
    gas/config/te-hppa64.h
    gas/config/te-hppalinux64.h
    gas/config/te-hpux.h
    gas/config/te-i386aix.h
    gas/config/te-ia64aix.h
    gas/config/te-ic960.h
    gas/config/te-interix.h
    gas/config/te-irix.h
    gas/config/te-linux.h
    gas/config/te-lnews.h
    gas/config/te-lynx.h
    gas/config/te-mach.h
    gas/config/te-macos.h
    gas/config/te-nbsd.h
    gas/config/te-nbsd532.h
    gas/config/te-netware.h
    gas/config/te-pc532mach.h
    gas/config/te-pe.h
    gas/config/te-psos.h
    gas/config/te-riscix.h
    gas/config/te-sparcaout.h
    gas/config/te-sun3.h
    gas/config/te-svr4.h
    gas/config/te-symbian.h
    gas/config/te-sysv32.h
    gas/config/te-tmips.h
    gas/config/te-wince-pe.h
    gas/config/vax-inst.h
    gas/config/vms-a-conf.h
    gas/config/vms-conf.h
    gas/config/xtensa-istack.h
    gas/config/xtensa-relax.c
    gas/config/xtensa-relax.h
    gas/configure
    gas/configure.in
    gas/debug.c
    gas/dep-in.sed
    gas/depend.c
    gas/doc/Makefile.am
    gas/doc/Makefile.in
    gas/doc/all.texi
    gas/doc/as.texinfo
    gas/doc/c-a29k.texi
    gas/doc/c-alpha.texi
    gas/doc/c-arc.texi
    gas/doc/c-arm.texi
    gas/doc/c-cris.texi
    gas/doc/c-d10v.texi
    gas/doc/c-d30v.texi
    gas/doc/c-h8300.texi
    gas/doc/c-h8500.texi
    gas/doc/c-hppa.texi
    gas/doc/c-i370.texi
    gas/doc/c-i386.texi
    gas/doc/c-i860.texi
    gas/doc/c-i960.texi
    gas/doc/c-ia64.texi
    gas/doc/c-ip2k.texi
    gas/doc/c-m32r.texi
    gas/doc/c-m68hc11.texi
    gas/doc/c-m68k.texi
    gas/doc/c-m88k.texi
    gas/doc/c-mips.texi
    gas/doc/c-mmix.texi
    gas/doc/c-msp430.texi
    gas/doc/c-ns32k.texi
    gas/doc/c-pdp11.texi
    gas/doc/c-pj.texi
    gas/doc/c-ppc.texi
    gas/doc/c-sh.texi
    gas/doc/c-sh64.texi
    gas/doc/c-sparc.texi
    gas/doc/c-tic54x.texi
    gas/doc/c-v850.texi
    gas/doc/c-vax.texi
    gas/doc/c-xtensa.texi
    gas/doc/c-z8k.texi
    gas/doc/fdl.texi
    gas/doc/h8.texi
    gas/doc/internals.texi
    gas/dw2gencfi.c
    gas/dw2gencfi.h
    gas/dwarf2dbg.c
    gas/dwarf2dbg.h
    gas/ecoff.c
    gas/ecoff.h
    gas/ehopt.c
    gas/emul-target.h
    gas/emul.h
    gas/expr.c
    gas/expr.h
    gas/flonum-copy.c
    gas/flonum-konst.c
    gas/flonum-mult.c
    gas/flonum.h
    gas/frags.c
    gas/frags.h
    gas/gdbinit.in
    gas/hash.c
    gas/hash.h
    gas/input-file.c
    gas/input-file.h
    gas/input-scrub.c
    gas/itbl-lex.l
    gas/itbl-ops.c
    gas/itbl-ops.h
    gas/itbl-parse.y
    gas/link.cmd
    gas/listing.c
    gas/listing.h
    gas/literal.c
    gas/macro.c
    gas/macro.h
    gas/makefile.vms
    gas/messages.c
    gas/obj.h
    gas/output-file.c
    gas/output-file.h
    gas/po/.cvsignore
    gas/po/Make-in
    gas/po/POTFILES.in
    gas/po/es.po
    gas/po/fr.po
    gas/po/gas.pot
    gas/po/tr.po
    gas/read.c
    gas/read.h
    gas/sb.c
    gas/sb.h
    gas/stabs.c
    gas/stamp-h.in
    gas/struc-symbol.h
    gas/subsegs.c
    gas/subsegs.h
    gas/symbols.c
    gas/symbols.h
    gas/tc.h
    gas/testsuite/ChangeLog
    gas/testsuite/ChangeLog-9303
    gas/testsuite/config/default.exp
    gas/testsuite/gas/all/align.d
    gas/testsuite/gas/all/align.s
    gas/testsuite/gas/all/align2.d
    gas/testsuite/gas/all/align2.s
    gas/testsuite/gas/all/altmac2.d
    gas/testsuite/gas/all/altmac2.s
    gas/testsuite/gas/all/altmacro.d
    gas/testsuite/gas/all/altmacro.s
    gas/testsuite/gas/all/cofftag.d
    gas/testsuite/gas/all/cofftag.s
    gas/testsuite/gas/all/comment.s
    gas/testsuite/gas/all/cond.d
    gas/testsuite/gas/all/cond.s
    gas/testsuite/gas/all/diff1.s
    gas/testsuite/gas/all/excl.s
    gas/testsuite/gas/all/fastcall.s
    gas/testsuite/gas/all/float.s
    gas/testsuite/gas/all/gas.exp
    gas/testsuite/gas/all/incbin.d
    gas/testsuite/gas/all/incbin.dat
    gas/testsuite/gas/all/incbin.s
    gas/testsuite/gas/all/itbl
    gas/testsuite/gas/all/itbl-test.c
    gas/testsuite/gas/all/itbl.s
    gas/testsuite/gas/all/p1480.s
    gas/testsuite/gas/all/p2425.s
    gas/testsuite/gas/all/struct.d
    gas/testsuite/gas/all/struct.s
    gas/testsuite/gas/all/test-example.c
    gas/testsuite/gas/all/test-gen.c
    gas/testsuite/gas/all/x930509.s
    gas/testsuite/gas/alpha/alpha.exp
    gas/testsuite/gas/alpha/elf-reloc-1.d
    gas/testsuite/gas/alpha/elf-reloc-1.s
    gas/testsuite/gas/alpha/elf-reloc-2.l
    gas/testsuite/gas/alpha/elf-reloc-2.s
    gas/testsuite/gas/alpha/elf-reloc-3.l
    gas/testsuite/gas/alpha/elf-reloc-3.s
    gas/testsuite/gas/alpha/elf-reloc-4.d
    gas/testsuite/gas/alpha/elf-reloc-4.s
    gas/testsuite/gas/alpha/elf-reloc-5.d
    gas/testsuite/gas/alpha/elf-reloc-5.s
    gas/testsuite/gas/alpha/elf-reloc-6.l
    gas/testsuite/gas/alpha/elf-reloc-6.s
    gas/testsuite/gas/alpha/elf-reloc-7.d
    gas/testsuite/gas/alpha/elf-reloc-7.s
    gas/testsuite/gas/alpha/elf-reloc-8.d
    gas/testsuite/gas/alpha/elf-reloc-8.s
    gas/testsuite/gas/alpha/elf-tls-1.d
    gas/testsuite/gas/alpha/elf-tls-1.s
    gas/testsuite/gas/alpha/elf-tls-2.l
    gas/testsuite/gas/alpha/elf-tls-2.s
    gas/testsuite/gas/alpha/elf-tls-3.l
    gas/testsuite/gas/alpha/elf-tls-3.s
    gas/testsuite/gas/alpha/elf-usepv-1.d
    gas/testsuite/gas/alpha/elf-usepv-1.s
    gas/testsuite/gas/alpha/elf-usepv-2.l
    gas/testsuite/gas/alpha/elf-usepv-2.s
    gas/testsuite/gas/alpha/fp.d
    gas/testsuite/gas/alpha/fp.s
    gas/testsuite/gas/alpha/unop.d
    gas/testsuite/gas/alpha/unop.s
    gas/testsuite/gas/arc/adc.d
    gas/testsuite/gas/arc/adc.s
    gas/testsuite/gas/arc/add.d
    gas/testsuite/gas/arc/add.s
    gas/testsuite/gas/arc/alias.d
    gas/testsuite/gas/arc/alias.s
    gas/testsuite/gas/arc/and.d
    gas/testsuite/gas/arc/and.s
    gas/testsuite/gas/arc/arc.exp
    gas/testsuite/gas/arc/asl.d
    gas/testsuite/gas/arc/asl.s
    gas/testsuite/gas/arc/asr.d
    gas/testsuite/gas/arc/asr.s
    gas/testsuite/gas/arc/b.d
    gas/testsuite/gas/arc/b.s
    gas/testsuite/gas/arc/bic.d
    gas/testsuite/gas/arc/bic.s
    gas/testsuite/gas/arc/bl.d
    gas/testsuite/gas/arc/bl.s
    gas/testsuite/gas/arc/branch.d
    gas/testsuite/gas/arc/branch.s
    gas/testsuite/gas/arc/brk.d
    gas/testsuite/gas/arc/brk.s
    gas/testsuite/gas/arc/extb.d
    gas/testsuite/gas/arc/extb.s
    gas/testsuite/gas/arc/extw.d
    gas/testsuite/gas/arc/extw.s
    gas/testsuite/gas/arc/flag.d
    gas/testsuite/gas/arc/flag.s
    gas/testsuite/gas/arc/insn3.d
    gas/testsuite/gas/arc/insn3.s
    gas/testsuite/gas/arc/j.d
    gas/testsuite/gas/arc/j.s
    gas/testsuite/gas/arc/jl.d
    gas/testsuite/gas/arc/jl.s
    gas/testsuite/gas/arc/ld.d
    gas/testsuite/gas/arc/ld.s
    gas/testsuite/gas/arc/ld2.d
    gas/testsuite/gas/arc/ld2.s
    gas/testsuite/gas/arc/lp.d
    gas/testsuite/gas/arc/lp.s
    gas/testsuite/gas/arc/lsr.d
    gas/testsuite/gas/arc/lsr.s
    gas/testsuite/gas/arc/math.d
    gas/testsuite/gas/arc/math.s
    gas/testsuite/gas/arc/mov.d
    gas/testsuite/gas/arc/mov.s
    gas/testsuite/gas/arc/nop.d
    gas/testsuite/gas/arc/nop.s
    gas/testsuite/gas/arc/or.d
    gas/testsuite/gas/arc/or.s
    gas/testsuite/gas/arc/rlc.d
    gas/testsuite/gas/arc/rlc.s
    gas/testsuite/gas/arc/ror.d
    gas/testsuite/gas/arc/ror.s
    gas/testsuite/gas/arc/rrc.d
    gas/testsuite/gas/arc/rrc.s
    gas/testsuite/gas/arc/sbc.d
    gas/testsuite/gas/arc/sbc.s
    gas/testsuite/gas/arc/sexb.d
    gas/testsuite/gas/arc/sexb.s
    gas/testsuite/gas/arc/sexw.d
    gas/testsuite/gas/arc/sexw.s
    gas/testsuite/gas/arc/sleep.d
    gas/testsuite/gas/arc/sleep.s
    gas/testsuite/gas/arc/sshift.d
    gas/testsuite/gas/arc/sshift.s
    gas/testsuite/gas/arc/st.d
    gas/testsuite/gas/arc/st.s
    gas/testsuite/gas/arc/sub.d
    gas/testsuite/gas/arc/sub.s
    gas/testsuite/gas/arc/swi.d
    gas/testsuite/gas/arc/swi.s
    gas/testsuite/gas/arc/warn.exp
    gas/testsuite/gas/arc/warn.s
    gas/testsuite/gas/arc/xor.d
    gas/testsuite/gas/arc/xor.s
    gas/testsuite/gas/arm/adrl.d
    gas/testsuite/gas/arm/adrl.s
    gas/testsuite/gas/arm/arch4t.s
    gas/testsuite/gas/arm/arch5tej.d
    gas/testsuite/gas/arm/arch5tej.s
    gas/testsuite/gas/arm/arch6zk.d
    gas/testsuite/gas/arm/arch6zk.s
    gas/testsuite/gas/arm/archv6.d
    gas/testsuite/gas/arm/archv6.s
    gas/testsuite/gas/arm/arm.exp
    gas/testsuite/gas/arm/arm3.s
    gas/testsuite/gas/arm/arm6.s
    gas/testsuite/gas/arm/arm7dm.s
    gas/testsuite/gas/arm/arm7t.d
    gas/testsuite/gas/arm/arm7t.s
    gas/testsuite/gas/arm/armv1-bad.l
    gas/testsuite/gas/arm/armv1-bad.s
    gas/testsuite/gas/arm/armv1.d
    gas/testsuite/gas/arm/armv1.s
    gas/testsuite/gas/arm/bignum1.s
    gas/testsuite/gas/arm/copro.d
    gas/testsuite/gas/arm/copro.s
    gas/testsuite/gas/arm/el_segundo.d
    gas/testsuite/gas/arm/el_segundo.s
    gas/testsuite/gas/arm/float.s
    gas/testsuite/gas/arm/fpa-dyadic.d
    gas/testsuite/gas/arm/fpa-dyadic.s
    gas/testsuite/gas/arm/fpa-mem.d
    gas/testsuite/gas/arm/fpa-mem.s
    gas/testsuite/gas/arm/fpa-monadic.d
    gas/testsuite/gas/arm/fpa-monadic.s
    gas/testsuite/gas/arm/immed.s
    gas/testsuite/gas/arm/inst.d
    gas/testsuite/gas/arm/inst.s
    gas/testsuite/gas/arm/iwmmxt-bad.l
    gas/testsuite/gas/arm/iwmmxt-bad.s
    gas/testsuite/gas/arm/iwmmxt.d
    gas/testsuite/gas/arm/iwmmxt.s
    gas/testsuite/gas/arm/ldconst.d
    gas/testsuite/gas/arm/ldconst.s
    gas/testsuite/gas/arm/le-fpconst.d
    gas/testsuite/gas/arm/le-fpconst.s
    gas/testsuite/gas/arm/mapping.d
    gas/testsuite/gas/arm/mapping.s
    gas/testsuite/gas/arm/maverick.c
    gas/testsuite/gas/arm/maverick.d
    gas/testsuite/gas/arm/maverick.s
    gas/testsuite/gas/arm/offset.s
    gas/testsuite/gas/arm/pic.d
    gas/testsuite/gas/arm/pic.s
    gas/testsuite/gas/arm/r15-bad.l
    gas/testsuite/gas/arm/r15-bad.s
    gas/testsuite/gas/arm/reg-alias.d
    gas/testsuite/gas/arm/reg-alias.s
    gas/testsuite/gas/arm/req.l
    gas/testsuite/gas/arm/req.s
    gas/testsuite/gas/arm/thumb.s
    gas/testsuite/gas/arm/thumbv6.d
    gas/testsuite/gas/arm/thumbv6.s
    gas/testsuite/gas/arm/undefined.l
    gas/testsuite/gas/arm/undefined.s
    gas/testsuite/gas/arm/unwind.d
    gas/testsuite/gas/arm/unwind.s
    gas/testsuite/gas/arm/vfp-bad.l
    gas/testsuite/gas/arm/vfp-bad.s
    gas/testsuite/gas/arm/vfp1.d
    gas/testsuite/gas/arm/vfp1.s
    gas/testsuite/gas/arm/vfp1xD.d
    gas/testsuite/gas/arm/vfp1xD.s
    gas/testsuite/gas/arm/vfp2.d
    gas/testsuite/gas/arm/vfp2.s
    gas/testsuite/gas/arm/wince_arm7t.d
    gas/testsuite/gas/arm/wince_copro.d
    gas/testsuite/gas/arm/wince_inst.d
    gas/testsuite/gas/arm/wince_ldconst.d
    gas/testsuite/gas/arm/xscale.d
    gas/testsuite/gas/arm/xscale.s
    gas/testsuite/gas/cfi/cfi-alpha-1.d
    gas/testsuite/gas/cfi/cfi-alpha-1.s
    gas/testsuite/gas/cfi/cfi-alpha-2.d
    gas/testsuite/gas/cfi/cfi-alpha-2.s
    gas/testsuite/gas/cfi/cfi-alpha-3.d
    gas/testsuite/gas/cfi/cfi-alpha-3.s
    gas/testsuite/gas/cfi/cfi-common-1.d
    gas/testsuite/gas/cfi/cfi-common-1.s
    gas/testsuite/gas/cfi/cfi-common-2.d
    gas/testsuite/gas/cfi/cfi-common-2.s
    gas/testsuite/gas/cfi/cfi-common-3.d
    gas/testsuite/gas/cfi/cfi-common-3.s
    gas/testsuite/gas/cfi/cfi-common-4.d
    gas/testsuite/gas/cfi/cfi-common-4.s
    gas/testsuite/gas/cfi/cfi-diag-1.l
    gas/testsuite/gas/cfi/cfi-diag-1.s
    gas/testsuite/gas/cfi/cfi-i386-2.d
    gas/testsuite/gas/cfi/cfi-i386-2.s
    gas/testsuite/gas/cfi/cfi-i386.d
    gas/testsuite/gas/cfi/cfi-i386.s
    gas/testsuite/gas/cfi/cfi-m68k.d
    gas/testsuite/gas/cfi/cfi-m68k.s
    gas/testsuite/gas/cfi/cfi-ppc-1.d
    gas/testsuite/gas/cfi/cfi-ppc-1.s
    gas/testsuite/gas/cfi/cfi-s390-1.d
    gas/testsuite/gas/cfi/cfi-s390-1.s
    gas/testsuite/gas/cfi/cfi-s390x-1.d
    gas/testsuite/gas/cfi/cfi-s390x-1.s
    gas/testsuite/gas/cfi/cfi-sh-1.d
    gas/testsuite/gas/cfi/cfi-sh-1.s
    gas/testsuite/gas/cfi/cfi-sparc-1.d
    gas/testsuite/gas/cfi/cfi-sparc-1.s
    gas/testsuite/gas/cfi/cfi-sparc64-1.d
    gas/testsuite/gas/cfi/cfi-sparc64-1.s
    gas/testsuite/gas/cfi/cfi-x86_64.d
    gas/testsuite/gas/cfi/cfi-x86_64.s
    gas/testsuite/gas/cfi/cfi.exp
    gas/testsuite/gas/cris/addi.d
    gas/testsuite/gas/cris/addi.s
    gas/testsuite/gas/cris/binop-cmpmove.d
    gas/testsuite/gas/cris/binop-cmpmovx.d
    gas/testsuite/gas/cris/binop-extx.d
    gas/testsuite/gas/cris/binop-segref.s
    gas/testsuite/gas/cris/binop.d
    gas/testsuite/gas/cris/binop.s
    gas/testsuite/gas/cris/bork.d
    gas/testsuite/gas/cris/bork.s
    gas/testsuite/gas/cris/branch-warn-1.s
    gas/testsuite/gas/cris/branch-warn-2.s
    gas/testsuite/gas/cris/branch-warn-3.s
    gas/testsuite/gas/cris/branch.d
    gas/testsuite/gas/cris/branch.s
    gas/testsuite/gas/cris/break.d
    gas/testsuite/gas/cris/break.s
    gas/testsuite/gas/cris/brokw-1.d
    gas/testsuite/gas/cris/brokw-1.s
    gas/testsuite/gas/cris/brokw-2.d
    gas/testsuite/gas/cris/brokw-2.s
    gas/testsuite/gas/cris/brokw-3.d
    gas/testsuite/gas/cris/brokw-3.s
    gas/testsuite/gas/cris/bwtest-err-1.s
    gas/testsuite/gas/cris/ccr.d
    gas/testsuite/gas/cris/ccr.s
    gas/testsuite/gas/cris/clear.d
    gas/testsuite/gas/cris/continue.d
    gas/testsuite/gas/cris/continue.s
    gas/testsuite/gas/cris/cris.exp
    gas/testsuite/gas/cris/diffexp-ovwr.d
    gas/testsuite/gas/cris/diffexp-ovwr.s
    gas/testsuite/gas/cris/fragtest.d
    gas/testsuite/gas/cris/fragtest.s
    gas/testsuite/gas/cris/jump-type.d
    gas/testsuite/gas/cris/labfloat.d
    gas/testsuite/gas/cris/labfloat.s
    gas/testsuite/gas/cris/macroat.d
    gas/testsuite/gas/cris/macroat.s
    gas/testsuite/gas/cris/movem-to-reg.d
    gas/testsuite/gas/cris/mulbug-err-1.s
    gas/testsuite/gas/cris/nosep.d
    gas/testsuite/gas/cris/nosep.s
    gas/testsuite/gas/cris/oneop-type.d
    gas/testsuite/gas/cris/operand-err-1.s
    gas/testsuite/gas/cris/pic-err-1.s
    gas/testsuite/gas/cris/prefix.d
    gas/testsuite/gas/cris/prefix.s
    gas/testsuite/gas/cris/pushpop-byte-sreg.d
    gas/testsuite/gas/cris/pushpop-dcr1-sreg.d
    gas/testsuite/gas/cris/pushpop-dword-sreg.d
    gas/testsuite/gas/cris/pushpop-word-sreg.d
    gas/testsuite/gas/cris/pushpop.d
    gas/testsuite/gas/cris/pushpop.s
    gas/testsuite/gas/cris/quick-s6.d
    gas/testsuite/gas/cris/quick-u5.d
    gas/testsuite/gas/cris/quick-u6.d
    gas/testsuite/gas/cris/quick.s
    gas/testsuite/gas/cris/range-err-1.s
    gas/testsuite/gas/cris/range-err-2.s
    gas/testsuite/gas/cris/rd-bcnst.d
    gas/testsuite/gas/cris/rd-bcnst.s
    gas/testsuite/gas/cris/rd-dw2-1.d
    gas/testsuite/gas/cris/rd-dw2-10.d
    gas/testsuite/gas/cris/rd-dw2-11.d
    gas/testsuite/gas/cris/rd-dw2-12.d
    gas/testsuite/gas/cris/rd-dw2-13.d
    gas/testsuite/gas/cris/rd-dw2-14.d
    gas/testsuite/gas/cris/rd-dw2-15.d
    gas/testsuite/gas/cris/rd-dw2-2.d
    gas/testsuite/gas/cris/rd-dw2-3.d
    gas/testsuite/gas/cris/rd-dw2-4.d
    gas/testsuite/gas/cris/rd-dw2-5.d
    gas/testsuite/gas/cris/rd-dw2-6.d
    gas/testsuite/gas/cris/rd-dw2-7.d
    gas/testsuite/gas/cris/rd-dw2-8.d
    gas/testsuite/gas/cris/rd-dw2-9.d
    gas/testsuite/gas/cris/rd-mulbug-1.d
    gas/testsuite/gas/cris/rd-pcrel1.d
    gas/testsuite/gas/cris/rd-pcrel1.s
    gas/testsuite/gas/cris/rd-pcrel2.d
    gas/testsuite/gas/cris/rd-pcrel2.s
    gas/testsuite/gas/cris/rd-pic-1.d
    gas/testsuite/gas/cris/rd-pic-1.s
    gas/testsuite/gas/cris/rd-regprefix-1.d
    gas/testsuite/gas/cris/rd-regprefix-1.s
    gas/testsuite/gas/cris/rd-regprefix-1b.d
    gas/testsuite/gas/cris/reg-to-mem.d
    gas/testsuite/gas/cris/regprefix-err-1.s
    gas/testsuite/gas/cris/regreg.d
    gas/testsuite/gas/cris/regreg.s
    gas/testsuite/gas/cris/return.d
    gas/testsuite/gas/cris/return.s
    gas/testsuite/gas/cris/scc.d
    gas/testsuite/gas/cris/scc.s
    gas/testsuite/gas/cris/sep-err-1.s
    gas/testsuite/gas/cris/sep-err-2.s
    gas/testsuite/gas/cris/sep-err-3.s
    gas/testsuite/gas/cris/separator.d
    gas/testsuite/gas/cris/separator.s
    gas/testsuite/gas/cris/shexpr-1.d
    gas/testsuite/gas/cris/shexpr-1.s
    gas/testsuite/gas/cris/sreg-to-x.d
    gas/testsuite/gas/cris/string-1.d
    gas/testsuite/gas/cris/string-1.s
    gas/testsuite/gas/cris/string-2.d
    gas/testsuite/gas/cris/string-2.s
    gas/testsuite/gas/cris/test.d
    gas/testsuite/gas/cris/unimplemented.d
    gas/testsuite/gas/cris/unimplemented.s
    gas/testsuite/gas/cris/unop-mem.d
    gas/testsuite/gas/cris/unop.s
    gas/testsuite/gas/cris/us-err-1.s
    gas/testsuite/gas/cris/us-err-2.s
    gas/testsuite/gas/cris/us-err-3.s
    gas/testsuite/gas/cris/x-to-byte-sreg.d
    gas/testsuite/gas/cris/x-to-dcr1-sreg.d
    gas/testsuite/gas/cris/x-to-dword-sreg.d
    gas/testsuite/gas/cris/x-to-word-sreg.d
    gas/testsuite/gas/crx/allinsn.exp
    gas/testsuite/gas/crx/arith_insn.d
    gas/testsuite/gas/crx/arith_insn.s
    gas/testsuite/gas/crx/beq_insn.d
    gas/testsuite/gas/crx/beq_insn.s
    gas/testsuite/gas/crx/bit_insn.d
    gas/testsuite/gas/crx/bit_insn.s
    gas/testsuite/gas/crx/br_insn.d
    gas/testsuite/gas/crx/br_insn.s
    gas/testsuite/gas/crx/cmov_insn.d
    gas/testsuite/gas/crx/cmov_insn.s
    gas/testsuite/gas/crx/cmpbr_insn.d
    gas/testsuite/gas/crx/cmpbr_insn.s
    gas/testsuite/gas/crx/cop_insn.d
    gas/testsuite/gas/crx/cop_insn.s
    gas/testsuite/gas/crx/jscond_insn.d
    gas/testsuite/gas/crx/jscond_insn.s
    gas/testsuite/gas/crx/list_insn.d
    gas/testsuite/gas/crx/list_insn.s
    gas/testsuite/gas/crx/load_stor_insn.d
    gas/testsuite/gas/crx/load_stor_insn.s
    gas/testsuite/gas/crx/misc_insn.d
    gas/testsuite/gas/crx/misc_insn.s
    gas/testsuite/gas/crx/no_op_insn.d
    gas/testsuite/gas/crx/no_op_insn.s
    gas/testsuite/gas/crx/shift_insn.d
    gas/testsuite/gas/crx/shift_insn.s
    gas/testsuite/gas/d10v/address-001.d
    gas/testsuite/gas/d10v/address-001.s
    gas/testsuite/gas/d10v/address-002.l
    gas/testsuite/gas/d10v/address-002.s
    gas/testsuite/gas/d10v/address-003.l
    gas/testsuite/gas/d10v/address-003.s
    gas/testsuite/gas/d10v/address-004.l
    gas/testsuite/gas/d10v/address-004.s
    gas/testsuite/gas/d10v/address-005.l
    gas/testsuite/gas/d10v/address-005.s
    gas/testsuite/gas/d10v/address-006.l
    gas/testsuite/gas/d10v/address-006.s
    gas/testsuite/gas/d10v/address-007.l
    gas/testsuite/gas/d10v/address-007.s
    gas/testsuite/gas/d10v/address-008.l
    gas/testsuite/gas/d10v/address-008.s
    gas/testsuite/gas/d10v/address-009.l
    gas/testsuite/gas/d10v/address-009.s
    gas/testsuite/gas/d10v/address-010.l
    gas/testsuite/gas/d10v/address-010.s
    gas/testsuite/gas/d10v/address-011.l
    gas/testsuite/gas/d10v/address-011.s
    gas/testsuite/gas/d10v/address-012.l
    gas/testsuite/gas/d10v/address-012.s
    gas/testsuite/gas/d10v/address-013.l
    gas/testsuite/gas/d10v/address-013.s
    gas/testsuite/gas/d10v/address-014.l
    gas/testsuite/gas/d10v/address-014.s
    gas/testsuite/gas/d10v/address-015.l
    gas/testsuite/gas/d10v/address-015.s
    gas/testsuite/gas/d10v/address-016.l
    gas/testsuite/gas/d10v/address-016.s
    gas/testsuite/gas/d10v/address-017.l
    gas/testsuite/gas/d10v/address-017.s
    gas/testsuite/gas/d10v/address-018.l
    gas/testsuite/gas/d10v/address-018.s
    gas/testsuite/gas/d10v/address-019.l
    gas/testsuite/gas/d10v/address-019.s
    gas/testsuite/gas/d10v/address-020.l
    gas/testsuite/gas/d10v/address-020.s
    gas/testsuite/gas/d10v/address-021.l
    gas/testsuite/gas/d10v/address-021.s
    gas/testsuite/gas/d10v/address-022.l
    gas/testsuite/gas/d10v/address-022.s
    gas/testsuite/gas/d10v/address-023.l
    gas/testsuite/gas/d10v/address-023.s
    gas/testsuite/gas/d10v/address-024.l
    gas/testsuite/gas/d10v/address-024.s
    gas/testsuite/gas/d10v/address-025.l
    gas/testsuite/gas/d10v/address-025.s
    gas/testsuite/gas/d10v/address-026.l
    gas/testsuite/gas/d10v/address-026.s
    gas/testsuite/gas/d10v/address-027.l
    gas/testsuite/gas/d10v/address-027.s
    gas/testsuite/gas/d10v/address-028.l
    gas/testsuite/gas/d10v/address-028.s
    gas/testsuite/gas/d10v/address-029.l
    gas/testsuite/gas/d10v/address-029.s
    gas/testsuite/gas/d10v/address-030.l
    gas/testsuite/gas/d10v/address-030.s
    gas/testsuite/gas/d10v/address-031.l
    gas/testsuite/gas/d10v/address-031.s
    gas/testsuite/gas/d10v/address-032.l
    gas/testsuite/gas/d10v/address-032.s
    gas/testsuite/gas/d10v/address-033.l
    gas/testsuite/gas/d10v/address-033.s
    gas/testsuite/gas/d10v/address-034.l
    gas/testsuite/gas/d10v/address-034.s
    gas/testsuite/gas/d10v/address-035.l
    gas/testsuite/gas/d10v/address-035.s
    gas/testsuite/gas/d10v/address-036.l
    gas/testsuite/gas/d10v/address-036.s
    gas/testsuite/gas/d10v/address-037.l
    gas/testsuite/gas/d10v/address-037.s
    gas/testsuite/gas/d10v/address-038.l
    gas/testsuite/gas/d10v/address-038.s
    gas/testsuite/gas/d10v/address-039.l
    gas/testsuite/gas/d10v/address-039.s
    gas/testsuite/gas/d10v/address-040.l
    gas/testsuite/gas/d10v/address-040.s
    gas/testsuite/gas/d10v/address-041.l
    gas/testsuite/gas/d10v/address-041.s
    gas/testsuite/gas/d10v/control-001.d
    gas/testsuite/gas/d10v/control-001.s
    gas/testsuite/gas/d10v/d10v.exp
    gas/testsuite/gas/d10v/error-001.d
    gas/testsuite/gas/d10v/error-001.s
    gas/testsuite/gas/d10v/error-002.d
    gas/testsuite/gas/d10v/error-002.s
    gas/testsuite/gas/d10v/immediate-001.d
    gas/testsuite/gas/d10v/immediate-001.s
    gas/testsuite/gas/d10v/immediate-002.d
    gas/testsuite/gas/d10v/immediate-002.s
    gas/testsuite/gas/d10v/immediate-003.d
    gas/testsuite/gas/d10v/immediate-003.s
    gas/testsuite/gas/d10v/immediate-004.d
    gas/testsuite/gas/d10v/immediate-004.s
    gas/testsuite/gas/d10v/immediate-005.d
    gas/testsuite/gas/d10v/immediate-005.s
    gas/testsuite/gas/d10v/immediate-006.d
    gas/testsuite/gas/d10v/immediate-006.s
    gas/testsuite/gas/d10v/immediate-007.d
    gas/testsuite/gas/d10v/immediate-007.s
    gas/testsuite/gas/d10v/inst.d
    gas/testsuite/gas/d10v/inst.s
    gas/testsuite/gas/d10v/instruction_packing-001.d
    gas/testsuite/gas/d10v/instruction_packing-001.s
    gas/testsuite/gas/d10v/instruction_packing-002.d
    gas/testsuite/gas/d10v/instruction_packing-002.s
    gas/testsuite/gas/d10v/instruction_packing-003.d
    gas/testsuite/gas/d10v/instruction_packing-003.s
    gas/testsuite/gas/d10v/instruction_packing-004.d
    gas/testsuite/gas/d10v/instruction_packing-004.s
    gas/testsuite/gas/d10v/instruction_packing-005.d
    gas/testsuite/gas/d10v/instruction_packing-005.s
    gas/testsuite/gas/d10v/instruction_packing-006.d
    gas/testsuite/gas/d10v/instruction_packing-006.s
    gas/testsuite/gas/d10v/instruction_packing-007.d
    gas/testsuite/gas/d10v/instruction_packing-007.s
    gas/testsuite/gas/d10v/instruction_packing-008.d
    gas/testsuite/gas/d10v/instruction_packing-009.d
    gas/testsuite/gas/d10v/instruction_packing-010.d
    gas/testsuite/gas/d10v/instruction_packing.d
    gas/testsuite/gas/d10v/instruction_packing.s
    gas/testsuite/gas/d10v/label-001.d
    gas/testsuite/gas/d10v/label-001.s
    gas/testsuite/gas/d10v/warning-001.d
    gas/testsuite/gas/d10v/warning-001.s
    gas/testsuite/gas/d10v/warning-002.d
    gas/testsuite/gas/d10v/warning-002.s
    gas/testsuite/gas/d10v/warning-003.d
    gas/testsuite/gas/d10v/warning-003.s
    gas/testsuite/gas/d10v/warning-004.d
    gas/testsuite/gas/d10v/warning-004.s
    gas/testsuite/gas/d10v/warning-005.d
    gas/testsuite/gas/d10v/warning-005.s
    gas/testsuite/gas/d10v/warning-006.d
    gas/testsuite/gas/d10v/warning-006.s
    gas/testsuite/gas/d10v/warning-007.d
    gas/testsuite/gas/d10v/warning-007.s
    gas/testsuite/gas/d10v/warning-008.d
    gas/testsuite/gas/d10v/warning-008.s
    gas/testsuite/gas/d10v/warning-009.d
    gas/testsuite/gas/d10v/warning-009.s
    gas/testsuite/gas/d10v/warning-010.d
    gas/testsuite/gas/d10v/warning-010.s
    gas/testsuite/gas/d10v/warning-011.d
    gas/testsuite/gas/d10v/warning-011.s
    gas/testsuite/gas/d10v/warning-012.d
    gas/testsuite/gas/d10v/warning-012.s
    gas/testsuite/gas/d10v/warning-013.d
    gas/testsuite/gas/d10v/warning-013.s
    gas/testsuite/gas/d10v/warning-014.d
    gas/testsuite/gas/d10v/warning-014.s
    gas/testsuite/gas/d10v/warning-015.d
    gas/testsuite/gas/d10v/warning-016.d
    gas/testsuite/gas/d10v/warning-016.s
    gas/testsuite/gas/d10v/warning-017.d
    gas/testsuite/gas/d10v/warning-017.s
    gas/testsuite/gas/d10v/warning-018.d
    gas/testsuite/gas/d10v/warning-018.s
    gas/testsuite/gas/d10v/warning-019.d
    gas/testsuite/gas/d10v/warning-019.s
    gas/testsuite/gas/d30v/align.d
    gas/testsuite/gas/d30v/align.s
    gas/testsuite/gas/d30v/array.d
    gas/testsuite/gas/d30v/array.s
    gas/testsuite/gas/d30v/bittest.d
    gas/testsuite/gas/d30v/bittest.l
    gas/testsuite/gas/d30v/bittest.s
    gas/testsuite/gas/d30v/d30.exp
    gas/testsuite/gas/d30v/guard-debug.d
    gas/testsuite/gas/d30v/guard-debug.s
    gas/testsuite/gas/d30v/guard.d
    gas/testsuite/gas/d30v/guard.s
    gas/testsuite/gas/d30v/inst.d
    gas/testsuite/gas/d30v/inst.s
    gas/testsuite/gas/d30v/label-debug.d
    gas/testsuite/gas/d30v/label-debug.s
    gas/testsuite/gas/d30v/label.d
    gas/testsuite/gas/d30v/label.s
    gas/testsuite/gas/d30v/mul.d
    gas/testsuite/gas/d30v/mul.s
    gas/testsuite/gas/d30v/opt.d
    gas/testsuite/gas/d30v/opt.s
    gas/testsuite/gas/d30v/reloc.d
    gas/testsuite/gas/d30v/reloc.s
    gas/testsuite/gas/d30v/serial.l
    gas/testsuite/gas/d30v/serial.s
    gas/testsuite/gas/d30v/serial2.l
    gas/testsuite/gas/d30v/serial2.s
    gas/testsuite/gas/d30v/serial2O.l
    gas/testsuite/gas/d30v/serial2O.s
    gas/testsuite/gas/d30v/warn_oddreg.l
    gas/testsuite/gas/d30v/warn_oddreg.s
    gas/testsuite/gas/dlx/alltests.exp
    gas/testsuite/gas/dlx/branch.d
    gas/testsuite/gas/dlx/branch.s
    gas/testsuite/gas/dlx/itype.d
    gas/testsuite/gas/dlx/itype.s
    gas/testsuite/gas/dlx/lhi.d
    gas/testsuite/gas/dlx/lhi.s
    gas/testsuite/gas/dlx/load.d
    gas/testsuite/gas/dlx/load.s
    gas/testsuite/gas/dlx/lohi.d
    gas/testsuite/gas/dlx/lohi.s
    gas/testsuite/gas/dlx/rtype.d
    gas/testsuite/gas/dlx/rtype.s
    gas/testsuite/gas/dlx/store.d
    gas/testsuite/gas/dlx/store.s
    gas/testsuite/gas/elf/ehopt0.d
    gas/testsuite/gas/elf/ehopt0.s
    gas/testsuite/gas/elf/elf.exp
    gas/testsuite/gas/elf/group0.s
    gas/testsuite/gas/elf/group0a.d
    gas/testsuite/gas/elf/group0b.d
    gas/testsuite/gas/elf/group1.s
    gas/testsuite/gas/elf/group1a.d
    gas/testsuite/gas/elf/group1b.d
    gas/testsuite/gas/elf/section0.d
    gas/testsuite/gas/elf/section0.s
    gas/testsuite/gas/elf/section1.d
    gas/testsuite/gas/elf/section1.s
    gas/testsuite/gas/elf/section2.e
    gas/testsuite/gas/elf/section2.e-m32r
    gas/testsuite/gas/elf/section2.e-mips
    gas/testsuite/gas/elf/section2.e-miwmmxt
    gas/testsuite/gas/elf/section2.l
    gas/testsuite/gas/elf/section2.s
    gas/testsuite/gas/elf/section3.d
    gas/testsuite/gas/elf/section3.s
    gas/testsuite/gas/elf/section4.d
    gas/testsuite/gas/elf/section4.s
    gas/testsuite/gas/elf/symver.d
    gas/testsuite/gas/elf/symver.s
    gas/testsuite/gas/elf/type.e
    gas/testsuite/gas/elf/type.s
    gas/testsuite/gas/fr30/allinsn.d
    gas/testsuite/gas/fr30/allinsn.exp
    gas/testsuite/gas/fr30/allinsn.s
    gas/testsuite/gas/fr30/fr30.exp
    gas/testsuite/gas/frv/allinsn.d
    gas/testsuite/gas/frv/allinsn.exp
    gas/testsuite/gas/frv/allinsn.s
    gas/testsuite/gas/frv/fdpic.d
    gas/testsuite/gas/frv/fdpic.s
    gas/testsuite/gas/frv/fr405-insn.d
    gas/testsuite/gas/frv/fr405-insn.l
    gas/testsuite/gas/frv/fr405-insn.s
    gas/testsuite/gas/frv/fr450-insn.d
    gas/testsuite/gas/frv/fr450-insn.l
    gas/testsuite/gas/frv/fr450-insn.s
    gas/testsuite/gas/frv/fr450-media-issue.l
    gas/testsuite/gas/frv/fr450-media-issue.s
    gas/testsuite/gas/frv/fr450-spr.d
    gas/testsuite/gas/frv/fr450-spr.s
    gas/testsuite/gas/frv/fr550-pack1.d
    gas/testsuite/gas/frv/fr550-pack1.s
    gas/testsuite/gas/frv/reloc1.d
    gas/testsuite/gas/frv/reloc1.s
    gas/testsuite/gas/h8300/addsub.s
    gas/testsuite/gas/h8300/addsubh.s
    gas/testsuite/gas/h8300/addsubrxcheck.s
    gas/testsuite/gas/h8300/addsubs.s
    gas/testsuite/gas/h8300/bitops1.s
    gas/testsuite/gas/h8300/bitops1h.s
    gas/testsuite/gas/h8300/bitops1s.s
    gas/testsuite/gas/h8300/bitops2.s
    gas/testsuite/gas/h8300/bitops2h.s
    gas/testsuite/gas/h8300/bitops2s.s
    gas/testsuite/gas/h8300/bitops3.s
    gas/testsuite/gas/h8300/bitops3h.s
    gas/testsuite/gas/h8300/bitops3s.s
    gas/testsuite/gas/h8300/bitops4.s
    gas/testsuite/gas/h8300/bitops4h.s
    gas/testsuite/gas/h8300/bitops4s.s
    gas/testsuite/gas/h8300/branch-coff.s
    gas/testsuite/gas/h8300/branch-elf.s
    gas/testsuite/gas/h8300/branchh-coff.s
    gas/testsuite/gas/h8300/branchh-elf.s
    gas/testsuite/gas/h8300/branchs-coff.s
    gas/testsuite/gas/h8300/branchs-elf.s
    gas/testsuite/gas/h8300/cbranch.s
    gas/testsuite/gas/h8300/cbranchh.s
    gas/testsuite/gas/h8300/cbranchs.s
    gas/testsuite/gas/h8300/cmpsi2.s
    gas/testsuite/gas/h8300/compare.s
    gas/testsuite/gas/h8300/compareh.s
    gas/testsuite/gas/h8300/compares.s
    gas/testsuite/gas/h8300/decimal.s
    gas/testsuite/gas/h8300/decimalh.s
    gas/testsuite/gas/h8300/decimals.s
    gas/testsuite/gas/h8300/divmul.s
    gas/testsuite/gas/h8300/divmulh.s
    gas/testsuite/gas/h8300/divmuls.s
    gas/testsuite/gas/h8300/extendh.s
    gas/testsuite/gas/h8300/extends.s
    gas/testsuite/gas/h8300/ffxx1-coff.d
    gas/testsuite/gas/h8300/ffxx1-coff.s
    gas/testsuite/gas/h8300/ffxx1-elf.d
    gas/testsuite/gas/h8300/ffxx1-elf.s
    gas/testsuite/gas/h8300/h8300-coff.exp
    gas/testsuite/gas/h8300/h8300-elf.exp
    gas/testsuite/gas/h8300/h8300.exp
    gas/testsuite/gas/h8300/h8sx_disp2.d
    gas/testsuite/gas/h8300/h8sx_disp2.s
    gas/testsuite/gas/h8300/h8sx_mov_imm.d
    gas/testsuite/gas/h8300/h8sx_mov_imm.s
    gas/testsuite/gas/h8300/h8sx_rtsl.d
    gas/testsuite/gas/h8300/h8sx_rtsl.s
    gas/testsuite/gas/h8300/incdec.s
    gas/testsuite/gas/h8300/incdech.s
    gas/testsuite/gas/h8300/incdecs.s
    gas/testsuite/gas/h8300/logical.s
    gas/testsuite/gas/h8300/logicalh.s
    gas/testsuite/gas/h8300/logicals.s
    gas/testsuite/gas/h8300/macs.s
    gas/testsuite/gas/h8300/misc.s
    gas/testsuite/gas/h8300/misch.s
    gas/testsuite/gas/h8300/miscs.s
    gas/testsuite/gas/h8300/mov32bug.s
    gas/testsuite/gas/h8300/movb.s
    gas/testsuite/gas/h8300/movbh.s
    gas/testsuite/gas/h8300/movbs.s
    gas/testsuite/gas/h8300/movlh.s
    gas/testsuite/gas/h8300/movls.s
    gas/testsuite/gas/h8300/movw.s
    gas/testsuite/gas/h8300/movwh.s
    gas/testsuite/gas/h8300/movws.s
    gas/testsuite/gas/h8300/multiples.s
    gas/testsuite/gas/h8300/pushpop.s
    gas/testsuite/gas/h8300/pushpoph.s
    gas/testsuite/gas/h8300/pushpops.s
    gas/testsuite/gas/h8300/rotsh.s
    gas/testsuite/gas/h8300/rotshh.s
    gas/testsuite/gas/h8300/rotshs.s
    gas/testsuite/gas/h8300/symaddgen.s
    gas/testsuite/gas/h8300/t01_mov.exp
    gas/testsuite/gas/h8300/t01_mov.s
    gas/testsuite/gas/h8300/t02_mova.exp
    gas/testsuite/gas/h8300/t02_mova.s
    gas/testsuite/gas/h8300/t03_add.exp
    gas/testsuite/gas/h8300/t03_add.s
    gas/testsuite/gas/h8300/t04_sub.exp
    gas/testsuite/gas/h8300/t04_sub.s
    gas/testsuite/gas/h8300/t05_cmp.exp
    gas/testsuite/gas/h8300/t05_cmp.s
    gas/testsuite/gas/h8300/t06_ari2.exp
    gas/testsuite/gas/h8300/t06_ari2.s
    gas/testsuite/gas/h8300/t07_ari3.exp
    gas/testsuite/gas/h8300/t07_ari3.s
    gas/testsuite/gas/h8300/t08_or.exp
    gas/testsuite/gas/h8300/t08_or.s
    gas/testsuite/gas/h8300/t09_xor.exp
    gas/testsuite/gas/h8300/t09_xor.s
    gas/testsuite/gas/h8300/t10_and.exp
    gas/testsuite/gas/h8300/t10_and.s
    gas/testsuite/gas/h8300/t11_logs.exp
    gas/testsuite/gas/h8300/t11_logs.s
    gas/testsuite/gas/h8300/t12_bit.exp
    gas/testsuite/gas/h8300/t12_bit.s
    gas/testsuite/gas/h8300/t13_otr.exp
    gas/testsuite/gas/h8300/t13_otr.s
    gas/testsuite/gas/hppa/README
    gas/testsuite/gas/hppa/basic/add.s
    gas/testsuite/gas/hppa/basic/add2.s
    gas/testsuite/gas/hppa/basic/addi.s
    gas/testsuite/gas/hppa/basic/basic.exp
    gas/testsuite/gas/hppa/basic/branch.s
    gas/testsuite/gas/hppa/basic/branch2.s
    gas/testsuite/gas/hppa/basic/comclr.s
    gas/testsuite/gas/hppa/basic/copr.s
    gas/testsuite/gas/hppa/basic/coprmem.s
    gas/testsuite/gas/hppa/basic/dcor.s
    gas/testsuite/gas/hppa/basic/dcor2.s
    gas/testsuite/gas/hppa/basic/deposit.s
    gas/testsuite/gas/hppa/basic/deposit2.s
    gas/testsuite/gas/hppa/basic/deposit3.s
    gas/testsuite/gas/hppa/basic/ds.s
    gas/testsuite/gas/hppa/basic/extract.s
    gas/testsuite/gas/hppa/basic/extract2.s
    gas/testsuite/gas/hppa/basic/extract3.s
    gas/testsuite/gas/hppa/basic/fmem.s
    gas/testsuite/gas/hppa/basic/fmemLRbug.s
    gas/testsuite/gas/hppa/basic/fp_comp.s
    gas/testsuite/gas/hppa/basic/fp_comp2.s
    gas/testsuite/gas/hppa/basic/fp_conv.s
    gas/testsuite/gas/hppa/basic/fp_fcmp.s
    gas/testsuite/gas/hppa/basic/fp_misc.s
    gas/testsuite/gas/hppa/basic/imem.s
    gas/testsuite/gas/hppa/basic/immed.s
    gas/testsuite/gas/hppa/basic/logical.s
    gas/testsuite/gas/hppa/basic/media.s
    gas/testsuite/gas/hppa/basic/perf.s
    gas/testsuite/gas/hppa/basic/purge.s
    gas/testsuite/gas/hppa/basic/purge2.s
    gas/testsuite/gas/hppa/basic/sh1add.s
    gas/testsuite/gas/hppa/basic/sh2add.s
    gas/testsuite/gas/hppa/basic/sh3add.s
    gas/testsuite/gas/hppa/basic/shift.s
    gas/testsuite/gas/hppa/basic/shift2.s
    gas/testsuite/gas/hppa/basic/shift3.s
    gas/testsuite/gas/hppa/basic/shladd.s
    gas/testsuite/gas/hppa/basic/shladd2.s
    gas/testsuite/gas/hppa/basic/special.s
    gas/testsuite/gas/hppa/basic/spop.s
    gas/testsuite/gas/hppa/basic/sub.s
    gas/testsuite/gas/hppa/basic/sub2.s
    gas/testsuite/gas/hppa/basic/subi.s
    gas/testsuite/gas/hppa/basic/system.s
    gas/testsuite/gas/hppa/basic/system2.s
    gas/testsuite/gas/hppa/basic/unit.s
    gas/testsuite/gas/hppa/basic/unit2.s
    gas/testsuite/gas/hppa/basic/weird.s
    gas/testsuite/gas/hppa/parse/align1.s
    gas/testsuite/gas/hppa/parse/align2.s
    gas/testsuite/gas/hppa/parse/appbug.s
    gas/testsuite/gas/hppa/parse/badfmpyadd.s
    gas/testsuite/gas/hppa/parse/block1.s
    gas/testsuite/gas/hppa/parse/block2.s
    gas/testsuite/gas/hppa/parse/calldatabug.s
    gas/testsuite/gas/hppa/parse/callinfobug.s
    gas/testsuite/gas/hppa/parse/defbug.s
    gas/testsuite/gas/hppa/parse/entrybug.s
    gas/testsuite/gas/hppa/parse/exportbug.s
    gas/testsuite/gas/hppa/parse/exprbug.s
    gas/testsuite/gas/hppa/parse/fixup7bug.s
    gas/testsuite/gas/hppa/parse/global.s
    gas/testsuite/gas/hppa/parse/labelbug.s
    gas/testsuite/gas/hppa/parse/linesepbug.s
    gas/testsuite/gas/hppa/parse/lselbug.s
    gas/testsuite/gas/hppa/parse/nosubspace.s
    gas/testsuite/gas/hppa/parse/parse.exp
    gas/testsuite/gas/hppa/parse/procbug.s
    gas/testsuite/gas/hppa/parse/regpopbug.s
    gas/testsuite/gas/hppa/parse/space.s
    gas/testsuite/gas/hppa/parse/spacebug.s
    gas/testsuite/gas/hppa/parse/ssbug.s
    gas/testsuite/gas/hppa/parse/stdreg.s
    gas/testsuite/gas/hppa/parse/stringer.s
    gas/testsuite/gas/hppa/parse/undefbug.s
    gas/testsuite/gas/hppa/parse/versionbug.s
    gas/testsuite/gas/hppa/parse/xmpyubug.s
    gas/testsuite/gas/hppa/reloc/applybug.s
    gas/testsuite/gas/hppa/reloc/blebug.s
    gas/testsuite/gas/hppa/reloc/blebug2.s
    gas/testsuite/gas/hppa/reloc/blebug3.s
    gas/testsuite/gas/hppa/reloc/exitbug.s
    gas/testsuite/gas/hppa/reloc/fixupbug.s
    gas/testsuite/gas/hppa/reloc/funcrelocbug.s
    gas/testsuite/gas/hppa/reloc/labelopbug.s
    gas/testsuite/gas/hppa/reloc/longcall.s
    gas/testsuite/gas/hppa/reloc/picreloc.s
    gas/testsuite/gas/hppa/reloc/plabelbug.s
    gas/testsuite/gas/hppa/reloc/r_no_reloc.s
    gas/testsuite/gas/hppa/reloc/reduce.s
    gas/testsuite/gas/hppa/reloc/reduce2.s
    gas/testsuite/gas/hppa/reloc/reduce3.s
    gas/testsuite/gas/hppa/reloc/reloc.exp
    gas/testsuite/gas/hppa/reloc/roundmode.s
    gas/testsuite/gas/hppa/reloc/selectorbug.s
    gas/testsuite/gas/hppa/unsorted/align3.s
    gas/testsuite/gas/hppa/unsorted/align4.s
    gas/testsuite/gas/hppa/unsorted/brlenbug.s
    gas/testsuite/gas/hppa/unsorted/common.s
    gas/testsuite/gas/hppa/unsorted/fragbug.s
    gas/testsuite/gas/hppa/unsorted/globalbug.s
    gas/testsuite/gas/hppa/unsorted/importbug.s
    gas/testsuite/gas/hppa/unsorted/labeldiffs.s
    gas/testsuite/gas/hppa/unsorted/locallabel.s
    gas/testsuite/gas/hppa/unsorted/ss_align.s
    gas/testsuite/gas/hppa/unsorted/unsorted.exp
    gas/testsuite/gas/i386/absrel.d
    gas/testsuite/gas/i386/absrel.s
    gas/testsuite/gas/i386/amd.d
    gas/testsuite/gas/i386/amd.s
    gas/testsuite/gas/i386/divide.d
    gas/testsuite/gas/i386/divide.s
    gas/testsuite/gas/i386/float.l
    gas/testsuite/gas/i386/float.s
    gas/testsuite/gas/i386/general.l
    gas/testsuite/gas/i386/general.s
    gas/testsuite/gas/i386/gotpc.d
    gas/testsuite/gas/i386/gotpc.s
    gas/testsuite/gas/i386/i386.exp
    gas/testsuite/gas/i386/intel.d
    gas/testsuite/gas/i386/intel.s
    gas/testsuite/gas/i386/intel16.d
    gas/testsuite/gas/i386/intel16.s
    gas/testsuite/gas/i386/intelpic.d
    gas/testsuite/gas/i386/intelpic.s
    gas/testsuite/gas/i386/inval.l
    gas/testsuite/gas/i386/inval.s
    gas/testsuite/gas/i386/jump.d
    gas/testsuite/gas/i386/jump.s
    gas/testsuite/gas/i386/jump16.d
    gas/testsuite/gas/i386/jump16.s
    gas/testsuite/gas/i386/katmai.d
    gas/testsuite/gas/i386/katmai.s
    gas/testsuite/gas/i386/modrm.l
    gas/testsuite/gas/i386/modrm.s
    gas/testsuite/gas/i386/naked.d
    gas/testsuite/gas/i386/naked.s
    gas/testsuite/gas/i386/opcode.d
    gas/testsuite/gas/i386/opcode.s
    gas/testsuite/gas/i386/padlock.d
    gas/testsuite/gas/i386/padlock.s
    gas/testsuite/gas/i386/pcrel.d
    gas/testsuite/gas/i386/pcrel.s
    gas/testsuite/gas/i386/prefix.d
    gas/testsuite/gas/i386/prefix.s
    gas/testsuite/gas/i386/prescott.d
    gas/testsuite/gas/i386/prescott.s
    gas/testsuite/gas/i386/relax.d
    gas/testsuite/gas/i386/relax.s
    gas/testsuite/gas/i386/reloc.d
    gas/testsuite/gas/i386/reloc.s
    gas/testsuite/gas/i386/secrel.d
    gas/testsuite/gas/i386/secrel.s
    gas/testsuite/gas/i386/sse2.d
    gas/testsuite/gas/i386/sse2.s
    gas/testsuite/gas/i386/ssemmx2.d
    gas/testsuite/gas/i386/ssemmx2.s
    gas/testsuite/gas/i386/sub.d
    gas/testsuite/gas/i386/sub.s
    gas/testsuite/gas/i386/tlsd.d
    gas/testsuite/gas/i386/tlsd.s
    gas/testsuite/gas/i386/tlsnopic.d
    gas/testsuite/gas/i386/tlsnopic.s
    gas/testsuite/gas/i386/tlspic.d
    gas/testsuite/gas/i386/tlspic.s
    gas/testsuite/gas/i386/white.l
    gas/testsuite/gas/i386/white.s
    gas/testsuite/gas/i386/x86-64-addr32.d
    gas/testsuite/gas/i386/x86-64-addr32.s
    gas/testsuite/gas/i386/x86-64-inval.l
    gas/testsuite/gas/i386/x86-64-inval.s
    gas/testsuite/gas/i386/x86-64-opcode.d
    gas/testsuite/gas/i386/x86-64-opcode.s
    gas/testsuite/gas/i386/x86-64-rip.d
    gas/testsuite/gas/i386/x86-64-rip.s
    gas/testsuite/gas/i386/x86-64-unwind.d
    gas/testsuite/gas/i386/x86-64-unwind.s
    gas/testsuite/gas/i386/x86_64.d
    gas/testsuite/gas/i386/x86_64.s
    gas/testsuite/gas/i860/README.i860
    gas/testsuite/gas/i860/bitwise.d
    gas/testsuite/gas/i860/bitwise.s
    gas/testsuite/gas/i860/branch.d
    gas/testsuite/gas/i860/branch.s
    gas/testsuite/gas/i860/bte.d
    gas/testsuite/gas/i860/bte.s
    gas/testsuite/gas/i860/dir-align01.d
    gas/testsuite/gas/i860/dir-align01.s
    gas/testsuite/gas/i860/dir-intel01.d
    gas/testsuite/gas/i860/dir-intel01.s
    gas/testsuite/gas/i860/dir-intel02.d
    gas/testsuite/gas/i860/dir-intel02.s
    gas/testsuite/gas/i860/dir-intel03-err.l
    gas/testsuite/gas/i860/dir-intel03-err.s
    gas/testsuite/gas/i860/dual01.d
    gas/testsuite/gas/i860/dual01.s
    gas/testsuite/gas/i860/dual02-err.l
    gas/testsuite/gas/i860/dual02-err.s
    gas/testsuite/gas/i860/dual03.d
    gas/testsuite/gas/i860/dual03.s
    gas/testsuite/gas/i860/fldst01.d
    gas/testsuite/gas/i860/fldst01.s
    gas/testsuite/gas/i860/fldst02.d
    gas/testsuite/gas/i860/fldst02.s
    gas/testsuite/gas/i860/fldst03.d
    gas/testsuite/gas/i860/fldst03.s
    gas/testsuite/gas/i860/fldst04.d
    gas/testsuite/gas/i860/fldst04.s
    gas/testsuite/gas/i860/fldst05.d
    gas/testsuite/gas/i860/fldst05.s
    gas/testsuite/gas/i860/fldst06.d
    gas/testsuite/gas/i860/fldst06.s
    gas/testsuite/gas/i860/fldst07.d
    gas/testsuite/gas/i860/fldst07.s
    gas/testsuite/gas/i860/fldst08.d
    gas/testsuite/gas/i860/fldst08.s
    gas/testsuite/gas/i860/float01.d
    gas/testsuite/gas/i860/float01.s
    gas/testsuite/gas/i860/float02.d
    gas/testsuite/gas/i860/float02.s
    gas/testsuite/gas/i860/float03.d
    gas/testsuite/gas/i860/float03.s
    gas/testsuite/gas/i860/float04.d
    gas/testsuite/gas/i860/float04.s
    gas/testsuite/gas/i860/form.d
    gas/testsuite/gas/i860/form.s
    gas/testsuite/gas/i860/i860.exp
    gas/testsuite/gas/i860/iarith.d
    gas/testsuite/gas/i860/iarith.s
    gas/testsuite/gas/i860/ldst01.d
    gas/testsuite/gas/i860/ldst01.s
    gas/testsuite/gas/i860/ldst02.d
    gas/testsuite/gas/i860/ldst02.s
    gas/testsuite/gas/i860/ldst03.d
    gas/testsuite/gas/i860/ldst03.s
    gas/testsuite/gas/i860/ldst04.d
    gas/testsuite/gas/i860/ldst04.s
    gas/testsuite/gas/i860/ldst05.d
    gas/testsuite/gas/i860/ldst05.s
    gas/testsuite/gas/i860/ldst06.d
    gas/testsuite/gas/i860/ldst06.s
    gas/testsuite/gas/i860/pfam.d
    gas/testsuite/gas/i860/pfam.s
    gas/testsuite/gas/i860/pfmam.d
    gas/testsuite/gas/i860/pfmam.s
    gas/testsuite/gas/i860/pfmsm.d
    gas/testsuite/gas/i860/pfmsm.s
    gas/testsuite/gas/i860/pfsm.d
    gas/testsuite/gas/i860/pfsm.s
    gas/testsuite/gas/i860/pseudo-ops01.d
    gas/testsuite/gas/i860/pseudo-ops01.s
    gas/testsuite/gas/i860/regress01.d
    gas/testsuite/gas/i860/regress01.s
    gas/testsuite/gas/i860/shift.d
    gas/testsuite/gas/i860/shift.s
    gas/testsuite/gas/i860/simd.d
    gas/testsuite/gas/i860/simd.s
    gas/testsuite/gas/i860/system.d
    gas/testsuite/gas/i860/system.s
    gas/testsuite/gas/i860/xp.d
    gas/testsuite/gas/i860/xp.s
    gas/testsuite/gas/ia64/alias-ilp32.d
    gas/testsuite/gas/ia64/alias.d
    gas/testsuite/gas/ia64/alias.s
    gas/testsuite/gas/ia64/align.d
    gas/testsuite/gas/ia64/align.s
    gas/testsuite/gas/ia64/dependency-1.d
    gas/testsuite/gas/ia64/dependency-1.s
    gas/testsuite/gas/ia64/dv-branch.d
    gas/testsuite/gas/ia64/dv-branch.s
    gas/testsuite/gas/ia64/dv-entry-err.l
    gas/testsuite/gas/ia64/dv-entry-err.s
    gas/testsuite/gas/ia64/dv-imply.d
    gas/testsuite/gas/ia64/dv-imply.s
    gas/testsuite/gas/ia64/dv-mutex-err.l
    gas/testsuite/gas/ia64/dv-mutex-err.s
    gas/testsuite/gas/ia64/dv-mutex.d
    gas/testsuite/gas/ia64/dv-mutex.s
    gas/testsuite/gas/ia64/dv-raw-err.l
    gas/testsuite/gas/ia64/dv-raw-err.s
    gas/testsuite/gas/ia64/dv-safe.d
    gas/testsuite/gas/ia64/dv-safe.s
    gas/testsuite/gas/ia64/dv-srlz.d
    gas/testsuite/gas/ia64/dv-srlz.s
    gas/testsuite/gas/ia64/dv-war-err.l
    gas/testsuite/gas/ia64/dv-war-err.s
    gas/testsuite/gas/ia64/dv-waw-err.l
    gas/testsuite/gas/ia64/dv-waw-err.s
    gas/testsuite/gas/ia64/fixup-dump.pl
    gas/testsuite/gas/ia64/global.d
    gas/testsuite/gas/ia64/global.s
    gas/testsuite/gas/ia64/group-1.d
    gas/testsuite/gas/ia64/group-1.s
    gas/testsuite/gas/ia64/ia64.exp
    gas/testsuite/gas/ia64/invalid-ar.l
    gas/testsuite/gas/ia64/invalid-ar.s
    gas/testsuite/gas/ia64/ldxmov-1.d
    gas/testsuite/gas/ia64/ldxmov-1.s
    gas/testsuite/gas/ia64/ldxmov-2.l
    gas/testsuite/gas/ia64/ldxmov-2.s
    gas/testsuite/gas/ia64/ltoff22x-1.d
    gas/testsuite/gas/ia64/ltoff22x-1.s
    gas/testsuite/gas/ia64/opc-a-err.l
    gas/testsuite/gas/ia64/opc-a-err.s
    gas/testsuite/gas/ia64/opc-a.d
    gas/testsuite/gas/ia64/opc-a.pl
    gas/testsuite/gas/ia64/opc-a.s
    gas/testsuite/gas/ia64/opc-b.d
    gas/testsuite/gas/ia64/opc-b.pl
    gas/testsuite/gas/ia64/opc-b.s
    gas/testsuite/gas/ia64/opc-f.d
    gas/testsuite/gas/ia64/opc-f.pl
    gas/testsuite/gas/ia64/opc-f.s
    gas/testsuite/gas/ia64/opc-i.d
    gas/testsuite/gas/ia64/opc-i.pl
    gas/testsuite/gas/ia64/opc-i.s
    gas/testsuite/gas/ia64/opc-m.d
    gas/testsuite/gas/ia64/opc-m.pl
    gas/testsuite/gas/ia64/opc-m.s
    gas/testsuite/gas/ia64/opc-x.d
    gas/testsuite/gas/ia64/opc-x.s
    gas/testsuite/gas/ia64/order.d
    gas/testsuite/gas/ia64/order.s
    gas/testsuite/gas/ia64/real.d
    gas/testsuite/gas/ia64/real.s
    gas/testsuite/gas/ia64/regs.d
    gas/testsuite/gas/ia64/regs.pl
    gas/testsuite/gas/ia64/regs.s
    gas/testsuite/gas/ia64/secname-ilp32.d
    gas/testsuite/gas/ia64/secname.d
    gas/testsuite/gas/ia64/secname.s
    gas/testsuite/gas/ia64/tls.d
    gas/testsuite/gas/ia64/tls.s
    gas/testsuite/gas/ia64/unwind-ilp32.d
    gas/testsuite/gas/ia64/unwind.d
    gas/testsuite/gas/ia64/unwind.s
    gas/testsuite/gas/ieee-fp/x930509a.exp
    gas/testsuite/gas/ieee-fp/x930509a.s
    gas/testsuite/gas/iq2000/allinsn.d
    gas/testsuite/gas/iq2000/allinsn.exp
    gas/testsuite/gas/iq2000/allinsn.s
    gas/testsuite/gas/iq2000/hazard0.s
    gas/testsuite/gas/iq2000/hazard1.s
    gas/testsuite/gas/iq2000/hazard2.s
    gas/testsuite/gas/iq2000/hazard3.s
    gas/testsuite/gas/iq2000/hazard4.s
    gas/testsuite/gas/iq2000/hazard5.s
    gas/testsuite/gas/iq2000/load-hazards.exp
    gas/testsuite/gas/iq2000/nohazard.s
    gas/testsuite/gas/iq2000/noyield.s
    gas/testsuite/gas/iq2000/odd-ldw.exp
    gas/testsuite/gas/iq2000/odd-sdw.exp
    gas/testsuite/gas/iq2000/oddldw.s
    gas/testsuite/gas/iq2000/oddsdw.s
    gas/testsuite/gas/iq2000/q10allinsn.d
    gas/testsuite/gas/iq2000/q10allinsn.s
    gas/testsuite/gas/iq2000/q10hazard3.s
    gas/testsuite/gas/iq2000/q10hazard4.s
    gas/testsuite/gas/iq2000/q10hazard5.s
    gas/testsuite/gas/iq2000/q10load-hazards.exp
    gas/testsuite/gas/iq2000/q10nohazard.s
    gas/testsuite/gas/iq2000/q10noyield.s
    gas/testsuite/gas/iq2000/q10test0.d
    gas/testsuite/gas/iq2000/q10test0.s
    gas/testsuite/gas/iq2000/q10test1.d
    gas/testsuite/gas/iq2000/q10test1.s
    gas/testsuite/gas/iq2000/q10test10.d
    gas/testsuite/gas/iq2000/q10test10.s
    gas/testsuite/gas/iq2000/q10test11.d
    gas/testsuite/gas/iq2000/q10test11.s
    gas/testsuite/gas/iq2000/q10test12.d
    gas/testsuite/gas/iq2000/q10test12.s
    gas/testsuite/gas/iq2000/q10test2.d
    gas/testsuite/gas/iq2000/q10test2.s
    gas/testsuite/gas/iq2000/q10test3.d
    gas/testsuite/gas/iq2000/q10test3.s
    gas/testsuite/gas/iq2000/q10test4.d
    gas/testsuite/gas/iq2000/q10test4.s
    gas/testsuite/gas/iq2000/q10test5.d
    gas/testsuite/gas/iq2000/q10test5.s
    gas/testsuite/gas/iq2000/q10test6.d
    gas/testsuite/gas/iq2000/q10test6.s
    gas/testsuite/gas/iq2000/q10test7.d
    gas/testsuite/gas/iq2000/q10test7.s
    gas/testsuite/gas/iq2000/q10test8.d
    gas/testsuite/gas/iq2000/q10test8.s
    gas/testsuite/gas/iq2000/q10test9.d
    gas/testsuite/gas/iq2000/q10test9.s
    gas/testsuite/gas/iq2000/q10yield.exp
    gas/testsuite/gas/iq2000/test.exp
    gas/testsuite/gas/iq2000/yield.exp
    gas/testsuite/gas/iq2000/yield0.s
    gas/testsuite/gas/iq2000/yield1.s
    gas/testsuite/gas/iq2000/yield2.s
    gas/testsuite/gas/m32r/allinsn.d
    gas/testsuite/gas/m32r/allinsn.exp
    gas/testsuite/gas/m32r/allinsn.s
    gas/testsuite/gas/m32r/error.exp
    gas/testsuite/gas/m32r/fslot.d
    gas/testsuite/gas/m32r/fslot.s
    gas/testsuite/gas/m32r/fslotx.d
    gas/testsuite/gas/m32r/fslotx.s
    gas/testsuite/gas/m32r/high-1.d
    gas/testsuite/gas/m32r/high-1.s
    gas/testsuite/gas/m32r/interfere.s
    gas/testsuite/gas/m32r/m32r.exp
    gas/testsuite/gas/m32r/m32r2.d
    gas/testsuite/gas/m32r/m32r2.exp
    gas/testsuite/gas/m32r/m32r2.s
    gas/testsuite/gas/m32r/m32rx.d
    gas/testsuite/gas/m32r/m32rx.exp
    gas/testsuite/gas/m32r/m32rx.s
    gas/testsuite/gas/m32r/outofrange.s
    gas/testsuite/gas/m32r/parallel-2.d
    gas/testsuite/gas/m32r/parallel-2.s
    gas/testsuite/gas/m32r/parallel.s
    gas/testsuite/gas/m32r/pic.d
    gas/testsuite/gas/m32r/pic.exp
    gas/testsuite/gas/m32r/pic.s
    gas/testsuite/gas/m32r/pic2.d
    gas/testsuite/gas/m32r/pic2.s
    gas/testsuite/gas/m32r/relax-1.d
    gas/testsuite/gas/m32r/relax-1.s
    gas/testsuite/gas/m32r/relax-2.d
    gas/testsuite/gas/m32r/relax-2.s
    gas/testsuite/gas/m32r/seth.d
    gas/testsuite/gas/m32r/seth.s
    gas/testsuite/gas/m32r/signed-relocs.d
    gas/testsuite/gas/m32r/signed-relocs.s
    gas/testsuite/gas/m32r/uppercase.d
    gas/testsuite/gas/m32r/uppercase.s
    gas/testsuite/gas/m32r/wrongsize.s
    gas/testsuite/gas/m68hc11/abi-m68hc11-16-32.d
    gas/testsuite/gas/m68hc11/abi-m68hc11-16-64.d
    gas/testsuite/gas/m68hc11/abi-m68hc11-32-32.d
    gas/testsuite/gas/m68hc11/abi-m68hc11-32-64.d
    gas/testsuite/gas/m68hc11/abi.s
    gas/testsuite/gas/m68hc11/all_insns.d
    gas/testsuite/gas/m68hc11/all_insns.s
    gas/testsuite/gas/m68hc11/branchs12.d
    gas/testsuite/gas/m68hc11/branchs12.s
    gas/testsuite/gas/m68hc11/bug-1825.d
    gas/testsuite/gas/m68hc11/bug-1825.s
    gas/testsuite/gas/m68hc11/indexed12.d
    gas/testsuite/gas/m68hc11/indexed12.s
    gas/testsuite/gas/m68hc11/insns-dwarf2.d
    gas/testsuite/gas/m68hc11/insns.d
    gas/testsuite/gas/m68hc11/insns.s
    gas/testsuite/gas/m68hc11/insns12.d
    gas/testsuite/gas/m68hc11/insns12.s
    gas/testsuite/gas/m68hc11/lbranch-dwarf2.d
    gas/testsuite/gas/m68hc11/lbranch.d
    gas/testsuite/gas/m68hc11/lbranch.s
    gas/testsuite/gas/m68hc11/m68hc11.exp
    gas/testsuite/gas/m68hc11/malis-include.s
    gas/testsuite/gas/m68hc11/malis.d
    gas/testsuite/gas/m68hc11/malis.s
    gas/testsuite/gas/m68hc11/movb.d
    gas/testsuite/gas/m68hc11/movb.s
    gas/testsuite/gas/m68hc11/opers12-dwarf2.d
    gas/testsuite/gas/m68hc11/opers12.d
    gas/testsuite/gas/m68hc11/opers12.s
    gas/testsuite/gas/m68k-coff/gas.exp
    gas/testsuite/gas/m68k-coff/p2389.s
    gas/testsuite/gas/m68k-coff/p2389a.s
    gas/testsuite/gas/m68k-coff/p2430.s
    gas/testsuite/gas/m68k-coff/p2430a.s
    gas/testsuite/gas/m68k-coff/t1.s
    gas/testsuite/gas/m68k/all.exp
    gas/testsuite/gas/m68k/bitfield.d
    gas/testsuite/gas/m68k/bitfield.s
    gas/testsuite/gas/m68k/cas.d
    gas/testsuite/gas/m68k/cas.s
    gas/testsuite/gas/m68k/disperr.s
    gas/testsuite/gas/m68k/fmoveml.d
    gas/testsuite/gas/m68k/fmoveml.s
    gas/testsuite/gas/m68k/link.d
    gas/testsuite/gas/m68k/link.s
    gas/testsuite/gas/m68k/mcf-emac.d
    gas/testsuite/gas/m68k/mcf-emac.s
    gas/testsuite/gas/m68k/mcf-mac.d
    gas/testsuite/gas/m68k/mcf-mac.s
    gas/testsuite/gas/m68k/mcf-mov3q.d
    gas/testsuite/gas/m68k/mcf-mov3q.s
    gas/testsuite/gas/m68k/mode5.d
    gas/testsuite/gas/m68k/mode5.s
    gas/testsuite/gas/m68k/op68000.d
    gas/testsuite/gas/m68k/operands.d
    gas/testsuite/gas/m68k/operands.s
    gas/testsuite/gas/m68k/p2410.s
    gas/testsuite/gas/m68k/p2663.s
    gas/testsuite/gas/m68k/pcrel.d
    gas/testsuite/gas/m68k/pcrel.s
    gas/testsuite/gas/m68k/pic1.s
    gas/testsuite/gas/m68k/t2.d
    gas/testsuite/gas/m68k/t2.s
    gas/testsuite/gas/m88k/allinsn.d
    gas/testsuite/gas/m88k/allinsn.s
    gas/testsuite/gas/m88k/init.d
    gas/testsuite/gas/m88k/init.s
    gas/testsuite/gas/m88k/m88k.exp
    gas/testsuite/gas/macros/and.s
    gas/testsuite/gas/macros/app1.d
    gas/testsuite/gas/macros/app1.s
    gas/testsuite/gas/macros/app2.d
    gas/testsuite/gas/macros/app2.s
    gas/testsuite/gas/macros/app3.d
    gas/testsuite/gas/macros/app3.s
    gas/testsuite/gas/macros/app4.d
    gas/testsuite/gas/macros/app4.s
    gas/testsuite/gas/macros/app4b.s
    gas/testsuite/gas/macros/err.s
    gas/testsuite/gas/macros/irp.d
    gas/testsuite/gas/macros/irp.s
    gas/testsuite/gas/macros/macros.exp
    gas/testsuite/gas/macros/rept.d
    gas/testsuite/gas/macros/rept.s
    gas/testsuite/gas/macros/semi.d
    gas/testsuite/gas/macros/semi.s
    gas/testsuite/gas/macros/strings.d
    gas/testsuite/gas/macros/strings.s
    gas/testsuite/gas/macros/test1.d
    gas/testsuite/gas/macros/test1.s
    gas/testsuite/gas/macros/test2.d
    gas/testsuite/gas/macros/test2.s
    gas/testsuite/gas/macros/test3.d
    gas/testsuite/gas/macros/test3.s
    gas/testsuite/gas/mcore/allinsn.d
    gas/testsuite/gas/mcore/allinsn.exp
    gas/testsuite/gas/mcore/allinsn.s
    gas/testsuite/gas/mips/abs.d
    gas/testsuite/gas/mips/abs.s
    gas/testsuite/gas/mips/add.d
    gas/testsuite/gas/mips/add.s
    gas/testsuite/gas/mips/and.d
    gas/testsuite/gas/mips/and.s
    gas/testsuite/gas/mips/baddata1.l
    gas/testsuite/gas/mips/baddata1.s
    gas/testsuite/gas/mips/beq.d
    gas/testsuite/gas/mips/beq.s
    gas/testsuite/gas/mips/bge.d
    gas/testsuite/gas/mips/bge.s
    gas/testsuite/gas/mips/bgeu.d
    gas/testsuite/gas/mips/bgeu.s
    gas/testsuite/gas/mips/blt.d
    gas/testsuite/gas/mips/blt.s
    gas/testsuite/gas/mips/bltu.d
    gas/testsuite/gas/mips/bltu.s
    gas/testsuite/gas/mips/branch-misc-1.d
    gas/testsuite/gas/mips/branch-misc-1.s
    gas/testsuite/gas/mips/branch-misc-2.l
    gas/testsuite/gas/mips/branch-misc-2.s
    gas/testsuite/gas/mips/branch-misc-2pic.l
    gas/testsuite/gas/mips/branch-misc-2pic.s
    gas/testsuite/gas/mips/branch-swap.d
    gas/testsuite/gas/mips/branch-swap.s
    gas/testsuite/gas/mips/break20.d
    gas/testsuite/gas/mips/break20.s
    gas/testsuite/gas/mips/cp0-names-mips32.d
    gas/testsuite/gas/mips/cp0-names-mips32r2.d
    gas/testsuite/gas/mips/cp0-names-mips64.d
    gas/testsuite/gas/mips/cp0-names-mips64r2.d
    gas/testsuite/gas/mips/cp0-names-numeric.d
    gas/testsuite/gas/mips/cp0-names-sb1.d
    gas/testsuite/gas/mips/cp0-names.s
    gas/testsuite/gas/mips/cp0sel-names-mips32.d
    gas/testsuite/gas/mips/cp0sel-names-mips32r2.d
    gas/testsuite/gas/mips/cp0sel-names-mips64.d
    gas/testsuite/gas/mips/cp0sel-names-mips64r2.d
    gas/testsuite/gas/mips/cp0sel-names-numeric.d
    gas/testsuite/gas/mips/cp0sel-names-sb1.d
    gas/testsuite/gas/mips/cp0sel-names.s
    gas/testsuite/gas/mips/delay.d
    gas/testsuite/gas/mips/delay.s
    gas/testsuite/gas/mips/div-ilocks.d
    gas/testsuite/gas/mips/div.d
    gas/testsuite/gas/mips/div.s
    gas/testsuite/gas/mips/dli.d
    gas/testsuite/gas/mips/dli.s
    gas/testsuite/gas/mips/e32-rel2.d
    gas/testsuite/gas/mips/e32-rel4.d
    gas/testsuite/gas/mips/e32el-rel2.d
    gas/testsuite/gas/mips/elf-consthilo.d
    gas/testsuite/gas/mips/elf-consthilo.s
    gas/testsuite/gas/mips/elf-jal.d
    gas/testsuite/gas/mips/elf-rel-got-n32.d
    gas/testsuite/gas/mips/elf-rel-got-n32.s
    gas/testsuite/gas/mips/elf-rel-got-n64.d
    gas/testsuite/gas/mips/elf-rel-got-n64.s
    gas/testsuite/gas/mips/elf-rel-xgot-n32.d
    gas/testsuite/gas/mips/elf-rel-xgot-n64.d
    gas/testsuite/gas/mips/elf-rel.d
    gas/testsuite/gas/mips/elf-rel.s
    gas/testsuite/gas/mips/elf-rel10.d
    gas/testsuite/gas/mips/elf-rel10.s
    gas/testsuite/gas/mips/elf-rel11.d
    gas/testsuite/gas/mips/elf-rel11.s
    gas/testsuite/gas/mips/elf-rel12.d
    gas/testsuite/gas/mips/elf-rel12.s
    gas/testsuite/gas/mips/elf-rel13.d
    gas/testsuite/gas/mips/elf-rel13.s
    gas/testsuite/gas/mips/elf-rel14.d
    gas/testsuite/gas/mips/elf-rel14.s
    gas/testsuite/gas/mips/elf-rel15.d
    gas/testsuite/gas/mips/elf-rel15.s
    gas/testsuite/gas/mips/elf-rel16.d
    gas/testsuite/gas/mips/elf-rel16.s
    gas/testsuite/gas/mips/elf-rel17.d
    gas/testsuite/gas/mips/elf-rel17.s
    gas/testsuite/gas/mips/elf-rel18.d
    gas/testsuite/gas/mips/elf-rel18.s
    gas/testsuite/gas/mips/elf-rel19.d
    gas/testsuite/gas/mips/elf-rel19.s
    gas/testsuite/gas/mips/elf-rel2.d
    gas/testsuite/gas/mips/elf-rel2.s
    gas/testsuite/gas/mips/elf-rel20.d
    gas/testsuite/gas/mips/elf-rel20.s
    gas/testsuite/gas/mips/elf-rel21.d
    gas/testsuite/gas/mips/elf-rel21.s
    gas/testsuite/gas/mips/elf-rel22.d
    gas/testsuite/gas/mips/elf-rel22.s
    gas/testsuite/gas/mips/elf-rel23.d
    gas/testsuite/gas/mips/elf-rel23.s
    gas/testsuite/gas/mips/elf-rel24.d
    gas/testsuite/gas/mips/elf-rel24.s
    gas/testsuite/gas/mips/elf-rel3.d
    gas/testsuite/gas/mips/elf-rel3.s
    gas/testsuite/gas/mips/elf-rel4.d
    gas/testsuite/gas/mips/elf-rel4.s
    gas/testsuite/gas/mips/elf-rel5.d
    gas/testsuite/gas/mips/elf-rel5.s
    gas/testsuite/gas/mips/elf-rel6.d
    gas/testsuite/gas/mips/elf-rel6.s
    gas/testsuite/gas/mips/elf-rel7.d
    gas/testsuite/gas/mips/elf-rel7.s
    gas/testsuite/gas/mips/elf-rel8.d
    gas/testsuite/gas/mips/elf-rel8.s
    gas/testsuite/gas/mips/elf-rel9.d
    gas/testsuite/gas/mips/elf-rel9.s
    gas/testsuite/gas/mips/elf_arch_mips1.d
    gas/testsuite/gas/mips/elf_arch_mips2.d
    gas/testsuite/gas/mips/elf_arch_mips3.d
    gas/testsuite/gas/mips/elf_arch_mips32.d
    gas/testsuite/gas/mips/elf_arch_mips32r2.d
    gas/testsuite/gas/mips/elf_arch_mips4.d
    gas/testsuite/gas/mips/elf_arch_mips5.d
    gas/testsuite/gas/mips/elf_arch_mips64.d
    gas/testsuite/gas/mips/elf_arch_mips64r2.d
    gas/testsuite/gas/mips/elf_ase_mips16.d
    gas/testsuite/gas/mips/elf_e_flags.c
    gas/testsuite/gas/mips/elf_e_flags.s
    gas/testsuite/gas/mips/elf_e_flags1.d
    gas/testsuite/gas/mips/elf_e_flags2.d
    gas/testsuite/gas/mips/elf_e_flags3.d
    gas/testsuite/gas/mips/elf_e_flags4.d
    gas/testsuite/gas/mips/elfel-rel.d
    gas/testsuite/gas/mips/elfel-rel2.d
    gas/testsuite/gas/mips/elfel-rel3.d
    gas/testsuite/gas/mips/empty.s
    gas/testsuite/gas/mips/expr1.d
    gas/testsuite/gas/mips/expr1.s
    gas/testsuite/gas/mips/fpr-names-32.d
    gas/testsuite/gas/mips/fpr-names-64.d
    gas/testsuite/gas/mips/fpr-names-n32.d
    gas/testsuite/gas/mips/fpr-names-numeric.d
    gas/testsuite/gas/mips/fpr-names.s
    gas/testsuite/gas/mips/gpr-names-32.d
    gas/testsuite/gas/mips/gpr-names-64.d
    gas/testsuite/gas/mips/gpr-names-n32.d
    gas/testsuite/gas/mips/gpr-names-numeric.d
    gas/testsuite/gas/mips/gpr-names.s
    gas/testsuite/gas/mips/hwr-names-mips32r2.d
    gas/testsuite/gas/mips/hwr-names-mips64r2.d
    gas/testsuite/gas/mips/hwr-names-numeric.d
    gas/testsuite/gas/mips/hwr-names.s
    gas/testsuite/gas/mips/illegal.l
    gas/testsuite/gas/mips/illegal.s
    gas/testsuite/gas/mips/itbl
    gas/testsuite/gas/mips/itbl.s
    gas/testsuite/gas/mips/jal-newabi.d
    gas/testsuite/gas/mips/jal-newabi.s
    gas/testsuite/gas/mips/jal-range.l
    gas/testsuite/gas/mips/jal-range.s
    gas/testsuite/gas/mips/jal-svr4pic.d
    gas/testsuite/gas/mips/jal-svr4pic.s
    gas/testsuite/gas/mips/jal-xgot.d
    gas/testsuite/gas/mips/jal.d
    gas/testsuite/gas/mips/jal.s
    gas/testsuite/gas/mips/la-svr4pic.d
    gas/testsuite/gas/mips/la-xgot.d
    gas/testsuite/gas/mips/la.d
    gas/testsuite/gas/mips/la.s
    gas/testsuite/gas/mips/lb-pic.s
    gas/testsuite/gas/mips/lb-svr4pic-ilocks.d
    gas/testsuite/gas/mips/lb-svr4pic.d
    gas/testsuite/gas/mips/lb-xgot-ilocks.d
    gas/testsuite/gas/mips/lb-xgot.d
    gas/testsuite/gas/mips/lb.d
    gas/testsuite/gas/mips/lb.s
    gas/testsuite/gas/mips/lca-svr4pic.d
    gas/testsuite/gas/mips/lca-xgot.d
    gas/testsuite/gas/mips/lca.s
    gas/testsuite/gas/mips/ld-ilocks-addr32.d
    gas/testsuite/gas/mips/ld-ilocks.d
    gas/testsuite/gas/mips/ld-pic.s
    gas/testsuite/gas/mips/ld-svr4pic.d
    gas/testsuite/gas/mips/ld-xgot.d
    gas/testsuite/gas/mips/ld.d
    gas/testsuite/gas/mips/ld.s
    gas/testsuite/gas/mips/ldstla-32-shared.d
    gas/testsuite/gas/mips/ldstla-32.d
    gas/testsuite/gas/mips/ldstla-32.s
    gas/testsuite/gas/mips/ldstla-n32-shared.d
    gas/testsuite/gas/mips/ldstla-n32.d
    gas/testsuite/gas/mips/ldstla-n32.s
    gas/testsuite/gas/mips/ldstla-n64-shared.d
    gas/testsuite/gas/mips/ldstla-n64.d
    gas/testsuite/gas/mips/ldstla-n64.s
    gas/testsuite/gas/mips/li.d
    gas/testsuite/gas/mips/li.s
    gas/testsuite/gas/mips/lif-svr4pic.d
    gas/testsuite/gas/mips/lif-xgot.d
    gas/testsuite/gas/mips/lifloat.d
    gas/testsuite/gas/mips/lifloat.s
    gas/testsuite/gas/mips/lineno.d
    gas/testsuite/gas/mips/lineno.s
    gas/testsuite/gas/mips/macro-warn-1-n32.d
    gas/testsuite/gas/mips/macro-warn-1-n32.l
    gas/testsuite/gas/mips/macro-warn-1.d
    gas/testsuite/gas/mips/macro-warn-1.l
    gas/testsuite/gas/mips/macro-warn-1.s
    gas/testsuite/gas/mips/macro-warn-2-n32.d
    gas/testsuite/gas/mips/macro-warn-2.d
    gas/testsuite/gas/mips/macro-warn-2.l
    gas/testsuite/gas/mips/macro-warn-2.s
    gas/testsuite/gas/mips/macro-warn-3.d
    gas/testsuite/gas/mips/macro-warn-3.l
    gas/testsuite/gas/mips/macro-warn-3.s
    gas/testsuite/gas/mips/macro-warn-4.d
    gas/testsuite/gas/mips/macro-warn-4.l
    gas/testsuite/gas/mips/macro-warn-4.s
    gas/testsuite/gas/mips/mips-abi32-pic.d
    gas/testsuite/gas/mips/mips-abi32-pic.s
    gas/testsuite/gas/mips/mips-abi32-pic2.d
    gas/testsuite/gas/mips/mips-abi32-pic2.s
    gas/testsuite/gas/mips/mips-abi32.d
    gas/testsuite/gas/mips/mips-abi32.s
    gas/testsuite/gas/mips/mips-gp32-fp32-pic.d
    gas/testsuite/gas/mips/mips-gp32-fp32-pic.s
    gas/testsuite/gas/mips/mips-gp32-fp32.d
    gas/testsuite/gas/mips/mips-gp32-fp32.s
    gas/testsuite/gas/mips/mips-gp32-fp64-pic.d
    gas/testsuite/gas/mips/mips-gp32-fp64-pic.s
    gas/testsuite/gas/mips/mips-gp32-fp64.d
    gas/testsuite/gas/mips/mips-gp32-fp64.s
    gas/testsuite/gas/mips/mips-gp64-fp32-pic.d
    gas/testsuite/gas/mips/mips-gp64-fp32-pic.s
    gas/testsuite/gas/mips/mips-gp64-fp32.d
    gas/testsuite/gas/mips/mips-gp64-fp32.l
    gas/testsuite/gas/mips/mips-gp64-fp32.s
    gas/testsuite/gas/mips/mips-gp64-fp64-pic.d
    gas/testsuite/gas/mips/mips-gp64-fp64-pic.s
    gas/testsuite/gas/mips/mips-gp64-fp64.d
    gas/testsuite/gas/mips/mips-gp64-fp64.l
    gas/testsuite/gas/mips/mips-gp64-fp64.s
    gas/testsuite/gas/mips/mips-jalx.d
    gas/testsuite/gas/mips/mips-jalx.s
    gas/testsuite/gas/mips/mips-no-jalx.l
    gas/testsuite/gas/mips/mips-no-jalx.s
    gas/testsuite/gas/mips/mips.exp
    gas/testsuite/gas/mips/mips16-64.d
    gas/testsuite/gas/mips/mips16-e.d
    gas/testsuite/gas/mips/mips16-e.s
    gas/testsuite/gas/mips/mips16-f.d
    gas/testsuite/gas/mips/mips16-f.s
    gas/testsuite/gas/mips/mips16-jalx.d
    gas/testsuite/gas/mips/mips16-jalx.s
    gas/testsuite/gas/mips/mips16.d
    gas/testsuite/gas/mips/mips16.s
    gas/testsuite/gas/mips/mips32.d
    gas/testsuite/gas/mips/mips32.s
    gas/testsuite/gas/mips/mips32r2-ill-fp64.l
    gas/testsuite/gas/mips/mips32r2-ill-fp64.s
    gas/testsuite/gas/mips/mips32r2-ill.l
    gas/testsuite/gas/mips/mips32r2-ill.s
    gas/testsuite/gas/mips/mips32r2.d
    gas/testsuite/gas/mips/mips32r2.s
    gas/testsuite/gas/mips/mips4.d
    gas/testsuite/gas/mips/mips4.s
    gas/testsuite/gas/mips/mips4010.d
    gas/testsuite/gas/mips/mips4010.s
    gas/testsuite/gas/mips/mips4100.d
    gas/testsuite/gas/mips/mips4100.s
    gas/testsuite/gas/mips/mips4650.d
    gas/testsuite/gas/mips/mips4650.s
    gas/testsuite/gas/mips/mips5.d
    gas/testsuite/gas/mips/mips5.l
    gas/testsuite/gas/mips/mips5.s
    gas/testsuite/gas/mips/mips64-mdmx.d
    gas/testsuite/gas/mips/mips64-mdmx.s
    gas/testsuite/gas/mips/mips64-mips3d-incl.d
    gas/testsuite/gas/mips/mips64-mips3d.d
    gas/testsuite/gas/mips/mips64-mips3d.l
    gas/testsuite/gas/mips/mips64-mips3d.s
    gas/testsuite/gas/mips/mips64.d
    gas/testsuite/gas/mips/mips64.s
    gas/testsuite/gas/mips/mips64r2-ill.l
    gas/testsuite/gas/mips/mips64r2-ill.s
    gas/testsuite/gas/mips/mips64r2.d
    gas/testsuite/gas/mips/mips64r2.s
    gas/testsuite/gas/mips/mipsel16-e.d
    gas/testsuite/gas/mips/mipsel16-f.d
    gas/testsuite/gas/mips/mul-ilocks.d
    gas/testsuite/gas/mips/mul.d
    gas/testsuite/gas/mips/mul.s
    gas/testsuite/gas/mips/n32-consec.d
    gas/testsuite/gas/mips/n32-consec.s
    gas/testsuite/gas/mips/nodelay.d
    gas/testsuite/gas/mips/perfcount.d
    gas/testsuite/gas/mips/perfcount.s
    gas/testsuite/gas/mips/relax-swap1-mips1.d
    gas/testsuite/gas/mips/relax-swap1-mips2.d
    gas/testsuite/gas/mips/relax-swap1.l
    gas/testsuite/gas/mips/relax-swap1.s
    gas/testsuite/gas/mips/relax-swap2.d
    gas/testsuite/gas/mips/relax-swap2.l
    gas/testsuite/gas/mips/relax-swap2.s
    gas/testsuite/gas/mips/relax.d
    gas/testsuite/gas/mips/relax.l
    gas/testsuite/gas/mips/relax.s
    gas/testsuite/gas/mips/rm7000.d
    gas/testsuite/gas/mips/rm7000.s
    gas/testsuite/gas/mips/rol-hw.d
    gas/testsuite/gas/mips/rol-hw.l
    gas/testsuite/gas/mips/rol.d
    gas/testsuite/gas/mips/rol.l
    gas/testsuite/gas/mips/rol.s
    gas/testsuite/gas/mips/rol64-hw.d
    gas/testsuite/gas/mips/rol64-hw.l
    gas/testsuite/gas/mips/rol64.d
    gas/testsuite/gas/mips/rol64.l
    gas/testsuite/gas/mips/rol64.s
    gas/testsuite/gas/mips/sb.d
    gas/testsuite/gas/mips/sb.s
    gas/testsuite/gas/mips/sb1-ext-mdmx.d
    gas/testsuite/gas/mips/sb1-ext-mdmx.s
    gas/testsuite/gas/mips/sb1-ext-ps.d
    gas/testsuite/gas/mips/sb1-ext-ps.s
    gas/testsuite/gas/mips/set-arch.d
    gas/testsuite/gas/mips/set-arch.l
    gas/testsuite/gas/mips/set-arch.s
    gas/testsuite/gas/mips/sync.d
    gas/testsuite/gas/mips/sync.s
    gas/testsuite/gas/mips/tmips16-e.d
    gas/testsuite/gas/mips/tmips16-f.d
    gas/testsuite/gas/mips/tmipsel16-e.d
    gas/testsuite/gas/mips/tmipsel16-f.d
    gas/testsuite/gas/mips/trap20.d
    gas/testsuite/gas/mips/trap20.s
    gas/testsuite/gas/mips/trunc.d
    gas/testsuite/gas/mips/trunc.s
    gas/testsuite/gas/mips/uld.d
    gas/testsuite/gas/mips/uld.s
    gas/testsuite/gas/mips/uld2-eb.d
    gas/testsuite/gas/mips/uld2-el.d
    gas/testsuite/gas/mips/uld2.l
    gas/testsuite/gas/mips/uld2.s
    gas/testsuite/gas/mips/ulh-pic.s
    gas/testsuite/gas/mips/ulh-svr4pic.d
    gas/testsuite/gas/mips/ulh-xgot.d
    gas/testsuite/gas/mips/ulh.d
    gas/testsuite/gas/mips/ulh.s
    gas/testsuite/gas/mips/ulh2-eb.d
    gas/testsuite/gas/mips/ulh2-el.d
    gas/testsuite/gas/mips/ulh2.l
    gas/testsuite/gas/mips/ulh2.s
    gas/testsuite/gas/mips/ulw.d
    gas/testsuite/gas/mips/ulw.s
    gas/testsuite/gas/mips/ulw2-eb-ilocks.d
    gas/testsuite/gas/mips/ulw2-eb.d
    gas/testsuite/gas/mips/ulw2-el-ilocks.d
    gas/testsuite/gas/mips/ulw2-el.d
    gas/testsuite/gas/mips/ulw2.l
    gas/testsuite/gas/mips/ulw2.s
    gas/testsuite/gas/mips/usd.d
    gas/testsuite/gas/mips/usd.s
    gas/testsuite/gas/mips/ush.d
    gas/testsuite/gas/mips/ush.s
    gas/testsuite/gas/mips/usw.d
    gas/testsuite/gas/mips/usw.s
    gas/testsuite/gas/mips/vr4111.d
    gas/testsuite/gas/mips/vr4111.s
    gas/testsuite/gas/mips/vr4120-2.d
    gas/testsuite/gas/mips/vr4120-2.s
    gas/testsuite/gas/mips/vr4120.d
    gas/testsuite/gas/mips/vr4120.s
    gas/testsuite/gas/mips/vr5400.d
    gas/testsuite/gas/mips/vr5400.s
    gas/testsuite/gas/mips/vr5500.d
    gas/testsuite/gas/mips/vr5500.s
    gas/testsuite/gas/mmix/1cjmp1b-n.d
    gas/testsuite/gas/mmix/1cjmp1b-r.d
    gas/testsuite/gas/mmix/1cjmp1b.d
    gas/testsuite/gas/mmix/1cjmp1b.l
    gas/testsuite/gas/mmix/1cjmp1b.s
    gas/testsuite/gas/mmix/1cjmp1brn.d
    gas/testsuite/gas/mmix/1hjmp1b.d
    gas/testsuite/gas/mmix/1hjmp1b.l
    gas/testsuite/gas/mmix/1hjmp1b.s
    gas/testsuite/gas/mmix/align-1.d
    gas/testsuite/gas/mmix/align-1.s
    gas/testsuite/gas/mmix/basep-1.d
    gas/testsuite/gas/mmix/basep-1.s
    gas/testsuite/gas/mmix/basep-10.d
    gas/testsuite/gas/mmix/basep-10.s
    gas/testsuite/gas/mmix/basep-11.d
    gas/testsuite/gas/mmix/basep-11.s
    gas/testsuite/gas/mmix/basep-1b.d
    gas/testsuite/gas/mmix/basep-2.d
    gas/testsuite/gas/mmix/basep-2.s
    gas/testsuite/gas/mmix/basep-2b.d
    gas/testsuite/gas/mmix/basep-3.d
    gas/testsuite/gas/mmix/basep-3.s
    gas/testsuite/gas/mmix/basep-3b.d
    gas/testsuite/gas/mmix/basep-4.d
    gas/testsuite/gas/mmix/basep-5.d
    gas/testsuite/gas/mmix/basep-6.d
    gas/testsuite/gas/mmix/basep-7.d
    gas/testsuite/gas/mmix/basep-8.d
    gas/testsuite/gas/mmix/basep-8.s
    gas/testsuite/gas/mmix/basep-9.d
    gas/testsuite/gas/mmix/basep-9.s
    gas/testsuite/gas/mmix/bspec-1.d
    gas/testsuite/gas/mmix/bspec-1.s
    gas/testsuite/gas/mmix/bspec-2.d
    gas/testsuite/gas/mmix/bspec-2.s
    gas/testsuite/gas/mmix/builtin1.d
    gas/testsuite/gas/mmix/builtin1.s
    gas/testsuite/gas/mmix/builtin2.d
    gas/testsuite/gas/mmix/builtin3.d
    gas/testsuite/gas/mmix/byte-1.d
    gas/testsuite/gas/mmix/byte-1.s
    gas/testsuite/gas/mmix/bz-c.d
    gas/testsuite/gas/mmix/bz-c.s
    gas/testsuite/gas/mmix/comment-1.d
    gas/testsuite/gas/mmix/comment-1.s
    gas/testsuite/gas/mmix/comment-2.d
    gas/testsuite/gas/mmix/comment-2.s
    gas/testsuite/gas/mmix/comment-3.d
    gas/testsuite/gas/mmix/comment-3.s
    gas/testsuite/gas/mmix/cons-1.d
    gas/testsuite/gas/mmix/cons-1.s
    gas/testsuite/gas/mmix/cons-2.d
    gas/testsuite/gas/mmix/cons-2.s
    gas/testsuite/gas/mmix/err-bpo1.s
    gas/testsuite/gas/mmix/err-bpo2.s
    gas/testsuite/gas/mmix/err-bpo3.s
    gas/testsuite/gas/mmix/err-bpo4.s
    gas/testsuite/gas/mmix/err-bpo5.s
    gas/testsuite/gas/mmix/err-bpo6.s
    gas/testsuite/gas/mmix/err-bspec-1.s
    gas/testsuite/gas/mmix/err-bspec-2.s
    gas/testsuite/gas/mmix/err-bspec-3.s
    gas/testsuite/gas/mmix/err-bspec-4.s
    gas/testsuite/gas/mmix/err-bspec-5.s
    gas/testsuite/gas/mmix/err-builtin.s
    gas/testsuite/gas/mmix/err-byte1.s
    gas/testsuite/gas/mmix/err-byte2.s
    gas/testsuite/gas/mmix/err-case.s
    gas/testsuite/gas/mmix/err-fb-1.s
    gas/testsuite/gas/mmix/err-greg1.s
    gas/testsuite/gas/mmix/err-insn.s
    gas/testsuite/gas/mmix/err-is-1.s
    gas/testsuite/gas/mmix/err-loc-1.s
    gas/testsuite/gas/mmix/err-loc-2.s
    gas/testsuite/gas/mmix/err-loc-3.s
    gas/testsuite/gas/mmix/err-loc-4.s
    gas/testsuite/gas/mmix/err-loc-5.s
    gas/testsuite/gas/mmix/err-loc-6.s
    gas/testsuite/gas/mmix/err-loc-7.s
    gas/testsuite/gas/mmix/err-loc-8.s
    gas/testsuite/gas/mmix/err-local1.s
    gas/testsuite/gas/mmix/err-local2.s
    gas/testsuite/gas/mmix/err-ser-1.s
    gas/testsuite/gas/mmix/err-set.s
    gas/testsuite/gas/mmix/expr-1.d
    gas/testsuite/gas/mmix/expr-1.s
    gas/testsuite/gas/mmix/fb-1.d
    gas/testsuite/gas/mmix/fb-1.s
    gas/testsuite/gas/mmix/fb-2.d
    gas/testsuite/gas/mmix/fb-2.s
    gas/testsuite/gas/mmix/get-op-r.d
    gas/testsuite/gas/mmix/get-op.d
    gas/testsuite/gas/mmix/get-op.l
    gas/testsuite/gas/mmix/get-op.s
    gas/testsuite/gas/mmix/geta-c.d
    gas/testsuite/gas/mmix/geta-c.s
    gas/testsuite/gas/mmix/geta-op-r.d
    gas/testsuite/gas/mmix/geta-op.d
    gas/testsuite/gas/mmix/geta-op.l
    gas/testsuite/gas/mmix/geta-op.s
    gas/testsuite/gas/mmix/geta-opn.d
    gas/testsuite/gas/mmix/geta-oprn.d
    gas/testsuite/gas/mmix/greg1.d
    gas/testsuite/gas/mmix/greg1.s
    gas/testsuite/gas/mmix/greg1a.d
    gas/testsuite/gas/mmix/greg2.d
    gas/testsuite/gas/mmix/greg2.s
    gas/testsuite/gas/mmix/greg2a.d
    gas/testsuite/gas/mmix/greg3.d
    gas/testsuite/gas/mmix/greg3.s
    gas/testsuite/gas/mmix/greg4.d
    gas/testsuite/gas/mmix/greg4.s
    gas/testsuite/gas/mmix/greg5.d
    gas/testsuite/gas/mmix/greg5.s
    gas/testsuite/gas/mmix/greg6.d
    gas/testsuite/gas/mmix/greg6.s
    gas/testsuite/gas/mmix/greg7.d
    gas/testsuite/gas/mmix/greg7.s
    gas/testsuite/gas/mmix/greg8.d
    gas/testsuite/gas/mmix/greg8.s
    gas/testsuite/gas/mmix/greg9.d
    gas/testsuite/gas/mmix/greg9.s
    gas/testsuite/gas/mmix/hex-r.d
    gas/testsuite/gas/mmix/hex.d
    gas/testsuite/gas/mmix/hex.l
    gas/testsuite/gas/mmix/hex.s
    gas/testsuite/gas/mmix/is-1.d
    gas/testsuite/gas/mmix/is-1.s
    gas/testsuite/gas/mmix/jmp-op-n.d
    gas/testsuite/gas/mmix/jmp-op-r.d
    gas/testsuite/gas/mmix/jmp-op.d
    gas/testsuite/gas/mmix/jmp-op.l
    gas/testsuite/gas/mmix/jmp-op.s
    gas/testsuite/gas/mmix/jmp-oprn.d
    gas/testsuite/gas/mmix/jump-c.d
    gas/testsuite/gas/mmix/jump-c.s
    gas/testsuite/gas/mmix/list-in-n.d
    gas/testsuite/gas/mmix/list-in-r.d
    gas/testsuite/gas/mmix/list-in-rn.d
    gas/testsuite/gas/mmix/list-insns.d
    gas/testsuite/gas/mmix/list-insns.l
    gas/testsuite/gas/mmix/list-insns.s
    gas/testsuite/gas/mmix/list-pseudoints.l
    gas/testsuite/gas/mmix/list-pseudoints.s
    gas/testsuite/gas/mmix/list-textfirst
    gas/testsuite/gas/mmix/list-textfirst.l
    gas/testsuite/gas/mmix/list-textfirst.s
    gas/testsuite/gas/mmix/loc-1.d
    gas/testsuite/gas/mmix/loc-1.s
    gas/testsuite/gas/mmix/loc-2.d
    gas/testsuite/gas/mmix/loc-2.s
    gas/testsuite/gas/mmix/loc-3.d
    gas/testsuite/gas/mmix/loc-3.s
    gas/testsuite/gas/mmix/loc-4.d
    gas/testsuite/gas/mmix/loc-4.s
    gas/testsuite/gas/mmix/loc-5.d
    gas/testsuite/gas/mmix/loc-5.s
    gas/testsuite/gas/mmix/local-1.d
    gas/testsuite/gas/mmix/local-1.s
    gas/testsuite/gas/mmix/locall1.d
    gas/testsuite/gas/mmix/locall1.s
    gas/testsuite/gas/mmix/mmix-err.exp
    gas/testsuite/gas/mmix/mmix-list.exp
    gas/testsuite/gas/mmix/mmix.exp
    gas/testsuite/gas/mmix/odd-1.d
    gas/testsuite/gas/mmix/odd-1.s
    gas/testsuite/gas/mmix/op-0-1.d
    gas/testsuite/gas/mmix/op-0-1.s
    gas/testsuite/gas/mmix/op-0-1s.d
    gas/testsuite/gas/mmix/op-0-2.d
    gas/testsuite/gas/mmix/pop-op-r.d
    gas/testsuite/gas/mmix/pop-op.d
    gas/testsuite/gas/mmix/pop-op.l
    gas/testsuite/gas/mmix/pop-op.s
    gas/testsuite/gas/mmix/prefix1.d
    gas/testsuite/gas/mmix/prefix1.s
    gas/testsuite/gas/mmix/prefix2.d
    gas/testsuite/gas/mmix/prefix2.s
    gas/testsuite/gas/mmix/prefix3.d
    gas/testsuite/gas/mmix/prefix3.s
    gas/testsuite/gas/mmix/pseudo-1.d
    gas/testsuite/gas/mmix/pseudo-1.s
    gas/testsuite/gas/mmix/pushgo-op-r.d
    gas/testsuite/gas/mmix/pushgo-op.d
    gas/testsuite/gas/mmix/pushgo-op.l
    gas/testsuite/gas/mmix/pushgo-op.s
    gas/testsuite/gas/mmix/pushj-c.d
    gas/testsuite/gas/mmix/pushj-c.s
    gas/testsuite/gas/mmix/pushj-cs.d
    gas/testsuite/gas/mmix/put-op-r.d
    gas/testsuite/gas/mmix/put-op.d
    gas/testsuite/gas/mmix/put-op.l
    gas/testsuite/gas/mmix/put-op.s
    gas/testsuite/gas/mmix/reg-op-r.d
    gas/testsuite/gas/mmix/reg-op.d
    gas/testsuite/gas/mmix/reg-op.l
    gas/testsuite/gas/mmix/reg-op.s
    gas/testsuite/gas/mmix/reg3-op-r.d
    gas/testsuite/gas/mmix/reg3-op.d
    gas/testsuite/gas/mmix/reg3-op.l
    gas/testsuite/gas/mmix/reg3-op.s
    gas/testsuite/gas/mmix/regt-op-r.d
    gas/testsuite/gas/mmix/regt-op.d
    gas/testsuite/gas/mmix/regt-op.l
    gas/testsuite/gas/mmix/regt-op.s
    gas/testsuite/gas/mmix/regx-op-r.d
    gas/testsuite/gas/mmix/regx-op.d
    gas/testsuite/gas/mmix/regx-op.l
    gas/testsuite/gas/mmix/regx-op.s
    gas/testsuite/gas/mmix/regy-op-r.d
    gas/testsuite/gas/mmix/regy-op.d
    gas/testsuite/gas/mmix/regy-op.l
    gas/testsuite/gas/mmix/regy-op.s
    gas/testsuite/gas/mmix/relax1-n.d
    gas/testsuite/gas/mmix/relax1-r.d
    gas/testsuite/gas/mmix/relax1-rn.d
    gas/testsuite/gas/mmix/relax1.d
    gas/testsuite/gas/mmix/relax1.l
    gas/testsuite/gas/mmix/relax1.s
    gas/testsuite/gas/mmix/relax2.d
    gas/testsuite/gas/mmix/relax2.s
    gas/testsuite/gas/mmix/reloc16-n.d
    gas/testsuite/gas/mmix/reloc16-r.d
    gas/testsuite/gas/mmix/reloc16.d
    gas/testsuite/gas/mmix/reloc16.l
    gas/testsuite/gas/mmix/reloc16.s
    gas/testsuite/gas/mmix/reloc8-r.d
    gas/testsuite/gas/mmix/reloc8.d
    gas/testsuite/gas/mmix/reloc8.l
    gas/testsuite/gas/mmix/reloc8.s
    gas/testsuite/gas/mmix/relocl-n.d
    gas/testsuite/gas/mmix/reloclab-r.d
    gas/testsuite/gas/mmix/reloclab-rs.d
    gas/testsuite/gas/mmix/reloclab-s.d
    gas/testsuite/gas/mmix/reloclab.d
    gas/testsuite/gas/mmix/reloclab.l
    gas/testsuite/gas/mmix/reloclab.s
    gas/testsuite/gas/mmix/reloclrn.d
    gas/testsuite/gas/mmix/relocxrn.d
    gas/testsuite/gas/mmix/resume-op-r.d
    gas/testsuite/gas/mmix/resume-op.d
    gas/testsuite/gas/mmix/resume-op.l
    gas/testsuite/gas/mmix/resume-op.s
    gas/testsuite/gas/mmix/round2-op-r.d
    gas/testsuite/gas/mmix/round2-op.d
    gas/testsuite/gas/mmix/round2-op.l
    gas/testsuite/gas/mmix/round2-op.s
    gas/testsuite/gas/mmix/roundi-op-r.d
    gas/testsuite/gas/mmix/roundi-op.d
    gas/testsuite/gas/mmix/roundi-op.l
    gas/testsuite/gas/mmix/roundi-op.s
    gas/testsuite/gas/mmix/roundr-op-r.d
    gas/testsuite/gas/mmix/roundr-op.d
    gas/testsuite/gas/mmix/roundr-op.l
    gas/testsuite/gas/mmix/roundr-op.s
    gas/testsuite/gas/mmix/save-op-r.d
    gas/testsuite/gas/mmix/save-op.d
    gas/testsuite/gas/mmix/save-op.l
    gas/testsuite/gas/mmix/save-op.s
    gas/testsuite/gas/mmix/set-r.d
    gas/testsuite/gas/mmix/set.d
    gas/testsuite/gas/mmix/set.l
    gas/testsuite/gas/mmix/set.s
    gas/testsuite/gas/mmix/swym-op-r.d
    gas/testsuite/gas/mmix/swym-op.d
    gas/testsuite/gas/mmix/swym-op.l
    gas/testsuite/gas/mmix/swym-op.s
    gas/testsuite/gas/mmix/sym-1.d
    gas/testsuite/gas/mmix/sym-1.s
    gas/testsuite/gas/mmix/sync-op-r.d
    gas/testsuite/gas/mmix/sync-op.d
    gas/testsuite/gas/mmix/sync-op.l
    gas/testsuite/gas/mmix/sync-op.s
    gas/testsuite/gas/mmix/two-op-r.d
    gas/testsuite/gas/mmix/two-op.d
    gas/testsuite/gas/mmix/two-op.l
    gas/testsuite/gas/mmix/two-op.s
    gas/testsuite/gas/mmix/unsave-op-r.d
    gas/testsuite/gas/mmix/unsave-op.d
    gas/testsuite/gas/mmix/unsave-op.l
    gas/testsuite/gas/mmix/unsave-op.s
    gas/testsuite/gas/mmix/weak1-s.d
    gas/testsuite/gas/mmix/weak1.d
    gas/testsuite/gas/mmix/weak1.s
    gas/testsuite/gas/mmix/zerop-1.d
    gas/testsuite/gas/mmix/zerop-1.s
    gas/testsuite/gas/mn10200/add.s
    gas/testsuite/gas/mn10200/basic.exp
    gas/testsuite/gas/mn10200/bcc.s
    gas/testsuite/gas/mn10200/bccx.s
    gas/testsuite/gas/mn10200/bit.s
    gas/testsuite/gas/mn10200/cmp.s
    gas/testsuite/gas/mn10200/ext.s
    gas/testsuite/gas/mn10200/logical.s
    gas/testsuite/gas/mn10200/mov1.s
    gas/testsuite/gas/mn10200/mov2.s
    gas/testsuite/gas/mn10200/mov3.s
    gas/testsuite/gas/mn10200/mov4.s
    gas/testsuite/gas/mn10200/movb.s
    gas/testsuite/gas/mn10200/movbu.s
    gas/testsuite/gas/mn10200/movx.s
    gas/testsuite/gas/mn10200/muldiv.s
    gas/testsuite/gas/mn10200/other.s
    gas/testsuite/gas/mn10200/shift.s
    gas/testsuite/gas/mn10200/sub.s
    gas/testsuite/gas/mn10300/add.s
    gas/testsuite/gas/mn10300/am33-2.c
    gas/testsuite/gas/mn10300/am33-2.d
    gas/testsuite/gas/mn10300/am33-2.s
    gas/testsuite/gas/mn10300/am33.s
    gas/testsuite/gas/mn10300/am33_2.s
    gas/testsuite/gas/mn10300/am33_3.s
    gas/testsuite/gas/mn10300/am33_4.s
    gas/testsuite/gas/mn10300/am33_5.s
    gas/testsuite/gas/mn10300/am33_6.s
    gas/testsuite/gas/mn10300/am33_7.s
    gas/testsuite/gas/mn10300/am33_8.s
    gas/testsuite/gas/mn10300/basic.exp
    gas/testsuite/gas/mn10300/bcc.s
    gas/testsuite/gas/mn10300/bit.s
    gas/testsuite/gas/mn10300/cmp.s
    gas/testsuite/gas/mn10300/ext.s
    gas/testsuite/gas/mn10300/extend.s
    gas/testsuite/gas/mn10300/logical.s
    gas/testsuite/gas/mn10300/loop.s
    gas/testsuite/gas/mn10300/mov1.s
    gas/testsuite/gas/mn10300/mov2.s
    gas/testsuite/gas/mn10300/mov3.s
    gas/testsuite/gas/mn10300/mov4.s
    gas/testsuite/gas/mn10300/mov5.s
    gas/testsuite/gas/mn10300/movbu.s
    gas/testsuite/gas/mn10300/movhu.s
    gas/testsuite/gas/mn10300/movm.s
    gas/testsuite/gas/mn10300/movpc.l
    gas/testsuite/gas/mn10300/movpc.s
    gas/testsuite/gas/mn10300/muldiv.s
    gas/testsuite/gas/mn10300/other.s
    gas/testsuite/gas/mn10300/shift.s
    gas/testsuite/gas/mn10300/sub.s
    gas/testsuite/gas/mn10300/udf.s
    gas/testsuite/gas/mri/char.d
    gas/testsuite/gas/mri/char.s
    gas/testsuite/gas/mri/comment.d
    gas/testsuite/gas/mri/comment.s
    gas/testsuite/gas/mri/common.d
    gas/testsuite/gas/mri/common.s
    gas/testsuite/gas/mri/constants.d
    gas/testsuite/gas/mri/constants.s
    gas/testsuite/gas/mri/empty.s
    gas/testsuite/gas/mri/equ.d
    gas/testsuite/gas/mri/equ.s
    gas/testsuite/gas/mri/expr.d
    gas/testsuite/gas/mri/expr.s
    gas/testsuite/gas/mri/float.d
    gas/testsuite/gas/mri/float.s
    gas/testsuite/gas/mri/for.d
    gas/testsuite/gas/mri/for.s
    gas/testsuite/gas/mri/if.d
    gas/testsuite/gas/mri/if.s
    gas/testsuite/gas/mri/immconst.d
    gas/testsuite/gas/mri/label.d
    gas/testsuite/gas/mri/label.s
    gas/testsuite/gas/mri/moveml.d
    gas/testsuite/gas/mri/moveml.s
    gas/testsuite/gas/mri/mri.exp
    gas/testsuite/gas/mri/repeat.d
    gas/testsuite/gas/mri/repeat.s
    gas/testsuite/gas/mri/semi.d
    gas/testsuite/gas/mri/semi.s
    gas/testsuite/gas/mri/while.d
    gas/testsuite/gas/mri/while.s
    gas/testsuite/gas/msp430/msp430.exp
    gas/testsuite/gas/msp430/opcode.d
    gas/testsuite/gas/msp430/opcode.s
    gas/testsuite/gas/openrisc/addi.d
    gas/testsuite/gas/openrisc/addi.s
    gas/testsuite/gas/openrisc/allinsn.d
    gas/testsuite/gas/openrisc/allinsn.exp
    gas/testsuite/gas/openrisc/allinsn.s
    gas/testsuite/gas/openrisc/lohi.d
    gas/testsuite/gas/openrisc/lohi.s
    gas/testsuite/gas/openrisc/store.d
    gas/testsuite/gas/openrisc/store.s
    gas/testsuite/gas/pdp11/opcode.d
    gas/testsuite/gas/pdp11/opcode.s
    gas/testsuite/gas/pdp11/pdp11.exp
    gas/testsuite/gas/pj/ops.d
    gas/testsuite/gas/pj/ops.s
    gas/testsuite/gas/pj/pj.exp
    gas/testsuite/gas/ppc/aix.exp
    gas/testsuite/gas/ppc/align.s
    gas/testsuite/gas/ppc/altivec.d
    gas/testsuite/gas/ppc/altivec.s
    gas/testsuite/gas/ppc/altivec_xcoff.d
    gas/testsuite/gas/ppc/altivec_xcoff.s
    gas/testsuite/gas/ppc/altivec_xcoff64.d
    gas/testsuite/gas/ppc/altivec_xcoff64.s
    gas/testsuite/gas/ppc/astest.d
    gas/testsuite/gas/ppc/astest.s
    gas/testsuite/gas/ppc/astest2.d
    gas/testsuite/gas/ppc/astest2.s
    gas/testsuite/gas/ppc/astest2_64.d
    gas/testsuite/gas/ppc/astest2_64.s
    gas/testsuite/gas/ppc/astest64.d
    gas/testsuite/gas/ppc/astest64.s
    gas/testsuite/gas/ppc/booke.d
    gas/testsuite/gas/ppc/booke.s
    gas/testsuite/gas/ppc/booke_xcoff.d
    gas/testsuite/gas/ppc/booke_xcoff.s
    gas/testsuite/gas/ppc/booke_xcoff64.d
    gas/testsuite/gas/ppc/booke_xcoff64.s
    gas/testsuite/gas/ppc/e500.d
    gas/testsuite/gas/ppc/e500.s
    gas/testsuite/gas/ppc/generate.sh
    gas/testsuite/gas/ppc/machine.d
    gas/testsuite/gas/ppc/machine.s
    gas/testsuite/gas/ppc/power4.d
    gas/testsuite/gas/ppc/power4.s
    gas/testsuite/gas/ppc/ppc.exp
    gas/testsuite/gas/ppc/simpshft.d
    gas/testsuite/gas/ppc/simpshft.s
    gas/testsuite/gas/ppc/test1elf.asm
    gas/testsuite/gas/ppc/test1elf32.d
    gas/testsuite/gas/ppc/test1elf32.s
    gas/testsuite/gas/ppc/test1elf64.d
    gas/testsuite/gas/ppc/test1elf64.s
    gas/testsuite/gas/ppc/test1xcoff.asm
    gas/testsuite/gas/ppc/test1xcoff32.d
    gas/testsuite/gas/ppc/test1xcoff32.s
    gas/testsuite/gas/ppc/textalign-xcoff-001.d
    gas/testsuite/gas/ppc/textalign-xcoff-001.s
    gas/testsuite/gas/ppc/textalign-xcoff-002.d
    gas/testsuite/gas/s390/opcode.d
    gas/testsuite/gas/s390/opcode.s
    gas/testsuite/gas/s390/opcode64.d
    gas/testsuite/gas/s390/opcode64.s
    gas/testsuite/gas/s390/operands.d
    gas/testsuite/gas/s390/operands.s
    gas/testsuite/gas/s390/operands64.d
    gas/testsuite/gas/s390/operands64.s
    gas/testsuite/gas/s390/reloc.d
    gas/testsuite/gas/s390/reloc.s
    gas/testsuite/gas/s390/reloc64.d
    gas/testsuite/gas/s390/reloc64.s
    gas/testsuite/gas/s390/s390.exp
    gas/testsuite/gas/sh/arch/arch.exp
    gas/testsuite/gas/sh/arch/arch_expected.txt
    gas/testsuite/gas/sh/arch/sh-dsp.s
    gas/testsuite/gas/sh/arch/sh.s
    gas/testsuite/gas/sh/arch/sh2.s
    gas/testsuite/gas/sh/arch/sh2e.s
    gas/testsuite/gas/sh/arch/sh3-dsp.s
    gas/testsuite/gas/sh/arch/sh3-nommu.s
    gas/testsuite/gas/sh/arch/sh3.s
    gas/testsuite/gas/sh/arch/sh3e.s
    gas/testsuite/gas/sh/arch/sh4-nofpu.s
    gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s
    gas/testsuite/gas/sh/arch/sh4.s
    gas/testsuite/gas/sh/arch/sh4a-nofpu.s
    gas/testsuite/gas/sh/arch/sh4a.s
    gas/testsuite/gas/sh/arch/sh4al-dsp.s
    gas/testsuite/gas/sh/basic.exp
    gas/testsuite/gas/sh/dsp.d
    gas/testsuite/gas/sh/dsp.s
    gas/testsuite/gas/sh/err-1.s
    gas/testsuite/gas/sh/err-at.s
    gas/testsuite/gas/sh/err-be.s
    gas/testsuite/gas/sh/err-le.s
    gas/testsuite/gas/sh/err-sh4a-fp.s
    gas/testsuite/gas/sh/err-sh4a.s
    gas/testsuite/gas/sh/err-sh4al-dsp.s
    gas/testsuite/gas/sh/err.exp
    gas/testsuite/gas/sh/fp.s
    gas/testsuite/gas/sh/pcrel-coff.d
    gas/testsuite/gas/sh/pcrel-coff.s
    gas/testsuite/gas/sh/pcrel.d
    gas/testsuite/gas/sh/pcrel.l
    gas/testsuite/gas/sh/pcrel.s
    gas/testsuite/gas/sh/pcrel2.d
    gas/testsuite/gas/sh/pcrel2.s
    gas/testsuite/gas/sh/pic.d
    gas/testsuite/gas/sh/pic.s
    gas/testsuite/gas/sh/renesas-1.d
    gas/testsuite/gas/sh/renesas-1.s
    gas/testsuite/gas/sh/sh2a.d
    gas/testsuite/gas/sh/sh2a.s
    gas/testsuite/gas/sh/sh4a-dsp.d
    gas/testsuite/gas/sh/sh4a-dsp.s
    gas/testsuite/gas/sh/sh4a-fp.d
    gas/testsuite/gas/sh/sh4a-fp.s
    gas/testsuite/gas/sh/sh4a.d
    gas/testsuite/gas/sh/sh4a.s
    gas/testsuite/gas/sh/sh4al-dsp.d
    gas/testsuite/gas/sh/sh4al-dsp.s
    gas/testsuite/gas/sh/sh64/abi-32.d
    gas/testsuite/gas/sh/sh64/abi-32.s
    gas/testsuite/gas/sh/sh64/abi-64.d
    gas/testsuite/gas/sh/sh64/abi-64.s
    gas/testsuite/gas/sh/sh64/basic-1.d
    gas/testsuite/gas/sh/sh64/basic-1.s
    gas/testsuite/gas/sh/sh64/case-1.d
    gas/testsuite/gas/sh/sh64/case-1.s
    gas/testsuite/gas/sh/sh64/case-noexp-1.d
    gas/testsuite/gas/sh/sh64/crange1-1.d
    gas/testsuite/gas/sh/sh64/crange1-2.d
    gas/testsuite/gas/sh/sh64/crange1.s
    gas/testsuite/gas/sh/sh64/crange2-1.d
    gas/testsuite/gas/sh/sh64/crange2-2.d
    gas/testsuite/gas/sh/sh64/crange2-noexp-1.d
    gas/testsuite/gas/sh/sh64/crange2.s
    gas/testsuite/gas/sh/sh64/crange3-1.d
    gas/testsuite/gas/sh/sh64/crange3.s
    gas/testsuite/gas/sh/sh64/crange4-1.d
    gas/testsuite/gas/sh/sh64/crange4.s
    gas/testsuite/gas/sh/sh64/crange5-1.d
    gas/testsuite/gas/sh/sh64/crange5.s
    gas/testsuite/gas/sh/sh64/creg-1.d
    gas/testsuite/gas/sh/sh64/creg-1.s
    gas/testsuite/gas/sh/sh64/creg-2.d
    gas/testsuite/gas/sh/sh64/creg-2.s
    gas/testsuite/gas/sh/sh64/datal-1.s
    gas/testsuite/gas/sh/sh64/datal-2.d
    gas/testsuite/gas/sh/sh64/datal-2.s
    gas/testsuite/gas/sh/sh64/datal-3.s
    gas/testsuite/gas/sh/sh64/datal32-1.d
    gas/testsuite/gas/sh/sh64/datal32-3.d
    gas/testsuite/gas/sh/sh64/datal64-1.d
    gas/testsuite/gas/sh/sh64/datal64-3.d
    gas/testsuite/gas/sh/sh64/endian-1.d
    gas/testsuite/gas/sh/sh64/endian-1.s
    gas/testsuite/gas/sh/sh64/endian-2.d
    gas/testsuite/gas/sh/sh64/endian-2.s
    gas/testsuite/gas/sh/sh64/err-1.s
    gas/testsuite/gas/sh/sh64/err-2.s
    gas/testsuite/gas/sh/sh64/err-3.s
    gas/testsuite/gas/sh/sh64/err-4.s
    gas/testsuite/gas/sh/sh64/err-abi-32.s
    gas/testsuite/gas/sh/sh64/err-abi-64.s
    gas/testsuite/gas/sh/sh64/err-dsp.s
    gas/testsuite/gas/sh/sh64/err-movi-noexp-1.s
    gas/testsuite/gas/sh/sh64/err-noexp-cmd1.s
    gas/testsuite/gas/sh/sh64/err-pt-1.s
    gas/testsuite/gas/sh/sh64/err-pt32-cmd1.s
    gas/testsuite/gas/sh/sh64/err-pt32-cmd2.s
    gas/testsuite/gas/sh/sh64/err-pt32-cmd3.s
    gas/testsuite/gas/sh/sh64/err-ptb-1.s
    gas/testsuite/gas/sh/sh64/err-ptb-2.s
    gas/testsuite/gas/sh/sh64/err.exp
    gas/testsuite/gas/sh/sh64/immexpr1.s
    gas/testsuite/gas/sh/sh64/immexpr2.s
    gas/testsuite/gas/sh/sh64/immexpr32-1.d
    gas/testsuite/gas/sh/sh64/immexpr32-2.d
    gas/testsuite/gas/sh/sh64/immexpr64-1.d
    gas/testsuite/gas/sh/sh64/immexpr64-2.d
    gas/testsuite/gas/sh/sh64/lineno.d
    gas/testsuite/gas/sh/sh64/lineno.s
    gas/testsuite/gas/sh/sh64/localcom-1.d
    gas/testsuite/gas/sh/sh64/localcom-1.s
    gas/testsuite/gas/sh/sh64/mix-1.d
    gas/testsuite/gas/sh/sh64/mix-1.s
    gas/testsuite/gas/sh/sh64/mix-noexp-1.d
    gas/testsuite/gas/sh/sh64/movi-1.s
    gas/testsuite/gas/sh/sh64/movi-2.s
    gas/testsuite/gas/sh/sh64/movi-3.d
    gas/testsuite/gas/sh/sh64/movi-3.s
    gas/testsuite/gas/sh/sh64/movi32-1.d
    gas/testsuite/gas/sh/sh64/movi32-2.d
    gas/testsuite/gas/sh/sh64/movi32-noexp-2.d
    gas/testsuite/gas/sh/sh64/movi64-1.d
    gas/testsuite/gas/sh/sh64/movi64-2.d
    gas/testsuite/gas/sh/sh64/movi64-2.s
    gas/testsuite/gas/sh/sh64/movi64-3.d
    gas/testsuite/gas/sh/sh64/movi64-noexp-2.d
    gas/testsuite/gas/sh/sh64/pt-1.d
    gas/testsuite/gas/sh/sh64/pt-1.s
    gas/testsuite/gas/sh/sh64/pt-2.s
    gas/testsuite/gas/sh/sh64/pt-noexp-1.d
    gas/testsuite/gas/sh/sh64/pt32-1.d
    gas/testsuite/gas/sh/sh64/pt32-noexp-2.d
    gas/testsuite/gas/sh/sh64/pt64-1.d
    gas/testsuite/gas/sh/sh64/pt64-32-1.d
    gas/testsuite/gas/sh/sh64/pt64-32-2.d
    gas/testsuite/gas/sh/sh64/pt64-noexp-2.d
    gas/testsuite/gas/sh/sh64/ptc-1.s
    gas/testsuite/gas/sh/sh64/ptc32-1.d
    gas/testsuite/gas/sh/sh64/ptc32-noexp-1.d
    gas/testsuite/gas/sh/sh64/ptc64-1.d
    gas/testsuite/gas/sh/sh64/ptc64-32-1.d
    gas/testsuite/gas/sh/sh64/ptc64-noexp-1.d
    gas/testsuite/gas/sh/sh64/ptext-1.s
    gas/testsuite/gas/sh/sh64/ptext32-1.d
    gas/testsuite/gas/sh/sh64/ptext32-noexp-1.d
    gas/testsuite/gas/sh/sh64/ptext64-1.d
    gas/testsuite/gas/sh/sh64/ptext64-32-1.d
    gas/testsuite/gas/sh/sh64/ptext64-noexp-1.d
    gas/testsuite/gas/sh/sh64/rel-1.s
    gas/testsuite/gas/sh/sh64/rel-2.s
    gas/testsuite/gas/sh/sh64/rel-3.s
    gas/testsuite/gas/sh/sh64/rel-4.s
    gas/testsuite/gas/sh/sh64/rel-5.s
    gas/testsuite/gas/sh/sh64/rel32-1.d
    gas/testsuite/gas/sh/sh64/rel32-2.d
    gas/testsuite/gas/sh/sh64/rel32-3.d
    gas/testsuite/gas/sh/sh64/rel32-4.d
    gas/testsuite/gas/sh/sh64/rel32-5.d
    gas/testsuite/gas/sh/sh64/rel64-1.d
    gas/testsuite/gas/sh/sh64/rel64-2.d
    gas/testsuite/gas/sh/sh64/rel64-3.d
    gas/testsuite/gas/sh/sh64/rel64-4.d
    gas/testsuite/gas/sh/sh64/rel64-5.d
    gas/testsuite/gas/sh/sh64/relax-1.d
    gas/testsuite/gas/sh/sh64/relax-1.s
    gas/testsuite/gas/sh/sh64/relax-2.d
    gas/testsuite/gas/sh/sh64/relax-2.s
    gas/testsuite/gas/sh/sh64/relax-3.d
    gas/testsuite/gas/sh/sh64/relax-3.s
    gas/testsuite/gas/sh/sh64/sh64.exp
    gas/testsuite/gas/sh/sh64/shift-1.s
    gas/testsuite/gas/sh/sh64/shift-2.s
    gas/testsuite/gas/sh/sh64/shift-3.s
    gas/testsuite/gas/sh/sh64/shift32-1.d
    gas/testsuite/gas/sh/sh64/shift32-3.d
    gas/testsuite/gas/sh/sh64/shift32-noexp-3.d
    gas/testsuite/gas/sh/sh64/shift64-1.d
    gas/testsuite/gas/sh/sh64/shift64-2.d
    gas/testsuite/gas/sh/sh64/shift64-3.d
    gas/testsuite/gas/sh/sh64/shift64-noexp-3.d
    gas/testsuite/gas/sh/sh64/syntax-1.d
    gas/testsuite/gas/sh/sh64/syntax-1.s
    gas/testsuite/gas/sh/sh64/syntax-2.d
    gas/testsuite/gas/sh/sh64/syntax-2.s
    gas/testsuite/gas/sh/sh64/ua-1.s
    gas/testsuite/gas/sh/sh64/ua32-1.d
    gas/testsuite/gas/sh/sh64/ua64-1.d
    gas/testsuite/gas/sh/tlsd.d
    gas/testsuite/gas/sh/tlsd.s
    gas/testsuite/gas/sh/tlsnopic.d
    gas/testsuite/gas/sh/tlsnopic.s
    gas/testsuite/gas/sh/tlspic.d
    gas/testsuite/gas/sh/tlspic.s
    gas/testsuite/gas/sparc-solaris/addend.exp
    gas/testsuite/gas/sparc-solaris/addend.s
    gas/testsuite/gas/sparc-solaris/gas.exp
    gas/testsuite/gas/sparc-solaris/sol-cc.s
    gas/testsuite/gas/sparc-solaris/sol-gcc.s
    gas/testsuite/gas/sparc/asi.d
    gas/testsuite/gas/sparc/asi.s
    gas/testsuite/gas/sparc/membar.d
    gas/testsuite/gas/sparc/membar.s
    gas/testsuite/gas/sparc/mism-1.s
    gas/testsuite/gas/sparc/mismatch.exp
    gas/testsuite/gas/sparc/pcrel.d
    gas/testsuite/gas/sparc/pcrel.s
    gas/testsuite/gas/sparc/pcrel64.d
    gas/testsuite/gas/sparc/pcrel64.s
    gas/testsuite/gas/sparc/plt.d
    gas/testsuite/gas/sparc/plt.s
    gas/testsuite/gas/sparc/plt64.d
    gas/testsuite/gas/sparc/plt64.s
    gas/testsuite/gas/sparc/prefetch.d
    gas/testsuite/gas/sparc/prefetch.s
    gas/testsuite/gas/sparc/rdpr.d
    gas/testsuite/gas/sparc/rdpr.s
    gas/testsuite/gas/sparc/reloc64.d
    gas/testsuite/gas/sparc/reloc64.s
    gas/testsuite/gas/sparc/set64.d
    gas/testsuite/gas/sparc/set64.s
    gas/testsuite/gas/sparc/sparc.exp
    gas/testsuite/gas/sparc/splet-2.d
    gas/testsuite/gas/sparc/splet-2.s
    gas/testsuite/gas/sparc/splet.d
    gas/testsuite/gas/sparc/splet.s
    gas/testsuite/gas/sparc/synth.d
    gas/testsuite/gas/sparc/synth.s
    gas/testsuite/gas/sparc/synth64.d
    gas/testsuite/gas/sparc/synth64.s
    gas/testsuite/gas/sparc/unalign.d
    gas/testsuite/gas/sparc/unalign.s
    gas/testsuite/gas/sparc/wrpr.d
    gas/testsuite/gas/sparc/wrpr.s
    gas/testsuite/gas/sun4/addend.d
    gas/testsuite/gas/sun4/addend.exp
    gas/testsuite/gas/sun4/addend.s
    gas/testsuite/gas/symver/symver.exp
    gas/testsuite/gas/symver/symver0.d
    gas/testsuite/gas/symver/symver0.s
    gas/testsuite/gas/symver/symver1.d
    gas/testsuite/gas/symver/symver1.s
    gas/testsuite/gas/symver/symver2.l
    gas/testsuite/gas/symver/symver2.s
    gas/testsuite/gas/symver/symver3.l
    gas/testsuite/gas/symver/symver3.s
    gas/testsuite/gas/symver/symver4.l
    gas/testsuite/gas/symver/symver4.s
    gas/testsuite/gas/symver/symver5.l
    gas/testsuite/gas/symver/symver5.s
    gas/testsuite/gas/symver/symver6.l
    gas/testsuite/gas/symver/symver6.s
    gas/testsuite/gas/template
    gas/testsuite/gas/tic4x/addressing.s
    gas/testsuite/gas/tic4x/addressing_c3x.d
    gas/testsuite/gas/tic4x/addressing_c4x.d
    gas/testsuite/gas/tic4x/allopcodes.S
    gas/testsuite/gas/tic4x/data.d
    gas/testsuite/gas/tic4x/data.s
    gas/testsuite/gas/tic4x/float.d
    gas/testsuite/gas/tic4x/float.s
    gas/testsuite/gas/tic4x/opclasses.h
    gas/testsuite/gas/tic4x/opcodes.s
    gas/testsuite/gas/tic4x/opcodes_c3x.d
    gas/testsuite/gas/tic4x/opcodes_c4x.d
    gas/testsuite/gas/tic4x/opcodes_new.d
    gas/testsuite/gas/tic4x/rebuild.sh
    gas/testsuite/gas/tic4x/registers.s
    gas/testsuite/gas/tic4x/registers_c3x.d
    gas/testsuite/gas/tic4x/registers_c4x.d
    gas/testsuite/gas/tic4x/tic4x.exp
    gas/testsuite/gas/tic4x/zeros.d
    gas/testsuite/gas/tic4x/zeros.s
    gas/testsuite/gas/tic54x/address.d
    gas/testsuite/gas/tic54x/address.s
    gas/testsuite/gas/tic54x/addrfar.d
    gas/testsuite/gas/tic54x/align.d
    gas/testsuite/gas/tic54x/align.s
    gas/testsuite/gas/tic54x/all-opcodes.d
    gas/testsuite/gas/tic54x/all-opcodes.s
    gas/testsuite/gas/tic54x/asg.d
    gas/testsuite/gas/tic54x/asg.s
    gas/testsuite/gas/tic54x/cons.d
    gas/testsuite/gas/tic54x/cons.s
    gas/testsuite/gas/tic54x/consfar.d
    gas/testsuite/gas/tic54x/extaddr.d
    gas/testsuite/gas/tic54x/extaddr.s
    gas/testsuite/gas/tic54x/field.d
    gas/testsuite/gas/tic54x/field.s
    gas/testsuite/gas/tic54x/in_mlib.asm
    gas/testsuite/gas/tic54x/labels.d
    gas/testsuite/gas/tic54x/labels.inc
    gas/testsuite/gas/tic54x/labels.s
    gas/testsuite/gas/tic54x/loop.d
    gas/testsuite/gas/tic54x/loop.s
    gas/testsuite/gas/tic54x/lp.d
    gas/testsuite/gas/tic54x/lp.s
    gas/testsuite/gas/tic54x/macro.d
    gas/testsuite/gas/tic54x/macro.s
    gas/testsuite/gas/tic54x/macro1.s
    gas/testsuite/gas/tic54x/macros.lib
    gas/testsuite/gas/tic54x/math.d
    gas/testsuite/gas/tic54x/math.s
    gas/testsuite/gas/tic54x/opcodes.d
    gas/testsuite/gas/tic54x/opcodes.s
    gas/testsuite/gas/tic54x/sections.d
    gas/testsuite/gas/tic54x/sections.s
    gas/testsuite/gas/tic54x/set.d
    gas/testsuite/gas/tic54x/set.s
    gas/testsuite/gas/tic54x/struct.d
    gas/testsuite/gas/tic54x/struct.s
    gas/testsuite/gas/tic54x/subsym.d
    gas/testsuite/gas/tic54x/subsym.s
    gas/testsuite/gas/tic54x/subsym1.s
    gas/testsuite/gas/tic54x/tic54x.exp
    gas/testsuite/gas/tic80/add.d
    gas/testsuite/gas/tic80/add.lst
    gas/testsuite/gas/tic80/add.s
    gas/testsuite/gas/tic80/align.d
    gas/testsuite/gas/tic80/align.lst
    gas/testsuite/gas/tic80/align.s
    gas/testsuite/gas/tic80/bitnum.d
    gas/testsuite/gas/tic80/bitnum.lst
    gas/testsuite/gas/tic80/bitnum.s
    gas/testsuite/gas/tic80/ccode.d
    gas/testsuite/gas/tic80/ccode.lst
    gas/testsuite/gas/tic80/ccode.s
    gas/testsuite/gas/tic80/cregops.d
    gas/testsuite/gas/tic80/cregops.lst
    gas/testsuite/gas/tic80/cregops.s
    gas/testsuite/gas/tic80/endmask.d
    gas/testsuite/gas/tic80/endmask.lst
    gas/testsuite/gas/tic80/endmask.s
    gas/testsuite/gas/tic80/float.d
    gas/testsuite/gas/tic80/float.lst
    gas/testsuite/gas/tic80/float.s
    gas/testsuite/gas/tic80/regops.d
    gas/testsuite/gas/tic80/regops.lst
    gas/testsuite/gas/tic80/regops.s
    gas/testsuite/gas/tic80/regops2.d
    gas/testsuite/gas/tic80/regops2.lst
    gas/testsuite/gas/tic80/regops2.s
    gas/testsuite/gas/tic80/regops3.d
    gas/testsuite/gas/tic80/regops3.lst
    gas/testsuite/gas/tic80/regops3.s
    gas/testsuite/gas/tic80/regops4.d
    gas/testsuite/gas/tic80/regops4.lst
    gas/testsuite/gas/tic80/regops4.s
    gas/testsuite/gas/tic80/relocs1.c
    gas/testsuite/gas/tic80/relocs1.d
    gas/testsuite/gas/tic80/relocs1.lst
    gas/testsuite/gas/tic80/relocs1.s
    gas/testsuite/gas/tic80/relocs1b.d
    gas/testsuite/gas/tic80/relocs2.c
    gas/testsuite/gas/tic80/relocs2.d
    gas/testsuite/gas/tic80/relocs2.lst
    gas/testsuite/gas/tic80/relocs2.s
    gas/testsuite/gas/tic80/relocs2b.d
    gas/testsuite/gas/tic80/tic80.exp
    gas/testsuite/gas/v850/arith.s
    gas/testsuite/gas/v850/basic.exp
    gas/testsuite/gas/v850/bit.s
    gas/testsuite/gas/v850/branch.s
    gas/testsuite/gas/v850/compare.s
    gas/testsuite/gas/v850/fepsw.s
    gas/testsuite/gas/v850/hilo.s
    gas/testsuite/gas/v850/hilo2.s
    gas/testsuite/gas/v850/jumps.s
    gas/testsuite/gas/v850/logical.s
    gas/testsuite/gas/v850/mem.s
    gas/testsuite/gas/v850/misc.s
    gas/testsuite/gas/v850/move.s
    gas/testsuite/gas/v850/range.s
    gas/testsuite/gas/v850/reloc.s
    gas/testsuite/gas/v850/v850e1.d
    gas/testsuite/gas/v850/v850e1.s
    gas/testsuite/gas/vax/elf-rel.d
    gas/testsuite/gas/vax/elf-rel.s
    gas/testsuite/gas/vax/quad.s
    gas/testsuite/gas/vax/quad_elf.s
    gas/testsuite/gas/vax/vax.exp
    gas/testsuite/gas/xstormy16/allinsn.d
    gas/testsuite/gas/xstormy16/allinsn.exp
    gas/testsuite/gas/xstormy16/allinsn.s
    gas/testsuite/gas/xstormy16/allinsn.sh
    gas/testsuite/gas/xstormy16/gcc.d
    gas/testsuite/gas/xstormy16/gcc.s
    gas/testsuite/gas/xstormy16/gcc.sh
    gas/testsuite/gas/xstormy16/reloc-1.d
    gas/testsuite/gas/xstormy16/reloc-1.s
    gas/testsuite/gas/xstormy16/reloc-2.d
    gas/testsuite/gas/xstormy16/reloc-2.s
    gas/testsuite/gas/xtensa/all.exp
    gas/testsuite/gas/xtensa/entry_align.s
    gas/testsuite/gas/xtensa/entry_misalign.s
    gas/testsuite/gas/xtensa/entry_misalign2.s
    gas/testsuite/gas/xtensa/j_too_far.s
    gas/testsuite/gas/xtensa/loop_align.s
    gas/testsuite/gas/xtensa/loop_misalign.s
    gas/testsuite/gas/z8k/calr-backf.s
    gas/testsuite/gas/z8k/calr-forwf.s
    gas/testsuite/gas/z8k/calr.d
    gas/testsuite/gas/z8k/calr.s
    gas/testsuite/gas/z8k/ctrl-names.d
    gas/testsuite/gas/z8k/ctrl-names.s
    gas/testsuite/gas/z8k/dec.s
    gas/testsuite/gas/z8k/decbf.s
    gas/testsuite/gas/z8k/decf.s
    gas/testsuite/gas/z8k/djnz-backf.s
    gas/testsuite/gas/z8k/djnz-backf2.s
    gas/testsuite/gas/z8k/djnz.d
    gas/testsuite/gas/z8k/djnz.s
    gas/testsuite/gas/z8k/eidi.s
    gas/testsuite/gas/z8k/eidif.s
    gas/testsuite/gas/z8k/inc.s
    gas/testsuite/gas/z8k/incbf.s
    gas/testsuite/gas/z8k/incf.s
    gas/testsuite/gas/z8k/inout.d
    gas/testsuite/gas/z8k/inout.s
    gas/testsuite/gas/z8k/jmp-cc.d
    gas/testsuite/gas/z8k/jmp-cc.s
    gas/testsuite/gas/z8k/jr-back.d
    gas/testsuite/gas/z8k/jr-back.s
    gas/testsuite/gas/z8k/jr-backf.s
    gas/testsuite/gas/z8k/jr-forw.d
    gas/testsuite/gas/z8k/jr-forw.s
    gas/testsuite/gas/z8k/jr-forwf.s
    gas/testsuite/gas/z8k/ldk.s
    gas/testsuite/gas/z8k/ldkf.s
    gas/testsuite/gas/z8k/ret-cc.d
    gas/testsuite/gas/z8k/ret-cc.s
    gas/testsuite/gas/z8k/z8k.exp
    gas/testsuite/lib/doboth
    gas/testsuite/lib/doobjcmp
    gas/testsuite/lib/dostriptest
    gas/testsuite/lib/dotest
    gas/testsuite/lib/dounsreloc
    gas/testsuite/lib/dounssym
    gas/testsuite/lib/gas-defs.exp
    gas/testsuite/lib/gas-dg.exp
    gas/testsuite/lib/run
    gas/vmsconf.sh
    gas/write.c
    gas/write.h
    gdb/windows-nat.c
    gprof/.gdbinit
    gprof/ChangeLog
    gprof/ChangeLog-9203
    gprof/MAINTAINERS
    gprof/Makefile.am
    gprof/Makefile.in
    gprof/README
    gprof/TEST
    gprof/TODO
    gprof/acinclude.m4
    gprof/aclocal.m4
    gprof/alpha.c
    gprof/basic_blocks.c
    gprof/basic_blocks.h
    gprof/bb_exit_func.c
    gprof/bbconv.pl
    gprof/bsd_callg_bl.m
    gprof/call_graph.c
    gprof/call_graph.h
    gprof/cg_arcs.c
    gprof/cg_arcs.h
    gprof/cg_dfn.c
    gprof/cg_dfn.h
    gprof/cg_print.c
    gprof/cg_print.h
    gprof/configure
    gprof/configure.in
    gprof/corefile.c
    gprof/corefile.h
    gprof/dep-in.sed
    gprof/flat_bl.m
    gprof/fsf_callg_bl.m
    gprof/gconfig.in
    gprof/gen-c-prog.awk
    gprof/gmon.h
    gprof/gmon_io.c
    gprof/gmon_io.h
    gprof/gmon_out.h
    gprof/gprof.c
    gprof/gprof.h
    gprof/gprof.texi
    gprof/hertz.c
    gprof/hertz.h
    gprof/hist.c
    gprof/hist.h
    gprof/i386.c
    gprof/mips.c
    gprof/po/.cvsignore
    gprof/po/Make-in
    gprof/po/POTFILES.in
    gprof/po/da.po
    gprof/po/de.po
    gprof/po/es.po
    gprof/po/fr.po
    gprof/po/gprof.pot
    gprof/po/id.po
    gprof/po/pt_BR.po
    gprof/po/sv.po
    gprof/po/tr.po
    gprof/search_list.c
    gprof/search_list.h
    gprof/source.c
    gprof/source.h
    gprof/sparc.c
    gprof/stamp-h.in
    gprof/sym_ids.c
    gprof/sym_ids.h
    gprof/symtab.c
    gprof/symtab.h
    gprof/tahoe.c
    gprof/utils.c
    gprof/utils.h
    gprof/vax.c
    intl/ChangeLog
    intl/Makefile.in
    intl/acconfig.h
    intl/aclocal.m4
    intl/bindtextdom.c
    intl/cat-compat.c
    intl/config.in
    intl/configure
    intl/configure.in
    intl/dcgettext.c
    intl/dgettext.c
    intl/explodename.c
    intl/finddomain.c
    intl/gettext.c
    intl/gettext.h
    intl/gettextP.h
    intl/hash-string.h
    intl/intl-compat.c
    intl/intlh.inst.in
    intl/l10nflist.c
    intl/libgettext.h
    intl/libintl.glibc
    intl/linux-msg.sed
    intl/loadinfo.h
    intl/loadmsgcat.c
    intl/localealias.c
    intl/po2tbl.sed.in
    intl/textdomain.c
    intl/xopen-msg.sed
    ld/ChangeLog
    ld/ChangeLog-0001
    ld/ChangeLog-0203
    ld/ChangeLog-9197
    ld/ChangeLog-9899
    ld/MAINTAINERS
    ld/Makefile.am
    ld/Makefile.in
    ld/NEWS
    ld/README
    ld/TODO
    ld/acinclude.m4
    ld/aclocal.m4
    ld/config.in
    ld/configure
    ld/configure.host
    ld/configure.in
    ld/configure.tgt
    ld/deffile.h
    ld/deffilep.y
    ld/dep-in.sed
    ld/emulparams/README
    ld/emulparams/a29k.sh
    ld/emulparams/aix5ppc.sh
    ld/emulparams/aix5rs6.sh
    ld/emulparams/aixppc.sh
    ld/emulparams/aixrs6.sh
    ld/emulparams/alpha.sh
    ld/emulparams/arcelf.sh
    ld/emulparams/arm_epoc_pe.sh
    ld/emulparams/armaoutb.sh
    ld/emulparams/armaoutl.sh
    ld/emulparams/armcoff.sh
    ld/emulparams/armelf.sh
    ld/emulparams/armelf_fbsd.sh
    ld/emulparams/armelf_linux.sh
    ld/emulparams/armelf_nbsd.sh
    ld/emulparams/armelf_oabi.sh
    ld/emulparams/armelfb.sh
    ld/emulparams/armelfb_linux.sh
    ld/emulparams/armelfb_nbsd.sh
    ld/emulparams/armnbsd.sh
    ld/emulparams/armnto.sh
    ld/emulparams/armpe.sh
    ld/emulparams/armsymbian.sh
    ld/emulparams/avr1.sh
    ld/emulparams/avr2.sh
    ld/emulparams/avr3.sh
    ld/emulparams/avr4.sh
    ld/emulparams/avr5.sh
    ld/emulparams/coff_i860.sh
    ld/emulparams/coff_sparc.sh
    ld/emulparams/crisaout.sh
    ld/emulparams/criself.sh
    ld/emulparams/crislinux.sh
    ld/emulparams/d10velf.sh
    ld/emulparams/d30v_e.sh
    ld/emulparams/d30v_o.sh
    ld/emulparams/d30velf.sh
    ld/emulparams/delta68.sh
    ld/emulparams/ebmon29k.sh
    ld/emulparams/elf32_dlx.sh
    ld/emulparams/elf32_i860.sh
    ld/emulparams/elf32_i960.sh
    ld/emulparams/elf32_sparc.sh
    ld/emulparams/elf32am33lin.sh
    ld/emulparams/elf32b4300.sh
    ld/emulparams/elf32bmip.sh
    ld/emulparams/elf32bmipn32-defs.sh
    ld/emulparams/elf32bmipn32.sh
    ld/emulparams/elf32bsmip.sh
    ld/emulparams/elf32btsmip.sh
    ld/emulparams/elf32btsmipn32.sh
    ld/emulparams/elf32cr16c.sh
    ld/emulparams/elf32crx.sh
    ld/emulparams/elf32ebmip.sh
    ld/emulparams/elf32elmip.sh
    ld/emulparams/elf32fr30.sh
    ld/emulparams/elf32frv.sh
    ld/emulparams/elf32frvfd.sh
    ld/emulparams/elf32i370.sh
    ld/emulparams/elf32ip2k.sh
    ld/emulparams/elf32iq10.sh
    ld/emulparams/elf32iq2000.sh
    ld/emulparams/elf32l4300.sh
    ld/emulparams/elf32lmip.sh
    ld/emulparams/elf32lppc.sh
    ld/emulparams/elf32lppcnto.sh
    ld/emulparams/elf32lppcsim.sh
    ld/emulparams/elf32lsmip.sh
    ld/emulparams/elf32ltsmip.sh
    ld/emulparams/elf32ltsmipn32.sh
    ld/emulparams/elf32mcore.sh
    ld/emulparams/elf32mipswindiss.sh
    ld/emulparams/elf32openrisc.sh
    ld/emulparams/elf32ppc.sh
    ld/emulparams/elf32ppc_fbsd.sh
    ld/emulparams/elf32ppclinux.sh
    ld/emulparams/elf32ppcnto.sh
    ld/emulparams/elf32ppcsim.sh
    ld/emulparams/elf32ppcwindiss.sh
    ld/emulparams/elf32vax.sh
    ld/emulparams/elf32xstormy16.sh
    ld/emulparams/elf32xtensa.sh
    ld/emulparams/elf64_aix.sh
    ld/emulparams/elf64_ia64.sh
    ld/emulparams/elf64_ia64_fbsd.sh
    ld/emulparams/elf64_s390.sh
    ld/emulparams/elf64_sparc.sh
    ld/emulparams/elf64_sparc_fbsd.sh
    ld/emulparams/elf64alpha.sh
    ld/emulparams/elf64alpha_fbsd.sh
    ld/emulparams/elf64alpha_nbsd.sh
    ld/emulparams/elf64bmip.sh
    ld/emulparams/elf64btsmip.sh
    ld/emulparams/elf64hppa.sh
    ld/emulparams/elf64lppc.sh
    ld/emulparams/elf64ltsmip.sh
    ld/emulparams/elf64mmix.sh
    ld/emulparams/elf64ppc.sh
    ld/emulparams/elf_fbsd.sh
    ld/emulparams/elf_i386.sh
    ld/emulparams/elf_i386_be.sh
    ld/emulparams/elf_i386_chaos.sh
    ld/emulparams/elf_i386_fbsd.sh
    ld/emulparams/elf_i386_ldso.sh
    ld/emulparams/elf_s390.sh
    ld/emulparams/elf_x86_64.sh
    ld/emulparams/elf_x86_64_fbsd.sh
    ld/emulparams/gld960.sh
    ld/emulparams/gld960coff.sh
    ld/emulparams/h8300.sh
    ld/emulparams/h8300elf.sh
    ld/emulparams/h8300h.sh
    ld/emulparams/h8300helf.sh
    ld/emulparams/h8300hn.sh
    ld/emulparams/h8300hnelf.sh
    ld/emulparams/h8300s.sh
    ld/emulparams/h8300self.sh
    ld/emulparams/h8300sn.sh
    ld/emulparams/h8300snelf.sh
    ld/emulparams/h8300sx.sh
    ld/emulparams/h8300sxelf.sh
    ld/emulparams/h8300sxn.sh
    ld/emulparams/h8300sxnelf.sh
    ld/emulparams/h8500.sh
    ld/emulparams/h8500b.sh
    ld/emulparams/h8500c.sh
    ld/emulparams/h8500m.sh
    ld/emulparams/h8500s.sh
    ld/emulparams/hp300bsd.sh
    ld/emulparams/hp3hpux.sh
    ld/emulparams/hppa64linux.sh
    ld/emulparams/hppaelf.sh
    ld/emulparams/hppalinux.sh
    ld/emulparams/hppanbsd.sh
    ld/emulparams/hppaobsd.sh
    ld/emulparams/i386aout.sh
    ld/emulparams/i386beos.sh
    ld/emulparams/i386bsd.sh
    ld/emulparams/i386coff.sh
    ld/emulparams/i386go32.sh
    ld/emulparams/i386linux.sh
    ld/emulparams/i386lynx.sh
    ld/emulparams/i386mach.sh
    ld/emulparams/i386moss.sh
    ld/emulparams/i386msdos.sh
    ld/emulparams/i386nbsd.sh
    ld/emulparams/i386nto.sh
    ld/emulparams/i386nw.sh
    ld/emulparams/i386pe.sh
    ld/emulparams/i386pe_posix.sh
    ld/emulparams/lnk960.sh
    ld/emulparams/m32relf.sh
    ld/emulparams/m32relf_linux.sh
    ld/emulparams/m32rlelf.sh
    ld/emulparams/m32rlelf_linux.sh
    ld/emulparams/m68hc11elf.sh
    ld/emulparams/m68hc11elfb.sh
    ld/emulparams/m68hc12elf.sh
    ld/emulparams/m68hc12elfb.sh
    ld/emulparams/m68k4knbsd.sh
    ld/emulparams/m68kaout.sh
    ld/emulparams/m68kaux.sh
    ld/emulparams/m68kcoff.sh
    ld/emulparams/m68kelf.sh
    ld/emulparams/m68kelfnbsd.sh
    ld/emulparams/m68klinux.sh
    ld/emulparams/m68klynx.sh
    ld/emulparams/m68knbsd.sh
    ld/emulparams/m68kpsos.sh
    ld/emulparams/m88kbcs.sh
    ld/emulparams/mcorepe.sh
    ld/emulparams/mipsbig.sh
    ld/emulparams/mipsbsd.sh
    ld/emulparams/mipsidt.sh
    ld/emulparams/mipsidtl.sh
    ld/emulparams/mipslit.sh
    ld/emulparams/mipslnews.sh
    ld/emulparams/mipspe.sh
    ld/emulparams/mmo.sh
    ld/emulparams/mn10200.sh
    ld/emulparams/mn10300.sh
    ld/emulparams/msp430all.sh
    ld/emulparams/news.sh
    ld/emulparams/ns32knbsd.sh
    ld/emulparams/or32.sh
    ld/emulparams/or32elf.sh
    ld/emulparams/pc532macha.sh
    ld/emulparams/pdp11.sh
    ld/emulparams/pjelf.sh
    ld/emulparams/pjlelf.sh
    ld/emulparams/ppclynx.sh
    ld/emulparams/ppcmacos.sh
    ld/emulparams/ppcnw.sh
    ld/emulparams/ppcpe.sh
    ld/emulparams/riscix.sh
    ld/emulparams/sa29200.sh
    ld/emulparams/sh.sh
    ld/emulparams/shelf.sh
    ld/emulparams/shelf32.sh
    ld/emulparams/shelf32_linux.sh
    ld/emulparams/shelf32_nbsd.sh
    ld/emulparams/shelf64.sh
    ld/emulparams/shelf64_nbsd.sh
    ld/emulparams/shelf_linux.sh
    ld/emulparams/shelf_nbsd.sh
    ld/emulparams/shelf_nto.sh
    ld/emulparams/shl.sh
    ld/emulparams/shlelf.sh
    ld/emulparams/shlelf32.sh
    ld/emulparams/shlelf32_linux.sh
    ld/emulparams/shlelf32_nbsd.sh
    ld/emulparams/shlelf64.sh
    ld/emulparams/shlelf64_nbsd.sh
    ld/emulparams/shlelf_linux.sh
    ld/emulparams/shlelf_nbsd.sh
    ld/emulparams/shlelf_nto.sh
    ld/emulparams/shlsymbian.sh
    ld/emulparams/shpe.sh
    ld/emulparams/sparcaout.sh
    ld/emulparams/sparclinux.sh
    ld/emulparams/sparclynx.sh
    ld/emulparams/sparcnbsd.sh
    ld/emulparams/st2000.sh
    ld/emulparams/sun3.sh
    ld/emulparams/sun4.sh
    ld/emulparams/tic30aout.sh
    ld/emulparams/tic30coff.sh
    ld/emulparams/tic3xcoff.sh
    ld/emulparams/tic3xcoff_onchip.sh
    ld/emulparams/tic4xcoff.sh
    ld/emulparams/tic54xcoff.sh
    ld/emulparams/tic80coff.sh
    ld/emulparams/v850.sh
    ld/emulparams/vanilla.sh
    ld/emulparams/vax.sh
    ld/emulparams/vaxnbsd.sh
    ld/emulparams/vsta.sh
    ld/emulparams/w65.sh
    ld/emulparams/xtensa-config.sh
    ld/emulparams/z8001.sh
    ld/emulparams/z8002.sh
    ld/emultempl/README
    ld/emultempl/aix.em
    ld/emultempl/alphaelf.em
    ld/emultempl/armcoff.em
    ld/emultempl/armelf.em
    ld/emultempl/armelf_oabi.em
    ld/emultempl/astring.sed
    ld/emultempl/beos.em
    ld/emultempl/crxelf.em
    ld/emultempl/elf32.em
    ld/emultempl/generic.em
    ld/emultempl/gld960.em
    ld/emultempl/gld960c.em
    ld/emultempl/hppaelf.em
    ld/emultempl/ia64elf.em
    ld/emultempl/irix.em
    ld/emultempl/linux.em
    ld/emultempl/lnk960.em
    ld/emultempl/m68hc1xelf.em
    ld/emultempl/m68kcoff.em
    ld/emultempl/m68kelf.em
    ld/emultempl/mipsecoff.em
    ld/emultempl/mmix-elfnmmo.em
    ld/emultempl/mmixelf.em
    ld/emultempl/mmo.em
    ld/emultempl/needrelax.em
    ld/emultempl/netbsd.em
    ld/emultempl/ostring.sed
    ld/emultempl/pe.em
    ld/emultempl/ppc32elf.em
    ld/emultempl/ppc64elf.em
    ld/emultempl/sh64elf.em
    ld/emultempl/sunos.em
    ld/emultempl/ticoff.em
    ld/emultempl/vanilla.em
    ld/emultempl/xtensaelf.em
    ld/fdl.texi
    ld/gen-doc.texi
    ld/genscripts.sh
    ld/h8-doc.texi
    ld/ld.h
    ld/ld.texinfo
    ld/ldcref.c
    ld/ldctor.c
    ld/ldctor.h
    ld/ldemul.c
    ld/ldemul.h
    ld/ldexp.c
    ld/ldexp.h
    ld/ldfile.c
    ld/ldfile.h
    ld/ldgram.y
    ld/ldint.texinfo
    ld/ldlang.c
    ld/ldlang.h
    ld/ldlex.h
    ld/ldlex.l
    ld/ldmain.c
    ld/ldmain.h
    ld/ldmisc.c
    ld/ldmisc.h
    ld/ldver.c
    ld/ldver.h
    ld/ldwrite.c
    ld/ldwrite.h
    ld/lexsup.c
    ld/mri.c
    ld/mri.h
    ld/pe-dll.c
    ld/pe-dll.h
    ld/po/.cvsignore
    ld/po/Make-in
    ld/po/POTFILES.in
    ld/po/da.po
    ld/po/es.po
    ld/po/fr.po
    ld/po/ld.pot
    ld/po/sv.po
    ld/po/tr.po
    ld/scripttempl/README
    ld/scripttempl/a29k.sc
    ld/scripttempl/aix.sc
    ld/scripttempl/alpha.sc
    ld/scripttempl/aout.sc
    ld/scripttempl/armaout.sc
    ld/scripttempl/armbpabi.sc
    ld/scripttempl/armcoff.sc
    ld/scripttempl/avr.sc
    ld/scripttempl/crisaout.sc
    ld/scripttempl/delta68.sc
    ld/scripttempl/dlx.sc
    ld/scripttempl/ebmon29k.sc
    ld/scripttempl/elf.sc
    ld/scripttempl/elf32cr16c.sc
    ld/scripttempl/elf32crx.sc
    ld/scripttempl/elf32msp430.sc
    ld/scripttempl/elf32msp430_3.sc
    ld/scripttempl/elf32sh-symbian.sc
    ld/scripttempl/elf_chaos.sc
    ld/scripttempl/elfd10v.sc
    ld/scripttempl/elfd30v.sc
    ld/scripttempl/elfi370.sc
    ld/scripttempl/elfm68hc11.sc
    ld/scripttempl/elfm68hc12.sc
    ld/scripttempl/elfxtensa.sc
    ld/scripttempl/epocpe.sc
    ld/scripttempl/h8300.sc
    ld/scripttempl/h8300h.sc
    ld/scripttempl/h8300hn.sc
    ld/scripttempl/h8300s.sc
    ld/scripttempl/h8300sn.sc
    ld/scripttempl/h8300sx.sc
    ld/scripttempl/h8300sxn.sc
    ld/scripttempl/h8500.sc
    ld/scripttempl/h8500b.sc
    ld/scripttempl/h8500c.sc
    ld/scripttempl/h8500m.sc
    ld/scripttempl/h8500s.sc
    ld/scripttempl/hppaelf.sc
    ld/scripttempl/i386beos.sc
    ld/scripttempl/i386coff.sc
    ld/scripttempl/i386go32.sc
    ld/scripttempl/i386msdos.sc
    ld/scripttempl/i860coff.sc
    ld/scripttempl/i960.sc
    ld/scripttempl/ip2k.sc
    ld/scripttempl/iq2000.sc
    ld/scripttempl/m68kaux.sc
    ld/scripttempl/m68kcoff.sc
    ld/scripttempl/m68klynx.sc
    ld/scripttempl/m88kbcs.sc
    ld/scripttempl/mcorepe.sc
    ld/scripttempl/mips.sc
    ld/scripttempl/mipsbsd.sc
    ld/scripttempl/mmo.sc
    ld/scripttempl/nw.sc
    ld/scripttempl/or32.sc
    ld/scripttempl/pe.sc
    ld/scripttempl/pj.sc
    ld/scripttempl/ppcpe.sc
    ld/scripttempl/psos.sc
    ld/scripttempl/riscix.sc
    ld/scripttempl/sa29200.sc
    ld/scripttempl/sh.sc
    ld/scripttempl/sparccoff.sc
    ld/scripttempl/sparclynx.sc
    ld/scripttempl/st2000.sc
    ld/scripttempl/tic30aout.sc
    ld/scripttempl/tic30coff.sc
    ld/scripttempl/tic4xcoff.sc
    ld/scripttempl/tic54xcoff.sc
    ld/scripttempl/tic80coff.sc
    ld/scripttempl/v850.sc
    ld/scripttempl/vanilla.sc
    ld/scripttempl/w65.sc
    ld/scripttempl/xstormy16.sc
    ld/scripttempl/z8000.sc
    ld/stamp-h.in
    ld/sysdep.h
    ld/testsuite/ChangeLog
    ld/testsuite/ChangeLog-9303
    ld/testsuite/config/default.exp
    ld/testsuite/ld-alpha/align.s
    ld/testsuite/ld-alpha/alpha.exp
    ld/testsuite/ld-alpha/tlsbin.dd
    ld/testsuite/ld-alpha/tlsbin.rd
    ld/testsuite/ld-alpha/tlsbin.s
    ld/testsuite/ld-alpha/tlsbin.sd
    ld/testsuite/ld-alpha/tlsbin.td
    ld/testsuite/ld-alpha/tlsbinpic.s
    ld/testsuite/ld-alpha/tlsbinr.dd
    ld/testsuite/ld-alpha/tlsbinr.rd
    ld/testsuite/ld-alpha/tlsbinr.sd
    ld/testsuite/ld-alpha/tlsg.s
    ld/testsuite/ld-alpha/tlsg.sd
    ld/testsuite/ld-alpha/tlslib.s
    ld/testsuite/ld-alpha/tlspic.dd
    ld/testsuite/ld-alpha/tlspic.rd
    ld/testsuite/ld-alpha/tlspic.sd
    ld/testsuite/ld-alpha/tlspic.td
    ld/testsuite/ld-alpha/tlspic1.s
    ld/testsuite/ld-alpha/tlspic2.s
    ld/testsuite/ld-arm/arm-app-abs32.d
    ld/testsuite/ld-arm/arm-app-abs32.r
    ld/testsuite/ld-arm/arm-app-abs32.s
    ld/testsuite/ld-arm/arm-app.d
    ld/testsuite/ld-arm/arm-app.r
    ld/testsuite/ld-arm/arm-app.s
    ld/testsuite/ld-arm/arm-elf.exp
    ld/testsuite/ld-arm/arm-lib-plt32.d
    ld/testsuite/ld-arm/arm-lib-plt32.r
    ld/testsuite/ld-arm/arm-lib-plt32.s
    ld/testsuite/ld-arm/arm-lib.d
    ld/testsuite/ld-arm/arm-lib.r
    ld/testsuite/ld-arm/arm-lib.s
    ld/testsuite/ld-arm/arm-rel31.d
    ld/testsuite/ld-arm/arm-rel31.s
    ld/testsuite/ld-arm/arm-static-app.d
    ld/testsuite/ld-arm/arm-static-app.r
    ld/testsuite/ld-arm/arm-static-app.s
    ld/testsuite/ld-arm/arm-target1-abs.d
    ld/testsuite/ld-arm/arm-target1-rel.d
    ld/testsuite/ld-arm/arm-target1.s
    ld/testsuite/ld-arm/arm-target2-abs.d
    ld/testsuite/ld-arm/arm-target2-got-rel.d
    ld/testsuite/ld-arm/arm-target2-rel.d
    ld/testsuite/ld-arm/arm-target2.s
    ld/testsuite/ld-arm/arm.ld
    ld/testsuite/ld-auto-import/auto-import.exp
    ld/testsuite/ld-auto-import/client.c
    ld/testsuite/ld-auto-import/dll.c
    ld/testsuite/ld-bootstrap/bootstrap.exp
    ld/testsuite/ld-cdtest/cdtest-bar.cc
    ld/testsuite/ld-cdtest/cdtest-foo.cc
    ld/testsuite/ld-cdtest/cdtest-foo.h
    ld/testsuite/ld-cdtest/cdtest-main.cc
    ld/testsuite/ld-cdtest/cdtest-nrv.dat
    ld/testsuite/ld-cdtest/cdtest.dat
    ld/testsuite/ld-cdtest/cdtest.exp
    ld/testsuite/ld-checks/asm.s
    ld/testsuite/ld-checks/checks.exp
    ld/testsuite/ld-checks/script
    ld/testsuite/ld-cris/badgotr1.d
    ld/testsuite/ld-cris/comref1.s
    ld/testsuite/ld-cris/cris.exp
    ld/testsuite/ld-cris/dso-1.s
    ld/testsuite/ld-cris/dso-2.s
    ld/testsuite/ld-cris/dso-3.s
    ld/testsuite/ld-cris/dsofnf.s
    ld/testsuite/ld-cris/dsofnf2.s
    ld/testsuite/ld-cris/euwref1.s
    ld/testsuite/ld-cris/expdref1.s
    ld/testsuite/ld-cris/expdyn1.d
    ld/testsuite/ld-cris/expdyn1.s
    ld/testsuite/ld-cris/expdyn2.d
    ld/testsuite/ld-cris/expdyn3.d
    ld/testsuite/ld-cris/expdyn4.d
    ld/testsuite/ld-cris/expdyn5.d
    ld/testsuite/ld-cris/expdyn6.d
    ld/testsuite/ld-cris/expdyn7.d
    ld/testsuite/ld-cris/gotplt1.d
    ld/testsuite/ld-cris/gotplt2.d
    ld/testsuite/ld-cris/gotplt3.d
    ld/testsuite/ld-cris/gotrel1.s
    ld/testsuite/ld-cris/gotrel2.s
    ld/testsuite/ld-cris/hiddef1.d
    ld/testsuite/ld-cris/hiddef1.s
    ld/testsuite/ld-cris/hide1
    ld/testsuite/ld-cris/hidrefgotplt1.s
    ld/testsuite/ld-cris/ldsym1.d
    ld/testsuite/ld-cris/libdso-1.d
    ld/testsuite/ld-cris/libdso-2.d
    ld/testsuite/ld-cris/libdso-3.d
    ld/testsuite/ld-cris/libdso-4.d
    ld/testsuite/ld-cris/locref1.d
    ld/testsuite/ld-cris/locref1.s
    ld/testsuite/ld-cris/locref2.d
    ld/testsuite/ld-cris/locref2.s
    ld/testsuite/ld-cris/nodyn4.d
    ld/testsuite/ld-cris/nodyn5.d
    ld/testsuite/ld-cris/noglob1.d
    ld/testsuite/ld-cris/noglob1.s
    ld/testsuite/ld-cris/undef1.d
    ld/testsuite/ld-cris/weakref1.d
    ld/testsuite/ld-cris/weakref2.d
    ld/testsuite/ld-crx/crx.exp
    ld/testsuite/ld-crx/crx.ld
    ld/testsuite/ld-crx/reloc-abs32.d
    ld/testsuite/ld-crx/reloc-abs32.s
    ld/testsuite/ld-crx/reloc-imm16.d
    ld/testsuite/ld-crx/reloc-imm16.s
    ld/testsuite/ld-crx/reloc-imm32.d
    ld/testsuite/ld-crx/reloc-imm32.s
    ld/testsuite/ld-crx/reloc-num16.d
    ld/testsuite/ld-crx/reloc-num16.s
    ld/testsuite/ld-crx/reloc-num32.d
    ld/testsuite/ld-crx/reloc-num32.s
    ld/testsuite/ld-crx/reloc-num8.d
    ld/testsuite/ld-crx/reloc-num8.s
    ld/testsuite/ld-crx/reloc-regrel12.d
    ld/testsuite/ld-crx/reloc-regrel12.s
    ld/testsuite/ld-crx/reloc-regrel22.d
    ld/testsuite/ld-crx/reloc-regrel22.s
    ld/testsuite/ld-crx/reloc-regrel28.d
    ld/testsuite/ld-crx/reloc-regrel28.s
    ld/testsuite/ld-crx/reloc-regrel32.d
    ld/testsuite/ld-crx/reloc-regrel32.s
    ld/testsuite/ld-crx/reloc-rel16.d
    ld/testsuite/ld-crx/reloc-rel16.s
    ld/testsuite/ld-crx/reloc-rel24.d
    ld/testsuite/ld-crx/reloc-rel24.s
    ld/testsuite/ld-crx/reloc-rel32.d
    ld/testsuite/ld-crx/reloc-rel32.s
    ld/testsuite/ld-crx/reloc-rel4.d
    ld/testsuite/ld-crx/reloc-rel4.s
    ld/testsuite/ld-crx/reloc-rel8-cmp.d
    ld/testsuite/ld-crx/reloc-rel8-cmp.s
    ld/testsuite/ld-crx/reloc-rel8.d
    ld/testsuite/ld-crx/reloc-rel8.s
    ld/testsuite/ld-cygwin/exe-export.exp
    ld/testsuite/ld-cygwin/testdll.c
    ld/testsuite/ld-cygwin/testdll.def
    ld/testsuite/ld-cygwin/testexe.c
    ld/testsuite/ld-cygwin/testexe.def
    ld/testsuite/ld-d10v/d10v.exp
    ld/testsuite/ld-d10v/default_layout.d
    ld/testsuite/ld-d10v/linktest-001.s
    ld/testsuite/ld-d10v/linktest-002.lt
    ld/testsuite/ld-d10v/linktest-002.s
    ld/testsuite/ld-d10v/regression-001.lt
    ld/testsuite/ld-d10v/regression-001.s
    ld/testsuite/ld-d10v/reloc-001.d
    ld/testsuite/ld-d10v/reloc-001.ld
    ld/testsuite/ld-d10v/reloc-001.s
    ld/testsuite/ld-d10v/reloc-002.d
    ld/testsuite/ld-d10v/reloc-002.ld
    ld/testsuite/ld-d10v/reloc-003.d
    ld/testsuite/ld-d10v/reloc-003.ld
    ld/testsuite/ld-d10v/reloc-004.d
    ld/testsuite/ld-d10v/reloc-004.ld
    ld/testsuite/ld-d10v/reloc-005.d
    ld/testsuite/ld-d10v/reloc-005.ld
    ld/testsuite/ld-d10v/reloc-005.s
    ld/testsuite/ld-d10v/reloc-006.d
    ld/testsuite/ld-d10v/reloc-006.ld
    ld/testsuite/ld-d10v/reloc-007.d
    ld/testsuite/ld-d10v/reloc-007.ld
    ld/testsuite/ld-d10v/reloc-008.d
    ld/testsuite/ld-d10v/reloc-008.ld
    ld/testsuite/ld-d10v/reloc-009.d
    ld/testsuite/ld-d10v/reloc-009.ld
    ld/testsuite/ld-d10v/reloc-009.s
    ld/testsuite/ld-d10v/reloc-010.d
    ld/testsuite/ld-d10v/reloc-010.ld
    ld/testsuite/ld-d10v/reloc-011.d
    ld/testsuite/ld-d10v/reloc-011.ld
    ld/testsuite/ld-d10v/reloc-012.d
    ld/testsuite/ld-d10v/reloc-012.ld
    ld/testsuite/ld-d10v/reloc-013.d
    ld/testsuite/ld-d10v/reloc-013.ld
    ld/testsuite/ld-d10v/reloc-014.d
    ld/testsuite/ld-d10v/reloc-014.ld
    ld/testsuite/ld-d10v/reloc-015.d
    ld/testsuite/ld-d10v/reloc-015.ld
    ld/testsuite/ld-d10v/reloc-016.d
    ld/testsuite/ld-d10v/reloc-016.ld
    ld/testsuite/ld-d10v/simple.s
    ld/testsuite/ld-discard/discard.exp
    ld/testsuite/ld-discard/discard.ld
    ld/testsuite/ld-discard/exit.s
    ld/testsuite/ld-discard/extern.d
    ld/testsuite/ld-discard/extern.s
    ld/testsuite/ld-discard/start.d
    ld/testsuite/ld-discard/start.s
    ld/testsuite/ld-discard/static.d
    ld/testsuite/ld-discard/static.s
    ld/testsuite/ld-elf/elf.exp
    ld/testsuite/ld-elf/exclude.exp
    ld/testsuite/ld-elf/exclude1.s
    ld/testsuite/ld-elf/exclude2.s
    ld/testsuite/ld-elf/frame.exp
    ld/testsuite/ld-elf/frame.s
    ld/testsuite/ld-elf/merge.d
    ld/testsuite/ld-elf/merge.ld
    ld/testsuite/ld-elf/merge.s
    ld/testsuite/ld-elf/merge2.d
    ld/testsuite/ld-elf/merge2.s
    ld/testsuite/ld-elf/sec64k.exp
    ld/testsuite/ld-elf/table.s
    ld/testsuite/ld-elf/tbss.s
    ld/testsuite/ld-elfcomm/common1a.c
    ld/testsuite/ld-elfcomm/common1b.c
    ld/testsuite/ld-elfcomm/elfcomm.exp
    ld/testsuite/ld-elfvers/vers.exp
    ld/testsuite/ld-elfvers/vers1.c
    ld/testsuite/ld-elfvers/vers1.dsym
    ld/testsuite/ld-elfvers/vers1.map
    ld/testsuite/ld-elfvers/vers1.sym
    ld/testsuite/ld-elfvers/vers1.ver
    ld/testsuite/ld-elfvers/vers13.asym
    ld/testsuite/ld-elfvers/vers15.c
    ld/testsuite/ld-elfvers/vers15.dsym
    ld/testsuite/ld-elfvers/vers15.sym
    ld/testsuite/ld-elfvers/vers15.ver
    ld/testsuite/ld-elfvers/vers16.c
    ld/testsuite/ld-elfvers/vers16.dsym
    ld/testsuite/ld-elfvers/vers16.map
    ld/testsuite/ld-elfvers/vers16a.c
    ld/testsuite/ld-elfvers/vers16a.dsym
    ld/testsuite/ld-elfvers/vers16a.ver
    ld/testsuite/ld-elfvers/vers17.c
    ld/testsuite/ld-elfvers/vers17.dsym
    ld/testsuite/ld-elfvers/vers17.map
    ld/testsuite/ld-elfvers/vers17.ver
    ld/testsuite/ld-elfvers/vers18.c
    ld/testsuite/ld-elfvers/vers18.dsym
    ld/testsuite/ld-elfvers/vers18.map
    ld/testsuite/ld-elfvers/vers18.sym
    ld/testsuite/ld-elfvers/vers18.ver
    ld/testsuite/ld-elfvers/vers19.c
    ld/testsuite/ld-elfvers/vers19.dsym
    ld/testsuite/ld-elfvers/vers19.ver
    ld/testsuite/ld-elfvers/vers2.c
    ld/testsuite/ld-elfvers/vers2.dsym
    ld/testsuite/ld-elfvers/vers2.map
    ld/testsuite/ld-elfvers/vers2.ver
    ld/testsuite/ld-elfvers/vers20.c
    ld/testsuite/ld-elfvers/vers20.dsym
    ld/testsuite/ld-elfvers/vers20.map
    ld/testsuite/ld-elfvers/vers20.ver
    ld/testsuite/ld-elfvers/vers20a.ver
    ld/testsuite/ld-elfvers/vers21.c
    ld/testsuite/ld-elfvers/vers21.dsym
    ld/testsuite/ld-elfvers/vers21.map
    ld/testsuite/ld-elfvers/vers21.sym
    ld/testsuite/ld-elfvers/vers21.ver
    ld/testsuite/ld-elfvers/vers22.c
    ld/testsuite/ld-elfvers/vers22.dsym
    ld/testsuite/ld-elfvers/vers22.map
    ld/testsuite/ld-elfvers/vers22.ver
    ld/testsuite/ld-elfvers/vers22a.c
    ld/testsuite/ld-elfvers/vers22a.dsym
    ld/testsuite/ld-elfvers/vers22a.sym
    ld/testsuite/ld-elfvers/vers22a.ver
    ld/testsuite/ld-elfvers/vers22b.c
    ld/testsuite/ld-elfvers/vers22b.dsym
    ld/testsuite/ld-elfvers/vers22b.ver
    ld/testsuite/ld-elfvers/vers23.c
    ld/testsuite/ld-elfvers/vers23.dsym
    ld/testsuite/ld-elfvers/vers23.ver
    ld/testsuite/ld-elfvers/vers23a.c
    ld/testsuite/ld-elfvers/vers23a.dsym
    ld/testsuite/ld-elfvers/vers23a.map
    ld/testsuite/ld-elfvers/vers23a.sym
    ld/testsuite/ld-elfvers/vers23a.ver
    ld/testsuite/ld-elfvers/vers23b.c
    ld/testsuite/ld-elfvers/vers23b.dsym
    ld/testsuite/ld-elfvers/vers23b.map
    ld/testsuite/ld-elfvers/vers23b.ver
    ld/testsuite/ld-elfvers/vers23c.ver
    ld/testsuite/ld-elfvers/vers23d.dsym
    ld/testsuite/ld-elfvers/vers24.map
    ld/testsuite/ld-elfvers/vers24.rd
    ld/testsuite/ld-elfvers/vers24a.c
    ld/testsuite/ld-elfvers/vers24b.c
    ld/testsuite/ld-elfvers/vers24c.c
    ld/testsuite/ld-elfvers/vers25a.c
    ld/testsuite/ld-elfvers/vers25a.dsym
    ld/testsuite/ld-elfvers/vers25a.map
    ld/testsuite/ld-elfvers/vers25a.ver
    ld/testsuite/ld-elfvers/vers25b.c
    ld/testsuite/ld-elfvers/vers25b.dsym
    ld/testsuite/ld-elfvers/vers25b.ver
    ld/testsuite/ld-elfvers/vers26a.c
    ld/testsuite/ld-elfvers/vers26a.dsym
    ld/testsuite/ld-elfvers/vers26a.map
    ld/testsuite/ld-elfvers/vers26a.ver
    ld/testsuite/ld-elfvers/vers26b.c
    ld/testsuite/ld-elfvers/vers26b.dsym
    ld/testsuite/ld-elfvers/vers26b.ver
    ld/testsuite/ld-elfvers/vers27a.c
    ld/testsuite/ld-elfvers/vers27a.dsym
    ld/testsuite/ld-elfvers/vers27a.map
    ld/testsuite/ld-elfvers/vers27a.ver
    ld/testsuite/ld-elfvers/vers27b.c
    ld/testsuite/ld-elfvers/vers27b.dsym
    ld/testsuite/ld-elfvers/vers27b.ver
    ld/testsuite/ld-elfvers/vers27c.c
    ld/testsuite/ld-elfvers/vers27c.dsym
    ld/testsuite/ld-elfvers/vers27c.ver
    ld/testsuite/ld-elfvers/vers27d.dsym
    ld/testsuite/ld-elfvers/vers27d.sym
    ld/testsuite/ld-elfvers/vers27d.ver
    ld/testsuite/ld-elfvers/vers27d1.c
    ld/testsuite/ld-elfvers/vers27d2.c
    ld/testsuite/ld-elfvers/vers27d3.c
    ld/testsuite/ld-elfvers/vers27d4.dsym
    ld/testsuite/ld-elfvers/vers27d4.ver
    ld/testsuite/ld-elfvers/vers28a.c
    ld/testsuite/ld-elfvers/vers28a.dsym
    ld/testsuite/ld-elfvers/vers28a.ver
    ld/testsuite/ld-elfvers/vers28b.c
    ld/testsuite/ld-elfvers/vers28b.dsym
    ld/testsuite/ld-elfvers/vers28b.map
    ld/testsuite/ld-elfvers/vers28b.ver
    ld/testsuite/ld-elfvers/vers28c.c
    ld/testsuite/ld-elfvers/vers28c.dsym
    ld/testsuite/ld-elfvers/vers28c.ver
    ld/testsuite/ld-elfvers/vers3.c
    ld/testsuite/ld-elfvers/vers3.dsym
    ld/testsuite/ld-elfvers/vers3.ver
    ld/testsuite/ld-elfvers/vers4.c
    ld/testsuite/ld-elfvers/vers4.sym
    ld/testsuite/ld-elfvers/vers4a.dsym
    ld/testsuite/ld-elfvers/vers4a.sym
    ld/testsuite/ld-elfvers/vers4a.ver
    ld/testsuite/ld-elfvers/vers5.c
    ld/testsuite/ld-elfvers/vers6.c
    ld/testsuite/ld-elfvers/vers6.dsym
    ld/testsuite/ld-elfvers/vers6.sym
    ld/testsuite/ld-elfvers/vers6.ver
    ld/testsuite/ld-elfvers/vers7.c
    ld/testsuite/ld-elfvers/vers7.map
    ld/testsuite/ld-elfvers/vers7a.c
    ld/testsuite/ld-elfvers/vers7a.dsym
    ld/testsuite/ld-elfvers/vers7a.sym
    ld/testsuite/ld-elfvers/vers7a.ver
    ld/testsuite/ld-elfvers/vers8.c
    ld/testsuite/ld-elfvers/vers8.map
    ld/testsuite/ld-elfvers/vers8.ver
    ld/testsuite/ld-elfvers/vers9.c
    ld/testsuite/ld-elfvers/vers9.dsym
    ld/testsuite/ld-elfvers/vers9.sym
    ld/testsuite/ld-elfvers/vers9.ver
    ld/testsuite/ld-elfvsb/common.c
    ld/testsuite/ld-elfvsb/define.s
    ld/testsuite/ld-elfvsb/elf-offset.ld
    ld/testsuite/ld-elfvsb/elfvsb.dat
    ld/testsuite/ld-elfvsb/elfvsb.exp
    ld/testsuite/ld-elfvsb/hidden0.d
    ld/testsuite/ld-elfvsb/hidden1.d
    ld/testsuite/ld-elfvsb/internal0.d
    ld/testsuite/ld-elfvsb/internal1.d
    ld/testsuite/ld-elfvsb/main.c
    ld/testsuite/ld-elfvsb/protected0.d
    ld/testsuite/ld-elfvsb/protected1.d
    ld/testsuite/ld-elfvsb/sh1.c
    ld/testsuite/ld-elfvsb/sh2.c
    ld/testsuite/ld-elfvsb/sh3.c
    ld/testsuite/ld-elfvsb/test.c
    ld/testsuite/ld-elfvsb/undef.s
    ld/testsuite/ld-elfweak/bar.c
    ld/testsuite/ld-elfweak/bar1a.c
    ld/testsuite/ld-elfweak/bar1b.c
    ld/testsuite/ld-elfweak/bar1c.c
    ld/testsuite/ld-elfweak/dso.dsym
    ld/testsuite/ld-elfweak/dsodata.dsym
    ld/testsuite/ld-elfweak/dsow.dsym
    ld/testsuite/ld-elfweak/dsowdata.dsym
    ld/testsuite/ld-elfweak/elfweak.exp
    ld/testsuite/ld-elfweak/foo.c
    ld/testsuite/ld-elfweak/foo1a.c
    ld/testsuite/ld-elfweak/foo1b.c
    ld/testsuite/ld-elfweak/main.c
    ld/testsuite/ld-elfweak/main1.c
    ld/testsuite/ld-elfweak/size.dat
    ld/testsuite/ld-elfweak/size_bar.c
    ld/testsuite/ld-elfweak/size_foo.c
    ld/testsuite/ld-elfweak/size_main.c
    ld/testsuite/ld-elfweak/strong.dat
    ld/testsuite/ld-elfweak/strong.sym
    ld/testsuite/ld-elfweak/strongcomm.sym
    ld/testsuite/ld-elfweak/strongdata.dat
    ld/testsuite/ld-elfweak/strongdata.sym
    ld/testsuite/ld-elfweak/weak.dat
    ld/testsuite/ld-elfweak/weak.dsym
    ld/testsuite/ld-elfweak/weakdata.dat
    ld/testsuite/ld-elfweak/weakdata.dsym
    ld/testsuite/ld-fastcall/export.s
    ld/testsuite/ld-fastcall/fastcall.exp
    ld/testsuite/ld-fastcall/import.s
    ld/testsuite/ld-frv/fdpic-pie-1.d
    ld/testsuite/ld-frv/fdpic-pie-2.d
    ld/testsuite/ld-frv/fdpic-pie-5.d
    ld/testsuite/ld-frv/fdpic-pie-6-fail.d
    ld/testsuite/ld-frv/fdpic-pie-6.d
    ld/testsuite/ld-frv/fdpic-pie-7.d
    ld/testsuite/ld-frv/fdpic-pie-8.d
    ld/testsuite/ld-frv/fdpic-shared-1.d
    ld/testsuite/ld-frv/fdpic-shared-2-fail.d
    ld/testsuite/ld-frv/fdpic-shared-2.d
    ld/testsuite/ld-frv/fdpic-shared-3.d
    ld/testsuite/ld-frv/fdpic-shared-4.d
    ld/testsuite/ld-frv/fdpic-shared-5.d
    ld/testsuite/ld-frv/fdpic-shared-6-fail.d
    ld/testsuite/ld-frv/fdpic-shared-6.d
    ld/testsuite/ld-frv/fdpic-shared-7.d
    ld/testsuite/ld-frv/fdpic-shared-8-fail.d
    ld/testsuite/ld-frv/fdpic-shared-8.d
    ld/testsuite/ld-frv/fdpic-shared-local-2.d
    ld/testsuite/ld-frv/fdpic-shared-local-8.d
    ld/testsuite/ld-frv/fdpic-static-1.d
    ld/testsuite/ld-frv/fdpic-static-2.d
    ld/testsuite/ld-frv/fdpic-static-5.d
    ld/testsuite/ld-frv/fdpic-static-6.d
    ld/testsuite/ld-frv/fdpic-static-7.d
    ld/testsuite/ld-frv/fdpic-static-8.d
    ld/testsuite/ld-frv/fdpic.exp
    ld/testsuite/ld-frv/fdpic1.s
    ld/testsuite/ld-frv/fdpic2.ldv
    ld/testsuite/ld-frv/fdpic2.s
    ld/testsuite/ld-frv/fdpic2min.ldv
    ld/testsuite/ld-frv/fdpic3.s
    ld/testsuite/ld-frv/fdpic4.s
    ld/testsuite/ld-frv/fdpic5.s
    ld/testsuite/ld-frv/fdpic6.ldv
    ld/testsuite/ld-frv/fdpic6.s
    ld/testsuite/ld-frv/fdpic7.s
    ld/testsuite/ld-frv/fdpic8.ldv
    ld/testsuite/ld-frv/fdpic8.s
    ld/testsuite/ld-frv/fdpic8min.ldv
    ld/testsuite/ld-frv/fr450-link.d
    ld/testsuite/ld-frv/fr450-linka.s
    ld/testsuite/ld-frv/fr450-linkb.s
    ld/testsuite/ld-frv/fr450-linkc.s
    ld/testsuite/ld-frv/frv-elf.exp
    ld/testsuite/ld-h8300/gcsection.d
    ld/testsuite/ld-h8300/gcsection.s
    ld/testsuite/ld-h8300/h8300.exp
    ld/testsuite/ld-h8300/relax-2.d
    ld/testsuite/ld-h8300/relax-2.s
    ld/testsuite/ld-h8300/relax-3-coff.d
    ld/testsuite/ld-h8300/relax-3.d
    ld/testsuite/ld-h8300/relax-3.s
    ld/testsuite/ld-h8300/relax-4-coff.d
    ld/testsuite/ld-h8300/relax-4.d
    ld/testsuite/ld-h8300/relax-4.s
    ld/testsuite/ld-h8300/relax-5-coff.d
    ld/testsuite/ld-h8300/relax-5.d
    ld/testsuite/ld-h8300/relax-5.s
    ld/testsuite/ld-h8300/relax-6-coff.d
    ld/testsuite/ld-h8300/relax-6.d
    ld/testsuite/ld-h8300/relax-6.s
    ld/testsuite/ld-h8300/relax.d
    ld/testsuite/ld-h8300/relax.s
    ld/testsuite/ld-i386/combreloc.d
    ld/testsuite/ld-i386/combreloc.s
    ld/testsuite/ld-i386/i386.exp
    ld/testsuite/ld-i386/reloc.d
    ld/testsuite/ld-i386/reloc.s
    ld/testsuite/ld-i386/tlsbin.dd
    ld/testsuite/ld-i386/tlsbin.rd
    ld/testsuite/ld-i386/tlsbin.s
    ld/testsuite/ld-i386/tlsbin.sd
    ld/testsuite/ld-i386/tlsbin.td
    ld/testsuite/ld-i386/tlsbinpic.s
    ld/testsuite/ld-i386/tlsg.s
    ld/testsuite/ld-i386/tlsg.sd
    ld/testsuite/ld-i386/tlsindntpoff.dd
    ld/testsuite/ld-i386/tlsindntpoff.s
    ld/testsuite/ld-i386/tlslib.s
    ld/testsuite/ld-i386/tlsnopic.dd
    ld/testsuite/ld-i386/tlsnopic.rd
    ld/testsuite/ld-i386/tlsnopic.sd
    ld/testsuite/ld-i386/tlsnopic1.s
    ld/testsuite/ld-i386/tlsnopic2.s
    ld/testsuite/ld-i386/tlspic.dd
    ld/testsuite/ld-i386/tlspic.rd
    ld/testsuite/ld-i386/tlspic.sd
    ld/testsuite/ld-i386/tlspic.td
    ld/testsuite/ld-i386/tlspic1.s
    ld/testsuite/ld-i386/tlspic2.s
    ld/testsuite/ld-ia64/ia64.exp
    ld/testsuite/ld-ia64/tlsbin.dd
    ld/testsuite/ld-ia64/tlsbin.rd
    ld/testsuite/ld-ia64/tlsbin.s
    ld/testsuite/ld-ia64/tlsbin.sd
    ld/testsuite/ld-ia64/tlsbin.td
    ld/testsuite/ld-ia64/tlsbinpic.s
    ld/testsuite/ld-ia64/tlsg.s
    ld/testsuite/ld-ia64/tlsg.sd
    ld/testsuite/ld-ia64/tlslib.s
    ld/testsuite/ld-ia64/tlspic.dd
    ld/testsuite/ld-ia64/tlspic.rd
    ld/testsuite/ld-ia64/tlspic.sd
    ld/testsuite/ld-ia64/tlspic.td
    ld/testsuite/ld-ia64/tlspic1.s
    ld/testsuite/ld-ia64/tlspic2.s
    ld/testsuite/ld-linkonce/linkonce.exp
    ld/testsuite/ld-linkonce/x.s
    ld/testsuite/ld-linkonce/y.s
    ld/testsuite/ld-linkonce/zeroeh.ld
    ld/testsuite/ld-linkonce/zeroehl32.d
    ld/testsuite/ld-m68hc11/adj-brset.d
    ld/testsuite/ld-m68hc11/adj-brset.s
    ld/testsuite/ld-m68hc11/adj-jump.d
    ld/testsuite/ld-m68hc11/adj-jump.s
    ld/testsuite/ld-m68hc11/bug-1403.d
    ld/testsuite/ld-m68hc11/bug-1403.s
    ld/testsuite/ld-m68hc11/bug-1417.d
    ld/testsuite/ld-m68hc11/bug-1417.s
    ld/testsuite/ld-m68hc11/bug-3331.d
    ld/testsuite/ld-m68hc11/bug-3331.s
    ld/testsuite/ld-m68hc11/far-hc11.d
    ld/testsuite/ld-m68hc11/far-hc11.s
    ld/testsuite/ld-m68hc11/far-hc12.d
    ld/testsuite/ld-m68hc11/far-hc12.ld
    ld/testsuite/ld-m68hc11/far-hc12.s
    ld/testsuite/ld-m68hc11/link-hc12.s
    ld/testsuite/ld-m68hc11/link-hcs12.d
    ld/testsuite/ld-m68hc11/link-hcs12.s
    ld/testsuite/ld-m68hc11/m68hc11.exp
    ld/testsuite/ld-m68hc11/relax-direct.d
    ld/testsuite/ld-m68hc11/relax-direct.s
    ld/testsuite/ld-m68hc11/relax-group.d
    ld/testsuite/ld-m68hc11/relax-group.s
    ld/testsuite/ld-mips-elf/branch-misc-1.d
    ld/testsuite/ld-mips-elf/elf-rel-got-n32.d
    ld/testsuite/ld-mips-elf/elf-rel-got-n64-linux.d
    ld/testsuite/ld-mips-elf/elf-rel-got-n64.d
    ld/testsuite/ld-mips-elf/elf-rel-xgot-n32.d
    ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-linux.d
    ld/testsuite/ld-mips-elf/elf-rel-xgot-n64.d
    ld/testsuite/ld-mips-elf/jr.s
    ld/testsuite/ld-mips-elf/mips-elf-flags.exp
    ld/testsuite/ld-mips-elf/mips-elf.exp
    ld/testsuite/ld-mips-elf/mips16-1.d
    ld/testsuite/ld-mips-elf/mips16-1a.s
    ld/testsuite/ld-mips-elf/mips16-1b.s
    ld/testsuite/ld-mips-elf/multi-got-1-1.s
    ld/testsuite/ld-mips-elf/multi-got-1-2.s
    ld/testsuite/ld-mips-elf/multi-got-1.d
    ld/testsuite/ld-mips-elf/region1.d
    ld/testsuite/ld-mips-elf/region1.t
    ld/testsuite/ld-mips-elf/region1a.s
    ld/testsuite/ld-mips-elf/region1b.s
    ld/testsuite/ld-mips-elf/rel32-n32.d
    ld/testsuite/ld-mips-elf/rel32-o32.d
    ld/testsuite/ld-mips-elf/rel32.s
    ld/testsuite/ld-mips-elf/rel64.d
    ld/testsuite/ld-mips-elf/rel64.s
    ld/testsuite/ld-mips-elf/relax-jalr-n32-shared.d
    ld/testsuite/ld-mips-elf/relax-jalr-n32.d
    ld/testsuite/ld-mips-elf/relax-jalr-n64-shared.d
    ld/testsuite/ld-mips-elf/relax-jalr-n64.d
    ld/testsuite/ld-mips-elf/relax-jalr.s
    ld/testsuite/ld-mips-elf/reloc-1-n32.d
    ld/testsuite/ld-mips-elf/reloc-1-n64.d
    ld/testsuite/ld-mips-elf/reloc-1-rel.d
    ld/testsuite/ld-mips-elf/reloc-1a.s
    ld/testsuite/ld-mips-elf/reloc-1b.s
    ld/testsuite/ld-mips-elf/reloc-2.d
    ld/testsuite/ld-mips-elf/reloc-2.ld
    ld/testsuite/ld-mips-elf/reloc-2a.s
    ld/testsuite/ld-mips-elf/reloc-2b.s
    ld/testsuite/ld-mips-elf/reloc-merge-lo16.d
    ld/testsuite/ld-mips-elf/reloc-merge-lo16.ld
    ld/testsuite/ld-mips-elf/reloc-merge-lo16.s
    ld/testsuite/ld-mmix/a.s
    ld/testsuite/ld-mmix/areg-256.s
    ld/testsuite/ld-mmix/areg-t.s
    ld/testsuite/ld-mmix/aregm.s
    ld/testsuite/ld-mmix/b-badfil1.d
    ld/testsuite/ld-mmix/b-badfil1.s
    ld/testsuite/ld-mmix/b-badfil2.d
    ld/testsuite/ld-mmix/b-badfil2.s
    ld/testsuite/ld-mmix/b-badfixo.d
    ld/testsuite/ld-mmix/b-badfixo.s
    ld/testsuite/ld-mmix/b-badloc.d
    ld/testsuite/ld-mmix/b-badloc.s
    ld/testsuite/ld-mmix/b-badlop.d
    ld/testsuite/ld-mmix/b-badlop.s
    ld/testsuite/ld-mmix/b-badm.d
    ld/testsuite/ld-mmix/b-badm2.s
    ld/testsuite/ld-mmix/b-badmain.s
    ld/testsuite/ld-mmix/b-badquot.d
    ld/testsuite/ld-mmix/b-badquot.s
    ld/testsuite/ld-mmix/b-badrx1.d
    ld/testsuite/ld-mmix/b-badrx1.s
    ld/testsuite/ld-mmix/b-badrx2.d
    ld/testsuite/ld-mmix/b-badrx2.s
    ld/testsuite/ld-mmix/b-badrx3.d
    ld/testsuite/ld-mmix/b-badrx3.s
    ld/testsuite/ld-mmix/b-bend.s
    ld/testsuite/ld-mmix/b-bend1.d
    ld/testsuite/ld-mmix/b-bend2.d
    ld/testsuite/ld-mmix/b-bend3.d
    ld/testsuite/ld-mmix/b-bstab1.d
    ld/testsuite/ld-mmix/b-bstab1.s
    ld/testsuite/ld-mmix/b-fixo2.d
    ld/testsuite/ld-mmix/b-fixo2.s
    ld/testsuite/ld-mmix/b-goodmain.s
    ld/testsuite/ld-mmix/b-loc64k.d
    ld/testsuite/ld-mmix/b-loc64k.s
    ld/testsuite/ld-mmix/b-nosym.d
    ld/testsuite/ld-mmix/b-nosym.s
    ld/testsuite/ld-mmix/b-post1.s
    ld/testsuite/ld-mmix/b-twoinsn.s
    ld/testsuite/ld-mmix/b-widec.s
    ld/testsuite/ld-mmix/b-widec1.d
    ld/testsuite/ld-mmix/b-widec2.d
    ld/testsuite/ld-mmix/b-widec2.s
    ld/testsuite/ld-mmix/b-widec3.d
    ld/testsuite/ld-mmix/b-widec3.s
    ld/testsuite/ld-mmix/bpo-1.d
    ld/testsuite/ld-mmix/bpo-1.s
    ld/testsuite/ld-mmix/bpo-10.d
    ld/testsuite/ld-mmix/bpo-10.s
    ld/testsuite/ld-mmix/bpo-11.d
    ld/testsuite/ld-mmix/bpo-11.s
    ld/testsuite/ld-mmix/bpo-12.d
    ld/testsuite/ld-mmix/bpo-12m.d
    ld/testsuite/ld-mmix/bpo-13.d
    ld/testsuite/ld-mmix/bpo-13m.d
    ld/testsuite/ld-mmix/bpo-14.d
    ld/testsuite/ld-mmix/bpo-14m.d
    ld/testsuite/ld-mmix/bpo-15.d
    ld/testsuite/ld-mmix/bpo-15m.d
    ld/testsuite/ld-mmix/bpo-16.d
    ld/testsuite/ld-mmix/bpo-16m.d
    ld/testsuite/ld-mmix/bpo-17.d
    ld/testsuite/ld-mmix/bpo-17m.d
    ld/testsuite/ld-mmix/bpo-18.d
    ld/testsuite/ld-mmix/bpo-18m.d
    ld/testsuite/ld-mmix/bpo-19.d
    ld/testsuite/ld-mmix/bpo-19m.d
    ld/testsuite/ld-mmix/bpo-1m.d
    ld/testsuite/ld-mmix/bpo-2.d
    ld/testsuite/ld-mmix/bpo-2.s
    ld/testsuite/ld-mmix/bpo-20.d
    ld/testsuite/ld-mmix/bpo-20m.d
    ld/testsuite/ld-mmix/bpo-21.d
    ld/testsuite/ld-mmix/bpo-21m.d
    ld/testsuite/ld-mmix/bpo-22.d
    ld/testsuite/ld-mmix/bpo-2m.d
    ld/testsuite/ld-mmix/bpo-3.d
    ld/testsuite/ld-mmix/bpo-3.s
    ld/testsuite/ld-mmix/bpo-3m.d
    ld/testsuite/ld-mmix/bpo-4.d
    ld/testsuite/ld-mmix/bpo-4.s
    ld/testsuite/ld-mmix/bpo-4m.d
    ld/testsuite/ld-mmix/bpo-5.d
    ld/testsuite/ld-mmix/bpo-5.s
    ld/testsuite/ld-mmix/bpo-5m.d
    ld/testsuite/ld-mmix/bpo-6.d
    ld/testsuite/ld-mmix/bpo-6.s
    ld/testsuite/ld-mmix/bpo-6m.d
    ld/testsuite/ld-mmix/bpo-7.d
    ld/testsuite/ld-mmix/bpo-7.s
    ld/testsuite/ld-mmix/bpo-7m.d
    ld/testsuite/ld-mmix/bpo-8.d
    ld/testsuite/ld-mmix/bpo-8.s
    ld/testsuite/ld-mmix/bpo-8m.d
    ld/testsuite/ld-mmix/bpo-9.d
    ld/testsuite/ld-mmix/bpo-9.s
    ld/testsuite/ld-mmix/bpo-9m.d
    ld/testsuite/ld-mmix/bpo64addr.ld
    ld/testsuite/ld-mmix/bspec1.d
    ld/testsuite/ld-mmix/bspec1.s
    ld/testsuite/ld-mmix/bspec1m.d
    ld/testsuite/ld-mmix/bspec2.d
    ld/testsuite/ld-mmix/bspec2.s
    ld/testsuite/ld-mmix/bspec2m.d
    ld/testsuite/ld-mmix/bspec801.s
    ld/testsuite/ld-mmix/bspec802.s
    ld/testsuite/ld-mmix/bspec803.s
    ld/testsuite/ld-mmix/bspec804.s
    ld/testsuite/ld-mmix/bspec805.s
    ld/testsuite/ld-mmix/bspec806.s
    ld/testsuite/ld-mmix/bspec807.s
    ld/testsuite/ld-mmix/bspec808.s
    ld/testsuite/ld-mmix/bza-1b.d
    ld/testsuite/ld-mmix/bza-1f.d
    ld/testsuite/ld-mmix/bza-2b.d
    ld/testsuite/ld-mmix/bza-2f.d
    ld/testsuite/ld-mmix/bza-7b.d
    ld/testsuite/ld-mmix/bza-7f.d
    ld/testsuite/ld-mmix/bza-8b.d
    ld/testsuite/ld-mmix/bza-8f.d
    ld/testsuite/ld-mmix/bza.s
    ld/testsuite/ld-mmix/data1.s
    ld/testsuite/ld-mmix/dloc1.s
    ld/testsuite/ld-mmix/dloc2.s
    ld/testsuite/ld-mmix/ext1-254.s
    ld/testsuite/ld-mmix/ext1.s
    ld/testsuite/ld-mmix/ext1g.s
    ld/testsuite/ld-mmix/ext1l.s
    ld/testsuite/ld-mmix/getaa-1b.d
    ld/testsuite/ld-mmix/getaa-1f.d
    ld/testsuite/ld-mmix/getaa-2b.d
    ld/testsuite/ld-mmix/getaa-2f.d
    ld/testsuite/ld-mmix/getaa-4b.d
    ld/testsuite/ld-mmix/getaa-4f.d
    ld/testsuite/ld-mmix/getaa-6b.d
    ld/testsuite/ld-mmix/getaa-6f.d
    ld/testsuite/ld-mmix/getaa-7b.d
    ld/testsuite/ld-mmix/getaa-7f.d
    ld/testsuite/ld-mmix/getaa-8b.d
    ld/testsuite/ld-mmix/getaa-8f.d
    ld/testsuite/ld-mmix/getaa.s
    ld/testsuite/ld-mmix/getaa12b.d
    ld/testsuite/ld-mmix/getaa12f.d
    ld/testsuite/ld-mmix/getaa14b.d
    ld/testsuite/ld-mmix/getaa14f.d
    ld/testsuite/ld-mmix/greg-1.d
    ld/testsuite/ld-mmix/greg-1.s
    ld/testsuite/ld-mmix/greg-10.d
    ld/testsuite/ld-mmix/greg-11.d
    ld/testsuite/ld-mmix/greg-11b.d
    ld/testsuite/ld-mmix/greg-12.d
    ld/testsuite/ld-mmix/greg-13.d
    ld/testsuite/ld-mmix/greg-14.d
    ld/testsuite/ld-mmix/greg-14s.d
    ld/testsuite/ld-mmix/greg-15.d
    ld/testsuite/ld-mmix/greg-16.d
    ld/testsuite/ld-mmix/greg-17.d
    ld/testsuite/ld-mmix/greg-18.d
    ld/testsuite/ld-mmix/greg-19.d
    ld/testsuite/ld-mmix/greg-2.d
    ld/testsuite/ld-mmix/greg-2.s
    ld/testsuite/ld-mmix/greg-20.d
    ld/testsuite/ld-mmix/greg-3.d
    ld/testsuite/ld-mmix/greg-3.s
    ld/testsuite/ld-mmix/greg-4.d
    ld/testsuite/ld-mmix/greg-4.s
    ld/testsuite/ld-mmix/greg-5.d
    ld/testsuite/ld-mmix/greg-5.s
    ld/testsuite/ld-mmix/greg-5s.d
    ld/testsuite/ld-mmix/greg-6.d
    ld/testsuite/ld-mmix/greg-7.d
    ld/testsuite/ld-mmix/greg-8.d
    ld/testsuite/ld-mmix/greg-9.d
    ld/testsuite/ld-mmix/gregbza1.s
    ld/testsuite/ld-mmix/gregget1.s
    ld/testsuite/ld-mmix/gregget2.s
    ld/testsuite/ld-mmix/gregldo1.s
    ld/testsuite/ld-mmix/gregpsj1.s
    ld/testsuite/ld-mmix/hdr-1.d
    ld/testsuite/ld-mmix/jumpa-1b.d
    ld/testsuite/ld-mmix/jumpa-1f.d
    ld/testsuite/ld-mmix/jumpa-2b.d
    ld/testsuite/ld-mmix/jumpa-2f.d
    ld/testsuite/ld-mmix/jumpa-3b.d
    ld/testsuite/ld-mmix/jumpa-3f.d
    ld/testsuite/ld-mmix/jumpa-4b.d
    ld/testsuite/ld-mmix/jumpa-4f.d
    ld/testsuite/ld-mmix/jumpa-5b.d
    ld/testsuite/ld-mmix/jumpa-5f.d
    ld/testsuite/ld-mmix/jumpa-6b.d
    ld/testsuite/ld-mmix/jumpa-6f.d
    ld/testsuite/ld-mmix/jumpa-7b.d
    ld/testsuite/ld-mmix/jumpa-7f.d
    ld/testsuite/ld-mmix/jumpa-8b.d
    ld/testsuite/ld-mmix/jumpa-8f.d
    ld/testsuite/ld-mmix/jumpa-9b.d
    ld/testsuite/ld-mmix/jumpa-9f.d
    ld/testsuite/ld-mmix/jumpa.s
    ld/testsuite/ld-mmix/jumpa12b.d
    ld/testsuite/ld-mmix/jumpa12f.d
    ld/testsuite/ld-mmix/jumpa13b.d
    ld/testsuite/ld-mmix/jumpa13f.d
    ld/testsuite/ld-mmix/jumpa14b.d
    ld/testsuite/ld-mmix/jumpa14f.d
    ld/testsuite/ld-mmix/loc1.d
    ld/testsuite/ld-mmix/loc1.s
    ld/testsuite/ld-mmix/loc1m.d
    ld/testsuite/ld-mmix/loc2.d
    ld/testsuite/ld-mmix/loc2.s
    ld/testsuite/ld-mmix/loc2m.d
    ld/testsuite/ld-mmix/loc3.d
    ld/testsuite/ld-mmix/loc3m.d
    ld/testsuite/ld-mmix/loc4.d
    ld/testsuite/ld-mmix/loc4m.d
    ld/testsuite/ld-mmix/loc5.d
    ld/testsuite/ld-mmix/loc5m.d
    ld/testsuite/ld-mmix/loc6.d
    ld/testsuite/ld-mmix/loc6m.d
    ld/testsuite/ld-mmix/loc7.d
    ld/testsuite/ld-mmix/loc7m.d
    ld/testsuite/ld-mmix/local1.d
    ld/testsuite/ld-mmix/local1.s
    ld/testsuite/ld-mmix/local10.d
    ld/testsuite/ld-mmix/local10m.d
    ld/testsuite/ld-mmix/local11.d
    ld/testsuite/ld-mmix/local11m.d
    ld/testsuite/ld-mmix/local12.d
    ld/testsuite/ld-mmix/local12m.d
    ld/testsuite/ld-mmix/local1m.d
    ld/testsuite/ld-mmix/local2.d
    ld/testsuite/ld-mmix/local2.s
    ld/testsuite/ld-mmix/local2m.d
    ld/testsuite/ld-mmix/local3.d
    ld/testsuite/ld-mmix/local3m.d
    ld/testsuite/ld-mmix/local4.d
    ld/testsuite/ld-mmix/local4m.d
    ld/testsuite/ld-mmix/local5.d
    ld/testsuite/ld-mmix/local5m.d
    ld/testsuite/ld-mmix/local6.d
    ld/testsuite/ld-mmix/local6m.d
    ld/testsuite/ld-mmix/local7.d
    ld/testsuite/ld-mmix/local7m.d
    ld/testsuite/ld-mmix/local8.d
    ld/testsuite/ld-mmix/local8m.d
    ld/testsuite/ld-mmix/local9.d
    ld/testsuite/ld-mmix/local9m.d
    ld/testsuite/ld-mmix/locdo-1.d
    ld/testsuite/ld-mmix/locdo.s
    ld/testsuite/ld-mmix/loct-1.d
    ld/testsuite/ld-mmix/loct.s
    ld/testsuite/ld-mmix/locto-1.d
    ld/testsuite/ld-mmix/locto.s
    ld/testsuite/ld-mmix/main1.s
    ld/testsuite/ld-mmix/mmix.exp
    ld/testsuite/ld-mmix/mmohdr1.ld
    ld/testsuite/ld-mmix/mmosec1.ld
    ld/testsuite/ld-mmix/mmosec2.ld
    ld/testsuite/ld-mmix/nop123.s
    ld/testsuite/ld-mmix/pad16.s
    ld/testsuite/ld-mmix/pad2p18m32.s
    ld/testsuite/ld-mmix/pad2p26m32.s
    ld/testsuite/ld-mmix/pad4.s
    ld/testsuite/ld-mmix/pushja.s
    ld/testsuite/ld-mmix/pushja1b-s.d
    ld/testsuite/ld-mmix/pushja1b.d
    ld/testsuite/ld-mmix/pushja1f-s.d
    ld/testsuite/ld-mmix/pushja1f.d
    ld/testsuite/ld-mmix/pushja2b.d
    ld/testsuite/ld-mmix/pushja2f.d
    ld/testsuite/ld-mmix/pushja7b-s.d
    ld/testsuite/ld-mmix/pushja7b.d
    ld/testsuite/ld-mmix/pushja7f-s.d
    ld/testsuite/ld-mmix/pushja7f.d
    ld/testsuite/ld-mmix/pushja8b.d
    ld/testsuite/ld-mmix/pushja8f.d
    ld/testsuite/ld-mmix/pushjs1.d
    ld/testsuite/ld-mmix/pushjs1b.d
    ld/testsuite/ld-mmix/pushjs1bm.d
    ld/testsuite/ld-mmix/pushjs1m.d
    ld/testsuite/ld-mmix/pushjs1r.d
    ld/testsuite/ld-mmix/pushjs2.d
    ld/testsuite/ld-mmix/pushjs2b.d
    ld/testsuite/ld-mmix/pushjs2bm.d
    ld/testsuite/ld-mmix/pushjs2m.d
    ld/testsuite/ld-mmix/pushjs2r.d
    ld/testsuite/ld-mmix/pushjs3.d
    ld/testsuite/ld-mmix/pushjs3b.d
    ld/testsuite/ld-mmix/pushjs3bm.d
    ld/testsuite/ld-mmix/pushjs3m.d
    ld/testsuite/ld-mmix/pushjs3r.d
    ld/testsuite/ld-mmix/pushjs4.d
    ld/testsuite/ld-mmix/pushjs4b.d
    ld/testsuite/ld-mmix/pushjs4bm.d
    ld/testsuite/ld-mmix/pushjs4m.d
    ld/testsuite/ld-mmix/pushjs4r.d
    ld/testsuite/ld-mmix/reg-1.d
    ld/testsuite/ld-mmix/reg-1m.d
    ld/testsuite/ld-mmix/reg-2.d
    ld/testsuite/ld-mmix/reg-2m.d
    ld/testsuite/ld-mmix/regext1.s
    ld/testsuite/ld-mmix/sec-1.d
    ld/testsuite/ld-mmix/sec-1.s
    ld/testsuite/ld-mmix/sec-2.d
    ld/testsuite/ld-mmix/sec-2.s
    ld/testsuite/ld-mmix/sec-3.d
    ld/testsuite/ld-mmix/sec-4.d
    ld/testsuite/ld-mmix/sec-5.d
    ld/testsuite/ld-mmix/sec-6.d
    ld/testsuite/ld-mmix/sec-6.s
    ld/testsuite/ld-mmix/sec-6m.d
    ld/testsuite/ld-mmix/sec-7a.s
    ld/testsuite/ld-mmix/sec-7b.s
    ld/testsuite/ld-mmix/sec-7c.s
    ld/testsuite/ld-mmix/sec-7d.s
    ld/testsuite/ld-mmix/sec-7e.s
    ld/testsuite/ld-mmix/sec-7m.d
    ld/testsuite/ld-mmix/sec-8a.s
    ld/testsuite/ld-mmix/sec-8b.s
    ld/testsuite/ld-mmix/sec-8d.s
    ld/testsuite/ld-mmix/sec-8m.d
    ld/testsuite/ld-mmix/sec-8m.s
    ld/testsuite/ld-mmix/spec801.d
    ld/testsuite/ld-mmix/spec802.d
    ld/testsuite/ld-mmix/spec803.d
    ld/testsuite/ld-mmix/spec804.d
    ld/testsuite/ld-mmix/spec805.d
    ld/testsuite/ld-mmix/spec806.d
    ld/testsuite/ld-mmix/spec807.d
    ld/testsuite/ld-mmix/spec808.d
    ld/testsuite/ld-mmix/start-1.d
    ld/testsuite/ld-mmix/start-2.d
    ld/testsuite/ld-mmix/start.s
    ld/testsuite/ld-mmix/start2.s
    ld/testsuite/ld-mmix/start3.s
    ld/testsuite/ld-mmix/start4.s
    ld/testsuite/ld-mmix/sym-1.d
    ld/testsuite/ld-mmix/sym-2.d
    ld/testsuite/ld-mmix/sym-2.s
    ld/testsuite/ld-mmix/undef-1.d
    ld/testsuite/ld-mmix/undef-1.s
    ld/testsuite/ld-mmix/undef-1m.d
    ld/testsuite/ld-mmix/undef-2.d
    ld/testsuite/ld-mmix/undef-2.s
    ld/testsuite/ld-mmix/undef-2m.d
    ld/testsuite/ld-mmix/undef-3.d
    ld/testsuite/ld-mmix/undef-3m.d
    ld/testsuite/ld-mmix/x.s
    ld/testsuite/ld-mmix/y.s
    ld/testsuite/ld-mmix/zeroeh.ld
    ld/testsuite/ld-mmix/zeroehelf.d
    ld/testsuite/ld-mmix/zeroehmmo.d
    ld/testsuite/ld-pe/pe.exp
    ld/testsuite/ld-pe/secrel.d
    ld/testsuite/ld-pe/secrel1.s
    ld/testsuite/ld-pe/secrel2.s
    ld/testsuite/ld-powerpc/apuinfo.rd
    ld/testsuite/ld-powerpc/apuinfo1.s
    ld/testsuite/ld-powerpc/apuinfo2.s
    ld/testsuite/ld-powerpc/powerpc.exp
    ld/testsuite/ld-powerpc/reloc.d
    ld/testsuite/ld-powerpc/reloc.s
    ld/testsuite/ld-powerpc/tls.d
    ld/testsuite/ld-powerpc/tls.g
    ld/testsuite/ld-powerpc/tls.s
    ld/testsuite/ld-powerpc/tls.t
    ld/testsuite/ld-powerpc/tls32.d
    ld/testsuite/ld-powerpc/tls32.g
    ld/testsuite/ld-powerpc/tls32.s
    ld/testsuite/ld-powerpc/tls32.t
    ld/testsuite/ld-powerpc/tlsexe.d
    ld/testsuite/ld-powerpc/tlsexe.g
    ld/testsuite/ld-powerpc/tlsexe.r
    ld/testsuite/ld-powerpc/tlsexe.t
    ld/testsuite/ld-powerpc/tlsexe32.d
    ld/testsuite/ld-powerpc/tlsexe32.g
    ld/testsuite/ld-powerpc/tlsexe32.r
    ld/testsuite/ld-powerpc/tlsexe32.t
    ld/testsuite/ld-powerpc/tlsexetoc.d
    ld/testsuite/ld-powerpc/tlsexetoc.g
    ld/testsuite/ld-powerpc/tlsexetoc.r
    ld/testsuite/ld-powerpc/tlsexetoc.t
    ld/testsuite/ld-powerpc/tlslib.s
    ld/testsuite/ld-powerpc/tlslib32.s
    ld/testsuite/ld-powerpc/tlsso.d
    ld/testsuite/ld-powerpc/tlsso.g
    ld/testsuite/ld-powerpc/tlsso.r
    ld/testsuite/ld-powerpc/tlsso.t
    ld/testsuite/ld-powerpc/tlsso32.d
    ld/testsuite/ld-powerpc/tlsso32.g
    ld/testsuite/ld-powerpc/tlsso32.r
    ld/testsuite/ld-powerpc/tlsso32.t
    ld/testsuite/ld-powerpc/tlstoc.d
    ld/testsuite/ld-powerpc/tlstoc.g
    ld/testsuite/ld-powerpc/tlstoc.s
    ld/testsuite/ld-powerpc/tlstoc.t
    ld/testsuite/ld-powerpc/tlstocso.d
    ld/testsuite/ld-powerpc/tlstocso.g
    ld/testsuite/ld-powerpc/tlstocso.r
    ld/testsuite/ld-powerpc/tlstocso.t
    ld/testsuite/ld-s390/s390.exp
    ld/testsuite/ld-s390/tlsbin.dd
    ld/testsuite/ld-s390/tlsbin.rd
    ld/testsuite/ld-s390/tlsbin.s
    ld/testsuite/ld-s390/tlsbin.sd
    ld/testsuite/ld-s390/tlsbin.td
    ld/testsuite/ld-s390/tlsbin_64.dd
    ld/testsuite/ld-s390/tlsbin_64.rd
    ld/testsuite/ld-s390/tlsbin_64.s
    ld/testsuite/ld-s390/tlsbin_64.sd
    ld/testsuite/ld-s390/tlsbin_64.td
    ld/testsuite/ld-s390/tlsbinpic.s
    ld/testsuite/ld-s390/tlsbinpic_64.s
    ld/testsuite/ld-s390/tlslib.s
    ld/testsuite/ld-s390/tlslib_64.s
    ld/testsuite/ld-s390/tlspic.dd
    ld/testsuite/ld-s390/tlspic.rd
    ld/testsuite/ld-s390/tlspic.sd
    ld/testsuite/ld-s390/tlspic.td
    ld/testsuite/ld-s390/tlspic1.s
    ld/testsuite/ld-s390/tlspic1_64.s
    ld/testsuite/ld-s390/tlspic2.s
    ld/testsuite/ld-s390/tlspic2_64.s
    ld/testsuite/ld-s390/tlspic_64.dd
    ld/testsuite/ld-s390/tlspic_64.rd
    ld/testsuite/ld-s390/tlspic_64.sd
    ld/testsuite/ld-s390/tlspic_64.td
    ld/testsuite/ld-scripts/align.exp
    ld/testsuite/ld-scripts/align.s
    ld/testsuite/ld-scripts/align.t
    ld/testsuite/ld-scripts/assert.exp
    ld/testsuite/ld-scripts/assert.s
    ld/testsuite/ld-scripts/assert.t
    ld/testsuite/ld-scripts/cross1.c
    ld/testsuite/ld-scripts/cross1.t
    ld/testsuite/ld-scripts/cross2.c
    ld/testsuite/ld-scripts/cross2.t
    ld/testsuite/ld-scripts/cross3.c
    ld/testsuite/ld-scripts/crossref.exp
    ld/testsuite/ld-scripts/data.d
    ld/testsuite/ld-scripts/data.exp
    ld/testsuite/ld-scripts/data.s
    ld/testsuite/ld-scripts/data.t
    ld/testsuite/ld-scripts/defined.exp
    ld/testsuite/ld-scripts/defined.s
    ld/testsuite/ld-scripts/defined.t
    ld/testsuite/ld-scripts/defined2.d
    ld/testsuite/ld-scripts/defined2.t
    ld/testsuite/ld-scripts/defined3.d
    ld/testsuite/ld-scripts/defined3.t
    ld/testsuite/ld-scripts/dynamic-sections-1.s
    ld/testsuite/ld-scripts/dynamic-sections-2.s
    ld/testsuite/ld-scripts/dynamic-sections.d
    ld/testsuite/ld-scripts/dynamic-sections.exp
    ld/testsuite/ld-scripts/dynamic-sections.t
    ld/testsuite/ld-scripts/map-address.d
    ld/testsuite/ld-scripts/map-address.exp
    ld/testsuite/ld-scripts/map-address.t
    ld/testsuite/ld-scripts/overlay-size-map.d
    ld/testsuite/ld-scripts/overlay-size.d
    ld/testsuite/ld-scripts/overlay-size.exp
    ld/testsuite/ld-scripts/overlay-size.s
    ld/testsuite/ld-scripts/overlay-size.t
    ld/testsuite/ld-scripts/phdrs.exp
    ld/testsuite/ld-scripts/phdrs.s
    ld/testsuite/ld-scripts/phdrs.t
    ld/testsuite/ld-scripts/phdrs2.exp
    ld/testsuite/ld-scripts/phdrs2.s
    ld/testsuite/ld-scripts/phdrs2.t
    ld/testsuite/ld-scripts/provide-1.d
    ld/testsuite/ld-scripts/provide-1.s
    ld/testsuite/ld-scripts/provide-1.t
    ld/testsuite/ld-scripts/provide-2.d
    ld/testsuite/ld-scripts/provide-2.s
    ld/testsuite/ld-scripts/provide-2.t
    ld/testsuite/ld-scripts/provide-3.d
    ld/testsuite/ld-scripts/provide-3.s
    ld/testsuite/ld-scripts/provide-3.t
    ld/testsuite/ld-scripts/provide.exp
    ld/testsuite/ld-scripts/script.exp
    ld/testsuite/ld-scripts/script.s
    ld/testsuite/ld-scripts/script.t
    ld/testsuite/ld-scripts/scriptm.t
    ld/testsuite/ld-scripts/size-1.d
    ld/testsuite/ld-scripts/size-1.s
    ld/testsuite/ld-scripts/size-1.t
    ld/testsuite/ld-scripts/size-2.d
    ld/testsuite/ld-scripts/size-2.s
    ld/testsuite/ld-scripts/size-2.t
    ld/testsuite/ld-scripts/size.exp
    ld/testsuite/ld-scripts/sizeof.exp
    ld/testsuite/ld-scripts/sizeof.s
    ld/testsuite/ld-scripts/sizeof.t
    ld/testsuite/ld-scripts/sort.exp
    ld/testsuite/ld-scripts/sort_b_a.d
    ld/testsuite/ld-scripts/sort_b_a.s
    ld/testsuite/ld-scripts/sort_b_a.t
    ld/testsuite/ld-scripts/sort_b_a_a-1.d
    ld/testsuite/ld-scripts/sort_b_a_a-2.d
    ld/testsuite/ld-scripts/sort_b_a_a-3.d
    ld/testsuite/ld-scripts/sort_b_a_a.t
    ld/testsuite/ld-scripts/sort_b_a_n-1.d
    ld/testsuite/ld-scripts/sort_b_a_n-2.d
    ld/testsuite/ld-scripts/sort_b_a_n-3.d
    ld/testsuite/ld-scripts/sort_b_a_n.t
    ld/testsuite/ld-scripts/sort_b_n.d
    ld/testsuite/ld-scripts/sort_b_n.s
    ld/testsuite/ld-scripts/sort_b_n.t
    ld/testsuite/ld-scripts/sort_b_n_a-1.d
    ld/testsuite/ld-scripts/sort_b_n_a-2.d
    ld/testsuite/ld-scripts/sort_b_n_a-3.d
    ld/testsuite/ld-scripts/sort_b_n_a.t
    ld/testsuite/ld-scripts/sort_b_n_n-1.d
    ld/testsuite/ld-scripts/sort_b_n_n-2.d
    ld/testsuite/ld-scripts/sort_b_n_n-3.d
    ld/testsuite/ld-scripts/sort_b_n_n.t
    ld/testsuite/ld-scripts/sort_n_a-a.s
    ld/testsuite/ld-scripts/sort_n_a-b.s
    ld/testsuite/ld-scripts/sort_no-1.d
    ld/testsuite/ld-scripts/sort_no-2.d
    ld/testsuite/ld-scripts/sort_no.t
    ld/testsuite/ld-scripts/weak.exp
    ld/testsuite/ld-scripts/weak.t
    ld/testsuite/ld-scripts/weak1.s
    ld/testsuite/ld-scripts/weak2.s
    ld/testsuite/ld-selective/1.c
    ld/testsuite/ld-selective/2.c
    ld/testsuite/ld-selective/3.cc
    ld/testsuite/ld-selective/4.cc
    ld/testsuite/ld-selective/5.cc
    ld/testsuite/ld-selective/keepdot.d
    ld/testsuite/ld-selective/keepdot.ld
    ld/testsuite/ld-selective/keepdot.s
    ld/testsuite/ld-selective/keepdot0.d
    ld/testsuite/ld-selective/keepdot0.ld
    ld/testsuite/ld-selective/sel-dump.exp
    ld/testsuite/ld-selective/selective.exp
    ld/testsuite/ld-sh/arch/arch.exp
    ld/testsuite/ld-sh/arch/arch_expected.txt
    ld/testsuite/ld-sh/arch/sh-dsp.s
    ld/testsuite/ld-sh/arch/sh.s
    ld/testsuite/ld-sh/arch/sh2.s
    ld/testsuite/ld-sh/arch/sh2e.s
    ld/testsuite/ld-sh/arch/sh3-dsp.s
    ld/testsuite/ld-sh/arch/sh3-nommu.s
    ld/testsuite/ld-sh/arch/sh3.s
    ld/testsuite/ld-sh/arch/sh3e.s
    ld/testsuite/ld-sh/arch/sh4-nofpu.s
    ld/testsuite/ld-sh/arch/sh4-nommu-nofpu.s
    ld/testsuite/ld-sh/arch/sh4.s
    ld/testsuite/ld-sh/arch/sh4a-nofpu.s
    ld/testsuite/ld-sh/arch/sh4a.s
    ld/testsuite/ld-sh/arch/sh4al-dsp.s
    ld/testsuite/ld-sh/ld-r-1.d
    ld/testsuite/ld-sh/ldr1.s
    ld/testsuite/ld-sh/ldr2.s
    ld/testsuite/ld-sh/rd-sh.exp
    ld/testsuite/ld-sh/refdbg-0-dso.d
    ld/testsuite/ld-sh/refdbg-1.d
    ld/testsuite/ld-sh/refdbg.s
    ld/testsuite/ld-sh/refdbglib.s
    ld/testsuite/ld-sh/sh.exp
    ld/testsuite/ld-sh/sh1.s
    ld/testsuite/ld-sh/sh2.c
    ld/testsuite/ld-sh/sh64/abi32.sd
    ld/testsuite/ld-sh/sh64/abi32.xd
    ld/testsuite/ld-sh/sh64/abi64.sd
    ld/testsuite/ld-sh/sh64/abi64.xd
    ld/testsuite/ld-sh/sh64/abixx-noexp.sd
    ld/testsuite/ld-sh/sh64/cmpct1.sd
    ld/testsuite/ld-sh/sh64/cmpct1.xd
    ld/testsuite/ld-sh/sh64/crange-1.s
    ld/testsuite/ld-sh/sh64/crange-2a.s
    ld/testsuite/ld-sh/sh64/crange-2b.s
    ld/testsuite/ld-sh/sh64/crange-2c.s
    ld/testsuite/ld-sh/sh64/crange-2d.s
    ld/testsuite/ld-sh/sh64/crange-2e.s
    ld/testsuite/ld-sh/sh64/crange-2f.s
    ld/testsuite/ld-sh/sh64/crange-2g.s
    ld/testsuite/ld-sh/sh64/crange-2h.s
    ld/testsuite/ld-sh/sh64/crange-2i.s
    ld/testsuite/ld-sh/sh64/crange1.rd
    ld/testsuite/ld-sh/sh64/crange2.rd
    ld/testsuite/ld-sh/sh64/crange3-cmpct.rd
    ld/testsuite/ld-sh/sh64/crange3-media.rd
    ld/testsuite/ld-sh/sh64/crange3.dd
    ld/testsuite/ld-sh/sh64/crange3.rd
    ld/testsuite/ld-sh/sh64/crangerel1.rd
    ld/testsuite/ld-sh/sh64/crangerel2.rd
    ld/testsuite/ld-sh/sh64/dlsection-1.s
    ld/testsuite/ld-sh/sh64/dlsection.sd
    ld/testsuite/ld-sh/sh64/endian.dbd
    ld/testsuite/ld-sh/sh64/endian.dld
    ld/testsuite/ld-sh/sh64/endian.ld
    ld/testsuite/ld-sh/sh64/endian.s
    ld/testsuite/ld-sh/sh64/endian.sbd
    ld/testsuite/ld-sh/sh64/endian.sld
    ld/testsuite/ld-sh/sh64/gotplt.d
    ld/testsuite/ld-sh/sh64/gotplt.map
    ld/testsuite/ld-sh/sh64/gotplt.s
    ld/testsuite/ld-sh/sh64/init-cmpct.d
    ld/testsuite/ld-sh/sh64/init-media.d
    ld/testsuite/ld-sh/sh64/init.s
    ld/testsuite/ld-sh/sh64/init64.d
    ld/testsuite/ld-sh/sh64/mix1-noexp.sd
    ld/testsuite/ld-sh/sh64/mix1.sd
    ld/testsuite/ld-sh/sh64/mix1.xd
    ld/testsuite/ld-sh/sh64/mix2-noexp.sd
    ld/testsuite/ld-sh/sh64/mix2.sd
    ld/testsuite/ld-sh/sh64/mix2.xd
    ld/testsuite/ld-sh/sh64/rd-sh64.exp
    ld/testsuite/ld-sh/sh64/rel-1.s
    ld/testsuite/ld-sh/sh64/rel-2.s
    ld/testsuite/ld-sh/sh64/rel32.xd
    ld/testsuite/ld-sh/sh64/rel64.xd
    ld/testsuite/ld-sh/sh64/relax.exp
    ld/testsuite/ld-sh/sh64/relax1.s
    ld/testsuite/ld-sh/sh64/relax2.s
    ld/testsuite/ld-sh/sh64/relax3.s
    ld/testsuite/ld-sh/sh64/relax4.s
    ld/testsuite/ld-sh/sh64/reldl-1.s
    ld/testsuite/ld-sh/sh64/reldl-2.s
    ld/testsuite/ld-sh/sh64/reldl32.rd
    ld/testsuite/ld-sh/sh64/reldl64.rd
    ld/testsuite/ld-sh/sh64/relfail.exp
    ld/testsuite/ld-sh/sh64/relfail.s
    ld/testsuite/ld-sh/sh64/sh64-1.s
    ld/testsuite/ld-sh/sh64/sh64-2.s
    ld/testsuite/ld-sh/sh64/sh64.exp
    ld/testsuite/ld-sh/sh64/shcmp-1.s
    ld/testsuite/ld-sh/sh64/shdl-1.s
    ld/testsuite/ld-sh/sh64/shdl-2.s
    ld/testsuite/ld-sh/sh64/shdl32.xd
    ld/testsuite/ld-sh/sh64/shdl64.sd
    ld/testsuite/ld-sh/sh64/shdl64.xd
    ld/testsuite/ld-sh/sh64/shmix-1.s
    ld/testsuite/ld-sh/sh64/shmix-2.s
    ld/testsuite/ld-sh/sh64/shmix-3.s
    ld/testsuite/ld-sh/sh64/stobin-0-dso.d
    ld/testsuite/ld-sh/sh64/stobin-1.d
    ld/testsuite/ld-sh/sh64/stobin.s
    ld/testsuite/ld-sh/sh64/stolib.s
    ld/testsuite/ld-sh/shared-1.d
    ld/testsuite/ld-sh/shared-2.d
    ld/testsuite/ld-sh/start.s
    ld/testsuite/ld-sh/sub2l-1.d
    ld/testsuite/ld-sh/sub2l.s
    ld/testsuite/ld-sh/textrel1.s
    ld/testsuite/ld-sh/textrel2.s
    ld/testsuite/ld-sh/tlsbin-0-dso.d
    ld/testsuite/ld-sh/tlsbin-1.d
    ld/testsuite/ld-sh/tlsbin-2.d
    ld/testsuite/ld-sh/tlsbin-3.d
    ld/testsuite/ld-sh/tlsbin-4.d
    ld/testsuite/ld-sh/tlsbin.s
    ld/testsuite/ld-sh/tlsbinpic.s
    ld/testsuite/ld-sh/tlslib.s
    ld/testsuite/ld-sh/tlspic-1.d
    ld/testsuite/ld-sh/tlspic-2.d
    ld/testsuite/ld-sh/tlspic-3.d
    ld/testsuite/ld-sh/tlspic-4.d
    ld/testsuite/ld-sh/tlspic1.s
    ld/testsuite/ld-sh/tlspic2.s
    ld/testsuite/ld-sh/tlstpoff-1.d
    ld/testsuite/ld-sh/tlstpoff-2.d
    ld/testsuite/ld-sh/tlstpoff1.s
    ld/testsuite/ld-sh/tlstpoff2.s
    ld/testsuite/ld-sh/weak1.d
    ld/testsuite/ld-sh/weak1.s
    ld/testsuite/ld-shared/elf-offset.ld
    ld/testsuite/ld-shared/main.c
    ld/testsuite/ld-shared/sh1.c
    ld/testsuite/ld-shared/sh2.c
    ld/testsuite/ld-shared/shared.dat
    ld/testsuite/ld-shared/shared.exp
    ld/testsuite/ld-shared/sun4.dat
    ld/testsuite/ld-shared/symbolic.dat
    ld/testsuite/ld-shared/xcoff.dat
    ld/testsuite/ld-sparc/sparc.exp
    ld/testsuite/ld-sparc/tlsg32.s
    ld/testsuite/ld-sparc/tlsg32.sd
    ld/testsuite/ld-sparc/tlsg64.s
    ld/testsuite/ld-sparc/tlsg64.sd
    ld/testsuite/ld-sparc/tlslib.s
    ld/testsuite/ld-sparc/tlsnopic.s
    ld/testsuite/ld-sparc/tlspic.s
    ld/testsuite/ld-sparc/tlssunbin32.dd
    ld/testsuite/ld-sparc/tlssunbin32.rd
    ld/testsuite/ld-sparc/tlssunbin32.s
    ld/testsuite/ld-sparc/tlssunbin32.sd
    ld/testsuite/ld-sparc/tlssunbin32.td
    ld/testsuite/ld-sparc/tlssunbin64.dd
    ld/testsuite/ld-sparc/tlssunbin64.rd
    ld/testsuite/ld-sparc/tlssunbin64.s
    ld/testsuite/ld-sparc/tlssunbin64.sd
    ld/testsuite/ld-sparc/tlssunbin64.td
    ld/testsuite/ld-sparc/tlssunbinpic32.s
    ld/testsuite/ld-sparc/tlssunbinpic64.s
    ld/testsuite/ld-sparc/tlssunnopic32.dd
    ld/testsuite/ld-sparc/tlssunnopic32.rd
    ld/testsuite/ld-sparc/tlssunnopic32.s
    ld/testsuite/ld-sparc/tlssunnopic32.sd
    ld/testsuite/ld-sparc/tlssunnopic64.dd
    ld/testsuite/ld-sparc/tlssunnopic64.rd
    ld/testsuite/ld-sparc/tlssunnopic64.s
    ld/testsuite/ld-sparc/tlssunnopic64.sd
    ld/testsuite/ld-sparc/tlssunpic32.dd
    ld/testsuite/ld-sparc/tlssunpic32.rd
    ld/testsuite/ld-sparc/tlssunpic32.s
    ld/testsuite/ld-sparc/tlssunpic32.sd
    ld/testsuite/ld-sparc/tlssunpic32.td
    ld/testsuite/ld-sparc/tlssunpic64.dd
    ld/testsuite/ld-sparc/tlssunpic64.rd
    ld/testsuite/ld-sparc/tlssunpic64.s
    ld/testsuite/ld-sparc/tlssunpic64.sd
    ld/testsuite/ld-sparc/tlssunpic64.td
    ld/testsuite/ld-srec/sr1.c
    ld/testsuite/ld-srec/sr2.c
    ld/testsuite/ld-srec/sr3.cc
    ld/testsuite/ld-srec/srec.exp
    ld/testsuite/ld-undefined/undefined.c
    ld/testsuite/ld-undefined/undefined.exp
    ld/testsuite/ld-undefined/weak-undef.exp
    ld/testsuite/ld-undefined/weak-undef.s
    ld/testsuite/ld-undefined/weak-undef.t
    ld/testsuite/ld-versados/t1-1.ro
    ld/testsuite/ld-versados/t1-2.ro
    ld/testsuite/ld-versados/t1.ld
    ld/testsuite/ld-versados/t1.ook
    ld/testsuite/ld-versados/t2-1.ro
    ld/testsuite/ld-versados/t2-2.ro
    ld/testsuite/ld-versados/t2-3.ro
    ld/testsuite/ld-versados/t2.ld
    ld/testsuite/ld-versados/t2.ook
    ld/testsuite/ld-versados/versados.exp
    ld/testsuite/ld-x86-64/tlsbin.dd
    ld/testsuite/ld-x86-64/tlsbin.rd
    ld/testsuite/ld-x86-64/tlsbin.s
    ld/testsuite/ld-x86-64/tlsbin.sd
    ld/testsuite/ld-x86-64/tlsbin.td
    ld/testsuite/ld-x86-64/tlsbinpic.s
    ld/testsuite/ld-x86-64/tlsg.s
    ld/testsuite/ld-x86-64/tlsg.sd
    ld/testsuite/ld-x86-64/tlslib.s
    ld/testsuite/ld-x86-64/tlspic.dd
    ld/testsuite/ld-x86-64/tlspic.rd
    ld/testsuite/ld-x86-64/tlspic.sd
    ld/testsuite/ld-x86-64/tlspic.td
    ld/testsuite/ld-x86-64/tlspic1.s
    ld/testsuite/ld-x86-64/tlspic2.s
    ld/testsuite/ld-x86-64/x86-64.exp
    ld/testsuite/ld-xstormy16/external.s
    ld/testsuite/ld-xstormy16/pcrel.d
    ld/testsuite/ld-xstormy16/pcrel.s
    ld/testsuite/ld-xstormy16/xstormy16.exp
    ld/testsuite/ld-xtensa/coalesce.exp
    ld/testsuite/ld-xtensa/coalesce.t
    ld/testsuite/ld-xtensa/coalesce1.s
    ld/testsuite/ld-xtensa/coalesce2.s
    ld/testsuite/ld-xtensa/lcall.exp
    ld/testsuite/ld-xtensa/lcall.t
    ld/testsuite/ld-xtensa/lcall1.s
    ld/testsuite/ld-xtensa/lcall2.s
    ld/testsuite/lib/ld-lib.exp
    mmalloc/COPYING.LIB
    mmalloc/ChangeLog
    mmalloc/MAINTAINERS
    mmalloc/Makefile.in
    mmalloc/TODO
    mmalloc/acinclude.m4
    mmalloc/aclocal.m4
    mmalloc/attach.c
    mmalloc/configure
    mmalloc/configure.in
    mmalloc/detach.c
    mmalloc/keys.c
    mmalloc/mcalloc.c
    mmalloc/mfree.c
    mmalloc/mm.c
    mmalloc/mmalloc.c
    mmalloc/mmalloc.h
    mmalloc/mmalloc.texi
    mmalloc/mmap-sup.c
    mmalloc/mmcheck.c
    mmalloc/mmemalign.c
    mmalloc/mmprivate.h
    mmalloc/mmstats.c
    mmalloc/mmtrace.awk
    mmalloc/mmtrace.c
    mmalloc/mrealloc.c
    mmalloc/mvalloc.c
    mmalloc/sbrk-sup.c
    sim/sh64/ChangeLog
    sim/sh64/Makefile.in
    sim/sh64/arch.c
    sim/sh64/arch.h
    sim/sh64/config.in
    sim/sh64/configure
    sim/sh64/configure.in
    sim/sh64/cpu.c
    sim/sh64/cpu.h
    sim/sh64/cpuall.h
    sim/sh64/decode-compact.c
    sim/sh64/decode-compact.h
    sim/sh64/decode-media.c
    sim/sh64/decode-media.h
    sim/sh64/decode.h
    sim/sh64/defs-compact.h
    sim/sh64/defs-media.h
    sim/sh64/eng-compact.h
    sim/sh64/eng-media.h
    sim/sh64/eng.h
    sim/sh64/mloop-compact.c
    sim/sh64/mloop-media.c
    sim/sh64/sem-compact-switch.c
    sim/sh64/sem-compact.c
    sim/sh64/sem-media-switch.c
    sim/sh64/sem-media.c
    sim/sh64/sh-desc.c
    sim/sh64/sh-desc.h
    sim/sh64/sh-opc.h
    sim/sh64/sh64-sim.h
    sim/sh64/sh64.c
    sim/sh64/sim-if.c
    sim/sh64/sim-main.h
    sim/sh64/tconfig.in
    sim/testsuite/sim/sh64/ChangeLog
    sim/testsuite/sim/sh64/compact.exp
    sim/testsuite/sim/sh64/compact/ChangeLog
    sim/testsuite/sim/sh64/compact/add.cgs
    sim/testsuite/sim/sh64/compact/addc.cgs
    sim/testsuite/sim/sh64/compact/addi.cgs
    sim/testsuite/sim/sh64/compact/addv.cgs
    sim/testsuite/sim/sh64/compact/and.cgs
    sim/testsuite/sim/sh64/compact/andb.cgs
    sim/testsuite/sim/sh64/compact/andi.cgs
    sim/testsuite/sim/sh64/compact/bf.cgs
    sim/testsuite/sim/sh64/compact/bfs.cgs
    sim/testsuite/sim/sh64/compact/bra.cgs
    sim/testsuite/sim/sh64/compact/braf.cgs
    sim/testsuite/sim/sh64/compact/brk.cgs
    sim/testsuite/sim/sh64/compact/bsr.cgs
    sim/testsuite/sim/sh64/compact/bsrf.cgs
    sim/testsuite/sim/sh64/compact/bt.cgs
    sim/testsuite/sim/sh64/compact/bts.cgs
    sim/testsuite/sim/sh64/compact/clrmac.cgs
    sim/testsuite/sim/sh64/compact/clrs.cgs
    sim/testsuite/sim/sh64/compact/clrt.cgs
    sim/testsuite/sim/sh64/compact/cmpeq.cgs
    sim/testsuite/sim/sh64/compact/cmpeqi.cgs
    sim/testsuite/sim/sh64/compact/cmpge.cgs
    sim/testsuite/sim/sh64/compact/cmpgt.cgs
    sim/testsuite/sim/sh64/compact/cmphi.cgs
    sim/testsuite/sim/sh64/compact/cmphs.cgs
    sim/testsuite/sim/sh64/compact/cmppl.cgs
    sim/testsuite/sim/sh64/compact/cmppz.cgs
    sim/testsuite/sim/sh64/compact/cmpstr.cgs
    sim/testsuite/sim/sh64/compact/div0s.cgs
    sim/testsuite/sim/sh64/compact/div0u.cgs
    sim/testsuite/sim/sh64/compact/div1.cgs
    sim/testsuite/sim/sh64/compact/dmulsl.cgs
    sim/testsuite/sim/sh64/compact/dmulul.cgs
    sim/testsuite/sim/sh64/compact/dt.cgs
    sim/testsuite/sim/sh64/compact/extsb.cgs
    sim/testsuite/sim/sh64/compact/extsw.cgs
    sim/testsuite/sim/sh64/compact/extub.cgs
    sim/testsuite/sim/sh64/compact/extuw.cgs
    sim/testsuite/sim/sh64/compact/fabs.cgs
    sim/testsuite/sim/sh64/compact/fadd.cgs
    sim/testsuite/sim/sh64/compact/fcmpeq.cgs
    sim/testsuite/sim/sh64/compact/fcmpgt.cgs
    sim/testsuite/sim/sh64/compact/fcnvds.cgs
    sim/testsuite/sim/sh64/compact/fcnvsd.cgs
    sim/testsuite/sim/sh64/compact/fdiv.cgs
    sim/testsuite/sim/sh64/compact/fipr.cgs
    sim/testsuite/sim/sh64/compact/fldi0.cgs
    sim/testsuite/sim/sh64/compact/fldi1.cgs
    sim/testsuite/sim/sh64/compact/flds.cgs
    sim/testsuite/sim/sh64/compact/float.cgs
    sim/testsuite/sim/sh64/compact/fmac.cgs
    sim/testsuite/sim/sh64/compact/fmov.cgs
    sim/testsuite/sim/sh64/compact/fmul.cgs
    sim/testsuite/sim/sh64/compact/fneg.cgs
    sim/testsuite/sim/sh64/compact/frchg.cgs
    sim/testsuite/sim/sh64/compact/fschg.cgs
    sim/testsuite/sim/sh64/compact/fsqrt.cgs
    sim/testsuite/sim/sh64/compact/fsts.cgs
    sim/testsuite/sim/sh64/compact/fsub.cgs
    sim/testsuite/sim/sh64/compact/ftrc.cgs
    sim/testsuite/sim/sh64/compact/ftrv.cgs
    sim/testsuite/sim/sh64/compact/jmp.cgs
    sim/testsuite/sim/sh64/compact/jsr.cgs
    sim/testsuite/sim/sh64/compact/ldc-gbr.cgs
    sim/testsuite/sim/sh64/compact/ldcl-gbr.cgs
    sim/testsuite/sim/sh64/compact/lds-fpscr.cgs
    sim/testsuite/sim/sh64/compact/lds-fpul.cgs
    sim/testsuite/sim/sh64/compact/lds-mach.cgs
    sim/testsuite/sim/sh64/compact/lds-macl.cgs
    sim/testsuite/sim/sh64/compact/lds-pr.cgs
    sim/testsuite/sim/sh64/compact/ldsl-fpscr.cgs
    sim/testsuite/sim/sh64/compact/ldsl-fpul.cgs
    sim/testsuite/sim/sh64/compact/ldsl-mach.cgs
    sim/testsuite/sim/sh64/compact/ldsl-macl.cgs
    sim/testsuite/sim/sh64/compact/ldsl-pr.cgs
    sim/testsuite/sim/sh64/compact/macl.cgs
    sim/testsuite/sim/sh64/compact/macw.cgs
    sim/testsuite/sim/sh64/compact/mov.cgs
    sim/testsuite/sim/sh64/compact/mova.cgs
    sim/testsuite/sim/sh64/compact/movb1.cgs
    sim/testsuite/sim/sh64/compact/movb10.cgs
    sim/testsuite/sim/sh64/compact/movb2.cgs
    sim/testsuite/sim/sh64/compact/movb3.cgs
    sim/testsuite/sim/sh64/compact/movb4.cgs
    sim/testsuite/sim/sh64/compact/movb5.cgs
    sim/testsuite/sim/sh64/compact/movb6.cgs
    sim/testsuite/sim/sh64/compact/movb7.cgs
    sim/testsuite/sim/sh64/compact/movb8.cgs
    sim/testsuite/sim/sh64/compact/movb9.cgs
    sim/testsuite/sim/sh64/compact/movcal.cgs
    sim/testsuite/sim/sh64/compact/movi.cgs
    sim/testsuite/sim/sh64/compact/movl1.cgs
    sim/testsuite/sim/sh64/compact/movl10.cgs
    sim/testsuite/sim/sh64/compact/movl11.cgs
    sim/testsuite/sim/sh64/compact/movl2.cgs
    sim/testsuite/sim/sh64/compact/movl3.cgs
    sim/testsuite/sim/sh64/compact/movl4.cgs
    sim/testsuite/sim/sh64/compact/movl5.cgs
    sim/testsuite/sim/sh64/compact/movl6.cgs
    sim/testsuite/sim/sh64/compact/movl7.cgs
    sim/testsuite/sim/sh64/compact/movl8.cgs
    sim/testsuite/sim/sh64/compact/movl9.cgs
    sim/testsuite/sim/sh64/compact/movt.cgs
    sim/testsuite/sim/sh64/compact/movw1.cgs
    sim/testsuite/sim/sh64/compact/movw10.cgs
    sim/testsuite/sim/sh64/compact/movw11.cgs
    sim/testsuite/sim/sh64/compact/movw2.cgs
    sim/testsuite/sim/sh64/compact/movw3.cgs
    sim/testsuite/sim/sh64/compact/movw4.cgs
    sim/testsuite/sim/sh64/compact/movw5.cgs
    sim/testsuite/sim/sh64/compact/movw6.cgs
    sim/testsuite/sim/sh64/compact/movw7.cgs
    sim/testsuite/sim/sh64/compact/movw8.cgs
    sim/testsuite/sim/sh64/compact/movw9.cgs
    sim/testsuite/sim/sh64/compact/mull.cgs
    sim/testsuite/sim/sh64/compact/mulsw.cgs
    sim/testsuite/sim/sh64/compact/muluw.cgs
    sim/testsuite/sim/sh64/compact/neg.cgs
    sim/testsuite/sim/sh64/compact/negc.cgs
    sim/testsuite/sim/sh64/compact/nop.cgs
    sim/testsuite/sim/sh64/compact/not.cgs
    sim/testsuite/sim/sh64/compact/ocbi.cgs
    sim/testsuite/sim/sh64/compact/ocbp.cgs
    sim/testsuite/sim/sh64/compact/ocbwb.cgs
    sim/testsuite/sim/sh64/compact/or.cgs
    sim/testsuite/sim/sh64/compact/orb.cgs
    sim/testsuite/sim/sh64/compact/ori.cgs
    sim/testsuite/sim/sh64/compact/pref.cgs
    sim/testsuite/sim/sh64/compact/rotcl.cgs
    sim/testsuite/sim/sh64/compact/rotcr.cgs
    sim/testsuite/sim/sh64/compact/rotl.cgs
    sim/testsuite/sim/sh64/compact/rotr.cgs
    sim/testsuite/sim/sh64/compact/rts.cgs
    sim/testsuite/sim/sh64/compact/sets.cgs
    sim/testsuite/sim/sh64/compact/sett.cgs
    sim/testsuite/sim/sh64/compact/shad.cgs
    sim/testsuite/sim/sh64/compact/shal.cgs
    sim/testsuite/sim/sh64/compact/shar.cgs
    sim/testsuite/sim/sh64/compact/shld.cgs
    sim/testsuite/sim/sh64/compact/shll.cgs
    sim/testsuite/sim/sh64/compact/shll16.cgs
    sim/testsuite/sim/sh64/compact/shll2.cgs
    sim/testsuite/sim/sh64/compact/shll8.cgs
    sim/testsuite/sim/sh64/compact/shlr.cgs
    sim/testsuite/sim/sh64/compact/shlr16.cgs
    sim/testsuite/sim/sh64/compact/shlr2.cgs
    sim/testsuite/sim/sh64/compact/shlr8.cgs
    sim/testsuite/sim/sh64/compact/stc-gbr.cgs
    sim/testsuite/sim/sh64/compact/stcl-gbr.cgs
    sim/testsuite/sim/sh64/compact/sts-fpscr.cgs
    sim/testsuite/sim/sh64/compact/sts-fpul.cgs
    sim/testsuite/sim/sh64/compact/sts-mach.cgs
    sim/testsuite/sim/sh64/compact/sts-macl.cgs
    sim/testsuite/sim/sh64/compact/sts-pr.cgs
    sim/testsuite/sim/sh64/compact/stsl-fpscr.cgs
    sim/testsuite/sim/sh64/compact/stsl-fpul.cgs
    sim/testsuite/sim/sh64/compact/stsl-mach.cgs
    sim/testsuite/sim/sh64/compact/stsl-macl.cgs
    sim/testsuite/sim/sh64/compact/stsl-pr.cgs
    sim/testsuite/sim/sh64/compact/sub.cgs
    sim/testsuite/sim/sh64/compact/subc.cgs
    sim/testsuite/sim/sh64/compact/subv.cgs
    sim/testsuite/sim/sh64/compact/swapb.cgs
    sim/testsuite/sim/sh64/compact/swapw.cgs
    sim/testsuite/sim/sh64/compact/tasb.cgs
    sim/testsuite/sim/sh64/compact/testutils.inc
    sim/testsuite/sim/sh64/compact/trapa.cgs
    sim/testsuite/sim/sh64/compact/tst.cgs
    sim/testsuite/sim/sh64/compact/tstb.cgs
    sim/testsuite/sim/sh64/compact/tsti.cgs
    sim/testsuite/sim/sh64/compact/xor.cgs
    sim/testsuite/sim/sh64/compact/xorb.cgs
    sim/testsuite/sim/sh64/compact/xori.cgs
    sim/testsuite/sim/sh64/compact/xtrct.cgs
    sim/testsuite/sim/sh64/interwork.exp
    sim/testsuite/sim/sh64/media.exp
    sim/testsuite/sim/sh64/media/ChangeLog
    sim/testsuite/sim/sh64/media/add.cgs
    sim/testsuite/sim/sh64/media/addi.cgs
    sim/testsuite/sim/sh64/media/addil.cgs
    sim/testsuite/sim/sh64/media/addl.cgs
    sim/testsuite/sim/sh64/media/addzl.cgs
    sim/testsuite/sim/sh64/media/alloco.cgs
    sim/testsuite/sim/sh64/media/and.cgs
    sim/testsuite/sim/sh64/media/andc.cgs
    sim/testsuite/sim/sh64/media/andi.cgs
    sim/testsuite/sim/sh64/media/beq.cgs
    sim/testsuite/sim/sh64/media/beqi.cgs
    sim/testsuite/sim/sh64/media/bge.cgs
    sim/testsuite/sim/sh64/media/bgeu.cgs
    sim/testsuite/sim/sh64/media/bgt.cgs
    sim/testsuite/sim/sh64/media/bgtu.cgs
    sim/testsuite/sim/sh64/media/blink.cgs
    sim/testsuite/sim/sh64/media/bne.cgs
    sim/testsuite/sim/sh64/media/bnei.cgs
    sim/testsuite/sim/sh64/media/brk.cgs
    sim/testsuite/sim/sh64/media/byterev.cgs
    sim/testsuite/sim/sh64/media/cmpeq.cgs
    sim/testsuite/sim/sh64/media/cmpgt.cgs
    sim/testsuite/sim/sh64/media/cmpgtu.cgs
    sim/testsuite/sim/sh64/media/cmveq.cgs
    sim/testsuite/sim/sh64/media/cmvne.cgs
    sim/testsuite/sim/sh64/media/fabsd.cgs
    sim/testsuite/sim/sh64/media/fabss.cgs
    sim/testsuite/sim/sh64/media/faddd.cgs
    sim/testsuite/sim/sh64/media/fadds.cgs
    sim/testsuite/sim/sh64/media/fcmpeqd.cgs
    sim/testsuite/sim/sh64/media/fcmpeqs.cgs
    sim/testsuite/sim/sh64/media/fcmpged.cgs
    sim/testsuite/sim/sh64/media/fcmpges.cgs
    sim/testsuite/sim/sh64/media/fcmpgtd.cgs
    sim/testsuite/sim/sh64/media/fcmpgts.cgs
    sim/testsuite/sim/sh64/media/fcmpund.cgs
    sim/testsuite/sim/sh64/media/fcmpuns.cgs
    sim/testsuite/sim/sh64/media/fcnvds.cgs
    sim/testsuite/sim/sh64/media/fcnvsd.cgs
    sim/testsuite/sim/sh64/media/fdivd.cgs
    sim/testsuite/sim/sh64/media/fdivs.cgs
    sim/testsuite/sim/sh64/media/fgetscr.cgs
    sim/testsuite/sim/sh64/media/fiprs.cgs
    sim/testsuite/sim/sh64/media/fldd.cgs
    sim/testsuite/sim/sh64/media/fldp.cgs
    sim/testsuite/sim/sh64/media/flds.cgs
    sim/testsuite/sim/sh64/media/fldxd.cgs
    sim/testsuite/sim/sh64/media/fldxp.cgs
    sim/testsuite/sim/sh64/media/fldxs.cgs
    sim/testsuite/sim/sh64/media/floatld.cgs
    sim/testsuite/sim/sh64/media/floatls.cgs
    sim/testsuite/sim/sh64/media/floatqd.cgs
    sim/testsuite/sim/sh64/media/floatqs.cgs
    sim/testsuite/sim/sh64/media/fmacs.cgs
    sim/testsuite/sim/sh64/media/fmovd.cgs
    sim/testsuite/sim/sh64/media/fmovdq.cgs
    sim/testsuite/sim/sh64/media/fmovls.cgs
    sim/testsuite/sim/sh64/media/fmovqd.cgs
    sim/testsuite/sim/sh64/media/fmovs.cgs
    sim/testsuite/sim/sh64/media/fmovsl.cgs
    sim/testsuite/sim/sh64/media/fmuld.cgs
    sim/testsuite/sim/sh64/media/fmuls.cgs
    sim/testsuite/sim/sh64/media/fnegd.cgs
    sim/testsuite/sim/sh64/media/fnegs.cgs
    sim/testsuite/sim/sh64/media/fputscr.cgs
    sim/testsuite/sim/sh64/media/fsqrtd.cgs
    sim/testsuite/sim/sh64/media/fsqrts.cgs
    sim/testsuite/sim/sh64/media/fstd.cgs
    sim/testsuite/sim/sh64/media/fstp.cgs
    sim/testsuite/sim/sh64/media/fsts.cgs
    sim/testsuite/sim/sh64/media/fstxd.cgs
    sim/testsuite/sim/sh64/media/fstxp.cgs
    sim/testsuite/sim/sh64/media/fstxs.cgs
    sim/testsuite/sim/sh64/media/fsubd.cgs
    sim/testsuite/sim/sh64/media/fsubs.cgs
    sim/testsuite/sim/sh64/media/ftrcdl.cgs
    sim/testsuite/sim/sh64/media/ftrcdq.cgs
    sim/testsuite/sim/sh64/media/ftrcsl.cgs
    sim/testsuite/sim/sh64/media/ftrcsq.cgs
    sim/testsuite/sim/sh64/media/ftrvs.cgs
    sim/testsuite/sim/sh64/media/getcfg.cgs
    sim/testsuite/sim/sh64/media/getcon.cgs
    sim/testsuite/sim/sh64/media/gettr.cgs
    sim/testsuite/sim/sh64/media/icbi.cgs
    sim/testsuite/sim/sh64/media/ldb.cgs
    sim/testsuite/sim/sh64/media/ldhil.cgs
    sim/testsuite/sim/sh64/media/ldhiq.cgs
    sim/testsuite/sim/sh64/media/ldl.cgs
    sim/testsuite/sim/sh64/media/ldlol.cgs
    sim/testsuite/sim/sh64/media/ldloq.cgs
    sim/testsuite/sim/sh64/media/ldq.cgs
    sim/testsuite/sim/sh64/media/ldub.cgs
    sim/testsuite/sim/sh64/media/lduw.cgs
    sim/testsuite/sim/sh64/media/ldw.cgs
    sim/testsuite/sim/sh64/media/ldxb.cgs
    sim/testsuite/sim/sh64/media/ldxl.cgs
    sim/testsuite/sim/sh64/media/ldxq.cgs
    sim/testsuite/sim/sh64/media/ldxub.cgs
    sim/testsuite/sim/sh64/media/ldxuw.cgs
    sim/testsuite/sim/sh64/media/ldxw.cgs
    sim/testsuite/sim/sh64/media/mabsl.cgs
    sim/testsuite/sim/sh64/media/mabsw.cgs
    sim/testsuite/sim/sh64/media/maddl.cgs
    sim/testsuite/sim/sh64/media/maddsl.cgs
    sim/testsuite/sim/sh64/media/maddsub.cgs
    sim/testsuite/sim/sh64/media/maddsw.cgs
    sim/testsuite/sim/sh64/media/maddw.cgs
    sim/testsuite/sim/sh64/media/mcmpeqb.cgs
    sim/testsuite/sim/sh64/media/mcmpeql.cgs
    sim/testsuite/sim/sh64/media/mcmpeqw.cgs
    sim/testsuite/sim/sh64/media/mcmpgtl.cgs
    sim/testsuite/sim/sh64/media/mcmpgtub.cgs
    sim/testsuite/sim/sh64/media/mcmpgtw.cgs
    sim/testsuite/sim/sh64/media/mcmv.cgs
    sim/testsuite/sim/sh64/media/mcnvslw.cgs
    sim/testsuite/sim/sh64/media/mcnvswb.cgs
    sim/testsuite/sim/sh64/media/mcnvswub.cgs
    sim/testsuite/sim/sh64/media/mextr1.cgs
    sim/testsuite/sim/sh64/media/mextr2.cgs
    sim/testsuite/sim/sh64/media/mextr3.cgs
    sim/testsuite/sim/sh64/media/mextr4.cgs
    sim/testsuite/sim/sh64/media/mextr5.cgs
    sim/testsuite/sim/sh64/media/mextr6.cgs
    sim/testsuite/sim/sh64/media/mextr7.cgs
    sim/testsuite/sim/sh64/media/mmacfxwl.cgs
    sim/testsuite/sim/sh64/media/mmacnfx-wl.cgs
    sim/testsuite/sim/sh64/media/mmulfxl.cgs
    sim/testsuite/sim/sh64/media/mmulfxrpw.cgs
    sim/testsuite/sim/sh64/media/mmulfxw.cgs
    sim/testsuite/sim/sh64/media/mmulhiwl.cgs
    sim/testsuite/sim/sh64/media/mmull.cgs
    sim/testsuite/sim/sh64/media/mmullowl.cgs
    sim/testsuite/sim/sh64/media/mmulsumwq.cgs
    sim/testsuite/sim/sh64/media/mmulw.cgs
    sim/testsuite/sim/sh64/media/movi.cgs
    sim/testsuite/sim/sh64/media/mpermw.cgs
    sim/testsuite/sim/sh64/media/msadubq.cgs
    sim/testsuite/sim/sh64/media/mshaldsl.cgs
    sim/testsuite/sim/sh64/media/mshaldsw.cgs
    sim/testsuite/sim/sh64/media/mshardl.cgs
    sim/testsuite/sim/sh64/media/mshardsq.cgs
    sim/testsuite/sim/sh64/media/mshardw.cgs
    sim/testsuite/sim/sh64/media/mshfhib.cgs
    sim/testsuite/sim/sh64/media/mshfhil.cgs
    sim/testsuite/sim/sh64/media/mshfhiw.cgs
    sim/testsuite/sim/sh64/media/mshflob.cgs
    sim/testsuite/sim/sh64/media/mshflol.cgs
    sim/testsuite/sim/sh64/media/mshflow.cgs
    sim/testsuite/sim/sh64/media/mshlldl.cgs
    sim/testsuite/sim/sh64/media/mshlldw.cgs
    sim/testsuite/sim/sh64/media/mshlrdl.cgs
    sim/testsuite/sim/sh64/media/mshlrdw.cgs
    sim/testsuite/sim/sh64/media/msubl.cgs
    sim/testsuite/sim/sh64/media/msubsl.cgs
    sim/testsuite/sim/sh64/media/msubsub.cgs
    sim/testsuite/sim/sh64/media/msubsw.cgs
    sim/testsuite/sim/sh64/media/msubw.cgs
    sim/testsuite/sim/sh64/media/mulsl.cgs
    sim/testsuite/sim/sh64/media/mulul.cgs
    sim/testsuite/sim/sh64/media/nop.cgs
    sim/testsuite/sim/sh64/media/nsb.cgs
    sim/testsuite/sim/sh64/media/ocbi.cgs
    sim/testsuite/sim/sh64/media/ocbp.cgs
    sim/testsuite/sim/sh64/media/ocbwb.cgs
    sim/testsuite/sim/sh64/media/or.cgs
    sim/testsuite/sim/sh64/media/ori.cgs
    sim/testsuite/sim/sh64/media/prefi.cgs
    sim/testsuite/sim/sh64/media/pta.cgs
    sim/testsuite/sim/sh64/media/ptabs.cgs
    sim/testsuite/sim/sh64/media/ptb.cgs
    sim/testsuite/sim/sh64/media/ptrel.cgs
    sim/testsuite/sim/sh64/media/putcfg.cgs
    sim/testsuite/sim/sh64/media/putcon.cgs
    sim/testsuite/sim/sh64/media/rte.cgs
    sim/testsuite/sim/sh64/media/shard.cgs
    sim/testsuite/sim/sh64/media/shardl.cgs
    sim/testsuite/sim/sh64/media/shari.cgs
    sim/testsuite/sim/sh64/media/sharil.cgs
    sim/testsuite/sim/sh64/media/shlld.cgs
    sim/testsuite/sim/sh64/media/shlldl.cgs
    sim/testsuite/sim/sh64/media/shlli.cgs
    sim/testsuite/sim/sh64/media/shllil.cgs
    sim/testsuite/sim/sh64/media/shlrd.cgs
    sim/testsuite/sim/sh64/media/shlrdl.cgs
    sim/testsuite/sim/sh64/media/shlri.cgs
    sim/testsuite/sim/sh64/media/shlril.cgs
    sim/testsuite/sim/sh64/media/shori.cgs
    sim/testsuite/sim/sh64/media/sleep.cgs
    sim/testsuite/sim/sh64/media/stb.cgs
    sim/testsuite/sim/sh64/media/sthil.cgs
    sim/testsuite/sim/sh64/media/sthiq.cgs
    sim/testsuite/sim/sh64/media/stl.cgs
    sim/testsuite/sim/sh64/media/stlol.cgs
    sim/testsuite/sim/sh64/media/stloq.cgs
    sim/testsuite/sim/sh64/media/stq.cgs
    sim/testsuite/sim/sh64/media/stw.cgs
    sim/testsuite/sim/sh64/media/stxb.cgs
    sim/testsuite/sim/sh64/media/stxl.cgs
    sim/testsuite/sim/sh64/media/stxq.cgs
    sim/testsuite/sim/sh64/media/stxw.cgs
    sim/testsuite/sim/sh64/media/sub.cgs
    sim/testsuite/sim/sh64/media/subl.cgs
    sim/testsuite/sim/sh64/media/swapq.cgs
    sim/testsuite/sim/sh64/media/synci.cgs
    sim/testsuite/sim/sh64/media/synco.cgs
    sim/testsuite/sim/sh64/media/testutils.inc
    sim/testsuite/sim/sh64/media/trapa.cgs
    sim/testsuite/sim/sh64/media/xor.cgs
    sim/testsuite/sim/sh64/media/xori.cgs
    sim/testsuite/sim/sh64/misc/fr-dr.s
2004-10-18 08:06:32 +00:00
5403 changed files with 599 additions and 1445108 deletions

View File

@@ -1,3 +1,12 @@
2004-10-19 Andrew Cagney <cagney@gnu.org>
* src-release (do-djunpack, do-md5sum): Install the generated file
directly into the proto-toplev/ directory.
2004-10-19 Andrew Cagney <cagney@gnu.org>
* src-release (GDB_SUPPORT_DIRS): Remove utils and intl.
2004-10-12 Kelley Cook <kcook@gcc.gnu.org>
* configure.in (*-*-cygwin*): Supress warning if newlib not present.

View File

@@ -1,519 +0,0 @@
2004-10-18 Alan Modra <amodra@bigpond.net.au>
* budemang.c (demangle): Fix thinko.
* budemang.c (demangle): Handle "@plt" suffix.
2004-10-14 Nick Clifton <nickc@redhat.com>
* nm.c (usage): Fix description of --special-syms switch.
2004-10-13 Jakub Jelinek <jakub@redhat.com>
* strings.c (statbuf): New typedef.
(file_stat): Define.
(strings_object_file): Avoid using get_file_size, instead do the
checks here, using file_stat.
* configure.in (HAVE_STAT64): New test.
* configure: Rebuilt.
* config.in: Rebuilt.
2004-10-12 Paul Brook <paul@codesourcery.com>
* readelf.c (decode_ARM_machine_flags): Support EABI version 4.
2004-10-11 Alan Modra <amodra@bigpond.net.au>
* objdump.c (dump_symbols): Fix thinko last change. Improve error
messages.
2004-10-08 Nick Clifton <nickc@redhat.com>
* nm.c: Add a new switch --special-syms which, if enabled, will
include the ARM Mapping symbols in nm's output.
(usage): Mention the switch.
(filter_symbols): Handle the switch.
* objdump.c: Add a similar switch.
(usage): Mention the switch.
(dump_symbols): Handle the switch.
* doc/binutils.texi: Document the new switches.
* NEWS: Mention the new switches.
2004-10-08 Daniel Jacobowitz <dan@debian.org>
* readelf.c (get_x86_64_section_type_name): New function.
(get_section_type_name): Use it.
2004-10-08 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
* dlltool.c (make_one_lib_file): Revert 2004-09-02 and 2004-09-04
patches.
* doc/binutils.texi (dlltool): Revert 2004-09-06 patch.
2004-10-07 Alexandre Oliva <aoliva@redhat.com>
* readelf.c (get_machine_flags): Don't fall through into m68k cpu
types.
2004-10-01 Paul Brook <paul@codesourcery.com>
* readelf.c (get_arm_section_type_name): New function.
(get_section_type_name): Use it.
2004-09-28 Nick Clifton <nickc@redhat.com>
* nm.c: Reorder functions to eliminate most of the static function
prototypes.
2004-09-22 Alan Modra <amodra@bigpond.net.au>
* readelf.c (process_program_headers): Don't include .tbss in non-TLS
segments.
2004-09-17 Alan Modra <amodra@bigpond.net.au>
* Makefile.am: Run "make dep-am".
* Makefile.in: Regenerate.
* config.in: Regenerate.
* configure: Regenerate.
* doc/Makefile.in: Regenerate.
* po/binutils.pot: Regenerate.
2004-09-12 Alan Modra <amodra@bigpond.net.au>
* readelf.c (decode_location_expression): Sign extend value for
DW_OP_const1s, DW_OP_const2s, DW_OP_const4s, DW_OP_bra, DW_OP_skip.
2004-09-09 Nick Clifton <nickc@redhat.com>
PR 363
* ar.c (replace_members): Do not use get_file_size as
ar_emul_append correctly handles missing files.
2004-09-07 H.J. Lu <hongjiu.lu@intel.com>
* configure: Regenerated with autconfig 2.13.
2004-09-06 Danny Smith <dannysmith@users.sourceforge.net>
* doc/binutils.texi (dlltool): Update --add-underscore, --kill-at
documentation.
2004-09-06 Michael Wardle <mbw@endbracket.net>
* doc/binutils.texi (objdump): Document that the -x switch includes
the effect of the -p switch.
2004-09-04 Danny Smith <dannysmith@users.sourceforge.net>
* dlltool.c (make_one_lib_file): Test if internal_name was
specified by user before using it.
2004-09-02 Carlo Wood <carlo@alinoe.com>
PR binutils/351
* dlltool.c (make_one_lib_file): For IDATA6 take the name from
exp->internal_name if it is present.
2004-09-02 Alexandre Oliva <aoliva@redhat.com>
* MAINTAINERS: Add self as co-maintainer of FR-V.
* readelf.c (get_machine_flags): Print FR-V cpu types.
2004-08-28 Alan Modra <amodra@bigpond.net.au>
* nm.c (show_synthetic): New var.
(long_options): Add "synthetic".
(usage): Here too.
(display_rel_file): Handle show_synthetic.
2004-08-28 Alan Modra <amodra@bigpond.net.au>
* objdump.c (dump_bfd): Pass both symbol tables to
bfd_get_synthetic_symtab.
2004-08-17 Jakub Jelinek <jakub@redhat.com>
* objdump.c (dump_bfd): For relocatable objects, pass syms instead
of dynsyms to bfd_get_synthetic_symtab.
2004-08-16 Alan Modra <amodra@bigpond.net.au>
* readelf.c (debug_apply_rela_addends): New function, extracted from..
(display_debug_info): ..here.
(display_debug_frames): Call debug_apply_rela_addends. Don't do
DW_EH_PE_pcrel adjustment for ET_REL.
2004-08-06 Andreas Schwab <schwab@suse.de>
* readelf.c (dump_relocations): Fix typo when calculating
sec_index.
2004-08-02 Jakub Bogusz <qboosh@pld-linux.org>
* dllwrap.c (deduce_name): Fix typos introduced when program_name
was renamed to prog_name.
2004-07-29 Alexandre Oliva <aoliva@redhat.com>
* readelf.c (get_machine_flags <EM_SH>): Handle EF_SH2A and
EF_SH2A_NOFPU.
2004-07-28 Alexandre Oliva <aoliva@redhat.com>
2003-07-08 Alexandre Oliva <aoliva@redhat.com>
* readelf.c (get_machine_flags <EM_SH)): Handle EF_SH4_NOFPU and
EF_SH4A_NOFPU.
2003-06-12 Alexandre Oliva <aoliva@redhat.com>
* readelf.c (get_machine_flags <EM_SH>): Print SH ISA name.
2004-07-21 H.J. Lu <hongjiu.lu@intel.com>
* objcopy.c (filter_symbols): Use bfd_coff_get_comdat_section
to access comdat.
* objdump.c (dump_section_header): Likewise.
2004-07-15 Aravinda PR <aravindapr@rediffmail.com>
* nlmconv.c (main): Pass map_file argument to link_inputs.
(link_inputs): Use map_file argument if it is defined.
2004-07-13 Nick Clifton <nickc@redhat.com>
* dllwrap.c: Replace 'program_name' with 'prog_name' to avoid
conflicts with exported global defined in bucomm.h.
(deduce_name): Rename parameter 'program_name' to 'name' to avoid
shadowing the global defined in bucomm.h.
2004-07-12 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
* dlltool.c (ext_prefix_alias): New global variable.
(make_one_lib_file): Add aliases with prefixes for external
and import definitions.
(usage): Document -p option.
(long_options): Add --ext-prefix-alias option.
(main): Handle -p.
* doc/binutils.texi: Document new switch.
* NEWS: Mention new switch.
2004-07-09 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
* binutils/dlltool.c (asm_prefix): Add parameter: name.
No underscore for symbols beginning with ?.
(ASM_PREFIX): Add parameter: NAME.
(gen_exp_file): Use new parameter.
(make_label): Likewise.
(make_imp_label): Likewise.
(make_one_lib_file): Likewise.
2004-07-07 Tomer Levi <Tomer.Levi@nsc.com>
* MAINTAINERS: Added myself to the list.
* readelf.c: Include "elf/crx.h".
(guess_is_rela): Handle EM_CRX.
(get_machine_name): Likewise.
(dump_relocations): Likewise.
2004-07-03 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
* doc/binutils.texi (nm): Clarify weak symbol description.
2004-06-24 Ben Elliston <bje@au.ibm.com>
* readelf.c (get_segment_type): Display "GNU_STACK", not just
"STACK", when a PT_GNU_STACK segment is encountered.
2004-06-24 Alan Modra <amodra@bigpond.net.au>
* objcopy.c (copy_section): Don't set _cooked_size.
2004-06-22 Alan Modra <amodra@bigpond.net.au>
* readelf.c (Elf32_Word): Delete.
(get_32bit_dynamic_section): Handle SGI ELF dynamic segment.
(get_64bit_dynamic_section): Likewise.
* readelf.c (get_32bit_dynamic_section): Stop at first DT_NULL entry.
(get_64bit_dynamic_section): Likewise.
* readelf.c (dynamic_nent): New variable.
(get_32bit_dynamic_section): Set it.
(get_64bit_dynamic_section): Here too.
(process_dynamic_section): Use it instead of dynamic_size.
(process_syminfo): Likewise.
* readelf.c (get_32bit_dynamic_section): Correct number of entries
translated from external to internal form.
(get_64bit_dynamic_section): Likewise.
2004-06-18 Jie Zhang <zhangjie@magima.com.cn>
* readelf.c (process_program_headers): When locating the dynamic
section use the section table if it is present.
(dynamic_segment): Renamed to dynamic_section.
Replace references to dynamic segment with references to dynamic
section, except where appropriate.
(dynamic_segment_mips_val): Rename to dynamic_section_mips_val.
(dynamic_segment_parisc_val): Rename to dynamic_section_parisc_val.
(dynamic_segment_ia64_val): Rename to dynamic_section_ia64_val.
(get_32bit_dynamic_segment): Rename to get_32bit_dynamic_section.
Remove tag counting code as it is no longer needed.
(get_64bit_dynamic_segment): Rename to get_64bit_dynamic_section.
Remove tag counting code as it is no longer needed.
(process_dynamic_segment): Rename to process_dynamic_section.
2004-06-15 Alan Modra <amodra@bigpond.net.au>
* objcopy.c (copy_section): Use bfd_get_section_size instead of
_raw_size or bfd_get_section_size_before_reloc. Don't set reloc_done.
(compare_section_lma): Likewise.
* addr2line.c (find_address_in_section): Likewise.
* coffgrok.c (do_sections_p1): Likewise.
* dlltool.c (scan_drectve_symbols): Likewise.
* nlmconv.c (main): Likewise.
(copy_sections): Likewise.
(powerpc_mangle_relocs): Likewise.
* objdump.c (disassemble_section): Likewise.
* prdbg.c (find_address_in_section): Likewise.
* size.c (berkeley_sum): Likewise.
* srconv.c (wr_ob): Likewise.
* strings.c (strings_a_section): Likewise.
2004-05-28 Ian Lance Taylor <ian@wasabisystems.com>
* readelf.c (decode_ARM_machine_flags): Add EF_ARM_VFP_FLOAT.
2004-05-17 David Heine <dlheine@tensilica.com>
* objcopy.c (setup_bfd_headers): New function.
(copy_object): Call setup_bfd_headers.
2004-05-13 Paul Brook <paul@codesourcery.com>
* readelf.c (display_debug_frames): Handle dwarf3 format CIE
entries.
2004-05-13 Nick Clifton <nickc@redhat.com>
* po/fr.po: Updated French translation.
2004-05-11 Jakub Jelinek <jakub@redhat.com>
* readelf.c (get_segment_type): Handle PT_GNU_RELRO.
2004-05-07 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (section_groups): New.
(group_count): New.
(section_headers_groups): New.
(process_section_groups): Populate group_count, section_groups
and section_headers_groups.
(process_unwind): Support section group.
(process_object): Always call process_section_groups. Free
section_groups and section_headers_groups.
2004-04-30 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (process_section_headers): Use %3lu on sh_info.
2004-04-30 Michael Deutschmann <michael@talamasca.ocis.net>
* ranlib.sh: Quote $1 argument in case it contains spaces.
2004-04-27 John Paul Wallington <jpw@gnu.org>
* objcopy.c (copy_usage, strip_usage): Fix spelling.
2004-04-26 H.J. Lu <hongjiu.lu@intel.com>
* readelf.c (do_section_groups): New.
(options): Add --section-groups/-g.
(usage): Mention --section-groups/-g.
(parse_args): Support --section-groups/-g.
(get_group_flags): New.
(process_section_groups): New.
(process_object): Call process_section_groups.
2004-04-24 Alan Modra <amodra@bigpond.net.au>
* objdump.c (disassemble_section): Don't disassemble sections
without SEC_HAS_CONTENTS.
2004-04-22 Jakub Jelinek <jakub@redhat.com>
* objdump.c (synthsyms, synthcount): New variables.
(disassemble_data): Use dynsyms for stripped binaries or libraries.
Add synthetized symbols.
(dump_bfd): For disassemble, initialize dynsyms always and
also synthsyms. Free synthsyms and clear {sym,dynsym,synth}count
before returning.
2004-04-14 Alan Modra <amodra@bigpond.net.au>
* strings.c (print_strings): Cast file_off to unsigned long in
printf arg list.
2004-04-07 Benjamin Monate <benjamin.monate@cea.fr>
PR 86
* arsup.c (ar_save): Use smart_rename.
2004-04-01 Dean Luick <luick@cray.com>
* readelf.c (display_debug_pubnames): Align offset and data
columns.
(read_and_display_attr_value): Add missing break;
(debug_displays): Enable the display of the .debug_pubtypes
section.
2004-03-30 Stan Shebs <shebs@apple.com>
* mpw-config.in, mpw-make.sed, mac-binutils.r: Remove MPW
support files, no longer used.
2004-03-23 Paul Brook <paul@codesourcery.com>
* readelf.c (decode_ARM_machine_flags): Add EABI v3.
2004-03-21 Richard Henderson <rth@redhat.com>
* readelf.c (display_debug_frames): Don't crash for mismatched
DW_CFA_restore_state.
2004-03-19 Alan Modra <amodra@bigpond.net.au>
* Makefile.am: Run "make dep-am".
* Makefile.in: Regenerate.
* aclocal.m4: Regenerate.
* config.in: Regenerate.
* configure: Regenerate.
* po/binutils.pot: Regenerate.
2004-03-15 Nathan Sidwell <nathan@codesourcery.com>
* objdump.c (struct SFILE): Replace current pointer with pos
offset, rename size to alloc.
(objdump_sprintf): Avoid unnecessary copies in the common case
(disassemble_bytes): Keep sfile live throughout the
function. Adjust usage appropriately.
2004-03-10 Ben Elliston <bje@gnu.org>
* MAINTAINERS: Update my mail address.
2004-03-08 Danny Smith <dannysmith@users.sourceforge.net>
* deflex.l: Handle "PRIVATE" string.
* defparse.y (%token): Add PRIVATE.
(%type): Add opt_PRIVATE.
(expline): Pass opt_PRIVATE to def_exports.
(opt_PRIVATE): Handle PRIVATE token.
* dlltool.h (def_exports): Add 7th param for private flag to
declaration.
* dlltool.c: Add PRIVATE to comment on EXPORTS syntax.
(struct export): Add 'private' field.
(def_exports): Set 'private' field of struct exports.
(scan_drectve_symbols): Adjust calls to def_exports.
(scan_filtered_symbols): Likewise.
(dump_def_info): Print 'private' field.
(gen_def_file): Likewise.
(gen_lib_file): Skip generation of lib object if private.
Delete tmp object files in same order as they were generated.
Don't delete non-existent private object files.
2004-02-27 Andreas Schwab <schwab@suse.de>
* ar.c (main): Support POSIX-compatible argument parsing.
2004-02-23 Daniel Lucq <daniel@lucq.org>
* readelf.c (process_mips_specific): Print conflictsno as an
unsigned long.
2004-02-21 Dmitry Timoshkov <dmitry@baikal.ru>
* dlltool.c (gen_exp_file): Always output names for forwarded symbols.
2004-02-19 Jakub Jelinek <jakub@redhat.com>
* objcopy.c (copy_section): Avoid warnings.
2004-02-14 Andrew Cagney <cagney@redhat.com>
* ar.c (remove_output): Use bfd_cache_close.
* arsup.c (ar_end): Ditto.
2004-01-21 Roland McGrath <roland@redhat.com>
* readelf.c (get_note_type): Match NT_AUXV.
2004-01-20 Nick Clifton <nickc@redhat.com>
* version.c (print_version): Update copyright year to 2004.
2004-01-14 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
* acinclude.m4: Quote names of macros to be defined by AC_DEFUN
throughout.
* aclocal.m4: Regenerate.
* configure: Regenerate.
2004-01-12 Jakub Jelinek <jakub@redhat.com>
* objcopy.c: Include elf-bfd.h.
(is_strip_section): Don't strip debugging sections if
STRIP_NONDEBUG.
(setup_section): If STRIP_NONDEBUG make SEC_ALLOC sections
~(SEC_LOAD | SEC_HAS_CONTENTS) and on ELF targets also SHT_NOBITS.
* objcopy.c (copy_section): Free relpp if relcount == 0.
2004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
* stabs.c (parse_stab_argtypes): Handle g++ ABI version 3 names.
(stab_demangle_argtypes): Likewise.
(stab_demangle_v3_argtypes): New static function.
(stab_demangle_v3_arg): New static function.
2004-01-12 Nick Clifton <nickc@redhat.com>
* objcopy.c (copy_object): Make the function boolean, returning
FALSE upon failure.
(copy_archive): Handle the return value from copy_object.
(copy_file): Likewise.
2004-01-07 Nick Clifton <nickc@redhat.com>
* readelf.c (find_section): New function. Locates a named
section.
(get_debug_line_pointer_sizes): New function: Initialises the
debug_line_pointer_sizes array.
(display_debug_lines): Call get_debug_line_pointer_sizes.
(display_debug_loc): Likewise.
(load_debug_loc): Use find_section.
(load_debug_str): Likewise.
(display_debug_info): Likewise.
(prescan_debug_info): Delete.
(debug_displays): Remove prescan field.
(process_section_contents): Do not perform prescans.
2004-01-03 Alan Modra <amodra@bigpond.net.au>
* objcopy.c (filter_bytes): Delete. Move code to..
(copy_section): ..here. Simplify size adjustment. Divide
section lma by interleave.
2004-01-02 Nick Clifton <nickc@redhat.com>
* po/ru.po: New file: Russian translation.
* configure.in (ALL_LINGUAS): Add ru
* configure: Regenerate.
For older changes see ChangeLog-0203
Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,170 +0,0 @@
========= Binutils Maintainers =========
This is the list of individuals responsible for maintenance and update
of the GNU Binary Utilities project. This includes the linker (ld),
the assembler (gas), the profiler (gprof), a whole suite of other
programs (binutils) and the libraries that they use (bfd and
opcodes). This project shares a common set of header files with the
GCC and GDB projects (include), so maintainership of those files is
shared amoungst the projects.
The home page for binutils is:
http://www.gnu.org/software/binutils/binutils.html
and patches should be sent to:
bug-binutils@gnu.org or binutils@sources.redhat.com
with "[Patch]" as part of the subject line. Note - patches to the
top level config.guess and config.sub scripts should be sent to:
config-patches@gnu.org
and not to the binutils lists. Patches to the other top level
configure files (configure, configure.in, config-if, config-ml.in)
should be sent to the binutils lists, and copied to the gcc and gdb
lists as well (gcc-patches@gcc.gnu.org and
gdb-patches@sources.redhat.com).
--------- Blanket Write Privs ---------
The following people have permission to check patches into the
repository without obtaining approval first:
Nick Clifton <nickc@redhat.com> (head maintainer)
Richard Henderson <rth@redhat.com>
Ian Taylor <ian@wasabisystems.com>
Jeff Law <law@redhat.com>
Jim Wilson <wilson@specifixinc.com>
DJ Delorie <dj@redhat.com>
Alan Modra <amodra@bigpond.net.au>
Michael Meissner <gnu@the-meissners.org>
--------- Maintainers ---------
Maintainers are individuals who are responsible for, and have
permission to check in changes in, certain subsets of the code. Note
that maintainers still need approval to check in changes outside of
the immediate domain that they maintain.
If there is no maintainer for a given domain then the responsibility
falls to the head maintainer (above). If there are several
maintainers for a given domain then responsibility falls to the first
maintainer. The first maintainer is free to devolve that
responsibility among the other maintainers.
ALPHA Richard Henderson <rth@redhat.com>
ARM Nick Clifton <nickc@redhat.com>
ARM Richard Earnshaw <rearnsha@arm.com>
AVR Denis Chertykov <denisc@overta.ru>
AVR Marek Michalkiewicz <marekm@amelek.gda.pl>
BUILD SYSTEM Ben Elliston <bje@gnu.org>
BUILD SYSTEM Daniel Jacobowitz <dan@debian.org>
CRIS Hans-Peter Nilsson <hp@axis.com>
CRX Tomer Levi <Tomer.Levi@nsc.com>
DWARF2 Jason Merrill <jason@redhat.com>
FR30 Dave Brolley <brolley@redhat.com>
FRV Dave Brolley <brolley@redhat.com>
FRV Alexandre Oliva <aoliva@redhat.com>
HPPA Dave Anglin <dave.anglin@nrc.ca>
HPPA elf32 Alan Modra <amodra@bigpond.net.au>
HPPA elf64 Jeff Law <law@redhat.com> [Basic maintainance only]
IA-64 Jim Wilson <wilson@specifixinc.com>
IQ2000 Stan Cox <scox@redhat.com>
i860 Jason Eckhardt <jle@rice.edu>
ix86 Alan Modra <amodra@bigpond.net.au>
ix86 PE Christopher Faylor <cgf@redhat.com>
ix86 COFF DJ Delorie <dj@redhat.com>
ix86 H.J.Lu <hjl@gnu.org>
ix86 INTEL MODE Diego Novillo <dnovillo@redhat.com>
M68HC11 M68HC12 Stephane Carrez <stcarrez@nerim.fr>
M68k Ben Elliston <bje@gnu.org>
MIPS Eric Christopher <echristo@redhat.com>
MIPS Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
MMIX Hans-Peter Nilsson <hp@bitrange.com>
MN10300 Eric Christopher <echristo@redhat.com>
MN10300 Alexandre Oliva <aoliva@redhat.com>
PPC Geoff Keating <geoffk@geoffk.org>
PPC vector ext Aldy Hernandez <aldyh@redhat.com>
s390, s390x Martin Schwidefsky <schwidefsky@de.ibm.com>
SH J<>rn Rennecke <joern.rennecke@superh.com>
SH Alexandre Oliva <aoliva@redhat.com>
SH Kaz Kojima <kkojima@rr.iij4u.or.jp>
SPARC Jakub Jelinek <jakub@redhat.com>
TESTSUITES Ben Elliston <bje@gnu.org>
TIC4X Svein Seldal <svein.seldal@solidas.com>
TIC54X Timothy Wall <twall@alum.mit.edu>
VAX Jason R Thorpe <thorpej@wasabisystems.com>
x86_64 Jan Hubicka <jh@suse.cz>
x86_64 Andreas Jaeger <aj@suse.de>
Xtensa Bob Wilson <bob.wilson@acm.org>
z8k Christian Groessler <chris@groessler.org>
--------- CGEN Maintainers -------------
CGEN is a tool for building, amongst other things, assemblers,
disassemblers and simulators from a single description of a CPU.
It creates files in several of the binutils directories, but it
is mentioned here since there is a single group that maintains
CGEN and the files that it creates.
If you have CGEN related problems you can send email to;
cgen@sources.redhat.com
The current CGEN maintainers are:
Doug Evans, Ben Elliston, Frank Eigler
--------- Write After Approval ---------
Individuals with "write after approval" have the ability to check in
changes, but they must get approval for each change from someone in
one of the above lists (blanket write or maintainers).
[It's a huge list, folks. You know who you are. If you have the
*ability* to do binutils checkins, you're in this group. Just
remember to get approval before checking anything in.]
------------- Obvious Fixes -------------
Fixes for obvious mistakes do not need approval, and can be checked in
right away, but the patch should still be sent to the binutils list.
The definition of obvious is a bit hazy, and if you are not sure, then
you should seek approval first. Obvious fixes include fixes for
spelling mistakes, blatantly incorrect code (where the correct code is
also blatantly obvious), and so on. Obvious fixes should always be
small, the larger they are, the more likely it is that they contain
some un-obvious side effect or consequence.
--------- Branch Checkins ---------
If a patch is approved for check in to the mainline sources, it can
also be checked into the current release branch. Normally however
only bug fixes should be applied to the branch. New features, new
ports, etc, should be restricted to the mainline. (Otherwise the
burden of maintaining the branch in sync with the mainline becomes too
great). If you are uncertain as to whether a patch is appropriate for
the branch, ask the branch maintainer. This is:
Daniel Jacobowitz <dan@debian.org>
-------- Testsuites ---------------
In general patches to any of the binutils testsuites should be
considered generic and sent to the binutils mailing list for
approval. Patches to target specific tests are the responsibility the
relevent port maintainer(s), and can be approved/checked in by them.
Other testsuite patches need the approval of a blanket-write-priveleges
person.
-------- Configure patches ----------
Patches to the top level configure files (config.sub & config.guess)
are not the domain of the binutils project and they cannot be approved
by the binutils group. Instead they should be submitted to the config
maintainer at:
config-patches@gnu.org

View File

@@ -1,566 +0,0 @@
## Process this file with automake to generate Makefile.in
## FIXME: Work around apparent bug in automake.
INTLLIBS = @INTLLIBS@
AUTOMAKE_OPTIONS = cygnus dejagnu
SUBDIRS = doc po
tooldir = $(exec_prefix)/$(target_alias)
## These aren't set by automake, because they appear in
## bfd/acinclude.m4, which is included by binutils/acinclude.m4, and
## thus is not seen by automake.
CC_FOR_BUILD = @CC_FOR_BUILD@
EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bison/; else echo @YACC@; fi`
YFLAGS = -d
LEX = `if [ -f ../flex/flex ]; then echo ../flex/flex; else echo @LEX@; fi`
WARN_CFLAGS = @WARN_CFLAGS@
AM_CFLAGS = $(WARN_CFLAGS)
# these two are almost the same program
AR_PROG=ar
RANLIB_PROG=ranlib
# objcopy and strip should be the same program
OBJCOPY_PROG=objcopy
STRIP_PROG=strip-new
STRINGS_PROG=strings
READELF_PROG=readelf
# These should all be the same program too.
SIZE_PROG=size
NM_PROG=nm-new
OBJDUMP_PROG=objdump
# This is the demangler, as a standalone program.
# Note: This one is used as the installed name too, unlike the above.
DEMANGLER_PROG=cxxfilt
ADDR2LINE_PROG=addr2line
NLMCONV_PROG=nlmconv
DLLTOOL_PROG=dlltool
WINDRES_PROG=windres
DLLWRAP_PROG=dllwrap
SRCONV_PROG=srconv$(EXEEXT) sysdump$(EXEEXT) coffdump$(EXEEXT)
PROGS = $(SIZE_PROG) $(OBJDUMP_PROG) $(NM_PROG) $(AR_PROG) $(STRINGS_PROG) $(STRIP_PROG) $(RANLIB_PROG) $(DEMANGLER_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@
bin_PROGRAMS = $(SIZE_PROG) $(OBJDUMP_PROG) $(AR_PROG) $(STRINGS_PROG) $(RANLIB_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@
## We need a special rule to install the programs which are built with
## -new, and to rename cxxfilt to c++filt.
noinst_PROGRAMS = $(NM_PROG) $(STRIP_PROG) $(DEMANGLER_PROG)
EXTRA_PROGRAMS = $(NLMCONV_PROG) srconv sysdump coffdump $(DLLTOOL_PROG) $(WINDRES_PROG) $(DLLWRAP_PROG)
# Stuff that goes in tooldir/ if appropriate.
TOOL_PROGS = nm-new strip-new ar ranlib dlltool
BASEDIR = $(srcdir)/..
BFDDIR = $(BASEDIR)/bfd
INCDIR = $(BASEDIR)/include
MKDEP = gcc -MM
INCLUDES = -D_GNU_SOURCE \
-I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) \
@HDEFINES@ \
-I$(srcdir)/../intl -I../intl \
-DLOCALEDIR="\"$(prefix)/share/locale\"" \
-Dbin_dummy_emulation=$(EMULATION_VECTOR)
HFILES = \
arsup.h binemul.h bucomm.h budbg.h budemang.h \
coffgrok.h debug.h dlltool.h nlmconv.h \
windres.h winduni.h
GENERATED_HFILES = arparse.h sysroff.h sysinfo.h defparse.h rcparse.h
CFILES = \
addr2line.c ar.c arsup.c binemul.c bucomm.c budemang.c \
coffdump.c coffgrok.c cxxfilt.c debug.c dlltool.c dllwrap.c \
emul_aix.c emul_vanilla.c filemode.c \
ieee.c is-ranlib.c is-strip.c maybe-ranlib.c maybe-strip.c \
nlmconv.c nm.c not-ranlib.c not-strip.c \
objcopy.c objdump.c prdbg.c \
rdcoff.c rddbg.c readelf.c rename.c \
resbin.c rescoff.c resrc.c resres.c \
size.c srconv.c stabs.c strings.c sysdump.c version.c \
windres.c winduni.c wrstabs.c
GENERATED_CFILES = \
arparse.c arlex.c sysroff.c sysinfo.c syslex.c \
defparse.c deflex.c nlmheader.c rcparse.c rclex.c
DEBUG_SRCS = rddbg.c debug.c stabs.c ieee.c rdcoff.c
WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c
# Code shared by all the binutils.
BULIBS = bucomm.c version.c filemode.c
BFDLIB = ../bfd/libbfd.la
OPCODES = ../opcodes/libopcodes.la
LIBIBERTY = ../libiberty/libiberty.a
POTFILES = $(CFILES) $(DEBUG_SRCS) $(HFILES)
po/POTFILES.in: @MAINT@ Makefile
for f in $(POTFILES); do echo $$f; done | LC_COLLATE= sort > tmp \
&& mv tmp $(srcdir)/po/POTFILES.in
EXPECT = `if [ -f $$r/../expect/expect ] ; then \
echo $$r/../expect/expect ; \
else echo expect ; fi`
RUNTEST = `if [ -f ${srcdir}/../dejagnu/runtest ] ; then \
echo ${srcdir}/../dejagnu/runtest ; \
else echo runtest ; fi`
CC_FOR_TARGET = ` \
if [ -f $$r/../gcc/xgcc ] ; then \
if [ -f $$r/../newlib/Makefile ] ; then \
echo $$r/../gcc/xgcc -B$$r/../gcc/ -idirafter $$r/../newlib/targ-include -idirafter $${srcroot}/../newlib/libc/include -nostdinc; \
else \
echo $$r/../gcc/xgcc -B$$r/../gcc/; \
fi; \
else \
if [ "@host@" = "@target@" ] ; then \
echo $(CC); \
else \
echo gcc | sed '$(transform)'; \
fi; \
fi`
check-DEJAGNU: site.exp
srcdir=`cd $(srcdir) && pwd`; export srcdir; \
r=`pwd`; export r; \
EXPECT=$(EXPECT); export EXPECT; \
if [ -f $(top_builddir)/../expect/expect ]; then \
TCL_LIBRARY=`cd $(top_srcdir)/../tcl/library && pwd`; \
export TCL_LIBRARY; \
fi; \
runtest=$(RUNTEST); \
if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
CC_FOR_TARGET="$(CC_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS)" \
$$runtest --tool $(DEJATOOL) --srcdir $${srcdir}/testsuite \
$(RUNTESTFLAGS); \
else echo "WARNING: could not find \`runtest'" 1>&2; :;\
fi
installcheck:
/bin/sh $(srcdir)/sanity.sh $(bindir)
LDADD = $(BFDLIB) $(LIBIBERTY) $(INTLLIBS)
size_SOURCES = size.c $(BULIBS)
objcopy_SOURCES = objcopy.c not-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS)
strings_SOURCES = strings.c $(BULIBS)
readelf_SOURCES = readelf.c version.c unwind-ia64.c
readelf_LDADD = $(INTLLIBS) $(LIBIBERTY)
strip_new_SOURCES = objcopy.c is-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS)
nm_new_SOURCES = nm.c budemang.c $(BULIBS)
objdump_SOURCES = objdump.c budemang.c prdbg.c $(DEBUG_SRCS) $(BULIBS)
objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(INTLLIBS)
objdump.o:objdump.c
$(COMPILE) -c $(OBJDUMP_DEFS) $(srcdir)/objdump.c
cxxfilt_SOURCES = cxxfilt.c $(BULIBS)
ar_SOURCES = arparse.y arlex.l ar.c not-ranlib.c arsup.c rename.c binemul.c \
emul_$(EMULATION).c $(BULIBS)
ar_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS)
ranlib_SOURCES = ar.c is-ranlib.c arparse.y arlex.l arsup.c rename.c \
binemul.c emul_$(EMULATION).c $(BULIBS)
ranlib_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS)
addr2line_SOURCES = addr2line.c budemang.c $(BULIBS)
# The following is commented out for the conversion to automake.
# This rule creates a single binary that switches between ar and ranlib
# by looking at argv[0]. Use this kludge to save some disk space.
# However, you have to install things by hand.
# (That is after 'make install', replace the installed ranlib by a link to ar.)
# Alternatively, you can install ranlib.sh as ranlib.
# ar_with_ranlib: $(ADDL_DEPS) ar.o maybe-ranlib.o
# $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(AR_PROG) ar.o maybe-ranlib.o $(ADDL_LIBS) $(EXTRALIBS)
# -rm -f $(RANLIB_PROG)
# -ln $(AR_PROG) $(RANLIB_PROG)
#
# objcopy and strip in one binary that uses argv[0] to decide its action.
#
#objcopy_with_strip: $(ADDL_DEPS) objcopy.o maybe-strip.o
# $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(OBJCOPY_PROG) objcopy.o maybe-strip.o $(ADDL_LIBS) $(EXTRALIBS)
# -rm -f $(STRIP_PROG)
# -ln $(OBJCOPY_PROG) $(STRIP_PROG)
sysroff.c: sysinfo$(EXEEXT_FOR_BUILD) sysroff.info
./sysinfo$(EXEEXT_FOR_BUILD) -c <$(srcdir)/sysroff.info >sysroff.c
./sysinfo$(EXEEXT_FOR_BUILD) -i <$(srcdir)/sysroff.info >>sysroff.c
./sysinfo$(EXEEXT_FOR_BUILD) -g <$(srcdir)/sysroff.info >>sysroff.c
sysroff.h: sysinfo$(EXEEXT_FOR_BUILD) sysroff.info
./sysinfo$(EXEEXT_FOR_BUILD) -d <$(srcdir)/sysroff.info >sysroff.h
sysinfo$(EXEEXT_FOR_BUILD): sysinfo.o syslex.o
$(CC_FOR_BUILD) $(CFLAGS) $(LDFLAGS) -o $@ sysinfo.o syslex.o
syslex.o: syslex.c sysinfo.h
if [ -r syslex.c ]; then \
$(CC_FOR_BUILD) -c -I. $(CFLAGS) syslex.c ; \
else \
$(CC_FOR_BUILD) -c -I. -I$(srcdir) $(CFLAGS) $(srcdir)/syslex.c ;\
fi
sysinfo.o: sysinfo.c
if [ -r sysinfo.c ]; then \
$(CC_FOR_BUILD) -c -I. $(CFLAGS) sysinfo.c ; \
else \
$(CC_FOR_BUILD) -c -I. $(CFLAGS) $(srcdir)/sysinfo.c ; \
fi
# We need these for parallel make.
arparse.h: arparse.c
defparse.h: defparse.c
nlmheader.h: nlmheader.c
rcparse.h: rcparse.c
sysinfo.h: sysinfo.c
srconv_SOURCES = srconv.c coffgrok.c $(BULIBS)
dlltool_SOURCES = dlltool.c defparse.y deflex.l $(BULIBS)
dlltool_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS)
dlltool.o:dlltool.c
$(COMPILE) -c $(DLLTOOL_DEFS) $(srcdir)/dlltool.c
rescoff.o:rescoff.c
$(COMPILE) -c $(DLLTOOL_DEFS) $(srcdir)/rescoff.c
coffdump_SOURCES = coffdump.c coffgrok.c $(BULIBS)
sysdump_SOURCES = sysdump.c $(BULIBS)
# coff/sym.h and coff/ecoff.h won't be found by the automatic dependency
# scripts, since they are only included conditionally.
nlmconv.o: nlmconv.c $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h
ldname=`echo ld | sed '$(transform)'`; \
$(COMPILE) -c -DLD_NAME="\"$${ldname}\"" @NLMCONV_DEFS@ $(srcdir)/nlmconv.c
nlmconv_SOURCES = nlmconv.c nlmheader.y $(BULIBS)
windres_SOURCES = windres.c resrc.c rescoff.c resbin.c rcparse.y rclex.l \
winduni.c resres.c $(BULIBS)
windres_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS)
dllwrap_SOURCES = dllwrap.c version.c
dllwrap_LDADD = $(LIBIBERTY) $(INTLLIBS)
EXTRA_DIST = arparse.c arparse.h arlex.c nlmheader.c sysinfo.c sysinfo.h \
syslex.c deflex.c defparse.h defparse.c rclex.c rcparse.h rcparse.c
diststuff: $(EXTRA_DIST) info
DISTCLEANFILES = sysinfo sysroff.c sysroff.h \
site.exp site.bak
Makefile: $(BFDDIR)/configure.in
# Targets to rebuild dependencies in this Makefile.
# Have to get rid of DEP1 here so that "$?" later includes all of $(CFILES).
DEP: dep.sed $(CFILES) $(HFILES) $(GENERATED_CFILES) $(GENERATED_HFILES) config.h
rm -f DEP1
$(MAKE) MKDEP="$(MKDEP)" DEP1
sed -f dep.sed < DEP1 > DEPA
echo '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> DEPA
if grep ' /' DEPA > /dev/null 2> /dev/null; then \
echo 'make DEP failed!'; exit 1; \
else \
mv -f DEPA $@; \
fi
DEP1: $(CFILES) $(GENERATED_CFILES)
echo '# DO NOT DELETE THIS LINE -- mkdep uses it.' > DEP2
echo '# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.' >> DEP2
$(MKDEP) $(INCLUDES) $(CFLAGS) $? >> DEP2
mv -f DEP2 $@
dep.sed: dep-in.sed config.status
objdir=`pwd`; \
sed <$(srcdir)/dep-in.sed >dep.sed \
-e 's!@INCDIR@!$(INCDIR)!' \
-e 's!@BFDDIR@!$(BFDDIR)!' \
-e 's!@SRCDIR@!$(srcdir)!' \
-e "s!@OBJDIR@!$${objdir}!" \
-e 's!@TOPDIR@!'`echo $(srcdir) | sed -e s,/binutils$$,,`'!'
dep: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < Makefile > tmp-Makefile
cat DEP >> tmp-Makefile
$(SHELL) $(srcdir)/../move-if-change tmp-Makefile Makefile
dep-in: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.in > tmp-Makefile.in
cat DEP >> tmp-Makefile.in
$(SHELL) $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in
dep-am: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.am > tmp-Makefile.am
cat DEP >> tmp-Makefile.am
$(SHELL) $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am
.PHONY: dep dep-in dep-am
###
MOSTLYCLEANFILES = sysinfo binutils.log binutils.sum abcdefgh*
mostlyclean-local:
-rm -rf tmpdir
CLEANFILES = dep.sed DEP DEPA DEP1 DEP2
.PHONY: install-exec-local
install-exec-local: install-binPROGRAMS $(bin_PROGRAMS) $(noinst_PROGRAMS)
@list='$(noinst_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
$(mkinstalldirs) $(DESTDIR)$(tooldir)/bin
for i in $(TOOL_PROGS); do \
if [ -f $$i$(EXEEXT) ]; then \
j=`echo $$i | sed -e 's/-new//'`; \
k=`echo $$j | sed '$(transform)'`; \
if [ "$(bindir)/$$k" != "$(tooldir)/bin/$$j" ]; then \
rm -f $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \
ln $(DESTDIR)$(bindir)/$$k$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT) >/dev/null 2>/dev/null \
|| $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$i$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \
fi; \
else true; \
fi; \
done
# What appears below is generated by a hacked mkdep using gcc -MM.
# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
addr2line.o: addr2line.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/getopt.h $(INCDIR)/libiberty.h \
$(INCDIR)/demangle.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h budemang.h
ar.o: ar.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
$(INCDIR)/libiberty.h $(INCDIR)/progress.h bucomm.h \
config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
$(INCDIR)/aout/ar.h $(BFDDIR)/libbfd.h arsup.h $(INCDIR)/filenames.h \
binemul.h
arsup.o: arsup.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h arsup.h $(INCDIR)/libiberty.h bucomm.h \
config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
$(INCDIR)/filenames.h
binemul.o: binemul.c binemul.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h
bucomm.o: bucomm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h ../bfd/bfdver.h $(INCDIR)/libiberty.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
$(INCDIR)/filenames.h $(BFDDIR)/libbfd.h
budemang.o: budemang.c config.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/libiberty.h $(INCDIR)/demangle.h \
budemang.h
coffdump.o: coffdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/libiberty.h coffgrok.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h
coffgrok.o: coffgrok.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h coffgrok.h
cxxfilt.o: cxxfilt.c config.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
$(INCDIR)/libiberty.h $(INCDIR)/demangle.h $(INCDIR)/safe-ctype.h
debug.o: debug.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h
dlltool.o: dlltool.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/demangle.h \
$(INCDIR)/dyn-string.h dlltool.h $(INCDIR)/safe-ctype.h
dllwrap.o: dllwrap.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/dyn-string.h
emul_aix.o: emul_aix.c binemul.h ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/xcoff.h $(BFDDIR)/libcoff.h $(BFDDIR)/libxcoff.h
emul_vanilla.o: emul_vanilla.c binemul.h ../bfd/bfd.h \
$(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h
filemode.o: filemode.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h
ieee.o: ieee.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
$(INCDIR)/ieee.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \
budbg.h $(INCDIR)/filenames.h
is-ranlib.o: is-ranlib.c
is-strip.o: is-strip.c
maybe-ranlib.o: maybe-ranlib.c
maybe-strip.o: maybe-strip.c
nlmconv.o: nlmconv.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/libiberty.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/safe-ctype.h \
$(BFDDIR)/libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
$(INCDIR)/nlm/external.h nlmconv.h
nm.o: nm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
$(INCDIR)/progress.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h budemang.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ranlib.h $(INCDIR)/demangle.h \
$(INCDIR)/libiberty.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h
not-ranlib.o: not-ranlib.c
not-strip.o: not-strip.c
objcopy.o: objcopy.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/progress.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
budbg.h $(INCDIR)/filenames.h $(INCDIR)/fnmatch.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
$(INCDIR)/bfdlink.h
objdump.o: objdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h ../bfd/bfdver.h $(INCDIR)/progress.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
budemang.h $(INCDIR)/safe-ctype.h $(INCDIR)/dis-asm.h \
$(INCDIR)/libiberty.h $(INCDIR)/demangle.h debug.h \
budbg.h $(INCDIR)/aout/aout64.h
prdbg.o: prdbg.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \
budbg.h
rdcoff.o: rdcoff.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h bucomm.h \
config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
$(INCDIR)/libiberty.h debug.h budbg.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h
rddbg.o: rddbg.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \
budbg.h
readelf.o: readelf.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/elf/alpha.h \
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h \
$(INCDIR)/elf/avr.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/d10v.h \
$(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h $(INCDIR)/elf/fr30.h \
$(INCDIR)/elf/frv.h $(INCDIR)/elf/h8.h $(INCDIR)/elf/hppa.h \
$(INCDIR)/elf/i386.h $(INCDIR)/elf/i370.h $(INCDIR)/elf/i860.h \
$(INCDIR)/elf/i960.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/ip2k.h \
$(INCDIR)/elf/m32r.h $(INCDIR)/elf/m68k.h $(INCDIR)/elf/m68hc11.h \
$(INCDIR)/elf/mcore.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/mmix.h \
$(INCDIR)/elf/mn10200.h $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/msp430.h \
$(INCDIR)/elf/or32.h $(INCDIR)/elf/pj.h $(INCDIR)/elf/ppc.h \
$(INCDIR)/elf/ppc64.h $(INCDIR)/elf/s390.h $(INCDIR)/elf/sh.h \
$(INCDIR)/elf/sparc.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/vax.h \
$(INCDIR)/elf/x86-64.h $(INCDIR)/elf/xstormy16.h $(INCDIR)/elf/crx.h \
$(INCDIR)/elf/iq2000.h $(INCDIR)/elf/xtensa.h $(INCDIR)/aout/ar.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
$(INCDIR)/libiberty.h unwind-ia64.h
rename.o: rename.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h
resbin.o: resbin.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \
winduni.h
rescoff.o: rescoff.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \
winduni.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h
resrc.o: resrc.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \
windres.h winduni.h
resres.o: resres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \
winduni.h
size.o: size.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
$(INCDIR)/libiberty.h
srconv.o: srconv.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h sysroff.h coffgrok.h $(INCDIR)/libiberty.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
sysroff.c
stabs.o: stabs.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \
$(INCDIR)/demangle.h debug.h budbg.h $(INCDIR)/filenames.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
strings.o: strings.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/getopt.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
$(INCDIR)/safe-ctype.h
sysdump.o: sysdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/safe-ctype.h $(INCDIR)/libiberty.h \
sysroff.h sysroff.c
version.o: version.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h ../bfd/bfdver.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h
windres.o: windres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h $(INCDIR)/getopt.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h windres.h \
winduni.h
winduni.o: winduni.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h winduni.h $(INCDIR)/safe-ctype.h
wrstabs.o: wrstabs.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \
debug.h budbg.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def
arparse.o: arparse.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h arsup.h
arlex.o: arlex.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
arparse.h
sysroff.o: sysroff.c
sysinfo.o: sysinfo.c
syslex.o: syslex.c sysinfo.h
defparse.o: defparse.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h dlltool.h
deflex.o: deflex.c $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
defparse.h dlltool.h
nlmheader.o: nlmheader.c $(INCDIR)/ansidecl.h $(INCDIR)/safe-ctype.h \
../bfd/bfd.h $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
nlmconv.h
rcparse.o: rcparse.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h windres.h \
winduni.h $(INCDIR)/safe-ctype.h
rclex.o: rclex.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
$(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h \
windres.h winduni.h rcparse.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY

File diff suppressed because it is too large Load Diff

View File

@@ -1,284 +0,0 @@
-*- text -*-
* nm and objdump now have a switch "--special-syms" to enable the displaying of
symbols which the target considers to be special. By default these symbols
are no longer displayed. Currently the only special symbols are the Mapping
symbols used by the ARM port to mark transitions between text and data and
between ARM and THUMB code.
* dlltool has a switch "--ext-prefix-alias <prefix>" to generate additional
import and export symbols with <preifx> prepended to them.
Changes in 2.15:
* objcopy and strip can now take wildcard patterns in symbol names specified on
the command line provided that the --wildcard switch is used to enable them.
* readelf can now parse archives.
* objdump now accepts --debugging-tags to print the debug information in a
format compatible with ctags tool.
* objcopy and strip now accept --only-keep-debug to create a file containing
those sections that would be stripped out by --strip-debug. The idea is that
this can be used in conjunction with the --add-gnu-debuglink switch to create
a two part program distribution - one a stripped executable and the other the
debugging info.
* objcopy now accepts --add-gnu-debuglink=<file> to insert a .gnu_debuglink
section into a (presumably stripped) executable. This allows the debug
information for the file to be held in a separate file.
* BFD marks the sections .comment and .note as 'n' in the BSD/POSIX
single-character representation. This can be checked by running nm
with the -a switch.
Changes in 2.14:
* Added --info switch to objcopy and strip.
* Support for Vitesse IQ2000 added by Red Hat.
* Added 'S' encoding to strings to allow the display of 8-bit characters.
* Added --prefix-symbols=<text>, --prefix-sections=<text> and
--prefix-alloc-sections=<text> to objcopy.
* readelf can handle the extensions to the DWARF2 spec used by the Unified
Parallel C compiler.
* BFD no longer declares a "boolean" type, to avoid clashes with other
headers that declare the same. Users of BFD should replace boolean,
false and true, with int, 0 and 1, or define their own boolean type.
* Support for IP2K added by Denis Chertykov.
Changes in 2.13:
* Support for the Fujitsu FRV architecture added by Red Hat. Models for FR400
and FR500 included.
Changes in version 2.12:
* Support for Don Knuth's MMIX, by Hans-Peter Nilsson.
* size: Add --totals to display summary of sizes (Berkeley format only).
* readelf: Add --wide option to not break section header or segment listing
lines to fit into 80 columns.
* strings: Add --encoding to display wide character strings. By Markus Kuhn.
* objcopy: Add --rename-section to change section names.
* readelf: Support added for DWARF 2.1 extensions. Support added for
displaying the contents of .debug.macinfo sections.
* New command line switches added to objcopy to allow symbols to be kept as
global symbols, and also to specify files containing lists of such symbols.
by Honda Hiroki.
* Support for OpenRISC by Johan Rydberg.
* New command line switch to objcopy --alt-machine-code which creates a binary
with an alternate machine code if one is defined in the architecture
description. Only supported for ELF targets. By Alexandre Oliva.
* New command line switch to objcopy -B (or --binary-architecture) which sets
the architecture of the output file to the given argument. This option only
makes sense, if the input target is binary. Otherwise it is ignored.
By Stefan Geuken.
* Support for PDP-11 by Lars Brinkhoff.
Changes in binutils 2.11:
* Add support for ARM v5t and v5te architectures and Intel's XScale ARM
extenstions.
* Add --srec-len and --srec-forceS3 command line switch to objcopy.
By Luciano Gemme.
* Support for the MIPS32, by Anders Norlander.
* Support for the i860, by Jason Eckhardt.
* Support for CRIS (Axis Communications ETRAX series).
Changes in binutils 2.10:
* Support for 64-bit ELF on HPPA.
* New command line switch to objdump --file-start-context which shows the
entire file contents up to the source line first encountered for a given
file.
* New command line switch to objdump -M (or --disassembler-options) which takes
a parameter which can then be interpreted on a per-target basis by the
disassembler. Used by ARM targets to select register name sets, ISA, APCS or
raw verions.
* objdump support for -mi386:intel which causes disassembly to be displayed
with intel syntax.
* New program: readelf. This displays the contents of ELF format files,
regardless of target machine.
* objcopy now takes --change-section-lma, --change-section-vma, and
--change-section-address options. The old --adjust-section-vma option is
equivalent to --change-section-address. The other --adjust-* options are now
renamed to --change-*, although --adjust-* continues to work.
* objcopy has a --redefine-sym option that lets you rename symbols.
* objcopy now takes a -j/--only-section option to copy only the specified
sections.
* dlltool now supports the IMPORTS command.
* dlltool now takes --export-all-symbols, --no-export-all-symbols,
--exclude-symbols, and --no-default-excludes options.
Changes in binutils 2.9:
* Added windres program, which can be used to manipulate resources in WIN32
files as used on Windows 95 and Windows NT.
* The objcopy --gap-fill and --pad-to options operate on the LMA rather than
the VMA of the sections.
* Added S modifier to ar to not build a symbol table.
Changes in binutils 2.8:
* The objdump disassembly format has been changed, and hopefully improved. Use
the new --prefix-addresses option to get the old format. There are also new
--disassemble-zeroes and --no-show-raw-insn options which affect disassembler
output.
* Formats may now be specified as configuration triplets. For example,
objdump -b i386-pc-linux. The triplets are not passed through config.sub,
so they must be in canonical form.
* Added new addr2line program. This uses the debugging information to convert
an address into a file name and line number within a program.
* Added --change-leading-char argument to objcopy.
* Added --weaken argument to objcopy.
* objdump --dynamic-reloc now works on ELF executables and shared libraries.
* Added --adjust-vma option to objdump.
* Added -C/--demangle option to objdump.
* Added -p/--preserve-dates option to strip and objcopy.
Changes in binutils 2.7:
* Added --enable-shared and --enable-commonbfdlib options to configure.
* Added --debugging argument to objdump and objcopy.
* Added --defined-only argument to nm.
* Added --remove-leading-char argument to objcopy.
* The objdump --line-numbers option is now meaningful with --reloc.
* Added --line-numbers option to nm.
* Added --endian/-EB/-EL option to objdump.
* Added support for Alpha OpenVMS/AXP.
Changes in binutils 2.6:
* Added -N/--strip-symbol and -K/--keep-symbol arguments to strip and objcopy.
* Added several arguments to objcopy to provide some control over how the new
file is laid out in memory. Also added binary output format to BFD to permit
generating plain binary files.
* Added --start-address and --stop-address options to objdump.
* ar and ranlib now work on AIX. The tools are now built by default on AIX.
Changes in binutils 2.5:
* Changed objdump -dr to dump the relocs interspersed with the assembly
listing, for a more useful listing of relocatable files.
* Changed objdump -d/--disassemble to only disassemble SEC_CODE sections.
Added -D/--disassemble-all option to disassemble all sections.
* Added --size-sort option to nm.
* strip and objcopy should now be able to handle dynamically linked ELF
executables.
Changes in binutils 2.4:
* Support for HP-PA (by Jeff Law), i386 Mach (by David Mackenzie), RS/6000 and
PowerPC (except ar and ranlib; by Ian Taylor).
* Support for Irix 5.
* Programs `strip' and `objcopy' will not attempt to write dynamically linked
ELF output files, since BFD currently can't create them properly.
Changes in binutils 2.3:
* A new --stabs argument has been added to objdump to dump stabs sections in
ELF and COFF files.
* A new program, nlmconv, has been added. It can convert object files into
Novell NetWare Loadable Modules.
* The strings program has been added.
Changes in binutils 2.2:
* The 'copy' program has been renamed to 'objcopy', for consistency with
'objdump', and because 'copy' might more plausibly be used as a synonym for
'cp'.
* The new stand-alone program c++filt is a filter that converts encoded
(mangled) C++ assembly-level identifiers to user-level names. (Note: This
may get moved to the gcc distribution.)
* nm -o on an archive now prefixes each line with the archive name, matching
the output from BSD nm.
* ar (and ld) can now read (but not write) BSD4.4-style archives.
* New support for H8500, Z8000, and the Hitach SH.
* Dis-assembler interface changed to allow sharing with gdb.
* There is new Elf code, but it is not yet ready for general use.
* There is the beginnings of a test suite.
Changes in binutils 2.1:
* There is now support for writing ECOFF files, so ld and the other utilities
should work on Risc/Ultrix and Irix. Please let us know how well this works.
* ar now automatically creates a symbol table (a __.SYMDEF member, in the BSD
version), if there are any object files in the archive. So running ranlib is
now redundant (unless the non-standard q command is used). This is required
for Posix.2 conformance.
* The archive-reading code now reads both BSD-style and SYSV-style archives
independently of the selected target format. This is to encourage people to
switch to SYSV-format, which has a number of advantages.
* The strip and copy programs now have options to remove debug-symbols only
and/or local symbols only. They now also support long options.
Local variables:
fill-column: 79
End:

View File

@@ -1,273 +0,0 @@
README for BINUTILS
These are the GNU binutils. These are utilities of use when dealing
with binary files, either object files or executables. These tools
consist of the linker (ld), the assembler (gas), and the profiler
(gprof) each of which have their own sub-directory named after them.
There is also a collection of other binary tools, including the
disassembler (objdump) in this directory. These tools make use of a
pair of libraries (bfd and opcodes) and a common set of header files
(include).
There are README and NEWS files in most of the program sub-directories
which give more information about those specific programs.
Unpacking and Installation -- quick overview
============================================
When you unpack the binutils archive file, you will get a directory
called something like `binutils-XXX', where XXX is the number of the
release. (Probably 2.13 or higher). This directory contains
various files and sub-directories. Most of the files in the top
directory are for information and for configuration. The actual
source code is in sub-directories.
To build binutils, you can just do:
cd binutils-XXX
./configure [options]
make
make install # copies the programs files into /usr/local/bin
# by default.
This will configure and build all the libraries as well as the
assembler, the binutils, and the linker.
If you have GNU make, we recommend building in a different directory:
mkdir objdir
cd objdir
../binutils-XXX/configure [options]
make
make install
This relies on the VPATH feature of GNU make.
By default, the binutils will be configured to support the system on
which they are built. When doing cross development, use the --target
configure option to specify a different target, eg:
./configure --target=foo-elf
The --enable-targets option adds support for more binary file formats
besides the default. List them as the argument to --enable-targets,
separated by commas. For example:
./configure --enable-targets=sun3,rs6000-aix,decstation
The name 'all' compiles in support for all valid BFD targets:
./configure --enable-targets=all
On 32-bit hosts though, this support will be restricted to 32-bit
target unless the --enable-64-bit-bfd option is also used:
./configure --enable-64-bit-bfd --enable-targets=all
You can also specify the --enable-shared option when you run
configure. This will build the BFD and opcodes libraries as shared
libraries. You can use arguments with the --enable-shared option to
indicate that only certain libraries should be built shared; for
example, --enable-shared=bfd. The only potential shared libraries in
a binutils release are bfd and opcodes.
The binutils will be linked against the shared libraries. The build
step will attempt to place the correct library in the run-time search
path for the binaries. However, in some cases, after you install the
binaries, you may have to set an environment variable, normally
LD_LIBRARY_PATH, so that the system can find the installed libbfd
shared library.
To build under openVMS/AXP, see the file makefile.vms in the top level
directory.
Native Language Support
=======================
By default Native Language Support will be enabled for binutils. On
some systems however this support is not present and can lead to error
messages such as "undefined reference to `libintl_gettext'" when
building there tools. If that happens the NLS support can be disabled
by adding the --disable-nls switch to the configure line like this:
../binutils-XXX/configure --disable-nls
If you don't have ar
====================
If your system does not already have an 'ar' program, the normal
binutils build process will not work. In this case, run configure as
usual. Before running make, run this script:
#!/bin/sh
MAKE_PROG="${MAKE-make}"
MAKE="${MAKE_PROG} AR=true LINK=true"
export MAKE
${MAKE} $* all-libiberty
${MAKE} $* all-intl
${MAKE} $* all-bfd
cd binutils
MAKE="${MAKE_PROG}"
export MAKE
${MAKE} $* ar_DEPENDENCIES= ar_LDADD='../bfd/*.o ../libiberty/*.o `if test -f ../intl/gettext.o; then echo '../intl/*.o'; fi`' ar
This script will build an ar program in binutils/ar. Move binutils/ar
into a directory on your PATH. After doing this, you can run make as
usual to build the complete binutils distribution. You do not need
the ranlib program in order to build the distribution.
Porting
=======
Binutils-2.13 supports many different architectures, but there
are many more not supported, including some that were supported
by earlier versions. We are hoping for volunteers to improve this
situation.
The major effort in porting binutils to a new host and/or target
architecture involves the BFD library. There is some documentation
in ../bfd/doc. The file ../gdb/doc/gdbint.texinfo (distributed
with gdb-5.x) may also be of help.
Reporting bugs
==============
Send bug reports and patches to:
bug-binutils@gnu.org.
Please include the following in bug reports:
- A description of exactly what went wrong, and exactly what should have
happened instead.
- The configuration name(s) given to the "configure" script. The
"config.status" file should have this information. This is assuming
you built binutils yourself. If you didn't build binutils youself,
then we need information regarding your machine and operating system,
and it may be more appropriate to report bugs to wherever you obtained
binutils.
- The options given to the tool (gas, objcopy, ld etc.) at run time.
- The actual input file that caused the problem.
Always mention the version number you are running; this is printed by
running any of the binutils with the --version option. We appreciate
reports about bugs, but we do not promise to fix them, particularly so
when the bug report is against an old version. If you are able, please
consider building the latest tools from CVS to check that your bug has
not already been fixed.
When reporting problems about gas and ld, it's useful to provide a
testcase that triggers the problem. In the case of a gas problem, we
want input files to gas and command line switches used. The inputs to
gas are _NOT_ .c or .i files, but rather .s files. If your original
source was a C program, you can generate the .s file and see the command
line options by passing -v -save-temps to gcc in addition to all the
usual options you use. The reason we don't want C files is that we
might not have a C compiler around for the target you use. While it
might be possible to build a compiler, that takes considerable time and
disk space, and we might not end up with exactly the same compiler you
use.
In the case of a ld problem, the input files are .o, .a and .so files,
and possibly a linker script specified with -T. Again, when using gcc
to link, you can see these files by adding options to the gcc command
line. Use -v -save-temps -Wl,-t, except that on targets that use gcc's
collect2, you would add -v -save-temps -Wl,-t,-debug. The -t option
tells ld to print all files and libraries used, so that, for example,
you can associate -lc on the ld command line with the actual libc used.
Note that your simple two line C program to trigger a problem typically
expands into several megabytes of objects by the time you include
libraries.
It is antisocial to post megabyte sized attachments to mailing lists, so
please put large testcases somewhere on an ftp or web site so that only
interested developers need to download them, or offer to email them on
request. Better still, try to reduce the testcase, for example, try to
develop a ld testcase that doesn't use system libraries. However,
please be sure it is a complete testcase and that it really does
demonstrate the problem. Also, don't bother paring it down if that will
cause large delays in filing the bug report.
If you expect to be contributing a large number of test cases, it would
be helpful if you would look at the test suite included in the release
(based on the Deja Gnu testing framework, available from the usual ftp
sites) and write test cases to fit into that framework. This is
certainly not required.
VMS
===
This section was written by Klaus K"ampf <kkaempf@rmi.de>. It
describes how to build and install the binutils on openVMS (Alpha and
Vax). (The BFD library only supports reading Vax object files.)
Compiling the release:
To compile the gnu binary utilities and the gnu assembler, you'll
need DEC C or GNU C for openVMS/Alpha. You'll need *both* compilers
on openVMS/Vax.
Compiling with either DEC C or GNU C works on openVMS/Alpha only. Some
of the opcodes and binutils files trap a bug in the DEC C optimizer,
so these files must be compiled with /noopt.
Compiling on openVMS/Vax is a bit complicated, as the bfd library traps
a bug in GNU C and the gnu assembler a bug in (my version of) DEC C.
I never tried compiling with VAX C.
You further need GNU Make Version 3.76 or later. This is available
at ftp.progis.de or any GNU archive site. The makefiles assume that
gmake starts gnu make as a foreign command.
If you're compiling with DEC C or VAX C, you must run
$ @setup
before starting gnu-make. This isn't needed with GNU C.
On the Alpha you can choose the compiler by editing the toplevel
makefile.vms. Either select CC=cc (for DEC C) or CC=gcc (for GNU C)
Installing the release
Provided that your directory setup conforms to the GNU on openVMS
standard, you already have a concealed device named 'GNU_ROOT'.
In this case, a simple
$ gmake install
suffices to copy all programs and libraries to the proper directories.
Define the programs as foreign commands by adding these lines to your
login.com:
$ gas :== $GNU_ROOT:[bin]as.exe
$ size :== $GNU_ROOT:[bin]size.exe
$ nm :== $GNU_ROOT:[bin]nm.exe
$ objdump :== $GNU_ROOT:[bin]objdump.exe
$ strings :== $GNU_ROOT:[bin]strings.exe
If you have a different directory setup, copy the binary utilities
([.binutils]size.exe, [.binutils]nm.exe, [.binutils]objdump.exe,
and [.binutils]strings.exe) and the gnu assembler and preprocessor
([.gas]as.exe and [.gas]gasp.exe]) to a directory of your choice
and define all programs as foreign commands.
If you're satisfied with the compilation, you may want to remove
unneeded objects and libraries:
$ gmake clean
If you have any problems or questions about the binutils on VMS, feel
free to mail me at kkaempf@rmi.de.

View File

@@ -1,32 +0,0 @@
sinclude(../bfd/acinclude.m4)
dnl sinclude(../libtool.m4) already included in bfd/acinclude.m4
dnl The lines below arrange for aclocal not to bring libtool.m4
dnl AM_PROG_LIBTOOL into aclocal.m4, while still arranging for automake
dnl to add a definition of LIBTOOL to Makefile.in.
ifelse(yes,no,[
AC_DEFUN([AM_PROG_LIBTOOL],)
AC_SUBST(LIBTOOL)
])
dnl sinclude(../gettext.m4) already included in bfd/acinclude.m4
ifelse(yes,no,[
AC_DEFUN([CY_WITH_NLS],)
AC_SUBST(INTLLIBS)
])
## Replacement for AC_PROG_LEX and AC_DECL_YYTEXT
## by Alexandre Oliva <oliva@dcc.unicamp.br>
## We need to override the installed aclocal/lex.m4 because of a bug in
## this definition in the recommended automake snapshot of 000227:
## There were double-quotes around ``$missing_dir/missing flex'' which was
## bad since aclocal wraps it in double-quotes.
dnl AM_PROG_LEX
dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT
AC_DEFUN([AM_PROG_LEX],
[missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1)
AC_CHECK_PROGS(LEX, flex lex, [$missing_dir/missing flex])
AC_PROG_LEX
AC_DECL_YYTEXT])

244
binutils/aclocal.m4 vendored
View File

@@ -1,244 +0,0 @@
dnl aclocal.m4 generated automatically by aclocal 1.4-p6
dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
sinclude(../bfd/acinclude.m4)
dnl sinclude(../libtool.m4) already included in bfd/acinclude.m4
dnl The lines below arrange for aclocal not to bring libtool.m4
dnl AM_PROG_LIBTOOL into aclocal.m4, while still arranging for automake
dnl to add a definition of LIBTOOL to Makefile.in.
ifelse(yes,no,[
AC_DEFUN([AM_PROG_LIBTOOL],)
AC_SUBST(LIBTOOL)
])
dnl sinclude(../gettext.m4) already included in bfd/acinclude.m4
ifelse(yes,no,[
AC_DEFUN([CY_WITH_NLS],)
AC_SUBST(INTLLIBS)
])
dnl AM_PROG_LEX
dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT
AC_DEFUN([AM_PROG_LEX],
[missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1)
AC_CHECK_PROGS(LEX, flex lex, [$missing_dir/missing flex])
AC_PROG_LEX
AC_DECL_YYTEXT])
# isc-posix.m4 serial 2 (gettext-0.11.2)
dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
dnl This file is free software, distributed under the terms of the GNU
dnl General Public License. As a special exception to the GNU General
dnl Public License, this file may be distributed as part of a program
dnl that contains a configuration script generated by Autoconf, under
dnl the same distribution terms as the rest of that program.
# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
# This test replaces the one in autoconf.
# Currently this macro should have the same name as the autoconf macro
# because gettext's gettext.m4 (distributed in the automake package)
# still uses it. Otherwise, the use in gettext.m4 makes autoheader
# give these diagnostics:
# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
undefine([AC_ISC_POSIX])
AC_DEFUN([AC_ISC_POSIX],
[
dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
]
)
# Do all the work for Automake. This macro actually does too much --
# some checks are only needed if your package does certain things.
# But this isn't really a big deal.
# serial 1
dnl Usage:
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
AC_REQUIRE([AC_PROG_INSTALL])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]
AC_SUBST(VERSION)
dnl test to see if srcdir already configured
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
ifelse([$3],,
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
AC_REQUIRE([AM_SANITY_CHECK])
AC_REQUIRE([AC_ARG_PROGRAM])
dnl FIXME This is truly gross.
missing_dir=`cd $ac_aux_dir && pwd`
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
AC_REQUIRE([AC_PROG_MAKE_SET])])
# Copyright 2002 Free Software Foundation, Inc.
# This program 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.
# This program 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 this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
# AM_SET_CURRENT_AUTOMAKE_VERSION
# -------------------------------
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.4-p6])])
#
# Check to make sure that the build environment is sane.
#
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
# Just in case
sleep 1
echo timestamp > conftestfile
# Do `set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
if test "[$]*" = "X"; then
# -L didn't work.
set X `ls -t $srcdir/configure conftestfile`
fi
if test "[$]*" != "X $srcdir/configure conftestfile" \
&& test "[$]*" != "X conftestfile $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
test "[$]2" = conftestfile
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
rm -f conftest*
AC_MSG_RESULT(yes)])
dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
dnl The program must properly implement --version.
AC_DEFUN([AM_MISSING_PROG],
[AC_MSG_CHECKING(for working $2)
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
if ($2 --version) < /dev/null > /dev/null 2>&1; then
$1=$2
AC_MSG_RESULT(found)
else
$1="$3/missing $2"
AC_MSG_RESULT(missing)
fi
AC_SUBST($1)])
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN([AM_CONFIG_HEADER],
[AC_PREREQ([2.12])
AC_CONFIG_HEADER([$1])
dnl When config.status generates a header, we must update the stamp-h file.
dnl This file resides in the same directory as the config header
dnl that is generated. We must strip everything past the first ":",
dnl and everything past the last "/".
AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
<<am_indx=1
for am_file in <<$1>>; do
case " <<$>>CONFIG_HEADERS " in
*" <<$>>am_file "*<<)>>
echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
;;
esac
am_indx=`expr "<<$>>am_indx" + 1`
done<<>>dnl>>)
changequote([,]))])
# Add --enable-maintainer-mode option to configure.
# From Jim Meyering
# serial 1
AC_DEFUN([AM_MAINTAINER_MODE],
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
dnl maintainer-mode is disabled by default
AC_ARG_ENABLE(maintainer-mode,
[ --enable-maintainer-mode enable make rules and dependencies not useful
(and sometimes confusing) to the casual installer],
USE_MAINTAINER_MODE=$enableval,
USE_MAINTAINER_MODE=no)
AC_MSG_RESULT($USE_MAINTAINER_MODE)
AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
MAINT=$MAINTAINER_MODE_TRUE
AC_SUBST(MAINT)dnl
]
)
# Define a conditional.
AC_DEFUN([AM_CONDITIONAL],
[AC_SUBST($1_TRUE)
AC_SUBST($1_FALSE)
if $2; then
$1_TRUE=
$1_FALSE='#'
else
$1_TRUE='#'
$1_FALSE=
fi])

View File

@@ -1,349 +0,0 @@
/* addr2line.c -- convert addresses to line number and function name
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Ulrich Lauther <Ulrich.Lauther@mchp.siemens.de>
This file is part of GNU Binutils.
This program 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.
This program 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 this program; if not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Derived from objdump.c and nm.c by Ulrich.Lauther@mchp.siemens.de
Usage:
addr2line [options] addr addr ...
or
addr2line [options]
both forms write results to stdout, the second form reads addresses
to be converted from stdin. */
#include <string.h>
#include "bfd.h"
#include "getopt.h"
#include "libiberty.h"
#include "demangle.h"
#include "bucomm.h"
#include "budemang.h"
static bfd_boolean with_functions; /* -f, show function names. */
static bfd_boolean do_demangle; /* -C, demangle names. */
static bfd_boolean base_names; /* -s, strip directory names. */
static int naddr; /* Number of addresses to process. */
static char **addr; /* Hex addresses to process. */
static asymbol **syms; /* Symbol table. */
static struct option long_options[] =
{
{"basenames", no_argument, NULL, 's'},
{"demangle", optional_argument, NULL, 'C'},
{"exe", required_argument, NULL, 'e'},
{"functions", no_argument, NULL, 'f'},
{"target", required_argument, NULL, 'b'},
{"help", no_argument, NULL, 'H'},
{"version", no_argument, NULL, 'V'},
{0, no_argument, 0, 0}
};
static void usage (FILE *, int);
static void slurp_symtab (bfd *);
static void find_address_in_section (bfd *, asection *, void *);
static void translate_addresses (bfd *);
static void process_file (const char *, const char *);
/* Print a usage message to STREAM and exit with STATUS. */
static void
usage (FILE *stream, int status)
{
fprintf (stream, _("Usage: %s [option(s)] [addr(s)]\n"), program_name);
fprintf (stream, _(" Convert addresses into line number/file name pairs.\n"));
fprintf (stream, _(" If no addresses are specified on the command line, they will be read from stdin\n"));
fprintf (stream, _(" The options are:\n\
-b --target=<bfdname> Set the binary file format\n\
-e --exe=<executable> Set the input file name (default is a.out)\n\
-s --basenames Strip directory names\n\
-f --functions Show function names\n\
-C --demangle[=style] Demangle function names\n\
-h --help Display this information\n\
-v --version Display the program's version\n\
\n"));
list_supported_targets (program_name, stream);
if (status == 0)
fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
exit (status);
}
/* Read in the symbol table. */
static void
slurp_symtab (bfd *abfd)
{
long symcount;
unsigned int size;
if ((bfd_get_file_flags (abfd) & HAS_SYMS) == 0)
return;
symcount = bfd_read_minisymbols (abfd, FALSE, (void *) &syms, &size);
if (symcount == 0)
symcount = bfd_read_minisymbols (abfd, TRUE /* dynamic */, (void *) &syms, &size);
if (symcount < 0)
bfd_fatal (bfd_get_filename (abfd));
}
/* These global variables are used to pass information between
translate_addresses and find_address_in_section. */
static bfd_vma pc;
static const char *filename;
static const char *functionname;
static unsigned int line;
static bfd_boolean found;
/* Look for an address in a section. This is called via
bfd_map_over_sections. */
static void
find_address_in_section (bfd *abfd, asection *section,
void *data ATTRIBUTE_UNUSED)
{
bfd_vma vma;
bfd_size_type size;
if (found)
return;
if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0)
return;
vma = bfd_get_section_vma (abfd, section);
if (pc < vma)
return;
size = bfd_get_section_size (section);
if (pc >= vma + size)
return;
found = bfd_find_nearest_line (abfd, section, syms, pc - vma,
&filename, &functionname, &line);
}
/* Read hexadecimal addresses from stdin, translate into
file_name:line_number and optionally function name. */
static void
translate_addresses (bfd *abfd)
{
int read_stdin = (naddr == 0);
for (;;)
{
if (read_stdin)
{
char addr_hex[100];
if (fgets (addr_hex, sizeof addr_hex, stdin) == NULL)
break;
pc = bfd_scan_vma (addr_hex, NULL, 16);
}
else
{
if (naddr <= 0)
break;
--naddr;
pc = bfd_scan_vma (*addr++, NULL, 16);
}
found = FALSE;
bfd_map_over_sections (abfd, find_address_in_section, NULL);
if (! found)
{
if (with_functions)
printf ("??\n");
printf ("??:0\n");
}
else
{
if (with_functions)
{
const char *name;
char *alloc = NULL;
name = functionname;
if (name == NULL || *name == '\0')
name = "??";
else if (do_demangle)
{
alloc = demangle (abfd, name);
name = alloc;
}
printf ("%s\n", name);
if (alloc != NULL)
free (alloc);
}
if (base_names && filename != NULL)
{
char *h;
h = strrchr (filename, '/');
if (h != NULL)
filename = h + 1;
}
printf ("%s:%u\n", filename ? filename : "??", line);
}
/* fflush() is essential for using this command as a server
child process that reads addresses from a pipe and responds
with line number information, processing one address at a
time. */
fflush (stdout);
}
}
/* Process a file. */
static void
process_file (const char *file_name, const char *target)
{
bfd *abfd;
char **matching;
if (get_file_size (file_name) < 1)
return;
abfd = bfd_openr (file_name, target);
if (abfd == NULL)
bfd_fatal (file_name);
if (bfd_check_format (abfd, bfd_archive))
fatal (_("%s: can not get addresses from archive"), file_name);
if (! bfd_check_format_matches (abfd, bfd_object, &matching))
{
bfd_nonfatal (bfd_get_filename (abfd));
if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
{
list_matching_formats (matching);
free (matching);
}
xexit (1);
}
slurp_symtab (abfd);
translate_addresses (abfd);
if (syms != NULL)
{
free (syms);
syms = NULL;
}
bfd_close (abfd);
}
int main (int, char **);
int
main (int argc, char **argv)
{
const char *file_name;
char *target;
int c;
#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
setlocale (LC_MESSAGES, "");
#endif
#if defined (HAVE_SETLOCALE)
setlocale (LC_CTYPE, "");
#endif
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
program_name = *argv;
xmalloc_set_program_name (program_name);
bfd_init ();
set_default_bfd_target ();
file_name = NULL;
target = NULL;
while ((c = getopt_long (argc, argv, "b:Ce:sfHhVv", long_options, (int *) 0))
!= EOF)
{
switch (c)
{
case 0:
break; /* We've been given a long option. */
case 'b':
target = optarg;
break;
case 'C':
do_demangle = TRUE;
if (optarg != NULL)
{
enum demangling_styles style;
style = cplus_demangle_name_to_style (optarg);
if (style == unknown_demangling)
fatal (_("unknown demangling style `%s'"),
optarg);
cplus_demangle_set_style (style);
}
break;
case 'e':
file_name = optarg;
break;
case 's':
base_names = TRUE;
break;
case 'f':
with_functions = TRUE;
break;
case 'v':
case 'V':
print_version ("addr2line");
break;
case 'h':
case 'H':
usage (stdout, 0);
break;
default:
usage (stderr, 1);
break;
}
}
if (file_name == NULL)
file_name = "a.out";
addr = argv + optind;
naddr = argc - optind;
process_file (file_name, target);
return 0;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,91 +0,0 @@
%{
/* arlex.l - Strange script language lexer */
/* Copyright 1992, 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Contributed by Steve Chamberlain
sac@cygnus.com
*/
#define DONTDECLARE_MALLOC
#include "ansidecl.h"
#include "libiberty.h"
#include "arparse.h"
#define YY_NO_UNPUT
extern int yylex (void);
int linenumber;
%}
%a 10000
%o 25000
%%
"ADDLIB" { return ADDLIB; }
"ADDMOD" { return ADDMOD; }
"CLEAR" { return CLEAR; }
"CREATE" { return CREATE; }
"DELETE" { return DELETE; }
"DIRECTORY" { return DIRECTORY; }
"END" { return END; }
"EXTRACT" { return EXTRACT; }
"FULLDIR" { return FULLDIR; }
"HELP" { return HELP; }
"LIST" { return LIST; }
"OPEN" { return OPEN; }
"REPLACE" { return REPLACE; }
"VERBOSE" { return VERBOSE; }
"SAVE" { return SAVE; }
"addlib" { return ADDLIB; }
"addmod" { return ADDMOD; }
"clear" { return CLEAR; }
"create" { return CREATE; }
"delete" { return DELETE; }
"directory" { return DIRECTORY; }
"end" { return END; }
"extract" { return EXTRACT; }
"fulldir" { return FULLDIR; }
"help" { return HELP; }
"list" { return LIST; }
"open" { return OPEN; }
"replace" { return REPLACE; }
"verbose" { return VERBOSE; }
"save" { return SAVE; }
"+\n" { linenumber ++; }
"(" { return '('; }
")" { return ')'; }
"," { return ','; }
[A-Za-z0-9/\\$:.\-\_]+ {
yylval.name = xstrdup (yytext);
return FILENAME;
}
"*".* { }
";".* { }
" " { }
"\n" { linenumber ++; return NEWLINE; }
%%
#ifndef yywrap
/* Needed for lex, though not flex. */
int yywrap(void) { return 1; }
#endif

View File

@@ -1,203 +0,0 @@
%{
/* arparse.y - Stange script language parser */
/* Copyright 1992, 1993, 1995, 1997, 1999, 2003
Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Contributed by Steve Chamberlain
sac@cygnus.com
*/
#define DONTDECLARE_MALLOC
#include "bfd.h"
#include "bucomm.h"
#include "arsup.h"
extern int verbose;
extern int yylex (void);
static int yyerror (const char *);
%}
%union {
char *name;
struct list *list ;
};
%token NEWLINE
%token VERBOSE
%token <name> FILENAME
%token ADDLIB
%token LIST
%token ADDMOD
%token CLEAR
%token CREATE
%token DELETE
%token DIRECTORY
%token END
%token EXTRACT
%token FULLDIR
%token HELP
%token QUIT
%token REPLACE
%token SAVE
%token OPEN
%type <list> modulelist
%type <list> modulename
%type <name> optional_filename
%%
start:
{ prompt(); } session
;
session:
session command_line
|
;
command_line:
command NEWLINE { prompt(); }
;
command:
open_command
| create_command
| verbose_command
| directory_command
| addlib_command
| clear_command
| addmod_command
| save_command
| extract_command
| replace_command
| delete_command
| list_command
| END { ar_end(); return 0; }
| error
| FILENAME { yyerror("foo"); }
|
;
extract_command:
EXTRACT modulename
{ ar_extract($2); }
;
replace_command:
REPLACE modulename
{ ar_replace($2); }
;
clear_command:
CLEAR
{ ar_clear(); }
;
delete_command:
DELETE modulename
{ ar_delete($2); }
;
addmod_command:
ADDMOD modulename
{ ar_addmod($2); }
;
list_command:
LIST
{ ar_list(); }
;
save_command:
SAVE
{ ar_save(); }
;
open_command:
OPEN FILENAME
{ ar_open($2,0); }
;
create_command:
CREATE FILENAME
{ ar_open($2,1); }
;
addlib_command:
ADDLIB FILENAME modulelist
{ ar_addlib($2,$3); }
;
directory_command:
DIRECTORY FILENAME modulelist optional_filename
{ ar_directory($2, $3, $4); }
;
optional_filename:
FILENAME
{ $$ = $1; }
| { $$ = 0; }
;
modulelist:
'(' modulename ')'
{ $$ = $2; }
|
{ $$ = 0; }
;
modulename:
modulename optcomma FILENAME
{ struct list *n = (struct list *) malloc(sizeof(struct list));
n->next = $1;
n->name = $3;
$$ = n;
}
| { $$ = 0; }
;
optcomma:
','
|
;
verbose_command:
VERBOSE
{ verbose = !verbose; }
;
%%
static int
yyerror (const char *x ATTRIBUTE_UNUSED)
{
extern int linenumber;
printf (_("Syntax error in archive script, line %d\n"), linenumber + 1);
return 0;
}

View File

@@ -1,478 +0,0 @@
/* arsup.c - Archive support for MRI compatibility
Copyright 1992, 1994, 1995, 1996, 1997, 2000, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Contributed by Steve Chamberlain
sac@cygnus.com
This file looks after requests from arparse.y, to provide the MRI
style librarian command syntax + 1 word LIST. */
#include "bfd.h"
#include "arsup.h"
#include "libiberty.h"
#include "bucomm.h"
#include "filenames.h"
static void map_over_list
(bfd *, void (*function) (bfd *, bfd *), struct list *);
static void ar_directory_doer (bfd *, bfd *);
static void ar_addlib_doer (bfd *, bfd *);
extern int verbose;
static void
map_over_list (bfd *arch, void (*function) (bfd *, bfd *), struct list *list)
{
bfd *head;
if (list == NULL)
{
bfd *next;
head = arch->next;
while (head != NULL)
{
next = head->next;
function (head, (bfd *) NULL);
head = next;
}
}
else
{
struct list *ptr;
/* This may appear to be a baroque way of accomplishing what we
want. however we have to iterate over the filenames in order
to notice where a filename is requested but does not exist in
the archive. Ditto mapping over each file each time -- we
want to hack multiple references. */
for (ptr = list; ptr; ptr = ptr->next)
{
bfd_boolean found = FALSE;
bfd *prev = arch;
for (head = arch->next; head; head = head->next)
{
if (head->filename != NULL
&& FILENAME_CMP (ptr->name, head->filename) == 0)
{
found = TRUE;
function (head, prev);
}
prev = head;
}
if (! found)
fprintf (stderr, _("No entry %s in archive.\n"), ptr->name);
}
}
}
FILE *outfile;
static void
ar_directory_doer (bfd *abfd, bfd *ignore ATTRIBUTE_UNUSED)
{
print_arelt_descr(outfile, abfd, verbose);
}
void
ar_directory (char *ar_name, struct list *list, char *output)
{
bfd *arch;
arch = open_inarch (ar_name, (char *) NULL);
if (output)
{
outfile = fopen(output,"w");
if (outfile == 0)
{
outfile = stdout;
fprintf (stderr,_("Can't open file %s\n"), output);
output = 0;
}
}
else
outfile = stdout;
map_over_list (arch, ar_directory_doer, list);
bfd_close (arch);
if (output)
fclose (outfile);
}
void
prompt (void)
{
extern int interactive;
if (interactive)
{
printf ("AR >");
fflush (stdout);
}
}
void
maybequit (void)
{
if (! interactive)
xexit (9);
}
bfd *obfd;
char *real_name;
void
ar_open (char *name, int t)
{
char *tname = (char *) xmalloc (strlen (name) + 10);
const char *bname = lbasename (name);
real_name = name;
/* Prepend tmp- to the beginning, to avoid file-name clashes after
truncation on filesystems with limited namespaces (DOS). */
sprintf (tname, "%.*stmp-%s", (int) (bname - name), name, bname);
obfd = bfd_openw (tname, NULL);
if (!obfd)
{
fprintf (stderr,
_("%s: Can't open output archive %s\n"),
program_name, tname);
maybequit ();
}
else
{
if (!t)
{
bfd **ptr;
bfd *element;
bfd *ibfd;
ibfd = bfd_openr (name, NULL);
if (!ibfd)
{
fprintf (stderr,_("%s: Can't open input archive %s\n"),
program_name, name);
maybequit ();
return;
}
if (!bfd_check_format(ibfd, bfd_archive))
{
fprintf (stderr,
_("%s: file %s is not an archive\n"),
program_name, name);
maybequit ();
return;
}
ptr = &(obfd->archive_head);
element = bfd_openr_next_archived_file (ibfd, NULL);
while (element)
{
*ptr = element;
ptr = &element->next;
element = bfd_openr_next_archived_file (ibfd, element);
}
}
bfd_set_format (obfd, bfd_archive);
obfd->has_armap = 1;
}
}
static void
ar_addlib_doer (bfd *abfd, bfd *prev)
{
/* Add this module to the output bfd. */
if (prev != NULL)
prev->next = abfd->next;
abfd->next = obfd->archive_head;
obfd->archive_head = abfd;
}
void
ar_addlib (char *name, struct list *list)
{
if (obfd == NULL)
{
fprintf (stderr, _("%s: no output archive specified yet\n"), program_name);
maybequit ();
}
else
{
bfd *arch;
arch = open_inarch (name, (char *) NULL);
if (arch != NULL)
map_over_list (arch, ar_addlib_doer, list);
/* Don't close the bfd, since it will make the elements disappear. */
}
}
void
ar_addmod (struct list *list)
{
if (!obfd)
{
fprintf (stderr, _("%s: no open output archive\n"), program_name);
maybequit ();
}
else
{
while (list)
{
bfd *abfd = bfd_openr (list->name, NULL);
if (!abfd)
{
fprintf (stderr, _("%s: can't open file %s\n"),
program_name, list->name);
maybequit ();
}
else
{
abfd->next = obfd->archive_head;
obfd->archive_head = abfd;
}
list = list->next;
}
}
}
void
ar_clear (void)
{
if (obfd)
obfd->archive_head = 0;
}
void
ar_delete (struct list *list)
{
if (!obfd)
{
fprintf (stderr, _("%s: no open output archive\n"), program_name);
maybequit ();
}
else
{
while (list)
{
/* Find this name in the archive. */
bfd *member = obfd->archive_head;
bfd **prev = &(obfd->archive_head);
int found = 0;
while (member)
{
if (FILENAME_CMP(member->filename, list->name) == 0)
{
*prev = member->next;
found = 1;
}
else
prev = &(member->next);
member = member->next;
}
if (!found)
{
fprintf (stderr, _("%s: can't find module file %s\n"),
program_name, list->name);
maybequit ();
}
list = list->next;
}
}
}
void
ar_save (void)
{
if (!obfd)
{
fprintf (stderr, _("%s: no open output archive\n"), program_name);
maybequit ();
}
else
{
char *ofilename = xstrdup (bfd_get_filename (obfd));
bfd_close (obfd);
smart_rename (ofilename, real_name, 0);
obfd = 0;
free (ofilename);
}
}
void
ar_replace (struct list *list)
{
if (!obfd)
{
fprintf (stderr, _("%s: no open output archive\n"), program_name);
maybequit ();
}
else
{
while (list)
{
/* Find this name in the archive. */
bfd *member = obfd->archive_head;
bfd **prev = &(obfd->archive_head);
int found = 0;
while (member)
{
if (FILENAME_CMP (member->filename, list->name) == 0)
{
/* Found the one to replace. */
bfd *abfd = bfd_openr (list->name, 0);
if (!abfd)
{
fprintf (stderr, _("%s: can't open file %s\n"),
program_name, list->name);
maybequit ();
}
else
{
*prev = abfd;
abfd->next = member->next;
found = 1;
}
}
else
{
prev = &(member->next);
}
member = member->next;
}
if (!found)
{
bfd *abfd = bfd_openr (list->name, 0);
fprintf (stderr,_("%s: can't find module file %s\n"),
program_name, list->name);
if (!abfd)
{
fprintf (stderr, _("%s: can't open file %s\n"),
program_name, list->name);
maybequit ();
}
else
*prev = abfd;
}
list = list->next;
}
}
}
/* And I added this one. */
void
ar_list (void)
{
if (!obfd)
{
fprintf (stderr, _("%s: no open output archive\n"), program_name);
maybequit ();
}
else
{
bfd *abfd;
outfile = stdout;
verbose =1 ;
printf (_("Current open archive is %s\n"), bfd_get_filename (obfd));
for (abfd = obfd->archive_head;
abfd != (bfd *)NULL;
abfd = abfd->next)
ar_directory_doer (abfd, (bfd *) NULL);
}
}
void
ar_end (void)
{
if (obfd)
{
bfd_cache_close (obfd);
unlink (bfd_get_filename (obfd));
}
}
void
ar_extract (struct list *list)
{
if (!obfd)
{
fprintf (stderr, _("%s: no open archive\n"), program_name);
maybequit ();
}
else
{
while (list)
{
/* Find this name in the archive. */
bfd *member = obfd->archive_head;
int found = 0;
while (member && !found)
{
if (FILENAME_CMP (member->filename, list->name) == 0)
{
extract_file (member);
found = 1;
}
member = member->next;
}
if (!found)
{
bfd_openr (list->name, 0);
fprintf (stderr, _("%s: can't find module file %s\n"),
program_name, list->name);
}
list = list->next;
}
}
}

View File

@@ -1,61 +0,0 @@
/* arsup.h - archive support header file
Copyright 1992, 1993, 1994, 1996, 2003 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
struct list {
char *name;
struct list *next;
};
void maybequit (void);
void prompt (void);
void ar_clear (void);
void ar_replace (struct list *);
void ar_delete (struct list *);
void ar_save (void);
void ar_list (void);
void ar_open (char *, int);
void ar_directory (char *, struct list *, char *);
void ar_addmod (struct list *);
void ar_addlib (char *, struct list *);
void ar_end (void);
void ar_extract (struct list *);
bfd *open_inarch (const char *archive_filename, const char *);
extern int yylex (void);
int yyparse (void);
/* Functions from ar.c */
void extract_file (bfd * abfd);
extern int interactive;

View File

@@ -1,146 +0,0 @@
/* Binutils emulation layer.
Copyright 2002, 2003 Free Software Foundation, Inc.
Written by Tom Rix, Redhat.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "binemul.h"
extern bin_emulation_xfer_type bin_dummy_emulation;
void
ar_emul_usage (FILE *fp)
{
if (bin_dummy_emulation.ar_usage)
bin_dummy_emulation.ar_usage (fp);
}
void
ar_emul_default_usage (FILE *fp)
{
AR_EMUL_USAGE_PRINT_OPTION_HEADER (fp);
/* xgettext:c-format */
fprintf (fp, _(" No emulation specific options\n"));
}
bfd_boolean
ar_emul_append (bfd **after_bfd, char *file_name, bfd_boolean verbose)
{
if (bin_dummy_emulation.ar_append)
return bin_dummy_emulation.ar_append (after_bfd, file_name, verbose);
return FALSE;
}
bfd_boolean
ar_emul_default_append (bfd **after_bfd, char *file_name,
bfd_boolean verbose)
{
bfd *temp;
temp = *after_bfd;
*after_bfd = bfd_openr (file_name, NULL);
AR_EMUL_ELEMENT_CHECK (*after_bfd, file_name);
AR_EMUL_APPEND_PRINT_VERBOSE (verbose, file_name);
(*after_bfd)->next = temp;
return TRUE;
}
bfd_boolean
ar_emul_replace (bfd **after_bfd, char *file_name, bfd_boolean verbose)
{
if (bin_dummy_emulation.ar_replace)
return bin_dummy_emulation.ar_replace (after_bfd, file_name, verbose);
return FALSE;
}
bfd_boolean
ar_emul_default_replace (bfd **after_bfd, char *file_name,
bfd_boolean verbose)
{
bfd *temp;
temp = *after_bfd;
*after_bfd = bfd_openr (file_name, NULL);
AR_EMUL_ELEMENT_CHECK (*after_bfd, file_name);
AR_EMUL_REPLACE_PRINT_VERBOSE (verbose, file_name);
(*after_bfd)->next = temp;
return TRUE;
}
bfd_boolean
ar_emul_create (bfd **abfd_out, char *archive_file_name, char *file_name)
{
if (bin_dummy_emulation.ar_create)
return bin_dummy_emulation.ar_create (abfd_out, archive_file_name,
file_name);
return FALSE;
}
bfd_boolean
ar_emul_default_create (bfd **abfd_out, char *archive_file_name,
char *file_name)
{
char *target = NULL;
/* Try to figure out the target to use for the archive from the
first object on the list. */
if (file_name != NULL)
{
bfd *obj;
obj = bfd_openr (file_name, NULL);
if (obj != NULL)
{
if (bfd_check_format (obj, bfd_object))
target = bfd_get_target (obj);
(void) bfd_close (obj);
}
}
/* Create an empty archive. */
*abfd_out = bfd_openw (archive_file_name, target);
if (*abfd_out == NULL
|| ! bfd_set_format (*abfd_out, bfd_archive)
|| ! bfd_close (*abfd_out))
bfd_fatal (archive_file_name);
return TRUE;
}
bfd_boolean
ar_emul_parse_arg (char *arg)
{
if (bin_dummy_emulation.ar_parse_arg)
return bin_dummy_emulation.ar_parse_arg (arg);
return FALSE;
}
bfd_boolean
ar_emul_default_parse_arg (char *arg ATTRIBUTE_UNUSED)
{
return FALSE;
}

View File

@@ -1,64 +0,0 @@
/* Binutils emulation layer.
Copyright 2002, 2003 Free Software Foundation, Inc.
Written by Tom Rix, Redhat.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef BINEMUL_H
#define BINEMUL_H
#include "bfd.h"
#include "bucomm.h"
extern void ar_emul_usage (FILE *);
extern void ar_emul_default_usage (FILE *);
extern bfd_boolean ar_emul_append (bfd **, char *, bfd_boolean);
extern bfd_boolean ar_emul_default_append (bfd **, char *, bfd_boolean);
extern bfd_boolean ar_emul_replace (bfd **, char *, bfd_boolean);
extern bfd_boolean ar_emul_default_replace (bfd **, char *, bfd_boolean);
extern bfd_boolean ar_emul_create (bfd **, char *, char *);
extern bfd_boolean ar_emul_default_create (bfd **, char *, char *);
extern bfd_boolean ar_emul_parse_arg (char *);
extern bfd_boolean ar_emul_default_parse_arg (char *);
/* Macros for common output. */
#define AR_EMUL_USAGE_PRINT_OPTION_HEADER(fp) \
/* xgettext:c-format */ \
fprintf (fp, _(" emulation options: \n"))
#define AR_EMUL_ELEMENT_CHECK(abfd, file_name) \
do { if ((abfd) == (bfd *) NULL) bfd_fatal (file_name); } while (0)
#define AR_EMUL_APPEND_PRINT_VERBOSE(verbose, file_name) \
do { if (verbose) printf ("a - %s\n", file_name); } while (0)
#define AR_EMUL_REPLACE_PRINT_VERBOSE(verbose, file_name) \
do { if (verbose) printf ("r - %s\n", file_name); } while (0)
typedef struct bin_emulation_xfer_struct
{
/* Print out the extra options. */
void (* ar_usage) (FILE *fp);
bfd_boolean (* ar_append) (bfd **, char *, bfd_boolean);
bfd_boolean (* ar_replace) (bfd **, char *, bfd_boolean);
bfd_boolean (* ar_create) (bfd **, char *, char *);
bfd_boolean (* ar_parse_arg) (char *);
}
bin_emulation_xfer_type;
#endif

View File

@@ -1,477 +0,0 @@
/* bucomm.c -- Bin Utils COMmon code.
Copyright 1991, 1992, 1993, 1994, 1995, 1997, 1998, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
/* We might put this in a library someday so it could be dynamically
loaded, but for now it's not necessary. */
#include "bfd.h"
#include "bfdver.h"
#include "libiberty.h"
#include "bucomm.h"
#include "filenames.h"
#include "libbfd.h"
#include <sys/stat.h>
#include <time.h> /* ctime, maybe time_t */
#ifndef HAVE_TIME_T_IN_TIME_H
#ifndef HAVE_TIME_T_IN_TYPES_H
typedef long time_t;
#endif
#endif
static const char * endian_string (enum bfd_endian);
static int display_target_list (void);
static int display_info_table (int, int);
static int display_target_tables (void);
/* Error reporting. */
char *program_name;
void
bfd_nonfatal (const char *string)
{
const char *errmsg = bfd_errmsg (bfd_get_error ());
if (string)
fprintf (stderr, "%s: %s: %s\n", program_name, string, errmsg);
else
fprintf (stderr, "%s: %s\n", program_name, errmsg);
}
void
bfd_fatal (const char *string)
{
bfd_nonfatal (string);
xexit (1);
}
void
report (const char * format, va_list args)
{
fprintf (stderr, "%s: ", program_name);
vfprintf (stderr, format, args);
putc ('\n', stderr);
}
void
fatal VPARAMS ((const char *format, ...))
{
VA_OPEN (args, format);
VA_FIXEDARG (args, const char *, format);
report (format, args);
VA_CLOSE (args);
xexit (1);
}
void
non_fatal VPARAMS ((const char *format, ...))
{
VA_OPEN (args, format);
VA_FIXEDARG (args, const char *, format);
report (format, args);
VA_CLOSE (args);
}
/* Set the default BFD target based on the configured target. Doing
this permits the binutils to be configured for a particular target,
and linked against a shared BFD library which was configured for a
different target. */
void
set_default_bfd_target (void)
{
/* The macro TARGET is defined by Makefile. */
const char *target = TARGET;
if (! bfd_set_default_target (target))
fatal (_("can't set BFD default target to `%s': %s"),
target, bfd_errmsg (bfd_get_error ()));
}
/* After a FALSE return from bfd_check_format_matches with
bfd_get_error () == bfd_error_file_ambiguously_recognized, print
the possible matching targets. */
void
list_matching_formats (char **p)
{
fprintf (stderr, _("%s: Matching formats:"), program_name);
while (*p)
fprintf (stderr, " %s", *p++);
fputc ('\n', stderr);
}
/* List the supported targets. */
void
list_supported_targets (const char *name, FILE *f)
{
int t;
const char **targ_names = bfd_target_list ();
if (name == NULL)
fprintf (f, _("Supported targets:"));
else
fprintf (f, _("%s: supported targets:"), name);
for (t = 0; targ_names[t] != NULL; t++)
fprintf (f, " %s", targ_names[t]);
fprintf (f, "\n");
free (targ_names);
}
/* List the supported architectures. */
void
list_supported_architectures (const char *name, FILE *f)
{
const char **arch;
if (name == NULL)
fprintf (f, _("Supported architectures:"));
else
fprintf (f, _("%s: supported architectures:"), name);
for (arch = bfd_arch_list (); *arch; arch++)
fprintf (f, " %s", *arch);
fprintf (f, "\n");
}
/* The length of the longest architecture name + 1. */
#define LONGEST_ARCH sizeof ("powerpc:common")
static const char *
endian_string (enum bfd_endian endian)
{
switch (endian)
{
case BFD_ENDIAN_BIG: return "big endian";
case BFD_ENDIAN_LITTLE: return "little endian";
default: return "endianness unknown";
}
}
/* List the targets that BFD is configured to support, each followed
by its endianness and the architectures it supports. */
static int
display_target_list (void)
{
char *dummy_name;
int t;
int ret = 1;
dummy_name = make_temp_file (NULL);
for (t = 0; bfd_target_vector[t]; t++)
{
const bfd_target *p = bfd_target_vector[t];
bfd *abfd = bfd_openw (dummy_name, p->name);
int a;
printf ("%s\n (header %s, data %s)\n", p->name,
endian_string (p->header_byteorder),
endian_string (p->byteorder));
if (abfd == NULL)
{
bfd_nonfatal (dummy_name);
ret = 0;
continue;
}
if (! bfd_set_format (abfd, bfd_object))
{
if (bfd_get_error () != bfd_error_invalid_operation)
{
bfd_nonfatal (p->name);
ret = 0;
}
bfd_close_all_done (abfd);
continue;
}
for (a = (int) bfd_arch_obscure + 1; a < (int) bfd_arch_last; a++)
if (bfd_set_arch_mach (abfd, (enum bfd_architecture) a, 0))
printf (" %s\n",
bfd_printable_arch_mach ((enum bfd_architecture) a, 0));
bfd_close_all_done (abfd);
}
unlink (dummy_name);
free (dummy_name);
return ret;
}
/* Print a table showing which architectures are supported for entries
FIRST through LAST-1 of bfd_target_vector (targets across,
architectures down). */
static int
display_info_table (int first, int last)
{
int t;
int a;
int ret = 1;
char *dummy_name;
/* Print heading of target names. */
printf ("\n%*s", (int) LONGEST_ARCH, " ");
for (t = first; t < last && bfd_target_vector[t]; t++)
printf ("%s ", bfd_target_vector[t]->name);
putchar ('\n');
dummy_name = make_temp_file (NULL);
for (a = (int) bfd_arch_obscure + 1; a < (int) bfd_arch_last; a++)
if (strcmp (bfd_printable_arch_mach (a, 0), "UNKNOWN!") != 0)
{
printf ("%*s ", (int) LONGEST_ARCH - 1,
bfd_printable_arch_mach (a, 0));
for (t = first; t < last && bfd_target_vector[t]; t++)
{
const bfd_target *p = bfd_target_vector[t];
bfd_boolean ok = TRUE;
bfd *abfd = bfd_openw (dummy_name, p->name);
if (abfd == NULL)
{
bfd_nonfatal (p->name);
ret = 0;
ok = FALSE;
}
if (ok)
{
if (! bfd_set_format (abfd, bfd_object))
{
if (bfd_get_error () != bfd_error_invalid_operation)
{
bfd_nonfatal (p->name);
ret = 0;
}
ok = FALSE;
}
}
if (ok)
{
if (! bfd_set_arch_mach (abfd, a, 0))
ok = FALSE;
}
if (ok)
printf ("%s ", p->name);
else
{
int l = strlen (p->name);
while (l--)
putchar ('-');
putchar (' ');
}
if (abfd != NULL)
bfd_close_all_done (abfd);
}
putchar ('\n');
}
unlink (dummy_name);
free (dummy_name);
return ret;
}
/* Print tables of all the target-architecture combinations that
BFD has been configured to support. */
static int
display_target_tables (void)
{
int t;
int columns;
int ret = 1;
char *colum;
columns = 0;
colum = getenv ("COLUMNS");
if (colum != NULL)
columns = atoi (colum);
if (columns == 0)
columns = 80;
t = 0;
while (bfd_target_vector[t] != NULL)
{
int oldt = t, wid;
wid = LONGEST_ARCH + strlen (bfd_target_vector[t]->name) + 1;
++t;
while (wid < columns && bfd_target_vector[t] != NULL)
{
int newwid;
newwid = wid + strlen (bfd_target_vector[t]->name) + 1;
if (newwid >= columns)
break;
wid = newwid;
++t;
}
if (! display_info_table (oldt, t))
ret = 0;
}
return ret;
}
int
display_info (void)
{
printf (_("BFD header file version %s\n"), BFD_VERSION_STRING);
if (! display_target_list () || ! display_target_tables ())
return 1;
else
return 0;
}
/* Display the archive header for an element as if it were an ls -l listing:
Mode User\tGroup\tSize\tDate Name */
void
print_arelt_descr (FILE *file, bfd *abfd, bfd_boolean verbose)
{
struct stat buf;
if (verbose)
{
if (bfd_stat_arch_elt (abfd, &buf) == 0)
{
char modebuf[11];
char timebuf[40];
time_t when = buf.st_mtime;
const char *ctime_result = (const char *) ctime (&when);
/* POSIX format: skip weekday and seconds from ctime output. */
sprintf (timebuf, "%.12s %.4s", ctime_result + 4, ctime_result + 20);
mode_string (buf.st_mode, modebuf);
modebuf[10] = '\0';
/* POSIX 1003.2/D11 says to skip first character (entry type). */
fprintf (file, "%s %ld/%ld %6ld %s ", modebuf + 1,
(long) buf.st_uid, (long) buf.st_gid,
(long) buf.st_size, timebuf);
}
}
fprintf (file, "%s\n", bfd_get_filename (abfd));
}
/* Return the name of a temporary file in the same directory as FILENAME. */
char *
make_tempname (char *filename)
{
static char template[] = "stXXXXXX";
char *tmpname;
char *slash = strrchr (filename, '/');
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (filename, '\\');
if (slash == NULL || (bslash != NULL && bslash > slash))
slash = bslash;
if (slash == NULL && filename[0] != '\0' && filename[1] == ':')
slash = filename + 1;
}
#endif
if (slash != (char *) NULL)
{
char c;
c = *slash;
*slash = 0;
tmpname = xmalloc (strlen (filename) + sizeof (template) + 2);
strcpy (tmpname, filename);
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
/* If tmpname is "X:", appending a slash will make it a root
directory on drive X, which is NOT the same as the current
directory on drive X. */
if (tmpname[1] == ':' && tmpname[2] == '\0')
strcat (tmpname, ".");
#endif
strcat (tmpname, "/");
strcat (tmpname, template);
mktemp (tmpname);
*slash = c;
}
else
{
tmpname = xmalloc (sizeof (template));
strcpy (tmpname, template);
mktemp (tmpname);
}
return tmpname;
}
/* Parse a string into a VMA, with a fatal error if it can't be
parsed. */
bfd_vma
parse_vma (const char *s, const char *arg)
{
bfd_vma ret;
const char *end;
ret = bfd_scan_vma (s, &end, 0);
if (*end != '\0')
fatal (_("%s: bad number: %s"), arg, s);
return ret;
}
/* Returns the size of the named file. If the file does not
exist, or if it is not a real file, then a suitable non-fatal
error message is printed and zero is returned. */
off_t
get_file_size (const char * file_name)
{
struct stat statbuf;
if (stat (file_name, &statbuf) < 0)
{
if (errno == ENOENT)
non_fatal (_("'%s': No such file"), file_name);
else
non_fatal (_("Warning: could not locate '%s'. reason: %s"),
file_name, strerror (errno));
}
else if (! S_ISREG (statbuf.st_mode))
non_fatal (_("Warning: '%s' is not an ordinary file"), file_name);
else
return statbuf.st_size;
return 0;
}

View File

@@ -1,197 +0,0 @@
/* bucomm.h -- binutils common include file.
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _BUCOMM_H
#define _BUCOMM_H
#include "ansidecl.h"
#include <stdio.h>
#include <sys/types.h>
#include "config.h"
#include "bin-bugs.h"
#ifdef ANSI_PROTOTYPES
#include <stdarg.h>
#else
#include <varargs.h>
#endif
#ifdef USE_BINARY_FOPEN
#include "fopen-bin.h"
#else
#include "fopen-same.h"
#endif
#include <errno.h>
#ifndef errno
extern int errno;
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_STRING_H
#include <string.h>
#else
#ifdef HAVE_STRINGS_H
#include <strings.h>
#else
extern char *strchr ();
extern char *strrchr ();
#endif
#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#else
#ifdef HAVE_SYS_FILE_H
#include <sys/file.h>
#endif
#endif
#ifdef NEED_DECLARATION_STRSTR
extern char *strstr ();
#endif
#ifdef HAVE_SBRK
#ifdef NEED_DECLARATION_SBRK
extern char *sbrk ();
#endif
#endif
#ifdef NEED_DECLARATION_GETENV
extern char *getenv ();
#endif
#ifdef NEED_DECLARATION_ENVIRON
extern char **environ;
#endif
#ifndef O_RDONLY
#define O_RDONLY 0
#endif
#ifndef O_RDWR
#define O_RDWR 2
#endif
#ifndef SEEK_SET
#define SEEK_SET 0
#endif
#ifndef SEEK_CUR
#define SEEK_CUR 1
#endif
#ifndef SEEK_END
#define SEEK_END 2
#endif
#if defined(__GNUC__) && !defined(C_ALLOCA)
# undef alloca
# define alloca __builtin_alloca
#else
# if defined(HAVE_ALLOCA_H) && !defined(C_ALLOCA)
# include <alloca.h>
# else
# ifndef alloca /* predefined by HP cc +Olibcalls */
# if !defined (__STDC__) && !defined (__hpux)
char *alloca ();
# else
void *alloca ();
# endif /* __STDC__, __hpux */
# endif /* alloca */
# endif /* HAVE_ALLOCA_H */
#endif
#ifdef HAVE_LOCALE_H
# include <locale.h>
#endif
#ifdef ENABLE_NLS
# include <libintl.h>
# define _(String) gettext (String)
# ifdef gettext_noop
# define N_(String) gettext_noop (String)
# else
# define N_(String) (String)
# endif
#else
# define gettext(Msgid) (Msgid)
# define dgettext(Domainname, Msgid) (Msgid)
# define dcgettext(Domainname, Msgid, Category) (Msgid)
# define textdomain(Domainname) while (0) /* nothing */
# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
# define _(String) (String)
# define N_(String) (String)
#endif
/* bucomm.c */
void bfd_nonfatal (const char *);
void bfd_fatal (const char *) ATTRIBUTE_NORETURN;
void report (const char *, va_list);
void fatal (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
void non_fatal (const char *, ...) ATTRIBUTE_PRINTF_1;
void set_default_bfd_target (void);
void list_matching_formats (char **);
void list_supported_targets (const char *, FILE *);
void list_supported_architectures (const char *, FILE *);
int display_info (void);
void print_arelt_descr (FILE *, bfd *, bfd_boolean);
char *make_tempname (char *);
bfd_vma parse_vma (const char *, const char *);
off_t get_file_size (const char *);
extern char *program_name;
/* filemode.c */
void mode_string (unsigned long, char *);
/* version.c */
extern void print_version (const char *);
/* rename.c */
extern void set_times (const char *, const struct stat *);
extern int smart_rename (const char *, const char *, int);
/* libiberty. */
void *xmalloc (size_t);
void *xrealloc (void *, size_t);
#endif /* _BUCOMM_H */

View File

@@ -1,58 +0,0 @@
/* budbg.c -- Interfaces to the generic debugging information routines.
Copyright 1995, 1996, 2002, 2003 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#ifndef BUDBG_H
#define BUDBG_H
#include <stdio.h>
/* Routine used to read generic debugging information. */
extern void *read_debugging_info (bfd *, asymbol **, long);
/* Routine used to print generic debugging information. */
extern bfd_boolean print_debugging_info
(FILE *, void *, bfd *, asymbol **, void *, bfd_boolean);
/* Routines used to read and write stabs information. */
extern void *start_stab (void *, bfd *, bfd_boolean, asymbol **, long);
extern bfd_boolean finish_stab (void *, void *);
extern bfd_boolean parse_stab
(void *, void *, int, int, bfd_vma, const char *);
extern bfd_boolean write_stabs_in_sections_debugging_info
(bfd *, void *, bfd_byte **, bfd_size_type *, bfd_byte **, bfd_size_type *);
/* Routines used to read and write IEEE debugging information. */
extern bfd_boolean parse_ieee (void *, bfd *, const bfd_byte *, bfd_size_type);
extern bfd_boolean write_ieee_debugging_info (bfd *, void *);
/* Routine used to read COFF debugging information. */
extern bfd_boolean parse_coff (bfd *, asymbol **, long, void *);
#endif

View File

@@ -1,100 +0,0 @@
/* demangle.c -- A wrapper calling libiberty cplus_demangle
Copyright 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include "config.h"
#include <stdlib.h>
#ifdef HAVE_STRING_H
#include <string.h>
#else
#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
#endif
#include "bfd.h"
#include "libiberty.h"
#include "demangle.h"
#include "budemang.h"
/* Wrapper around cplus_demangle. Strips leading underscores and
other such chars that would otherwise confuse the demangler. */
char *
demangle (bfd *abfd, const char *name)
{
char *res, *alloc;
const char *pre, *suf;
size_t pre_len;
if (abfd != NULL && bfd_get_symbol_leading_char (abfd) == name[0])
++name;
/* This is a hack for better error reporting on XCOFF, PowerPC64-ELF
or the MS PE format. These formats have a number of leading '.'s
on at least some symbols, so we remove all dots to avoid
confusing the demangler. */
pre = name;
while (*name == '.')
++name;
pre_len = name - pre;
alloc = NULL;
suf = strchr (name, '@');
if (suf != NULL)
{
alloc = xmalloc (suf - name + 1);
memcpy (alloc, name, suf - name);
alloc[suf - name] = '\0';
name = alloc;
}
res = cplus_demangle (name, DMGL_ANSI | DMGL_PARAMS);
if (res != NULL)
{
/* Now put back any suffix, or stripped dots. */
if (pre_len != 0 || suf != NULL)
{
size_t len;
size_t suf_len;
char *final;
if (alloc != NULL)
free (alloc);
len = strlen (res);
if (suf == NULL)
suf = res + len;
suf_len = strlen (suf) + 1;
final = xmalloc (pre_len + len + suf_len);
memcpy (final, pre, pre_len);
memcpy (final + pre_len, res, len);
memcpy (final + pre_len + len, suf, suf_len);
free (res);
res = final;
}
return res;
}
if (alloc != NULL)
free (alloc);
return xstrdup (pre);
}

View File

@@ -1,25 +0,0 @@
/* demangle.h -- A wrapper calling libiberty cplus_demangle
Copyright 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#ifndef BUDEMANG_H
#define BUDEMANG_H
char *demangle (bfd *, const char *);
#endif

View File

@@ -1,552 +0,0 @@
/* Coff file dumper.
Copyright 1994, 1995, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or (at
your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Steve Chamberlain <sac@cygnus.com>
This module reads a type tree generated by coffgrok and prints
it out so we can test the grokker. */
#include "bfd.h"
#include "libiberty.h"
#include "coffgrok.h"
#include "bucomm.h"
#include "getopt.h"
static int atnl;
static void tab (int);
static void nl (void);
static void dump_coff_lines (struct coff_line *);
static void dump_coff_type (struct coff_type *);
static void dump_coff_where (struct coff_where *);
static void dump_coff_visible (struct coff_visible *);
extern void dump_coff_symbol (struct coff_symbol *);
static void dump_coff_scope (struct coff_scope *);
static void dump_coff_sfile (struct coff_sfile *);
static void dump_coff_section (struct coff_section *);
extern void coff_dump (struct coff_ofile *);
static void show_usage (FILE *, int);
extern int main (int, char **);
static void
tab (int x)
{
static int indent;
int i;
if (atnl)
{
if (x < 0)
{
printf (")");
indent += x;
return;
}
else
{
printf ("\n");
atnl = 0;
}
}
if (x == -1)
{
for (i = 0; i < indent; i++)
printf (" ");
indent += x;
printf (")");
return;
}
indent += x;
for (i = 0; i < indent; i++)
printf (" ");
if (x)
{
printf ("(");
}
}
static void
nl (void)
{
atnl = 1;
}
static void
dump_coff_lines (struct coff_line *p)
{
int i;
int online = 0;
tab (1);
printf (_("#lines %d "),p->nlines);
for (i = 0; i < p->nlines; i++)
{
printf ("(%d 0x%x)", p->lines[i], p->addresses[i]);
online++;
if (online > 6)
{
nl ();
tab (0);
online = 0;
}
}
nl ();
tab (-1);
}
static void
dump_coff_type (struct coff_type *p)
{
tab (1);
printf ("size %d ", p->size);
switch (p->type)
{
case coff_secdef_type:
printf ("section definition at %x size %x\n",
p->u.asecdef.address,
p->u.asecdef.size);
nl ();
break;
case coff_pointer_type:
printf ("pointer to");
nl ();
dump_coff_type (p->u.pointer.points_to);
break;
case coff_array_type:
printf ("array [%d] of", p->u.array.dim);
nl ();
dump_coff_type (p->u.array.array_of);
break;
case coff_function_type:
printf ("function returning");
nl ();
dump_coff_type (p->u.function.function_returns);
dump_coff_lines (p->u.function.lines);
printf ("arguments");
nl ();
dump_coff_scope (p->u.function.parameters);
tab (0);
printf ("code");
nl ();
dump_coff_scope (p->u.function.code);
tab(0);
break;
case coff_structdef_type:
printf ("structure definition");
nl ();
dump_coff_scope (p->u.astructdef.elements);
break;
case coff_structref_type:
if (!p->u.aenumref.ref)
printf ("structure ref to UNKNOWN struct");
else
printf ("structure ref to %s", p->u.aenumref.ref->name);
break;
case coff_enumref_type:
printf ("enum ref to %s", p->u.astructref.ref->name);
break;
case coff_enumdef_type:
printf ("enum definition");
nl ();
dump_coff_scope (p->u.aenumdef.elements);
break;
case coff_basic_type:
switch (p->u.basic)
{
case T_NULL:
printf ("NULL");
break;
case T_VOID:
printf ("VOID");
break;
case T_CHAR:
printf ("CHAR");
break;
case T_SHORT:
printf ("SHORT");
break;
case T_INT:
printf ("INT ");
break;
case T_LONG:
printf ("LONG");
break;
case T_FLOAT:
printf ("FLOAT");
break;
case T_DOUBLE:
printf ("DOUBLE");
break;
case T_STRUCT:
printf ("STRUCT");
break;
case T_UNION:
printf ("UNION");
break;
case T_ENUM:
printf ("ENUM");
break;
case T_MOE:
printf ("MOE ");
break;
case T_UCHAR:
printf ("UCHAR");
break;
case T_USHORT:
printf ("USHORT");
break;
case T_UINT:
printf ("UINT");
break;
case T_ULONG:
printf ("ULONG");
break;
case T_LNGDBL:
printf ("LNGDBL");
break;
default:
abort ();
}
}
nl ();
tab (-1);
}
static void
dump_coff_where (struct coff_where *p)
{
tab (1);
switch (p->where)
{
case coff_where_stack:
printf ("Stack offset %x", p->offset);
break;
case coff_where_memory:
printf ("Memory section %s+%x", p->section->name, p->offset);
break;
case coff_where_register:
printf ("Register %d", p->offset);
break;
case coff_where_member_of_struct:
printf ("Struct Member offset %x", p->offset);
break;
case coff_where_member_of_enum:
printf ("Enum Member offset %x", p->offset);
break;
case coff_where_unknown:
printf ("Undefined symbol");
break;
case coff_where_strtag:
printf ("STRTAG");
case coff_where_entag:
printf ("ENTAG");
break;
case coff_where_typedef:
printf ("TYPEDEF");
break;
default:
abort ();
}
nl ();
tab (-1);
}
static void
dump_coff_visible (struct coff_visible *p)
{
tab (1);
switch (p->type)
{
case coff_vis_ext_def:
printf ("coff_vis_ext_def");
break;
case coff_vis_ext_ref:
printf ("coff_vis_ext_ref");
break;
case coff_vis_int_def:
printf ("coff_vis_int_def");
break;
case coff_vis_common:
printf ("coff_vis_common");
break;
case coff_vis_auto:
printf ("coff_vis_auto");
break;
case coff_vis_autoparam:
printf ("coff_vis_autoparam");
break;
case coff_vis_regparam:
printf ("coff_vis_regparam");
break;
case coff_vis_register:
printf ("coff_vis_register");
break;
case coff_vis_tag:
printf ("coff_vis_tag");
break;
case coff_vis_member_of_struct:
printf ("coff_vis_member_of_struct");
break;
case coff_vis_member_of_enum:
printf ("coff_vis_member_of_enum");
break;
default:
abort ();
}
nl ();
tab (-1);
}
void
dump_coff_symbol (struct coff_symbol *p)
{
tab (1);
printf ("List of symbols");
nl ();
while (p)
{
tab (1);
tab (1);
printf ("Symbol %s, tag %d, number %d", p->name, p->tag, p->number);
nl ();
tab (-1);
tab (1);
printf ("Type");
nl ();
dump_coff_type (p->type);
tab (-1);
tab (1);
printf ("Where");
dump_coff_where (p->where);
tab (-1);
tab (1);
printf ("Visible");
dump_coff_visible (p->visible);
tab (-1);
p = p->next;
tab (-1);
}
tab (-1);
}
static void
dump_coff_scope (struct coff_scope *p)
{
if (p)
{
tab (1);
printf ("List of blocks %lx ",(unsigned long) p);
if (p->sec)
printf( " %s %x..%x", p->sec->name,p->offset, p->offset + p->size -1);
nl ();
tab (0);
printf ("*****************");
nl ();
while (p)
{
tab (0);
printf ("vars %d", p->nvars);
nl ();
dump_coff_symbol (p->vars_head);
printf ("blocks");
nl ();
dump_coff_scope (p->list_head);
nl ();
p = p->next;
}
tab (0);
printf ("*****************");
nl ();
tab (-1);
}
}
static void
dump_coff_sfile (struct coff_sfile *p)
{
tab (1);
printf ("List of source files");
nl ();
while (p)
{
tab (0);
printf ("Source file %s", p->name);
nl ();
dump_coff_scope (p->scope);
p = p->next;
}
tab (-1);
}
static void
dump_coff_section (struct coff_section *ptr)
{
int i;
tab (1);
printf ("section %s %d %d address %x size %x number %d nrelocs %d",
ptr->name, ptr->code, ptr->data, ptr->address,ptr->size,
ptr->number, ptr->nrelocs);
nl ();
for (i = 0; i < ptr->nrelocs; i++)
{
tab (0);
printf ("(%x %s %x)",
ptr->relocs[i].offset,
ptr->relocs[i].symbol->name,
ptr->relocs[i].addend);
nl ();
}
tab (-1);
}
void
coff_dump (struct coff_ofile *ptr)
{
int i;
printf ("Coff dump");
nl ();
printf ("#souces %d", ptr->nsources);
nl ();
dump_coff_sfile (ptr->source_head);
for (i = 0; i < ptr->nsections; i++)
dump_coff_section (ptr->sections + i);
}
char * program_name;
static void
show_usage (FILE *file, int status)
{
fprintf (file, _("Usage: %s [option(s)] in-file\n"), program_name);
fprintf (file, _(" Print a human readable interpretation of a SYSROFF object file\n"));
fprintf (file, _(" The options are:\n\
-h --help Display this information\n\
-v --version Display the program's version\n\
\n"));
if (status == 0)
fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO);
exit (status);
}
int
main (int ac, char **av)
{
bfd *abfd;
struct coff_ofile *tree;
char **matching;
char *input_file = NULL;
int opt;
static struct option long_options[] =
{
{ "help", no_argument, 0, 'h' },
{ "version", no_argument, 0, 'V' },
{ NULL, no_argument, 0, 0 }
};
#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
setlocale (LC_MESSAGES, "");
#endif
#if defined (HAVE_SETLOCALE)
setlocale (LC_CTYPE, "");
#endif
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
program_name = av[0];
xmalloc_set_program_name (program_name);
while ((opt = getopt_long (ac, av, "HhVv", long_options,
(int *) NULL))
!= EOF)
{
switch (opt)
{
case 'H':
case 'h':
show_usage (stdout, 0);
break;
case 'v':
case 'V':
print_version ("coffdump");
exit (0);
case 0:
break;
default:
show_usage (stderr, 1);
break;
}
}
if (optind < ac)
{
input_file = av[optind];
}
if (!input_file)
fatal (_("no input file specified"));
abfd = bfd_openr (input_file, 0);
if (!abfd)
bfd_fatal (input_file);
if (! bfd_check_format_matches (abfd, bfd_object, &matching))
{
bfd_nonfatal (input_file);
if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
{
list_matching_formats (matching);
free (matching);
}
exit (1);
}
tree = coff_grok (abfd);
coff_dump (tree);
printf ("\n");
return 0;
}

View File

@@ -1,741 +0,0 @@
/* coffgrok.c
Copyright 1994, 1995, 1997, 1998, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Steve Chamberlain (sac@cygnus.com)
This module reads a coff file and builds a really simple type tree
which can be read by other programs. The first application is a
coff->sysroff converter. It can be tested with coffdump.c.
*/
#include "bfd.h"
#include "libiberty.h"
#include "bucomm.h"
#include "coff/internal.h"
#include "../bfd/libcoff.h"
#include "coffgrok.h"
int lofile = 1;
static struct coff_scope *top_scope;
static struct coff_scope *file_scope;
static struct coff_ofile *ofile;
struct coff_symbol *last_function_symbol;
struct coff_type *last_function_type;
struct coff_type *last_struct;
struct coff_type *last_enum;
struct coff_sfile *cur_sfile;
static struct coff_symbol **tindex;
static asymbol **syms;
static long symcount;
#define N(x) ((x)->_n._n_nptr[1])
static struct coff_ptr_struct *rawsyms;
static int rawcount;
static bfd *abfd;
#define PTR_SIZE 4
#define SHORT_SIZE 2
#define INT_SIZE 4
#define LONG_SIZE 4
#define FLOAT_SIZE 4
#define DOUBLE_SIZE 8
#define INDEXOF(p) ((struct coff_ptr_struct *)(p)-(rawsyms))
static struct coff_scope *empty_scope (void);
static struct coff_symbol *empty_symbol (void);
static void push_scope (int);
static void pop_scope (void);
static void do_sections_p1 (struct coff_ofile *);
static void do_sections_p2 (struct coff_ofile *);
static struct coff_where *do_where (int);
static struct coff_line *do_lines (int, char *);
static struct coff_type *do_type (int);
static struct coff_visible *do_visible (int);
static int do_define (int, struct coff_scope *);
static struct coff_ofile *doit (void);
static struct coff_scope *
empty_scope (void)
{
struct coff_scope *l;
l = (struct coff_scope *) (xcalloc (sizeof (struct coff_scope), 1));
return l;
}
static struct coff_symbol *
empty_symbol (void)
{
return (struct coff_symbol *) (xcalloc (sizeof (struct coff_symbol), 1));
}
/*int l;*/
static void
push_scope (int link)
{
struct coff_scope *n = empty_scope ();
if (link)
{
if (top_scope)
{
if (top_scope->list_tail)
{
top_scope->list_tail->next = n;
}
else
{
top_scope->list_head = n;
}
top_scope->list_tail = n;
}
}
n->parent = top_scope;
top_scope = n;
}
static void
pop_scope (void)
{
top_scope = top_scope->parent;
}
static void
do_sections_p1 (struct coff_ofile *head)
{
asection *section;
int idx;
struct coff_section *all = (struct coff_section *) (xcalloc (abfd->section_count + 1,
sizeof (struct coff_section)));
head->nsections = abfd->section_count + 1;
head->sections = all;
for (idx = 0, section = abfd->sections; section; section = section->next, idx++)
{
long relsize;
int i = section->target_index;
arelent **relpp;
long relcount;
relsize = bfd_get_reloc_upper_bound (abfd, section);
if (relsize < 0)
bfd_fatal (bfd_get_filename (abfd));
if (relsize == 0)
continue;
relpp = (arelent **) xmalloc (relsize);
relcount = bfd_canonicalize_reloc (abfd, section, relpp, syms);
if (relcount < 0)
bfd_fatal (bfd_get_filename (abfd));
head->sections[i].name = (char *) (section->name);
head->sections[i].code = section->flags & SEC_CODE;
head->sections[i].data = section->flags & SEC_DATA;
if (strcmp (section->name, ".bss") == 0)
head->sections[i].data = 1;
head->sections[i].address = section->lma;
head->sections[i].size = bfd_get_section_size (section);
head->sections[i].number = idx;
head->sections[i].nrelocs = section->reloc_count;
head->sections[i].relocs =
(struct coff_reloc *) (xcalloc (section->reloc_count,
sizeof (struct coff_reloc)));
head->sections[i].bfd_section = section;
}
head->sections[0].name = "ABSOLUTE";
head->sections[0].code = 0;
head->sections[0].data = 0;
head->sections[0].address = 0;
head->sections[0].size = 0;
head->sections[0].number = 0;
}
static void
do_sections_p2 (struct coff_ofile *head)
{
asection *section;
for (section = abfd->sections; section; section = section->next)
{
unsigned int j;
for (j = 0; j < section->reloc_count; j++)
{
int idx;
int i = section->target_index;
struct coff_reloc *r = head->sections[i].relocs + j;
arelent *sr = section->relocation + j;
r->offset = sr->address;
r->addend = sr->addend;
idx = ((coff_symbol_type *) (sr->sym_ptr_ptr[0]))->native - rawsyms;
r->symbol = tindex[idx];
}
}
}
static struct coff_where *
do_where (int i)
{
struct internal_syment *sym = &rawsyms[i].u.syment;
struct coff_where *where =
(struct coff_where *) (xmalloc (sizeof (struct coff_where)));
where->offset = sym->n_value;
if (sym->n_scnum == -1)
sym->n_scnum = 0;
switch (sym->n_sclass)
{
case C_FIELD:
where->where = coff_where_member_of_struct;
where->offset = sym->n_value / 8;
where->bitoffset = sym->n_value % 8;
where->bitsize = rawsyms[i + 1].u.auxent.x_sym.x_misc.x_lnsz.x_size;
break;
case C_MOE:
where->where = coff_where_member_of_enum;
break;
case C_MOS:
case C_MOU:
where->where = coff_where_member_of_struct;
break;
case C_AUTO:
case C_ARG:
where->where = coff_where_stack;
break;
case C_EXT:
case C_STAT:
case C_EXTDEF:
case C_LABEL:
where->where = coff_where_memory;
where->section = &ofile->sections[sym->n_scnum];
break;
case C_REG:
case C_REGPARM:
where->where = coff_where_register;
break;
case C_ENTAG:
where->where = coff_where_entag;
break;
case C_STRTAG:
case C_UNTAG:
where->where = coff_where_strtag;
break;
case C_TPDEF:
where->where = coff_where_typedef;
break;
default:
abort ();
break;
}
return where;
}
static
struct coff_line *
do_lines (int i, char *name ATTRIBUTE_UNUSED)
{
struct coff_line *res = (struct coff_line *) xcalloc (sizeof (struct coff_line), 1);
asection *s;
unsigned int l;
/* Find out if this function has any line numbers in the table */
for (s = abfd->sections; s; s = s->next)
{
for (l = 0; l < s->lineno_count; l++)
{
if (s->lineno[l].line_number == 0)
{
if (rawsyms + i == ((coff_symbol_type *) (&(s->lineno[l].u.sym[0])))->native)
{
/* These lines are for this function - so count them and stick them on */
int c = 0;
/* Find the linenumber of the top of the function, since coff linenumbers
are relative to the start of the function. */
int start_line = rawsyms[i + 3].u.auxent.x_sym.x_misc.x_lnsz.x_lnno;
l++;
for (c = 0; s->lineno[l + c + 1].line_number; c++)
;
/* Add two extra records, one for the prologue and one for the epilogue */
c += 1;
res->nlines = c;
res->lines = (int *) (xcalloc (sizeof (int), c));
res->addresses = (int *) (xcalloc (sizeof (int), c));
res->lines[0] = start_line;
res->addresses[0] = rawsyms[i].u.syment.n_value - s->vma;
for (c = 0; s->lineno[l + c + 1].line_number; c++)
{
res->lines[c + 1] = s->lineno[l + c].line_number + start_line - 1;
res->addresses[c + 1] = s->lineno[l + c].u.offset;
}
return res;
}
}
}
}
return res;
}
static
struct coff_type *
do_type (int i)
{
struct internal_syment *sym = &rawsyms[i].u.syment;
union internal_auxent *aux = &rawsyms[i + 1].u.auxent;
struct coff_type *res =
(struct coff_type *) xmalloc (sizeof (struct coff_type));
int type = sym->n_type;
int which_dt = 0;
int dimind = 0;
res->type = coff_basic_type;
res->u.basic = type & 0xf;
switch (type & 0xf)
{
case T_NULL:
case T_VOID:
if (sym->n_numaux && sym->n_sclass == C_STAT)
{
/* This is probably a section definition */
res->type = coff_secdef_type;
res->size = aux->x_scn.x_scnlen;
}
else
{
if (type == 0)
{
/* Don't know what this is, let's make it a simple int */
res->size = INT_SIZE;
res->u.basic = T_UINT;
}
else
{
/* Else it could be a function or pointer to void */
res->size = 0;
}
}
break;
break;
case T_UCHAR:
case T_CHAR:
res->size = 1;
break;
case T_USHORT:
case T_SHORT:
res->size = SHORT_SIZE;
break;
case T_UINT:
case T_INT:
res->size = INT_SIZE;
break;
case T_ULONG:
case T_LONG:
res->size = LONG_SIZE;
break;
case T_FLOAT:
res->size = FLOAT_SIZE;
break;
case T_DOUBLE:
res->size = DOUBLE_SIZE;
break;
case T_STRUCT:
case T_UNION:
if (sym->n_numaux)
{
if (aux->x_sym.x_tagndx.p)
{
/* Referring to a struct defined elsewhere */
res->type = coff_structref_type;
res->u.astructref.ref = tindex[INDEXOF (aux->x_sym.x_tagndx.p)];
res->size = res->u.astructref.ref ?
res->u.astructref.ref->type->size : 0;
}
else
{
/* A definition of a struct */
last_struct = res;
res->type = coff_structdef_type;
res->u.astructdef.elements = empty_scope ();
res->u.astructdef.idx = 0;
res->u.astructdef.isstruct = (type & 0xf) == T_STRUCT;
res->size = aux->x_sym.x_misc.x_lnsz.x_size;
}
}
else
{
/* No auxents - it's anonymous */
res->type = coff_structref_type;
res->u.astructref.ref = 0;
res->size = 0;
}
break;
case T_ENUM:
if (aux->x_sym.x_tagndx.p)
{
/* Referring to a enum defined elsewhere */
res->type = coff_enumref_type;
res->u.aenumref.ref = tindex[INDEXOF (aux->x_sym.x_tagndx.p)];
res->size = res->u.aenumref.ref->type->size;
}
else
{
/* A definition of an enum */
last_enum = res;
res->type = coff_enumdef_type;
res->u.aenumdef.elements = empty_scope ();
res->size = aux->x_sym.x_misc.x_lnsz.x_size;
}
break;
case T_MOE:
break;
}
for (which_dt = 5; which_dt >= 0; which_dt--)
{
switch ((type >> ((which_dt * 2) + 4)) & 0x3)
{
case 0:
break;
case DT_ARY:
{
struct coff_type *ptr = ((struct coff_type *)
xmalloc (sizeof (struct coff_type)));
int els = (dimind < DIMNUM
? aux->x_sym.x_fcnary.x_ary.x_dimen[dimind]
: 0);
++dimind;
ptr->type = coff_array_type;
ptr->size = els * res->size;
ptr->u.array.dim = els;
ptr->u.array.array_of = res;
res = ptr;
break;
}
case DT_PTR:
{
struct coff_type *ptr =
(struct coff_type *) xmalloc (sizeof (struct coff_type));
ptr->size = PTR_SIZE;
ptr->type = coff_pointer_type;
ptr->u.pointer.points_to = res;
res = ptr;
break;
}
case DT_FCN:
{
struct coff_type *ptr
= (struct coff_type *) xmalloc (sizeof (struct coff_type));
ptr->size = 0;
ptr->type = coff_function_type;
ptr->u.function.function_returns = res;
ptr->u.function.parameters = empty_scope ();
ptr->u.function.lines = do_lines (i, sym->_n._n_nptr[1]);
ptr->u.function.code = 0;
last_function_type = ptr;
res = ptr;
break;
}
}
}
return res;
}
static struct coff_visible *
do_visible (int i)
{
struct internal_syment *sym = &rawsyms[i].u.syment;
struct coff_visible *visible =
(struct coff_visible *) (xmalloc (sizeof (struct coff_visible)));
enum coff_vis_type t;
switch (sym->n_sclass)
{
case C_MOS:
case C_MOU:
case C_FIELD:
t = coff_vis_member_of_struct;
break;
case C_MOE:
t = coff_vis_member_of_enum;
break;
case C_REGPARM:
t = coff_vis_regparam;
break;
case C_REG:
t = coff_vis_register;
break;
case C_STRTAG:
case C_UNTAG:
case C_ENTAG:
case C_TPDEF:
t = coff_vis_tag;
break;
case C_AUTOARG:
case C_ARG:
t = coff_vis_autoparam;
break;
case C_AUTO:
t = coff_vis_auto;
break;
case C_LABEL:
case C_STAT:
t = coff_vis_int_def;
break;
case C_EXT:
if (sym->n_scnum == N_UNDEF)
{
if (sym->n_value)
t = coff_vis_common;
else
t = coff_vis_ext_ref;
}
else
t = coff_vis_ext_def;
break;
default:
abort ();
break;
}
visible->type = t;
return visible;
}
static int
do_define (int i, struct coff_scope *b)
{
static int symbol_index;
struct internal_syment *sym = &rawsyms[i].u.syment;
/* Define a symbol and attach to block b */
struct coff_symbol *s = empty_symbol ();
s->number = ++symbol_index;
s->name = sym->_n._n_nptr[1];
s->sfile = cur_sfile;
/* Glue onto the ofile list */
if (lofile >= 0)
{
if (ofile->symbol_list_tail)
ofile->symbol_list_tail->next_in_ofile_list = s;
else
ofile->symbol_list_head = s;
ofile->symbol_list_tail = s;
/* And the block list */
}
if (b->vars_tail)
b->vars_tail->next = s;
else
b->vars_head = s;
b->vars_tail = s;
b->nvars++;
s->type = do_type (i);
s->where = do_where (i);
s->visible = do_visible (i);
tindex[i] = s;
/* We remember the lowest address in each section for each source file */
if (s->where->where == coff_where_memory
&& s->type->type == coff_secdef_type)
{
struct coff_isection *is = cur_sfile->section + s->where->section->number;
if (!is->init)
{
is->low = s->where->offset;
is->high = s->where->offset + s->type->size;
is->init = 1;
is->parent = s->where->section;
}
}
if (s->type->type == coff_function_type)
last_function_symbol = s;
return i + sym->n_numaux + 1;
}
static
struct coff_ofile *
doit (void)
{
int i;
int infile = 0;
struct coff_ofile *head =
(struct coff_ofile *) xmalloc (sizeof (struct coff_ofile));
ofile = head;
head->source_head = 0;
head->source_tail = 0;
head->nsources = 0;
head->symbol_list_tail = 0;
head->symbol_list_head = 0;
do_sections_p1 (head);
push_scope (1);
for (i = 0; i < rawcount;)
{
struct internal_syment *sym = &rawsyms[i].u.syment;
switch (sym->n_sclass)
{
case C_FILE:
{
/* new source file announced */
struct coff_sfile *n =
(struct coff_sfile *) xmalloc (sizeof (struct coff_sfile));
n->section = (struct coff_isection *) xcalloc (sizeof (struct coff_isection), abfd->section_count + 1);
cur_sfile = n;
n->name = sym->_n._n_nptr[1];
n->next = 0;
if (infile)
{
pop_scope ();
}
infile = 1;
push_scope (1);
file_scope = n->scope = top_scope;
if (head->source_tail)
head->source_tail->next = n;
else
head->source_head = n;
head->source_tail = n;
head->nsources++;
i += sym->n_numaux + 1;
}
break;
case C_FCN:
{
char *name = sym->_n._n_nptr[1];
if (name[1] == 'b')
{
/* Function start */
push_scope (0);
last_function_type->u.function.code = top_scope;
top_scope->sec = ofile->sections + sym->n_scnum;
top_scope->offset = sym->n_value;
}
else
{
top_scope->size = sym->n_value - top_scope->offset + 1;
pop_scope ();
}
i += sym->n_numaux + 1;
}
break;
case C_BLOCK:
{
char *name = sym->_n._n_nptr[1];
if (name[1] == 'b')
{
/* Block start */
push_scope (1);
top_scope->sec = ofile->sections + sym->n_scnum;
top_scope->offset = sym->n_value;
}
else
{
top_scope->size = sym->n_value - top_scope->offset + 1;
pop_scope ();
}
i += sym->n_numaux + 1;
}
break;
case C_REGPARM:
case C_ARG:
i = do_define (i, last_function_symbol->type->u.function.parameters);
break;
case C_MOS:
case C_MOU:
case C_FIELD:
i = do_define (i, last_struct->u.astructdef.elements);
break;
case C_MOE:
i = do_define (i, last_enum->u.aenumdef.elements);
break;
case C_STRTAG:
case C_ENTAG:
case C_UNTAG:
/* Various definition */
i = do_define (i, top_scope);
break;
case C_EXT:
case C_LABEL:
i = do_define (i, file_scope);
break;
case C_STAT:
case C_TPDEF:
case C_AUTO:
case C_REG:
i = do_define (i, top_scope);
break;
default:
abort ();
case C_EOS:
i += sym->n_numaux + 1;
break;
}
}
do_sections_p2 (head);
return head;
}
struct coff_ofile *
coff_grok (bfd *inabfd)
{
long storage;
struct coff_ofile *p;
abfd = inabfd;
storage = bfd_get_symtab_upper_bound (abfd);
if (storage < 0)
bfd_fatal (abfd->filename);
syms = (asymbol **) xmalloc (storage);
symcount = bfd_canonicalize_symtab (abfd, syms);
if (symcount < 0)
bfd_fatal (abfd->filename);
rawsyms = obj_raw_syments (abfd);
rawcount = obj_raw_syment_count (abfd);;
tindex = (struct coff_symbol **) (xcalloc (sizeof (struct coff_symbol *), rawcount));
p = doit ();
return p;
}

View File

@@ -1,225 +0,0 @@
/* coffgrok.h
Copyright 2001 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define T_NULL 0
#define T_VOID 1 /* function argument (only used by compiler) */
#define T_CHAR 2 /* character */
#define T_SHORT 3 /* short integer */
#define T_INT 4 /* integer */
#define T_LONG 5 /* long integer */
#define T_FLOAT 6 /* floating point */
#define T_DOUBLE 7 /* double word */
#define T_STRUCT 8 /* structure */
#define T_UNION 9 /* union */
#define T_ENUM 10 /* enumeration */
#define T_MOE 11 /* member of enumeration*/
#define T_UCHAR 12 /* unsigned character */
#define T_USHORT 13 /* unsigned short */
#define T_UINT 14 /* unsigned integer */
#define T_ULONG 15 /* unsigned long */
#define T_LNGDBL 16 /* long double */
struct coff_reloc
{
int offset;
struct coff_symbol *symbol;
int addend;
};
struct coff_section
{
char *name;
int code;
int data;
int address;
int number; /* 0..n, .text = 0 */
int nrelocs;
int size;
struct coff_reloc *relocs;
struct bfd_section *bfd_section;
};
struct coff_ofile
{
int nsources;
struct coff_sfile *source_head;
struct coff_sfile *source_tail;
int nsections;
struct coff_section *sections;
struct coff_symbol *symbol_list_head;
struct coff_symbol *symbol_list_tail;
};
struct coff_isection {
int low;
int high;
int init;
struct coff_section *parent;
};
struct coff_sfile
{
char *name;
struct coff_scope *scope;
struct coff_sfile *next;
/* Vector which maps where in each output section
the input file has it's data */
struct coff_isection *section;
};
struct coff_type
{
int size;
enum
{
coff_pointer_type, coff_function_type, coff_array_type, coff_structdef_type, coff_basic_type,
coff_structref_type, coff_enumref_type, coff_enumdef_type, coff_secdef_type
} type;
union
{
struct
{
int address;
int size;
} asecdef;
struct
{
int isstruct;
struct coff_scope *elements;
int idx;
}
astructdef;
struct
{
struct coff_symbol *ref;
} astructref;
struct
{
struct coff_scope *elements;
int idx;
} aenumdef;
struct
{
struct coff_symbol *ref;
} aenumref;
struct
{
struct coff_type *points_to;
} pointer;
struct
{
int dim;
struct coff_type *array_of;
} array;
struct
{
struct coff_type *function_returns;
struct coff_scope *parameters;
struct coff_scope *code;
struct coff_line *lines;
} function;
int basic; /* One of T_VOID.. T_UINT */
} u;
};
struct coff_line
{
int nlines;
int *lines;
int *addresses;
};
struct coff_scope
{
struct coff_section *sec; /* What section */
int offset; /* where */
int size; /* How big */
struct coff_scope *parent; /* one up */
struct coff_scope *next; /*next along */
int nvars;
struct coff_symbol *vars_head; /* symbols */
struct coff_symbol *vars_tail;
struct coff_scope *list_head; /* children */
struct coff_scope *list_tail;
};
struct coff_visible
{
enum coff_vis_type
{
coff_vis_ext_def,
coff_vis_ext_ref,
coff_vis_int_def,
coff_vis_common,
coff_vis_auto,
coff_vis_register,
coff_vis_tag,
coff_vis_member_of_struct,
coff_vis_member_of_enum,
coff_vis_autoparam,
coff_vis_regparam,
} type;
};
struct coff_where
{
enum
{
coff_where_stack, coff_where_memory, coff_where_register, coff_where_unknown,
coff_where_strtag, coff_where_member_of_struct,
coff_where_member_of_enum, coff_where_entag, coff_where_typedef
} where;
int offset;
int bitoffset;
int bitsize;
struct coff_section *section;
};
struct coff_symbol
{
char *name;
int tag;
struct coff_type *type;
struct coff_where *where;
struct coff_visible *visible;
struct coff_symbol *next;
struct coff_symbol *next_in_ofile_list; /* For the ofile list */
int number;
int er_number;
struct coff_sfile *sfile;
};
struct coff_ofile *coff_grok PARAMS ((bfd *));

View File

@@ -1,207 +0,0 @@
/* config.in. Generated automatically from configure.in by autoheader. */
/* Define if using alloca.c. */
#undef C_ALLOCA
/* Define to empty if the keyword does not work. */
#undef const
/* 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 if you have a working `mmap' system call. */
#undef HAVE_MMAP
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
#undef HAVE_SYS_WAIT_H
/* Define as __inline if that's what the C compiler calls it. */
#undef inline
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
/* 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
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define if lex declares yytext as a char * by default, not a char[]. */
#undef YYTEXT_POINTER
/* Define if you have the __argz_count function. */
#undef HAVE___ARGZ_COUNT
/* Define if you have the __argz_next function. */
#undef HAVE___ARGZ_NEXT
/* Define if you have the __argz_stringify function. */
#undef HAVE___ARGZ_STRINGIFY
/* Define if you have the dcgettext function. */
#undef HAVE_DCGETTEXT
/* Define if you have the getc_unlocked function. */
#undef HAVE_GETC_UNLOCKED
/* Define if you have the getcwd function. */
#undef HAVE_GETCWD
/* Define if you have the getpagesize function. */
#undef HAVE_GETPAGESIZE
/* Define if you have the munmap function. */
#undef HAVE_MUNMAP
/* Define if you have the putenv function. */
#undef HAVE_PUTENV
/* Define if you have the sbrk function. */
#undef HAVE_SBRK
/* Define if you have the setenv function. */
#undef HAVE_SETENV
/* Define if you have the setlocale function. */
#undef HAVE_SETLOCALE
/* Define if you have the setmode function. */
#undef HAVE_SETMODE
/* Define if you have the stpcpy function. */
#undef HAVE_STPCPY
/* Define if you have the strcasecmp function. */
#undef HAVE_STRCASECMP
/* Define if you have the strchr function. */
#undef HAVE_STRCHR
/* Define if you have the strcoll function. */
#undef HAVE_STRCOLL
/* Define if you have the utimes function. */
#undef HAVE_UTIMES
/* Define if you have the <argz.h> header file. */
#undef HAVE_ARGZ_H
/* Define if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
/* Define if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
/* Define if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
/* Define if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H
/* Define if you have the <nl_types.h> header file. */
#undef HAVE_NL_TYPES_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/file.h> header file. */
#undef HAVE_SYS_FILE_H
/* Define if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
/* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define if you have the <values.h> header file. */
#undef HAVE_VALUES_H
/* Name of package */
#undef PACKAGE
/* Version number of package */
#undef VERSION
/* Define if you have the stpcpy function */
#undef HAVE_STPCPY
/* Define if your locale.h file contains LC_MESSAGES. */
#undef HAVE_LC_MESSAGES
/* Define to 1 if NLS is requested */
#undef ENABLE_NLS
/* Define as 1 if you have gettext and don't want to use GNU gettext. */
#undef HAVE_GETTEXT
/* Does the platform use an executable suffix? */
#undef HAVE_EXECUTABLE_SUFFIX
/* Suffix used for executables, if any. */
#undef EXECUTABLE_SUFFIX
/* Is fopen64 available? */
#undef HAVE_FOPEN64
/* Is stat64 available? */
#undef HAVE_STAT64
/* Enable LFS */
#undef _LARGEFILE64_SOURCE
/* Is the type time_t defined in <time.h>? */
#undef HAVE_TIME_T_IN_TIME_H
/* Is the type time_t defined in <sys/types.h>? */
#undef HAVE_TIME_T_IN_TYPES_H
/* Does <utime.h> define struct utimbuf? */
#undef HAVE_GOOD_UTIME_H
/* Define if fprintf is not declared in system header files. */
#undef NEED_DECLARATION_FPRINTF
/* Define if strstr is not declared in system header files. */
#undef NEED_DECLARATION_STRSTR
/* Define if sbrk is not declared in system header files. */
#undef NEED_DECLARATION_SBRK
/* Define if getenv is not declared in system header files. */
#undef NEED_DECLARATION_GETENV
/* Define if environ is not declared in system header files. */
#undef NEED_DECLARATION_ENVIRON
/* Use b modifier when opening binary files? */
#undef USE_BINARY_FOPEN
/* Configured target name. */
#undef TARGET
/* Define to 1 if user symbol names have a leading underscore, 0 if not. */
#undef TARGET_PREPENDS_UNDERSCORE

6125
binutils/configure vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1,76 +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@rmi.de)
$!
$arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2
$arch = f$element(arch_indx,"|","|VAX|Alpha|")
$!
$!
$! 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-in
$!
$ edit/tpu/nojournal/nosection/nodisplay/command=sys$input -
[]makefile.vms-in /output=[]makefile.vms
$DECK
!
! Get VERSION from configure.in
!
mfile := CREATE_BUFFER("mfile", "CONFIGURE.IN");
rang := CREATE_RANGE(BEGINNING_OF(mfile), END_OF(mfile));
match_pos := SEARCH_QUIETLY('AM_INIT_AUTOMAKE(binutils, ', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
vers := CURRENT_LINE-")";
ELSE;
vers := "unknown";
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);
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
COPY_TEXT(vers);
WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file"));
QUIT
$ EOD
$ write sys$output "Created `makefile.vms'"

View File

@@ -1,374 +0,0 @@
dnl Process this file with autoconf to produce a configure script.
dnl
AC_PREREQ(2.13)
AC_INIT(ar.c)
AC_CANONICAL_SYSTEM
AC_ISC_POSIX
changequote(,)dnl
BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOMAKE.*,[ ]*\([^ ]*\)[ ]*).*/\1/p' < ${srcdir}/../bfd/configure.in`
changequote([,])dnl
AM_INIT_AUTOMAKE(binutils, ${BFD_VERSION})
AM_PROG_LIBTOOL
AC_ARG_ENABLE(targets,
[ --enable-targets alternative target configurations],
[case "${enableval}" in
yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
;;
no) enable_targets= ;;
*) enable_targets=$enableval ;;
esac])dnl
AC_ARG_ENABLE(commonbfdlib,
[ --enable-commonbfdlib build shared BFD/opcodes/libiberty library],
[case "${enableval}" in
yes) commonbfdlib=true ;;
no) commonbfdlib=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;;
esac])dnl
build_warnings="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
AC_ARG_ENABLE(build-warnings,
[ --enable-build-warnings Enable build-time compiler warnings if gcc is used],
[case "${enableval}" in
yes) ;;
no) build_warnings="-w";;
,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
build_warnings="${build_warnings} ${t}";;
*,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
build_warnings="${t} ${build_warnings}";;
*) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
esac
if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
echo "Setting warning flags = $build_warnings" 6>&1
fi])dnl
WARN_CFLAGS=""
if test "x${build_warnings}" != x -a "x$GCC" = xyes ; then
WARN_CFLAGS="${build_warnings}"
fi
AC_SUBST(WARN_CFLAGS)
AM_CONFIG_HEADER(config.h:config.in)
if test -z "$target" ; then
AC_MSG_ERROR(Unrecognized target system type; please check config.sub.)
fi
if test -z "$host" ; then
AC_MSG_ERROR(Unrecognized host system type; please check config.sub.)
fi
AC_PROG_CC
AC_PROG_YACC
AM_PROG_LEX
ALL_LINGUAS="fr tr ja es sv da zh_CN ru"
CY_GNU_GETTEXT
AM_MAINTAINER_MODE
AC_EXEEXT
if test -n "$EXEEXT"; then
AC_DEFINE(HAVE_EXECUTABLE_SUFFIX, 1,
[Does the platform use an executable suffix?])
fi
AC_DEFINE_UNQUOTED(EXECUTABLE_SUFFIX, "${EXEEXT}",
[Suffix used for executables, if any.])
# host-specific stuff:
HDEFINES=
. ${srcdir}/../bfd/configure.host
AC_SUBST(HDEFINES)
AR=${AR-ar}
AC_SUBST(AR)
AC_PROG_RANLIB
AC_PROG_INSTALL
BFD_CC_FOR_BUILD
DEMANGLER_NAME=c++filt
case "${host}" in
*-*-go32* | *-*-msdos*)
DEMANGLER_NAME=cxxfilt
esac
AC_SUBST(DEMANGLER_NAME)
AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h fcntl.h sys/file.h)
AC_HEADER_SYS_WAIT
AC_FUNC_ALLOCA
AC_CHECK_FUNCS(sbrk utimes setmode getc_unlocked strcoll)
# Check whether fopen64 is available and whether _LARGEFILE64_SOURCE
# needs to be defined for it
AC_MSG_CHECKING([for fopen64])
AC_CACHE_VAL(bu_cv_have_fopen64,
[AC_TRY_LINK([#include <stdio.h>], [FILE *f = fopen64 ("/tmp/foo","r");],
bu_cv_have_fopen64=yes,
[saved_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
AC_TRY_LINK([#include <stdio.h>], [FILE *f = fopen64 ("/tmp/foo","r");],
bu_cv_have_fopen64="need -D_LARGEFILE64_SOURCE",
bu_cv_have_fopen64=no)
CPPFLAGS=$saved_CPPFLAGS])])
AC_MSG_RESULT($bu_cv_have_fopen64)
if test "$bu_cv_have_fopen64" != no; then
AC_DEFINE([HAVE_FOPEN64], 1,
[Is fopen64 available?])
fi
AC_MSG_CHECKING([for stat64])
AC_CACHE_VAL(bu_cv_have_stat64,
[AC_TRY_LINK([#include <sys/stat.h>], [struct stat64 st; stat64 ("/tmp/foo", &st);],
bu_cv_have_stat64=yes,
[saved_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
AC_TRY_LINK([#include <sys/stat.h>], [struct stat64 st; stat64 ("/tmp/foo", &st);],
bu_cv_have_stat64="need -D_LARGEFILE64_SOURCE",
bu_cv_have_stat64=no)
CPPFLAGS=$saved_CPPFLAGS])])
AC_MSG_RESULT($bu_cv_have_stat64)
if test "$bu_cv_have_stat64" != no; then
AC_DEFINE([HAVE_STAT64], 1,
[Is stat64 available?])
fi
if test "$bu_cv_have_fopen64" = "need -D_LARGEFILE64_SOURCE" \
|| test "$bu_cv_have_stat64" = "need -D_LARGEFILE64_SOURCE"; then
AC_DEFINE([_LARGEFILE64_SOURCE], 1,
[Enable LFS])
CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
fi
# Some systems have frexp only in -lm, not in -lc.
AC_SEARCH_LIBS(frexp, m)
AC_MSG_CHECKING(for time_t in time.h)
AC_CACHE_VAL(bu_cv_decl_time_t_time_h,
[AC_TRY_COMPILE([#include <time.h>], [time_t i;],
bu_cv_decl_time_t_time_h=yes, bu_cv_decl_time_t_time_h=no)])
AC_MSG_RESULT($bu_cv_decl_time_t_time_h)
if test $bu_cv_decl_time_t_time_h = yes; then
AC_DEFINE([HAVE_TIME_T_IN_TIME_H], 1,
[Is the type time_t defined in <time.h>?])
fi
AC_MSG_CHECKING(for time_t in sys/types.h)
AC_CACHE_VAL(bu_cv_decl_time_t_types_h,
[AC_TRY_COMPILE([#include <sys/types.h>], [time_t i;],
bu_cv_decl_time_t_types_h=yes, bu_cv_decl_time_t_types_h=no)])
AC_MSG_RESULT($bu_cv_decl_time_t_types_h)
if test $bu_cv_decl_time_t_types_h = yes; then
AC_DEFINE([HAVE_TIME_T_IN_TYPES_H], 1,
[Is the type time_t defined in <sys/types.h>?])
fi
# Under Next 3.2 <utime.h> apparently does not define struct utimbuf
# by default.
AC_MSG_CHECKING([for utime.h])
AC_CACHE_VAL(bu_cv_header_utime_h,
[AC_TRY_COMPILE([#include <sys/types.h>
#ifdef HAVE_TIME_H
#include <time.h>
#endif
#include <utime.h>],
[struct utimbuf s;],
bu_cv_header_utime_h=yes, bu_cv_header_utime_h=no)])
AC_MSG_RESULT($bu_cv_header_utime_h)
if test $bu_cv_header_utime_h = yes; then
AC_DEFINE(HAVE_GOOD_UTIME_H, 1, [Does <utime.h> define struct utimbuf?])
fi
BFD_NEED_DECLARATION(fprintf)
BFD_NEED_DECLARATION(strstr)
BFD_NEED_DECLARATION(sbrk)
BFD_NEED_DECLARATION(getenv)
BFD_NEED_DECLARATION(environ)
BFD_BINARY_FOPEN
# target-specific stuff:
# Canonicalize the secondary target names.
if test -n "$enable_targets"; then
for targ in `echo $enable_targets | sed 's/,/ /g'`
do
result=`$ac_config_sub $targ 2>/dev/null`
if test -n "$result"; then
canon_targets="$canon_targets $result"
else
# Allow targets that config.sub doesn't recognize, like "all".
canon_targets="$canon_targets $targ"
fi
done
fi
all_targets=false
BUILD_NLMCONV=
NLMCONV_DEFS=
BUILD_SRCONV=
BUILD_DLLTOOL=
DLLTOOL_DEFS=
BUILD_WINDRES=
BUILD_DLLWRAP=
BUILD_MISC=
OBJDUMP_DEFS=
for targ in $target $canon_targets
do
if test "x$targ" = "xall"; then
all_targets=true
BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
BUILD_SRCONV='$(SRCONV_PROG)'
NLMCONV_DEFS="-DNLMCONV_I386 -DNLMCONV_ALPHA -DNLMCONV_POWERPC -DNLMCONV_SPARC"
else
case $targ in
changequote(,)dnl
i[3-7]86*-*-netware*)
changequote([,])dnl
BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_I386"
;;
alpha*-*-netware*)
BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_ALPHA"
;;
powerpc*-*-netware*)
BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_POWERPC"
;;
sparc*-*-netware*)
BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_SPARC"
;;
esac
case $targ in
*-*-hms*) BUILD_SRCONV='$(SRCONV_PROG)' ;;
esac
case $targ in
arm-epoc-pe*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_EPOC -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
arm-*-pe* | arm-*-wince)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
thumb-*-pe*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
arm*-* | xscale-* | strongarm-* | d10v-*)
OBJDUMP_DEFS="-DDISASSEMBLER_NEEDS_RELOCS"
;;
changequote(,)dnl
i[3-7]86-*-pe* | i[3-7]86-*-cygwin* | i[3-7]86-*-mingw32** | i[3-7]86-*-netbsdpe*)
changequote([,])dnl
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)'
;;
changequote(,)dnl
i[3-7]86-*-interix)
changequote([,])dnl
BUILD_DLLTOOL='$(DLLTOOL_PROG)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
;;
changequote(,)dnl
powerpc*-aix5.[01])
changequote([,])dnl
;;
powerpc*-aix5.*)
OBJDUMP_DEFS="-DAIX_WEAK_SUPPORT"
;;
powerpc*-*-pe* | powerpc*-*-cygwin*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
sh*-*-pe)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_SH"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
mips*-*-pe)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MIPS"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
mcore-*-pe)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
mcore-*-elf)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE_ELF"
;;
c4x-*-* | tic4x-*-*)
OBJDUMP_DEFS="$OBJDUMP_DEFS -DSKIP_ZEROES=32"
;;
ia64-*-*)
OBJDUMP_DEFS="$OBJDUMP_DEFS -DSKIP_ZEROES=16"
;;
esac
fi
done
if test "${with_windres+set}" = set; then
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
fi
AC_SUBST(NLMCONV_DEFS)
AC_SUBST(BUILD_NLMCONV)
AC_SUBST(BUILD_SRCONV)
AC_SUBST(BUILD_DLLTOOL)
AC_SUBST(DLLTOOL_DEFS)
AC_SUBST(BUILD_WINDRES)
AC_SUBST(BUILD_DLLWRAP)
AC_SUBST(BUILD_MISC)
AC_SUBST(OBJDUMP_DEFS)
AC_DEFINE_UNQUOTED(TARGET, "${target}", [Configured target name.])
targ=$target
. $srcdir/../bfd/config.bfd
if test "x$targ_underscore" = "xyes"; then
UNDERSCORE=1
else
UNDERSCORE=0
fi
AC_DEFINE_UNQUOTED(TARGET_PREPENDS_UNDERSCORE, $UNDERSCORE,
[Define to 1 if user symbol names have a leading underscore, 0 if not.])
# Emulation
for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'`
do
# Canonicalize the secondary target names.
result=`$ac_config_sub $targ_alias 2>/dev/null`
if test -n "$result"; then
targ=$result
else
targ=$targ_alias
fi
. ${srcdir}/configure.tgt
EMULATION=$targ_emul
EMULATION_VECTOR=$targ_emul_vector
done
AC_SUBST(EMULATION)
AC_SUBST(EMULATION_VECTOR)
AC_OUTPUT(Makefile doc/Makefile po/Makefile.in:po/Make-in,
[
case "x$CONFIG_FILES" in
*) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;;
esac
])

View File

@@ -1,26 +0,0 @@
# This is the binutils target specific file. This is invoked by the
# autoconf generated configure script. Putting it in a separate shell
# file lets us skip running autoconf when modifying target specific
# information.
# This file switches on the shell variable ${targ}, and sets the
# following shell variables:
# targ_emul name of emulation to use
# targ_emul_vector name of vector to use
case "${targ}" in
powerpc-*-aix5* | rs6000-*-aix5*)
targ_emul=aix
targ_emul_vector=bin_aix5_emulation
;;
powerpc-*-aix4.3* | rs6000-*-aix4.3*)
targ_emul=aix
targ_emul_vector=bin_aix_emulation
;;
*)
targ_emul=vanilla
targ_emul_vector=bin_vanilla_emulation
;;
esac

View File

@@ -1,291 +0,0 @@
/* Demangler for GNU C++ - main program
Copyright 1989, 1991, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.uucp)
Rewritten by Fred Fish (fnf@cygnus.com) for ARM and Lucid demangling
Modified by Satish Pai (pai@apollo.hp.com) for HP demangling
This file is part of GCC.
GCC 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.
GCC 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 GCC; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include "config.h"
#include "bfd.h"
#include "bucomm.h"
#include "libiberty.h"
#include "demangle.h"
#include "getopt.h"
#include "safe-ctype.h"
static int flags = DMGL_PARAMS | DMGL_ANSI | DMGL_VERBOSE;
static void demangle_it (char *);
static void usage (FILE *, int) ATTRIBUTE_NORETURN;
static void print_demangler_list (FILE *);
static void
demangle_it (char *mangled_name)
{
char *result;
/* For command line args, also try to demangle type encodings. */
result = cplus_demangle (mangled_name, flags | DMGL_TYPES);
if (result == NULL)
{
printf ("%s\n", mangled_name);
}
else
{
printf ("%s\n", result);
free (result);
}
}
static void
print_demangler_list (FILE *stream)
{
const struct demangler_engine *demangler;
fprintf (stream, "{%s", libiberty_demanglers->demangling_style_name);
for (demangler = libiberty_demanglers + 1;
demangler->demangling_style != unknown_demangling;
++demangler)
fprintf (stream, ",%s", demangler->demangling_style_name);
fprintf (stream, "}");
}
static void
usage (FILE *stream, int status)
{
fprintf (stream, "\
Usage: %s [-_] [-n] [--strip-underscores] [--no-strip-underscores]\n\
[-p] [--no-params]\n",
program_name);
fprintf (stream, "\
[-s ");
print_demangler_list (stream);
fprintf (stream, "]\n");
fprintf (stream, "\
[--format ");
print_demangler_list (stream);
fprintf (stream, "]\n");
fprintf (stream, "\
[--help] [--version] [arg...]\n");
exit (status);
}
#define MBUF_SIZE 32767
char mbuffer[MBUF_SIZE];
int strip_underscore = 0;
static const struct option long_options[] = {
{"strip-underscores", no_argument, 0, '_'},
{"format", required_argument, 0, 's'},
{"help", no_argument, 0, 'h'},
{"no-params", no_argument, 0, 'p'},
{"no-strip-underscores", no_argument, 0, 'n'},
{"version", no_argument, 0, 'v'},
{0, no_argument, 0, 0}
};
static const char *standard_symbol_characters (void);
static const char *hp_symbol_characters (void);
/* Return the string of non-alnum characters that may occur
as a valid symbol component, in the standard assembler symbol
syntax. */
static const char *
standard_symbol_characters (void)
{
return "_$.";
}
/* Return the string of non-alnum characters that may occur
as a valid symbol name component in an HP object file.
Note that, since HP's compiler generates object code straight from
C++ source, without going through an assembler, its mangled
identifiers can use all sorts of characters that no assembler would
tolerate, so the alphabet this function creates is a little odd.
Here are some sample mangled identifiers offered by HP:
typeid*__XT24AddressIndExpClassMember_
[Vftptr]key:__dt__32OrdinaryCompareIndExpClassMemberFv
__ct__Q2_9Elf64_Dyn18{unnamed.union.#1}Fv
This still seems really weird to me, since nowhere else in this
file is there anything to recognize curly brackets, parens, etc.
I've talked with Srikanth <srikanth@cup.hp.com>, and he assures me
this is right, but I still strongly suspect that there's a
misunderstanding here.
If we decide it's better for c++filt to use HP's assembler syntax
to scrape identifiers out of its input, here's the definition of
the symbol name syntax from the HP assembler manual:
Symbols are composed of uppercase and lowercase letters, decimal
digits, dollar symbol, period (.), ampersand (&), pound sign(#) and
underscore (_). A symbol can begin with a letter, digit underscore or
dollar sign. If a symbol begins with a digit, it must contain a
non-digit character.
So have fun. */
static const char *
hp_symbol_characters (void)
{
return "_$.<>#,*&[]:(){}";
}
extern int main (int, char **);
int
main (int argc, char **argv)
{
char *result;
int c;
const char *valid_symbols;
enum demangling_styles style = auto_demangling;
program_name = argv[0];
xmalloc_set_program_name (program_name);
strip_underscore = TARGET_PREPENDS_UNDERSCORE;
while ((c = getopt_long (argc, argv, "_nps:", long_options, (int *) 0)) != EOF)
{
switch (c)
{
case '?':
usage (stderr, 1);
break;
case 'h':
usage (stdout, 0);
case 'n':
strip_underscore = 0;
break;
case 'p':
flags &= ~ DMGL_PARAMS;
break;
case 'v':
print_version ("c++filt");
return (0);
case '_':
strip_underscore = 1;
break;
case 's':
{
style = cplus_demangle_name_to_style (optarg);
if (style == unknown_demangling)
{
fprintf (stderr, "%s: unknown demangling style `%s'\n",
program_name, optarg);
return (1);
}
else
cplus_demangle_set_style (style);
}
break;
}
}
if (optind < argc)
{
for ( ; optind < argc; optind++)
{
demangle_it (argv[optind]);
}
}
else
{
switch (current_demangling_style)
{
case gnu_demangling:
case lucid_demangling:
case arm_demangling:
case java_demangling:
case edg_demangling:
case gnat_demangling:
case gnu_v3_demangling:
case auto_demangling:
valid_symbols = standard_symbol_characters ();
break;
case hp_demangling:
valid_symbols = hp_symbol_characters ();
break;
default:
/* Folks should explicitly indicate the appropriate alphabet for
each demangling. Providing a default would allow the
question to go unconsidered. */
fatal ("Internal error: no symbol alphabet for current style");
}
for (;;)
{
int i = 0;
c = getchar ();
/* Try to read a label. */
while (c != EOF && (ISALNUM (c) || strchr (valid_symbols, c)))
{
if (i >= MBUF_SIZE-1)
break;
mbuffer[i++] = c;
c = getchar ();
}
if (i > 0)
{
int skip_first = 0;
mbuffer[i] = 0;
if (mbuffer[0] == '.' || mbuffer[0] == '$')
++skip_first;
if (strip_underscore && mbuffer[skip_first] == '_')
++skip_first;
if (skip_first > i)
skip_first = i;
flags |= (int) style;
result = cplus_demangle (mbuffer + skip_first, flags);
if (result)
{
if (mbuffer[0] == '.')
putc ('.', stdout);
fputs (result, stdout);
free (result);
}
else
fputs (mbuffer, stdout);
fflush (stdout);
}
if (c == EOF)
break;
putchar (c);
fflush (stdout);
}
}
return (0);
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,792 +0,0 @@
/* debug.h -- Describe generic debugging information.
Copyright 1995, 1996, 2002, 2003 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#ifndef DEBUG_H
#define DEBUG_H
/* This header file describes a generic debugging information format.
We may eventually have readers which convert different formats into
this generic format, and writers which write it out. The initial
impetus for this was writing a converter from stabs to HP IEEE-695
debugging format. */
/* Different kinds of types. */
enum debug_type_kind
{
/* Not used. */
DEBUG_KIND_ILLEGAL,
/* Indirect via a pointer. */
DEBUG_KIND_INDIRECT,
/* Void. */
DEBUG_KIND_VOID,
/* Integer. */
DEBUG_KIND_INT,
/* Floating point. */
DEBUG_KIND_FLOAT,
/* Complex. */
DEBUG_KIND_COMPLEX,
/* Boolean. */
DEBUG_KIND_BOOL,
/* Struct. */
DEBUG_KIND_STRUCT,
/* Union. */
DEBUG_KIND_UNION,
/* Class. */
DEBUG_KIND_CLASS,
/* Union class (can this really happen?). */
DEBUG_KIND_UNION_CLASS,
/* Enumeration type. */
DEBUG_KIND_ENUM,
/* Pointer. */
DEBUG_KIND_POINTER,
/* Function. */
DEBUG_KIND_FUNCTION,
/* Reference. */
DEBUG_KIND_REFERENCE,
/* Range. */
DEBUG_KIND_RANGE,
/* Array. */
DEBUG_KIND_ARRAY,
/* Set. */
DEBUG_KIND_SET,
/* Based pointer. */
DEBUG_KIND_OFFSET,
/* Method. */
DEBUG_KIND_METHOD,
/* Const qualified type. */
DEBUG_KIND_CONST,
/* Volatile qualified type. */
DEBUG_KIND_VOLATILE,
/* Named type. */
DEBUG_KIND_NAMED,
/* Tagged type. */
DEBUG_KIND_TAGGED
};
/* Different kinds of variables. */
enum debug_var_kind
{
/* Not used. */
DEBUG_VAR_ILLEGAL,
/* A global variable. */
DEBUG_GLOBAL,
/* A static variable. */
DEBUG_STATIC,
/* A local static variable. */
DEBUG_LOCAL_STATIC,
/* A local variable. */
DEBUG_LOCAL,
/* A register variable. */
DEBUG_REGISTER
};
/* Different kinds of function parameters. */
enum debug_parm_kind
{
/* Not used. */
DEBUG_PARM_ILLEGAL,
/* A stack based parameter. */
DEBUG_PARM_STACK,
/* A register parameter. */
DEBUG_PARM_REG,
/* A stack based reference parameter. */
DEBUG_PARM_REFERENCE,
/* A register reference parameter. */
DEBUG_PARM_REF_REG
};
/* Different kinds of visibility. */
enum debug_visibility
{
/* A public field (e.g., a field in a C struct). */
DEBUG_VISIBILITY_PUBLIC,
/* A protected field. */
DEBUG_VISIBILITY_PROTECTED,
/* A private field. */
DEBUG_VISIBILITY_PRIVATE,
/* A field which should be ignored. */
DEBUG_VISIBILITY_IGNORE
};
/* A type. */
typedef struct debug_type *debug_type;
#define DEBUG_TYPE_NULL ((debug_type) NULL)
/* A field in a struct or union. */
typedef struct debug_field *debug_field;
#define DEBUG_FIELD_NULL ((debug_field) NULL)
/* A base class for an object. */
typedef struct debug_baseclass *debug_baseclass;
#define DEBUG_BASECLASS_NULL ((debug_baseclass) NULL)
/* A method of an object. */
typedef struct debug_method *debug_method;
#define DEBUG_METHOD_NULL ((debug_method) NULL)
/* The arguments to a method function of an object. These indicate
which method to run. */
typedef struct debug_method_variant *debug_method_variant;
#define DEBUG_METHOD_VARIANT_NULL ((debug_method_variant) NULL)
/* This structure is passed to debug_write. It holds function
pointers that debug_write will call based on the accumulated
debugging information. */
struct debug_write_fns
{
/* This is called at the start of each new compilation unit with the
name of the main file in the new unit. */
bfd_boolean (*start_compilation_unit) (void *, const char *);
/* This is called at the start of each source file within a
compilation unit, before outputting any global information for
that file. The argument is the name of the file. */
bfd_boolean (*start_source) (void *, const char *);
/* Each writer must keep a stack of types. */
/* Push an empty type onto the type stack. This type can appear if
there is a reference to a type which is never defined. */
bfd_boolean (*empty_type) (void *);
/* Push a void type onto the type stack. */
bfd_boolean (*void_type) (void *);
/* Push an integer type onto the type stack, given the size and
whether it is unsigned. */
bfd_boolean (*int_type) (void *, unsigned int, bfd_boolean);
/* Push a floating type onto the type stack, given the size. */
bfd_boolean (*float_type) (void *, unsigned int);
/* Push a complex type onto the type stack, given the size. */
bfd_boolean (*complex_type) (void *, unsigned int);
/* Push a bfd_boolean type onto the type stack, given the size. */
bfd_boolean (*bool_type) (void *, unsigned int);
/* Push an enum type onto the type stack, given the tag, a NULL
terminated array of names and the associated values. If there is
no tag, the tag argument will be NULL. If this is an undefined
enum, the names and values arguments will be NULL. */
bfd_boolean (*enum_type)
(void *, const char *, const char **, bfd_signed_vma *);
/* Pop the top type on the type stack, and push a pointer to that
type onto the type stack. */
bfd_boolean (*pointer_type) (void *);
/* Push a function type onto the type stack. The second argument
indicates the number of argument types that have been pushed onto
the stack. If the number of argument types is passed as -1, then
the argument types of the function are unknown, and no types have
been pushed onto the stack. The third argument is TRUE if the
function takes a variable number of arguments. The return type
of the function is pushed onto the type stack below the argument
types, if any. */
bfd_boolean (*function_type) (void *, int, bfd_boolean);
/* Pop the top type on the type stack, and push a reference to that
type onto the type stack. */
bfd_boolean (*reference_type) (void *);
/* Pop the top type on the type stack, and push a range of that type
with the given lower and upper bounds onto the type stack. */
bfd_boolean (*range_type) (void *, bfd_signed_vma, bfd_signed_vma);
/* Push an array type onto the type stack. The top type on the type
stack is the range, and the next type on the type stack is the
element type. These should be popped before the array type is
pushed. The arguments are the lower bound, the upper bound, and
whether the array is a string. */
bfd_boolean (*array_type)
(void *, bfd_signed_vma, bfd_signed_vma, bfd_boolean);
/* Pop the top type on the type stack, and push a set of that type
onto the type stack. The argument indicates whether this set is
a bitstring. */
bfd_boolean (*set_type) (void *, bfd_boolean);
/* Push an offset type onto the type stack. The top type on the
type stack is the target type, and the next type on the type
stack is the base type. These should be popped before the offset
type is pushed. */
bfd_boolean (*offset_type) (void *);
/* Push a method type onto the type stack. If the second argument
is TRUE, the top type on the stack is the class to which the
method belongs; otherwise, the class must be determined by the
class to which the method is attached. The third argument is the
number of argument types; these are pushed onto the type stack in
reverse order (the first type popped is the last argument to the
method). A value of -1 for the third argument means that no
argument information is available. The fourth argument is TRUE
if the function takes a variable number of arguments. The next
type on the type stack below the domain and the argument types is
the return type of the method. All these types must be popped,
and then the method type must be pushed. */
bfd_boolean (*method_type) (void *, bfd_boolean, int, bfd_boolean);
/* Pop the top type off the type stack, and push a const qualified
version of that type onto the type stack. */
bfd_boolean (*const_type) (void *);
/* Pop the top type off the type stack, and push a volatile
qualified version of that type onto the type stack. */
bfd_boolean (*volatile_type) (void *);
/* Start building a struct. This is followed by calls to the
struct_field function, and finished by a call to the
end_struct_type function. The second argument is the tag; this
will be NULL if there isn't one. If the second argument is NULL,
the third argument is a constant identifying this struct for use
with tag_type. The fourth argument is TRUE for a struct, FALSE
for a union. The fifth argument is the size. If this is an
undefined struct or union, the size will be 0 and struct_field
will not be called before end_struct_type is called. */
bfd_boolean (*start_struct_type)
(void *, const char *, unsigned int, bfd_boolean, unsigned int);
/* Add a field to the struct type currently being built. The type
of the field should be popped off the type stack. The arguments
are the name, the bit position, the bit size (may be zero if the
field is not packed), and the visibility. */
bfd_boolean (*struct_field)
(void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
/* Finish building a struct, and push it onto the type stack. */
bfd_boolean (*end_struct_type) (void *);
/* Start building a class. This is followed by calls to several
functions: struct_field, class_static_member, class_baseclass,
class_start_method, class_method_variant,
class_static_method_variant, and class_end_method. The class is
finished by a call to end_class_type. The first five arguments
are the same as for start_struct_type. The sixth argument is
TRUE if there is a virtual function table; if there is, the
seventh argument is TRUE if the virtual function table can be
found in the type itself, and is FALSE if the type of the object
holding the virtual function table should be popped from the type
stack. */
bfd_boolean (*start_class_type)
(void *, const char *, unsigned int, bfd_boolean, unsigned int,
bfd_boolean, bfd_boolean);
/* Add a static member to the class currently being built. The
arguments are the field name, the physical name, and the
visibility. The type must be popped off the type stack. */
bfd_boolean (*class_static_member)
(void *, const char *, const char *, enum debug_visibility);
/* Add a baseclass to the class currently being built. The type of
the baseclass must be popped off the type stack. The arguments
are the bit position, whether the class is virtual, and the
visibility. */
bfd_boolean (*class_baseclass)
(void *, bfd_vma, bfd_boolean, enum debug_visibility);
/* Start adding a method to the class currently being built. This
is followed by calls to class_method_variant and
class_static_method_variant to describe different variants of the
method which take different arguments. The method is finished
with a call to class_end_method. The argument is the method
name. */
bfd_boolean (*class_start_method) (void *, const char *);
/* Describe a variant to the class method currently being built.
The type of the variant must be popped off the type stack. The
second argument is the physical name of the function. The
following arguments are the visibility, whether the variant is
const, whether the variant is volatile, the offset in the virtual
function table, and whether the context is on the type stack
(below the variant type). */
bfd_boolean (*class_method_variant)
(void *, const char *, enum debug_visibility, bfd_boolean,
bfd_boolean, bfd_vma, bfd_boolean);
/* Describe a static variant to the class method currently being
built. The arguments are the same as for class_method_variant,
except that the last two arguments are omitted. The type of the
variant must be popped off the type stack. */
bfd_boolean (*class_static_method_variant)
(void *, const char *, enum debug_visibility, bfd_boolean,
bfd_boolean);
/* Finish describing a class method. */
bfd_boolean (*class_end_method) (void *);
/* Finish describing a class, and push it onto the type stack. */
bfd_boolean (*end_class_type) (void *);
/* Push a type on the stack which was given a name by an earlier
call to typdef. */
bfd_boolean (*typedef_type) (void *, const char *);
/* Push a tagged type on the stack which was defined earlier. If
the second argument is not NULL, the type was defined by a call
to tag. If the second argument is NULL, the type was defined by
a call to start_struct_type or start_class_type with a tag of
NULL and the number of the third argument. Either way, the
fourth argument is the tag kind. Note that this may be called
for a struct (class) being defined, in between the call to
start_struct_type (start_class_type) and the call to
end_struct_type (end_class_type). */
bfd_boolean (*tag_type)
(void *, const char *, unsigned int, enum debug_type_kind);
/* Pop the type stack, and typedef it to the given name. */
bfd_boolean (*typdef) (void *, const char *);
/* Pop the type stack, and declare it as a tagged struct or union or
enum or whatever. The tag passed down here is redundant, since
was also passed when enum_type, start_struct_type, or
start_class_type was called. */
bfd_boolean (*tag) (void *, const char *);
/* This is called to record a named integer constant. */
bfd_boolean (*int_constant) (void *, const char *, bfd_vma);
/* This is called to record a named floating point constant. */
bfd_boolean (*float_constant) (void *, const char *, double);
/* This is called to record a typed integer constant. The type is
popped off the type stack. */
bfd_boolean (*typed_constant) (void *, const char *, bfd_vma);
/* This is called to record a variable. The type is popped off the
type stack. */
bfd_boolean (*variable)
(void *, const char *, enum debug_var_kind, bfd_vma);
/* Start writing out a function. The return type must be popped off
the stack. The bfd_boolean is TRUE if the function is global. This
is followed by calls to function_parameter, followed by block
information. */
bfd_boolean (*start_function) (void *, const char *, bfd_boolean);
/* Record a function parameter for the current function. The type
must be popped off the stack. */
bfd_boolean (*function_parameter)
(void *, const char *, enum debug_parm_kind, bfd_vma);
/* Start writing out a block. There is at least one top level block
per function. Blocks may be nested. The argument is the
starting address of the block. */
bfd_boolean (*start_block) (void *, bfd_vma);
/* Finish writing out a block. The argument is the ending address
of the block. */
bfd_boolean (*end_block) (void *, bfd_vma);
/* Finish writing out a function. */
bfd_boolean (*end_function) (void *);
/* Record line number information for the current compilation unit. */
bfd_boolean (*lineno) (void *, const char *, unsigned long, bfd_vma);
};
/* Exported functions. */
/* The first argument to most of these functions is a handle. This
handle is returned by the debug_init function. The purpose of the
handle is to permit the debugging routines to not use static
variables, and hence to be reentrant. This would be useful for a
program which wanted to handle two executables simultaneously. */
/* Return a debugging handle. */
extern void *debug_init (void);
/* Set the source filename. This implicitly starts a new compilation
unit. */
extern bfd_boolean debug_set_filename (void *, const char *);
/* Change source files to the given file name. This is used for
include files in a single compilation unit. */
extern bfd_boolean debug_start_source (void *, const char *);
/* Record a function definition. This implicitly starts a function
block. The debug_type argument is the type of the return value.
The bfd_boolean indicates whether the function is globally visible.
The bfd_vma is the address of the start of the function. Currently
the parameter types are specified by calls to
debug_record_parameter. */
extern bfd_boolean debug_record_function
(void *, const char *, debug_type, bfd_boolean, bfd_vma);
/* Record a parameter for the current function. */
extern bfd_boolean debug_record_parameter
(void *, const char *, debug_type, enum debug_parm_kind, bfd_vma);
/* End a function definition. The argument is the address where the
function ends. */
extern bfd_boolean debug_end_function (void *, bfd_vma);
/* Start a block in a function. All local information will be
recorded in this block, until the matching call to debug_end_block.
debug_start_block and debug_end_block may be nested. The argument
is the address at which this block starts. */
extern bfd_boolean debug_start_block (void *, bfd_vma);
/* Finish a block in a function. This matches the call to
debug_start_block. The argument is the address at which this block
ends. */
extern bfd_boolean debug_end_block (void *, bfd_vma);
/* Associate a line number in the current source file with a given
address. */
extern bfd_boolean debug_record_line (void *, unsigned long, bfd_vma);
/* Start a named common block. This is a block of variables that may
move in memory. */
extern bfd_boolean debug_start_common_block (void *, const char *);
/* End a named common block. */
extern bfd_boolean debug_end_common_block (void *, const char *);
/* Record a named integer constant. */
extern bfd_boolean debug_record_int_const (void *, const char *, bfd_vma);
/* Record a named floating point constant. */
extern bfd_boolean debug_record_float_const (void *, const char *, double);
/* Record a typed constant with an integral value. */
extern bfd_boolean debug_record_typed_const
(void *, const char *, debug_type, bfd_vma);
/* Record a label. */
extern bfd_boolean debug_record_label
(void *, const char *, debug_type, bfd_vma);
/* Record a variable. */
extern bfd_boolean debug_record_variable
(void *, const char *, debug_type, enum debug_var_kind, bfd_vma);
/* Make an indirect type. The first argument is a pointer to the
location where the real type will be placed. The second argument
is the type tag, if there is one; this may be NULL; the only
purpose of this argument is so that debug_get_type_name can return
something useful. This function may be used when a type is
referenced before it is defined. */
extern debug_type debug_make_indirect_type
(void *, debug_type *, const char *);
/* Make a void type. */
extern debug_type debug_make_void_type (void *);
/* Make an integer type of a given size. The bfd_boolean argument is TRUE
if the integer is unsigned. */
extern debug_type debug_make_int_type (void *, unsigned int, bfd_boolean);
/* Make a floating point type of a given size. FIXME: On some
platforms, like an Alpha, you probably need to be able to specify
the format. */
extern debug_type debug_make_float_type (void *, unsigned int);
/* Make a boolean type of a given size. */
extern debug_type debug_make_bool_type (void *, unsigned int);
/* Make a complex type of a given size. */
extern debug_type debug_make_complex_type (void *, unsigned int);
/* Make a structure type. The second argument is TRUE for a struct,
FALSE for a union. The third argument is the size of the struct.
The fourth argument is a NULL terminated array of fields. */
extern debug_type debug_make_struct_type
(void *, bfd_boolean, bfd_vma, debug_field *);
/* Make an object type. The first three arguments after the handle
are the same as for debug_make_struct_type. The next arguments are
a NULL terminated array of base classes, a NULL terminated array of
methods, the type of the object holding the virtual function table
if it is not this object, and a bfd_boolean which is TRUE if this
object has its own virtual function table. */
extern debug_type debug_make_object_type
(void *, bfd_boolean, bfd_vma, debug_field *, debug_baseclass *,
debug_method *, debug_type, bfd_boolean);
/* Make an enumeration type. The arguments are a null terminated
array of strings, and an array of corresponding values. */
extern debug_type debug_make_enum_type
(void *, const char **, bfd_signed_vma *);
/* Make a pointer to a given type. */
extern debug_type debug_make_pointer_type (void *, debug_type);
/* Make a function type. The second argument is the return type. The
third argument is a NULL terminated array of argument types. The
fourth argument is TRUE if the function takes a variable number of
arguments. If the third argument is NULL, then the argument types
are unknown. */
extern debug_type debug_make_function_type
(void *, debug_type, debug_type *, bfd_boolean);
/* Make a reference to a given type. */
extern debug_type debug_make_reference_type (void *, debug_type);
/* Make a range of a given type from a lower to an upper bound. */
extern debug_type debug_make_range_type
(void *, debug_type, bfd_signed_vma, bfd_signed_vma);
/* Make an array type. The second argument is the type of an element
of the array. The third argument is the type of a range of the
array. The fourth and fifth argument are the lower and upper
bounds, respectively (if the bounds are not known, lower should be
0 and upper should be -1). The sixth argument is TRUE if this
array is actually a string, as in C. */
extern debug_type debug_make_array_type
(void *, debug_type, debug_type, bfd_signed_vma, bfd_signed_vma,
bfd_boolean);
/* Make a set of a given type. For example, a Pascal set type. The
bfd_boolean argument is TRUE if this set is actually a bitstring, as in
CHILL. */
extern debug_type debug_make_set_type (void *, debug_type, bfd_boolean);
/* Make a type for a pointer which is relative to an object. The
second argument is the type of the object to which the pointer is
relative. The third argument is the type that the pointer points
to. */
extern debug_type debug_make_offset_type (void *, debug_type, debug_type);
/* Make a type for a method function. The second argument is the
return type. The third argument is the domain. The fourth
argument is a NULL terminated array of argument types. The fifth
argument is TRUE if the function takes a variable number of
arguments, in which case the array of argument types indicates the
types of the first arguments. The domain and the argument array
may be NULL, in which case this is a stub method and that
information is not available. Stabs debugging uses this, and gets
the argument types from the mangled name. */
extern debug_type debug_make_method_type
(void *, debug_type, debug_type, debug_type *, bfd_boolean);
/* Make a const qualified version of a given type. */
extern debug_type debug_make_const_type (void *, debug_type);
/* Make a volatile qualified version of a given type. */
extern debug_type debug_make_volatile_type (void *, debug_type);
/* Make an undefined tagged type. For example, a struct which has
been mentioned, but not defined. */
extern debug_type debug_make_undefined_tagged_type
(void *, const char *, enum debug_type_kind);
/* Make a base class for an object. The second argument is the base
class type. The third argument is the bit position of this base
class in the object. The fourth argument is whether this is a
virtual class. The fifth argument is the visibility of the base
class. */
extern debug_baseclass debug_make_baseclass
(void *, debug_type, bfd_vma, bfd_boolean, enum debug_visibility);
/* Make a field for a struct. The second argument is the name. The
third argument is the type of the field. The fourth argument is
the bit position of the field. The fifth argument is the size of
the field (it may be zero). The sixth argument is the visibility
of the field. */
extern debug_field debug_make_field
(void *, const char *, debug_type, bfd_vma, bfd_vma, enum debug_visibility);
/* Make a static member of an object. The second argument is the
name. The third argument is the type of the member. The fourth
argument is the physical name of the member (i.e., the name as a
global variable). The fifth argument is the visibility of the
member. */
extern debug_field debug_make_static_member
(void *, const char *, debug_type, const char *, enum debug_visibility);
/* Make a method. The second argument is the name, and the third
argument is a NULL terminated array of method variants. Each
method variant is a method with this name but with different
argument types. */
extern debug_method debug_make_method
(void *, const char *, debug_method_variant *);
/* Make a method variant. The second argument is the physical name of
the function. The third argument is the type of the function,
probably constructed by debug_make_method_type. The fourth
argument is the visibility. The fifth argument is whether this is
a const function. The sixth argument is whether this is a volatile
function. The seventh argument is the index in the virtual
function table, if any. The eighth argument is the virtual
function context. */
extern debug_method_variant debug_make_method_variant
(void *, const char *, debug_type, enum debug_visibility, bfd_boolean,
bfd_boolean, bfd_vma, debug_type);
/* Make a static method argument. The arguments are the same as for
debug_make_method_variant, except that the last two are omitted
since a static method can not also be virtual. */
extern debug_method_variant debug_make_static_method_variant
(void *, const char *, debug_type, enum debug_visibility, bfd_boolean,
bfd_boolean);
/* Name a type. This returns a new type with an attached name. */
extern debug_type debug_name_type (void *, const char *, debug_type);
/* Give a tag to a type, such as a struct or union. This returns a
new type with an attached tag. */
extern debug_type debug_tag_type (void *, const char *, debug_type);
/* Record the size of a given type. */
extern bfd_boolean debug_record_type_size (void *, debug_type, unsigned int);
/* Find a named type. */
extern debug_type debug_find_named_type (void *, const char *);
/* Find a tagged type. */
extern debug_type debug_find_tagged_type
(void *, const char *, enum debug_type_kind);
/* Get the kind of a type. */
extern enum debug_type_kind debug_get_type_kind (void *, debug_type);
/* Get the name of a type. */
extern const char *debug_get_type_name (void *, debug_type);
/* Get the size of a type. */
extern bfd_vma debug_get_type_size (void *, debug_type);
/* Get the return type of a function or method type. */
extern debug_type debug_get_return_type (void *, debug_type);
/* Get the NULL terminated array of parameter types for a function or
method type (actually, parameter types are not currently stored for
function types). This may be used to determine whether a method
type is a stub method or not. The last argument points to a
bfd_boolean which is set to TRUE if the function takes a variable
number of arguments. */
extern const debug_type *debug_get_parameter_types
(void *, debug_type, bfd_boolean *);
/* Get the target type of a pointer or reference or const or volatile
type. */
extern debug_type debug_get_target_type (void *, debug_type);
/* Get the NULL terminated array of fields for a struct, union, or
class. */
extern const debug_field *debug_get_fields (void *, debug_type);
/* Get the type of a field. */
extern debug_type debug_get_field_type (void *, debug_field);
/* Get the name of a field. */
extern const char *debug_get_field_name (void *, debug_field);
/* Get the bit position of a field within the containing structure.
If the field is a static member, this will return (bfd_vma) -1. */
extern bfd_vma debug_get_field_bitpos (void *, debug_field);
/* Get the bit size of a field. If the field is a static member, this
will return (bfd_vma) -1. */
extern bfd_vma debug_get_field_bitsize (void *, debug_field);
/* Get the visibility of a field. */
extern enum debug_visibility debug_get_field_visibility (void *, debug_field);
/* Get the physical name of a field, if it is a static member. If the
field is not a static member, this will return NULL. */
extern const char *debug_get_field_physname (void *, debug_field);
/* Write out the recorded debugging information. This takes a set of
function pointers which are called to do the actual writing. The
first void * is the debugging handle. The second void * is a handle
which is passed to the functions. */
extern bfd_boolean debug_write
(void *, const struct debug_write_fns *, void *);
#endif /* DEBUG_H */

View File

@@ -1,93 +0,0 @@
%{/* deflex.l - Lexer for .def files */
/* Copyright 1995, 1997, 1998, 1999, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Contributed by Steve Chamberlain: sac@cygnus.com */
#define DONTDECLARE_MALLOC
#include "libiberty.h"
#include "defparse.h"
#include "dlltool.h"
int linenumber;
%}
%%
"NAME" { return NAME;}
"LIBRARY" { return LIBRARY;}
"DESCRIPTION" { return DESCRIPTION;}
"STACKSIZE" { return STACKSIZE;}
"HEAPSIZE" { return HEAPSIZE;}
"CODE" { return CODE;}
"DATA" { return DATA;}
"SECTIONS" { return SECTIONS;}
"EXPORTS" { return EXPORTS;}
"IMPORTS" { return IMPORTS;}
"VERSION" { return VERSIONK;}
"BASE" { return BASE;}
"CONSTANT" { return CONSTANT; }
"NONAME" { return NONAME; }
"PRIVATE" { return PRIVATE; }
"READ" { return READ;}
"WRITE" { return WRITE;}
"EXECUTE" { return EXECUTE;}
"SHARED" { return SHARED;}
"NONSHARED" { return NONSHARED;}
"SINGLE" { return SINGLE;}
"MULTIPLE" { return MULTIPLE;}
"INITINSTANCE" { return INITINSTANCE;}
"INITGLOBAL" { return INITGLOBAL;}
"TERMINSTANCE" { return TERMINSTANCE;}
"TERMGLOBAL" { return TERMGLOBAL;}
[0-9][x0-9A-Fa-f]* { yylval.number = strtol (yytext,0,0);
return NUMBER; }
(@)?[A-Za-z$:\-\_?][A-Za-z0-9/$:\-\_@?]* {
yylval.id = xstrdup (yytext);
return ID;
}
"\""[^\"]*"\"" {
yylval.id = xstrdup (yytext+1);
yylval.id[yyleng-2] = 0;
return ID;
}
"\'"[^\']*"\'" {
yylval.id = xstrdup (yytext+1);
yylval.id[yyleng-2] = 0;
return ID;
}
"*".* { }
";".* { }
" " { }
"\t" { }
"\n" { linenumber ++ ;}
"=" { return '=';}
"." { return '.';}
"@" { return '@';}
"," { return ',';}
%%
#ifndef yywrap
/* Needed for lex, though not flex. */
int yywrap(void) { return 1; }
#endif

View File

@@ -1,181 +0,0 @@
%{ /* defparse.y - parser for .def files */
/* Copyright 1995, 1997, 1998, 1999, 2004
Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "bucomm.h"
#include "dlltool.h"
%}
%union {
char *id;
int number;
};
%token NAME, LIBRARY, DESCRIPTION, STACKSIZE, HEAPSIZE, CODE, DATA
%token SECTIONS, EXPORTS, IMPORTS, VERSIONK, BASE, CONSTANT
%token READ WRITE EXECUTE SHARED NONSHARED NONAME PRIVATE
%token SINGLE MULTIPLE INITINSTANCE INITGLOBAL TERMINSTANCE TERMGLOBAL
%token <id> ID
%token <number> NUMBER
%type <number> opt_base opt_ordinal opt_NONAME opt_CONSTANT opt_DATA opt_PRIVATE
%type <number> attr attr_list opt_number
%type <id> opt_name opt_equal_name
%%
start: start command
| command
;
command:
NAME opt_name opt_base { def_name ($2, $3); }
| LIBRARY opt_name opt_base option_list { def_library ($2, $3); }
| EXPORTS explist
| DESCRIPTION ID { def_description ($2);}
| STACKSIZE NUMBER opt_number { def_stacksize ($2, $3);}
| HEAPSIZE NUMBER opt_number { def_heapsize ($2, $3);}
| CODE attr_list { def_code ($2);}
| DATA attr_list { def_data ($2);}
| SECTIONS seclist
| IMPORTS implist
| VERSIONK NUMBER { def_version ($2,0);}
| VERSIONK NUMBER '.' NUMBER { def_version ($2,$4);}
;
explist:
/* EMPTY */
| explist expline
;
expline:
ID opt_equal_name opt_ordinal opt_NONAME opt_CONSTANT opt_DATA opt_PRIVATE
{ def_exports ($1, $2, $3, $4, $5, $6, $7);}
;
implist:
implist impline
| impline
;
impline:
ID '=' ID '.' ID '.' ID { def_import ($1,$3,$5,$7, 0); }
| ID '=' ID '.' ID '.' NUMBER { def_import ($1,$3,$5, 0,$7); }
| ID '=' ID '.' ID { def_import ($1,$3, 0,$5, 0); }
| ID '=' ID '.' NUMBER { def_import ($1,$3, 0, 0,$5); }
| ID '.' ID '.' ID { def_import ( 0,$1,$3,$5, 0); }
| ID '.' ID '.' NUMBER { def_import ( 0,$1,$3, 0,$5); }
| ID '.' ID { def_import ( 0,$1, 0,$3, 0); }
| ID '.' NUMBER { def_import ( 0,$1, 0, 0,$3); }
;
seclist:
seclist secline
| secline
;
secline:
ID attr_list { def_section ($1,$2);}
;
attr_list:
attr_list opt_comma attr
| attr
;
opt_comma:
','
|
;
opt_number: ',' NUMBER { $$=$2;}
| { $$=-1;}
;
attr:
READ { $$ = 1; }
| WRITE { $$ = 2; }
| EXECUTE { $$ = 4; }
| SHARED { $$ = 8; }
| NONSHARED { $$ = 0; }
| SINGLE { $$ = 0; }
| MULTIPLE { $$ = 0; }
;
opt_CONSTANT:
CONSTANT {$$=1;}
| {$$=0;}
;
opt_NONAME:
NONAME {$$=1;}
| {$$=0;}
;
opt_DATA:
DATA { $$ = 1; }
| { $$ = 0; }
;
opt_PRIVATE:
PRIVATE { $$ = 1; }
| { $$ = 0; }
;
opt_name: ID { $$ =$1; }
| ID '.' ID
{
char *name = xmalloc (strlen ($1) + 1 + strlen ($3) + 1);
sprintf (name, "%s.%s", $1, $3);
$$ = name;
}
| { $$=""; }
;
opt_ordinal:
'@' NUMBER { $$=$2;}
| { $$=-1;}
;
opt_equal_name:
'=' ID { $$ = $2; }
| '=' ID '.' ID
{
char *name = xmalloc (strlen ($2) + 1 + strlen ($4) + 1);
sprintf (name, "%s.%s", $2, $4);
$$ = name;
}
| { $$ = 0; }
;
opt_base: BASE '=' NUMBER { $$= $3;}
| { $$=-1;}
;
option_list:
/* empty */
| option_list opt_comma option
;
option:
INITINSTANCE
| INITGLOBAL
| TERMINSTANCE
| TERMGLOBAL
;

View File

@@ -1,20 +0,0 @@
:loop
/\\$/N
/\\$/b loop
s!@INCDIR@!$(INCDIR)!g
s!@TOPDIR@/include!$(INCDIR)!g
s!@BFDDIR@!$(BFDDIR)!g
s!@TOPDIR@/bfd!$(BFDDIR)!g
s!@SRCDIR@/!!g
s!@OBJDIR@/!!g
s! \.\./intl/libintl\.h!!g
s/\\\n */ /g
s/ *$//
s/ */ /g
/:$/d
s/\(.\{50\}[^ ]*\) /\1 \\\
/g

File diff suppressed because it is too large Load Diff

View File

@@ -1,42 +0,0 @@
/* dlltool.h -- header file for dlltool
Copyright 1997, 1998, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include "ansidecl.h"
#include <stdio.h>
extern void def_code (int);
extern void def_data (int);
extern void def_description (const char *);
extern void def_exports (const char *, const char *, int, int, int, int, int);
extern void def_heapsize (int, int);
extern void def_import
(const char *, const char *, const char *, const char *, int);
extern void def_library (const char *, int);
extern void def_name (const char *, int);
extern void def_section (const char *, int);
extern void def_stacksize (int, int);
extern void def_version (int, int);
extern int yyparse (void);
extern int yyerror (const char *);
extern int yylex (void);
extern int yydebug;
extern FILE *yyin;
extern int linenumber;

File diff suppressed because it is too large Load Diff

View File

@@ -1,165 +0,0 @@
## Process this file with automake to generate Makefile.in
AUTOMAKE_OPTIONS = cygnus
# What version of the manual you want; "all" includes everything
CONFIG=all
# Options to extract the man page from as.texinfo
MANCONF = -Dman
TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl
POD2MAN = pod2man --center="GNU Development Tools" \
--release="binutils-$(VERSION)" --section=1
# List of man pages generated from binutils.texi
man_MANS = \
addr2line.1 \
ar.1 \
dlltool.1 \
nlmconv.1 \
nm.1 \
objcopy.1 \
objdump.1 \
ranlib.1 \
readelf.1 \
size.1 \
strings.1 \
strip.1 \
windres.1 \
$(DEMANGLER_NAME).1
info_TEXINFOS = binutils.texi
config.texi: Makefile
rm -f config.texi
echo '@set VERSION $(VERSION)' > config.texi
binutils_TEXI = $(srcdir)/binutils.texi
binutils.dvi: $(binutils_TEXI) config.texi
binutils.info: $(binutils_TEXI) config.texi
# Man page generation from texinfo
addr2line.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Daddr2line < $(binutils_TEXI) > addr2line.pod
-($(POD2MAN) addr2line.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f addr2line.pod
ar.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dar < $(binutils_TEXI) > ar.pod
-($(POD2MAN) ar.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f ar.pod
dlltool.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Ddlltool < $(binutils_TEXI) > dlltool.pod
-($(POD2MAN) dlltool.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f dlltool.pod
nlmconv.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dnlmconv < $(binutils_TEXI) > nlmconv.pod
-($(POD2MAN) nlmconv.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f nlmconv.pod
nm.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dnm < $(binutils_TEXI) > nm.pod
-($(POD2MAN) nm.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f nm.pod
objcopy.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dobjcopy < $(binutils_TEXI) > objcopy.pod
-($(POD2MAN) objcopy.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f objcopy.pod
objdump.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dobjdump < $(binutils_TEXI) > objdump.pod
-($(POD2MAN) objdump.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f objdump.pod
ranlib.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dranlib < $(binutils_TEXI) > ranlib.pod
-($(POD2MAN) ranlib.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f ranlib.pod
readelf.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dreadelf < $(binutils_TEXI) > readelf.pod
-($(POD2MAN) readelf.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f readelf.pod
size.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dsize < $(binutils_TEXI) > size.pod
-($(POD2MAN) size.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f size.pod
strings.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dstrings < $(binutils_TEXI) > strings.pod
-($(POD2MAN) strings.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f strings.pod
strip.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod
-($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f strip.pod
windres.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod
-($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f windres.pod
cxxfilt.man: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dcxxfilt < $(binutils_TEXI) > $(DEMANGLER_NAME).pod
-($(POD2MAN) $(DEMANGLER_NAME).pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f $(DEMANGLER_NAME).pod
MAINTAINERCLEANFILES = config.texi
DISTCLEANFILES = config.texi
MOSTLYCLEANFILES = $(DEMANGLER_NAME).1
$(DEMANGLER_NAME).1: cxxfilt.man Makefile
if test -f cxxfilt.man; then \
man=cxxfilt.man; \
else \
man=$(srcdir)/cxxfilt.man; \
fi; \
sed -e 's/@PROGRAM@/$(DEMANGLER_NAME)/' \
-e 's/cxxfilt/$(DEMANGLER_NAME)/' < $$man \
> $(DEMANGLER_NAME).1
# We want install to imply install-info as per GNU standards, despite the
# cygnus option.
install: install-info
# Maintenance
# We need it for the taz target in ../../Makefile.in.
info: $(MANS)

View File

@@ -1,575 +0,0 @@
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_alias = @build_alias@
build_triplet = @build@
host_alias = @host_alias@
host_triplet = @host@
target_alias = @target_alias@
target_triplet = @target@
AR = @AR@
AS = @AS@
BUILD_DLLTOOL = @BUILD_DLLTOOL@
BUILD_DLLWRAP = @BUILD_DLLWRAP@
BUILD_MISC = @BUILD_MISC@
BUILD_NLMCONV = @BUILD_NLMCONV@
BUILD_SRCONV = @BUILD_SRCONV@
BUILD_WINDRES = @BUILD_WINDRES@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CC_FOR_BUILD = @CC_FOR_BUILD@
CPP = @CPP@
CXX = @CXX@
CXXCPP = @CXXCPP@
DATADIRNAME = @DATADIRNAME@
DEMANGLER_NAME = @DEMANGLER_NAME@
DLLTOOL = @DLLTOOL@
DLLTOOL_DEFS = @DLLTOOL_DEFS@
EMULATION = @EMULATION@
EMULATION_VECTOR = @EMULATION_VECTOR@
EXEEXT = @EXEEXT@
EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
GCJ = @GCJ@
GCJFLAGS = @GCJFLAGS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNATBIND = @GNATBIND@
GT_NO = @GT_NO@
GT_YES = @GT_YES@
HDEFINES = @HDEFINES@
INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
INSTOBJEXT = @INSTOBJEXT@
INTLDEPS = @INTLDEPS@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
LEX = @LEX@
LIBTOOL = @LIBTOOL@
LN = @LN@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
NLMCONV_DEFS = @NLMCONV_DEFS@
OBJDUMP = @OBJDUMP@
OBJDUMP_DEFS = @OBJDUMP_DEFS@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
STRIP = @STRIP@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
WARN_CFLAGS = @WARN_CFLAGS@
YACC = @YACC@
bfdincludedir = @bfdincludedir@
bfdlibdir = @bfdlibdir@
build_noncanonical = @build_noncanonical@
build_subdir = @build_subdir@
do_compare = @do_compare@
host_noncanonical = @host_noncanonical@
host_subdir = @host_subdir@
l = @l@
ncn_cv_ = @ncn_cv_@
target_noncanonical = @target_noncanonical@
target_subdir = @target_subdir@
AUTOMAKE_OPTIONS = cygnus
# What version of the manual you want; "all" includes everything
CONFIG = all
# Options to extract the man page from as.texinfo
MANCONF = -Dman
TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl
POD2MAN = pod2man --center="GNU Development Tools" \
--release="binutils-$(VERSION)" --section=1
# List of man pages generated from binutils.texi
man_MANS = \
addr2line.1 \
ar.1 \
dlltool.1 \
nlmconv.1 \
nm.1 \
objcopy.1 \
objdump.1 \
ranlib.1 \
readelf.1 \
size.1 \
strings.1 \
strip.1 \
windres.1 \
$(DEMANGLER_NAME).1
info_TEXINFOS = binutils.texi
binutils_TEXI = $(srcdir)/binutils.texi
MAINTAINERCLEANFILES = config.texi
DISTCLEANFILES = config.texi
MOSTLYCLEANFILES = $(DEMANGLER_NAME).1
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
TEXI2DVI = `if test -f $(top_srcdir)/../texinfo/util/texi2dvi; then echo $(top_srcdir)/../texinfo/util/texi2dvi; else echo texi2dvi; fi`
TEXINFO_TEX = $(top_srcdir)/../texinfo/texinfo.tex
INFO_DEPS = binutils.info
DVIS = binutils.dvi
TEXINFOS = binutils.texi
man1dir = $(mandir)/man1
MANS = $(man_MANS)
NROFF = nroff
DIST_COMMON = Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP_ENV = --best
all: all-redirect
.SUFFIXES:
.SUFFIXES: .dvi .info .ps .texi .texinfo .txi
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --cygnus doc/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
binutils.info: binutils.texi
binutils.dvi: binutils.texi
DVIPS = dvips
.texi.info:
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
$(MAKEINFO) -I $(srcdir) $<
.texi.dvi:
TEXINPUTS=$(top_srcdir)/../texinfo/texinfo.tex:$$TEXINPUTS \
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
.texi:
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
$(MAKEINFO) -I $(srcdir) $<
.texinfo.info:
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
$(MAKEINFO) -I $(srcdir) $<
.texinfo:
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
$(MAKEINFO) -I $(srcdir) $<
.texinfo.dvi:
TEXINPUTS=$(top_srcdir)/../texinfo/texinfo.tex:$$TEXINPUTS \
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
.txi.info:
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
$(MAKEINFO) -I $(srcdir) $<
.txi.dvi:
TEXINPUTS=$(top_srcdir)/../texinfo/texinfo.tex:$$TEXINPUTS \
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
.txi:
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
$(MAKEINFO) -I $(srcdir) $<
.dvi.ps:
$(DVIPS) $< -o $@
install-info-am: $(INFO_DEPS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(infodir)
@list='$(INFO_DEPS)'; \
for file in $$list; do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \
for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
if test -f $$d/$$ifile; then \
echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \
$(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \
else : ; fi; \
done; \
done
@$(POST_INSTALL)
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
list='$(INFO_DEPS)'; \
for file in $$list; do \
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
done; \
else : ; fi
uninstall-info:
$(PRE_UNINSTALL)
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
ii=yes; \
else ii=; fi; \
list='$(INFO_DEPS)'; \
for file in $$list; do \
test -z "$$ii" \
|| install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \
done
@$(NORMAL_UNINSTALL)
list='$(INFO_DEPS)'; \
for file in $$list; do \
(cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \
done
dist-info: $(INFO_DEPS)
list='$(INFO_DEPS)'; \
for base in $$list; do \
if test -f $$base; then d=.; else d=$(srcdir); fi; \
for file in `cd $$d && eval echo $$base*`; do \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
done; \
done
mostlyclean-aminfo:
-rm -f binutils.aux binutils.cp binutils.cps binutils.dvi binutils.fn \
binutils.fns binutils.ky binutils.kys binutils.ps \
binutils.log binutils.pg binutils.toc binutils.tp \
binutils.tps binutils.vr binutils.vrs binutils.op binutils.tr \
binutils.cv binutils.cn
clean-aminfo:
distclean-aminfo:
maintainer-clean-aminfo:
for i in $(INFO_DEPS); do \
rm -f $$i; \
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
rm -f $$i-[0-9]*; \
fi; \
done
clean-info: mostlyclean-aminfo
install-man1:
$(mkinstalldirs) $(DESTDIR)$(man1dir)
@list='$(man1_MANS)'; \
l2='$(man_MANS)'; for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
$(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
done
uninstall-man1:
@list='$(man1_MANS)'; \
l2='$(man_MANS)'; for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
rm -f $(DESTDIR)$(man1dir)/$$inst; \
done
install-man: $(MANS)
@$(NORMAL_INSTALL)
$(MAKE) $(AM_MAKEFLAGS) install-man1
uninstall-man:
@$(NORMAL_UNINSTALL)
$(MAKE) $(AM_MAKEFLAGS) uninstall-man1
tags: TAGS
TAGS:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = doc
distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
info-am: $(INFO_DEPS)
info: info-am
dvi-am: $(DVIS)
dvi: dvi-am
check-am:
check: check-am
installcheck-am:
installcheck: installcheck-am
install-info-am:
install-info: install-info-am
install-exec-am:
install-exec: install-exec-am
install-data-am: install-man
install-data: install-data-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am: uninstall-man
uninstall: uninstall-am
all-am: Makefile $(MANS)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(mandir)/man1
mostlyclean-generic:
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
mostlyclean-am: mostlyclean-aminfo mostlyclean-generic
mostlyclean: mostlyclean-am
clean-am: clean-aminfo clean-generic mostlyclean-am
clean: clean-am
distclean-am: distclean-aminfo distclean-generic clean-am
-rm -f libtool
distclean: distclean-am
maintainer-clean-am: maintainer-clean-aminfo maintainer-clean-generic \
distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
maintainer-clean: maintainer-clean-am
.PHONY: install-info-am uninstall-info mostlyclean-aminfo \
distclean-aminfo clean-aminfo maintainer-clean-aminfo install-man1 \
uninstall-man1 install-man uninstall-man tags distdir info-am info \
dvi-am dvi check check-am installcheck-am installcheck install-info-am \
install-info install-exec-am install-exec install-data-am install-data \
install-am install uninstall-am uninstall all-redirect all-am all \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
config.texi: Makefile
rm -f config.texi
echo '@set VERSION $(VERSION)' > config.texi
binutils.dvi: $(binutils_TEXI) config.texi
binutils.info: $(binutils_TEXI) config.texi
# Man page generation from texinfo
addr2line.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Daddr2line < $(binutils_TEXI) > addr2line.pod
-($(POD2MAN) addr2line.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f addr2line.pod
ar.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dar < $(binutils_TEXI) > ar.pod
-($(POD2MAN) ar.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f ar.pod
dlltool.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Ddlltool < $(binutils_TEXI) > dlltool.pod
-($(POD2MAN) dlltool.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f dlltool.pod
nlmconv.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dnlmconv < $(binutils_TEXI) > nlmconv.pod
-($(POD2MAN) nlmconv.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f nlmconv.pod
nm.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dnm < $(binutils_TEXI) > nm.pod
-($(POD2MAN) nm.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f nm.pod
objcopy.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dobjcopy < $(binutils_TEXI) > objcopy.pod
-($(POD2MAN) objcopy.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f objcopy.pod
objdump.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dobjdump < $(binutils_TEXI) > objdump.pod
-($(POD2MAN) objdump.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f objdump.pod
ranlib.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dranlib < $(binutils_TEXI) > ranlib.pod
-($(POD2MAN) ranlib.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f ranlib.pod
readelf.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dreadelf < $(binutils_TEXI) > readelf.pod
-($(POD2MAN) readelf.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f readelf.pod
size.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dsize < $(binutils_TEXI) > size.pod
-($(POD2MAN) size.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f size.pod
strings.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dstrings < $(binutils_TEXI) > strings.pod
-($(POD2MAN) strings.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f strings.pod
strip.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod
-($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f strip.pod
windres.1: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod
-($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f windres.pod
cxxfilt.man: $(binutils_TEXI)
touch $@
-$(TEXI2POD) $(MANCONF) -Dcxxfilt < $(binutils_TEXI) > $(DEMANGLER_NAME).pod
-($(POD2MAN) $(DEMANGLER_NAME).pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
rm -f $(DEMANGLER_NAME).pod
$(DEMANGLER_NAME).1: cxxfilt.man Makefile
if test -f cxxfilt.man; then \
man=cxxfilt.man; \
else \
man=$(srcdir)/cxxfilt.man; \
fi; \
sed -e 's/@PROGRAM@/$(DEMANGLER_NAME)/' \
-e 's/cxxfilt/$(DEMANGLER_NAME)/' < $$man \
> $(DEMANGLER_NAME).1
# We want install to imply install-info as per GNU standards, despite the
# cygnus option.
install: install-info
# Maintenance
# We need it for the taz target in ../../Makefile.in.
info: $(MANS)
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

File diff suppressed because it is too large Load Diff

View File

@@ -1,368 +0,0 @@
@c -*-texinfo-*-
@node GNU Free Documentation License
@appendix GNU Free Documentation License
@center Version 1.1, March 2000
@display
Copyright (C) 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@end display
@sp 1
@enumerate 0
@item
PREAMBLE
The purpose of this License is to make a manual, textbook, or other
written document ``free'' in the sense of freedom: to assure everyone
the effective freedom to copy and redistribute it, with or without
modifying it, either commercially or noncommercially. Secondarily,
this License preserves for the author and publisher a way to get
credit for their work, while not being considered responsible for
modifications made by others.
This License is a kind of ``copyleft'', which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
@sp 1
@item
APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work that contains a
notice placed by the copyright holder saying it can be distributed
under the terms of this License. The ``Document'', below, refers to any
such manual or work. Any member of the public is a licensee, and is
addressed as ``you.''
A ``Modified Version'' of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A ``Secondary Section'' is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
within that overall subject. (For example, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The ``Invariant Sections'' are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License.
The ``Cover Texts'' are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License.
A ``Transparent'' copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, whose contents can be viewed and edited directly and
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup has been designed to thwart or discourage
subsequent modification by readers is not Transparent. A copy that is
not ``Transparent'' is called ``Opaque.''
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML designed for human modification. Opaque formats include
PostScript, PDF, proprietary formats that can be read and edited only
by proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML produced by some word processors for output
purposes only.
The ``Title Page'' means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, ``Title Page'' means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
@sp 1
@item
VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
@sp 1
@item
COPYING IN QUANTITY
If you publish printed copies of the Document numbering more than 100,
and the Document's license notice requires Cover Texts, you must enclose
the copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a publicly-accessible computer-network location containing a complete
Transparent copy of the Document, free of added material, which the
general network-using public has access to download anonymously at no
charge using public-standard network protocols. If you use the latter
option, you must take reasonably prudent steps, when you begin
distribution of Opaque copies in quantity, to ensure that this
Transparent copy will remain thus accessible at the stated location
until at least one year after the last time you distribute an Opaque
copy (directly or through your agents or retailers) of that edition to
the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
@sp 1
@item
MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.@*
B. List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has less than five).@*
C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.@*
D. Preserve all the copyright notices of the Document.@*
E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.@*
F. Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.@*
G. Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.@*
H. Include an unaltered copy of this License.@*
I. Preserve the section entitled ``History'', and its title, and add to
it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section entitled ``History'' in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.@*
J. Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the ``History'' section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.@*
K. In any section entitled ``Acknowledgements'' or ``Dedications'',
preserve the section's title, and preserve in the section all the
substance and tone of each of the contributor acknowledgements
and/or dedications given therein.@*
L. Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.@*
M. Delete any section entitled ``Endorsements.'' Such a section
may not be included in the Modified Version.@*
N. Do not retitle any existing section as ``Endorsements''
or to conflict in title with any Invariant Section.@*
@sp 1
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section entitled ``Endorsements'', provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
@sp 1
@item
COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections entitled ``History''
in the various original documents, forming one section entitled
``History''; likewise combine any sections entitled ``Acknowledgements'',
and any sections entitled ``Dedications.'' You must delete all sections
entitled ``Endorsements.''
@sp 1
@item
COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
@sp 1
@item
AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, does not as a whole count as a Modified Version
of the Document, provided no compilation copyright is claimed for the
compilation. Such a compilation is called an ``aggregate'', and this
License does not apply to the other self-contained works thus compiled
with the Document, on account of their being thus compiled, if they
are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one quarter
of the entire aggregate, the Document's Cover Texts may be placed on
covers that surround only the Document within the aggregate.
Otherwise they must appear on covers around the whole aggregate.
@sp 1
@item
TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License provided that you also include the
original English version of this License. In case of a disagreement
between the translation and the original English version of this
License, the original English version will prevail.
@sp 1
@item
TERMINATION
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.
@sp 1
@item
FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License ``or any later version'' applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
@end enumerate
@unnumberedsec ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
@smallexample
@group
Copyright (C) @var{year} @var{your name}.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with the Invariant Sections being @var{list their titles}, with the
Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
A copy of the license is included in the section entitled "GNU
Free Documentation License."
@end group
@end smallexample
If you have no Invariant Sections, write ``with no Invariant Sections''
instead of saying which ones are invariant. If you have no
Front-Cover Texts, write ``no Front-Cover Texts'' instead of
``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.

View File

@@ -1,175 +0,0 @@
/* Binutils emulation layer.
Copyright 2002, 2003 Free Software Foundation, Inc.
Written by Tom Rix, Redhat.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "binemul.h"
#include "bfdlink.h"
#include "coff/internal.h"
#include "coff/xcoff.h"
#include "libcoff.h"
#include "libxcoff.h"
/* Default to <bigaf>. */
static bfd_boolean big_archive = TRUE;
/* Whether to include 32 bit objects. */
static bfd_boolean X32 = TRUE;
/* Whether to include 64 bit objects. */
static bfd_boolean X64 = FALSE;
static void ar_emul_aix_usage (FILE *);
static bfd_boolean ar_emul_aix_append (bfd **, char *, bfd_boolean);
static bfd_boolean ar_emul_aix5_append (bfd **, char *, bfd_boolean);
static bfd_boolean ar_emul_aix_replace (bfd **, char *, bfd_boolean);
static bfd_boolean ar_emul_aix5_replace (bfd **, char *, bfd_boolean);
static bfd_boolean ar_emul_aix_parse_arg (char *);
static bfd_boolean ar_emul_aix_internal
(bfd **, char *, bfd_boolean, const char *, bfd_boolean);
static void
ar_emul_aix_usage (FILE *fp)
{
AR_EMUL_USAGE_PRINT_OPTION_HEADER (fp);
/* xgettext:c-format */
fprintf (fp, _(" [-g] - 32 bit small archive\n"));
fprintf (fp, _(" [-X32] - ignores 64 bit objects\n"));
fprintf (fp, _(" [-X64] - ignores 32 bit objects\n"));
fprintf (fp, _(" [-X32_64] - accepts 32 and 64 bit objects\n"));
}
static bfd_boolean
ar_emul_aix_internal (bfd **after_bfd, char *file_name, bfd_boolean verbose,
const char * target_name, bfd_boolean is_append)
{
bfd *temp;
bfd *try_bfd;
temp = *after_bfd;
/* Try 64 bit. */
try_bfd = bfd_openr (file_name, target_name);
/* Failed or the object is possibly 32 bit. */
if (NULL == try_bfd || ! bfd_check_format (try_bfd, bfd_object))
try_bfd = bfd_openr (file_name, "aixcoff-rs6000");
AR_EMUL_ELEMENT_CHECK (try_bfd, file_name);
if (bfd_xcoff_is_xcoff64 (try_bfd) && (! X64))
return FALSE;
if (bfd_xcoff_is_xcoff32 (try_bfd)
&& bfd_check_format (try_bfd, bfd_object) && (! X32))
return FALSE;
if (is_append)
{
AR_EMUL_APPEND_PRINT_VERBOSE (verbose, file_name);
}
else
{
AR_EMUL_REPLACE_PRINT_VERBOSE (verbose, file_name);
}
*after_bfd = try_bfd;
(*after_bfd)->next = temp;
return TRUE;
}
static bfd_boolean
ar_emul_aix_append (bfd **after_bfd, char *file_name, bfd_boolean verbose)
{
return ar_emul_aix_internal (after_bfd, file_name, verbose,
"aixcoff64-rs6000", TRUE);
}
static bfd_boolean
ar_emul_aix5_append (bfd **after_bfd, char *file_name, bfd_boolean verbose)
{
return ar_emul_aix_internal (after_bfd, file_name, verbose,
"aix5coff64-rs6000", TRUE);
}
static bfd_boolean
ar_emul_aix_replace (bfd **after_bfd, char *file_name, bfd_boolean verbose)
{
return ar_emul_aix_internal (after_bfd, file_name, verbose,
"aixcoff64-rs6000", FALSE);
}
static bfd_boolean
ar_emul_aix5_replace (bfd **after_bfd, char *file_name, bfd_boolean verbose)
{
return ar_emul_aix_internal (after_bfd, file_name, verbose,
"aix5coff64-rs6000", FALSE);
}
static bfd_boolean
ar_emul_aix_parse_arg (char *arg)
{
if (strncmp (arg, "-X32_64", 6) == 0)
{
big_archive = TRUE;
X32 = TRUE;
X64 = TRUE;
}
else if (strncmp (arg, "-X32", 3) == 0)
{
big_archive = TRUE;
X32 = TRUE;
X64 = FALSE;
}
else if (strncmp (arg, "-X64", 3) == 0)
{
big_archive = TRUE;
X32 = FALSE;
X64 = TRUE;
}
else if (strncmp (arg, "-g", 2) == 0)
{
big_archive = FALSE;
X32 = TRUE;
X64 = FALSE;
}
else
return FALSE;
return TRUE;
}
struct bin_emulation_xfer_struct bin_aix_emulation =
{
ar_emul_aix_usage,
ar_emul_aix_append,
ar_emul_aix_replace,
ar_emul_default_create,
ar_emul_aix_parse_arg,
};
struct bin_emulation_xfer_struct bin_aix5_emulation =
{
ar_emul_aix_usage,
ar_emul_aix5_append,
ar_emul_aix5_replace,
ar_emul_default_create,
ar_emul_aix_parse_arg,
};

View File

@@ -1,30 +0,0 @@
/* Binutils emulation layer.
Copyright (C) 2002 Free Software Foundation, Inc.
Written by Tom Rix, Redhat.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "binemul.h"
struct bin_emulation_xfer_struct bin_vanilla_emulation =
{
ar_emul_default_usage,
ar_emul_default_append,
ar_emul_default_replace,
ar_emul_default_create,
ar_emul_default_parse_arg,
};

View File

@@ -1,260 +0,0 @@
/* filemode.c -- make a string describing file modes
Copyright 1985, 1990, 1991, 1994, 1995, 1997, 2003
Free Software Foundation, Inc.
This program 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.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include "bfd.h"
#include "bucomm.h"
static char ftypelet (unsigned long);
static void setst (unsigned long, char *);
/* filemodestring - fill in string STR with an ls-style ASCII
representation of the st_mode field of file stats block STATP.
10 characters are stored in STR; no terminating null is added.
The characters stored in STR are:
0 File type. 'd' for directory, 'c' for character
special, 'b' for block special, 'm' for multiplex,
'l' for symbolic link, 's' for socket, 'p' for fifo,
'-' for any other file type
1 'r' if the owner may read, '-' otherwise.
2 'w' if the owner may write, '-' otherwise.
3 'x' if the owner may execute, 's' if the file is
set-user-id, '-' otherwise.
'S' if the file is set-user-id, but the execute
bit isn't set.
4 'r' if group members may read, '-' otherwise.
5 'w' if group members may write, '-' otherwise.
6 'x' if group members may execute, 's' if the file is
set-group-id, '-' otherwise.
'S' if it is set-group-id but not executable.
7 'r' if any user may read, '-' otherwise.
8 'w' if any user may write, '-' otherwise.
9 'x' if any user may execute, 't' if the file is "sticky"
(will be retained in swap space after execution), '-'
otherwise.
'T' if the file is sticky but not executable. */
#if 0
/* This is not used; only mode_string is used. */
void
filemodestring (struct stat *statp, char *str)
{
mode_string ((unsigned long) statp->st_mode, str);
}
#endif
/* Get definitions for the file permission bits. */
#ifndef S_IRWXU
#define S_IRWXU 0700
#endif
#ifndef S_IRUSR
#define S_IRUSR 0400
#endif
#ifndef S_IWUSR
#define S_IWUSR 0200
#endif
#ifndef S_IXUSR
#define S_IXUSR 0100
#endif
#ifndef S_IRWXG
#define S_IRWXG 0070
#endif
#ifndef S_IRGRP
#define S_IRGRP 0040
#endif
#ifndef S_IWGRP
#define S_IWGRP 0020
#endif
#ifndef S_IXGRP
#define S_IXGRP 0010
#endif
#ifndef S_IRWXO
#define S_IRWXO 0007
#endif
#ifndef S_IROTH
#define S_IROTH 0004
#endif
#ifndef S_IWOTH
#define S_IWOTH 0002
#endif
#ifndef S_IXOTH
#define S_IXOTH 0001
#endif
/* Like filemodestring, but only the relevant part of the `struct stat'
is given as an argument. */
void
mode_string (unsigned long mode, char *str)
{
str[0] = ftypelet ((unsigned long) mode);
str[1] = (mode & S_IRUSR) != 0 ? 'r' : '-';
str[2] = (mode & S_IWUSR) != 0 ? 'w' : '-';
str[3] = (mode & S_IXUSR) != 0 ? 'x' : '-';
str[4] = (mode & S_IRGRP) != 0 ? 'r' : '-';
str[5] = (mode & S_IWGRP) != 0 ? 'w' : '-';
str[6] = (mode & S_IXGRP) != 0 ? 'x' : '-';
str[7] = (mode & S_IROTH) != 0 ? 'r' : '-';
str[8] = (mode & S_IWOTH) != 0 ? 'w' : '-';
str[9] = (mode & S_IXOTH) != 0 ? 'x' : '-';
setst ((unsigned long) mode, str);
}
/* Return a character indicating the type of file described by
file mode BITS:
'd' for directories
'b' for block special files
'c' for character special files
'm' for multiplexer files
'l' for symbolic links
's' for sockets
'p' for fifos
'-' for any other file type. */
#ifndef S_ISDIR
#ifdef S_IFDIR
#define S_ISDIR(i) (((i) & S_IFMT) == S_IFDIR)
#else /* ! defined (S_IFDIR) */
#define S_ISDIR(i) (((i) & 0170000) == 040000)
#endif /* ! defined (S_IFDIR) */
#endif /* ! defined (S_ISDIR) */
#ifndef S_ISBLK
#ifdef S_IFBLK
#define S_ISBLK(i) (((i) & S_IFMT) == S_IFBLK)
#else /* ! defined (S_IFBLK) */
#define S_ISBLK(i) 0
#endif /* ! defined (S_IFBLK) */
#endif /* ! defined (S_ISBLK) */
#ifndef S_ISCHR
#ifdef S_IFCHR
#define S_ISCHR(i) (((i) & S_IFMT) == S_IFCHR)
#else /* ! defined (S_IFCHR) */
#define S_ISCHR(i) 0
#endif /* ! defined (S_IFCHR) */
#endif /* ! defined (S_ISCHR) */
#ifndef S_ISFIFO
#ifdef S_IFIFO
#define S_ISFIFO(i) (((i) & S_IFMT) == S_IFIFO)
#else /* ! defined (S_IFIFO) */
#define S_ISFIFO(i) 0
#endif /* ! defined (S_IFIFO) */
#endif /* ! defined (S_ISFIFO) */
#ifndef S_ISSOCK
#ifdef S_IFSOCK
#define S_ISSOCK(i) (((i) & S_IFMT) == S_IFSOCK)
#else /* ! defined (S_IFSOCK) */
#define S_ISSOCK(i) 0
#endif /* ! defined (S_IFSOCK) */
#endif /* ! defined (S_ISSOCK) */
#ifndef S_ISLNK
#ifdef S_IFLNK
#define S_ISLNK(i) (((i) & S_IFMT) == S_IFLNK)
#else /* ! defined (S_IFLNK) */
#define S_ISLNK(i) 0
#endif /* ! defined (S_IFLNK) */
#endif /* ! defined (S_ISLNK) */
static char
ftypelet (unsigned long bits)
{
if (S_ISDIR (bits))
return 'd';
if (S_ISLNK (bits))
return 'l';
if (S_ISBLK (bits))
return 'b';
if (S_ISCHR (bits))
return 'c';
if (S_ISSOCK (bits))
return 's';
if (S_ISFIFO (bits))
return 'p';
#ifdef S_IFMT
#ifdef S_IFMPC
if ((bits & S_IFMT) == S_IFMPC
|| (bits & S_IFMT) == S_IFMPB)
return 'm';
#endif
#ifdef S_IFNWK
if ((bits & S_IFMT) == S_IFNWK)
return 'n';
#endif
#endif
return '-';
}
/* Set the 's' and 't' flags in file attributes string CHARS,
according to the file mode BITS. */
static void
setst (unsigned long bits ATTRIBUTE_UNUSED, char *chars ATTRIBUTE_UNUSED)
{
#ifdef S_ISUID
if (bits & S_ISUID)
{
if (chars[3] != 'x')
/* Set-uid, but not executable by owner. */
chars[3] = 'S';
else
chars[3] = 's';
}
#endif
#ifdef S_ISGID
if (bits & S_ISGID)
{
if (chars[6] != 'x')
/* Set-gid, but not executable by group. */
chars[6] = 'S';
else
chars[6] = 's';
}
#endif
#ifdef S_ISVTX
if (bits & S_ISVTX)
{
if (chars[9] != 'x')
/* Sticky, but not executable by others. */
chars[9] = 'T';
else
chars[9] = 't';
}
#endif
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +0,0 @@
/* Linked with ar.o to flag that this program is 'ranlib' (not 'ar'). */
int is_ranlib = 1;

View File

@@ -1,4 +0,0 @@
/* Linked with objcopy.o to flag that this program is 'strip' (not
'objcopy'). */
int is_strip = 1;

View File

@@ -1,98 +0,0 @@
#
# Makefile for binutils under openVMS (Alpha and Vax)
#
# For use with gnu-make for vms
#
# Created by Klaus K"ampf, kkaempf@rmi.de
#
#
# Distribution version, filled in by configure.com
VERSION=@VERSION@
ifeq ($(ARCH),ALPHA)
TARGET=""vms-alpha""
else
TARGET=""vms-vax""
endif
ifeq ($(CC),gcc)
CFLAGS=/include=([],[-.include],[-.bfd])$(DEFS)
DEFS=/define=("TARGET=$(TARGET)")
LIBS=,gnu_cc_library:libgcc/lib,sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crt0.obj
else
CFLAGS=/noopt/debug/include=([],[-.include],[-.bfd])$(DEFS)\
/warnings=disable=(missingreturn,implicitfunc,longextern)
DEFS=/define=("TARGET=$(TARGET)","const=","unlink=remove")
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 "CC=$(CC)"
[-.bfd]libbfd.olb:
$(CD) [-.bfd]
$(MAKE) -f makefile.vms "CC=$(CC)"
$(CD) [-.binutils]
[-.libiberty]libiberty.olb:
$(CD) [-.libiberty]
$(MAKE) -f makefile.vms "CC=$(CC)"
$(CD) [-.binutils]
[-.opcodes]libopcodes.olb:
$(CD) [-.opcodes]
$(MAKE) -f makefile.vms "CC=$(CC)"
$(CD) [-.binutils]
clean:
$$ purge
$(RM) *.obj;
$(RM) *.exe;
distclean: clean
$(RM) config.h;
$(RM) makefile.vms;

View File

@@ -1,4 +0,0 @@
/* Linked with ar.o to flag that this program decides at runtime
(using argv[0] if it is is 'ar' or 'ranlib'. */
int is_ranlib = -1;

View File

@@ -1,4 +0,0 @@
/* Linked with objcopy.o to flag that this program decides at runtime
(using argv[0] if it is is 'strip' or 'objcopy'. */
int is_strip = -1;

File diff suppressed because it is too large Load Diff

View File

@@ -1,84 +0,0 @@
/* nlmconv.h -- header file for NLM conversion program
Copyright 1993, 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Ian Lance Taylor <ian@cygnus.com>.
bfd.h, nlm/common.h and nlm/internal.h must be included before this
file. */
/* A linked list of strings. */
struct string_list
{
struct string_list *next;
char *string;
};
/* The NLM header parser in nlmheader.y stores information in the
following variables. */
extern Nlm_Internal_Fixed_Header *fixed_hdr;
extern Nlm_Internal_Variable_Header *var_hdr;
extern Nlm_Internal_Version_Header *version_hdr;
extern Nlm_Internal_Copyright_Header *copyright_hdr;
extern Nlm_Internal_Extended_Header *extended_hdr;
/* Procedure named by CHECK. */
extern char *check_procedure;
/* File named by CUSTOM. */
extern char *custom_file;
/* Whether to generate debugging information (DEBUG). */
extern bfd_boolean debug_info;
/* Procedure named by EXIT. */
extern char *exit_procedure;
/* Exported symbols (EXPORT). */
extern struct string_list *export_symbols;
/* List of files from INPUT. */
extern struct string_list *input_files;
/* Map file name (MAP, FULLMAP). */
extern char *map_file;
/* Whether a full map has been requested (FULLMAP). */
extern bfd_boolean full_map;
/* File named by HELP. */
extern char *help_file;
/* Imported symbols (IMPORT). */
extern struct string_list *import_symbols;
/* File named by MESSAGES. */
extern char *message_file;
/* Autoload module list (MODULE). */
extern struct string_list *modules;
/* File named by OUTPUT. */
extern char *output_file;
/* File named by SHARELIB. */
extern char *sharelib_file;
/* Start procedure name (START). */
extern char *start_procedure;
/* VERBOSE. */
extern bfd_boolean verbose;
/* RPC description file (XDCDATA). */
extern char *rpc_file;
/* The number of serious parse errors. */
extern int parse_errors;
/* The parser. */
extern int yyparse (void);
/* Tell the lexer what file to read. */
extern bfd_boolean nlmlex_file (const char *);

View File

@@ -1,960 +0,0 @@
%{/* nlmheader.y - parse NLM header specification keywords.
Copyright 1993, 1994, 1995, 1997, 1998, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Ian Lance Taylor <ian@cygnus.com>.
This bison file parses the commands recognized by the NetWare NLM
linker, except for lists of object files. It stores the
information in global variables.
This implementation is based on the description in the NetWare Tool
Maker Specification manual, edition 1.0. */
#include "ansidecl.h"
#include <stdio.h>
#include "safe-ctype.h"
#include "bfd.h"
#include "bucomm.h"
#include "nlm/common.h"
#include "nlm/internal.h"
#include "nlmconv.h"
/* Information is stored in the structures pointed to by these
variables. */
Nlm_Internal_Fixed_Header *fixed_hdr;
Nlm_Internal_Variable_Header *var_hdr;
Nlm_Internal_Version_Header *version_hdr;
Nlm_Internal_Copyright_Header *copyright_hdr;
Nlm_Internal_Extended_Header *extended_hdr;
/* Procedure named by CHECK. */
char *check_procedure;
/* File named by CUSTOM. */
char *custom_file;
/* Whether to generate debugging information (DEBUG). */
bfd_boolean debug_info;
/* Procedure named by EXIT. */
char *exit_procedure;
/* Exported symbols (EXPORT). */
struct string_list *export_symbols;
/* List of files from INPUT. */
struct string_list *input_files;
/* Map file name (MAP, FULLMAP). */
char *map_file;
/* Whether a full map has been requested (FULLMAP). */
bfd_boolean full_map;
/* File named by HELP. */
char *help_file;
/* Imported symbols (IMPORT). */
struct string_list *import_symbols;
/* File named by MESSAGES. */
char *message_file;
/* Autoload module list (MODULE). */
struct string_list *modules;
/* File named by OUTPUT. */
char *output_file;
/* File named by SHARELIB. */
char *sharelib_file;
/* Start procedure name (START). */
char *start_procedure;
/* VERBOSE. */
bfd_boolean verbose;
/* RPC description file (XDCDATA). */
char *rpc_file;
/* The number of serious errors that have occurred. */
int parse_errors;
/* The current symbol prefix when reading a list of import or export
symbols. */
static char *symbol_prefix;
/* Parser error message handler. */
#define yyerror(msg) nlmheader_error (msg);
/* Local functions. */
static int yylex (void);
static void nlmlex_file_push (const char *);
static bfd_boolean nlmlex_file_open (const char *);
static int nlmlex_buf_init (void);
static char nlmlex_buf_add (int);
static long nlmlex_get_number (const char *);
static void nlmheader_identify (void);
static void nlmheader_warn (const char *, int);
static void nlmheader_error (const char *);
static struct string_list * string_list_cons (char *, struct string_list *);
static struct string_list * string_list_append (struct string_list *,
struct string_list *);
static struct string_list * string_list_append1 (struct string_list *,
char *);
static char *xstrdup (const char *);
%}
%union
{
char *string;
struct string_list *list;
};
/* The reserved words. */
%token CHECK CODESTART COPYRIGHT CUSTOM DATE DEBUG DESCRIPTION EXIT
%token EXPORT FLAG_ON FLAG_OFF FULLMAP HELP IMPORT INPUT MAP MESSAGES
%token MODULE MULTIPLE OS_DOMAIN OUTPUT PSEUDOPREEMPTION REENTRANT
%token SCREENNAME SHARELIB STACK START SYNCHRONIZE
%token THREADNAME TYPE VERBOSE VERSIONK XDCDATA
/* Arguments. */
%token <string> STRING
%token <string> QUOTED_STRING
/* Typed non-terminals. */
%type <list> symbol_list_opt symbol_list string_list
%type <string> symbol
%%
/* Keywords must start in the leftmost column of the file. Arguments
may appear anywhere else. The lexer uses this to determine what
token to return, so we don't have to worry about it here. */
/* The entire file is just a list of commands. */
file:
commands
;
/* A possibly empty list of commands. */
commands:
/* May be empty. */
| command commands
;
/* A single command. There is where most of the work takes place. */
command:
CHECK STRING
{
check_procedure = $2;
}
| CODESTART STRING
{
nlmheader_warn (_("CODESTART is not implemented; sorry"), -1);
free ($2);
}
| COPYRIGHT QUOTED_STRING
{
int len;
strncpy (copyright_hdr->stamp, "CoPyRiGhT=", 10);
len = strlen ($2);
if (len >= NLM_MAX_COPYRIGHT_MESSAGE_LENGTH)
{
nlmheader_warn (_("copyright string is too long"),
NLM_MAX_COPYRIGHT_MESSAGE_LENGTH - 1);
len = NLM_MAX_COPYRIGHT_MESSAGE_LENGTH - 1;
}
copyright_hdr->copyrightMessageLength = len;
strncpy (copyright_hdr->copyrightMessage, $2, len);
copyright_hdr->copyrightMessage[len] = '\0';
free ($2);
}
| CUSTOM STRING
{
custom_file = $2;
}
| DATE STRING STRING STRING
{
/* We don't set the version stamp here, because we use the
version stamp to detect whether the required VERSION
keyword was given. */
version_hdr->month = nlmlex_get_number ($2);
version_hdr->day = nlmlex_get_number ($3);
version_hdr->year = nlmlex_get_number ($4);
free ($2);
free ($3);
free ($4);
if (version_hdr->month < 1 || version_hdr->month > 12)
nlmheader_warn (_("illegal month"), -1);
if (version_hdr->day < 1 || version_hdr->day > 31)
nlmheader_warn (_("illegal day"), -1);
if (version_hdr->year < 1900 || version_hdr->year > 3000)
nlmheader_warn (_("illegal year"), -1);
}
| DEBUG
{
debug_info = TRUE;
}
| DESCRIPTION QUOTED_STRING
{
int len;
len = strlen ($2);
if (len > NLM_MAX_DESCRIPTION_LENGTH)
{
nlmheader_warn (_("description string is too long"),
NLM_MAX_DESCRIPTION_LENGTH);
len = NLM_MAX_DESCRIPTION_LENGTH;
}
var_hdr->descriptionLength = len;
strncpy (var_hdr->descriptionText, $2, len);
var_hdr->descriptionText[len] = '\0';
free ($2);
}
| EXIT STRING
{
exit_procedure = $2;
}
| EXPORT
{
symbol_prefix = NULL;
}
symbol_list_opt
{
export_symbols = string_list_append (export_symbols, $3);
}
| FLAG_ON STRING
{
fixed_hdr->flags |= nlmlex_get_number ($2);
free ($2);
}
| FLAG_OFF STRING
{
fixed_hdr->flags &=~ nlmlex_get_number ($2);
free ($2);
}
| FULLMAP
{
map_file = "";
full_map = TRUE;
}
| FULLMAP STRING
{
map_file = $2;
full_map = TRUE;
}
| HELP STRING
{
help_file = $2;
}
| IMPORT
{
symbol_prefix = NULL;
}
symbol_list_opt
{
import_symbols = string_list_append (import_symbols, $3);
}
| INPUT string_list
{
input_files = string_list_append (input_files, $2);
}
| MAP
{
map_file = "";
}
| MAP STRING
{
map_file = $2;
}
| MESSAGES STRING
{
message_file = $2;
}
| MODULE string_list
{
modules = string_list_append (modules, $2);
}
| MULTIPLE
{
fixed_hdr->flags |= 0x2;
}
| OS_DOMAIN
{
fixed_hdr->flags |= 0x10;
}
| OUTPUT STRING
{
if (output_file == NULL)
output_file = $2;
else
nlmheader_warn (_("ignoring duplicate OUTPUT statement"), -1);
}
| PSEUDOPREEMPTION
{
fixed_hdr->flags |= 0x8;
}
| REENTRANT
{
fixed_hdr->flags |= 0x1;
}
| SCREENNAME QUOTED_STRING
{
int len;
len = strlen ($2);
if (len >= NLM_MAX_SCREEN_NAME_LENGTH)
{
nlmheader_warn (_("screen name is too long"),
NLM_MAX_SCREEN_NAME_LENGTH);
len = NLM_MAX_SCREEN_NAME_LENGTH;
}
var_hdr->screenNameLength = len;
strncpy (var_hdr->screenName, $2, len);
var_hdr->screenName[NLM_MAX_SCREEN_NAME_LENGTH] = '\0';
free ($2);
}
| SHARELIB STRING
{
sharelib_file = $2;
}
| STACK STRING
{
var_hdr->stackSize = nlmlex_get_number ($2);
free ($2);
}
| START STRING
{
start_procedure = $2;
}
| SYNCHRONIZE
{
fixed_hdr->flags |= 0x4;
}
| THREADNAME QUOTED_STRING
{
int len;
len = strlen ($2);
if (len >= NLM_MAX_THREAD_NAME_LENGTH)
{
nlmheader_warn (_("thread name is too long"),
NLM_MAX_THREAD_NAME_LENGTH);
len = NLM_MAX_THREAD_NAME_LENGTH;
}
var_hdr->threadNameLength = len;
strncpy (var_hdr->threadName, $2, len);
var_hdr->threadName[len] = '\0';
free ($2);
}
| TYPE STRING
{
fixed_hdr->moduleType = nlmlex_get_number ($2);
free ($2);
}
| VERBOSE
{
verbose = TRUE;
}
| VERSIONK STRING STRING STRING
{
long val;
strncpy (version_hdr->stamp, "VeRsIoN#", 8);
version_hdr->majorVersion = nlmlex_get_number ($2);
val = nlmlex_get_number ($3);
if (val < 0 || val > 99)
nlmheader_warn (_("illegal minor version number (must be between 0 and 99)"),
-1);
else
version_hdr->minorVersion = val;
val = nlmlex_get_number ($4);
if (val < 0)
nlmheader_warn (_("illegal revision number (must be between 0 and 26)"),
-1);
else if (val > 26)
version_hdr->revision = 0;
else
version_hdr->revision = val;
free ($2);
free ($3);
free ($4);
}
| VERSIONK STRING STRING
{
long val;
strncpy (version_hdr->stamp, "VeRsIoN#", 8);
version_hdr->majorVersion = nlmlex_get_number ($2);
val = nlmlex_get_number ($3);
if (val < 0 || val > 99)
nlmheader_warn (_("illegal minor version number (must be between 0 and 99)"),
-1);
else
version_hdr->minorVersion = val;
version_hdr->revision = 0;
free ($2);
free ($3);
}
| XDCDATA STRING
{
rpc_file = $2;
}
;
/* A possibly empty list of symbols. */
symbol_list_opt:
/* Empty. */
{
$$ = NULL;
}
| symbol_list
{
$$ = $1;
}
;
/* A list of symbols in an import or export list. Prefixes may appear
in parentheses. We need to use left recursion here to avoid
building up a large import list on the parser stack. */
symbol_list:
symbol
{
$$ = string_list_cons ($1, NULL);
}
| symbol_prefix
{
$$ = NULL;
}
| symbol_list symbol
{
$$ = string_list_append1 ($1, $2);
}
| symbol_list symbol_prefix
{
$$ = $1;
}
;
/* A prefix for subsequent symbols. */
symbol_prefix:
'(' STRING ')'
{
if (symbol_prefix != NULL)
free (symbol_prefix);
symbol_prefix = $2;
}
;
/* A single symbol. */
symbol:
STRING
{
if (symbol_prefix == NULL)
$$ = $1;
else
{
$$ = xmalloc (strlen (symbol_prefix) + strlen ($1) + 2);
sprintf ($$, "%s@%s", symbol_prefix, $1);
free ($1);
}
}
;
/* A list of strings. */
string_list:
/* May be empty. */
{
$$ = NULL;
}
| STRING string_list
{
$$ = string_list_cons ($1, $2);
}
;
%%
/* If strerror is just a macro, we want to use the one from libiberty
since it will handle undefined values. */
#undef strerror
extern char *strerror PARAMS ((int));
/* The lexer is simple, too simple for flex. Keywords are only
recognized at the start of lines. Everything else must be an
argument. A comma is treated as whitespace. */
/* The states the lexer can be in. */
enum lex_state
{
/* At the beginning of a line. */
BEGINNING_OF_LINE,
/* In the middle of a line. */
IN_LINE
};
/* We need to keep a stack of files to handle file inclusion. */
struct input
{
/* The file to read from. */
FILE *file;
/* The name of the file. */
char *name;
/* The current line number. */
int lineno;
/* The current state. */
enum lex_state state;
/* The next file on the stack. */
struct input *next;
};
/* The current input file. */
static struct input current;
/* The character which introduces comments. */
#define COMMENT_CHAR '#'
/* Start the lexer going on the main input file. */
bfd_boolean
nlmlex_file (const char *name)
{
current.next = NULL;
return nlmlex_file_open (name);
}
/* Start the lexer going on a subsidiary input file. */
static void
nlmlex_file_push (const char *name)
{
struct input *push;
push = (struct input *) xmalloc (sizeof (struct input));
*push = current;
if (nlmlex_file_open (name))
current.next = push;
else
{
current = *push;
free (push);
}
}
/* Start lexing from a file. */
static bfd_boolean
nlmlex_file_open (const char *name)
{
current.file = fopen (name, "r");
if (current.file == NULL)
{
fprintf (stderr, "%s:%s: %s\n", program_name, name, strerror (errno));
++parse_errors;
return FALSE;
}
current.name = xstrdup (name);
current.lineno = 1;
current.state = BEGINNING_OF_LINE;
return TRUE;
}
/* Table used to turn keywords into tokens. */
struct keyword_tokens_struct
{
const char *keyword;
int token;
};
struct keyword_tokens_struct keyword_tokens[] =
{
{ "CHECK", CHECK },
{ "CODESTART", CODESTART },
{ "COPYRIGHT", COPYRIGHT },
{ "CUSTOM", CUSTOM },
{ "DATE", DATE },
{ "DEBUG", DEBUG },
{ "DESCRIPTION", DESCRIPTION },
{ "EXIT", EXIT },
{ "EXPORT", EXPORT },
{ "FLAG_ON", FLAG_ON },
{ "FLAG_OFF", FLAG_OFF },
{ "FULLMAP", FULLMAP },
{ "HELP", HELP },
{ "IMPORT", IMPORT },
{ "INPUT", INPUT },
{ "MAP", MAP },
{ "MESSAGES", MESSAGES },
{ "MODULE", MODULE },
{ "MULTIPLE", MULTIPLE },
{ "OS_DOMAIN", OS_DOMAIN },
{ "OUTPUT", OUTPUT },
{ "PSEUDOPREEMPTION", PSEUDOPREEMPTION },
{ "REENTRANT", REENTRANT },
{ "SCREENNAME", SCREENNAME },
{ "SHARELIB", SHARELIB },
{ "STACK", STACK },
{ "STACKSIZE", STACK },
{ "START", START },
{ "SYNCHRONIZE", SYNCHRONIZE },
{ "THREADNAME", THREADNAME },
{ "TYPE", TYPE },
{ "VERBOSE", VERBOSE },
{ "VERSION", VERSIONK },
{ "XDCDATA", XDCDATA }
};
#define KEYWORD_COUNT (sizeof (keyword_tokens) / sizeof (keyword_tokens[0]))
/* The lexer accumulates strings in these variables. */
static char *lex_buf;
static int lex_size;
static int lex_pos;
/* Start accumulating strings into the buffer. */
#define BUF_INIT() \
((void) (lex_buf != NULL ? lex_pos = 0 : nlmlex_buf_init ()))
static int
nlmlex_buf_init (void)
{
lex_size = 10;
lex_buf = xmalloc (lex_size + 1);
lex_pos = 0;
return 0;
}
/* Finish a string in the buffer. */
#define BUF_FINISH() ((void) (lex_buf[lex_pos] = '\0'))
/* Accumulate a character into the buffer. */
#define BUF_ADD(c) \
((void) (lex_pos < lex_size \
? lex_buf[lex_pos++] = (c) \
: nlmlex_buf_add (c)))
static char
nlmlex_buf_add (int c)
{
if (lex_pos >= lex_size)
{
lex_size *= 2;
lex_buf = xrealloc (lex_buf, lex_size + 1);
}
return lex_buf[lex_pos++] = c;
}
/* The lexer proper. This is called by the bison generated parsing
code. */
static int
yylex (void)
{
int c;
tail_recurse:
c = getc (current.file);
/* Commas are treated as whitespace characters. */
while (ISSPACE (c) || c == ',')
{
current.state = IN_LINE;
if (c == '\n')
{
++current.lineno;
current.state = BEGINNING_OF_LINE;
}
c = getc (current.file);
}
/* At the end of the file we either pop to the previous file or
finish up. */
if (c == EOF)
{
fclose (current.file);
free (current.name);
if (current.next == NULL)
return 0;
else
{
struct input *next;
next = current.next;
current = *next;
free (next);
goto tail_recurse;
}
}
/* A comment character always means to drop everything until the
next newline. */
if (c == COMMENT_CHAR)
{
do
{
c = getc (current.file);
}
while (c != '\n');
++current.lineno;
current.state = BEGINNING_OF_LINE;
goto tail_recurse;
}
/* An '@' introduces an include file. */
if (c == '@')
{
do
{
c = getc (current.file);
if (c == '\n')
++current.lineno;
}
while (ISSPACE (c));
BUF_INIT ();
while (! ISSPACE (c) && c != EOF)
{
BUF_ADD (c);
c = getc (current.file);
}
BUF_FINISH ();
ungetc (c, current.file);
nlmlex_file_push (lex_buf);
goto tail_recurse;
}
/* A non-space character at the start of a line must be the start of
a keyword. */
if (current.state == BEGINNING_OF_LINE)
{
BUF_INIT ();
while (ISALNUM (c) || c == '_')
{
BUF_ADD (TOUPPER (c));
c = getc (current.file);
}
BUF_FINISH ();
if (c != EOF && ! ISSPACE (c) && c != ',')
{
nlmheader_identify ();
fprintf (stderr, _("%s:%d: illegal character in keyword: %c\n"),
current.name, current.lineno, c);
}
else
{
unsigned int i;
for (i = 0; i < KEYWORD_COUNT; i++)
{
if (lex_buf[0] == keyword_tokens[i].keyword[0]
&& strcmp (lex_buf, keyword_tokens[i].keyword) == 0)
{
/* Pushing back the final whitespace avoids worrying
about \n here. */
ungetc (c, current.file);
current.state = IN_LINE;
return keyword_tokens[i].token;
}
}
nlmheader_identify ();
fprintf (stderr, _("%s:%d: unrecognized keyword: %s\n"),
current.name, current.lineno, lex_buf);
}
++parse_errors;
/* Treat the rest of this line as a comment. */
ungetc (COMMENT_CHAR, current.file);
goto tail_recurse;
}
/* Parentheses just represent themselves. */
if (c == '(' || c == ')')
return c;
/* Handle quoted strings. */
if (c == '"' || c == '\'')
{
int quote;
int start_lineno;
quote = c;
start_lineno = current.lineno;
c = getc (current.file);
BUF_INIT ();
while (c != quote && c != EOF)
{
BUF_ADD (c);
if (c == '\n')
++current.lineno;
c = getc (current.file);
}
BUF_FINISH ();
if (c == EOF)
{
nlmheader_identify ();
fprintf (stderr, _("%s:%d: end of file in quoted string\n"),
current.name, start_lineno);
++parse_errors;
}
/* FIXME: Possible memory leak. */
yylval.string = xstrdup (lex_buf);
return QUOTED_STRING;
}
/* Gather a generic argument. */
BUF_INIT ();
while (! ISSPACE (c)
&& c != ','
&& c != COMMENT_CHAR
&& c != '('
&& c != ')')
{
BUF_ADD (c);
c = getc (current.file);
}
BUF_FINISH ();
ungetc (c, current.file);
/* FIXME: Possible memory leak. */
yylval.string = xstrdup (lex_buf);
return STRING;
}
/* Get a number from a string. */
static long
nlmlex_get_number (const char *s)
{
long ret;
char *send;
ret = strtol (s, &send, 10);
if (*send != '\0')
nlmheader_warn (_("bad number"), -1);
return ret;
}
/* Prefix the nlmconv warnings with a note as to where they come from.
We don't use program_name on every warning, because then some
versions of the emacs next-error function can't recognize the line
number. */
static void
nlmheader_identify (void)
{
static int done;
if (! done)
{
fprintf (stderr, _("%s: problems in NLM command language input:\n"),
program_name);
done = 1;
}
}
/* Issue a warning. */
static void
nlmheader_warn (const char *s, int imax)
{
nlmheader_identify ();
fprintf (stderr, "%s:%d: %s", current.name, current.lineno, s);
if (imax != -1)
fprintf (stderr, " (max %d)", imax);
fprintf (stderr, "\n");
}
/* Report an error. */
static void
nlmheader_error (const char *s)
{
nlmheader_warn (s, -1);
++parse_errors;
}
/* Add a string to a string list. */
static struct string_list *
string_list_cons (char *s, struct string_list *l)
{
struct string_list *ret;
ret = (struct string_list *) xmalloc (sizeof (struct string_list));
ret->next = l;
ret->string = s;
return ret;
}
/* Append a string list to another string list. */
static struct string_list *
string_list_append (struct string_list *l1, struct string_list *l2)
{
register struct string_list **pp;
for (pp = &l1; *pp != NULL; pp = &(*pp)->next)
;
*pp = l2;
return l1;
}
/* Append a string to a string list. */
static struct string_list *
string_list_append1 (struct string_list *l, char *s)
{
struct string_list *n;
register struct string_list **pp;
n = (struct string_list *) xmalloc (sizeof (struct string_list));
n->next = NULL;
n->string = s;
for (pp = &l; *pp != NULL; pp = &(*pp)->next)
;
*pp = n;
return l;
}
/* Duplicate a string in memory. */
static char *
xstrdup (const char *s)
{
unsigned long len;
char *ret;
len = strlen (s);
ret = xmalloc (len + 1);
strcpy (ret, s);
return ret;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +0,0 @@
/* Linked with ar.o to flag that this program is 'ar' (not 'ranlib'). */
int is_ranlib = 0;

View File

@@ -1,4 +0,0 @@
/* Linked with objcopy.o to flag that this program is 'objcopy' (not
'strip'). */
int is_strip = 0;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
*.gmo

View File

@@ -1,253 +0,0 @@
# Makefile for program source directory in GNU NLS utilities package.
# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
#
# This file file be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
PACKAGE = @PACKAGE@
VERSION = @VERSION@
SHELL = /bin/sh
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
datadir = $(prefix)/@DATADIRNAME@
localedir = $(datadir)/locale
gnulocaledir = $(prefix)/share/locale
gettextsrcdir = $(prefix)/share/gettext/po
subdir = po
DESTDIR =
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
MKINSTALLDIRS = @MKINSTALLDIRS@
CC = @CC@
GENCAT = @GENCAT@
GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
MSGFMT = @MSGFMT@
XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
MSGMERGE = PATH=../src:$$PATH msgmerge
DEFS = @DEFS@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@
INCLUDES = -I.. -I$(top_srcdir)/intl
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
SOURCES = cat-id-tbl.c
POFILES = @POFILES@
GMOFILES = @GMOFILES@
DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
POTFILES = \
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
INSTOBJEXT = @INSTOBJEXT@
.SUFFIXES:
.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
.c.o:
$(COMPILE) $<
.po.pox:
$(MAKE) $(PACKAGE).pot
$(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
.po.mo:
$(MSGFMT) -o $@ $<
.po.gmo:
file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
&& rm -f $$file && $(GMSGFMT) -o $$file $<
.po.cat:
sed -f ../intl/po2msg.sed < $< > $*.msg \
&& rm -f $@ && $(GENCAT) $@ $*.msg
all: all-@USE_NLS@
all-yes: $(CATALOGS) @MAINT@ $(PACKAGE).pot
all-no:
$(srcdir)/$(PACKAGE).pot: $(POTFILES)
$(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
--add-comments --keyword=_ --keyword=N_ \
--files-from=$(srcdir)/POTFILES.in
rm -f $(srcdir)/$(PACKAGE).pot
mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
$(srcdir)/stamp-cat-id: $(PACKAGE).pot
rm -f cat-id-tbl.tmp
sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
| sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
rm cat-id-tbl.tmp; \
else \
echo cat-id-tbl.c changed; \
rm -f $(srcdir)/cat-id-tbl.c; \
mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
fi
cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
install: install-exec install-data
install-exec:
install-info:
install-data: install-data-@USE_NLS@
install-data-no: all
install-data-yes: all
if test -r $(MKINSTALLDIRS); then \
$(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
else \
$(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
fi
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
case "$$cat" in \
*.gmo) destdir=$(gnulocaledir);; \
*) destdir=$(localedir);; \
esac; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
if test -r $(MKINSTALLDIRS); then \
$(MKINSTALLDIRS) $$dir; \
else \
$(top_srcdir)/mkinstalldirs $$dir; \
fi; \
if test -r $$cat; then \
$(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
else \
$(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
echo "installing $(srcdir)/$$cat as" \
"$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
fi; \
if test -r $$cat.m; then \
$(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
else \
if test -r $(srcdir)/$$cat.m ; then \
$(INSTALL_DATA) $(srcdir)/$$cat.m \
$$dir/$(PACKAGE)$(INSTOBJEXT).m; \
echo "installing $(srcdir)/$$cat as" \
"$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
else \
true; \
fi; \
fi; \
done
if test "$(PACKAGE)" = "gettext"; then \
if test -r $(MKINSTALLDIRS); then \
$(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
else \
$(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
fi; \
$(INSTALL_DATA) $(srcdir)/Makefile.in.in \
$(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
else \
: ; \
fi
# Define this as empty until I found a useful application.
installcheck:
uninstall:
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
done
rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
check: all
cat-id-tbl.o: ../intl/libgettext.h
dvi info tags TAGS ID:
mostlyclean:
rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
rm -fr *.o
clean: mostlyclean
distclean: clean
rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
maintainer-clean: distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
rm -f $(GMOFILES)
distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
dist distdir: update-po $(DISTFILES)
dists="$(DISTFILES)"; \
for file in $$dists; do \
ln $(srcdir)/$$file $(distdir) 2> /dev/null \
|| cp -p $(srcdir)/$$file $(distdir); \
done
update-po: Makefile
$(MAKE) $(PACKAGE).pot
PATH=`pwd`/../src:$$PATH; \
cd $(srcdir); \
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
mv $$lang.po $$lang.old.po; \
echo "$$lang:"; \
if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
rm -f $$lang.old.po; \
else \
echo "msgmerge for $$cat failed!"; \
rm -f $$lang.po; \
mv $$lang.old.po $$lang.po; \
fi; \
done
POTFILES: POTFILES.in
( if test 'x$(srcdir)' != 'x.'; then \
posrcprefix='$(top_srcdir)/'; \
else \
posrcprefix="../"; \
fi; \
rm -f $@-t $@ \
&& (sed -e '/^#/d' -e '/^[ ]*$$/d' \
-e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
| sed -e '$$s/\\$$//') > $@-t \
&& chmod a-w $@-t \
&& mv $@-t $@ )
POTFILES.in: @MAINT@ ../Makefile
cd .. && $(MAKE) po/POTFILES.in
Makefile: Make-in ../config.status POTFILES
cd .. \
&& CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
CONFIG_HEADERS= $(SHELL) ./config.status
# Tell versions [3.59,3.63) of GNU make not to export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@@ -1,60 +0,0 @@
addr2line.c
ar.c
arsup.c
arsup.h
binemul.c
binemul.h
bucomm.c
bucomm.h
budbg.h
budemang.c
budemang.h
coffdump.c
coffgrok.c
coffgrok.h
cxxfilt.c
debug.c
debug.c
debug.h
dlltool.c
dlltool.h
dllwrap.c
emul_aix.c
emul_vanilla.c
filemode.c
ieee.c
ieee.c
is-ranlib.c
is-strip.c
maybe-ranlib.c
maybe-strip.c
nlmconv.c
nlmconv.h
nm.c
not-ranlib.c
not-strip.c
objcopy.c
objdump.c
prdbg.c
rdcoff.c
rdcoff.c
rddbg.c
rddbg.c
readelf.c
rename.c
resbin.c
rescoff.c
resrc.c
resres.c
size.c
srconv.c
stabs.c
stabs.c
strings.c
sysdump.c
version.c
windres.c
windres.h
winduni.c
winduni.h
wrstabs.c

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +0,0 @@
#!/bin/sh
# A simple ranlib script, to use less disk space than a ranlib program.
ar s "$1"

View File

@@ -1,496 +0,0 @@
%{ /* rclex.l -- lexer for Windows rc files parser */
/* Copyright 1997, 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
/* This is a lex input file which generates a lexer used by the
Windows rc file parser. It basically just recognized a bunch of
keywords. */
#include "bfd.h"
#include "bucomm.h"
#include "libiberty.h"
#include "safe-ctype.h"
#include "windres.h"
#include "rcparse.h"
#include <assert.h>
/* Whether we are in rcdata mode, in which we returns the lengths of
strings. */
static int rcdata_mode;
/* Whether we are supressing lines from cpp (including windows.h or
headers from your C sources may bring in externs and typedefs).
When active, we return IGNORED_TOKEN, which lets us ignore these
outside of resource constructs. Thus, it isn't required to protect
all the non-preprocessor lines in your header files with #ifdef
RC_INVOKED. It also means your RC file can't include other RC
files if they're named "*.h". Sorry. Name them *.rch or whatever. */
static int suppress_cpp_data;
#define MAYBE_RETURN(x) return suppress_cpp_data ? IGNORED_TOKEN : (x)
/* The first filename we detect in the cpp output. We use this to
tell included files from the original file. */
static char *initial_fn;
/* List of allocated strings. */
struct alloc_string
{
struct alloc_string *next;
char *s;
};
static struct alloc_string *strings;
/* Local functions. */
static void cpp_line (const char *);
static char *handle_quotes (const char *, unsigned long *);
static char *get_string (int);
%}
%%
"BEGIN" { MAYBE_RETURN (BEG); }
"{" { MAYBE_RETURN (BEG); }
"END" { MAYBE_RETURN (END); }
"}" { MAYBE_RETURN (END); }
"ACCELERATORS" { MAYBE_RETURN (ACCELERATORS); }
"VIRTKEY" { MAYBE_RETURN (VIRTKEY); }
"ASCII" { MAYBE_RETURN (ASCII); }
"NOINVERT" { MAYBE_RETURN (NOINVERT); }
"SHIFT" { MAYBE_RETURN (SHIFT); }
"CONTROL" { MAYBE_RETURN (CONTROL); }
"ALT" { MAYBE_RETURN (ALT); }
"BITMAP" { MAYBE_RETURN (BITMAP); }
"CURSOR" { MAYBE_RETURN (CURSOR); }
"DIALOG" { MAYBE_RETURN (DIALOG); }
"DIALOGEX" { MAYBE_RETURN (DIALOGEX); }
"EXSTYLE" { MAYBE_RETURN (EXSTYLE); }
"CAPTION" { MAYBE_RETURN (CAPTION); }
"CLASS" { MAYBE_RETURN (CLASS); }
"STYLE" { MAYBE_RETURN (STYLE); }
"AUTO3STATE" { MAYBE_RETURN (AUTO3STATE); }
"AUTOCHECKBOX" { MAYBE_RETURN (AUTOCHECKBOX); }
"AUTORADIOBUTTON" { MAYBE_RETURN (AUTORADIOBUTTON); }
"CHECKBOX" { MAYBE_RETURN (CHECKBOX); }
"COMBOBOX" { MAYBE_RETURN (COMBOBOX); }
"CTEXT" { MAYBE_RETURN (CTEXT); }
"DEFPUSHBUTTON" { MAYBE_RETURN (DEFPUSHBUTTON); }
"EDITTEXT" { MAYBE_RETURN (EDITTEXT); }
"GROUPBOX" { MAYBE_RETURN (GROUPBOX); }
"LISTBOX" { MAYBE_RETURN (LISTBOX); }
"LTEXT" { MAYBE_RETURN (LTEXT); }
"PUSHBOX" { MAYBE_RETURN (PUSHBOX); }
"PUSHBUTTON" { MAYBE_RETURN (PUSHBUTTON); }
"RADIOBUTTON" { MAYBE_RETURN (RADIOBUTTON); }
"RTEXT" { MAYBE_RETURN (RTEXT); }
"SCROLLBAR" { MAYBE_RETURN (SCROLLBAR); }
"STATE3" { MAYBE_RETURN (STATE3); }
"USERBUTTON" { MAYBE_RETURN (USERBUTTON); }
"BEDIT" { MAYBE_RETURN (BEDIT); }
"HEDIT" { MAYBE_RETURN (HEDIT); }
"IEDIT" { MAYBE_RETURN (IEDIT); }
"FONT" { MAYBE_RETURN (FONT); }
"ICON" { MAYBE_RETURN (ICON); }
"LANGUAGE" { MAYBE_RETURN (LANGUAGE); }
"CHARACTERISTICS" { MAYBE_RETURN (CHARACTERISTICS); }
"VERSION" { MAYBE_RETURN (VERSIONK); }
"MENU" { MAYBE_RETURN (MENU); }
"MENUEX" { MAYBE_RETURN (MENUEX); }
"MENUITEM" { MAYBE_RETURN (MENUITEM); }
"SEPARATOR" { MAYBE_RETURN (SEPARATOR); }
"POPUP" { MAYBE_RETURN (POPUP); }
"CHECKED" { MAYBE_RETURN (CHECKED); }
"GRAYED" { MAYBE_RETURN (GRAYED); }
"HELP" { MAYBE_RETURN (HELP); }
"INACTIVE" { MAYBE_RETURN (INACTIVE); }
"MENUBARBREAK" { MAYBE_RETURN (MENUBARBREAK); }
"MENUBREAK" { MAYBE_RETURN (MENUBREAK); }
"MESSAGETABLE" { MAYBE_RETURN (MESSAGETABLE); }
"RCDATA" { MAYBE_RETURN (RCDATA); }
"STRINGTABLE" { MAYBE_RETURN (STRINGTABLE); }
"VERSIONINFO" { MAYBE_RETURN (VERSIONINFO); }
"FILEVERSION" { MAYBE_RETURN (FILEVERSION); }
"PRODUCTVERSION" { MAYBE_RETURN (PRODUCTVERSION); }
"FILEFLAGSMASK" { MAYBE_RETURN (FILEFLAGSMASK); }
"FILEFLAGS" { MAYBE_RETURN (FILEFLAGS); }
"FILEOS" { MAYBE_RETURN (FILEOS); }
"FILETYPE" { MAYBE_RETURN (FILETYPE); }
"FILESUBTYPE" { MAYBE_RETURN (FILESUBTYPE); }
"VALUE" { MAYBE_RETURN (VALUE); }
"MOVEABLE" { MAYBE_RETURN (MOVEABLE); }
"FIXED" { MAYBE_RETURN (FIXED); }
"PURE" { MAYBE_RETURN (PURE); }
"IMPURE" { MAYBE_RETURN (IMPURE); }
"PRELOAD" { MAYBE_RETURN (PRELOAD); }
"LOADONCALL" { MAYBE_RETURN (LOADONCALL); }
"DISCARDABLE" { MAYBE_RETURN (DISCARDABLE); }
"NOT" { MAYBE_RETURN (NOT); }
"BLOCK"[ \t\n]*"\""[^\#\n]*"\"" {
char *s, *send;
/* This is a hack to let us parse version
information easily. */
s = strchr (yytext, '"');
++s;
send = strchr (s, '"');
if (strncmp (s, "StringFileInfo",
sizeof "StringFileInfo" - 1) == 0
&& s + sizeof "StringFileInfo" - 1 == send)
MAYBE_RETURN (BLOCKSTRINGFILEINFO);
else if (strncmp (s, "VarFileInfo",
sizeof "VarFileInfo" - 1) == 0
&& s + sizeof "VarFileInfo" - 1 == send)
MAYBE_RETURN (BLOCKVARFILEINFO);
else
{
char *r;
r = get_string (send - s + 1);
strncpy (r, s, send - s);
r[send - s] = '\0';
yylval.s = r;
MAYBE_RETURN (BLOCK);
}
}
"#"[^\n]* {
cpp_line (yytext);
}
[0-9][x0-9A-Fa-f]*L {
yylval.i.val = strtoul (yytext, 0, 0);
yylval.i.dword = 1;
MAYBE_RETURN (NUMBER);
}
[0-9][x0-9A-Fa-f]* {
yylval.i.val = strtoul (yytext, 0, 0);
yylval.i.dword = 0;
MAYBE_RETURN (NUMBER);
}
("\""[^\"\n]*"\""[ \t\n]*)+ {
char *s;
unsigned long length;
s = handle_quotes (yytext, &length);
if (! rcdata_mode)
{
yylval.s = s;
MAYBE_RETURN (QUOTEDSTRING);
}
else
{
yylval.ss.length = length;
yylval.ss.s = s;
MAYBE_RETURN (SIZEDSTRING);
}
}
[A-Za-z][^ ,\t\r\n]* {
char *s;
/* I rejected comma in a string in order to
handle VIRTKEY, CONTROL in an accelerator
resource. This means that an unquoted
file name can not contain a comma. I
don't know what rc permits. */
s = get_string (strlen (yytext) + 1);
strcpy (s, yytext);
yylval.s = s;
MAYBE_RETURN (STRING);
}
[\n] { ++rc_lineno; }
[ \t\r]+ { /* ignore whitespace */ }
. { MAYBE_RETURN (*yytext); }
%%
#ifndef yywrap
/* This is needed for some versions of lex. */
int yywrap (void)
{
return 1;
}
#endif
/* Handle a C preprocessor line. */
static void
cpp_line (const char *s)
{
int line;
char *send, *fn;
++s;
while (ISSPACE (*s))
++s;
line = strtol (s, &send, 0);
if (*send != '\0' && ! ISSPACE (*send))
return;
/* Subtract 1 because we are about to count the newline. */
rc_lineno = line - 1;
s = send;
while (ISSPACE (*s))
++s;
if (*s != '"')
return;
++s;
send = strchr (s, '"');
if (send == NULL)
return;
fn = (char *) xmalloc (send - s + 1);
strncpy (fn, s, send - s);
fn[send - s] = '\0';
free (rc_filename);
rc_filename = fn;
if (!initial_fn)
{
initial_fn = xmalloc (strlen (fn) + 1);
strcpy (initial_fn, fn);
}
/* Allow the initial file, regardless of name. Suppress all other
files if they end in ".h" (this allows included "*.rc"). */
if (strcmp (initial_fn, fn) == 0
|| strcmp (fn + strlen (fn) - 2, ".h") != 0)
suppress_cpp_data = 0;
else
suppress_cpp_data = 1;
}
/* Handle a quoted string. The quotes are stripped. A pair of quotes
in a string are turned into a single quote. Adjacent strings are
merged separated by whitespace are merged, as in C. */
static char *
handle_quotes (const char *input, unsigned long *len)
{
char *ret, *s;
const char *t;
int ch;
ret = get_string (strlen (input) + 1);
s = ret;
t = input;
if (*t == '"')
++t;
while (*t != '\0')
{
if (*t == '\\')
{
++t;
switch (*t)
{
case '\0':
rcparse_warning ("backslash at end of string");
break;
case '\"':
rcparse_warning ("use \"\" to put \" in a string");
break;
case 'a':
*s++ = ESCAPE_B; /* Strange, but true... */
++t;
break;
case 'b':
*s++ = ESCAPE_B;
++t;
break;
case 'f':
*s++ = ESCAPE_F;
++t;
break;
case 'n':
*s++ = ESCAPE_N;
++t;
break;
case 'r':
*s++ = ESCAPE_R;
++t;
break;
case 't':
*s++ = ESCAPE_T;
++t;
break;
case 'v':
*s++ = ESCAPE_V;
++t;
break;
case '\\':
*s++ = *t++;
break;
case '0': case '1': case '2': case '3':
case '4': case '5': case '6': case '7':
ch = *t - '0';
++t;
if (*t >= '0' && *t <= '7')
{
ch = (ch << 3) | (*t - '0');
++t;
if (*t >= '0' && *t <= '7')
{
ch = (ch << 3) | (*t - '0');
++t;
}
}
*s++ = ch;
break;
case 'x':
++t;
ch = 0;
while (1)
{
if (*t >= '0' && *t <= '9')
ch = (ch << 4) | (*t - '0');
else if (*t >= 'a' && *t <= 'f')
ch = (ch << 4) | (*t - 'a' + 10);
else if (*t >= 'A' && *t <= 'F')
ch = (ch << 4) | (*t - 'A' + 10);
else
break;
++t;
}
*s++ = ch;
break;
default:
rcparse_warning ("unrecognized escape sequence");
*s++ = '\\';
*s++ = *t++;
break;
}
}
else if (*t != '"')
*s++ = *t++;
else if (t[1] == '\0')
break;
else if (t[1] == '"')
{
*s++ = '"';
t += 2;
}
else
{
++t;
assert (ISSPACE (*t));
while (ISSPACE (*t))
{
if ((*t) == '\n')
++rc_lineno;
++t;
}
if (*t == '\0')
break;
assert (*t == '"');
++t;
}
}
*s = '\0';
*len = s - ret;
return ret;
}
/* Allocate a string of a given length. */
static char *
get_string (int len)
{
struct alloc_string *as;
as = (struct alloc_string *) xmalloc (sizeof *as);
as->s = xmalloc (len);
as->next = strings;
strings = as;
return as->s;
}
/* Discard all the strings we have allocated. The parser calls this
when it no longer needs them. */
void
rcparse_discard_strings (void)
{
struct alloc_string *as;
as = strings;
while (as != NULL)
{
struct alloc_string *n;
free (as->s);
n = as->next;
free (as);
as = n;
}
strings = NULL;
}
/* Enter rcdata mode. */
void
rcparse_rcdata (void)
{
rcdata_mode = 1;
}
/* Go back to normal mode from rcdata mode. */
void
rcparse_normal (void)
{
rcdata_mode = 0;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,874 +0,0 @@
/* stabs.c -- Parse COFF debugging information
Copyright 1996, 2000, 2002, 2003 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
/* This file contains code which parses COFF debugging information. */
#include "bfd.h"
#include "coff/internal.h"
#include "bucomm.h"
#include "libiberty.h"
#include "debug.h"
#include "budbg.h"
/* FIXME: We should not need this BFD internal file. We need it for
the N_BTMASK, etc., values. */
#include "libcoff.h"
/* These macros extract the right mask and shifts for this BFD. They
assume that there is a local variable named ABFD. This is so that
macros like ISFCN and DECREF, from coff/internal.h, will work
without modification. */
#define N_BTMASK (coff_data (abfd)->local_n_btmask)
#define N_BTSHFT (coff_data (abfd)->local_n_btshft)
#define N_TMASK (coff_data (abfd)->local_n_tmask)
#define N_TSHIFT (coff_data (abfd)->local_n_tshift)
/* This structure is used to hold the symbols, as well as the current
location within the symbols. */
struct coff_symbols
{
/* The symbols. */
asymbol **syms;
/* The number of symbols. */
long symcount;
/* The index of the current symbol. */
long symno;
/* The index of the current symbol in the COFF symbol table (where
each auxent counts as a symbol). */
long coff_symno;
};
/* The largest basic type we are prepared to handle. */
#define T_MAX (T_LNGDBL)
/* This structure is used to hold slots. */
struct coff_slots
{
/* Next set of slots. */
struct coff_slots *next;
/* Slots. */
#define COFF_SLOTS (16)
debug_type slots[COFF_SLOTS];
};
/* This structure is used to map symbol indices to types. */
struct coff_types
{
/* Slots. */
struct coff_slots *slots;
/* Basic types. */
debug_type basic[T_MAX + 1];
};
static debug_type *coff_get_slot (struct coff_types *, int);
static debug_type parse_coff_type
(bfd *, struct coff_symbols *, struct coff_types *, long, int,
union internal_auxent *, bfd_boolean, void *);
static debug_type parse_coff_base_type
(bfd *, struct coff_symbols *, struct coff_types *, long, int,
union internal_auxent *, void *);
static debug_type parse_coff_struct_type
(bfd *, struct coff_symbols *, struct coff_types *, int,
union internal_auxent *, void *);
static debug_type parse_coff_enum_type
(bfd *, struct coff_symbols *, struct coff_types *,
union internal_auxent *, void *);
static bfd_boolean parse_coff_symbol
(bfd *, struct coff_types *, asymbol *, long, struct internal_syment *,
void *, debug_type, bfd_boolean);
static bfd_boolean external_coff_symbol_p (int sym_class);
/* Return the slot for a type. */
static debug_type *
coff_get_slot (struct coff_types *types, int indx)
{
struct coff_slots **pps;
pps = &types->slots;
while (indx >= COFF_SLOTS)
{
if (*pps == NULL)
{
*pps = (struct coff_slots *) xmalloc (sizeof **pps);
memset (*pps, 0, sizeof **pps);
}
pps = &(*pps)->next;
indx -= COFF_SLOTS;
}
if (*pps == NULL)
{
*pps = (struct coff_slots *) xmalloc (sizeof **pps);
memset (*pps, 0, sizeof **pps);
}
return (*pps)->slots + indx;
}
/* Parse a COFF type code in NTYPE. */
static debug_type
parse_coff_type (bfd *abfd, struct coff_symbols *symbols,
struct coff_types *types, long coff_symno, int ntype,
union internal_auxent *pauxent, bfd_boolean useaux,
void *dhandle)
{
debug_type type;
if ((ntype & ~N_BTMASK) != 0)
{
int newtype;
newtype = DECREF (ntype);
if (ISPTR (ntype))
{
type = parse_coff_type (abfd, symbols, types, coff_symno, newtype,
pauxent, useaux, dhandle);
type = debug_make_pointer_type (dhandle, type);
}
else if (ISFCN (ntype))
{
type = parse_coff_type (abfd, symbols, types, coff_symno, newtype,
pauxent, useaux, dhandle);
type = debug_make_function_type (dhandle, type, (debug_type *) NULL,
FALSE);
}
else if (ISARY (ntype))
{
int n;
if (pauxent == NULL)
n = 0;
else
{
unsigned short *dim;
int i;
/* FIXME: If pauxent->x_sym.x_tagndx.l == 0, gdb sets
the c_naux field of the syment to 0. */
/* Move the dimensions down, so that the next array
picks up the next one. */
dim = pauxent->x_sym.x_fcnary.x_ary.x_dimen;
n = dim[0];
for (i = 0; *dim != 0 && i < DIMNUM - 1; i++, dim++)
*dim = *(dim + 1);
*dim = 0;
}
type = parse_coff_type (abfd, symbols, types, coff_symno, newtype,
pauxent, FALSE, dhandle);
type = debug_make_array_type (dhandle, type,
parse_coff_base_type (abfd, symbols,
types,
coff_symno,
T_INT,
NULL, dhandle),
0, n - 1, FALSE);
}
else
{
non_fatal (_("parse_coff_type: Bad type code 0x%x"), ntype);
return DEBUG_TYPE_NULL;
}
return type;
}
if (pauxent != NULL && pauxent->x_sym.x_tagndx.l > 0)
{
debug_type *slot;
/* This is a reference to an existing type. FIXME: gdb checks
that the class is not C_STRTAG, nor C_UNTAG, nor C_ENTAG. */
slot = coff_get_slot (types, pauxent->x_sym.x_tagndx.l);
if (*slot != DEBUG_TYPE_NULL)
return *slot;
else
return debug_make_indirect_type (dhandle, slot, (const char *) NULL);
}
/* If the aux entry has already been used for something, useaux will
have been set to false, indicating that parse_coff_base_type
should not use it. We need to do it this way, rather than simply
passing pauxent as NULL, because we need to be able handle
multiple array dimensions while still discarding pauxent after
having handled all of them. */
if (! useaux)
pauxent = NULL;
return parse_coff_base_type (abfd, symbols, types, coff_symno, ntype,
pauxent, dhandle);
}
/* Parse a basic COFF type in NTYPE. */
static debug_type
parse_coff_base_type (bfd *abfd, struct coff_symbols *symbols,
struct coff_types *types, long coff_symno, int ntype,
union internal_auxent *pauxent, void *dhandle)
{
debug_type ret;
bfd_boolean set_basic;
const char *name;
debug_type *slot;
if (ntype >= 0
&& ntype <= T_MAX
&& types->basic[ntype] != DEBUG_TYPE_NULL)
return types->basic[ntype];
set_basic = TRUE;
name = NULL;
switch (ntype)
{
default:
ret = debug_make_void_type (dhandle);
break;
case T_NULL:
case T_VOID:
ret = debug_make_void_type (dhandle);
name = "void";
break;
case T_CHAR:
ret = debug_make_int_type (dhandle, 1, FALSE);
name = "char";
break;
case T_SHORT:
ret = debug_make_int_type (dhandle, 2, FALSE);
name = "short";
break;
case T_INT:
/* FIXME: Perhaps the size should depend upon the architecture. */
ret = debug_make_int_type (dhandle, 4, FALSE);
name = "int";
break;
case T_LONG:
ret = debug_make_int_type (dhandle, 4, FALSE);
name = "long";
break;
case T_FLOAT:
ret = debug_make_float_type (dhandle, 4);
name = "float";
break;
case T_DOUBLE:
ret = debug_make_float_type (dhandle, 8);
name = "double";
break;
case T_LNGDBL:
ret = debug_make_float_type (dhandle, 12);
name = "long double";
break;
case T_UCHAR:
ret = debug_make_int_type (dhandle, 1, TRUE);
name = "unsigned char";
break;
case T_USHORT:
ret = debug_make_int_type (dhandle, 2, TRUE);
name = "unsigned short";
break;
case T_UINT:
ret = debug_make_int_type (dhandle, 4, TRUE);
name = "unsigned int";
break;
case T_ULONG:
ret = debug_make_int_type (dhandle, 4, TRUE);
name = "unsigned long";
break;
case T_STRUCT:
if (pauxent == NULL)
ret = debug_make_struct_type (dhandle, TRUE, 0,
(debug_field *) NULL);
else
ret = parse_coff_struct_type (abfd, symbols, types, ntype, pauxent,
dhandle);
slot = coff_get_slot (types, coff_symno);
*slot = ret;
set_basic = FALSE;
break;
case T_UNION:
if (pauxent == NULL)
ret = debug_make_struct_type (dhandle, FALSE, 0, (debug_field *) NULL);
else
ret = parse_coff_struct_type (abfd, symbols, types, ntype, pauxent,
dhandle);
slot = coff_get_slot (types, coff_symno);
*slot = ret;
set_basic = FALSE;
break;
case T_ENUM:
if (pauxent == NULL)
ret = debug_make_enum_type (dhandle, (const char **) NULL,
(bfd_signed_vma *) NULL);
else
ret = parse_coff_enum_type (abfd, symbols, types, pauxent, dhandle);
slot = coff_get_slot (types, coff_symno);
*slot = ret;
set_basic = FALSE;
break;
}
if (name != NULL)
ret = debug_name_type (dhandle, name, ret);
if (set_basic
&& ntype >= 0
&& ntype <= T_MAX)
types->basic[ntype] = ret;
return ret;
}
/* Parse a struct type. */
static debug_type
parse_coff_struct_type (bfd *abfd, struct coff_symbols *symbols,
struct coff_types *types, int ntype,
union internal_auxent *pauxent, void *dhandle)
{
long symend;
int alloc;
debug_field *fields;
int count;
bfd_boolean done;
symend = pauxent->x_sym.x_fcnary.x_fcn.x_endndx.l;
alloc = 10;
fields = (debug_field *) xmalloc (alloc * sizeof *fields);
count = 0;
done = FALSE;
while (! done
&& symbols->coff_symno < symend
&& symbols->symno < symbols->symcount)
{
asymbol *sym;
long this_coff_symno;
struct internal_syment syment;
union internal_auxent auxent;
union internal_auxent *psubaux;
bfd_vma bitpos = 0, bitsize = 0;
sym = symbols->syms[symbols->symno];
if (! bfd_coff_get_syment (abfd, sym, &syment))
{
non_fatal (_("bfd_coff_get_syment failed: %s"),
bfd_errmsg (bfd_get_error ()));
return DEBUG_TYPE_NULL;
}
this_coff_symno = symbols->coff_symno;
++symbols->symno;
symbols->coff_symno += 1 + syment.n_numaux;
if (syment.n_numaux == 0)
psubaux = NULL;
else
{
if (! bfd_coff_get_auxent (abfd, sym, 0, &auxent))
{
non_fatal (_("bfd_coff_get_auxent failed: %s"),
bfd_errmsg (bfd_get_error ()));
return DEBUG_TYPE_NULL;
}
psubaux = &auxent;
}
switch (syment.n_sclass)
{
case C_MOS:
case C_MOU:
bitpos = 8 * bfd_asymbol_value (sym);
bitsize = 0;
break;
case C_FIELD:
bitpos = bfd_asymbol_value (sym);
bitsize = auxent.x_sym.x_misc.x_lnsz.x_size;
break;
case C_EOS:
done = TRUE;
break;
}
if (! done)
{
debug_type ftype;
debug_field f;
ftype = parse_coff_type (abfd, symbols, types, this_coff_symno,
syment.n_type, psubaux, TRUE, dhandle);
f = debug_make_field (dhandle, bfd_asymbol_name (sym), ftype,
bitpos, bitsize, DEBUG_VISIBILITY_PUBLIC);
if (f == DEBUG_FIELD_NULL)
return DEBUG_TYPE_NULL;
if (count + 1 >= alloc)
{
alloc += 10;
fields = ((debug_field *)
xrealloc (fields, alloc * sizeof *fields));
}
fields[count] = f;
++count;
}
}
fields[count] = DEBUG_FIELD_NULL;
return debug_make_struct_type (dhandle, ntype == T_STRUCT,
pauxent->x_sym.x_misc.x_lnsz.x_size,
fields);
}
/* Parse an enum type. */
static debug_type
parse_coff_enum_type (bfd *abfd, struct coff_symbols *symbols,
struct coff_types *types ATTRIBUTE_UNUSED,
union internal_auxent *pauxent, void *dhandle)
{
long symend;
int alloc;
const char **names;
bfd_signed_vma *vals;
int count;
bfd_boolean done;
symend = pauxent->x_sym.x_fcnary.x_fcn.x_endndx.l;
alloc = 10;
names = (const char **) xmalloc (alloc * sizeof *names);
vals = (bfd_signed_vma *) xmalloc (alloc * sizeof *vals);
count = 0;
done = FALSE;
while (! done
&& symbols->coff_symno < symend
&& symbols->symno < symbols->symcount)
{
asymbol *sym;
struct internal_syment syment;
sym = symbols->syms[symbols->symno];
if (! bfd_coff_get_syment (abfd, sym, &syment))
{
non_fatal (_("bfd_coff_get_syment failed: %s"),
bfd_errmsg (bfd_get_error ()));
return DEBUG_TYPE_NULL;
}
++symbols->symno;
symbols->coff_symno += 1 + syment.n_numaux;
switch (syment.n_sclass)
{
case C_MOE:
if (count + 1 >= alloc)
{
alloc += 10;
names = ((const char **)
xrealloc (names, alloc * sizeof *names));
vals = ((bfd_signed_vma *)
xrealloc (vals, alloc * sizeof *vals));
}
names[count] = bfd_asymbol_name (sym);
vals[count] = bfd_asymbol_value (sym);
++count;
break;
case C_EOS:
done = TRUE;
break;
}
}
names[count] = NULL;
return debug_make_enum_type (dhandle, names, vals);
}
/* Handle a single COFF symbol. */
static bfd_boolean
parse_coff_symbol (bfd *abfd ATTRIBUTE_UNUSED, struct coff_types *types,
asymbol *sym, long coff_symno,
struct internal_syment *psyment, void *dhandle,
debug_type type, bfd_boolean within_function)
{
switch (psyment->n_sclass)
{
case C_NULL:
break;
case C_AUTO:
if (! debug_record_variable (dhandle, bfd_asymbol_name (sym), type,
DEBUG_LOCAL, bfd_asymbol_value (sym)))
return FALSE;
break;
case C_WEAKEXT:
case C_EXT:
if (! debug_record_variable (dhandle, bfd_asymbol_name (sym), type,
DEBUG_GLOBAL, bfd_asymbol_value (sym)))
return FALSE;
break;
case C_STAT:
if (! debug_record_variable (dhandle, bfd_asymbol_name (sym), type,
(within_function
? DEBUG_LOCAL_STATIC
: DEBUG_STATIC),
bfd_asymbol_value (sym)))
return FALSE;
break;
case C_REG:
/* FIXME: We may need to convert the register number. */
if (! debug_record_variable (dhandle, bfd_asymbol_name (sym), type,
DEBUG_REGISTER, bfd_asymbol_value (sym)))
return FALSE;
break;
case C_LABEL:
break;
case C_ARG:
if (! debug_record_parameter (dhandle, bfd_asymbol_name (sym), type,
DEBUG_PARM_STACK, bfd_asymbol_value (sym)))
return FALSE;
break;
case C_REGPARM:
/* FIXME: We may need to convert the register number. */
if (! debug_record_parameter (dhandle, bfd_asymbol_name (sym), type,
DEBUG_PARM_REG, bfd_asymbol_value (sym)))
return FALSE;
break;
case C_TPDEF:
type = debug_name_type (dhandle, bfd_asymbol_name (sym), type);
if (type == DEBUG_TYPE_NULL)
return FALSE;
break;
case C_STRTAG:
case C_UNTAG:
case C_ENTAG:
{
debug_type *slot;
type = debug_tag_type (dhandle, bfd_asymbol_name (sym), type);
if (type == DEBUG_TYPE_NULL)
return FALSE;
/* Store the named type into the slot, so that references get
the name. */
slot = coff_get_slot (types, coff_symno);
*slot = type;
}
break;
default:
break;
}
return TRUE;
}
/* Determine if a symbol has external visibility. */
static bfd_boolean
external_coff_symbol_p (int sym_class)
{
switch (sym_class)
{
case C_EXT:
case C_WEAKEXT:
return TRUE;
default:
break;
}
return FALSE;
}
/* This is the main routine. It looks through all the symbols and
handles them. */
bfd_boolean
parse_coff (bfd *abfd, asymbol **syms, long symcount, void *dhandle)
{
struct coff_symbols symbols;
struct coff_types types;
int i;
long next_c_file;
const char *fnname;
int fnclass;
int fntype;
bfd_vma fnend;
alent *linenos;
bfd_boolean within_function;
long this_coff_symno;
symbols.syms = syms;
symbols.symcount = symcount;
symbols.symno = 0;
symbols.coff_symno = 0;
types.slots = NULL;
for (i = 0; i <= T_MAX; i++)
types.basic[i] = DEBUG_TYPE_NULL;
next_c_file = -1;
fnname = NULL;
fnclass = 0;
fntype = 0;
fnend = 0;
linenos = NULL;
within_function = FALSE;
while (symbols.symno < symcount)
{
asymbol *sym;
const char *name;
struct internal_syment syment;
union internal_auxent auxent;
union internal_auxent *paux;
debug_type type;
sym = syms[symbols.symno];
if (! bfd_coff_get_syment (abfd, sym, &syment))
{
non_fatal (_("bfd_coff_get_syment failed: %s"),
bfd_errmsg (bfd_get_error ()));
return FALSE;
}
name = bfd_asymbol_name (sym);
this_coff_symno = symbols.coff_symno;
++symbols.symno;
symbols.coff_symno += 1 + syment.n_numaux;
/* We only worry about the first auxent, because that is the
only one which is relevant for debugging information. */
if (syment.n_numaux == 0)
paux = NULL;
else
{
if (! bfd_coff_get_auxent (abfd, sym, 0, &auxent))
{
non_fatal (_("bfd_coff_get_auxent failed: %s"),
bfd_errmsg (bfd_get_error ()));
return FALSE;
}
paux = &auxent;
}
if (this_coff_symno == next_c_file && syment.n_sclass != C_FILE)
{
/* The last C_FILE symbol points to the first external
symbol. */
if (! debug_set_filename (dhandle, "*globals*"))
return FALSE;
}
switch (syment.n_sclass)
{
case C_EFCN:
case C_EXTDEF:
case C_ULABEL:
case C_USTATIC:
case C_LINE:
case C_ALIAS:
case C_HIDDEN:
/* Just ignore these classes. */
break;
case C_FILE:
next_c_file = syment.n_value;
if (! debug_set_filename (dhandle, name))
return FALSE;
break;
case C_STAT:
/* Ignore static symbols with a type of T_NULL. These
represent section entries. */
if (syment.n_type == T_NULL)
break;
/* Fall through. */
case C_WEAKEXT:
case C_EXT:
if (ISFCN (syment.n_type))
{
fnname = name;
fnclass = syment.n_sclass;
fntype = syment.n_type;
if (syment.n_numaux > 0)
fnend = bfd_asymbol_value (sym) + auxent.x_sym.x_misc.x_fsize;
else
fnend = 0;
linenos = BFD_SEND (abfd, _get_lineno, (abfd, sym));
break;
}
type = parse_coff_type (abfd, &symbols, &types, this_coff_symno,
syment.n_type, paux, TRUE, dhandle);
if (type == DEBUG_TYPE_NULL)
return FALSE;
if (! parse_coff_symbol (abfd, &types, sym, this_coff_symno, &syment,
dhandle, type, within_function))
return FALSE;
break;
case C_FCN:
if (strcmp (name, ".bf") == 0)
{
if (fnname == NULL)
{
non_fatal (_("%ld: .bf without preceding function"),
this_coff_symno);
return FALSE;
}
type = parse_coff_type (abfd, &symbols, &types, this_coff_symno,
DECREF (fntype), paux, FALSE, dhandle);
if (type == DEBUG_TYPE_NULL)
return FALSE;
if (! debug_record_function (dhandle, fnname, type,
external_coff_symbol_p (fnclass),
bfd_asymbol_value (sym)))
return FALSE;
if (linenos != NULL)
{
int base;
bfd_vma addr;
if (syment.n_numaux == 0)
base = 0;
else
base = auxent.x_sym.x_misc.x_lnsz.x_lnno - 1;
addr = bfd_get_section_vma (abfd, bfd_get_section (sym));
++linenos;
while (linenos->line_number != 0)
{
if (! debug_record_line (dhandle,
linenos->line_number + base,
linenos->u.offset + addr))
return FALSE;
++linenos;
}
}
fnname = NULL;
linenos = NULL;
fnclass = 0;
fntype = 0;
within_function = TRUE;
}
else if (strcmp (name, ".ef") == 0)
{
if (! within_function)
{
non_fatal (_("%ld: unexpected .ef\n"), this_coff_symno);
return FALSE;
}
if (bfd_asymbol_value (sym) > fnend)
fnend = bfd_asymbol_value (sym);
if (! debug_end_function (dhandle, fnend))
return FALSE;
fnend = 0;
within_function = FALSE;
}
break;
case C_BLOCK:
if (strcmp (name, ".bb") == 0)
{
if (! debug_start_block (dhandle, bfd_asymbol_value (sym)))
return FALSE;
}
else if (strcmp (name, ".eb") == 0)
{
if (! debug_end_block (dhandle, bfd_asymbol_value (sym)))
return FALSE;
}
break;
default:
type = parse_coff_type (abfd, &symbols, &types, this_coff_symno,
syment.n_type, paux, TRUE, dhandle);
if (type == DEBUG_TYPE_NULL)
return FALSE;
if (! parse_coff_symbol (abfd, &types, sym, this_coff_symno, &syment,
dhandle, type, within_function))
return FALSE;
break;
}
}
return TRUE;
}

View File

@@ -1,442 +0,0 @@
/* rddbg.c -- Read debugging information into a generic form.
Copyright 1995, 1996, 1997, 2000, 2002, 2003
Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
/* This file reads debugging information into a generic form. This
file knows how to dig the debugging information out of an object
file. */
#include "bfd.h"
#include "bucomm.h"
#include "libiberty.h"
#include "debug.h"
#include "budbg.h"
static bfd_boolean read_section_stabs_debugging_info
(bfd *, asymbol **, long, void *, bfd_boolean *);
static bfd_boolean read_symbol_stabs_debugging_info
(bfd *, asymbol **, long, void *, bfd_boolean *);
static bfd_boolean read_ieee_debugging_info (bfd *, void *, bfd_boolean *);
static void save_stab (int, int, bfd_vma, const char *);
static void stab_context (void);
static void free_saved_stabs (void);
/* Read debugging information from a BFD. Returns a generic debugging
pointer. */
void *
read_debugging_info (bfd *abfd, asymbol **syms, long symcount)
{
void *dhandle;
bfd_boolean found;
dhandle = debug_init ();
if (dhandle == NULL)
return NULL;
if (! read_section_stabs_debugging_info (abfd, syms, symcount, dhandle,
&found))
return NULL;
if (bfd_get_flavour (abfd) == bfd_target_aout_flavour)
{
if (! read_symbol_stabs_debugging_info (abfd, syms, symcount, dhandle,
&found))
return NULL;
}
if (bfd_get_flavour (abfd) == bfd_target_ieee_flavour)
{
if (! read_ieee_debugging_info (abfd, dhandle, &found))
return NULL;
}
/* Try reading the COFF symbols if we didn't find any stabs in COFF
sections. */
if (! found
&& bfd_get_flavour (abfd) == bfd_target_coff_flavour
&& symcount > 0)
{
if (! parse_coff (abfd, syms, symcount, dhandle))
return NULL;
found = TRUE;
}
if (! found)
{
non_fatal (_("%s: no recognized debugging information"),
bfd_get_filename (abfd));
return NULL;
}
return dhandle;
}
/* Read stabs in sections debugging information from a BFD. */
static bfd_boolean
read_section_stabs_debugging_info (bfd *abfd, asymbol **syms, long symcount,
void *dhandle, bfd_boolean *pfound)
{
static struct
{
const char *secname;
const char *strsecname;
} names[] = { { ".stab", ".stabstr" },
{ "LC_SYMTAB.stabs", "LC_SYMTAB.stabstr" } };
unsigned int i;
void *shandle;
*pfound = FALSE;
shandle = NULL;
for (i = 0; i < sizeof names / sizeof names[0]; i++)
{
asection *sec, *strsec;
sec = bfd_get_section_by_name (abfd, names[i].secname);
strsec = bfd_get_section_by_name (abfd, names[i].strsecname);
if (sec != NULL && strsec != NULL)
{
bfd_size_type stabsize, strsize;
bfd_byte *stabs, *strings;
bfd_byte *stab;
bfd_size_type stroff, next_stroff;
stabsize = bfd_section_size (abfd, sec);
stabs = (bfd_byte *) xmalloc (stabsize);
if (! bfd_get_section_contents (abfd, sec, stabs, 0, stabsize))
{
fprintf (stderr, "%s: %s: %s\n",
bfd_get_filename (abfd), names[i].secname,
bfd_errmsg (bfd_get_error ()));
return FALSE;
}
strsize = bfd_section_size (abfd, strsec);
strings = (bfd_byte *) xmalloc (strsize);
if (! bfd_get_section_contents (abfd, strsec, strings, 0, strsize))
{
fprintf (stderr, "%s: %s: %s\n",
bfd_get_filename (abfd), names[i].strsecname,
bfd_errmsg (bfd_get_error ()));
return FALSE;
}
if (shandle == NULL)
{
shandle = start_stab (dhandle, abfd, TRUE, syms, symcount);
if (shandle == NULL)
return FALSE;
}
*pfound = TRUE;
stroff = 0;
next_stroff = 0;
for (stab = stabs; stab < stabs + stabsize; stab += 12)
{
unsigned int strx;
int type;
int other;
int desc;
bfd_vma value;
/* This code presumes 32 bit values. */
strx = bfd_get_32 (abfd, stab);
type = bfd_get_8 (abfd, stab + 4);
other = bfd_get_8 (abfd, stab + 5);
desc = bfd_get_16 (abfd, stab + 6);
value = bfd_get_32 (abfd, stab + 8);
if (type == 0)
{
/* Special type 0 stabs indicate the offset to the
next string table. */
stroff = next_stroff;
next_stroff += value;
}
else
{
char *f, *s;
f = NULL;
if (stroff + strx > strsize)
{
fprintf (stderr, "%s: %s: stab entry %ld is corrupt, strx = 0x%x, type = %d\n",
bfd_get_filename (abfd), names[i].secname,
(long) (stab - stabs) / 12, strx, type);
continue;
}
s = (char *) strings + stroff + strx;
while (s[strlen (s) - 1] == '\\'
&& stab + 12 < stabs + stabsize)
{
char *p;
stab += 12;
p = s + strlen (s) - 1;
*p = '\0';
s = concat (s,
((char *) strings
+ stroff
+ bfd_get_32 (abfd, stab)),
(const char *) NULL);
/* We have to restore the backslash, because, if
the linker is hashing stabs strings, we may
see the same string more than once. */
*p = '\\';
if (f != NULL)
free (f);
f = s;
}
save_stab (type, desc, value, s);
if (! parse_stab (dhandle, shandle, type, desc, value, s))
{
stab_context ();
free_saved_stabs ();
return FALSE;
}
/* Don't free f, since I think the stabs code
expects strings to hang around. This should be
straightened out. FIXME. */
}
}
free_saved_stabs ();
free (stabs);
/* Don't free strings, since I think the stabs code expects
the strings to hang around. This should be straightened
out. FIXME. */
}
}
if (shandle != NULL)
{
if (! finish_stab (dhandle, shandle))
return FALSE;
}
return TRUE;
}
/* Read stabs in the symbol table. */
static bfd_boolean
read_symbol_stabs_debugging_info (bfd *abfd, asymbol **syms, long symcount,
void *dhandle, bfd_boolean *pfound)
{
void *shandle;
asymbol **ps, **symend;
shandle = NULL;
symend = syms + symcount;
for (ps = syms; ps < symend; ps++)
{
symbol_info i;
bfd_get_symbol_info (abfd, *ps, &i);
if (i.type == '-')
{
const char *s;
char *f;
if (shandle == NULL)
{
shandle = start_stab (dhandle, abfd, FALSE, syms, symcount);
if (shandle == NULL)
return FALSE;
}
*pfound = TRUE;
s = i.name;
f = NULL;
while (s[strlen (s) - 1] == '\\'
&& ps + 1 < symend)
{
char *sc, *n;
++ps;
sc = xstrdup (s);
sc[strlen (sc) - 1] = '\0';
n = concat (sc, bfd_asymbol_name (*ps), (const char *) NULL);
free (sc);
if (f != NULL)
free (f);
f = n;
s = n;
}
save_stab (i.stab_type, i.stab_desc, i.value, s);
if (! parse_stab (dhandle, shandle, i.stab_type, i.stab_desc,
i.value, s))
{
stab_context ();
free_saved_stabs ();
return FALSE;
}
/* Don't free f, since I think the stabs code expects
strings to hang around. This should be straightened out.
FIXME. */
}
}
free_saved_stabs ();
if (shandle != NULL)
{
if (! finish_stab (dhandle, shandle))
return FALSE;
}
return TRUE;
}
/* Read IEEE debugging information. */
static bfd_boolean
read_ieee_debugging_info (bfd *abfd, void *dhandle, bfd_boolean *pfound)
{
asection *dsec;
bfd_size_type size;
bfd_byte *contents;
/* The BFD backend puts the debugging information into a section
named .debug. */
dsec = bfd_get_section_by_name (abfd, ".debug");
if (dsec == NULL)
return TRUE;
size = bfd_section_size (abfd, dsec);
contents = (bfd_byte *) xmalloc (size);
if (! bfd_get_section_contents (abfd, dsec, contents, 0, size))
return FALSE;
if (! parse_ieee (dhandle, abfd, contents, size))
return FALSE;
free (contents);
*pfound = TRUE;
return TRUE;
}
/* Record stabs strings, so that we can give some context for errors. */
#define SAVE_STABS_COUNT (16)
struct saved_stab
{
int type;
int desc;
bfd_vma value;
char *string;
};
static struct saved_stab saved_stabs[SAVE_STABS_COUNT];
static int saved_stabs_index;
/* Save a stabs string. */
static void
save_stab (int type, int desc, bfd_vma value, const char *string)
{
if (saved_stabs[saved_stabs_index].string != NULL)
free (saved_stabs[saved_stabs_index].string);
saved_stabs[saved_stabs_index].type = type;
saved_stabs[saved_stabs_index].desc = desc;
saved_stabs[saved_stabs_index].value = value;
saved_stabs[saved_stabs_index].string = xstrdup (string);
saved_stabs_index = (saved_stabs_index + 1) % SAVE_STABS_COUNT;
}
/* Provide context for an error. */
static void
stab_context (void)
{
int i;
fprintf (stderr, _("Last stabs entries before error:\n"));
fprintf (stderr, "n_type n_desc n_value string\n");
i = saved_stabs_index;
do
{
struct saved_stab *stabp;
stabp = saved_stabs + i;
if (stabp->string != NULL)
{
const char *s;
s = bfd_get_stab_name (stabp->type);
if (s != NULL)
fprintf (stderr, "%-6s", s);
else if (stabp->type == 0)
fprintf (stderr, "HdrSym");
else
fprintf (stderr, "%-6d", stabp->type);
fprintf (stderr, " %-6d ", stabp->desc);
fprintf_vma (stderr, stabp->value);
if (stabp->type != 0)
fprintf (stderr, " %s", stabp->string);
fprintf (stderr, "\n");
}
i = (i + 1) % SAVE_STABS_COUNT;
}
while (i != saved_stabs_index);
}
/* Free the saved stab strings. */
static void
free_saved_stabs (void)
{
int i;
for (i = 0; i < SAVE_STABS_COUNT; i++)
{
if (saved_stabs[i].string != NULL)
{
free (saved_stabs[i].string);
saved_stabs[i].string = NULL;
}
}
saved_stabs_index = 0;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,217 +0,0 @@
/* rename.c -- rename a file, preserving symlinks.
Copyright 1999, 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include "bfd.h"
#include "bucomm.h"
#include <sys/stat.h>
#ifdef HAVE_GOOD_UTIME_H
#include <utime.h>
#else /* ! HAVE_GOOD_UTIME_H */
#ifdef HAVE_UTIMES
#include <sys/time.h>
#endif /* HAVE_UTIMES */
#endif /* ! HAVE_GOOD_UTIME_H */
/* We need to open the file in binary modes on system where that makes
a difference. */
#ifndef O_BINARY
#define O_BINARY 0
#endif
static int simple_copy (const char *, const char *);
/* The number of bytes to copy at once. */
#define COPY_BUF 8192
/* Copy file FROM to file TO, performing no translations.
Return 0 if ok, -1 if error. */
static int
simple_copy (const char *from, const char *to)
{
int fromfd, tofd, nread;
int saved;
char buf[COPY_BUF];
fromfd = open (from, O_RDONLY | O_BINARY);
if (fromfd < 0)
return -1;
#ifdef O_CREAT
tofd = open (to, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, 0777);
#else
tofd = creat (to, 0777);
#endif
if (tofd < 0)
{
saved = errno;
close (fromfd);
errno = saved;
return -1;
}
while ((nread = read (fromfd, buf, sizeof buf)) > 0)
{
if (write (tofd, buf, nread) != nread)
{
saved = errno;
close (fromfd);
close (tofd);
errno = saved;
return -1;
}
}
saved = errno;
close (fromfd);
close (tofd);
if (nread < 0)
{
errno = saved;
return -1;
}
return 0;
}
/* Set the times of the file DESTINATION to be the same as those in
STATBUF. */
void
set_times (const char *destination, const struct stat *statbuf)
{
int result;
{
#ifdef HAVE_GOOD_UTIME_H
struct utimbuf tb;
tb.actime = statbuf->st_atime;
tb.modtime = statbuf->st_mtime;
result = utime (destination, &tb);
#else /* ! HAVE_GOOD_UTIME_H */
#ifndef HAVE_UTIMES
long tb[2];
tb[0] = statbuf->st_atime;
tb[1] = statbuf->st_mtime;
result = utime (destination, tb);
#else /* HAVE_UTIMES */
struct timeval tv[2];
tv[0].tv_sec = statbuf->st_atime;
tv[0].tv_usec = 0;
tv[1].tv_sec = statbuf->st_mtime;
tv[1].tv_usec = 0;
result = utimes (destination, tv);
#endif /* HAVE_UTIMES */
#endif /* ! HAVE_GOOD_UTIME_H */
}
if (result != 0)
non_fatal (_("%s: cannot set time: %s"), destination, strerror (errno));
}
#ifndef S_ISLNK
#ifdef S_IFLNK
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
#else
#define S_ISLNK(m) 0
#define lstat stat
#endif
#endif
/* Rename FROM to TO, copying if TO is a link.
Return 0 if ok, -1 if error. */
int
smart_rename (const char *from, const char *to, int preserve_dates)
{
bfd_boolean exists;
struct stat s;
int ret = 0;
exists = lstat (to, &s) == 0;
#if defined (_WIN32) && !defined (__CYGWIN32__)
/* Win32, unlike unix, will not erase `to' in `rename(from, to)' but
fail instead. Also, chown is not present. */
if (exists)
remove (to);
ret = rename (from, to);
if (ret != 0)
{
/* We have to clean up here. */
non_fatal (_("unable to rename '%s' reason: %s"), to, strerror (errno));
unlink (from);
}
#else
/* Use rename only if TO is not a symbolic link and has
only one hard link, and we have permission to write to it. */
if (! exists
|| (!S_ISLNK (s.st_mode)
&& S_ISREG (s.st_mode)
&& (s.st_mode & S_IWUSR)
&& s.st_nlink == 1)
)
{
ret = rename (from, to);
if (ret == 0)
{
if (exists)
{
/* Try to preserve the permission bits and ownership of
TO. First get the mode right except for the setuid
bit. Then change the ownership. Then fix the setuid
bit. We do the chmod before the chown because if the
chown succeeds, and we are a normal user, we won't be
able to do the chmod afterward. We don't bother to
fix the setuid bit first because that might introduce
a fleeting security problem, and because the chown
will clear the setuid bit anyhow. We only fix the
setuid bit if the chown succeeds, because we don't
want to introduce an unexpected setuid file owned by
the user running objcopy. */
chmod (to, s.st_mode & 0777);
if (chown (to, s.st_uid, s.st_gid) >= 0)
chmod (to, s.st_mode & 07777);
}
}
else
{
/* We have to clean up here. */
non_fatal (_("unable to rename '%s' reason: %s"), to, strerror (errno));
unlink (from);
}
}
else
{
ret = simple_copy (from, to);
if (ret != 0)
non_fatal (_("unable to copy file '%s' reason: %s"), to, strerror (errno));
if (preserve_dates)
set_times (to, &s);
unlink (from);
}
#endif /* _WIN32 && !__CYGWIN32__ */
return ret;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,766 +0,0 @@
/* rescoff.c -- read and write resources in Windows COFF files.
Copyright 1997, 1998, 1999, 2000, 2003
Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
/* This file contains function that read and write Windows resources
in COFF files. */
#include "bfd.h"
#include "bucomm.h"
#include "libiberty.h"
#include "windres.h"
#include <assert.h>
/* In order to use the address of a resource data entry, we need to
get the image base of the file. Right now we extract it from
internal BFD information. FIXME. */
#include "coff/internal.h"
#include "libcoff.h"
/* Information we extract from the file. */
struct coff_file_info
{
/* File name. */
const char *filename;
/* Data read from the file. */
const bfd_byte *data;
/* End of data read from file. */
const bfd_byte *data_end;
/* Address of the resource section minus the image base of the file. */
bfd_vma secaddr;
/* Non-zero if the file is big endian. */
int big_endian;
};
/* A resource directory table in a COFF file. */
struct extern_res_directory
{
/* Characteristics. */
bfd_byte characteristics[4];
/* Time stamp. */
bfd_byte time[4];
/* Major version number. */
bfd_byte major[2];
/* Minor version number. */
bfd_byte minor[2];
/* Number of named directory entries. */
bfd_byte name_count[2];
/* Number of directory entries with IDs. */
bfd_byte id_count[2];
};
/* A resource directory entry in a COFF file. */
struct extern_res_entry
{
/* Name or ID. */
bfd_byte name[4];
/* Address of resource entry or subdirectory. */
bfd_byte rva[4];
};
/* A resource data entry in a COFF file. */
struct extern_res_data
{
/* Address of resource data. This is apparently a file relative
address, rather than a section offset. */
bfd_byte rva[4];
/* Size of resource data. */
bfd_byte size[4];
/* Code page. */
bfd_byte codepage[4];
/* Reserved. */
bfd_byte reserved[4];
};
/* Macros to swap in values. */
#define getfi_16(fi, s) ((fi)->big_endian ? bfd_getb16 (s) : bfd_getl16 (s))
#define getfi_32(fi, s) ((fi)->big_endian ? bfd_getb32 (s) : bfd_getl32 (s))
/* Local functions. */
static void overrun (const struct coff_file_info *, const char *);
static struct res_directory *read_coff_res_dir
(const bfd_byte *, const struct coff_file_info *,
const struct res_id *, int);
static struct res_resource *read_coff_data_entry
(const bfd_byte *, const struct coff_file_info *, const struct res_id *);
/* Read the resources in a COFF file. */
struct res_directory *
read_coff_rsrc (const char *filename, const char *target)
{
bfd *abfd;
char **matching;
asection *sec;
bfd_size_type size;
bfd_byte *data;
struct coff_file_info finfo;
if (filename == NULL)
fatal (_("filename required for COFF input"));
abfd = bfd_openr (filename, target);
if (abfd == NULL)
bfd_fatal (filename);
if (! bfd_check_format_matches (abfd, bfd_object, &matching))
{
bfd_nonfatal (bfd_get_filename (abfd));
if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
list_matching_formats (matching);
xexit (1);
}
sec = bfd_get_section_by_name (abfd, ".rsrc");
if (sec == NULL)
{
fatal (_("%s: no resource section"), filename);
}
size = bfd_section_size (abfd, sec);
data = (bfd_byte *) res_alloc (size);
if (! bfd_get_section_contents (abfd, sec, data, 0, size))
bfd_fatal (_("can't read resource section"));
finfo.filename = filename;
finfo.data = data;
finfo.data_end = data + size;
finfo.secaddr = (bfd_get_section_vma (abfd, sec)
- pe_data (abfd)->pe_opthdr.ImageBase);
finfo.big_endian = bfd_big_endian (abfd);
bfd_close (abfd);
/* Now just read in the top level resource directory. Note that we
don't free data, since we create resource entries that point into
it. If we ever want to free up the resource information we read,
this will have to be cleaned up. */
return read_coff_res_dir (data, &finfo, (const struct res_id *) NULL, 0);
}
/* Give an error if we are out of bounds. */
static void
overrun (const struct coff_file_info *finfo, const char *msg)
{
fatal (_("%s: %s: address out of bounds"), finfo->filename, msg);
}
/* Read a resource directory. */
static struct res_directory *
read_coff_res_dir (const bfd_byte *data, const struct coff_file_info *finfo,
const struct res_id *type, int level)
{
const struct extern_res_directory *erd;
struct res_directory *rd;
int name_count, id_count, i;
struct res_entry **pp;
const struct extern_res_entry *ere;
if ((size_t) (finfo->data_end - data) < sizeof (struct extern_res_directory))
overrun (finfo, _("directory"));
erd = (const struct extern_res_directory *) data;
rd = (struct res_directory *) res_alloc (sizeof *rd);
rd->characteristics = getfi_32 (finfo, erd->characteristics);
rd->time = getfi_32 (finfo, erd->time);
rd->major = getfi_16 (finfo, erd->major);
rd->minor = getfi_16 (finfo, erd->minor);
rd->entries = NULL;
name_count = getfi_16 (finfo, erd->name_count);
id_count = getfi_16 (finfo, erd->id_count);
pp = &rd->entries;
/* The resource directory entries immediately follow the directory
table. */
ere = (const struct extern_res_entry *) (erd + 1);
for (i = 0; i < name_count; i++, ere++)
{
unsigned long name, rva;
struct res_entry *re;
const bfd_byte *ers;
int length, j;
if ((const bfd_byte *) ere >= finfo->data_end)
overrun (finfo, _("named directory entry"));
name = getfi_32 (finfo, ere->name);
rva = getfi_32 (finfo, ere->rva);
/* For some reason the high bit in NAME is set. */
name &=~ 0x80000000;
if (name > (size_t) (finfo->data_end - finfo->data))
overrun (finfo, _("directory entry name"));
ers = finfo->data + name;
re = (struct res_entry *) res_alloc (sizeof *re);
re->next = NULL;
re->id.named = 1;
length = getfi_16 (finfo, ers);
re->id.u.n.length = length;
re->id.u.n.name = (unichar *) res_alloc (length * sizeof (unichar));
for (j = 0; j < length; j++)
re->id.u.n.name[j] = getfi_16 (finfo, ers + j * 2 + 2);
if (level == 0)
type = &re->id;
if ((rva & 0x80000000) != 0)
{
rva &=~ 0x80000000;
if (rva >= (size_t) (finfo->data_end - finfo->data))
overrun (finfo, _("named subdirectory"));
re->subdir = 1;
re->u.dir = read_coff_res_dir (finfo->data + rva, finfo, type,
level + 1);
}
else
{
if (rva >= (size_t) (finfo->data_end - finfo->data))
overrun (finfo, _("named resource"));
re->subdir = 0;
re->u.res = read_coff_data_entry (finfo->data + rva, finfo, type);
}
*pp = re;
pp = &re->next;
}
for (i = 0; i < id_count; i++, ere++)
{
unsigned long name, rva;
struct res_entry *re;
if ((const bfd_byte *) ere >= finfo->data_end)
overrun (finfo, _("ID directory entry"));
name = getfi_32 (finfo, ere->name);
rva = getfi_32 (finfo, ere->rva);
re = (struct res_entry *) res_alloc (sizeof *re);
re->next = NULL;
re->id.named = 0;
re->id.u.id = name;
if (level == 0)
type = &re->id;
if ((rva & 0x80000000) != 0)
{
rva &=~ 0x80000000;
if (rva >= (size_t) (finfo->data_end - finfo->data))
overrun (finfo, _("ID subdirectory"));
re->subdir = 1;
re->u.dir = read_coff_res_dir (finfo->data + rva, finfo, type,
level + 1);
}
else
{
if (rva >= (size_t) (finfo->data_end - finfo->data))
overrun (finfo, _("ID resource"));
re->subdir = 0;
re->u.res = read_coff_data_entry (finfo->data + rva, finfo, type);
}
*pp = re;
pp = &re->next;
}
return rd;
}
/* Read a resource data entry. */
static struct res_resource *
read_coff_data_entry (const bfd_byte *data, const struct coff_file_info *finfo, const struct res_id *type)
{
const struct extern_res_data *erd;
struct res_resource *r;
unsigned long size, rva;
const bfd_byte *resdata;
if (type == NULL)
fatal (_("resource type unknown"));
if ((size_t) (finfo->data_end - data) < sizeof (struct extern_res_data))
overrun (finfo, _("data entry"));
erd = (const struct extern_res_data *) data;
size = getfi_32 (finfo, erd->size);
rva = getfi_32 (finfo, erd->rva);
if (rva < finfo->secaddr
|| rva - finfo->secaddr >= (size_t) (finfo->data_end - finfo->data))
overrun (finfo, _("resource data"));
resdata = finfo->data + (rva - finfo->secaddr);
if (size > (size_t) (finfo->data_end - resdata))
overrun (finfo, _("resource data size"));
r = bin_to_res (*type, resdata, size, finfo->big_endian);
memset (&r->res_info, 0, sizeof (struct res_res_info));
r->coff_info.codepage = getfi_32 (finfo, erd->codepage);
r->coff_info.reserved = getfi_32 (finfo, erd->reserved);
return r;
}
/* This structure is used to build a list of bindata structures. */
struct bindata_build
{
/* The data. */
struct bindata *d;
/* The last structure we have added to the list. */
struct bindata *last;
/* The size of the list as a whole. */
unsigned long length;
};
/* This structure keeps track of information as we build the directory
tree. */
struct coff_write_info
{
/* These fields are based on the BFD. */
/* The BFD itself. */
bfd *abfd;
/* Non-zero if the file is big endian. */
int big_endian;
/* Pointer to section symbol used to build RVA relocs. */
asymbol **sympp;
/* These fields are computed initially, and then not changed. */
/* Length of directory tables and entries. */
unsigned long dirsize;
/* Length of directory entry strings. */
unsigned long dirstrsize;
/* Length of resource data entries. */
unsigned long dataentsize;
/* These fields are updated as we add data. */
/* Directory tables and entries. */
struct bindata_build dirs;
/* Directory entry strings. */
struct bindata_build dirstrs;
/* Resource data entries. */
struct bindata_build dataents;
/* Actual resource data. */
struct bindata_build resources;
/* Relocations. */
arelent **relocs;
/* Number of relocations. */
unsigned int reloc_count;
};
/* Macros to swap out values. */
#define putcwi_16(cwi, v, s) \
((cwi->big_endian) ? bfd_putb16 ((v), (s)) : bfd_putl16 ((v), (s)))
#define putcwi_32(cwi, v, s) \
((cwi->big_endian) ? bfd_putb32 ((v), (s)) : bfd_putl32 ((v), (s)))
static void coff_bin_sizes
(const struct res_directory *, struct coff_write_info *);
static unsigned char *coff_alloc (struct bindata_build *, size_t);
static void coff_to_bin
(const struct res_directory *, struct coff_write_info *);
static void coff_res_to_bin
(const struct res_resource *, struct coff_write_info *);
/* Write resources to a COFF file. RESOURCES should already be
sorted.
Right now we always create a new file. Someday we should also
offer the ability to merge resources into an existing file. This
would require doing the basic work of objcopy, just modifying or
adding the .rsrc section. */
void
write_coff_file (const char *filename, const char *target,
const struct res_directory *resources)
{
bfd *abfd;
asection *sec;
struct coff_write_info cwi;
struct bindata *d;
unsigned long length, offset;
if (filename == NULL)
fatal (_("filename required for COFF output"));
abfd = bfd_openw (filename, target);
if (abfd == NULL)
bfd_fatal (filename);
if (! bfd_set_format (abfd, bfd_object))
bfd_fatal ("bfd_set_format");
#if defined DLLTOOL_SH
if (! bfd_set_arch_mach (abfd, bfd_arch_sh, 0))
bfd_fatal ("bfd_set_arch_mach(sh)");
#elif defined DLLTOOL_MIPS
if (! bfd_set_arch_mach (abfd, bfd_arch_mips, 0))
bfd_fatal ("bfd_set_arch_mach(mips)");
#elif defined DLLTOOL_ARM
if (! bfd_set_arch_mach (abfd, bfd_arch_arm, 0))
bfd_fatal ("bfd_set_arch_mach(arm)");
#else
/* FIXME: This is obviously i386 specific. */
if (! bfd_set_arch_mach (abfd, bfd_arch_i386, 0))
bfd_fatal ("bfd_set_arch_mach(i386)");
#endif
if (! bfd_set_file_flags (abfd, HAS_SYMS | HAS_RELOC))
bfd_fatal ("bfd_set_file_flags");
sec = bfd_make_section (abfd, ".rsrc");
if (sec == NULL)
bfd_fatal ("bfd_make_section");
if (! bfd_set_section_flags (abfd, sec,
(SEC_HAS_CONTENTS | SEC_ALLOC
| SEC_LOAD | SEC_DATA)))
bfd_fatal ("bfd_set_section_flags");
if (! bfd_set_symtab (abfd, sec->symbol_ptr_ptr, 1))
bfd_fatal ("bfd_set_symtab");
/* Requiring this is probably a bug in BFD. */
sec->output_section = sec;
/* The order of data in the .rsrc section is
resource directory tables and entries
resource directory strings
resource data entries
actual resource data
We build these different types of data in different lists. */
cwi.abfd = abfd;
cwi.big_endian = bfd_big_endian (abfd);
cwi.sympp = sec->symbol_ptr_ptr;
cwi.dirsize = 0;
cwi.dirstrsize = 0;
cwi.dataentsize = 0;
cwi.dirs.d = NULL;
cwi.dirs.last = NULL;
cwi.dirs.length = 0;
cwi.dirstrs.d = NULL;
cwi.dirstrs.last = NULL;
cwi.dirstrs.length = 0;
cwi.dataents.d = NULL;
cwi.dataents.last = NULL;
cwi.dataents.length = 0;
cwi.resources.d = NULL;
cwi.resources.last = NULL;
cwi.resources.length = 0;
cwi.relocs = NULL;
cwi.reloc_count = 0;
/* Work out the sizes of the resource directory entries, so that we
know the various offsets we will need. */
coff_bin_sizes (resources, &cwi);
/* Force the directory strings to be 32 bit aligned. Every other
structure is 32 bit aligned anyhow. */
cwi.dirstrsize = (cwi.dirstrsize + 3) &~ 3;
/* Actually convert the resources to binary. */
coff_to_bin (resources, &cwi);
/* Add another 2 bytes to the directory strings if needed for
alignment. */
if ((cwi.dirstrs.length & 3) != 0)
{
unsigned char *ex;
ex = coff_alloc (&cwi.dirstrs, 2);
ex[0] = 0;
ex[1] = 0;
}
/* Make sure that the data we built came out to the same size as we
calculated initially. */
assert (cwi.dirs.length == cwi.dirsize);
assert (cwi.dirstrs.length == cwi.dirstrsize);
assert (cwi.dataents.length == cwi.dataentsize);
length = (cwi.dirsize
+ cwi.dirstrsize
+ cwi.dataentsize
+ cwi.resources.length);
if (! bfd_set_section_size (abfd, sec, length))
bfd_fatal ("bfd_set_section_size");
bfd_set_reloc (abfd, sec, cwi.relocs, cwi.reloc_count);
offset = 0;
for (d = cwi.dirs.d; d != NULL; d = d->next)
{
if (! bfd_set_section_contents (abfd, sec, d->data, offset, d->length))
bfd_fatal ("bfd_set_section_contents");
offset += d->length;
}
for (d = cwi.dirstrs.d; d != NULL; d = d->next)
{
if (! bfd_set_section_contents (abfd, sec, d->data, offset, d->length))
bfd_fatal ("bfd_set_section_contents");
offset += d->length;
}
for (d = cwi.dataents.d; d != NULL; d = d->next)
{
if (! bfd_set_section_contents (abfd, sec, d->data, offset, d->length))
bfd_fatal ("bfd_set_section_contents");
offset += d->length;
}
for (d = cwi.resources.d; d != NULL; d = d->next)
{
if (! bfd_set_section_contents (abfd, sec, d->data, offset, d->length))
bfd_fatal ("bfd_set_section_contents");
offset += d->length;
}
assert (offset == length);
if (! bfd_close (abfd))
bfd_fatal ("bfd_close");
/* We allocated the relocs array using malloc. */
free (cwi.relocs);
}
/* Work out the sizes of the various fixed size resource directory
entries. This updates fields in CWI. */
static void
coff_bin_sizes (const struct res_directory *resdir,
struct coff_write_info *cwi)
{
const struct res_entry *re;
cwi->dirsize += sizeof (struct extern_res_directory);
for (re = resdir->entries; re != NULL; re = re->next)
{
cwi->dirsize += sizeof (struct extern_res_entry);
if (re->id.named)
cwi->dirstrsize += re->id.u.n.length * 2 + 2;
if (re->subdir)
coff_bin_sizes (re->u.dir, cwi);
else
cwi->dataentsize += sizeof (struct extern_res_data);
}
}
/* Allocate data for a particular list. */
static unsigned char *
coff_alloc (struct bindata_build *bb, size_t size)
{
struct bindata *d;
d = (struct bindata *) reswr_alloc (sizeof *d);
d->next = NULL;
d->data = (unsigned char *) reswr_alloc (size);
d->length = size;
if (bb->d == NULL)
bb->d = d;
else
bb->last->next = d;
bb->last = d;
bb->length += size;
return d->data;
}
/* Convert the resource directory RESDIR to binary. */
static void
coff_to_bin (const struct res_directory *resdir, struct coff_write_info *cwi)
{
struct extern_res_directory *erd;
int ci, cn;
const struct res_entry *e;
struct extern_res_entry *ere;
/* Write out the directory table. */
erd = ((struct extern_res_directory *)
coff_alloc (&cwi->dirs, sizeof (*erd)));
putcwi_32 (cwi, resdir->characteristics, erd->characteristics);
putcwi_32 (cwi, resdir->time, erd->time);
putcwi_16 (cwi, resdir->major, erd->major);
putcwi_16 (cwi, resdir->minor, erd->minor);
ci = 0;
cn = 0;
for (e = resdir->entries; e != NULL; e = e->next)
{
if (e->id.named)
++cn;
else
++ci;
}
putcwi_16 (cwi, cn, erd->name_count);
putcwi_16 (cwi, ci, erd->id_count);
/* Write out the data entries. Note that we allocate space for all
the entries before writing them out. That permits a recursive
call to work correctly when writing out subdirectories. */
ere = ((struct extern_res_entry *)
coff_alloc (&cwi->dirs, (ci + cn) * sizeof (*ere)));
for (e = resdir->entries; e != NULL; e = e->next, ere++)
{
if (! e->id.named)
putcwi_32 (cwi, e->id.u.id, ere->name);
else
{
unsigned char *str;
int i;
/* For some reason existing files seem to have the high bit
set on the address of the name, although that is not
documented. */
putcwi_32 (cwi,
0x80000000 | (cwi->dirsize + cwi->dirstrs.length),
ere->name);
str = coff_alloc (&cwi->dirstrs, e->id.u.n.length * 2 + 2);
putcwi_16 (cwi, e->id.u.n.length, str);
for (i = 0; i < e->id.u.n.length; i++)
putcwi_16 (cwi, e->id.u.n.name[i], str + i * 2 + 2);
}
if (e->subdir)
{
putcwi_32 (cwi, 0x80000000 | cwi->dirs.length, ere->rva);
coff_to_bin (e->u.dir, cwi);
}
else
{
putcwi_32 (cwi,
cwi->dirsize + cwi->dirstrsize + cwi->dataents.length,
ere->rva);
coff_res_to_bin (e->u.res, cwi);
}
}
}
/* Convert the resource RES to binary. */
static void
coff_res_to_bin (const struct res_resource *res, struct coff_write_info *cwi)
{
arelent *r;
struct extern_res_data *erd;
struct bindata *d;
unsigned long length;
/* For some reason, although every other address is a section
offset, the address of the resource data itself is an RVA. That
means that we need to generate a relocation for it. We allocate
the relocs array using malloc so that we can use realloc. FIXME:
This relocation handling is correct for the i386, but probably
not for any other target. */
r = (arelent *) reswr_alloc (sizeof (arelent));
r->sym_ptr_ptr = cwi->sympp;
r->address = cwi->dirsize + cwi->dirstrsize + cwi->dataents.length;
r->addend = 0;
r->howto = bfd_reloc_type_lookup (cwi->abfd, BFD_RELOC_RVA);
if (r->howto == NULL)
bfd_fatal (_("can't get BFD_RELOC_RVA relocation type"));
cwi->relocs = xrealloc (cwi->relocs,
(cwi->reloc_count + 2) * sizeof (arelent *));
cwi->relocs[cwi->reloc_count] = r;
cwi->relocs[cwi->reloc_count + 1] = NULL;
++cwi->reloc_count;
erd = (struct extern_res_data *) coff_alloc (&cwi->dataents, sizeof (*erd));
putcwi_32 (cwi,
(cwi->dirsize
+ cwi->dirstrsize
+ cwi->dataentsize
+ cwi->resources.length),
erd->rva);
putcwi_32 (cwi, res->coff_info.codepage, erd->codepage);
putcwi_32 (cwi, res->coff_info.reserved, erd->reserved);
d = res_to_bin (res, cwi->big_endian);
if (cwi->resources.d == NULL)
cwi->resources.d = d;
else
cwi->resources.last->next = d;
length = 0;
for (; d->next != NULL; d = d->next)
length += d->length;
length += d->length;
cwi->resources.last = d;
cwi->resources.length += length;
putcwi_32 (cwi, length, erd->size);
/* Force the next resource to have 32 bit alignment. */
if ((length & 3) != 0)
{
int add;
unsigned char *ex;
add = 4 - (length & 3);
ex = coff_alloc (&cwi->resources, add);
memset (ex, 0, add);
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,663 +0,0 @@
/* resres.c: read_res_file and write_res_file implementation for windres.
Copyright 1998, 1999 Free Software Foundation, Inc.
Written by Anders Norlander <anorland@hem2.passagen.se>.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
/* FIXME: This file does not work correctly in a cross configuration.
It assumes that it can use fread and fwrite to read and write
integers. It does no swapping. */
#include "bfd.h"
#include "bucomm.h"
#include "libiberty.h"
#include "windres.h"
#include <assert.h>
#include <time.h>
struct res_hdr
{
unsigned long data_size;
unsigned long header_size;
};
static void write_res_directory
PARAMS ((const struct res_directory *,
const struct res_id *, const struct res_id *,
int *, int));
static void write_res_resource
PARAMS ((const struct res_id *, const struct res_id *,
const struct res_resource *, int *));
static void write_res_bin
PARAMS ((const struct res_resource *, const struct res_id *,
const struct res_id *, const struct res_res_info *));
static void write_res_id PARAMS ((const struct res_id *));
static void write_res_info PARAMS ((const struct res_res_info *));
static void write_res_data PARAMS ((const void *, size_t, int));
static void write_res_header
PARAMS ((unsigned long, const struct res_id *, const struct res_id *,
const struct res_res_info *));
static int read_resource_entry PARAMS ((void));
static void read_res_data PARAMS ((void *, size_t, int));
static void read_res_id PARAMS ((struct res_id *));
static unichar *read_unistring PARAMS ((int *));
static void skip_null_resource PARAMS ((void));
static unsigned long get_id_size PARAMS ((const struct res_id *));
static void res_align_file PARAMS ((void));
static void
res_add_resource
PARAMS ((struct res_resource *, const struct res_id *,
const struct res_id *, int, int));
void
res_append_resource
PARAMS ((struct res_directory **, struct res_resource *,
int, const struct res_id *, int));
static struct res_directory *resources = NULL;
static FILE *fres;
static const char *filename;
extern char *program_name;
/* Read resource file */
struct res_directory *
read_res_file (fn)
const char *fn;
{
filename = fn;
fres = fopen (filename, "rb");
if (fres == NULL)
fatal ("can't open `%s' for output: %s", filename, strerror (errno));
skip_null_resource ();
while (read_resource_entry ())
;
fclose (fres);
return resources;
}
/* Write resource file */
void
write_res_file (fn, resdir)
const char *fn;
const struct res_directory *resdir;
{
int language;
static const unsigned char sign[] =
{0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
long fpos;
filename = fn;
fres = fopen (filename, "wb");
if (fres == NULL)
fatal ("can't open `%s' for output: %s", filename, strerror (errno));
/* Write 32 bit resource signature */
write_res_data (sign, sizeof (sign), 1);
/* write resources */
language = -1;
write_res_directory (resdir, (const struct res_id *) NULL,
(const struct res_id *) NULL, &language, 1);
/* end file on DWORD boundary */
fpos = ftell (fres);
if (fpos % 4)
write_res_data (sign, fpos % 4, 1);
fclose (fres);
}
/* Read a resource entry, returns 0 when all resources are read */
static int
read_resource_entry (void)
{
struct res_id type;
struct res_id name;
struct res_res_info resinfo;
struct res_hdr reshdr;
long version;
void *buff;
struct res_resource *r;
res_align_file ();
/* Read header */
if (fread (&reshdr, sizeof (reshdr), 1, fres) != 1)
return 0;
/* read resource type */
read_res_id (&type);
/* read resource id */
read_res_id (&name);
res_align_file ();
/* Read additional resource header */
read_res_data (&resinfo.version, sizeof (resinfo.version), 1);
read_res_data (&resinfo.memflags, sizeof (resinfo.memflags), 1);
read_res_data (&resinfo.language, sizeof (resinfo.language), 1);
read_res_data (&version, sizeof (version), 1);
read_res_data (&resinfo.characteristics, sizeof (resinfo.characteristics), 1);
res_align_file ();
/* Allocate buffer for data */
buff = res_alloc (reshdr.data_size);
/* Read data */
read_res_data (buff, reshdr.data_size, 1);
/* Convert binary data to resource */
r = bin_to_res (type, buff, reshdr.data_size, 0);
r->res_info = resinfo;
/* Add resource to resource directory */
res_add_resource (r, &type, &name, resinfo.language, 0);
return 1;
}
/* write resource directory to binary resource file */
static void
write_res_directory (rd, type, name, language, level)
const struct res_directory *rd;
const struct res_id *type;
const struct res_id *name;
int *language;
int level;
{
const struct res_entry *re;
for (re = rd->entries; re != NULL; re = re->next)
{
switch (level)
{
case 1:
/* If we're at level 1, the key of this resource is the
type. This normally duplicates the information we have
stored with the resource itself, but we need to remember
the type if this is a user define resource type. */
type = &re->id;
break;
case 2:
/* If we're at level 2, the key of this resource is the name
we are going to use in the rc printout. */
name = &re->id;
break;
case 3:
/* If we're at level 3, then this key represents a language.
Use it to update the current language. */
if (!re->id.named
&& re->id.u.id != (unsigned long) *language
&& (re->id.u.id & 0xffff) == re->id.u.id)
{
*language = re->id.u.id;
}
break;
default:
break;
}
if (re->subdir)
write_res_directory (re->u.dir, type, name, language, level + 1);
else
{
if (level == 3)
{
/* This is the normal case: the three levels are
TYPE/NAME/LANGUAGE. NAME will have been set at level
2, and represents the name to use. We probably just
set LANGUAGE, and it will probably match what the
resource itself records if anything. */
write_res_resource (type, name, re->u.res, language);
}
else
{
fprintf (stderr, "// Resource at unexpected level %d\n", level);
write_res_resource (type, (struct res_id *) NULL, re->u.res,
language);
}
}
}
}
static void
write_res_resource (type, name, res, language)
const struct res_id *type;
const struct res_id *name;
const struct res_resource *res;
int *language ATTRIBUTE_UNUSED;
{
int rt;
switch (res->type)
{
default:
abort ();
case RES_TYPE_ACCELERATOR:
rt = RT_ACCELERATOR;
break;
case RES_TYPE_BITMAP:
rt = RT_BITMAP;
break;
case RES_TYPE_CURSOR:
rt = RT_CURSOR;
break;
case RES_TYPE_GROUP_CURSOR:
rt = RT_GROUP_CURSOR;
break;
case RES_TYPE_DIALOG:
rt = RT_DIALOG;
break;
case RES_TYPE_FONT:
rt = RT_FONT;
break;
case RES_TYPE_FONTDIR:
rt = RT_FONTDIR;
break;
case RES_TYPE_ICON:
rt = RT_ICON;
break;
case RES_TYPE_GROUP_ICON:
rt = RT_GROUP_ICON;
break;
case RES_TYPE_MENU:
rt = RT_MENU;
break;
case RES_TYPE_MESSAGETABLE:
rt = RT_MESSAGETABLE;
break;
case RES_TYPE_RCDATA:
rt = RT_RCDATA;
break;
case RES_TYPE_STRINGTABLE:
rt = RT_STRING;
break;
case RES_TYPE_USERDATA:
rt = 0;
break;
case RES_TYPE_VERSIONINFO:
rt = RT_VERSION;
break;
}
if (rt != 0
&& type != NULL
&& (type->named || type->u.id != (unsigned long) rt))
{
fprintf (stderr, "// Unexpected resource type mismatch: ");
res_id_print (stderr, *type, 1);
fprintf (stderr, " != %d", rt);
abort ();
}
write_res_bin (res, type, name, &res->res_info);
return;
}
/* Write a resource in binary resource format */
static void
write_res_bin (res, type, name, resinfo)
const struct res_resource *res;
const struct res_id *type;
const struct res_id *name;
const struct res_res_info *resinfo;
{
unsigned long datasize = 0;
const struct bindata *bin_rep, *data;
bin_rep = res_to_bin (res, 0);
for (data = bin_rep; data != NULL; data = data->next)
datasize += data->length;
write_res_header (datasize, type, name, resinfo);
for (data = bin_rep; data != NULL; data = data->next)
write_res_data (data->data, data->length, 1);
}
/* Get number of bytes needed to store an id in binary format */
static unsigned long
get_id_size (id)
const struct res_id *id;
{
if (id->named)
return sizeof (unichar) * (id->u.n.length + 1);
else
return sizeof (unichar) * 2;
}
/* Write a resource header */
static void
write_res_header (datasize, type, name, resinfo)
unsigned long datasize;
const struct res_id *type;
const struct res_id *name;
const struct res_res_info *resinfo;
{
struct res_hdr reshdr;
reshdr.data_size = datasize;
reshdr.header_size = 24 + get_id_size (type) + get_id_size (name);
reshdr.header_size = (reshdr.header_size + 3) & ~3;
res_align_file ();
write_res_data (&reshdr, sizeof (reshdr), 1);
write_res_id (type);
write_res_id (name);
res_align_file ();
write_res_info (resinfo);
res_align_file ();
}
/* Write data to file, abort on failure */
static void
write_res_data (data, size, count)
const void *data;
size_t size;
int count;
{
if (fwrite (data, size, count, fres) != (size_t) count)
fatal ("%s: could not write to file", filename);
}
/* Read data from file, abort on failure */
static void
read_res_data (data, size, count)
void *data;
size_t size;
int count;
{
if (fread (data, size, count, fres) != (size_t) count)
fatal ("%s: unexpected end of file", filename);
}
/* Write a resource id */
static void
write_res_id (id)
const struct res_id *id;
{
if (id->named)
{
unsigned long len = id->u.n.length;
unichar null_term = 0;
write_res_data (id->u.n.name, len * sizeof (unichar), 1);
write_res_data (&null_term, sizeof (null_term), 1);
}
else
{
unsigned short i = 0xFFFF;
write_res_data (&i, sizeof (i), 1);
i = id->u.id;
write_res_data (&i, sizeof (i), 1);
}
}
/* Write resource info */
static void
write_res_info (info)
const struct res_res_info *info;
{
write_res_data (&info->version, sizeof (info->version), 1);
write_res_data (&info->memflags, sizeof (info->memflags), 1);
write_res_data (&info->language, sizeof (info->language), 1);
write_res_data (&info->version, sizeof (info->version), 1);
write_res_data (&info->characteristics, sizeof (info->characteristics), 1);
}
/* read a resource identifier */
void
read_res_id (id)
struct res_id *id;
{
unsigned short ord;
unichar *id_s = NULL;
int len;
read_res_data (&ord, sizeof (ord), 1);
if (ord == 0xFFFF) /* an ordinal id */
{
read_res_data (&ord, sizeof (ord), 1);
id->named = 0;
id->u.id = ord;
}
else
/* named id */
{
if (fseek (fres, -sizeof (ord), SEEK_CUR) != 0)
fatal ("%s: %s: could not seek in file", program_name, filename);
id_s = read_unistring (&len);
id->named = 1;
id->u.n.length = len;
id->u.n.name = id_s;
}
}
/* Read a null terminated UNICODE string */
static unichar *
read_unistring (len)
int *len;
{
unichar *s;
unichar c;
unichar *p;
int l;
*len = 0;
l = 0;
/* there are hardly any names longer than 256 characters */
p = s = (unichar *) xmalloc (sizeof (unichar) * 256);
do
{
read_res_data (&c, sizeof (c), 1);
*p++ = c;
if (c != 0)
l++;
}
while (c != 0);
*len = l;
return s;
}
/* align file on DWORD boundary */
static void
res_align_file (void)
{
int pos = ftell (fres);
int skip = ((pos + 3) & ~3) - pos;
if (fseek (fres, skip, SEEK_CUR) != 0)
fatal ("%s: %s: unable to align file", program_name, filename);
}
/* Check if file is a win32 binary resource file, if so
skip past the null resource. Returns 0 if successful, -1 on
error.
*/
static void
skip_null_resource (void)
{
struct res_hdr reshdr =
{0, 0};
read_res_data (&reshdr, sizeof (reshdr), 1);
if ((reshdr.data_size != 0) || (reshdr.header_size != 0x20))
goto skip_err;
/* Subtract size of HeaderSize and DataSize */
if (fseek (fres, reshdr.header_size - 8, SEEK_CUR) != 0)
goto skip_err;
return;
skip_err:
fprintf (stderr, "%s: %s: Not a valid WIN32 resource file\n", program_name,
filename);
xexit (1);
}
/* Add a resource to resource directory */
void
res_add_resource (r, type, id, language, dupok)
struct res_resource *r;
const struct res_id *type;
const struct res_id *id;
int language;
int dupok;
{
struct res_id a[3];
a[0] = *type;
a[1] = *id;
a[2].named = 0;
a[2].u.id = language;
res_append_resource (&resources, r, 3, a, dupok);
}
/* Append a resource to resource directory.
This is just copied from define_resource
and modified to add an existing resource.
*/
void
res_append_resource (resources, resource, cids, ids, dupok)
struct res_directory **resources;
struct res_resource *resource;
int cids;
const struct res_id *ids;
int dupok;
{
struct res_entry *re = NULL;
int i;
assert (cids > 0);
for (i = 0; i < cids; i++)
{
struct res_entry **pp;
if (*resources == NULL)
{
static unsigned long timeval;
/* Use the same timestamp for every resource created in a
single run. */
if (timeval == 0)
timeval = time (NULL);
*resources = ((struct res_directory *)
res_alloc (sizeof **resources));
(*resources)->characteristics = 0;
(*resources)->time = timeval;
(*resources)->major = 0;
(*resources)->minor = 0;
(*resources)->entries = NULL;
}
for (pp = &(*resources)->entries; *pp != NULL; pp = &(*pp)->next)
if (res_id_cmp ((*pp)->id, ids[i]) == 0)
break;
if (*pp != NULL)
re = *pp;
else
{
re = (struct res_entry *) res_alloc (sizeof *re);
re->next = NULL;
re->id = ids[i];
if ((i + 1) < cids)
{
re->subdir = 1;
re->u.dir = NULL;
}
else
{
re->subdir = 0;
re->u.res = NULL;
}
*pp = re;
}
if ((i + 1) < cids)
{
if (!re->subdir)
{
fprintf (stderr, "%s: ", program_name);
res_ids_print (stderr, i, ids);
fprintf (stderr, ": expected to be a directory\n");
xexit (1);
}
resources = &re->u.dir;
}
}
if (re->subdir)
{
fprintf (stderr, "%s: ", program_name);
res_ids_print (stderr, cids, ids);
fprintf (stderr, ": expected to be a leaf\n");
xexit (1);
}
if (re->u.res != NULL)
{
if (dupok)
return;
fprintf (stderr, "%s: warning: ", program_name);
res_ids_print (stderr, cids, ids);
fprintf (stderr, ": duplicate value\n");
}
re->u.res = resource;
}

View File

@@ -1,50 +0,0 @@
#!/bin/sh
### quick sanity test for the binutils.
###
### This file was written and is maintained by K. Richard Pixley,
### rich@cygnus.com.
### fail on errors
set -e
### first arg is directory in which binaries to be tested reside.
case "$1" in
"") BIN=. ;;
*) BIN="$1" ;;
esac
### size
for i in size objdump nm ar strip ranlib ; do
${BIN}/size ${BIN}/$i > /dev/null
done
### objdump
for i in size objdump nm ar strip ranlib ; do
${BIN}/objdump -ahifdrtxsl ${BIN}/$i > /dev/null
done
### nm
for i in size objdump nm ar strip ranlib ; do
${BIN}/nm ${BIN}/$i > /dev/null
done
### strip
TMPDIR=./binutils-$$
mkdir ${TMPDIR}
cp ${BIN}/strip ${TMPDIR}/strip
for i in size objdump nm ar ranlib ; do
cp ${BIN}/$i ${TMPDIR}/$i
${BIN}/strip ${TMPDIR}/$i
cp ${BIN}/$i ${TMPDIR}/$i
${TMPDIR}/strip ${TMPDIR}/$i
done
### ar
### ranlib
rm -rf ${TMPDIR}
exit 0

View File

@@ -1,575 +0,0 @@
/* size.c -- report size of various sections of an executable file.
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Extensions/incompatibilities:
o - BSD output has filenames at the end.
o - BSD output can appear in different radicies.
o - SysV output has less redundant whitespace. Filename comes at end.
o - SysV output doesn't show VMA which is always the same as the PMA.
o - We also handle core files.
o - We also handle archives.
If you write shell scripts which manipulate this info then you may be
out of luck; there's no --compatibility or --pedantic option. */
#include "bfd.h"
#include "bucomm.h"
#include "libiberty.h"
#include "getopt.h"
#ifndef BSD_DEFAULT
#define BSD_DEFAULT 1
#endif
/* Program options. */
enum
{
decimal, octal, hex
}
radix = decimal;
int berkeley_format = BSD_DEFAULT; /* 0 means use AT&T-style output. */
int show_version = 0;
int show_help = 0;
int show_totals = 0;
static bfd_size_type total_bsssize;
static bfd_size_type total_datasize;
static bfd_size_type total_textsize;
/* Program exit status. */
int return_code = 0;
static char *target = NULL;
/* Static declarations. */
static void usage (FILE *, int);
static void display_file (char *);
static void display_bfd (bfd *);
static void display_archive (bfd *);
static int size_number (bfd_size_type);
#if 0
static void lprint_number (int, bfd_size_type);
#endif
static void rprint_number (int, bfd_size_type);
static void print_berkeley_format (bfd *);
static void sysv_internal_sizer (bfd *, asection *, void *);
static void sysv_internal_printer (bfd *, asection *, void *);
static void print_sysv_format (bfd *);
static void print_sizes (bfd * file);
static void berkeley_sum (bfd *, sec_ptr, void *);
static void
usage (FILE *stream, int status)
{
fprintf (stream, _("Usage: %s [option(s)] [file(s)]\n"), program_name);
fprintf (stream, _(" Displays the sizes of sections inside binary files\n"));
fprintf (stream, _(" If no input file(s) are specified, a.out is assumed\n"));
fprintf (stream, _(" The options are:\n\
-A|-B --format={sysv|berkeley} Select output style (default is %s)\n\
-o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n\
-t --totals Display the total sizes (Berkeley only)\n\
--target=<bfdname> Set the binary file format\n\
-h --help Display this information\n\
-v --version Display the program's version\n\
\n"),
#if BSD_DEFAULT
"berkeley"
#else
"sysv"
#endif
);
list_supported_targets (program_name, stream);
if (status == 0)
fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
exit (status);
}
struct option long_options[] =
{
{"format", required_argument, 0, 200},
{"radix", required_argument, 0, 201},
{"target", required_argument, 0, 202},
{"totals", no_argument, &show_totals, 1},
{"version", no_argument, &show_version, 1},
{"help", no_argument, &show_help, 1},
{0, no_argument, 0, 0}
};
int main (int, char **);
int
main (int argc, char **argv)
{
int temp;
int c;
#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
setlocale (LC_MESSAGES, "");
#endif
#if defined (HAVE_SETLOCALE)
setlocale (LC_CTYPE, "");
#endif
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
program_name = *argv;
xmalloc_set_program_name (program_name);
bfd_init ();
set_default_bfd_target ();
while ((c = getopt_long (argc, argv, "ABHhVvdfotx", long_options,
(int *) 0)) != EOF)
switch (c)
{
case 200: /* --format */
switch (*optarg)
{
case 'B':
case 'b':
berkeley_format = 1;
break;
case 'S':
case 's':
berkeley_format = 0;
break;
default:
non_fatal (_("invalid argument to --format: %s"), optarg);
usage (stderr, 1);
}
break;
case 202: /* --target */
target = optarg;
break;
case 201: /* --radix */
#ifdef ANSI_LIBRARIES
temp = strtol (optarg, NULL, 10);
#else
temp = atol (optarg);
#endif
switch (temp)
{
case 10:
radix = decimal;
break;
case 8:
radix = octal;
break;
case 16:
radix = hex;
break;
default:
non_fatal (_("Invalid radix: %s\n"), optarg);
usage (stderr, 1);
}
break;
case 'A':
berkeley_format = 0;
break;
case 'B':
berkeley_format = 1;
break;
case 'v':
case 'V':
show_version = 1;
break;
case 'd':
radix = decimal;
break;
case 'x':
radix = hex;
break;
case 'o':
radix = octal;
break;
case 't':
show_totals = 1;
break;
case 'f': /* FIXME : For sysv68, `-f' means `full format', i.e.
`[fname:] M(.text) + N(.data) + O(.bss) + P(.comment) = Q'
where `fname: ' appears only if there are >= 2 input files,
and M, N, O, P, Q are expressed in decimal by default,
hexa or octal if requested by `-x' or `-o'.
Just to make things interesting, Solaris also accepts -f,
which prints out the size of each allocatable section, the
name of the section, and the total of the section sizes. */
/* For the moment, accept `-f' silently, and ignore it. */
break;
case 0:
break;
case 'h':
case 'H':
case '?':
usage (stderr, 1);
}
if (show_version)
print_version ("size");
if (show_help)
usage (stdout, 0);
if (optind == argc)
display_file ("a.out");
else
for (; optind < argc;)
display_file (argv[optind++]);
if (show_totals && berkeley_format)
{
bfd_size_type total = total_textsize + total_datasize + total_bsssize;
rprint_number (7, total_textsize);
putchar('\t');
rprint_number (7, total_datasize);
putchar('\t');
rprint_number (7, total_bsssize);
printf (((radix == octal) ? "\t%7lo\t%7lx\t" : "\t%7lu\t%7lx\t"),
(unsigned long) total, (unsigned long) total);
fputs ("(TOTALS)\n", stdout);
}
return return_code;
}
/* Display stats on file or archive member ABFD. */
static void
display_bfd (bfd *abfd)
{
char **matching;
if (bfd_check_format (abfd, bfd_archive))
/* An archive within an archive. */
return;
if (bfd_check_format_matches (abfd, bfd_object, &matching))
{
print_sizes (abfd);
printf ("\n");
return;
}
if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
{
bfd_nonfatal (bfd_get_filename (abfd));
list_matching_formats (matching);
free (matching);
return_code = 3;
return;
}
if (bfd_check_format_matches (abfd, bfd_core, &matching))
{
const char *core_cmd;
print_sizes (abfd);
fputs (" (core file", stdout);
core_cmd = bfd_core_file_failing_command (abfd);
if (core_cmd)
printf (" invoked as %s", core_cmd);
puts (")\n");
return;
}
bfd_nonfatal (bfd_get_filename (abfd));
if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
{
list_matching_formats (matching);
free (matching);
}
return_code = 3;
}
static void
display_archive (bfd *file)
{
bfd *arfile = (bfd *) NULL;
bfd *last_arfile = (bfd *) NULL;
for (;;)
{
bfd_set_error (bfd_error_no_error);
arfile = bfd_openr_next_archived_file (file, arfile);
if (arfile == NULL)
{
if (bfd_get_error () != bfd_error_no_more_archived_files)
{
bfd_nonfatal (bfd_get_filename (file));
return_code = 2;
}
break;
}
display_bfd (arfile);
if (last_arfile != NULL)
bfd_close (last_arfile);
last_arfile = arfile;
}
if (last_arfile != NULL)
bfd_close (last_arfile);
}
static void
display_file (char *filename)
{
bfd *file;
if (get_file_size (filename) < 1)
return;
file = bfd_openr (filename, target);
if (file == NULL)
{
bfd_nonfatal (filename);
return_code = 1;
return;
}
if (bfd_check_format (file, bfd_archive))
display_archive (file);
else
display_bfd (file);
if (!bfd_close (file))
{
bfd_nonfatal (filename);
return_code = 1;
return;
}
}
/* This is what lexical functions are for. */
static int
size_number (bfd_size_type num)
{
char buffer[40];
sprintf (buffer,
(radix == decimal ? "%lu" :
((radix == octal) ? "0%lo" : "0x%lx")),
(unsigned long) num);
return strlen (buffer);
}
#if 0
/* This is not used. */
static void
lprint_number (int width, bfd_size_type num)
{
char buffer[40];
sprintf (buffer,
(radix == decimal ? "%lu" :
((radix == octal) ? "0%lo" : "0x%lx")),
(unsigned long) num);
printf ("%-*s", width, buffer);
}
#endif
static void
rprint_number (int width, bfd_size_type num)
{
char buffer[40];
sprintf (buffer,
(radix == decimal ? "%lu" :
((radix == octal) ? "0%lo" : "0x%lx")),
(unsigned long) num);
printf ("%*s", width, buffer);
}
static bfd_size_type bsssize;
static bfd_size_type datasize;
static bfd_size_type textsize;
static void
berkeley_sum (bfd *abfd ATTRIBUTE_UNUSED, sec_ptr sec,
void *ignore ATTRIBUTE_UNUSED)
{
flagword flags;
bfd_size_type size;
flags = bfd_get_section_flags (abfd, sec);
if ((flags & SEC_ALLOC) == 0)
return;
size = bfd_get_section_size (sec);
if ((flags & SEC_CODE) != 0 || (flags & SEC_READONLY) != 0)
textsize += size;
else if ((flags & SEC_HAS_CONTENTS) != 0)
datasize += size;
else
bsssize += size;
}
static void
print_berkeley_format (bfd *abfd)
{
static int files_seen = 0;
bfd_size_type total;
bsssize = 0;
datasize = 0;
textsize = 0;
bfd_map_over_sections (abfd, berkeley_sum, NULL);
if (files_seen++ == 0)
#if 0
/* Intel doesn't like bss/stk because they don't have core files. */
puts ((radix == octal) ? " text\t data\tbss/stk\t oct\t hex\tfilename" :
" text\t data\tbss/stk\t dec\t hex\tfilename");
#else
puts ((radix == octal) ? " text\t data\t bss\t oct\t hex\tfilename" :
" text\t data\t bss\t dec\t hex\tfilename");
#endif
total = textsize + datasize + bsssize;
if (show_totals)
{
total_textsize += textsize;
total_datasize += datasize;
total_bsssize += bsssize;
}
rprint_number (7, textsize);
putchar ('\t');
rprint_number (7, datasize);
putchar ('\t');
rprint_number (7, bsssize);
printf (((radix == octal) ? "\t%7lo\t%7lx\t" : "\t%7lu\t%7lx\t"),
(unsigned long) total, (unsigned long) total);
fputs (bfd_get_filename (abfd), stdout);
if (bfd_my_archive (abfd))
printf (" (ex %s)", bfd_get_filename (bfd_my_archive (abfd)));
}
/* I REALLY miss lexical functions! */
bfd_size_type svi_total = 0;
bfd_vma svi_maxvma = 0;
int svi_namelen = 0;
int svi_vmalen = 0;
int svi_sizelen = 0;
static void
sysv_internal_sizer (bfd *file ATTRIBUTE_UNUSED, sec_ptr sec,
void *ignore ATTRIBUTE_UNUSED)
{
bfd_size_type size = bfd_section_size (file, sec);
if ( ! bfd_is_abs_section (sec)
&& ! bfd_is_com_section (sec)
&& ! bfd_is_und_section (sec))
{
int namelen = strlen (bfd_section_name (file, sec));
if (namelen > svi_namelen)
svi_namelen = namelen;
svi_total += size;
if (bfd_section_vma (file, sec) > svi_maxvma)
svi_maxvma = bfd_section_vma (file, sec);
}
}
static void
sysv_internal_printer (bfd *file ATTRIBUTE_UNUSED, sec_ptr sec,
void *ignore ATTRIBUTE_UNUSED)
{
bfd_size_type size = bfd_section_size (file, sec);
if ( ! bfd_is_abs_section (sec)
&& ! bfd_is_com_section (sec)
&& ! bfd_is_und_section (sec))
{
svi_total += size;
printf ("%-*s ", svi_namelen, bfd_section_name (file, sec));
rprint_number (svi_sizelen, size);
printf (" ");
rprint_number (svi_vmalen, bfd_section_vma (file, sec));
printf ("\n");
}
}
static void
print_sysv_format (bfd *file)
{
/* Size all of the columns. */
svi_total = 0;
svi_maxvma = 0;
svi_namelen = 0;
bfd_map_over_sections (file, sysv_internal_sizer, NULL);
svi_vmalen = size_number ((bfd_size_type)svi_maxvma);
if ((size_t) svi_vmalen < sizeof ("addr") - 1)
svi_vmalen = sizeof ("addr")-1;
svi_sizelen = size_number (svi_total);
if ((size_t) svi_sizelen < sizeof ("size") - 1)
svi_sizelen = sizeof ("size")-1;
svi_total = 0;
printf ("%s ", bfd_get_filename (file));
if (bfd_my_archive (file))
printf (" (ex %s)", bfd_get_filename (bfd_my_archive (file)));
printf (":\n%-*s %*s %*s\n", svi_namelen, "section",
svi_sizelen, "size", svi_vmalen, "addr");
bfd_map_over_sections (file, sysv_internal_printer, NULL);
printf ("%-*s ", svi_namelen, "Total");
rprint_number (svi_sizelen, svi_total);
printf ("\n\n");
}
static void
print_sizes (bfd *file)
{
if (berkeley_format)
print_berkeley_format (file);
else
print_sysv_format (file);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
timestamp

View File

@@ -1,668 +0,0 @@
/* strings -- print the strings of printable characters in files
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
2002, 2003, 2004 Free Software Foundation, Inc.
This program 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.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
/* Usage: strings [options] file...
Options:
--all
-a
- Do not scan only the initialized data section of object files.
--print-file-name
-f Print the name of the file before each string.
--bytes=min-len
-n min-len
-min-len Print graphic char sequences, MIN-LEN or more bytes long,
that are followed by a NUL or a newline. Default is 4.
--radix={o,x,d}
-t {o,x,d} Print the offset within the file before each string,
in octal/hex/decimal.
-o Like -to. (Some other implementations have -o like -to,
others like -td. We chose one arbitrarily.)
--encoding={s,S,b,l,B,L}
-e {s,S,b,l,B,L}
Select character encoding: 7-bit-character, 8-bit-character,
bigendian 16-bit, littleendian 16-bit, bigendian 32-bit,
littleendian 32-bit.
--target=BFDNAME
Specify a non-default object file format.
--help
-h Print the usage message on the standard output.
--version
-v Print the program version number.
Written by Richard Stallman <rms@gnu.ai.mit.edu>
and David MacKenzie <djm@gnu.ai.mit.edu>. */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "bfd.h"
#include <stdio.h>
#include "getopt.h"
#include <errno.h>
#include "bucomm.h"
#include "libiberty.h"
#include "safe-ctype.h"
/* Some platforms need to put stdin into binary mode, to read
binary files. */
#ifdef HAVE_SETMODE
#ifndef O_BINARY
#ifdef _O_BINARY
#define O_BINARY _O_BINARY
#define setmode _setmode
#else
#define O_BINARY 0
#endif
#endif
#if O_BINARY
#include <io.h>
#define SET_BINARY(f) do { if (!isatty (f)) setmode (f,O_BINARY); } while (0)
#endif
#endif
#define STRING_ISGRAPHIC(c) \
( (c) >= 0 \
&& (c) <= 255 \
&& ((c) == '\t' || ISPRINT (c) || (encoding == 'S' && (c) > 127)))
#ifndef errno
extern int errno;
#endif
/* The BFD section flags that identify an initialized data section. */
#define DATA_FLAGS (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS)
#ifdef HAVE_FOPEN64
typedef off64_t file_off;
#define file_open(s,m) fopen64(s, m)
#else
typedef off_t file_off;
#define file_open(s,m) fopen(s, m)
#endif
#ifdef HAVE_STAT64
typedef struct stat64 statbuf;
#define file_stat(f,s) stat64(f, s)
#else
typedef struct stat statbuf;
#define file_stat(f,s) stat(f, s)
#endif
/* Radix for printing addresses (must be 8, 10 or 16). */
static int address_radix;
/* Minimum length of sequence of graphic chars to trigger output. */
static int string_min;
/* TRUE means print address within file for each string. */
static bfd_boolean print_addresses;
/* TRUE means print filename for each string. */
static bfd_boolean print_filenames;
/* TRUE means for object files scan only the data section. */
static bfd_boolean datasection_only;
/* TRUE if we found an initialized data section in the current file. */
static bfd_boolean got_a_section;
/* The BFD object file format. */
static char *target;
/* The character encoding format. */
static char encoding;
static int encoding_bytes;
static struct option long_options[] =
{
{"all", no_argument, NULL, 'a'},
{"print-file-name", no_argument, NULL, 'f'},
{"bytes", required_argument, NULL, 'n'},
{"radix", required_argument, NULL, 't'},
{"encoding", required_argument, NULL, 'e'},
{"target", required_argument, NULL, 'T'},
{"help", no_argument, NULL, 'h'},
{"version", no_argument, NULL, 'v'},
{NULL, 0, NULL, 0}
};
static void strings_a_section (bfd *, asection *, void *);
static bfd_boolean strings_object_file (const char *);
static bfd_boolean strings_file (char *file);
static int integer_arg (char *s);
static void print_strings (const char *, FILE *, file_off, int, int, char *);
static void usage (FILE *, int);
static long get_char (FILE *, file_off *, int *, char **);
int main (int, char **);
int
main (int argc, char **argv)
{
int optc;
int exit_status = 0;
bfd_boolean files_given = FALSE;
#if defined (HAVE_SETLOCALE)
setlocale (LC_ALL, "");
#endif
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
program_name = argv[0];
xmalloc_set_program_name (program_name);
string_min = -1;
print_addresses = FALSE;
print_filenames = FALSE;
datasection_only = TRUE;
target = NULL;
encoding = 's';
while ((optc = getopt_long (argc, argv, "afhHn:ot:e:Vv0123456789",
long_options, (int *) 0)) != EOF)
{
switch (optc)
{
case 'a':
datasection_only = FALSE;
break;
case 'f':
print_filenames = TRUE;
break;
case 'H':
case 'h':
usage (stdout, 0);
case 'n':
string_min = integer_arg (optarg);
if (string_min < 1)
fatal (_("invalid number %s"), optarg);
break;
case 'o':
print_addresses = TRUE;
address_radix = 8;
break;
case 't':
print_addresses = TRUE;
if (optarg[1] != '\0')
usage (stderr, 1);
switch (optarg[0])
{
case 'o':
address_radix = 8;
break;
case 'd':
address_radix = 10;
break;
case 'x':
address_radix = 16;
break;
default:
usage (stderr, 1);
}
break;
case 'T':
target = optarg;
break;
case 'e':
if (optarg[1] != '\0')
usage (stderr, 1);
encoding = optarg[0];
break;
case 'V':
case 'v':
print_version ("strings");
break;
case '?':
usage (stderr, 1);
default:
if (string_min < 0)
string_min = optc - '0';
else
string_min = string_min * 10 + optc - '0';
break;
}
}
if (string_min < 0)
string_min = 4;
switch (encoding)
{
case 'S':
case 's':
encoding_bytes = 1;
break;
case 'b':
case 'l':
encoding_bytes = 2;
break;
case 'B':
case 'L':
encoding_bytes = 4;
break;
default:
usage (stderr, 1);
}
bfd_init ();
set_default_bfd_target ();
if (optind >= argc)
{
datasection_only = FALSE;
#ifdef SET_BINARY
SET_BINARY (fileno (stdin));
#endif
print_strings ("{standard input}", stdin, 0, 0, 0, (char *) NULL);
files_given = TRUE;
}
else
{
for (; optind < argc; ++optind)
{
if (strcmp (argv[optind], "-") == 0)
datasection_only = FALSE;
else
{
files_given = TRUE;
exit_status |= strings_file (argv[optind]) == FALSE;
}
}
}
if (!files_given)
usage (stderr, 1);
return (exit_status);
}
/* Scan section SECT of the file ABFD, whose printable name is FILE.
If it contains initialized data,
set `got_a_section' and print the strings in it. */
static void
strings_a_section (bfd *abfd, asection *sect, void *filearg)
{
const char *file = (const char *) filearg;
if ((sect->flags & DATA_FLAGS) == DATA_FLAGS)
{
bfd_size_type sz = bfd_get_section_size (sect);
void *mem = xmalloc (sz);
if (bfd_get_section_contents (abfd, sect, mem, (file_ptr) 0, sz))
{
got_a_section = TRUE;
print_strings (file, (FILE *) NULL, sect->filepos, 0, sz, mem);
}
free (mem);
}
}
/* Scan all of the sections in FILE, and print the strings
in the initialized data section(s).
Return TRUE if successful,
FALSE if not (such as if FILE is not an object file). */
static bfd_boolean
strings_object_file (const char *file)
{
bfd *abfd = bfd_openr (file, target);
if (abfd == NULL)
/* Treat the file as a non-object file. */
return FALSE;
/* This call is mainly for its side effect of reading in the sections.
We follow the traditional behavior of `strings' in that we don't
complain if we don't recognize a file to be an object file. */
if (!bfd_check_format (abfd, bfd_object))
{
bfd_close (abfd);
return FALSE;
}
got_a_section = FALSE;
bfd_map_over_sections (abfd, strings_a_section, (void *) file);
if (!bfd_close (abfd))
{
bfd_nonfatal (file);
return FALSE;
}
return got_a_section;
}
/* Print the strings in FILE. Return TRUE if ok, FALSE if an error occurs. */
static bfd_boolean
strings_file (char *file)
{
statbuf st;
if (file_stat (file, &st) < 0)
{
if (errno == ENOENT)
non_fatal (_("'%s': No such file"), file);
else
non_fatal (_("Warning: could not locate '%s'. reason: %s"),
file, strerror (errno));
return FALSE;
}
/* If we weren't told to scan the whole file,
try to open it as an object file and only look at
initialized data sections. If that fails, fall back to the
whole file. */
if (!datasection_only || !strings_object_file (file))
{
FILE *stream;
stream = file_open (file, FOPEN_RB);
if (stream == NULL)
{
fprintf (stderr, "%s: ", program_name);
perror (file);
return FALSE;
}
print_strings (file, stream, (file_off) 0, 0, 0, (char *) 0);
if (fclose (stream) == EOF)
{
fprintf (stderr, "%s: ", program_name);
perror (file);
return FALSE;
}
}
return TRUE;
}
/* Read the next character, return EOF if none available.
Assume that STREAM is positioned so that the next byte read
is at address ADDRESS in the file.
If STREAM is NULL, do not read from it.
The caller can supply a buffer of characters
to be processed before the data in STREAM.
MAGIC is the address of the buffer and
MAGICCOUNT is how many characters are in it. */
static long
get_char (FILE *stream, file_off *address, int *magiccount, char **magic)
{
int c, i;
long r = EOF;
unsigned char buf[4];
for (i = 0; i < encoding_bytes; i++)
{
if (*magiccount)
{
(*magiccount)--;
c = *(*magic)++;
}
else
{
if (stream == NULL)
return EOF;
#ifdef HAVE_GETC_UNLOCKED
c = getc_unlocked (stream);
#else
c = getc (stream);
#endif
if (c == EOF)
return EOF;
}
(*address)++;
buf[i] = c;
}
switch (encoding)
{
case 'S':
case 's':
r = buf[0];
break;
case 'b':
r = (buf[0] << 8) | buf[1];
break;
case 'l':
r = buf[0] | (buf[1] << 8);
break;
case 'B':
r = ((long) buf[0] << 24) | ((long) buf[1] << 16) |
((long) buf[2] << 8) | buf[3];
break;
case 'L':
r = buf[0] | ((long) buf[1] << 8) | ((long) buf[2] << 16) |
((long) buf[3] << 24);
break;
}
if (r == EOF)
return 0;
return r;
}
/* Find the strings in file FILENAME, read from STREAM.
Assume that STREAM is positioned so that the next byte read
is at address ADDRESS in the file.
Stop reading at address STOP_POINT in the file, if nonzero.
If STREAM is NULL, do not read from it.
The caller can supply a buffer of characters
to be processed before the data in STREAM.
MAGIC is the address of the buffer and
MAGICCOUNT is how many characters are in it.
Those characters come at address ADDRESS and the data in STREAM follow. */
static void
print_strings (const char *filename, FILE *stream, file_off address,
int stop_point, int magiccount, char *magic)
{
char *buf = (char *) xmalloc (sizeof (char) * (string_min + 1));
while (1)
{
file_off start;
int i;
long c;
/* See if the next `string_min' chars are all graphic chars. */
tryline:
if (stop_point && address >= stop_point)
break;
start = address;
for (i = 0; i < string_min; i++)
{
c = get_char (stream, &address, &magiccount, &magic);
if (c == EOF)
return;
if (! STRING_ISGRAPHIC (c))
/* Found a non-graphic. Try again starting with next char. */
goto tryline;
buf[i] = c;
}
/* We found a run of `string_min' graphic characters. Print up
to the next non-graphic character. */
if (print_filenames)
printf ("%s: ", filename);
if (print_addresses)
switch (address_radix)
{
case 8:
#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
if (sizeof (start) > sizeof (long))
printf ("%7Lo ", (unsigned long long) start);
else
#else
# if !BFD_HOST_64BIT_LONG
if (start != (unsigned long) start)
printf ("++%7lo ", (unsigned long) start);
else
# endif
#endif
printf ("%7lo ", (unsigned long) start);
break;
case 10:
#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
if (sizeof (start) > sizeof (long))
printf ("%7Ld ", (unsigned long long) start);
else
#else
# if !BFD_HOST_64BIT_LONG
if (start != (unsigned long) start)
printf ("++%7ld ", (unsigned long) start);
else
# endif
#endif
printf ("%7ld ", (long) start);
break;
case 16:
#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
if (sizeof (start) > sizeof (long))
printf ("%7Lx ", (unsigned long long) start);
else
#else
# if !BFD_HOST_64BIT_LONG
if (start != (unsigned long) start)
printf ("%lx%8.8lx ", (unsigned long) (start >> 32),
(unsigned long) (start & 0xffffffff));
else
# endif
#endif
printf ("%7lx ", (unsigned long) start);
break;
}
buf[i] = '\0';
fputs (buf, stdout);
while (1)
{
c = get_char (stream, &address, &magiccount, &magic);
if (c == EOF)
break;
if (! STRING_ISGRAPHIC (c))
break;
putchar (c);
}
putchar ('\n');
}
}
/* Parse string S as an integer, using decimal radix by default,
but allowing octal and hex numbers as in C. */
static int
integer_arg (char *s)
{
int value;
int radix = 10;
char *p = s;
int c;
if (*p != '0')
radix = 10;
else if (*++p == 'x')
{
radix = 16;
p++;
}
else
radix = 8;
value = 0;
while (((c = *p++) >= '0' && c <= '9')
|| (radix == 16 && (c & ~40) >= 'A' && (c & ~40) <= 'Z'))
{
value *= radix;
if (c >= '0' && c <= '9')
value += c - '0';
else
value += (c & ~40) - 'A';
}
if (c == 'b')
value *= 512;
else if (c == 'B')
value *= 1024;
else
p--;
if (*p)
fatal (_("invalid integer argument %s"), s);
return value;
}
static void
usage (FILE *stream, int status)
{
fprintf (stream, _("Usage: %s [option(s)] [file(s)]\n"), program_name);
fprintf (stream, _(" Display printable strings in [file(s)] (stdin by default)\n"));
fprintf (stream, _(" The options are:\n\
-a - --all Scan the entire file, not just the data section\n\
-f --print-file-name Print the name of the file before each string\n\
-n --bytes=[number] Locate & print any NUL-terminated sequence of at\n\
-<number> least [number] characters (default 4).\n\
-t --radix={o,x,d} Print the location of the string in base 8, 10 or 16\n\
-o An alias for --radix=o\n\
-T --target=<BFDNAME> Specify the binary file format\n\
-e --encoding={s,S,b,l,B,L} Select character size and endianness:\n\
s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n\
-h --help Display this information\n\
-v --version Print the program's version number\n"));
list_supported_targets (program_name, stream);
if (status == 0)
fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
exit (status);
}

View File

@@ -1,811 +0,0 @@
/* Sysroff object format dumper.
Copyright 1994, 1995, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
/* Written by Steve Chamberlain <sac@cygnus.com>.
This program reads a SYSROFF object file and prints it in an
almost human readable form to stdout. */
#include "bfd.h"
#include "bucomm.h"
#include "safe-ctype.h"
#include <stdio.h>
#include "libiberty.h"
#include "getopt.h"
#include "sysroff.h"
static int dump = 1;
static int segmented_p;
static int code;
static int addrsize = 4;
static FILE *file;
static void dh (unsigned char *, int);
static void itheader (char *, int);
static void p (void);
static void tabout (void);
static void pbarray (barray *);
static int getone (int);
static int opt (int);
static void must (int);
static void tab (int, char *);
static void dump_symbol_info (void);
static void derived_type (void);
static void module (void);
static void show_usage (FILE *, int);
extern char *getCHARS (unsigned char *, int *, int, int);
extern int fillup (char *);
extern barray getBARRAY (unsigned char *, int *, int, int);
extern int getINT (unsigned char *, int *, int, int);
extern int getBITS (char *, int *, int, int);
extern void sysroff_swap_tr_in (void);
extern void sysroff_print_tr_out (void);
extern int main (int, char **);
char *
getCHARS (unsigned char *ptr, int *idx, int size, int max)
{
int oc = *idx / 8;
char *r;
int b = size;
if (b >= max)
return "*undefined*";
if (b == 0)
{
/* Got to work out the length of the string from self. */
b = ptr[oc++];
(*idx) += 8;
}
*idx += b * 8;
r = xcalloc (b + 1, 1);
memcpy (r, ptr + oc, b);
r[b] = 0;
return r;
}
static void
dh (unsigned char *ptr, int size)
{
int i;
int j;
int span = 16;
printf ("\n************************************************************\n");
for (i = 0; i < size; i += span)
{
for (j = 0; j < span; j++)
{
if (j + i < size)
printf ("%02x ", ptr[i + j]);
else
printf (" ");
}
for (j = 0; j < span && j + i < size; j++)
{
int c = ptr[i + j];
if (c < 32 || c > 127)
c = '.';
printf ("%c", c);
}
printf ("\n");
}
}
int
fillup (char *ptr)
{
int size;
int sum;
int i;
size = getc (file) - 2;
fread (ptr, 1, size, file);
sum = code + size + 2;
for (i = 0; i < size; i++)
sum += ptr[i];
if ((sum & 0xff) != 0xff)
printf ("SUM IS %x\n", sum);
if (dump)
dh (ptr, size);
return size - 1;
}
barray
getBARRAY (unsigned char *ptr, int *idx, int dsize ATTRIBUTE_UNUSED,
int max ATTRIBUTE_UNUSED)
{
barray res;
int i;
int byte = *idx / 8;
int size = ptr[byte++];
res.len = size;
res.data = (unsigned char *) xmalloc (size);
for (i = 0; i < size; i++)
res.data[i] = ptr[byte++];
return res;
}
int
getINT (unsigned char *ptr, int *idx, int size, int max)
{
int n = 0;
int byte = *idx / 8;
if (byte >= max)
return 0;
if (size == -2)
size = addrsize;
if (size == -1)
size = 0;
switch (size)
{
case 0:
return 0;
case 1:
n = (ptr[byte]);
break;
case 2:
n = (ptr[byte + 0] << 8) + ptr[byte + 1];
break;
case 4:
n = (ptr[byte + 0] << 24) + (ptr[byte + 1] << 16) + (ptr[byte + 2] << 8) + (ptr[byte + 3]);
break;
default:
abort ();
}
*idx += size * 8;
return n;
}
int
getBITS (char *ptr, int *idx, int size, int max)
{
int byte = *idx / 8;
int bit = *idx % 8;
if (byte >= max)
return 0;
*idx += size;
return (ptr[byte] >> (8 - bit - size)) & ((1 << size) - 1);
}
static void
itheader (char *name, int code)
{
printf ("\n%s 0x%02x\n", name, code);
}
static int indent;
static void
p (void)
{
int i;
for (i = 0; i < indent; i++)
printf ("| ");
printf ("> ");
}
static void
tabout (void)
{
p ();
}
static void
pbarray (barray *y)
{
int x;
printf ("%d (", y->len);
for (x = 0; x < y->len; x++)
printf ("(%02x %c)", y->data[x],
ISPRINT (y->data[x]) ? y->data[x] : '.');
printf (")\n");
}
#define SYSROFF_PRINT
#define SYSROFF_SWAP_IN
#include "sysroff.c"
/* FIXME: sysinfo, which generates sysroff.[ch] from sysroff.info, can't
hack the special case of the tr block, which has no contents. So we
implement our own functions for reading in and printing out the tr
block. */
#define IT_tr_CODE 0x7f
void
sysroff_swap_tr_in (void)
{
char raw[255];
memset (raw, 0, 255);
fillup (raw);
}
void
sysroff_print_tr_out (void)
{
itheader ("tr", IT_tr_CODE);
}
static int
getone (int type)
{
int c = getc (file);
code = c;
if ((c & 0x7f) != type)
{
ungetc (c, file);
return 0;
}
switch (c & 0x7f)
{
case IT_cs_CODE:
{
struct IT_cs dummy;
sysroff_swap_cs_in (&dummy);
sysroff_print_cs_out (&dummy);
}
break;
case IT_dln_CODE:
{
struct IT_dln dummy;
sysroff_swap_dln_in (&dummy);
sysroff_print_dln_out (&dummy);
}
break;
case IT_hd_CODE:
{
struct IT_hd dummy;
sysroff_swap_hd_in (&dummy);
addrsize = dummy.afl;
sysroff_print_hd_out (&dummy);
}
break;
case IT_dar_CODE:
{
struct IT_dar dummy;
sysroff_swap_dar_in (&dummy);
sysroff_print_dar_out (&dummy);
}
break;
case IT_dsy_CODE:
{
struct IT_dsy dummy;
sysroff_swap_dsy_in (&dummy);
sysroff_print_dsy_out (&dummy);
}
break;
case IT_dfp_CODE:
{
struct IT_dfp dummy;
sysroff_swap_dfp_in (&dummy);
sysroff_print_dfp_out (&dummy);
}
break;
case IT_dso_CODE:
{
struct IT_dso dummy;
sysroff_swap_dso_in (&dummy);
sysroff_print_dso_out (&dummy);
}
break;
case IT_dpt_CODE:
{
struct IT_dpt dummy;
sysroff_swap_dpt_in (&dummy);
sysroff_print_dpt_out (&dummy);
}
break;
case IT_den_CODE:
{
struct IT_den dummy;
sysroff_swap_den_in (&dummy);
sysroff_print_den_out (&dummy);
}
break;
case IT_dbt_CODE:
{
struct IT_dbt dummy;
sysroff_swap_dbt_in (&dummy);
sysroff_print_dbt_out (&dummy);
}
break;
case IT_dty_CODE:
{
struct IT_dty dummy;
sysroff_swap_dty_in (&dummy);
sysroff_print_dty_out (&dummy);
}
break;
case IT_un_CODE:
{
struct IT_un dummy;
sysroff_swap_un_in (&dummy);
sysroff_print_un_out (&dummy);
}
break;
case IT_sc_CODE:
{
struct IT_sc dummy;
sysroff_swap_sc_in (&dummy);
sysroff_print_sc_out (&dummy);
}
break;
case IT_er_CODE:
{
struct IT_er dummy;
sysroff_swap_er_in (&dummy);
sysroff_print_er_out (&dummy);
}
break;
case IT_ed_CODE:
{
struct IT_ed dummy;
sysroff_swap_ed_in (&dummy);
sysroff_print_ed_out (&dummy);
}
break;
case IT_sh_CODE:
{
struct IT_sh dummy;
sysroff_swap_sh_in (&dummy);
sysroff_print_sh_out (&dummy);
}
break;
case IT_ob_CODE:
{
struct IT_ob dummy;
sysroff_swap_ob_in (&dummy);
sysroff_print_ob_out (&dummy);
}
break;
case IT_rl_CODE:
{
struct IT_rl dummy;
sysroff_swap_rl_in (&dummy);
sysroff_print_rl_out (&dummy);
}
break;
case IT_du_CODE:
{
struct IT_du dummy;
sysroff_swap_du_in (&dummy);
sysroff_print_du_out (&dummy);
}
break;
case IT_dus_CODE:
{
struct IT_dus dummy;
sysroff_swap_dus_in (&dummy);
sysroff_print_dus_out (&dummy);
}
break;
case IT_dul_CODE:
{
struct IT_dul dummy;
sysroff_swap_dul_in (&dummy);
sysroff_print_dul_out (&dummy);
}
break;
case IT_dss_CODE:
{
struct IT_dss dummy;
sysroff_swap_dss_in (&dummy);
sysroff_print_dss_out (&dummy);
}
break;
case IT_hs_CODE:
{
struct IT_hs dummy;
sysroff_swap_hs_in (&dummy);
sysroff_print_hs_out (&dummy);
}
break;
case IT_dps_CODE:
{
struct IT_dps dummy;
sysroff_swap_dps_in (&dummy);
sysroff_print_dps_out (&dummy);
}
break;
case IT_tr_CODE:
sysroff_swap_tr_in ();
sysroff_print_tr_out ();
break;
case IT_dds_CODE:
{
struct IT_dds dummy;
sysroff_swap_dds_in (&dummy);
sysroff_print_dds_out (&dummy);
}
break;
default:
printf ("GOT A %x\n", c);
return 0;
break;
}
return 1;
}
static int
opt (int x)
{
return getone (x);
}
#if 0
/* This is no longer used. */
static void
unit_info_list (void)
{
while (opt (IT_un_CODE))
{
getone (IT_us_CODE);
while (getone (IT_sc_CODE))
getone (IT_ss_CODE);
while (getone (IT_er_CODE))
;
while (getone (IT_ed_CODE))
;
}
}
#endif
#if 0
/* This is no longer used. */
static void
object_body_list (void)
{
while (getone (IT_sh_CODE))
{
while (getone (IT_ob_CODE))
;
while (getone (IT_rl_CODE))
;
}
}
#endif
static void
must (int x)
{
if (!getone (x))
printf ("WANTED %x!!\n", x);
}
static void
tab (int i, char *s)
{
indent += i;
if (s)
{
p ();
printf (s);
printf ("\n");
}
}
static void
dump_symbol_info (void)
{
tab (1, "SYMBOL INFO");
while (opt (IT_dsy_CODE))
{
if (opt (IT_dty_CODE))
{
must (IT_dbt_CODE);
derived_type ();
must (IT_dty_CODE);
}
}
tab (-1, "");
}
static void
derived_type (void)
{
tab (1, "DERIVED TYPE");
while (1)
{
if (opt (IT_dpp_CODE))
{
dump_symbol_info ();
must (IT_dpp_CODE);
}
else if (opt (IT_dfp_CODE))
{
dump_symbol_info ();
must (IT_dfp_CODE);
}
else if (opt (IT_den_CODE))
{
dump_symbol_info ();
must (IT_den_CODE);
}
else if (opt (IT_den_CODE))
{
dump_symbol_info ();
must (IT_den_CODE);
}
else if (opt (IT_dds_CODE))
{
dump_symbol_info ();
must (IT_dds_CODE);
}
else if (opt (IT_dar_CODE))
{
}
else if (opt (IT_dpt_CODE))
{
}
else if (opt (IT_dul_CODE))
{
}
else if (opt (IT_dse_CODE))
{
}
else if (opt (IT_dot_CODE))
{
}
else
break;
}
tab (-1, "");
}
#if 0
/* This is no longer used. */
static void
program_structure (void)
{
tab (1, "PROGRAM STRUCTURE");
while (opt (IT_dps_CODE))
{
must (IT_dso_CODE);
opt (IT_dss_CODE);
dump_symbol_info ();
must (IT_dps_CODE);
}
tab (-1, "");
}
#endif
#if 0
/* This is no longer used. */
static void
debug_list (void)
{
tab (1, "DEBUG LIST");
must (IT_du_CODE);
opt (IT_dus_CODE);
program_structure ();
must (IT_dln_CODE);
tab (-1, "");
}
#endif
static void
module (void)
{
int c = 0;
int l = 0;
tab (1, "MODULE***\n");
do
{
c = getc (file);
ungetc (c, file);
c &= 0x7f;
}
while (getone (c) && c != IT_tr_CODE);
#if 0
must (IT_cs_CODE);
must (IT_hd_CODE);
opt (IT_hs_CODE);
unit_info_list ();
object_body_list ();
debug_list ();
must (IT_tr_CODE);
#endif
tab (-1, "");
c = getc (file);
while (c != EOF)
{
printf ("%02x ", c);
l++;
if (l == 32)
{
printf ("\n");
l = 0;
}
c = getc (file);
}
}
char *program_name;
static void
show_usage (FILE *file, int status)
{
fprintf (file, _("Usage: %s [option(s)] in-file\n"), program_name);
fprintf (file, _("Print a human readable interpretation of a SYSROFF object file\n"));
fprintf (file, _(" The options are:\n\
-h --help Display this information\n\
-v --version Print the program's version number\n"));
if (status == 0)
fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO);
exit (status);
}
int
main (int ac, char **av)
{
char *input_file = NULL;
int opt;
static struct option long_options[] =
{
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'V'},
{NULL, no_argument, 0, 0}
};
#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
setlocale (LC_MESSAGES, "");
#endif
#if defined (HAVE_SETLOCALE)
setlocale (LC_CTYPE, "");
#endif
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
program_name = av[0];
xmalloc_set_program_name (program_name);
while ((opt = getopt_long (ac, av, "HhVv", long_options, (int *) NULL)) != EOF)
{
switch (opt)
{
case 'H':
case 'h':
show_usage (stdout, 0);
/*NOTREACHED*/
case 'v':
case 'V':
print_version ("sysdump");
exit (0);
/*NOTREACHED*/
case 0:
break;
default:
show_usage (stderr, 1);
/*NOTREACHED*/
}
}
/* The input and output files may be named on the command line. */
if (optind < ac)
input_file = av[optind];
if (!input_file)
fatal (_("no input file specified"));
file = fopen (input_file, FOPEN_RB);
if (!file)
fatal (_("cannot open input file %s"), input_file);
module ();
return 0;
}

View File

@@ -1,439 +0,0 @@
/* Copyright 2001, 2003 Free Software Foundation, Inc.
Written by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
This file is part of GNU binutils.
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
%{
#include <stdio.h>
#include <stdlib.h>
extern char *word;
extern char writecode;
extern int number;
extern int unit;
char nice_name[1000];
char *it;
int sofar;
int width;
int code;
char * repeat;
char *oldrepeat;
char *name;
int rdepth;
char *loop [] = {"","n","m","/*BAD*/"};
char *names[] = {" ","[n]","[n][m]"};
char *pnames[]= {"","*","**"};
%}
%union {
int i;
char *s;
}
%token COND
%token REPEAT
%token '(' ')'
%token <s> TYPE
%token <s> NAME
%token <i> NUMBER UNIT
%type <i> attr_size
%type <s> attr_desc attr_id attr_type
%%
top: {
switch (writecode)
{
case 'i':
printf("#ifdef SYSROFF_SWAP_IN\n");
break;
case 'p':
printf("#ifdef SYSROFF_p\n");
break;
case 'd':
break;
case 'g':
printf("#ifdef SYSROFF_SWAP_OUT\n");
break;
case 'c':
printf("#ifdef SYSROFF_PRINT\n");
printf("#include <stdio.h>\n");
printf("#include <stdlib.h>\n");
printf("#include <ansidecl.h>\n");
break;
}
}
it_list {
switch (writecode) {
case 'i':
case 'p':
case 'g':
case 'c':
printf("#endif\n");
break;
case 'd':
break;
}
}
;
it_list: it it_list
|
;
it:
'(' NAME NUMBER
{
it = $2; code = $3;
switch (writecode)
{
case 'd':
printf("\n\n\n#define IT_%s_CODE 0x%x\n", it,code);
printf("struct IT_%s;\n", it);
printf("extern void sysroff_swap_%s_in PARAMS ((struct IT_%s *));\n",
$2, it);
printf("extern void sysroff_swap_%s_out PARAMS ((FILE *, struct IT_%s *));\n",
$2, it);
printf("extern void sysroff_print_%s_out PARAMS ((struct IT_%s *));\n",
$2, it);
printf("struct IT_%s { \n", it);
break;
case 'i':
printf("void sysroff_swap_%s_in(ptr)\n",$2);
printf("struct IT_%s *ptr;\n", it);
printf("{\n");
printf("char raw[255];\n");
printf("\tint idx = 0 ;\n");
printf("\tint size;\n");
printf("memset(raw,0,255);\n");
printf("memset(ptr,0,sizeof(*ptr));\n");
printf("size = fillup(raw);\n");
break;
case 'g':
printf("void sysroff_swap_%s_out(file,ptr)\n",$2);
printf("FILE * file;\n");
printf("struct IT_%s *ptr;\n", it);
printf("{\n");
printf("\tchar raw[255];\n");
printf("\tint idx = 16 ;\n");
printf("\tmemset (raw, 0, 255);\n");
printf("\tcode = IT_%s_CODE;\n", it);
break;
case 'o':
printf("void sysroff_swap_%s_out(abfd,ptr)\n",$2);
printf("bfd * abfd;\n");
printf("struct IT_%s *ptr;\n",it);
printf("{\n");
printf("int idx = 0 ;\n");
break;
case 'c':
printf("void sysroff_print_%s_out(ptr)\n",$2);
printf("struct IT_%s *ptr;\n", it);
printf("{\n");
printf("itheader(\"%s\", IT_%s_CODE);\n",$2,$2);
break;
case 't':
break;
}
}
it_field_list
')'
{
switch (writecode) {
case 'd':
printf("};\n");
break;
case 'g':
printf("\tchecksum(file,raw, idx, IT_%s_CODE);\n", it);
case 'i':
case 'o':
case 'c':
printf("}\n");
}
}
;
it_field_list:
it_field it_field_list
| cond_it_field it_field_list
| repeat_it_field it_field_list
|
;
repeat_it_field: '(' REPEAT NAME
{
rdepth++;
switch (writecode)
{
case 'c':
if (rdepth==1)
printf("\tprintf(\"repeat %%d\\n\", %s);\n",$3);
if (rdepth==2)
printf("\tprintf(\"repeat %%d\\n\", %s[n]);\n",$3);
case 'i':
case 'g':
case 'o':
if (rdepth==1)
{
printf("\t{ int n; for (n = 0; n < %s; n++) {\n", $3);
}
if (rdepth == 2) {
printf("\t{ int m; for (m = 0; m < %s[n]; m++) {\n", $3);
}
break;
}
oldrepeat = repeat;
repeat = $3;
}
it_field_list ')'
{
repeat = oldrepeat;
oldrepeat =0;
rdepth--;
switch (writecode)
{
case 'i':
case 'g':
case 'o':
case 'c':
printf("\t}}\n");
}
}
;
cond_it_field: '(' COND NAME
{
switch (writecode)
{
case 'i':
case 'g':
case 'o':
case 'c':
printf("\tif (%s) {\n", $3);
break;
}
}
it_field_list ')'
{
switch (writecode)
{
case 'i':
case 'g':
case 'o':
case 'c':
printf("\t}\n");
}
}
;
it_field:
'(' attr_desc '(' attr_type attr_size ')' attr_id
{name = $7; }
enums ')'
{
char *desc = $2;
char *type = $4;
int size = $5;
char *id = $7;
char *p = names[rdepth];
char *ptr = pnames[rdepth];
switch (writecode)
{
case 'g':
if (size % 8)
{
printf("\twriteBITS(ptr->%s%s,raw,&idx,%d);\n",
id,
names[rdepth], size);
}
else {
printf("\twrite%s(ptr->%s%s,raw,&idx,%d,file);\n",
type,
id,
names[rdepth],size/8);
}
break;
case 'i':
{
if (rdepth >= 1)
{
printf("if (!ptr->%s) ptr->%s = (%s*)xcalloc(%s, sizeof(ptr->%s[0]));\n",
id,
id,
type,
repeat,
id);
}
if (rdepth == 2)
{
printf("if (!ptr->%s[n]) ptr->%s[n] = (%s**)xcalloc(%s[n], sizeof(ptr->%s[n][0]));\n",
id,
id,
type,
repeat,
id);
}
}
if (size % 8)
{
printf("\tptr->%s%s = getBITS(raw,&idx, %d,size);\n",
id,
names[rdepth],
size);
}
else {
printf("\tptr->%s%s = get%s(raw,&idx, %d,size);\n",
id,
names[rdepth],
type,
size/8);
}
break;
case 'o':
printf("\tput%s(raw,%d,%d,&idx,ptr->%s%s);\n", type,size/8,size%8,id,names[rdepth]);
break;
case 'd':
if (repeat)
printf("\t/* repeat %s */\n", repeat);
if (type[0] == 'I') {
printf("\tint %s%s; \t/* %s */\n",ptr,id, desc);
}
else if (type[0] =='C') {
printf("\tchar %s*%s;\t /* %s */\n",ptr,id, desc);
}
else {
printf("\tbarray %s%s;\t /* %s */\n",ptr,id, desc);
}
break;
case 'c':
printf("tabout();\n");
printf("\tprintf(\"/*%-30s*/ ptr->%s = \");\n", desc, id);
if (type[0] == 'I')
printf("\tprintf(\"%%d\\n\",ptr->%s%s);\n", id,p);
else if (type[0] == 'C')
printf("\tprintf(\"%%s\\n\",ptr->%s%s);\n", id,p);
else if (type[0] == 'B')
{
printf("\tpbarray(&ptr->%s%s);\n", id,p);
}
else abort();
break;
}
}
;
attr_type:
TYPE { $$ = $1; }
| { $$ = "INT";}
;
attr_desc:
'(' NAME ')'
{ $$ = $2; }
;
attr_size:
NUMBER UNIT
{ $$ = $1 * $2; }
;
attr_id:
'(' NAME ')' { $$ = $2; }
| { $$ = "dummy";}
;
enums:
| '(' enum_list ')' ;
enum_list:
|
enum_list '(' NAME NAME ')' {
switch (writecode)
{
case 'd':
printf("#define %s %s\n", $3,$4);
break;
case 'c':
printf("if (ptr->%s%s == %s) { tabout(); printf(\"%s\\n\");}\n", name, names[rdepth],$4,$3);
}
}
;
%%
/* four modes
-d write structure definitions for sysroff in host format
-i write functions to swap into sysroff format in
-o write functions to swap into sysroff format out
-c write code to print info in human form */
int yydebug;
char writecode;
int
main (int ac, char **av)
{
yydebug=0;
if (ac > 1)
writecode = av[1][1];
if (writecode == 'd')
{
printf("typedef struct { unsigned char *data; int len; } barray; \n");
printf("typedef int INT;\n");
printf("typedef char * CHARS;\n");
}
yyparse();
return 0;
}
int
yyerror (char *s)
{
fprintf(stderr, "%s\n" , s);
return 0;
}

View File

@@ -1,70 +0,0 @@
%{
/* Copyright 2001, 2003 Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker.
GLD 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.
GLD 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 GLD; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include "sysinfo.h"
char *word;
int number;
int unit;
#ifndef yywrap
static int yywrap (void) { return 1; }
#endif
%}
%%
"(" { return '(';}
")" { return ')';}
"[" { return '[';}
"]" { return ']';}
" " { ; }
";".* { ; }
"\t" { ; }
"\n" { ; }
"\""[^\"]*"\"" {
yylval.s = malloc(strlen (yytext));
strcpy(yylval.s, yytext+1);
yylval.s[strlen(yylval.s)-1] = 0;
return NAME;
}
0x[0-9a-f]+ {
yylval.i = strtol(yytext,0,16);
return NUMBER;
}
[0-9]+ {
yylval.i = atoi(yytext);
return NUMBER;
}
"bits" { yylval.i =1 ;return UNIT;}
"bit" { yylval.i = 1; return UNIT;}
"bytes" { yylval.i= 8; return UNIT;}
"byte" { yylval.i = 8; return UNIT;}
"int" { yylval.s = "INT"; return TYPE;}
"barray" { yylval.s = "BARRAY"; return TYPE;}
"chars" { yylval.s = "CHARS"; return TYPE;}
"variable" { yylval.i = 0; return NUMBER;}
"counted" { yylval.i = -4; return NUMBER;}
"addrsize" { yylval.i = -2; return NUMBER; }
"segsize" { yylval.i = -1; return NUMBER; }
"cond" { return COND;}
"repeat" { return REPEAT;}

View File

@@ -1,504 +0,0 @@
("cs" 0x0
(("size") (1 byte) ("size"))
(("hd") (1 byte) ("hd"))
(("hs") (1 byte) ("hs"))
(("un") (1 byte) ("un"))
(("us") (1 byte) ("us"))
(("sc") (1 byte) ("sc"))
(("ss") (1 byte) ("ss"))
(("er") (1 byte) ("er"))
(("ed") (1 byte) ("ed"))
(("sh") (1 byte) ("sh"))
(("ob") (1 byte) ("ob"))
(("rl") (1 byte) ("rl"))
(("du") (1 byte) ("du"))
(("dps") (1 byte) ("dps"))
(("dsy") (1 byte) ("dsy"))
(("dty") (1 byte) ("dty"))
(("dln") (1 byte) ("dln"))
(("dso") (1 byte) ("dso"))
(("dus") (1 byte) ("dus"))
(("dss") (1 byte) ("dss"))
(("dbt") (1 byte) ("dbt"))
(("dpp") (1 byte) ("dpp"))
(("dfp") (1 byte) ("dfp"))
(("den") (1 byte) ("den"))
(("dds") (1 byte) ("dds"))
(("dar") (1 byte) ("dar"))
(("dpt") (1 byte) ("dpt"))
(("dul") (1 byte) ("dul"))
(("dse") (1 byte) ("dse"))
(("dot") (1 byte) ("dot")))
("hd" 0x04
(("module type") (4 bits) ("mt")
(("MTYPE_ABS_LM" "0")
("MTYPE_REL_LM" "1")
("MTYPE_OMS_OR_LMS" "2")
("MTYPE_UNSPEC" "0xf")))
(("spare")(4 bits) ("spare1"))
(("creation date")( chars 12 bytes)( "cd"))
(("number of units") (2 bytes) ("nu"))
(("code") (1 byte) ("code"))
(("version") (chars 4 bytes) ("ver"))
(("address update") (1 byte) ("au"))
(("segment identifier") (1 bit) ("si"))
(("address field length") (4 bits) ("afl"))
(("spare")(3 bits) ("spare2"))
(("space size within segment") (1 byte) ("spcsz"))
(("segment size") (1 byte) ("segsz"))
(("segment shift") (1 byte) ("segsh"))
(("entry point") (1 byte) ("ep"))
(cond "ptr->ep"
(cond "ptr->mt != MTYPE_ABS_LM"
(("unit appearance number") (2 bytes) ("uan"))
(("section appearance number") (2 bytes) ("sa")))
(cond "segmented_p"
(("segment address") (segsize bytes) ("sad")))
(("address") (addrsize bytes) ("address")))
(("os name") (chars variable bytes) ("os"))
(("sys name") (chars variable bytes) ("sys"))
(("module name") (chars variable bytes) ("mn"))
(("cpu") (chars variable bytes) ("cpu")))
("hs" 0x05
(("neg number") (2 bytes) ("neg")))
("un" 0x06
(("format") (2 bits) ("format")
(("FORMAT_LM" "0")
("FORMAT_OM" "1")
("FORMAT_OMS_OR_LMS" "2")))
(("spare") (6 bits) ("spare1"))
(("number of sections") (2 bytes) ("nsections"))
(("number of external refs") (2 bytes) ("nextrefs"))
(("number of external defs") (2 bytes) ("nextdefs"))
(("unit name") (chars variable byte) ("name"))
(("tool name") (chars variable byte) ("tool"))
(("creation date") (chars 12 bytes) ("tcd"))
(("linker name") (chars variable byte) ("linker"))
(("creation date") (chars 12 bytes) ("lcd")))
("us" 0x07
(("negotiation number") (2 bytes) ("neg")))
("sc" 0x08
(("format") (2 bits) ("format"))
(("spare") (6 bits) ("spare"))
(("segment address") (segsize bytes) ("segadd"))
(("address") (addrsize bytes) ("addr"))
(("length") (addrsize bytes) ("length"))
(("alignment") (addrsize bytes) ("align"))
(("contents") (4 bits) ("contents")
(("CONTENTS_CODE" "0")
("CONTENTS_DATA" "1")
("CONTENTS_STACK" "2")
("CONTENTS_DUMMY" "3")
("CONTENTS_SPECIAL" "4")
("CONTENTS_NONSPEC" "0xf")))
(("concat") (4 bits) ("concat")
(("CONCAT_SIMPLE" "0")
("CONCAT_SHAREDC" "1")
("CONCAT_DUMMY" "2")
("CONCAT_GROUP" "3")
("CONCAT_SHARED" "4")
("CONCAT_PRIVATE" "5")
("CONCAT_UNSPEC" "0xf")))
(("read") (2 bits) ("read"))
(("write") (2 bits) ("write"))
(("exec") (2 bits) ("exec"))
(("initialized") (2 bits) ("init"))
(("mode") (2 bits) ("mode"))
(("spare") (6 bits) ("spare1"))
(("name") (chars variable byte) ("name")))
("ss" 0x09
(("neg number") (2 bytes) ("neg")))
("er" 0x0c
(("symbol type") (2 bits) ("type")
(("ER_ENTRY" "0")
("ER_DATA" "1")
("ER_NOTDEF" "2")
("ER_NOTSPEC" "3")))
(("spare") (6 bits) ("spare"))
(("symbol name") (chars variable byte) ("name")))
("ed" 0x14
(("section appearance number") (2 bytes) ("section"))
(("symbol type") (3 bits) ("type")
(("ED_TYPE_ENTRY" "0")
("ED_TYPE_DATA" "1")
("ED_TYPE_CONST" "2")
("ED_TYPE_NOTSPEC" "7")))
(("spare") (5 bits) ("spare"))
(cond "ptr->type==ED_TYPE_ENTRY || ptr->type==ED_TYPE_DATA"
(("symbol address") (addrsize bytes) ("address")))
(cond "ptr->type==ED_TYPE_CONST"
(("constant value") (addrsize bytes) ("constant")))
(("symbol name") (chars variable byte) ("name")))
("sh" 0x1a
(("unit appearance number") (2 bytes) ("unit"))
(("section appearance number") (2 bytes) ("section")))
("ob" 0x1c
(("starting address flag") (1 bit) ("saf"))
(("compression flag") (1 bit) ("cpf"))
(("spare") (6 bits) ("spare"))
(cond "ptr->saf"
( ("starting address") (addrsize bytes) ("address")))
(cond "ptr->cpf"
(("comp reps") (addrsize bytes) ("compreps")))
(("data") (barray counted byte) ("data")))
("rl" 0x20
(("boundary of relocatable area") (4 bits) ("boundary"))
(("address polarity") (1 bit) ("apol"))
(("segment number") (1 bit) ("segment"))
(("sign of relocation") (1 bit) ("sign"))
(("check range") (1 bit) ("check"))
(("reloc address") (addrsize bytes) ("addr"))
(("bit loc") (1 byte) ("bitloc"))
(("field length") (1 byte) ("flen"))
(("bcount") (1 byte) ("bcount"))
(("operator") (1 byte) ("op")
(("OP_RELOC_ADDR" "1")
("OP_SEC_REF" "0")
("OP_EXT_REF" "2")))
(cond "ptr->op == OP_EXT_REF"
(("symbol number") (2 bytes) ("symn")) )
(cond "ptr->op == OP_SEC_REF"
(("section number") (2 bytes) ("secn"))
(("const opcode") (1 byte) ("copcode_is_3"))
(("addend length") (1 byte) ("alength_is_4"))
(("addend") (4 byte) ("addend"))
(("plus opcode") (1 byte) ("aopcode_is_0x20")))
(cond "ptr->op == OP_RELOC_ADDR"
(("dunno") (2 bytes) ("dunno")))
(("end") (1 byte) ("end")))
("du" 0x30
(("format") (2 bits) ("format"))
(("optimized") (1 bit) ("optimized"))
(("stackfrmt") (2 bits) ("stackfrmt"))
(("spare") (3 bits) ("spare"))
(("unit number") (2 bytes) ("unit"))
(("sections") (2 bytes) ("sections"))
(repeat "ptr->sections"
(("section appearance number") (2 bytes) ("san"))
(("address") (addrsize bytes) ("address"))
(("section length") (addrsize bytes) ("length")))
(("tool name") (chars variable byte) ("tool"))
(("creation date") (chars 12 bytes) ("date")))
("dsy" 0x34
(("symbol type") (7 bits) ("type")
(("STYPE_VAR" "0")
("STYPE_LAB" "1")
("STYPE_PROC" "2")
("STYPE_FUNC" "3")
("STYPE_TYPE" "4")
("STYPE_CONST" "5")
("STYPE_ENTRY" "6")
("STYPE_MEMBER" "7")
("STYPE_ENUM" "8")
("STYPE_TAG" "9")
("STYPE_PACKAGE" "10")
("STYPE_GENERIC" "11")
("STYPE_TASK" "12")
("STYPE_EXCEPTION" "13")
("STYPE_PARAMETER" "14")
("STYPE_EQUATE" "15")
("STYPE_UNSPEC" "0x7f")))
(("assignment info") (1 bit) ("assign"))
(("symbol id") (2 bytes) ("snumber"))
(("symbol name") (chars variable bytes) ("sname"))
(("nesting level") (2 bytes) ("nesting"))
(cond "ptr->assign"
(("assignment type") (1 byte) ("ainfo")
(("AINFO_REG" "1")
("AINFO_STATIC_EXT_DEF" "2")
("AINFO_STATIC_EXT_REF" "3")
("AINFO_STATIC_INT" "4")
("AINFO_STATIC_COM" "5")
("AINFO_AUTO" "6")
("AINFO_CONST" "7")
("AINFO_UNSPEC" "0xff")))
(("data length") (addrsize bytes) ("dlength"))
(cond "ptr->ainfo == AINFO_STATIC_EXT_DEF
|| ptr->ainfo == AINFO_STATIC_INT
|| ptr->ainfo == AINFO_STATIC_COM"
(("section number") (2 bytes) ("section")))
(cond "ptr->ainfo == AINFO_STATIC_EXT_DEF
|| ptr->ainfo == AINFO_STATIC_INT
|| ptr->ainfo == AINFO_STATIC_COM
|| ptr->ainfo == AINFO_AUTO"
(("address") (addrsize bytes) ("address")))
(cond "ptr->ainfo == AINFO_REG"
(("register name") (chars variable bytes) ("reg")))
(cond "ptr->ainfo == AINFO_STATIC_EXT_DEF
|| ptr->ainfo == AINFO_STATIC_EXT_REF"
(("external name") (chars variable bytes) ("ename")))
(cond "ptr->ainfo == AINFO_CONST"
(("constant") (chars variable bytes) ("constant"))))
(cond "ptr->type == STYPE_MEMBER"
(("assignment unit") (1 bit) ("bitunit"))
(("spare") (7 bits) ("spare2"))
(("field length") (addrsize bytes) ("field_len"))
(("field offset") (addrsize bytes) ("field_off"))
(cond "ptr->bitunit"
(("bit offset") (addrsize bytes) ("field_bitoff"))))
(cond "ptr->type== STYPE_ENUM"
(("value length") (1 byte) ("evallen"))
(("value") (4 bytes) ("evalue")))
(cond "ptr->type == STYPE_CONST"
(("value") (chars variable bytes) ("cvalue")))
(cond "ptr->type == STYPE_EQUATE"
(("value length") (1 byte) ("qvallen"))
(("value") (4 bytes) ("qvalue"))
(("basic type") (1 byte) ("btype"))
(("size information") (addrsize bytes) ("sizeinfo"))
(("sign") (2 bits) ("sign"))
(("floating point type") (6 bits) ("flt_type")))
(("source file number") (2 bytes) ("sfn"))
(("source line number") (2 bytes) ("sln"))
(("negotiation number") (2 bytes) ("neg"))
(cond "ptr->type == STYPE_TAG"
(("magic") (1 byte) ("magic"))))
("dul" 0x52
(("max declaration type flag") (1 bit) ("max_variable"))
(("max spare") (7 bits) ("maxspare"))
(cond "ptr->max_variable == 0"
(("maximum") (addrsize bytes) ("max"))
(("max mode") (chars variable bytes) ("maxmode")))
(("min declaration type flag") (1 bit) ("min_variable"))
(("min spare") (7 bits) ("minspare"))
(cond "ptr->min_variable == 0"
(("minimum") (addrsize bytes) ("min"))
(("min mode") (chars variable bytes) ("minmode"))))
("dty" 0x36
(("end flag") (1 bit) ("end"))
(("spare") (7 bits) ("spare"))
(cond "!ptr->end"
(("negotiation") (2 bytes) ("neg"))))
("dbt" 0x44
(("basic type") (1 byte) ("btype")
(("BTYPE_VOID" "0")
("BTYPE_UNDEF" "1")
("BTYPE_CHAR" "2")
("BTYPE_INT" "3")
("BTYPE_FLOAT" "4")
("BTYPE_BIT" "5")
("BTYPE_STRING" "6")
("BTYPE_DECIMAL" "7")
("BTYPE_ENUM" "8")
("BTYPE_STRUCT" "9")
("BTYPE_TYPE" "10")
("BTYPE_TAG" "11")
("BTYPE_UNSPEC" "0xff")))
(("size info") (addrsize bytes) ("bitsize"))
(("sign") (2 bits) ("sign")
(("SIGN_SIGNED" "0")
("SIGN_UNSIGNED" "1")
("SIGN_UNSPEC" "3")))
(("floating point type") (6 bits) ("fptype")
(("FPTYPE_SINGLE" "0")
("FPTYPE_DOUBLE" "1")
("FPTYPE_EXTENDED" "2")
("FPTYPE_NOTSPEC" "0x3f")))
(cond "ptr->btype==BTYPE_TAG || ptr->btype == BTYPE_TYPE"
(("symbol id") (2 bytes) ("sid")))
(("negotiation") (2 bytes) ("neg")))
("dar" 0x4e
(("element length" ) (addrsize bytes) ("length"))
(("dims") (1 byte) ("dims"))
(repeat "ptr->dims"
(("variable flag") (1 bit) ("variable")
(("VARIABLE_FIXED" "0")
("VARIABLE_VARIABLE" "1")))
(("subscript type") (1 bit) ("subtype")
(("SUB_INTEGER" "0")
("SUB_TYPE" "1")))
(("spare") (6 bits) ("spare"))
(cond "ptr->subtype[n] == SUB_TYPE"
(("sub symbol id") (2 bytes) ("sid")))
(cond "ptr->subtype[n] == SUB_INTEGER"
(("max declaration type flag") (1 bit) ("max_variable"))
(("max spare") (7 bits) ("maxspare"))
;; FIXME: next field should be conditional on max_variable,
(("maximum") (addrsize bytes) ("max"))
(("min declaration type flag") (1 bit) ("min_variable"))
(("min spare") (7 bits) ("minspare"))
;; FIXME: next field should be conditional on min_variable
(("minimum") (addrsize bytes) ("min"))))
(("negotiation") (2 bytes) ("neg")))
("dso" 0x3a
(("function name") (2 bytes) ("sid"))
(("sp update count") (4 bytes) ("spupdates"))
(repeat "ptr->spupdates"
(("update address") (addrsize bytes) ("address"))
(("offset") (addrsize bytes) ("offset"))))
("dln" 0x38
(("number of lines") (2 bytes) ("nln"))
(repeat "ptr->nln"
(("source file number") (2 bytes) ("sfn"))
(("source line number") (2 bytes) ("sln"))
(("section number") (2 bytes) ("section"))
(("from address") (addrsize bytes) ("from_address"))
(("to address") (addrsize bytes) ("to_address"))
(("call count") (2 bytes) ("cc"))
)
(("neg") (2 bytes) ("neg")))
("dpp" 0x46
(("start/end") (1 bit) ("end"))
(("spare") (7 bits) ("spare"))
(cond "!ptr->end"
(("params") (1 byte) ("params"))
(("neg number") (2 bytes) ("neg"))))
("den" 0x4a
(("start/end") (1 bit) ("end"))
(("spare") (7 bits) ("spare"))
(cond "!ptr->end"
(("neg number") (2 bytes) ("neg"))))
("dfp" 0x48
(("start/end flag") (1 bit) ("end"))
(("spare") (7 bits) ("spare"))
(cond "!ptr->end"
(("number of parameters") (1 byte) ("nparams"))
(("neg number") (2 bytes) ("neg"))))
("dds" 0x4c
(("start/end") (1 bit) ("end"))
(("spare") (7 bits) ("spare"))
(cond "!ptr->end"
(("neg number") (2 bytes) ("neg"))))
("dpt" 0x50
(("neg number") (2 bytes) ("neg"))
(("dunno") (1 byte) ("dunno")))
("dse" 0x54
(("neg number") (2 bytes) ("neg"))
(("dunno") (1 byte) ("dunno")))
("dot" 0x56
(("unknown") (1 byte) ("unknown")))
; FIXME: unknown field should be repeated symbol number?
("dss" 0x42
(("type") (1 byte) ("type"))
(("external/internal") (1 bit) ("internal"))
(("spare") (7 bits) ("spare"))
(cond "!ptr->internal"
( ("package name") (chars variable byte) ("package")))
(cond "ptr->internal"
(("symbol id") (2 bytes) ("id")))
(("record type") (2 bytes) ("record"))
(("rules") (chars variable byte) ("rules"))
(("number of symbols") (2 bytes) ("nsymbols"))
(("unknown" ) (2 bytes) ("fixme")))
("pss" 0x40
(("negotiation number") (2 bytes) ("efn"))
(("number of source files") (2 bytes) ("ns"))
(repeat "ptr->ns"
(("directory reference bit") (1 bit) ("drb"))
(("spare") (7 bits) ("spare"))
(("completed file name") (chars variable byte) ("fname"))
(cond "ptr->drb[n]"
(("directory apperance number") (2 bytes) ("dan"))))
(("number of directories") (2 bytes) ("ndir"))
(repeat "ptr->ndir"
(("directory name") (chars variable bytes) ("dname"))))
; FIXME: the tr block has no contents. sysinfo, etc. aren't prepared
; to deal with that.
; ("tr" 0x7f)
("dus" 0x40
(("negotiation number") (2 bytes) ("efn"))
(("number of source files") (2 bytes) ("ns"))
(repeat "ptr->ns"
(("directory reference bit") (1 bit) ("drb"))
(("spare") (7 bits) ("spare"))
(("completed file name") (chars variable byte) ("fname"))
(cond "ptr->drb[n]"
(("directory apperance number") (2 bytes) ("dan"))))
(("number of directories") (2 bytes) ("ndir"))
(repeat "ptr->ndir"
(("directory name") (chars variable bytes) ("dname"))))
("dps" 0x32
(("start/end flag") (1 bit) ("end"))
(("block type") (7 bits) ("type")
(("BLOCK_TYPE_COMPUNIT" "0")
("BLOCK_TYPE_PROCEDURE" "2")
("BLOCK_TYPE_FUNCTION" "3")
("BLOCK_TYPE_BLOCK" "4")
("BLOCK_TYPE_BASIC" "9")))
(cond "!ptr->end"
(("optimization") (1 byte) ("opt"))
(("section number") (2 bytes) ("san"))
(("address") (addrsize bytes) ("address"))
(("block size") (addrsize bytes) ("block_size"))
(("nesting") (1 byte) ("nesting"))
(cond "ptr->type == BLOCK_TYPE_PROCEDURE
|| ptr->type == BLOCK_TYPE_FUNCTION"
(("return address") (1 bit) ("retaddr"))
(("interrupt function flag") (1 bit) ("intrflag"))
(("stack update flag") (1 bit) ("stackflag"))
(("intra page JMP") (1 bit) ("intrpagejmp"))
(("spare") (4 bits) ("spare")))
(("neg number") (2 bytes) ("neg"))))

View File

@@ -1,49 +0,0 @@
2004-07-12 Nick Clifton <nickc@redhat.com>
* binutils-all/dlltool.exp: Check that the -p switch is not
rejected.
2004-07-09 Andreas Schwab <schwab@suse.de>
* binutils-all/m68k/movem.s: New file.
* binutils-all/m68k/objdump.exp: New file.
2004-05-15 Nick Clifton <nickc@redhat.com>
* binutils-all/readelf.ss: Allow for ARM mapping symbols.
2004-05-12 Ben Elliston <bje@au.ibm.com>
* binutils-all/ar.exp: Remove stray semicolons.
* binutils-all/dlltool.exp: Likewise.
* binutils-all/objcopy.exp: Likewise.
* binutils-all/readelf.exp: Likewise.
* binutils-all/windres/windres.exp: Likewise.
* lib/utils-lib.exp: Likewise.
2004-04-14 Richard Sandiford <rsandifo@redhat.com>
* binutils-all/readelf.ss-mips: Allow named section symbols.
2004-03-30 Jakub Jelinek <jakub@redhat.com>
* binutils-all/objcopy.exp: Accept main as a data symbol as well.
2004-02-27 Andreas Schwab <schwab@suse.de>
* binutils-all/ar.exp (argument_parsing): New test.
2004-02-20 Nathan Sidwell <nathan@codesourcery.com>
* binutils-all/objcopy.exp: Reorder arguments for POSIXLY_CORRECT
systems.
For older changes see ChangeLog-9303
Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:

File diff suppressed because it is too large Load Diff

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