public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* Release 2.12
@ 2001-10-24 18:26 Hans-Peter Nilsson
  2001-10-24 18:38 ` Alan Modra
  2001-10-25  0:46 ` H . J . Lu
  0 siblings, 2 replies; 60+ messages in thread
From: Hans-Peter Nilsson @ 2001-10-24 18:26 UTC (permalink / raw)
  To: H . J . Lu, binutils

I'd like to propose H.J. as release manager for a 2.12 branch.
Assuming that you (H.J.) are interested, and that you would
consider doing the lot, not just GNU/Linux.

(No, I have nothing but thanks for Phil Blundell.)

brgds, H-P

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 18:26 Release 2.12 Hans-Peter Nilsson
@ 2001-10-24 18:38 ` Alan Modra
  2001-10-24 18:43   ` David O'Brien
                     ` (2 more replies)
  2001-10-25  0:46 ` H . J . Lu
  1 sibling, 3 replies; 60+ messages in thread
From: Alan Modra @ 2001-10-24 18:38 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: H . J . Lu, binutils

On Wed, Oct 24, 2001 at 09:26:54PM -0400, Hans-Peter Nilsson wrote:
> I'd like to propose H.J. as release manager for a 2.12 branch.
> Assuming that you (H.J.) are interested, and that you would
> consider doing the lot, not just GNU/Linux.

I like the idea.  I was going to suggest that the 2.12 fork should
coincide with one of HJ's releases in order to benefit from the testing
that H.J. puts into his releases.  As HP commented to me in private
mail, H.J. is already acting as release manager.  The number of people
using HJ's releases should speak loudly; if he was doing something wrong
there would be a large scale migration of linux users back to FSF
releases.

Alan

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 18:38 ` Alan Modra
@ 2001-10-24 18:43   ` David O'Brien
  2001-10-24 19:30     ` Alan Modra
  2001-10-24 18:49   ` Daniel Jacobowitz
  2001-10-24 19:37   ` Release 2.12 Russ Allbery
  2 siblings, 1 reply; 60+ messages in thread
From: David O'Brien @ 2001-10-24 18:43 UTC (permalink / raw)
  To: Hans-Peter Nilsson, H . J . Lu, binutils

On Thu, Oct 25, 2001 at 11:08:41AM +0930, Alan Modra wrote:
> On Wed, Oct 24, 2001 at 09:26:54PM -0400, Hans-Peter Nilsson wrote:
> > I'd like to propose H.J. as release manager for a 2.12 branch.
> > Assuming that you (H.J.) are interested, and that you would
> > consider doing the lot, not just GNU/Linux.
> 
> I like the idea.  I was going to suggest that the 2.12 fork should
> coincide with one of HJ's releases in order to benefit from the testing
> that H.J. puts into his releases.

There seems to be consensus that 2.12.0 is needed.
Once H.J. says 'yes' to HP's email, is this a good time to create the
2_12 branch? :-))

-- 
-- David  (obrien@FreeBSD.org)

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 18:38 ` Alan Modra
  2001-10-24 18:43   ` David O'Brien
@ 2001-10-24 18:49   ` Daniel Jacobowitz
  2001-10-24 19:43     ` Alan Modra
  2001-10-24 19:37   ` Release 2.12 Russ Allbery
  2 siblings, 1 reply; 60+ messages in thread
From: Daniel Jacobowitz @ 2001-10-24 18:49 UTC (permalink / raw)
  To: binutils; +Cc: Hans-Peter Nilsson, H . J . Lu

On Thu, Oct 25, 2001 at 11:08:41AM +0930, Alan Modra wrote:
> On Wed, Oct 24, 2001 at 09:26:54PM -0400, Hans-Peter Nilsson wrote:
> > I'd like to propose H.J. as release manager for a 2.12 branch.
> > Assuming that you (H.J.) are interested, and that you would
> > consider doing the lot, not just GNU/Linux.
> 
> I like the idea.  I was going to suggest that the 2.12 fork should
> coincide with one of HJ's releases in order to benefit from the testing
> that H.J. puts into his releases.  As HP commented to me in private
> mail, H.J. is already acting as release manager.  The number of people
> using HJ's releases should speak loudly; if he was doing something wrong
> there would be a large scale migration of linux users back to FSF
> releases.

While I support the idea, I'd like to strongly disagree with the last
part of your reasoning.

Both Debian and Hard Hat use H. J.'s binutils for roughly the same
reasons - they have marginally more testing than "pick a day, take a
snapshot".  Marginally.  If there was some better cross between every
eight months and weekly - for instance, if the release branch received
active bug fixes, when critical bugs were found - then things might be
quite different.

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 18:43   ` David O'Brien
@ 2001-10-24 19:30     ` Alan Modra
  2001-10-24 19:35       ` MMIX (was: Re: Release 2.12) Hans-Peter Nilsson
                         ` (2 more replies)
  0 siblings, 3 replies; 60+ messages in thread
From: Alan Modra @ 2001-10-24 19:30 UTC (permalink / raw)
  To: David O'Brien; +Cc: Hans-Peter Nilsson, H . J . Lu, binutils

On Wed, Oct 24, 2001 at 06:43:41PM -0700, David O'Brien wrote:
> 
> There seems to be consensus that 2.12.0 is needed.
> Once H.J. says 'yes' to HP's email, is this a good time to create the
> 2_12 branch? :-))

May I remind you that the binutils project isn't run as a democracy?  :-)

Addressing the technical side of this question, I'd say that we need
a freeze on new features to let the tree stabilise before branching.
eg. some of my recent commits broke various things, and I've had reports
that ppc embedded targets are broken due to mrg's recent commit.

Alan

^ permalink raw reply	[flat|nested] 60+ messages in thread

* MMIX (was: Re: Release 2.12)
  2001-10-24 19:30     ` Alan Modra
@ 2001-10-24 19:35       ` Hans-Peter Nilsson
  2001-10-24 21:45       ` Release 2.12 Eric Christopher
  2001-10-25  8:47       ` H . J . Lu
  2 siblings, 0 replies; 60+ messages in thread
From: Hans-Peter Nilsson @ 2001-10-24 19:35 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils

On Thu, 25 Oct 2001, Alan Modra wrote:
> Addressing the technical side of this question, I'd say that we need
> a freeze on new features to let the tree stabilise before branching.

Speaking of new features, permit me to remind the People in
Power that the MMIX target is not reviewed.

brgds, H-P

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 18:38 ` Alan Modra
  2001-10-24 18:43   ` David O'Brien
  2001-10-24 18:49   ` Daniel Jacobowitz
@ 2001-10-24 19:37   ` Russ Allbery
  2001-10-24 19:52     ` Alan Modra
  2 siblings, 1 reply; 60+ messages in thread
From: Russ Allbery @ 2001-10-24 19:37 UTC (permalink / raw)
  To: binutils

Alan Modra <amodra@bigpond.net.au> writes:

> As HP commented to me in private mail, H.J. is already acting as release
> manager.  The number of people using HJ's releases should speak loudly;
> if he was doing something wrong there would be a large scale migration
> of linux users back to FSF releases.

binutils is not, however, solely for Linux.  I think one of the major
questions would be whether he wants to put the same work into making sure
the other platforms also work.

As I recall, his binutils releases are generally marked as only being
appropriate for Linux systems.

-- 
Russ Allbery (rra@stanford.edu)             < http://www.eyrie.org/~eagle/ >

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 18:49   ` Daniel Jacobowitz
@ 2001-10-24 19:43     ` Alan Modra
  2001-10-24 20:10       ` Daniel Jacobowitz
                         ` (2 more replies)
  0 siblings, 3 replies; 60+ messages in thread
From: Alan Modra @ 2001-10-24 19:43 UTC (permalink / raw)
  To: binutils, Hans-Peter Nilsson, H . J . Lu

On Wed, Oct 24, 2001 at 09:50:03PM -0400, Daniel Jacobowitz wrote:
> On Thu, Oct 25, 2001 at 11:08:41AM +0930, Alan Modra wrote:
> > On Wed, Oct 24, 2001 at 09:26:54PM -0400, Hans-Peter Nilsson wrote:
> > > I'd like to propose H.J. as release manager for a 2.12 branch.
> > > Assuming that you (H.J.) are interested, and that you would
> > > consider doing the lot, not just GNU/Linux.
> > 
> > I like the idea.  I was going to suggest that the 2.12 fork should
> > coincide with one of HJ's releases in order to benefit from the testing
> > that H.J. puts into his releases.  As HP commented to me in private
> > mail, H.J. is already acting as release manager.  The number of people
> > using HJ's releases should speak loudly; if he was doing something wrong
> > there would be a large scale migration of linux users back to FSF
> > releases.
> 
> While I support the idea, I'd like to strongly disagree with the last
> part of your reasoning.

Which part?  "if he was doing something wrong there would be a large scale
migration of linux users back to FSF releases."?  Regardless of your
opinion regarding the level of testing, I'd say it was fairly obvious
that most linux people see HJ's releases as "better" than the FSF ones.
Mind you, I run CVS head binutils all the time.  ;-)

> Both Debian and Hard Hat use H. J.'s binutils for roughly the same
> reasons - they have marginally more testing than "pick a day, take a
> snapshot".  Marginally.  If there was some better cross between every
> eight months and weekly - for instance, if the release branch received
> active bug fixes, when critical bugs were found - then things might be
> quite different.

The real question here is "why don't debian and hard hat use FSF
binutils releases in preference to HJ's releases?"

Alan

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 19:37   ` Release 2.12 Russ Allbery
@ 2001-10-24 19:52     ` Alan Modra
  0 siblings, 0 replies; 60+ messages in thread
From: Alan Modra @ 2001-10-24 19:52 UTC (permalink / raw)
  To: Russ Allbery; +Cc: binutils

On Wed, Oct 24, 2001 at 07:37:31PM -0700, Russ Allbery wrote:
> Alan Modra <amodra@bigpond.net.au> writes:
> 
> > As HP commented to me in private mail, H.J. is already acting as release
> > manager.  The number of people using HJ's releases should speak loudly;
> > if he was doing something wrong there would be a large scale migration
> > of linux users back to FSF releases.
> 
> binutils is not, however, solely for Linux.  I think one of the major
> questions would be whether he wants to put the same work into making sure
> the other platforms also work.

Or in concert with other people.  Release managers _can't_ test
everything themselves.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 19:43     ` Alan Modra
@ 2001-10-24 20:10       ` Daniel Jacobowitz
  2001-10-24 20:35         ` Alan Modra
  2001-10-25  5:09         ` Christopher C. Chimelis
  2001-10-25  1:56       ` Philip Blundell
       [not found]       ` <amodra@bigpond.net.au>
  2 siblings, 2 replies; 60+ messages in thread
From: Daniel Jacobowitz @ 2001-10-24 20:10 UTC (permalink / raw)
  To: binutils, Hans-Peter Nilsson, H . J . Lu

On Thu, Oct 25, 2001 at 12:13:33PM +0930, Alan Modra wrote:
> On Wed, Oct 24, 2001 at 09:50:03PM -0400, Daniel Jacobowitz wrote:
> > On Thu, Oct 25, 2001 at 11:08:41AM +0930, Alan Modra wrote:
> > > On Wed, Oct 24, 2001 at 09:26:54PM -0400, Hans-Peter Nilsson wrote:
> > > > I'd like to propose H.J. as release manager for a 2.12 branch.
> > > > Assuming that you (H.J.) are interested, and that you would
> > > > consider doing the lot, not just GNU/Linux.
> > > 
> > > I like the idea.  I was going to suggest that the 2.12 fork should
> > > coincide with one of HJ's releases in order to benefit from the testing
> > > that H.J. puts into his releases.  As HP commented to me in private
> > > mail, H.J. is already acting as release manager.  The number of people
> > > using HJ's releases should speak loudly; if he was doing something wrong
> > > there would be a large scale migration of linux users back to FSF
> > > releases.
> > 
> > While I support the idea, I'd like to strongly disagree with the last
> > part of your reasoning.
> 
> Which part?  "if he was doing something wrong there would be a large scale
> migration of linux users back to FSF releases."?  Regardless of your
> opinion regarding the level of testing, I'd say it was fairly obvious
> that most linux people see HJ's releases as "better" than the FSF ones.
> Mind you, I run CVS head binutils all the time.  ;-)

Yes, that part.  And it's certainly not "most".  Consider:
 - Debian uses them.  That's Chris C.'s decision, and seems to be a
reasonable one, overall.
  - Hard Hat uses them, but we're considering switching back to the
trunk, especially if a 2.12 is forthcoming.  There are obvious
advantages to working from a real release branch.  Three of us made
that evaluation.

These are probably representative: there's no room for a large
migration; most users don't just choose their own.  But that misses the
real point, which is below.

> > Both Debian and Hard Hat use H. J.'s binutils for roughly the same
> > reasons - they have marginally more testing than "pick a day, take a
> > snapshot".  Marginally.  If there was some better cross between every
> > eight months and weekly - for instance, if the release branch received
> > active bug fixes, when critical bugs were found - then things might be
> > quite different.
> 
> The real question here is "why don't debian and hard hat use FSF
> binutils releases in preference to HJ's releases?"

Because critical bugs are found in the released versions and not fixed. 
GNU Libc, for instance, has an unpleasant habit of depending on
binutils not-yet-released.  The patches don't tend to be easily
back-portable for those without a history of binutils experience.  If
we want to make new programs work, we need to move forward fairly
frequently, and HJ offers the only way to do that.

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 20:10       ` Daniel Jacobowitz
@ 2001-10-24 20:35         ` Alan Modra
  2001-10-24 20:44           ` Daniel Jacobowitz
  2001-10-25  5:09         ` Christopher C. Chimelis
  1 sibling, 1 reply; 60+ messages in thread
From: Alan Modra @ 2001-10-24 20:35 UTC (permalink / raw)
  To: binutils, Hans-Peter Nilsson, H . J . Lu

On Wed, Oct 24, 2001 at 11:10:41PM -0400, Daniel Jacobowitz wrote:
> 
> Because critical bugs are found in the released versions and not fixed. 
> GNU Libc, for instance, has an unpleasant habit of depending on
> binutils not-yet-released.  The patches don't tend to be easily
> back-portable for those without a history of binutils experience.  If
> we want to make new programs work, we need to move forward fairly
> frequently, and HJ offers the only way to do that.

Which is the sense that I meant "better".  ie. as things stand at the
moment, HJ's binutils-2.11.92.0.10 is probably better than 2.11.2 for
most people.  I wasn't trying to say that 2.11 was worse than HJ's
release just before the 2.11 release date.

Alan

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 20:35         ` Alan Modra
@ 2001-10-24 20:44           ` Daniel Jacobowitz
  0 siblings, 0 replies; 60+ messages in thread
From: Daniel Jacobowitz @ 2001-10-24 20:44 UTC (permalink / raw)
  To: binutils, Hans-Peter Nilsson, H . J . Lu

On Thu, Oct 25, 2001 at 01:05:14PM +0930, Alan Modra wrote:
> On Wed, Oct 24, 2001 at 11:10:41PM -0400, Daniel Jacobowitz wrote:
> > 
> > Because critical bugs are found in the released versions and not fixed. 
> > GNU Libc, for instance, has an unpleasant habit of depending on
> > binutils not-yet-released.  The patches don't tend to be easily
> > back-portable for those without a history of binutils experience.  If
> > we want to make new programs work, we need to move forward fairly
> > frequently, and HJ offers the only way to do that.
> 
> Which is the sense that I meant "better".  ie. as things stand at the
> moment, HJ's binutils-2.11.92.0.10 is probably better than 2.11.2 for
> most people.  I wasn't trying to say that 2.11 was worse than HJ's
> release just before the 2.11 release date.

In which case, sorry for the misunderstanding.  I agree.

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 19:30     ` Alan Modra
  2001-10-24 19:35       ` MMIX (was: Re: Release 2.12) Hans-Peter Nilsson
@ 2001-10-24 21:45       ` Eric Christopher
  2001-10-25  8:41         ` H . J . Lu
  2001-10-25  8:47       ` H . J . Lu
  2 siblings, 1 reply; 60+ messages in thread
From: Eric Christopher @ 2001-10-24 21:45 UTC (permalink / raw)
  To: Alan Modra; +Cc: David O'Brien, Hans-Peter Nilsson, H . J . Lu, binutils

> Addressing the technical side of this question, I'd say that we need
> a freeze on new features to let the tree stabilise before branching.
> eg. some of my recent commits broke various things, and I've had reports
> that ppc embedded targets are broken due to mrg's recent commit.

Right.  I agree as well.  MIPS is currently broken as well. I took a look
at the problem and couldn't track it down within a couple of days. I'm
going to have the person who submitted the original patch look at it and
then either back it out or fix the bugs. This will be in no earlier than
Monday.

-eric

-- 
Look out behind you!

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 18:26 Release 2.12 Hans-Peter Nilsson
  2001-10-24 18:38 ` Alan Modra
@ 2001-10-25  0:46 ` H . J . Lu
  2001-10-25  8:57   ` David O'Brien
  1 sibling, 1 reply; 60+ messages in thread
From: H . J . Lu @ 2001-10-25  0:46 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: binutils

On Wed, Oct 24, 2001 at 09:26:54PM -0400, Hans-Peter Nilsson wrote:
> I'd like to propose H.J. as release manager for a 2.12 branch.
> Assuming that you (H.J.) are interested, and that you would
> consider doing the lot, not just GNU/Linux.
> 

Thanks for your confidence in me. But I am afraid I may not have the
time/resource to be the FSF binutils release manager, depending on the
release criteria. I have been making my binutils available to the Linux
community for a long time. However, partly because of the time/resource
constraints, I do things quite differently from the FSF binutils:

1. I don't make every release perfect. One recent example is
2.11.92.0.5 :-). A perfect release is my goal.
2. I make a new release,

	A. When the previous release is very broken, like 2.11.92.0.7
	for 2.11.92.0.5 and and 2.11.92.0.10 for 2.11.92.0.5.
	B. When the gcc/glibc development requires or can take the
	advantage of the new features in binutils.
	C. When there are enough changes accumulated in CVS. I don't
	want to have changes in CVS which are gone tested by Linux for
	a long period of time.

3. I stopped tracking branch long time ago. I want to make sure the
trunk is working for Linux.

That means my release schedule is not driven by a fixed time table, but
is done on an as-needed basis, which is defined by me. Right now, I
only test generic ELF and Linux specific features in binutils. I don't
test a.out, COFF, ECOFF, PE, .... I will make a new release even if
they are known to be broken and won't be fixed any time soon. Also I
won't make a new release just because a serious bug in a.out, COFF,
ECOFF, PE, .... is fixed.

I don't believe in updating a stable release branch. I think it is a
waste of time. My goal is to makes sure the CVS trunk won't go bad for
too long under Linux. In return, the ELF implementation in CVS trunk
is constantly checked by Linux. My scheme works ok for Linux and ELF.
But I don't think it will work too well for the FSF binutils. There are
so many questions:

1. How frequently should a FSF release be made?
2. Under what condition should a new FSF release be made?
3. How do we decide major/minor releases?
4. What is the release criteria?

Testing binutils for Linux is not easy. Testing it for all supported
platforms is a nightmare. Unless we can come to a consensus based on
my Linux binutils scheme, I don't think I am the suitable person for
the FSF binutils release manager. One possibility is

1. Turn my stable release into a release branch and fix all other
platforms on that branch.
2. In the mean time, I may be making new releases for Linux.
3. If fixing the other platforms on branch takes too long, say more
than 2 months, go to #1.
4. When there are new bugs reported after a new FSF release is made,
go to #1 if all possible, otherwise fix them on branch.


H.J.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 19:43     ` Alan Modra
  2001-10-24 20:10       ` Daniel Jacobowitz
@ 2001-10-25  1:56       ` Philip Blundell
  2001-10-25  8:30         ` H . J . Lu
       [not found]       ` <amodra@bigpond.net.au>
  2 siblings, 1 reply; 60+ messages in thread
From: Philip Blundell @ 2001-10-25  1:56 UTC (permalink / raw)
  To: binutils, Hans-Peter Nilsson, H . J . Lu

>The real question here is "why don't debian and hard hat use FSF
>binutils releases in preference to HJ's releases?"

Because, pretty clearly, FSF releases are still not happening often enough; 
bugs don't get fixed in a timely fashion.

Having thought about the matter a bit in recent weeks, I think a release every 
two or three months would probably be about right, with maybe a patch version 
or two in the interim.  They need to be seldom enough for a reasonable amount 
of testing to go on -- distributions like Red Hat and Debian could probably 
tolerate more instability, because they do their own QA, but for individual 
users, particularly on slightly obscure platforms, it will take some care to 
make sure that each release doesn't just end up swapping one bug-of-the-day for 
another. 

p.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 20:10       ` Daniel Jacobowitz
  2001-10-24 20:35         ` Alan Modra
@ 2001-10-25  5:09         ` Christopher C. Chimelis
  1 sibling, 0 replies; 60+ messages in thread
From: Christopher C. Chimelis @ 2001-10-25  5:09 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: binutils, Hans-Peter Nilsson, H . J . Lu

On Wed, 24 Oct 2001, Daniel Jacobowitz wrote:

> Yes, that part.  And it's certainly not "most".  Consider:
>  - Debian uses them.  That's Chris C.'s decision, and seems to be a
> reasonable one, overall.

I evaluate both the FSF releases and H.J.'s, no matter what.  Mostly, I
use H.J.'s for two reasons: includes the hooks for Compaq demangler
support for their compiler releases for Alpha-Linux and also because
H.J.'s usually include newer fixes from CVS for platforms that Debian has
ports for (such as IA-64, HPPA, and MIPS{el}).

> Because critical bugs are found in the released versions and not fixed. 
> GNU Libc, for instance, has an unpleasant habit of depending on
> binutils not-yet-released.  The patches don't tend to be easily
> back-portable for those without a history of binutils experience.  If
> we want to make new programs work, we need to move forward fairly
> frequently, and HJ offers the only way to do that.

Agreed on all points.

C

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-25  1:56       ` Philip Blundell
@ 2001-10-25  8:30         ` H . J . Lu
  2001-10-25  8:47           ` David O'Brien
  0 siblings, 1 reply; 60+ messages in thread
From: H . J . Lu @ 2001-10-25  8:30 UTC (permalink / raw)
  To: Philip Blundell; +Cc: binutils, Hans-Peter Nilsson

On Thu, Oct 25, 2001 at 09:53:15AM +0100, Philip Blundell wrote:
> >The real question here is "why don't debian and hard hat use FSF
> >binutils releases in preference to HJ's releases?"
> 
> Because, pretty clearly, FSF releases are still not happening often enough; 
> bugs don't get fixed in a timely fashion.
> 
> Having thought about the matter a bit in recent weeks, I think a release every 
> two or three months would probably be about right, with maybe a patch version 
> or two in the interim.  They need to be seldom enough for a reasonable amount 
> of testing to go on -- distributions like Red Hat and Debian could probably 
> tolerate more instability, because they do their own QA, but for individual 
> users, particularly on slightly obscure platforms, it will take some care to 
> make sure that each release doesn't just end up swapping one bug-of-the-day for 
> another. 

That is the goal you can never achieve. That is one of the main differences
between my binutils and the FSF binutils. Can show me an FSF binutils
release which has very few bugs? There is nothing wrong for a release
with some bugs. But there is something seriously wrong when you don't have
a new release to fix them very quickly.


H.J.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 21:45       ` Release 2.12 Eric Christopher
@ 2001-10-25  8:41         ` H . J . Lu
  0 siblings, 0 replies; 60+ messages in thread
From: H . J . Lu @ 2001-10-25  8:41 UTC (permalink / raw)
  To: Eric Christopher
  Cc: Alan Modra, David O'Brien, Hans-Peter Nilsson, binutils

On Wed, Oct 24, 2001 at 09:47:39PM -0700, Eric Christopher wrote:
> > Addressing the technical side of this question, I'd say that we need
> > a freeze on new features to let the tree stabilise before branching.
> > eg. some of my recent commits broke various things, and I've had reports
> > that ppc embedded targets are broken due to mrg's recent commit.
> 
> Right.  I agree as well.  MIPS is currently broken as well. I took a look
> at the problem and couldn't track it down within a couple of days. I'm
> going to have the person who submitted the original patch look at it and
> then either back it out or fix the bugs. This will be in no earlier than
> Monday.

Linux/MIPS seems ok to me. I even rebuilt my mips port of RedHat 7.1 with
binutils on 20011021. I don't see any problems.


H.J.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-24 19:30     ` Alan Modra
  2001-10-24 19:35       ` MMIX (was: Re: Release 2.12) Hans-Peter Nilsson
  2001-10-24 21:45       ` Release 2.12 Eric Christopher
@ 2001-10-25  8:47       ` H . J . Lu
  2 siblings, 0 replies; 60+ messages in thread
From: H . J . Lu @ 2001-10-25  8:47 UTC (permalink / raw)
  To: David O'Brien, Hans-Peter Nilsson, binutils

On Thu, Oct 25, 2001 at 12:00:41PM +0930, Alan Modra wrote:
> On Wed, Oct 24, 2001 at 06:43:41PM -0700, David O'Brien wrote:
> > 
> > There seems to be consensus that 2.12.0 is needed.
> > Once H.J. says 'yes' to HP's email, is this a good time to create the
> > 2_12 branch? :-))
> 
> May I remind you that the binutils project isn't run as a democracy?  :-)
> 
> Addressing the technical side of this question, I'd say that we need
> a freeze on new features to let the tree stabilise before branching.
> eg. some of my recent commits broke various things, and I've had reports
> that ppc embedded targets are broken due to mrg's recent commit.
> 

The problem with those targets is the binutils in CVS rarely gets tested
on them. Unlike Linux, my Linux binutils keeps CVS in a relatively sane
state, at least on Linux. When the new release is coming up, there is very
little needed to be done on Linux, unless the release branch is made
at the wrong time :-(.


H.J.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-25  8:30         ` H . J . Lu
@ 2001-10-25  8:47           ` David O'Brien
  0 siblings, 0 replies; 60+ messages in thread
From: David O'Brien @ 2001-10-25  8:47 UTC (permalink / raw)
  To: binutils

On Thu, Oct 25, 2001 at 08:30:42AM -0700, H . J . Lu wrote:
> There is nothing wrong for a release
> with some bugs. But there is something seriously wrong when you don't have
> a new release to fix them very quickly.
                      ^^^^^^
                   serious bugs

-- 
-- David  (obrien@FreeBSD.org)

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-25  0:46 ` H . J . Lu
@ 2001-10-25  8:57   ` David O'Brien
  2001-10-25  9:38     ` H . J . Lu
  0 siblings, 1 reply; 60+ messages in thread
From: David O'Brien @ 2001-10-25  8:57 UTC (permalink / raw)
  To: H . J . Lu; +Cc: Hans-Peter Nilsson, binutils

On Thu, Oct 25, 2001 at 12:45:53AM -0700, H . J . Lu wrote:
> But I don't think it will work too well for the FSF binutils. There are
> so many questions:
> 
> 1. How frequently should a FSF release be made?

FreeBSD has been happy with the release schedule 2.10.0 and later.
We are just to the point that a lot of changes have happened in the
main-line, including new important architecture support (ia-64, x64_64), so
it is time for a new major release.  If it weren't for those two new
arches, FreeBSD would be fine with 2.11.2.  (I know someone will say both
of these arches are in 2_11, but they are so new lots of changes are
being made for them and not getting put into the 2_11 branch.)

> 2. Under what condition should a new FSF release be made?

As with p0rn, we may not be able to exactly define it, but we can pretty
much "feel" when it is time.  As we've seen this week everyone "feels" it
is time.


> Testing binutils for Linux is not easy. Testing it for all supported
> platforms is a nightmare. Unless we can come to a consensus based on
> my Linux binutils scheme, I don't think I am the suitable person for
> the FSF binutils release manager.

You personally do not have to do the testing on each and ever platform.
You are "just" the gatekeeper. (it is a big job, thus the "just")
From your maintenance of your Linux Binutils you can gauge the risk of
changes.  This is the desired quality you bring to being the release
manager.

-- 
-- David  (obrien@FreeBSD.org)

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-25  8:57   ` David O'Brien
@ 2001-10-25  9:38     ` H . J . Lu
  2001-10-25  9:44       ` H . J . Lu
  0 siblings, 1 reply; 60+ messages in thread
From: H . J . Lu @ 2001-10-25  9:38 UTC (permalink / raw)
  To: David O'Brien; +Cc: Hans-Peter Nilsson, binutils

On Thu, Oct 25, 2001 at 08:57:16AM -0700, David O'Brien wrote:
> On Thu, Oct 25, 2001 at 12:45:53AM -0700, H . J . Lu wrote:
> > But I don't think it will work too well for the FSF binutils. There are
> > so many questions:
> > 
> > 1. How frequently should a FSF release be made?
> 
> FreeBSD has been happy with the release schedule 2.10.0 and later.
> We are just to the point that a lot of changes have happened in the
> main-line, including new important architecture support (ia-64, x64_64), so
> it is time for a new major release.  If it weren't for those two new
> arches, FreeBSD would be fine with 2.11.2.  (I know someone will say both
> of these arches are in 2_11, but they are so new lots of changes are
> being made for them and not getting put into the 2_11 branch.)

I have been never happy with the FSF release schedule. Otherwise, I might
not have been making my own binutils. The main problem is there is never
a stable, capable binutils for Linux. Even today, we are still working on
some new ELF features. I guess they will only be tested on Linux :-(.

> 
> > 2. Under what condition should a new FSF release be made?
> 
> As with p0rn, we may not be able to exactly define it, but we can pretty
> much "feel" when it is time.  As we've seen this week everyone "feels" it
> is time.

Well, by "we", did you mean the release manager or the users?

> 
> 
> > Testing binutils for Linux is not easy. Testing it for all supported
> > platforms is a nightmare. Unless we can come to a consensus based on
> > my Linux binutils scheme, I don't think I am the suitable person for
> > the FSF binutils release manager.
> 
> You personally do not have to do the testing on each and ever platform.

I did mean I would test it personally. It is just simply a nightmare to
get it tested on all supported platforms at all.

> You are "just" the gatekeeper. (it is a big job, thus the "just")
> >From your maintenance of your Linux Binutils you can gauge the risk of
> changes.  This is the desired quality you bring to being the release
> manager.

I managed to make those risks under control because my release focuses on
Linux only and I tried not to make changes to binutils from as much as I
could. To have a realistic release,

1. W should have a list of primary supported targets. There must be enough
developers and users for such targets so that bugs can be reported and
fixed quickly. By "users", I mean the people who are willing to test
a new binutils thoroughly on their machines on a very frequent basis.
2. Except for the configure scripts, primary targets should be CPU/ABI,
not CPU/OS if all possible. That means we should make binutils generic
to CPU/ABI as much as we can get away with it.
3. All developers should configure their binutils with

# .../configure --enable-targets=all --enable-64-bit-bfd
and
# .../configure --enable-shared

They should always do

# make check

and make sure everything passes for their targets.

4. The release schedule should be dictated by primary targets.
5. We should keep none primary targets up to date. But we may or may not
make releases for none primary targets. It is totally left to discretion
of the release manager.



H.J.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Release 2.12
  2001-10-25  9:38     ` H . J . Lu
@ 2001-10-25  9:44       ` H . J . Lu
  0 siblings, 0 replies; 60+ messages in thread
From: H . J . Lu @ 2001-10-25  9:44 UTC (permalink / raw)
  To: David O'Brien; +Cc: Hans-Peter Nilsson, binutils

On Thu, Oct 25, 2001 at 09:37:56AM -0700, H . J . Lu wrote:
> > 
> > 
> > > Testing binutils for Linux is not easy. Testing it for all supported
> > > platforms is a nightmare. Unless we can come to a consensus based on
> > > my Linux binutils scheme, I don't think I am the suitable person for
> > > the FSF binutils release manager.
> > 
> > You personally do not have to do the testing on each and ever platform.
> 
> I did mean I would test it personally. It is just simply a nightmare to
^^^^^^^^^

Ooops. I didn't mean I would test it personally.

> get it tested on all supported platforms at all.


H.J.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Compiling kernel 2.4.17 fails at link stage
@ 2001-12-31 19:09 Krishnakumar B
  2002-01-04  3:50 ` Alan Modra
  0 siblings, 1 reply; 60+ messages in thread
From: Krishnakumar B @ 2001-12-31 19:09 UTC (permalink / raw)
  To: linux-ia64, binutils

Hi,

I am trying to compile kernel 2.4.17 (with davidm's patches
linux-2.4.17-ia64-011226) using gcc-3.0.3 and binutils 2.11.92.0.12.3
20011121. I get the following error at final kernel link stage:

gcc -E -D__ASSEMBLY__ -C -P -I/u/kitty/tools/linux-2.4.17/include -I/u/kitty/tools/linux-2.4.17/include/asm-ia64 \
-traditional arch/ia64/vmlinux.lds.S > arch/ia64/vmlinux.lds
ld -static -T arch/ia64/vmlinux.lds arch/ia64/kernel/head.o arch/ia64/kernel/init_task.o init/main.o init/version.o \
        --start-group \
        arch/ia64/kernel/kernel.o arch/ia64/mm/mm.o arch/ia64/ia32/ia32.o arch/ia64/dig/dig.a kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o \
         drivers/acpi/acpi.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/media/media.o drivers/char/drm-4.0/drm.o drivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/video/video.o \
        net/network.o \
        /u/kitty/tools/linux-2.4.17/arch/ia64/lib/lib.a /u/kitty/tools/linux-2.4.17/lib/lib.a /u/kitty/tools/linux-2.4.17/arch/ia64/lib/lib.a \
        --end-group \
        -o vmlinux
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x0): undefined reference to `local symbols in discarded section .text.exit'
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x8): undefined reference to `local symbols in discarded section .text.exit'
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x18): undefined reference to `local symbols in discarded section .text.exit'
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x20): undefined reference to `local symbols in discarded section .text.exit'
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x30): undefined reference to `local symbols in discarded section .text.exit'
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x38): more undefined references to `local symbols in discarded section .text.exit' follow
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x0): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x8): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x18): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x20): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x30): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x38): unsupported reloc
make: *** [vmlinux] Error 1

I don't see a newer version of binutils than the one I have. The patch for
discarded sections seems to be already in the ia64 kernel patches (I
checked the patch for alpha in the binutils release information and the
same seems to be in the corresponding ia64 file).

Here's more info. Any ideas to fix this is appreciated.

toutatis> uname -a
Linux toutatis 2.4.16 #1 SMP Thu Dec 6 21:57:22 CST 2001 ia64 unknown

toutatis> ld -V
GNU ld version 2.11.92.0.12.3 20011121
  Supported emulations:
   elf64_ia64

toutatis> gcc -v
Reading specs from /usr/local/lib/gcc-lib/ia64-redhat-linux/3.0.3/specs
Configured with: ../configure --host=ia64-redhat-linux --enable-threads
Thread model: posix
gcc version 3.0.3

-kitty.

-- 
Krishnakumar B <kitty at cs dot wustl dot edu>
Distributed Object Computing Laboratory, Washington University in St.Louis

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Compiling kernel 2.4.17 fails at link stage
  2001-12-31 19:09 Compiling kernel 2.4.17 fails at link stage Krishnakumar B
@ 2002-01-04  3:50 ` Alan Modra
  2002-01-04 12:39   ` [Linux-ia64] " Alan Modra
  0 siblings, 1 reply; 60+ messages in thread
From: Alan Modra @ 2002-01-04  3:50 UTC (permalink / raw)
  To: Krishnakumar B; +Cc: linux-ia64, binutils

On Mon, Dec 31, 2001 at 08:56:38PM -0600, Krishnakumar B wrote:
> 
> I am trying to compile kernel 2.4.17 (with davidm's patches
> linux-2.4.17-ia64-011226) using gcc-3.0.3 and binutils 2.11.92.0.12.3
> 20011121. I get the following error at final kernel link stage:
[snip]
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x0): undefined reference to `local symbols in discarded section .text.exit'

It's a kernel bug exposed by recent binutils.  You can either fix the
kernel by making the references weak, or hack around the problem by
adding -fnoinhibit-exec to the ld command line.

Alan

^ permalink raw reply	[flat|nested] 60+ messages in thread

* [Linux-ia64] Re: Compiling kernel 2.4.17 fails at link stage
  2002-01-04  3:50 ` Alan Modra
@ 2002-01-04 12:39   ` Alan Modra
  0 siblings, 0 replies; 60+ messages in thread
From: Alan Modra @ 2002-01-04 12:39 UTC (permalink / raw)
  To: Krishnakumar B; +Cc: linux-ia64, binutils

On Mon, Dec 31, 2001 at 08:56:38PM -0600, Krishnakumar B wrote:
> 
> I am trying to compile kernel 2.4.17 (with davidm's patches
> linux-2.4.17-ia64-011226) using gcc-3.0.3 and binutils 2.11.92.0.12.3
> 20011121. I get the following error at final kernel link stage:
[snip]
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x0): undefined reference to `local symbols in discarded section .text.exit'

It's a kernel bug exposed by recent binutils.  You can either fix the
kernel by making the references weak, or hack around the problem by
adding -fnoinhibit-exec to the ld command line.

Alan


_______________________________________________
Linux-IA64 mailing list
Linux-IA64@linuxia64.org
http://lists.linuxia64.org/lists/listinfo/linux-ia64

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [Linux-ia64] Compiling kernel 2.4.17 fails at link stage
       [not found]       ` <amodra@bigpond.net.au>
@ 2002-01-04 17:42         ` Grant Grundler
  2002-01-04 17:59           ` H . J . Lu
  2002-01-04 19:21           ` Alan Modra
  2003-11-29  2:33         ` ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1? David Edelsohn
                           ` (5 subsequent siblings)
  6 siblings, 2 replies; 60+ messages in thread
From: Grant Grundler @ 2002-01-04 17:42 UTC (permalink / raw)
  To: Krishnakumar B, linux-ia64, binutils

Alan Modra wrote:
> It's a kernel bug exposed by recent binutils.  You can either fix the
> kernel by making the references weak, or hack around the problem by
> adding -fnoinhibit-exec to the ld command line.

I had added "-fnoinhibit-exec" to LINKFLAGS in linux/arch/ia64/Makefile
and got:
	ld -f may not be used without -shared
	make: *** [vmlinux] Error 1

So how do I "make references weak"?

thanks,
grant

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [Linux-ia64] Compiling kernel 2.4.17 fails at link stage
  2002-01-04 17:42         ` [Linux-ia64] Compiling kernel 2.4.17 fails at link stage Grant Grundler
@ 2002-01-04 17:59           ` H . J . Lu
  2002-01-04 20:37             ` Grant Grundler
  2002-01-04 19:21           ` Alan Modra
  1 sibling, 1 reply; 60+ messages in thread
From: H . J . Lu @ 2002-01-04 17:59 UTC (permalink / raw)
  To: Grant Grundler; +Cc: Krishnakumar B, linux-ia64, binutils

On Fri, Jan 04, 2002 at 05:31:24PM -0800, Grant Grundler wrote:
> Alan Modra wrote:
> > It's a kernel bug exposed by recent binutils.  You can either fix the
> > kernel by making the references weak, or hack around the problem by
> > adding -fnoinhibit-exec to the ld command line.
> 
> I had added "-fnoinhibit-exec" to LINKFLAGS in linux/arch/ia64/Makefile

Use --noinhibit-exec.



H.J.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [Linux-ia64] Compiling kernel 2.4.17 fails at link stage
  2002-01-04 17:42         ` [Linux-ia64] Compiling kernel 2.4.17 fails at link stage Grant Grundler
  2002-01-04 17:59           ` H . J . Lu
@ 2002-01-04 19:21           ` Alan Modra
  1 sibling, 0 replies; 60+ messages in thread
From: Alan Modra @ 2002-01-04 19:21 UTC (permalink / raw)
  To: Grant Grundler; +Cc: Krishnakumar B, linux-ia64, binutils

On Fri, Jan 04, 2002 at 05:31:24PM -0800, Grant Grundler wrote:
> Alan Modra wrote:
> > It's a kernel bug exposed by recent binutils.  You can either fix the
> > kernel by making the references weak, or hack around the problem by
> > adding -fnoinhibit-exec to the ld command line.
> 
> I had added "-fnoinhibit-exec" to LINKFLAGS in linux/arch/ia64/Makefile
> and got:

Sorry, typo.  --noinhibit-exec

> So how do I "make references weak"?

extern int foo __attribute__ ((weak));

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [Linux-ia64] Compiling kernel 2.4.17 fails at link stage
  2002-01-04 17:59           ` H . J . Lu
@ 2002-01-04 20:37             ` Grant Grundler
  2002-01-04 22:39               ` H . J . Lu
  0 siblings, 1 reply; 60+ messages in thread
From: Grant Grundler @ 2002-01-04 20:37 UTC (permalink / raw)
  To: H . J . Lu; +Cc: linux-ia64, binutils

"H . J . Lu" wrote:
> Use --noinhibit-exec.

It didn't complain. But it didn't help either:

ld -static -T arch/ia64/vmlinux.lds --noinhibit-exec arch/ia64/kernel/head.o arch/ia64/kernel/init_task.o init/main.o init/version.o \
        --start-group \
        arch/ia64/kernel/kernel.o arch/ia64/mm/mm.o arch/ia64/ia32/ia32.o arch/ia64/dig/dig.a kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o \
         drivers/acpi/acpi.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/media/media.o drivers/char/agp/agp.o drivers/char/drm/drm.o drivers/net/fc/fc.o drivers/ide/idedriver.o drivers/scsi/scsidrv.o drivers/cdrom/driver.o drivers/sound/sounddrivers.o drivers/pci/driver.o drivers/video/video.o drivers/usb/usbdrv.o drivers/input/inputdrv.o \
        net/network.o \
        /usr/src/2.4.17/arch/ia64/lib/lib.a /usr/src/2.4.17/lib/lib.a /usr/src/2.4.17/arch/ia64/lib/lib.a \
        --end-group \
        -o vmlinux
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x0): undefined reference to `local symbols in discarded section .text.exit'
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x8): undefined reference to `local symbols in discarded section .text.exit'
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x18): undefined reference to `local symbols in discarded section .text.exit'
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x20): undefined reference to `local symbols in discarded section .text.exit'
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x30): undefined reference to `local symbols in discarded section .text.exit'
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x38): more undefined references to `local symbols in discarded section .text.exit' follow
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x0): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x8): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x18): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x20): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x30): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x38): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x48): unsupported reloc
arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x50): unsupported reloc
make: *** [vmlinux] Error 1
grundler <511>

More info appended.
BTW, binaries I'm using are Debian "woody".

thanks,
grant

hpntcv6:/home/grundler \<521\>ld -v
GNU ld version 2.11.92.0.12.3 20011121 Debian/GNU Linux

hpntcv6:/var/cache/apt/archives# dpkg -l binutils
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  binutils       2.11.92.0.12.3 The GNU assembler, linker and binary utiliti

hpntcv6:/var/cache/apt/archives# ls -l binutils_*
-rw-r--r--    1 root     root      1993810 Nov 25 17:27 binutils_2.11.92.0.10-4_ia64.deb
-rw-r--r--    1 root     root      2221132 Dec  6 11:35 binutils_2.11.92.0.12.3-2_ia64.deb
-rw-r--r--    1 root     root      2221386 Dec  9 16:06 binutils_2.11.92.0.12.3-3_ia64.deb
-rw-r--r--    1 root     root      2221136 Dec 27 00:54 binutils_2.11.92.0.12.3-4_ia64.deb

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [Linux-ia64] Compiling kernel 2.4.17 fails at link stage
  2002-01-04 20:37             ` Grant Grundler
@ 2002-01-04 22:39               ` H . J . Lu
  2002-01-07 12:52                 ` Grant Grundler
  0 siblings, 1 reply; 60+ messages in thread
From: H . J . Lu @ 2002-01-04 22:39 UTC (permalink / raw)
  To: Grant Grundler; +Cc: linux-ia64, binutils

On Fri, Jan 04, 2002 at 07:21:30PM -0800, Grant Grundler wrote:
> "H . J . Lu" wrote:
> > Use --noinhibit-exec.
> 
> It didn't complain. But it didn't help either:
> 
> ld -static -T arch/ia64/vmlinux.lds --noinhibit-exec arch/ia64/kernel/head.o arch/ia64/kernel/init_task.o init/main.o init/version.o \
>         --start-group \
>         arch/ia64/kernel/kernel.o arch/ia64/mm/mm.o arch/ia64/ia32/ia32.o arch/ia64/dig/dig.a kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o \
>          drivers/acpi/acpi.o drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/media/media.o drivers/char/agp/agp.o drivers/char/drm/drm.o drivers/net/fc/fc.o drivers/ide/idedriver.o drivers/scsi/scsidrv.o drivers/cdrom/driver.o drivers/sound/sounddrivers.o drivers/pci/driver.o drivers/video/video.o drivers/usb/usbdrv.o drivers/input/inputdrv.o \
>         net/network.o \
>         /usr/src/2.4.17/arch/ia64/lib/lib.a /usr/src/2.4.17/lib/lib.a /usr/src/2.4.17/arch/ia64/lib/lib.a \
>         --end-group \
>         -o vmlinux
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x0): undefined reference to `local symbols in discarded section .text.exit'
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x8): undefined reference to `local symbols in discarded section .text.exit'
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x18): undefined reference to `local symbols in discarded section .text.exit'
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x20): undefined reference to `local symbols in discarded section .text.exit'
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x30): undefined reference to `local symbols in discarded section .text.exit'
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x38): more undefined references to `local symbols in discarded section .text.exit' follow
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x0): unsupported reloc
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x8): unsupported reloc
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x18): unsupported reloc
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x20): unsupported reloc
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x30): unsupported reloc
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x38): unsupported reloc
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x48): unsupported reloc
> arch/ia64/kernel/kernel.o(.IA_64.unwind.text.exit+0x50): unsupported reloc
> make: *** [vmlinux] Error 1
> grundler <511>
> 

Did you get the output, vmlinux? If yes, does it work?


H.J.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [Linux-ia64] Compiling kernel 2.4.17 fails at link stage
  2002-01-04 22:39               ` H . J . Lu
@ 2002-01-07 12:52                 ` Grant Grundler
  0 siblings, 0 replies; 60+ messages in thread
From: Grant Grundler @ 2002-01-07 12:52 UTC (permalink / raw)
  To: H . J . Lu; +Cc: linux-ia64, binutils

"H . J . Lu" wrote:
> Did you get the output, vmlinux? If yes, does it work?

no vmlinux resulted.
Sorry - I hadn't check once I got the output and error.

thanks,
grant

Grant Grundler
+1.408.447.7253

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1?
       [not found] <087e01c3b5da$77d658e0$0202040a@catdog>
@ 2003-11-29  1:42 ` Alan Modra
  2003-11-29 18:14   ` Kris Warkentin
  0 siblings, 1 reply; 60+ messages in thread
From: Alan Modra @ 2003-11-29  1:42 UTC (permalink / raw)
  To: Kris Warkentin; +Cc: Gcc ML, binutils

On Fri, Nov 28, 2003 at 01:07:21PM -0500, Kris Warkentin wrote:
> In the course of building some powerpc startup code we found ld complaining
> about "allocated section `.rodata.str1.4' not in segment" and "allocated
> section `.eh_frame' not in segment".  I observed that some of the objects in
> the startup had .rodata.str1.4 sections in them.  I also observed that if I
> took the ld from binutils 2.12.1 to 2.14, the problem went away.

This is very likely a bug in gcc.  I reckon that if you look at your
object file with readelf or objdump, you'll find that this .rodata
section is marked read/write.

The fix is easy.

--- gcc-ppc64-33.orig/gcc/config/rs6000/rs6000.c	2003-09-27 10:07:41.000000000 +0930
+++ gcc-ppc64-33/gcc/config/rs6000/rs6000.c	2003-11-29 12:04:22.000000000 +1030
@@ -13138,14 +13659,8 @@ rs6000_elf_section_type_flags (decl, nam
      const char *name;
      int reloc;
 {
-  unsigned int flags
-    = default_section_type_flags_1 (decl, name, reloc,
-				    flag_pic || DEFAULT_ABI == ABI_AIX);
-
-  if (TARGET_RELOCATABLE)
-    flags |= SECTION_WRITE;
-
-  return flags;
+  return default_section_type_flags_1 (decl, name, reloc,
+				       flag_pic || DEFAULT_ABI == ABI_AIX);
 }
 
 /* Record an element in the table of global constructors.  SYMBOL is


> I didn't find any talk of a hard binutils requirement for the 3.3 series of
> gcc but perhaps I missed it.  Can anyone shed some light on this?  I hope
> I'm not too astonishing in my ignorance but this .rodata.str1.x doesn't seem
> to be generated by our older gcc and I don't really know what the
> significance of it all is.

Sections like .rodata.str1.4 are generated by gcc to support merging of
duplicate constants and strings by ld.  Older gcc's won't do this, nor
will a newer gcc built for a system without the requisite ld support.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1?
       [not found]       ` <amodra@bigpond.net.au>
  2002-01-04 17:42         ` [Linux-ia64] Compiling kernel 2.4.17 fails at link stage Grant Grundler
@ 2003-11-29  2:33         ` David Edelsohn
  2003-11-29  3:05           ` Alan Modra
  2003-11-29  4:06         ` David Edelsohn
                           ` (4 subsequent siblings)
  6 siblings, 1 reply; 60+ messages in thread
From: David Edelsohn @ 2003-11-29  2:33 UTC (permalink / raw)
  To: Kris Warkentin, Gcc ML, binutils

>>>>> Alan Modra writes:

Alan> This is very likely a bug in gcc.  I reckon that if you look at your
Alan> object file with readelf or objdump, you'll find that this .rodata
Alan> section is marked read/write.

Alan> The fix is easy.

Alan> --- gcc-ppc64-33.orig/gcc/config/rs6000/rs6000.c	2003-09-27 10:07:41.000000000 +0930
Alan> +++ gcc-ppc64-33/gcc/config/rs6000/rs6000.c	2003-11-29 12:04:22.000000000 +1030
Alan> @@ -13138,14 +13659,8 @@ rs6000_elf_section_type_flags (decl, nam
Alan> const char *name;
Alan> int reloc;
Alan> {
Alan> -  unsigned int flags
Alan> -    = default_section_type_flags_1 (decl, name, reloc,
Alan> -				    flag_pic || DEFAULT_ABI == ABI_AIX);
Alan> -
Alan> -  if (TARGET_RELOCATABLE)
Alan> -    flags |= SECTION_WRITE;
Alan> -
Alan> -  return flags;
Alan> +  return default_section_type_flags_1 (decl, name, reloc,
Alan> +				       flag_pic || DEFAULT_ABI == ABI_AIX);
Alan> }
 
Alan> /* Record an element in the table of global constructors.  SYMBOL is

	I am not sure that we can make this change unilaterally.  The
addition of the SECTION_WRITE flag may be necessary for embedded targets.
We need to understand the reason for the feature before removing it.

David

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1?
  2003-11-29  2:33         ` ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1? David Edelsohn
@ 2003-11-29  3:05           ` Alan Modra
  0 siblings, 0 replies; 60+ messages in thread
From: Alan Modra @ 2003-11-29  3:05 UTC (permalink / raw)
  To: David Edelsohn; +Cc: Kris Warkentin, Gcc ML, binutils

On Fri, Nov 28, 2003 at 09:32:25PM -0500, David Edelsohn wrote:
> 	I am not sure that we can make this change unilaterally.  The
> addition of the SECTION_WRITE flag may be necessary for embedded targets.
> We need to understand the reason for the feature before removing it.

See the thread starting with
http://gcc.gnu.org/ml/gcc-patches/2003-10/msg01516.html

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1?
       [not found]       ` <amodra@bigpond.net.au>
  2002-01-04 17:42         ` [Linux-ia64] Compiling kernel 2.4.17 fails at link stage Grant Grundler
  2003-11-29  2:33         ` ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1? David Edelsohn
@ 2003-11-29  4:06         ` David Edelsohn
  2003-11-29  4:10           ` Andrew Pinski
  2003-11-29 19:40         ` David Edelsohn
                           ` (3 subsequent siblings)
  6 siblings, 1 reply; 60+ messages in thread
From: David Edelsohn @ 2003-11-29  4:06 UTC (permalink / raw)
  To: Kris Warkentin, Gcc ML, binutils

>>>>> Alan Modra writes:

Alan> See the thread starting with
Alan> http://gcc.gnu.org/ml/gcc-patches/2003-10/msg01516.html

	Okay, how about the following patch.

David

Index: eabi.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/eabi.h,v
retrieving revision 1.11
diff -c -p -r1.11 eabi.h
*** eabi.h	10 Jun 2003 16:01:39 -0000	1.11
--- eabi.h	29 Nov 2003 04:03:02 -0000
***************
*** 55,57 ****
--- 55,60 ----
  #define TARGET_E500 (rs6000_cpu == PROCESSOR_PPC8540)
  #define TARGET_ISEL rs6000_isel
  #define TARGET_FPRS (!rs6000_float_gprs)
+ 
+ /* Generate entries in .fixup for relocatable addresses.  */
+ #define RELOCATABLE_NEEDS_FIXUP
Index: rs6000.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.c,v
retrieving revision 1.550
diff -c -p -r1.550 rs6000.c
*** rs6000.c	14 Nov 2003 20:05:34 -0000	1.550
--- rs6000.c	29 Nov 2003 04:03:02 -0000
*************** toc_section (void)
*** 14991,15002 ****
  static unsigned int
  rs6000_elf_section_type_flags (tree decl, const char *name, int reloc)
  {
!   unsigned int flags
!     = default_section_type_flags_1 (decl, name, reloc,
! 				    flag_pic || DEFAULT_ABI == ABI_AIX);
! 
    if (TARGET_RELOCATABLE)
!     flags |= SECTION_WRITE;
  
    return flags;
  }
--- 14991,15006 ----
  static unsigned int
  rs6000_elf_section_type_flags (tree decl, const char *name, int reloc)
  {
!   int rw_relocs = flag_pic || DEFAULT_ABI == ABI_AIX;
!   unsigned int flags;
!   
! #ifdef RELOCATABLE_NEEDS_FIXUP
    if (TARGET_RELOCATABLE)
!     rw_relocs = 1;
! #endif
! 
!   flags = default_section_type_flags_1 (decl, name, reloc,
! 					flag_pic || DEFAULT_ABI == ABI_AIX);
  
    return flags;
  }
Index: sysv4.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/sysv4.h,v
retrieving revision 1.142
diff -c -p -r1.142 sysv4.h
*** sysv4.h	18 Nov 2003 12:56:44 -0000	1.142
--- sysv4.h	29 Nov 2003 04:03:02 -0000
*************** ncrtn.o%s"
*** 1346,1351 ****
  #define TARGET_ASM_EXCEPTION_SECTION readonly_data_section
  
  #define DOUBLE_INT_ASM_OP "\t.quad\t"
- 
- /* Generate entries in .fixup for relocatable addresses.  */
- #define RELOCATABLE_NEEDS_FIXUP
--- 1346,1348 ----

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1?
  2003-11-29  4:06         ` David Edelsohn
@ 2003-11-29  4:10           ` Andrew Pinski
  2003-11-29  4:20             ` David Edelsohn
  0 siblings, 1 reply; 60+ messages in thread
From: Andrew Pinski @ 2003-11-29  4:10 UTC (permalink / raw)
  To: David Edelsohn; +Cc: binutils, Gcc ML, Andrew Pinski, Kris Warkentin


On Nov 28, 2003, at 20:06, David Edelsohn wrote:

> ! 					flag_pic || DEFAULT_ABI == ABI_AIX);


except this should be rw_relocs instead.

Thanks,
Andrew Pinski

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1?
  2003-11-29  4:10           ` Andrew Pinski
@ 2003-11-29  4:20             ` David Edelsohn
  2003-11-29  6:47               ` Alan Modra
  0 siblings, 1 reply; 60+ messages in thread
From: David Edelsohn @ 2003-11-29  4:20 UTC (permalink / raw)
  To: Andrew Pinski; +Cc: binutils, Gcc ML, Kris Warkentin

	Corrected patch.

Index: eabi.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/eabi.h,v
retrieving revision 1.11
diff -c -p -r1.11 eabi.h
*** eabi.h	10 Jun 2003 16:01:39 -0000	1.11
--- eabi.h	29 Nov 2003 04:19:16 -0000
***************
*** 55,57 ****
--- 55,60 ----
  #define TARGET_E500 (rs6000_cpu == PROCESSOR_PPC8540)
  #define TARGET_ISEL rs6000_isel
  #define TARGET_FPRS (!rs6000_float_gprs)
+ 
+ /* Generate entries in .fixup for relocatable addresses.  */
+ #define RELOCATABLE_NEEDS_FIXUP
Index: rs6000.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.c,v
retrieving revision 1.550
diff -c -p -r1.550 rs6000.c
*** rs6000.c	14 Nov 2003 20:05:34 -0000	1.550
--- rs6000.c	29 Nov 2003 04:19:17 -0000
*************** toc_section (void)
*** 14991,15002 ****
  static unsigned int
  rs6000_elf_section_type_flags (tree decl, const char *name, int reloc)
  {
!   unsigned int flags
!     = default_section_type_flags_1 (decl, name, reloc,
! 				    flag_pic || DEFAULT_ABI == ABI_AIX);
! 
    if (TARGET_RELOCATABLE)
!     flags |= SECTION_WRITE;
  
    return flags;
  }
--- 14991,15005 ----
  static unsigned int
  rs6000_elf_section_type_flags (tree decl, const char *name, int reloc)
  {
!   int rw_relocs = flag_pic || DEFAULT_ABI == ABI_AIX;
!   unsigned int flags;
!   
! #ifdef RELOCATABLE_NEEDS_FIXUP
    if (TARGET_RELOCATABLE)
!     rw_relocs = 1;
! #endif
! 
!   flags = default_section_type_flags_1 (decl, name, reloc, rw_relocs);
  
    return flags;
  }
Index: sysv4.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/sysv4.h,v
retrieving revision 1.142
diff -c -p -r1.142 sysv4.h
*** sysv4.h	18 Nov 2003 12:56:44 -0000	1.142
--- sysv4.h	29 Nov 2003 04:19:17 -0000
*************** ncrtn.o%s"
*** 1346,1351 ****
  #define TARGET_ASM_EXCEPTION_SECTION readonly_data_section
  
  #define DOUBLE_INT_ASM_OP "\t.quad\t"
- 
- /* Generate entries in .fixup for relocatable addresses.  */
- #define RELOCATABLE_NEEDS_FIXUP
--- 1346,1348 ----

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1?
  2003-11-29  4:20             ` David Edelsohn
@ 2003-11-29  6:47               ` Alan Modra
  0 siblings, 0 replies; 60+ messages in thread
From: Alan Modra @ 2003-11-29  6:47 UTC (permalink / raw)
  To: David Edelsohn; +Cc: Andrew Pinski, binutils, Gcc ML, Kris Warkentin

On Fri, Nov 28, 2003 at 11:20:03PM -0500, David Edelsohn wrote:
> 	Corrected patch.

Geoff analyzed the problem enough to see that TARGET_RELOCATABLE
implies flag_pic == 2, so there's no need for any special hacks.

See http://gcc.gnu.org/ml/gcc-patches/2003-10/msg01575.html

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1?
  2003-11-29  1:42 ` ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1? Alan Modra
@ 2003-11-29 18:14   ` Kris Warkentin
  0 siblings, 0 replies; 60+ messages in thread
From: Kris Warkentin @ 2003-11-29 18:14 UTC (permalink / raw)
  To: Alan Modra; +Cc: Gcc ML, binutils

Interesting.  So it might be an issue with gcc but it looks like the linker
can deal with it.  On our end, it actually turned out that the process that
was spawning ld (our bootable image generator) was using a special link
script that wasn't taking into account the presence of these sections.  When
we put them into the link script, the warnings went away and the image could
boot.  Thanks very much for the help.  I'll try out your patch and see if it
cleans up our objects for us.

cheers,

Kris

----- Original Message ----- 
From: "Alan Modra" <amodra@bigpond.net.au>
To: "Kris Warkentin" <kewarken@qnx.com>
Cc: "Gcc ML" <gcc@gcc.gnu.org>; <binutils@sources.redhat.com>
Sent: Friday, November 28, 2003 8:42 PM
Subject: Re: ppc problem with .rodata.str1.4. binutils requirement for gcc
3.3.1?


> On Fri, Nov 28, 2003 at 01:07:21PM -0500, Kris Warkentin wrote:
> > In the course of building some powerpc startup code we found ld
complaining
> > about "allocated section `.rodata.str1.4' not in segment" and "allocated
> > section `.eh_frame' not in segment".  I observed that some of the
objects in
> > the startup had .rodata.str1.4 sections in them.  I also observed that
if I
> > took the ld from binutils 2.12.1 to 2.14, the problem went away.
>
> This is very likely a bug in gcc.  I reckon that if you look at your
> object file with readelf or objdump, you'll find that this .rodata
> section is marked read/write.
>
> The fix is easy.
>
> --- gcc-ppc64-33.orig/gcc/config/rs6000/rs6000.c 2003-09-27
10:07:41.000000000 +0930
> +++ gcc-ppc64-33/gcc/config/rs6000/rs6000.c 2003-11-29 12:04:22.000000000
+1030
> @@ -13138,14 +13659,8 @@ rs6000_elf_section_type_flags (decl, nam
>       const char *name;
>       int reloc;
>  {
> -  unsigned int flags
> -    = default_section_type_flags_1 (decl, name, reloc,
> -     flag_pic || DEFAULT_ABI == ABI_AIX);
> -
> -  if (TARGET_RELOCATABLE)
> -    flags |= SECTION_WRITE;
> -
> -  return flags;
> +  return default_section_type_flags_1 (decl, name, reloc,
> +        flag_pic || DEFAULT_ABI == ABI_AIX);
>  }
>
>  /* Record an element in the table of global constructors.  SYMBOL is
>
>
> > I didn't find any talk of a hard binutils requirement for the 3.3 series
of
> > gcc but perhaps I missed it.  Can anyone shed some light on this?  I
hope
> > I'm not too astonishing in my ignorance but this .rodata.str1.x doesn't
seem
> > to be generated by our older gcc and I don't really know what the
> > significance of it all is.
>
> Sections like .rodata.str1.4 are generated by gcc to support merging of
> duplicate constants and strings by ld.  Older gcc's won't do this, nor
> will a newer gcc built for a system without the requisite ld support.
>
> -- 
> Alan Modra
> IBM OzLabs - Linux Technology Centre
>


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1?
       [not found]       ` <amodra@bigpond.net.au>
                           ` (2 preceding siblings ...)
  2003-11-29  4:06         ` David Edelsohn
@ 2003-11-29 19:40         ` David Edelsohn
  2004-05-19 15:19         ` Powerpc Linux build fails David Edelsohn
                           ` (2 subsequent siblings)
  6 siblings, 0 replies; 60+ messages in thread
From: David Edelsohn @ 2003-11-29 19:40 UTC (permalink / raw)
  To: Andrew Pinski, binutils, Gcc ML, Kris Warkentin

>>>>> Alan Modra writes:

Alan> Geoff analyzed the problem enough to see that TARGET_RELOCATABLE
Alan> implies flag_pic == 2, so there's no need for any special hacks.

Alan> See http://gcc.gnu.org/ml/gcc-patches/2003-10/msg01575.html

	Okay, go ahead and apply you patch to
rs6000_elf_section_type_flags().

	We may still want to move RELOCATABLE_NEEDS_FIXUP from sysv4.h to
eabi.h. 

David

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Powerpc Linux build fails
       [not found] <3A3FC75F7C72D711A7DC009027AC9C4B1788D9@jupiter>
@ 2004-05-19  3:30 ` Alan Modra
  2004-05-19  4:27   ` Geoff Keating
  0 siblings, 1 reply; 60+ messages in thread
From: Alan Modra @ 2004-05-19  3:30 UTC (permalink / raw)
  To: Keith Pickens, Geoff Keating, David Edelsohn; +Cc: binutils, bug-binutils

On Tue, May 18, 2004 at 11:06:00AM -0500, Keith Pickens wrote:
> 
> Sorry, I wasn't saying the change was wrong but rather that it
> has a side effect that broke builds that have worked for a
> long time.
[snip]

You're correct.  You're also using the correct -mcpu option to enable
AltiVec.  The trouble is that gcc doesn't pass -maltivec or -m7400 on to
gas, but instead just passes -mppc.  See gcc/config/rs6000/rs6000.h
ASM_CPU_SPEC.  Fixing gcc to pass the right options is probably the
right thing to do, but in the meantime we have released versions of
gcc that should work with newer binutils.  I'm inclined to make gas
behave as if -many was given, ie. accept any recognizable powerpc
instruction.

Geoff, what do you think?

opcodes/ChangeLog
	* ppc-opc.c (insert_fxm): Enable two operand mfcr when -many as
	well as when -mpower4.
gas/ChangeLog
	* config/tc-ppc.c (parse_cpu): Set PPC_OPCODE_ANY on all valid
	options besides a new -mstrict option.
	(md_show_usage): Update.  Correct capitalization.
	(ppc_arch): Expand comment.
	* doc/c-ppc.texi (PowerPC-Opts): Update.

Index: opcodes/ppc-opc.c
===================================================================
RCS file: /cvs/src/src/opcodes/ppc-opc.c,v
retrieving revision 1.70
diff -u -p -r1.70 ppc-opc.c
--- opcodes/ppc-opc.c	5 May 2004 13:43:36 -0000	1.70
+++ opcodes/ppc-opc.c	19 May 2004 03:21:05 -0000
@@ -1004,8 +1004,13 @@ insert_fxm (unsigned long insn,
 
   /* If only one bit of the FXM field is set, we can use the new form
      of the instruction, which is faster.  Unlike the Power4 branch hint
-     encoding, this is not backward compatible.  */
-  else if ((dialect & PPC_OPCODE_POWER4) != 0 && (value & -value) == value)
+     encoding, this is not backward compatible.  Do not generate the
+     new form unless -mpower4 has been given, or -many and the two
+     operand form of mfcr was used.  */
+  else if ((value & -value) == value
+	   && ((dialect & PPC_OPCODE_POWER4) != 0
+	       || ((dialect & PPC_OPCODE_ANY) != 0
+		   && (insn & (0x3ff << 1)) == 19 << 1)))
     insn |= 1 << 20;
 
   /* Any other value on mfcr is an error.  */
Index: gas/config/tc-ppc.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-ppc.c,v
retrieving revision 1.88
diff -u -p -r1.88 tc-ppc.c
--- gas/config/tc-ppc.c	6 May 2004 11:01:48 -0000	1.88
+++ gas/config/tc-ppc.c	19 May 2004 03:20:55 -0000
@@ -913,10 +913,18 @@ parse_cpu (const char *arg)
     ppc_cpu = PPC_OPCODE_COMMON | PPC_OPCODE_32;
   /* -many means to assemble for any architecture (PWR/PWRX/PPC).  */
   else if (strcmp (arg, "any") == 0)
-    ppc_cpu |= PPC_OPCODE_ANY;
+    ;
+  /* -mstrict is the inverse of -many.  All other cpu options set
+     PPC_OPCODE_ANY, so this should be specified last.  */
+  else if (strcmp (arg, "strict") == 0)
+    {
+      ppc_cpu &= ~PPC_OPCODE_ANY;
+      return 1;
+    }
   else
     return 0;
 
+  ppc_cpu |= PPC_OPCODE_ANY;
   return 1;
 }
 
@@ -1100,14 +1108,15 @@ PowerPC options:\n\
 -mbooke64		generate code for 64-bit PowerPC BookE\n\
 -mbooke, mbooke32	generate code for 32-bit PowerPC BookE\n\
 -mpower4		generate code for Power4 architecture\n\
--mcom			generate code Power/PowerPC common instructions\n\
--many			generate code for any architecture (PWR/PWRX/PPC)\n"));
+-mcom			generate code Power/PowerPC common instructions\n"));
   fprintf (stream, _("\
 -maltivec		generate code for AltiVec\n\
 -me500, -me500x2	generate code for Motorola e500 core complex\n\
 -mspe			generate code for Motorola SPE instructions\n\
--mregnames		Allow symbolic names for registers\n\
--mno-regnames		Do not allow symbolic names for registers\n"));
+-many			accept instructions for other cpus\n\
+-mstrict		do not accept instructions for other cpus\n\
+-mregnames		allow symbolic names for registers\n\
+-mno-regnames		do not allow symbolic names for registers\n"));
 #ifdef OBJ_ELF
   fprintf (stream, _("\
 -mrelocatable		support for GCC's -mrelocatble option\n\
@@ -1156,7 +1165,8 @@ ppc_set_cpu ()
     }
 }
 
-/* Figure out the BFD architecture to use.  */
+/* Figure out the BFD architecture to use.  This function and ppc_mach
+   are called well before md_begin, when the output file is opened.  */
 
 enum bfd_architecture
 ppc_arch ()
Index: gas/doc/c-ppc.texi
===================================================================
RCS file: /cvs/src/src/gas/doc/c-ppc.texi,v
retrieving revision 1.4
diff -u -p -r1.4 c-ppc.texi
--- gas/doc/c-ppc.texi	22 Nov 2003 06:14:48 -0000	1.4
+++ gas/doc/c-ppc.texi	19 May 2004 03:20:56 -0000
@@ -77,7 +77,12 @@ Generate code for Power4 architecture.
 Generate code Power/PowerPC common instructions.
 
 @item -many
-Generate code for any architecture (PWR/PWRX/PPC).
+Accept instructions for cpus other than the current -m option in
+force.  This is the default.
+
+@item -mstrict
+Do no accept instructions for cpus other than the current -m option in
+force.  This must be specified after other code generation options.
 
 @item -mregnames
 Allow symbolic names for registers.

> > -----Original Message-----
> > From: Ian Lance Taylor
> > Sent: Monday, May 17, 2004 12:04 PM
> > To: Keith Pickens
> > Cc: 'bug-binutils@gnu.org'
> > Subject: Re: Powerpc Linux build fails
> > 
> > 
> > Keith Pickens <ksp@securelogix.com> writes:
> > 
> > > A recent change to opcodes/ppc-opc.c breaks powerpc kernel builds:
> > > 
> > > 2004-05-05  Alan Modra  <amodra@bigpond.net.au>
> > > 
> > >         PR 146.

Oops, actually PR 147.

> > >         * ppc-opc.c (PPCVEC): Remove PPC_OPCODE_PPC.
> > > 
> > > This change appears to remove the default AltiVec support 
> > which is required
> > > for ppc
> > > kernel builds.
> > 
> > How is your compiler configured?
> > 
> > Altivec instructions shouldn't be supported by default, since they are
> > not supported on all PowerPC chips.  You can use -maltivec to turn on
> > Altivec support, or you can use a toolchain for which the default CPU
> > includes Altivec support.  There may be a bug, of course, but Alan's
> > specific change appears clearly correct.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Powerpc Linux build fails
  2004-05-19  3:30 ` Powerpc Linux build fails Alan Modra
@ 2004-05-19  4:27   ` Geoff Keating
  2004-05-19  5:10     ` Alan Modra
  0 siblings, 1 reply; 60+ messages in thread
From: Geoff Keating @ 2004-05-19  4:27 UTC (permalink / raw)
  To: amodra; +Cc: ksp, dje, binutils, bug-binutils

> Date: Wed, 19 May 2004 13:00:08 +0930
> From: Alan Modra <amodra@bigpond.net.au>

> On Tue, May 18, 2004 at 11:06:00AM -0500, Keith Pickens wrote:
> > 
> > Sorry, I wasn't saying the change was wrong but rather that it
> > has a side effect that broke builds that have worked for a
> > long time.
> [snip]
> 
> You're correct.  You're also using the correct -mcpu option to enable
> AltiVec.  The trouble is that gcc doesn't pass -maltivec or -m7400 on to
> gas, but instead just passes -mppc.  See gcc/config/rs6000/rs6000.h
> ASM_CPU_SPEC.  Fixing gcc to pass the right options is probably the
> right thing to do, but in the meantime we have released versions of
> gcc that should work with newer binutils.  I'm inclined to make gas
> behave as if -many was given, ie. accept any recognizable powerpc
> instruction.
> 
> Geoff, what do you think?

Certainly, -many should really accept every instruction, failure to do
that is just a bug.

I am not sure about this new -mstrict.  I am sure someone is expecting
-mpower3 to really mean 'power3 only' and will get a nasty surprise
when they use a power4 instruction by mistake and their program
crashes.

It is perfectly acceptable to say "GAS version X will only work with
GCC version > Y".  People using old GCC can always use old binutils
with it.  (They can also hack their specs file to pass -many, if
that's what they really want.)

The fully-correct way to do this is to have GCC generate a directive
after option parsing, like '.machine 7400' or so, and have GAS
interpret it, otherwise you end up in specs hell.  (Doesn't ppc gas
already have a directive like that?  I seem to remember seeing such a
patch fly by...)

> opcodes/ChangeLog
> 	* ppc-opc.c (insert_fxm): Enable two operand mfcr when -many as
> 	well as when -mpower4.
> gas/ChangeLog
> 	* config/tc-ppc.c (parse_cpu): Set PPC_OPCODE_ANY on all valid
> 	options besides a new -mstrict option.
> 	(md_show_usage): Update.  Correct capitalization.
> 	(ppc_arch): Expand comment.
> 	* doc/c-ppc.texi (PowerPC-Opts): Update.

-- 
- Geoffrey Keating <geoffk@geoffk.org>

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Powerpc Linux build fails
  2004-05-19  4:27   ` Geoff Keating
@ 2004-05-19  5:10     ` Alan Modra
  2004-05-19 16:24       ` Kumar Gala
  0 siblings, 1 reply; 60+ messages in thread
From: Alan Modra @ 2004-05-19  5:10 UTC (permalink / raw)
  To: Geoff Keating; +Cc: ksp, dje, binutils, bug-binutils

On Tue, May 18, 2004 at 09:27:34PM -0700, Geoff Keating wrote:
> I am not sure about this new -mstrict.  I am sure someone is expecting
> -mpower3 to really mean 'power3 only' and will get a nasty surprise
> when they use a power4 instruction by mistake and their program
> crashes.

Probably true.  However, the feedback I'm getting at the moment is that
it's a nasty surprise that the Linux kernel doesn't compile..  The same
goes for current powerpc64 glibc with VMX extensions.

> It is perfectly acceptable to say "GAS version X will only work with
> GCC version > Y".  People using old GCC can always use old binutils
> with it.  (They can also hack their specs file to pass -many, if
> that's what they really want.)
> 
> The fully-correct way to do this is to have GCC generate a directive
> after option parsing, like '.machine 7400' or so, and have GAS
> interpret it, otherwise you end up in specs hell.  (Doesn't ppc gas
> already have a directive like that?  I seem to remember seeing such a
> patch fly by...)

Yes, .machine was implemented 2003-11-22.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Powerpc Linux build fails
       [not found]       ` <amodra@bigpond.net.au>
                           ` (3 preceding siblings ...)
  2003-11-29 19:40         ` David Edelsohn
@ 2004-05-19 15:19         ` David Edelsohn
  2004-05-20  0:39           ` Alan Modra
  2004-05-20  2:29         ` David Edelsohn
  2006-08-04  1:49         ` Link problems with section anchors David Edelsohn
  6 siblings, 1 reply; 60+ messages in thread
From: David Edelsohn @ 2004-05-19 15:19 UTC (permalink / raw)
  To: Geoff Keating, ksp, binutils, bug-binutils

>>>>> Alan Modra writes:

Alan> Probably true.  However, the feedback I'm getting at the moment is that
Alan> it's a nasty surprise that the Linux kernel doesn't compile..  The same
Alan> goes for current powerpc64 glibc with VMX extensions.

	Alan, I thought that the intention was for GCC to invoke the
assembler with -many until we could utilize .machine to generate the
correct directives.  Are you proposing that -many will be the assembler
default?

David

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Powerpc Linux build fails
  2004-05-19  5:10     ` Alan Modra
@ 2004-05-19 16:24       ` Kumar Gala
  2004-05-20  0:44         ` Alan Modra
  0 siblings, 1 reply; 60+ messages in thread
From: Kumar Gala @ 2004-05-19 16:24 UTC (permalink / raw)
  To: Alan Modra; +Cc: dje, binutils, bug-binutils, ksp, Geoff Keating

Is .machine support in binutils-2.15?

- kumar

On May 19, 2004, at 12:10 AM, Alan Modra wrote:

> On Tue, May 18, 2004 at 09:27:34PM -0700, Geoff Keating wrote:
>> I am not sure about this new -mstrict.  I am sure someone is expecting
>> -mpower3 to really mean 'power3 only' and will get a nasty surprise
>> when they use a power4 instruction by mistake and their program
>> crashes.
>
> Probably true.  However, the feedback I'm getting at the moment is that
> it's a nasty surprise that the Linux kernel doesn't compile..  The same
> goes for current powerpc64 glibc with VMX extensions.
>
>> It is perfectly acceptable to say "GAS version X will only work with
>> GCC version > Y".  People using old GCC can always use old binutils
>> with it.  (They can also hack their specs file to pass -many, if
>> that's what they really want.)
>>
>> The fully-correct way to do this is to have GCC generate a directive
>> after option parsing, like '.machine 7400' or so, and have GAS
>> interpret it, otherwise you end up in specs hell.  (Doesn't ppc gas
>> already have a directive like that?  I seem to remember seeing such a
>> patch fly by...)
>
> Yes, .machine was implemented 2003-11-22.
>
> -- 
> Alan Modra
> IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Powerpc Linux build fails
  2004-05-19 15:19         ` Powerpc Linux build fails David Edelsohn
@ 2004-05-20  0:39           ` Alan Modra
  2004-05-20  1:24             ` Alan Modra
  0 siblings, 1 reply; 60+ messages in thread
From: Alan Modra @ 2004-05-20  0:39 UTC (permalink / raw)
  To: David Edelsohn; +Cc: Geoff Keating, ksp, binutils, bug-binutils

On Wed, May 19, 2004 at 11:19:11AM -0400, David Edelsohn wrote:
> >>>>> Alan Modra writes:
> 
> Alan> Probably true.  However, the feedback I'm getting at the moment is that
> Alan> it's a nasty surprise that the Linux kernel doesn't compile..  The same
> Alan> goes for current powerpc64 glibc with VMX extensions.
> 
> 	Alan, I thought that the intention was for GCC to invoke the
> assembler with -many until we could utilize .machine to generate the
> correct directives.  Are you proposing that -many will be the assembler
> default?

Yes.  The alternatives are to revert my ppc-opc.c patch, or to ask users
to edit their gcc specs file.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Powerpc Linux build fails
  2004-05-19 16:24       ` Kumar Gala
@ 2004-05-20  0:44         ` Alan Modra
  0 siblings, 0 replies; 60+ messages in thread
From: Alan Modra @ 2004-05-20  0:44 UTC (permalink / raw)
  To: Kumar Gala; +Cc: binutils

On Wed, May 19, 2004 at 11:23:16AM -0500, Kumar Gala wrote:
> Is .machine support in binutils-2.15?

Yes.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Powerpc Linux build fails
  2004-05-20  0:39           ` Alan Modra
@ 2004-05-20  1:24             ` Alan Modra
  2004-05-20  1:46               ` Alan Modra
  0 siblings, 1 reply; 60+ messages in thread
From: Alan Modra @ 2004-05-20  1:24 UTC (permalink / raw)
  To: David Edelsohn, Geoff Keating, ksp, binutils
  Cc: Steve Munroe, Janis Johnson, Marcus Meissner

On Thu, May 20, 2004 at 10:09:02AM +0930, Alan Modra wrote:
> On Wed, May 19, 2004 at 11:19:11AM -0400, David Edelsohn wrote:
> > 	Alan, I thought that the intention was for GCC to invoke the
> > assembler with -many until we could utilize .machine to generate the
> > correct directives.  Are you proposing that -many will be the assembler
> > default?
> 
> Yes.  The alternatives are to revert my ppc-opc.c patch, or to ask users
> to edit their gcc specs file.

Hmm, I see that Daniel applied the ppc-opc.c to binutils-2.15.  I
thought we just had a problem on mainline binutils (and HJ's linux
releases).  I guess that means specs editing for people who upgrade
binutils.

The following patch will correct hammer-3.3, gcc-3.4, and current
mainline specs files.

--- /usr/local/lib/gcc-lib/powerpc64-linux/3.3.3-hammer/specs	2004-02-16 17:22:03.000000000 +1030
+++ specs	2004-05-20 10:39:02.868144582 +0930
@@ -108,7 +108,7 @@
 
 
 *asm_cpu:
-%{!mcpu*:   %{mpower: %{!mpower2: -mpwr}}   %{mpower2: -mpwrx}   %{mpowerpc*: -mppc}   %{mno-power: %{!mpowerpc*: -mcom}}   %{!mno-power: %{!mpower2: %(asm_default)}}} %{mcpu=common: -mcom} %{mcpu=power: -mpwr} %{mcpu=power2: -mpwrx} %{mcpu=power3: -m604} %{mcpu=power4: -mpower4} %{mcpu=powerpc: -mppc} %{mcpu=rios: -mpwr} %{mcpu=rios1: -mpwr} %{mcpu=rios2: -mpwrx} %{mcpu=rsc: -mpwr} %{mcpu=rsc1: -mpwr} %{mcpu=401: -mppc} %{mcpu=403: -m403} %{mcpu=405: -m405} %{mcpu=405fp: -m405} %{mcpu=440: -m440} %{mcpu=440fp: -m440} %{mcpu=505: -mppc} %{mcpu=601: -m601} %{mcpu=602: -mppc} %{mcpu=603: -mppc} %{mcpu=603e: -mppc} %{mcpu=ec603e: -mppc} %{mcpu=604: -mppc} %{mcpu=604e: -mppc} %{mcpu=620: -mppc} %{mcpu=630: -m604} %{mcpu=740: -mppc} %{mcpu=7400: -mppc} %{mcpu=7450: -mppc} %{mcpu=G4: -mppc} %{mcpu=750: -mppc} %{mcpu=G3: -mppc} %{mcpu=801: -mppc} %{mcpu=821: -mppc} %{mcpu=823: -mppc} %{mcpu=860: -mppc} %{mcpu=970: -mpower4} %{mcpu=G5: -mpower4} %{mcpu=8540: -me500} %{maltivec: -maltivec}
+%{!mcpu*:   %{mpower: %{!mpower2: -mpwr}}   %{mpower2: -mpwrx}   %{mpowerpc64*: -mppc64}   %{!mpowerpc64*: %{mpowerpc*: -mppc}}   %{mno-power: %{!mpowerpc*: -mcom}}   %{!mno-power: %{!mpower*: %(asm_default)}}} %{mcpu=common: -mcom} %{mcpu=power: -mpwr} %{mcpu=power2: -mpwrx} %{mcpu=power3: -mppc64} %{mcpu=power4: -mpower4} %{mcpu=power5: -mpower4} %{mcpu=powerpc: -mppc} %{mcpu=rios: -mpwr} %{mcpu=rios1: -mpwr} %{mcpu=rios2: -mpwrx} %{mcpu=rsc: -mpwr} %{mcpu=rsc1: -mpwr} %{mcpu=rs64a: -mppc64} %{mcpu=401: -mppc} %{mcpu=403: -m403} %{mcpu=405: -m405} %{mcpu=405fp: -m405} %{mcpu=440: -m440} %{mcpu=440fp: -m440} %{mcpu=505: -mppc} %{mcpu=601: -m601} %{mcpu=602: -mppc} %{mcpu=603: -mppc} %{mcpu=603e: -mppc} %{mcpu=ec603e: -mppc} %{mcpu=604: -mppc} %{mcpu=604e: -mppc} %{mcpu=620: -mppc64} %{mcpu=630: -mppc64} %{mcpu=740: -mppc} %{mcpu=750: -mppc} %{mcpu=G3: -mppc} %{mcpu=7400: -mppc -maltivec} %{mcpu=7450: -mppc -maltivec} %{mcpu=G4: -mppc -maltivec} %{mcpu=801: -mppc} %{mcpu=821: -mppc} %{mcpu=823: -mppc} %{mcpu=860: -mppc} %{mcpu=970: -mpower4 -maltivec} %{mcpu=G5: -mpower4 -maltivec} %{mcpu=8540: -me500} %{maltivec: -maltivec}
 
 *asm_default:
 -mppc%{!m32:64}


-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Powerpc Linux build fails
  2004-05-20  1:24             ` Alan Modra
@ 2004-05-20  1:46               ` Alan Modra
  0 siblings, 0 replies; 60+ messages in thread
From: Alan Modra @ 2004-05-20  1:46 UTC (permalink / raw)
  To: David Edelsohn, Geoff Keating, ksp, binutils, Steve Munroe,
	Janis Johnson, Marcus Meissner

On Thu, May 20, 2004 at 10:54:24AM +0930, Alan Modra wrote:
> The following patch will correct hammer-3.3, gcc-3.4, and current
> mainline specs files.

Or better, add -many too.

--- /usr/local/lib/gcc-lib/powerpc64-linux/3.3.3-hammer/specs	2004-02-16 17:22:03.000000000 +1030
+++ specs	2004-05-20 10:39:02.868144582 +0930
@@ -108,7 +108,7 @@
 
 
 *asm_cpu:
-%{!mcpu*:   %{mpower: %{!mpower2: -mpwr}}   %{mpower2: -mpwrx}   %{mpowerpc*: -mppc}   %{mno-power: %{!mpowerpc*: -mcom}}   %{!mno-power: %{!mpower2: %(asm_default)}}} %{mcpu=common: -mcom} %{mcpu=power: -mpwr} %{mcpu=power2: -mpwrx} %{mcpu=power3: -m604} %{mcpu=power4: -mpower4} %{mcpu=powerpc: -mppc} %{mcpu=rios: -mpwr} %{mcpu=rios1: -mpwr} %{mcpu=rios2: -mpwrx} %{mcpu=rsc: -mpwr} %{mcpu=rsc1: -mpwr} %{mcpu=401: -mppc} %{mcpu=403: -m403} %{mcpu=405: -m405} %{mcpu=405fp: -m405} %{mcpu=440: -m440} %{mcpu=440fp: -m440} %{mcpu=505: -mppc} %{mcpu=601: -m601} %{mcpu=602: -mppc} %{mcpu=603: -mppc} %{mcpu=603e: -mppc} %{mcpu=ec603e: -mppc} %{mcpu=604: -mppc} %{mcpu=604e: -mppc} %{mcpu=620: -mppc} %{mcpu=630: -m604} %{mcpu=740: -mppc} %{mcpu=7400: -mppc} %{mcpu=7450: -mppc} %{mcpu=G4: -mppc} %{mcpu=750: -mppc} %{mcpu=G3: -mppc} %{mcpu=801: -mppc} %{mcpu=821: -mppc} %{mcpu=823: -mppc} %{mcpu=860: -mppc} %{mcpu=970: -mpower4} %{mcpu=G5: -mpower4} %{mcpu=8540: -me500} %{maltivec: -maltivec}
+%{!mcpu*:   %{mpower: %{!mpower2: -mpwr}}   %{mpower2: -mpwrx}   %{mpowerpc64*: -mppc64}   %{!mpowerpc64*: %{mpowerpc*: -mppc}}   %{mno-power: %{!mpowerpc*: -mcom}}   %{!mno-power: %{!mpower*: %(asm_default)}}} %{mcpu=common: -mcom} %{mcpu=power: -mpwr} %{mcpu=power2: -mpwrx} %{mcpu=power3: -mppc64} %{mcpu=power4: -mpower4} %{mcpu=power5: -mpower4} %{mcpu=powerpc: -mppc} %{mcpu=rios: -mpwr} %{mcpu=rios1: -mpwr} %{mcpu=rios2: -mpwrx} %{mcpu=rsc: -mpwr} %{mcpu=rsc1: -mpwr} %{mcpu=rs64a: -mppc64} %{mcpu=401: -mppc} %{mcpu=403: -m403} %{mcpu=405: -m405} %{mcpu=405fp: -m405} %{mcpu=440: -m440} %{mcpu=440fp: -m440} %{mcpu=505: -mppc} %{mcpu=601: -m601} %{mcpu=602: -mppc} %{mcpu=603: -mppc} %{mcpu=603e: -mppc} %{mcpu=ec603e: -mppc} %{mcpu=604: -mppc} %{mcpu=604e: -mppc} %{mcpu=620: -mppc64} %{mcpu=630: -mppc64} %{mcpu=740: -mppc} %{mcpu=750: -mppc} %{mcpu=G3: -mppc} %{mcpu=7400: -mppc -maltivec} %{mcpu=7450: -mppc -maltivec} %{mcpu=G4: -mppc -maltivec} %{mcpu=801: -mppc} %{mcpu=821: -mppc} %{mcpu=823: -mppc} %{mcpu=860: -mppc} %{mcpu=970: -mpower4 -maltivec} %{mcpu=G5: -mpower4 -maltivec} %{mcpu=8540: -me500} %{maltivec: -maltivec} -many
 
 *asm_default:
 -mppc%{!m32:64}


-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Powerpc Linux build fails
       [not found]       ` <amodra@bigpond.net.au>
                           ` (4 preceding siblings ...)
  2004-05-19 15:19         ` Powerpc Linux build fails David Edelsohn
@ 2004-05-20  2:29         ` David Edelsohn
  2004-05-20  3:10           ` Alan Modra
  2006-08-04  1:49         ` Link problems with section anchors David Edelsohn
  6 siblings, 1 reply; 60+ messages in thread
From: David Edelsohn @ 2004-05-20  2:29 UTC (permalink / raw)
  To: Geoff Keating, ksp, binutils, Steve Munroe, Janis Johnson,
	Marcus Meissner

	specs is a generated file.

	I agree that we should fix this by correcting the specs definitions.

David

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Powerpc Linux build fails
  2004-05-20  2:29         ` David Edelsohn
@ 2004-05-20  3:10           ` Alan Modra
  0 siblings, 0 replies; 60+ messages in thread
From: Alan Modra @ 2004-05-20  3:10 UTC (permalink / raw)
  To: David Edelsohn
  Cc: Geoff Keating, ksp, binutils, Steve Munroe, Janis Johnson,
	Marcus Meissner

On Wed, May 19, 2004 at 10:28:57PM -0400, David Edelsohn wrote:
> 	specs is a generated file.

Sure.  I supplied that particular patch so that people could fix
their installed toolchain should they update binutils but not wish to
recompile gcc.

> 	I agree that we should fix this by correcting the specs definitions.

http://gcc.gnu.org/ml/gcc-patches/2004-05/msg01244.html has the
equivalent patch to the gcc sources.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Link problems with section anchors
       [not found] <44D2755E.9020600@us.ibm.com>
@ 2006-08-04  1:30 ` Alan Modra
  2006-08-04  9:04   ` Richard Sandiford
  0 siblings, 1 reply; 60+ messages in thread
From: Alan Modra @ 2006-08-04  1:30 UTC (permalink / raw)
  To: Steven Munroe; +Cc: Richard Sandiford, binutils

On Thu, Aug 03, 2006 at 05:14:54PM -0500, Steven Munroe wrote:
> `.LANCHOR0' referenced in section `.text' of libc_pic.a(strtoul_l.os):
> defined in discarded section `.gnu.linkonce.r.__strtol_ul_max_tab' of
> libc_pic.a(strtoul_l.os)
> `.LANCHOR1' referenced in section `.text' of libc_pic.a(strtoul_l.os):
> defined in discarded section `.gnu.linkonce.r.__strtol_ul_rem_tab' of
> libc_pic.a(strtoul_l.os)
> ...
> 
> This is related to -fsection-anchors because rebuilding with
> -fno-section-anchors makes the problem go away.

Taking a look at -fno-section-anchors strtoul_l.os
000000fe  00000f0e R_PPC_GOT16            00000000   __strtol_ul_max_tab + 0
00000102  0000100e R_PPC_GOT16            00000000   __strtol_ul_rem_tab + 0
    15: 00000000   140 OBJECT  GLOBAL HIDDEN    5 __strtol_ul_max_tab
    16: 00000000    35 OBJECT  GLOBAL HIDDEN    6 __strtol_ul_rem_tab

vs -fsection-anchors strtoul_l_os
000000fe  0000060e R_PPC_GOT16            00000000   .LANCHOR0 + 0
00000102  0000080e R_PPC_GOT16            00000000   .LANCHOR1 + 0
     6: 00000000     0 NOTYPE  LOCAL  DEFAULT    5 .LANCHOR0
     8: 00000000     0 NOTYPE  LOCAL  DEFAULT    6 .LANCHOR1

Note the difference in local vs. global symbol used on the GOT reloc.
GOT relocs work by creating one entry in .got per symbol, so for example
if there are a dozen GOT relocs referencing __strtol_ul_max_tab you get
just one entry in .got.  Global symbols merge.  There can only be one
strong definition of a global symbol, and all references resolve to
that single definition.  However, .LANCHOR0 is local, so is a different
symbol to .LANCHOR0 in some other file.  Thus the GOT reloc referencing
.LANCHOR0 in this file creates a separate .got entry to a GOT reloc in
another file referencing .LANCHOR0.

I'd say this is a gcc bug.  (The GOT reloc can't really use section
anchors anyway because sym+off@got has rather useless semantics, so why
can't gcc use the original symbol?)  ld can't treat the local symbols in
linkonce sections as if they were global because .LANCHOR0 in
.gnu.linkonce.r.__strtol_ul_max_tab must be different from .LANCHOR0 in
.gnu.linkonce.r.some_other_name.  Hmm, I suppose ld could create a new
global name that incorporated the section name, and do the same for
section groups, but twiddling relocs to use a different symbol is
non-trivial.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Link problems with section anchors
       [not found]       ` <amodra@bigpond.net.au>
                           ` (5 preceding siblings ...)
  2004-05-20  2:29         ` David Edelsohn
@ 2006-08-04  1:49         ` David Edelsohn
  2006-08-04  2:04           ` Alan Modra
  6 siblings, 1 reply; 60+ messages in thread
From: David Edelsohn @ 2006-08-04  1:49 UTC (permalink / raw)
  To: Steven Munroe, Richard Sandiford, binutils

Alan,

	Why is this failing with recent Binutils but not with Janis's
daily GCC builds, presumably with an older version of Binutils?

David

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Link problems with section anchors
  2006-08-04  1:49         ` Link problems with section anchors David Edelsohn
@ 2006-08-04  2:04           ` Alan Modra
  0 siblings, 0 replies; 60+ messages in thread
From: Alan Modra @ 2006-08-04  2:04 UTC (permalink / raw)
  To: David Edelsohn; +Cc: Steven Munroe, Richard Sandiford, binutils

On Thu, Aug 03, 2006 at 09:49:23PM -0400, David Edelsohn wrote:
> Alan,
> 
> 	Why is this failing with recent Binutils but not with Janis's
> daily GCC builds, presumably with an older version of Binutils?

Some older binutils are more tolerant of references to local syms in
discarded linkone sections, resolving them to the same offset in the
kept linkonce section.  Which leads to a different sort of grief
when the sections are not identical, eg. due to using different
compilation options.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Link problems with section anchors
  2006-08-04  1:30 ` Link problems with section anchors Alan Modra
@ 2006-08-04  9:04   ` Richard Sandiford
  2006-08-04 13:53     ` Steven Munroe
  2006-08-04 13:54     ` David Edelsohn
  0 siblings, 2 replies; 60+ messages in thread
From: Richard Sandiford @ 2006-08-04  9:04 UTC (permalink / raw)
  To: Steven Munroe; +Cc: binutils, dje, mark

I wasn't really sure whether to reply to the gcc bug report or the
binutils thread.  As you can see, I chose here.

The gcc bug report (28598) seems a little confused to me.  It appears
to be saying "gcc should not use GOT relocs for anchor symbols", but how
else is it supposed to load the value of the symbol?  From an addressing
perspective, the anchor symbol is no different from any other local symbol.

Perhaps this was influenced by what Alan said:

Alan Modra <amodra@bigpond.net.au> writes:
> I'd say this is a gcc bug.  (The GOT reloc can't really use section
> anchors anyway because sym+off@got has rather useless semantics, so why
> can't gcc use the original symbol?)

...but we don't use sym+off@got for anchors.  Well, OK, I'll have
to equivocate that slightly, but first...

The point of -fsection-anchors is to access (hopefully) several nearby
objects from the same symbol, where "nearby" depends on the addressing
capabilities of the target.  On PPC "nearby" == "within a 32-bit signed
displacement".

We start out by modelling each access as follows: we load an anchor
symbol into a base register, then apply the relative offset of the
object to that base register.  We win if, by doing this, we can access
more than one object from the same symbol.  For example, when using
a GOT, we'll only have one GOT entry for the anchor symbol rather
than several entries for each object.

The equivocation is that, if an anchor is only used once, gcc may
optimise "load ANCHOR then add OFFSET" into "load (ANCHOR + OFFSET)".
But the backend will (should!) handle this load in the same way as it
would handle any another "load (LOCAL + OFFSET)" access.  There is
nothing special about the anchor symbol as far as the addressing
code goes.

In other words, we'd only use "ANCHOR+OFFSET@got" if an anchor is
only used once, and only then if we would also use "LOCAL+OFFSET@got".

> ld can't treat the local symbols in linkonce sections as if they were
> global because .LANCHOR0 in .gnu.linkonce.r.__strtol_ul_max_tab must
> be different from .LANCHOR0 in .gnu.linkonce.r.some_other_name.  Hmm,
> I suppose ld could create a new global name that incorporated the
> section name, and do the same for section groups, but twiddling relocs
> to use a different symbol is non-trivial.

Yes, it sounds like you have a testcase in which anchors are used to
access linkonce objects.  This Should Not Happen, and if it is happening,
is the real bug.  Link-once objects were supposed to be handled by:

static struct object_block *
get_block_for_decl (tree decl)
{
  section *sect;

  if (TREE_CODE (decl) == VAR_DECL)
    {
      [...]
      /* There's no point using object blocks for something that is
	 isolated by definition.  */
      if (DECL_ONE_ONLY (decl))
	return NULL;
    }
}

(In case the emphasis of the comment seems odd; this code is deciding
whether it's worthwhile grouping objects together.  That's a more
general question than "do we want to use anchors for this object"?
The hope is that we might want to group objects together for other
optimisations too, such choosing as a more cache-friendly layout.)

Could someone prepare a testcase?  Thanks.

Richard

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Link problems with section anchors
  2006-08-04  9:04   ` Richard Sandiford
@ 2006-08-04 13:53     ` Steven Munroe
  2006-08-04 13:54     ` David Edelsohn
  1 sibling, 0 replies; 60+ messages in thread
From: Steven Munroe @ 2006-08-04 13:53 UTC (permalink / raw)
  To: Richard Sandiford; +Cc: binutils, dje, mark

[-- Attachment #1: Type: text/plain, Size: 214 bytes --]

Richard Sandiford wrote:
>Could someone prepare a testcase?  Thanks.
>
>  
Here is the preprocessed source for strtoul_l. This is one of the
failing cases that I found in glibc that I have also shared with David.


[-- Attachment #2: strtoul_l.i --]
[-- Type: text/plain, Size: 234728 bytes --]

# 1 "strtoul_l.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "./../include/libc-symbols.h" 1
# 55 "./../include/libc-symbols.h"
# 1 "/home/sjmunroe/toolchain/build/glibc32/config.h" 1
# 56 "./../include/libc-symbols.h" 2
# 817 "./../include/libc-symbols.h"
# 1 "../sysdeps/wordsize-32/symbol-hacks.h" 1
# 26 "../sysdeps/wordsize-32/symbol-hacks.h"
asm ("__divdi3 = __divdi3_internal");
asm ("__udivdi3 = __udivdi3_internal");
asm ("__moddi3 = __moddi3_internal");
asm ("__umoddi3 = __umoddi3_internal");
# 818 "./../include/libc-symbols.h" 2
# 1 "<command-line>" 2
# 1 "strtoul_l.c"
# 23 "strtoul_l.c"
# 1 "../include/xlocale.h" 1
# 1 "../locale/xlocale.h" 1
# 28 "../locale/xlocale.h"
typedef struct __locale_struct
{

  struct locale_data *__locales[13];


  const unsigned short int *__ctype_b;
  const int *__ctype_tolower;
  const int *__ctype_toupper;


  const char *__names[13];
} *__locale_t;
# 1 "../include/xlocale.h" 2
# 24 "strtoul_l.c" 2

extern unsigned long int ____strtoul_l_internal (const char *, char **, int,
       int, __locale_t);

# 1 "strtol_l.c" 1
# 32 "strtol_l.c"
# 1 "../include/ctype.h" 1


extern int __isctype (int __c, int __mask);
# 14 "../include/ctype.h"
# 1 "../include/../locale/localeinfo.h" 1
# 23 "../include/../locale/localeinfo.h"
# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 152 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 3 4
typedef int ptrdiff_t;
# 214 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 3 4
typedef unsigned int size_t;
# 326 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 3 4
typedef long int wchar_t;
# 24 "../include/../locale/localeinfo.h" 2
# 1 "../include/langinfo.h" 1


# 1 "../locale/langinfo.h" 1
# 24 "../locale/langinfo.h"
# 1 "../include/nl_types.h" 1
# 1 "../catgets/nl_types.h" 1
# 22 "../catgets/nl_types.h"
# 1 "../include/features.h" 1
# 323 "../include/features.h"
# 1 "../include/sys/cdefs.h" 1


# 1 "../misc/sys/cdefs.h" 1
# 313 "../misc/sys/cdefs.h"
# 1 "../sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h" 1
# 314 "../misc/sys/cdefs.h" 2
# 4 "../include/sys/cdefs.h" 2

extern void __chk_fail (void) __attribute__ ((__noreturn__));
extern __typeof (__chk_fail) __chk_fail __asm__ ("" "__GI___chk_fail") __attribute__ ((visibility ("hidden")));

# 324 "../include/features.h" 2
# 346 "../include/features.h"
# 1 "../include/gnu/stubs.h" 1
# 347 "../include/features.h" 2
# 23 "../catgets/nl_types.h" 2
# 31 "../catgets/nl_types.h"



typedef void *nl_catd;


typedef int nl_item;





extern nl_catd catopen (__const char *__cat_name, int __flag) __attribute__ ((__nonnull__ (1)));



extern char *catgets (nl_catd __catalog, int __set, int __number,
        __const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int catclose (nl_catd __catalog) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


# 1 "../include/nl_types.h" 2
# 25 "../locale/langinfo.h" 2

# 1 "../include/bits/locale.h" 1
# 1 "../locale/bits/locale.h" 1
# 27 "../locale/bits/locale.h"
enum
{
  __LC_CTYPE = 0,
  __LC_NUMERIC = 1,
  __LC_TIME = 2,
  __LC_COLLATE = 3,
  __LC_MONETARY = 4,
  __LC_MESSAGES = 5,
  __LC_ALL = 6,
  __LC_PAPER = 7,
  __LC_NAME = 8,
  __LC_ADDRESS = 9,
  __LC_TELEPHONE = 10,
  __LC_MEASUREMENT = 11,
  __LC_IDENTIFICATION = 12
};
# 1 "../include/bits/locale.h" 2
# 27 "../locale/langinfo.h" 2



# 42 "../locale/langinfo.h"
enum
{



  ABDAY_1 = (((__LC_TIME) << 16) | (0)),

  ABDAY_2,

  ABDAY_3,

  ABDAY_4,

  ABDAY_5,

  ABDAY_6,

  ABDAY_7,



  DAY_1,

  DAY_2,

  DAY_3,

  DAY_4,

  DAY_5,

  DAY_6,

  DAY_7,



  ABMON_1,

  ABMON_2,

  ABMON_3,

  ABMON_4,

  ABMON_5,

  ABMON_6,

  ABMON_7,

  ABMON_8,

  ABMON_9,

  ABMON_10,

  ABMON_11,

  ABMON_12,



  MON_1,

  MON_2,

  MON_3,

  MON_4,

  MON_5,

  MON_6,

  MON_7,

  MON_8,

  MON_9,

  MON_10,

  MON_11,

  MON_12,


  AM_STR,

  PM_STR,


  D_T_FMT,

  D_FMT,

  T_FMT,

  T_FMT_AMPM,


  ERA,

  __ERA_YEAR,



  ERA_D_FMT,

  ALT_DIGITS,

  ERA_D_T_FMT,

  ERA_T_FMT,


  _NL_TIME_ERA_NUM_ENTRIES,
  _NL_TIME_ERA_ENTRIES,

  _NL_WABDAY_1,
  _NL_WABDAY_2,
  _NL_WABDAY_3,
  _NL_WABDAY_4,
  _NL_WABDAY_5,
  _NL_WABDAY_6,
  _NL_WABDAY_7,


  _NL_WDAY_1,
  _NL_WDAY_2,
  _NL_WDAY_3,
  _NL_WDAY_4,
  _NL_WDAY_5,
  _NL_WDAY_6,
  _NL_WDAY_7,


  _NL_WABMON_1,
  _NL_WABMON_2,
  _NL_WABMON_3,
  _NL_WABMON_4,
  _NL_WABMON_5,
  _NL_WABMON_6,
  _NL_WABMON_7,
  _NL_WABMON_8,
  _NL_WABMON_9,
  _NL_WABMON_10,
  _NL_WABMON_11,
  _NL_WABMON_12,


  _NL_WMON_1,
  _NL_WMON_2,
  _NL_WMON_3,
  _NL_WMON_4,
  _NL_WMON_5,
  _NL_WMON_6,
  _NL_WMON_7,
  _NL_WMON_8,
  _NL_WMON_9,
  _NL_WMON_10,
  _NL_WMON_11,
  _NL_WMON_12,

  _NL_WAM_STR,
  _NL_WPM_STR,

  _NL_WD_T_FMT,
  _NL_WD_FMT,
  _NL_WT_FMT,
  _NL_WT_FMT_AMPM,

  _NL_WERA_YEAR,
  _NL_WERA_D_FMT,
  _NL_WALT_DIGITS,
  _NL_WERA_D_T_FMT,
  _NL_WERA_T_FMT,

  _NL_TIME_WEEK_NDAYS,
  _NL_TIME_WEEK_1STDAY,
  _NL_TIME_WEEK_1STWEEK,
  _NL_TIME_FIRST_WEEKDAY,
  _NL_TIME_FIRST_WORKDAY,
  _NL_TIME_CAL_DIRECTION,
  _NL_TIME_TIMEZONE,

  _DATE_FMT,

  _NL_W_DATE_FMT,

  _NL_TIME_CODESET,

  _NL_NUM_LC_TIME,




  _NL_COLLATE_NRULES = (((__LC_COLLATE) << 16) | (0)),
  _NL_COLLATE_RULESETS,
  _NL_COLLATE_TABLEMB,
  _NL_COLLATE_WEIGHTMB,
  _NL_COLLATE_EXTRAMB,
  _NL_COLLATE_INDIRECTMB,
  _NL_COLLATE_GAP1,
  _NL_COLLATE_GAP2,
  _NL_COLLATE_GAP3,
  _NL_COLLATE_TABLEWC,
  _NL_COLLATE_WEIGHTWC,
  _NL_COLLATE_EXTRAWC,
  _NL_COLLATE_INDIRECTWC,
  _NL_COLLATE_SYMB_HASH_SIZEMB,
  _NL_COLLATE_SYMB_TABLEMB,
  _NL_COLLATE_SYMB_EXTRAMB,
  _NL_COLLATE_COLLSEQMB,
  _NL_COLLATE_COLLSEQWC,
  _NL_COLLATE_CODESET,
  _NL_NUM_LC_COLLATE,




  _NL_CTYPE_CLASS = (((__LC_CTYPE) << 16) | (0)),
  _NL_CTYPE_TOUPPER,
  _NL_CTYPE_GAP1,
  _NL_CTYPE_TOLOWER,
  _NL_CTYPE_GAP2,
  _NL_CTYPE_CLASS32,
  _NL_CTYPE_GAP3,
  _NL_CTYPE_GAP4,
  _NL_CTYPE_GAP5,
  _NL_CTYPE_GAP6,
  _NL_CTYPE_CLASS_NAMES,
  _NL_CTYPE_MAP_NAMES,
  _NL_CTYPE_WIDTH,
  _NL_CTYPE_MB_CUR_MAX,
  _NL_CTYPE_CODESET_NAME,
  CODESET = _NL_CTYPE_CODESET_NAME,

  _NL_CTYPE_TOUPPER32,
  _NL_CTYPE_TOLOWER32,
  _NL_CTYPE_CLASS_OFFSET,
  _NL_CTYPE_MAP_OFFSET,
  _NL_CTYPE_INDIGITS_MB_LEN,
  _NL_CTYPE_INDIGITS0_MB,
  _NL_CTYPE_INDIGITS1_MB,
  _NL_CTYPE_INDIGITS2_MB,
  _NL_CTYPE_INDIGITS3_MB,
  _NL_CTYPE_INDIGITS4_MB,
  _NL_CTYPE_INDIGITS5_MB,
  _NL_CTYPE_INDIGITS6_MB,
  _NL_CTYPE_INDIGITS7_MB,
  _NL_CTYPE_INDIGITS8_MB,
  _NL_CTYPE_INDIGITS9_MB,
  _NL_CTYPE_INDIGITS_WC_LEN,
  _NL_CTYPE_INDIGITS0_WC,
  _NL_CTYPE_INDIGITS1_WC,
  _NL_CTYPE_INDIGITS2_WC,
  _NL_CTYPE_INDIGITS3_WC,
  _NL_CTYPE_INDIGITS4_WC,
  _NL_CTYPE_INDIGITS5_WC,
  _NL_CTYPE_INDIGITS6_WC,
  _NL_CTYPE_INDIGITS7_WC,
  _NL_CTYPE_INDIGITS8_WC,
  _NL_CTYPE_INDIGITS9_WC,
  _NL_CTYPE_OUTDIGIT0_MB,
  _NL_CTYPE_OUTDIGIT1_MB,
  _NL_CTYPE_OUTDIGIT2_MB,
  _NL_CTYPE_OUTDIGIT3_MB,
  _NL_CTYPE_OUTDIGIT4_MB,
  _NL_CTYPE_OUTDIGIT5_MB,
  _NL_CTYPE_OUTDIGIT6_MB,
  _NL_CTYPE_OUTDIGIT7_MB,
  _NL_CTYPE_OUTDIGIT8_MB,
  _NL_CTYPE_OUTDIGIT9_MB,
  _NL_CTYPE_OUTDIGIT0_WC,
  _NL_CTYPE_OUTDIGIT1_WC,
  _NL_CTYPE_OUTDIGIT2_WC,
  _NL_CTYPE_OUTDIGIT3_WC,
  _NL_CTYPE_OUTDIGIT4_WC,
  _NL_CTYPE_OUTDIGIT5_WC,
  _NL_CTYPE_OUTDIGIT6_WC,
  _NL_CTYPE_OUTDIGIT7_WC,
  _NL_CTYPE_OUTDIGIT8_WC,
  _NL_CTYPE_OUTDIGIT9_WC,
  _NL_CTYPE_TRANSLIT_TAB_SIZE,
  _NL_CTYPE_TRANSLIT_FROM_IDX,
  _NL_CTYPE_TRANSLIT_FROM_TBL,
  _NL_CTYPE_TRANSLIT_TO_IDX,
  _NL_CTYPE_TRANSLIT_TO_TBL,
  _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN,
  _NL_CTYPE_TRANSLIT_DEFAULT_MISSING,
  _NL_CTYPE_TRANSLIT_IGNORE_LEN,
  _NL_CTYPE_TRANSLIT_IGNORE,
  _NL_CTYPE_MAP_TO_NONASCII,
  _NL_CTYPE_EXTRA_MAP_1,
  _NL_CTYPE_EXTRA_MAP_2,
  _NL_CTYPE_EXTRA_MAP_3,
  _NL_CTYPE_EXTRA_MAP_4,
  _NL_CTYPE_EXTRA_MAP_5,
  _NL_CTYPE_EXTRA_MAP_6,
  _NL_CTYPE_EXTRA_MAP_7,
  _NL_CTYPE_EXTRA_MAP_8,
  _NL_CTYPE_EXTRA_MAP_9,
  _NL_CTYPE_EXTRA_MAP_10,
  _NL_CTYPE_EXTRA_MAP_11,
  _NL_CTYPE_EXTRA_MAP_12,
  _NL_CTYPE_EXTRA_MAP_13,
  _NL_CTYPE_EXTRA_MAP_14,
  _NL_NUM_LC_CTYPE,




  __INT_CURR_SYMBOL = (((__LC_MONETARY) << 16) | (0)),



  __CURRENCY_SYMBOL,



  __MON_DECIMAL_POINT,



  __MON_THOUSANDS_SEP,



  __MON_GROUPING,



  __POSITIVE_SIGN,



  __NEGATIVE_SIGN,



  __INT_FRAC_DIGITS,



  __FRAC_DIGITS,



  __P_CS_PRECEDES,



  __P_SEP_BY_SPACE,



  __N_CS_PRECEDES,



  __N_SEP_BY_SPACE,



  __P_SIGN_POSN,



  __N_SIGN_POSN,



  _NL_MONETARY_CRNCYSTR,

  __INT_P_CS_PRECEDES,



  __INT_P_SEP_BY_SPACE,



  __INT_N_CS_PRECEDES,



  __INT_N_SEP_BY_SPACE,



  __INT_P_SIGN_POSN,



  __INT_N_SIGN_POSN,



  _NL_MONETARY_DUO_INT_CURR_SYMBOL,
  _NL_MONETARY_DUO_CURRENCY_SYMBOL,
  _NL_MONETARY_DUO_INT_FRAC_DIGITS,
  _NL_MONETARY_DUO_FRAC_DIGITS,
  _NL_MONETARY_DUO_P_CS_PRECEDES,
  _NL_MONETARY_DUO_P_SEP_BY_SPACE,
  _NL_MONETARY_DUO_N_CS_PRECEDES,
  _NL_MONETARY_DUO_N_SEP_BY_SPACE,
  _NL_MONETARY_DUO_INT_P_CS_PRECEDES,
  _NL_MONETARY_DUO_INT_P_SEP_BY_SPACE,
  _NL_MONETARY_DUO_INT_N_CS_PRECEDES,
  _NL_MONETARY_DUO_INT_N_SEP_BY_SPACE,
  _NL_MONETARY_DUO_P_SIGN_POSN,
  _NL_MONETARY_DUO_N_SIGN_POSN,
  _NL_MONETARY_DUO_INT_P_SIGN_POSN,
  _NL_MONETARY_DUO_INT_N_SIGN_POSN,
  _NL_MONETARY_UNO_VALID_FROM,
  _NL_MONETARY_UNO_VALID_TO,
  _NL_MONETARY_DUO_VALID_FROM,
  _NL_MONETARY_DUO_VALID_TO,
  _NL_MONETARY_CONVERSION_RATE,
  _NL_MONETARY_DECIMAL_POINT_WC,
  _NL_MONETARY_THOUSANDS_SEP_WC,
  _NL_MONETARY_CODESET,
  _NL_NUM_LC_MONETARY,



  __DECIMAL_POINT = (((__LC_NUMERIC) << 16) | (0)),



  RADIXCHAR = __DECIMAL_POINT,

  __THOUSANDS_SEP,



  THOUSEP = __THOUSANDS_SEP,

  __GROUPING,



  _NL_NUMERIC_DECIMAL_POINT_WC,
  _NL_NUMERIC_THOUSANDS_SEP_WC,
  _NL_NUMERIC_CODESET,
  _NL_NUM_LC_NUMERIC,

  __YESEXPR = (((__LC_MESSAGES) << 16) | (0)),

  __NOEXPR,

  __YESSTR,



  __NOSTR,



  _NL_MESSAGES_CODESET,
  _NL_NUM_LC_MESSAGES,

  _NL_PAPER_HEIGHT = (((__LC_PAPER) << 16) | (0)),
  _NL_PAPER_WIDTH,
  _NL_PAPER_CODESET,
  _NL_NUM_LC_PAPER,

  _NL_NAME_NAME_FMT = (((__LC_NAME) << 16) | (0)),
  _NL_NAME_NAME_GEN,
  _NL_NAME_NAME_MR,
  _NL_NAME_NAME_MRS,
  _NL_NAME_NAME_MISS,
  _NL_NAME_NAME_MS,
  _NL_NAME_CODESET,
  _NL_NUM_LC_NAME,

  _NL_ADDRESS_POSTAL_FMT = (((__LC_ADDRESS) << 16) | (0)),
  _NL_ADDRESS_COUNTRY_NAME,
  _NL_ADDRESS_COUNTRY_POST,
  _NL_ADDRESS_COUNTRY_AB2,
  _NL_ADDRESS_COUNTRY_AB3,
  _NL_ADDRESS_COUNTRY_CAR,
  _NL_ADDRESS_COUNTRY_NUM,
  _NL_ADDRESS_COUNTRY_ISBN,
  _NL_ADDRESS_LANG_NAME,
  _NL_ADDRESS_LANG_AB,
  _NL_ADDRESS_LANG_TERM,
  _NL_ADDRESS_LANG_LIB,
  _NL_ADDRESS_CODESET,
  _NL_NUM_LC_ADDRESS,

  _NL_TELEPHONE_TEL_INT_FMT = (((__LC_TELEPHONE) << 16) | (0)),
  _NL_TELEPHONE_TEL_DOM_FMT,
  _NL_TELEPHONE_INT_SELECT,
  _NL_TELEPHONE_INT_PREFIX,
  _NL_TELEPHONE_CODESET,
  _NL_NUM_LC_TELEPHONE,

  _NL_MEASUREMENT_MEASUREMENT = (((__LC_MEASUREMENT) << 16) | (0)),
  _NL_MEASUREMENT_CODESET,
  _NL_NUM_LC_MEASUREMENT,

  _NL_IDENTIFICATION_TITLE = (((__LC_IDENTIFICATION) << 16) | (0)),
  _NL_IDENTIFICATION_SOURCE,
  _NL_IDENTIFICATION_ADDRESS,
  _NL_IDENTIFICATION_CONTACT,
  _NL_IDENTIFICATION_EMAIL,
  _NL_IDENTIFICATION_TEL,
  _NL_IDENTIFICATION_FAX,
  _NL_IDENTIFICATION_LANGUAGE,
  _NL_IDENTIFICATION_TERRITORY,
  _NL_IDENTIFICATION_AUDIENCE,
  _NL_IDENTIFICATION_APPLICATION,
  _NL_IDENTIFICATION_ABBREVIATION,
  _NL_IDENTIFICATION_REVISION,
  _NL_IDENTIFICATION_DATE,
  _NL_IDENTIFICATION_CATEGORY,
  _NL_IDENTIFICATION_CODESET,
  _NL_NUM_LC_IDENTIFICATION,


  _NL_NUM
};
# 582 "../locale/langinfo.h"
extern char *nl_langinfo (nl_item __item) __attribute__ ((__nothrow__));







# 1 "../include/xlocale.h" 1
# 591 "../locale/langinfo.h" 2


extern char *nl_langinfo_l (nl_item __item, __locale_t l);



# 4 "../include/langinfo.h" 2

extern __typeof (nl_langinfo) nl_langinfo __asm__ ("" "__GI_nl_langinfo") __attribute__ ((visibility ("hidden")));

extern __typeof (nl_langinfo_l) __nl_langinfo_l;
# 25 "../include/../locale/localeinfo.h" 2
# 1 "../include/limits.h" 1
# 125 "../include/limits.h"
# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/limits.h" 1 3 4
# 126 "../include/limits.h" 2
# 145 "../include/limits.h"
# 1 "../include/bits/posix1_lim.h" 1
# 1 "../posix/bits/posix1_lim.h" 1
# 153 "../posix/bits/posix1_lim.h"
# 1 "../nptl/sysdeps/unix/sysv/linux/bits/local_lim.h" 1
# 36 "../nptl/sysdeps/unix/sysv/linux/bits/local_lim.h"
# 1 "/opt/biarch/gcc42-test/include/linux/limits.h" 1 3 4
# 37 "../nptl/sysdeps/unix/sysv/linux/bits/local_lim.h" 2
# 154 "../posix/bits/posix1_lim.h" 2
# 1 "../include/bits/posix1_lim.h" 2
# 146 "../include/limits.h" 2



# 1 "../include/bits/posix2_lim.h" 1
# 1 "../posix/bits/posix2_lim.h" 1
# 1 "../include/bits/posix2_lim.h" 2
# 150 "../include/limits.h" 2



# 1 "../include/bits/xopen_lim.h" 1
# 34 "../include/bits/xopen_lim.h"
# 1 "/home/sjmunroe/toolchain/build/glibc32/bits/stdio_lim.h" 1
# 35 "../include/bits/xopen_lim.h" 2
# 154 "../include/limits.h" 2
# 26 "../include/../locale/localeinfo.h" 2
# 1 "../include/locale.h" 1

# 1 "../locale/locale.h" 1
# 29 "../locale/locale.h"
# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 30 "../locale/locale.h" 2
# 1 "../include/bits/locale.h" 1
# 1 "../locale/bits/locale.h" 1
# 1 "../include/bits/locale.h" 2
# 31 "../locale/locale.h" 2


# 52 "../locale/locale.h"
struct lconv
{


  char *decimal_point;
  char *thousands_sep;





  char *grouping;





  char *int_curr_symbol;
  char *currency_symbol;
  char *mon_decimal_point;
  char *mon_thousands_sep;
  char *mon_grouping;
  char *positive_sign;
  char *negative_sign;
  char int_frac_digits;
  char frac_digits;

  char p_cs_precedes;

  char p_sep_by_space;

  char n_cs_precedes;

  char n_sep_by_space;






  char p_sign_posn;
  char n_sign_posn;


  char int_p_cs_precedes;

  char int_p_sep_by_space;

  char int_n_cs_precedes;

  char int_n_sep_by_space;






  char int_p_sign_posn;
  char int_n_sign_posn;
# 119 "../locale/locale.h"
};





extern char *setlocale (int __category, __const char *__locale) __attribute__ ((__nothrow__));


extern struct lconv *localeconv (void) __attribute__ ((__nothrow__));


# 146 "../locale/locale.h"
# 1 "../include/xlocale.h" 1
# 147 "../locale/locale.h" 2

typedef __locale_t locale_t;





extern __locale_t newlocale (int __category_mask, __const char *__locale,
        __locale_t __base) __attribute__ ((__nothrow__));
# 189 "../locale/locale.h"
extern __locale_t duplocale (__locale_t __dataset) __attribute__ ((__nothrow__));



extern void freelocale (__locale_t __dataset) __attribute__ ((__nothrow__));






extern __locale_t uselocale (__locale_t __dataset) __attribute__ ((__nothrow__));








# 3 "../include/locale.h" 2

extern __typeof (uselocale) __uselocale;

extern __typeof (setlocale) setlocale __asm__ ("" "__GI_setlocale") __attribute__ ((visibility ("hidden")));




extern struct loaded_l10nfile *_nl_locale_file_list[] __attribute__ ((visibility ("hidden")));


extern const struct __locale_struct _nl_C_locobj __attribute__ ((visibility ("hidden")));



extern struct lconv *__localeconv (void);


extern const char *__current_locale_name (int category) __attribute__ ((visibility ("hidden")));
# 27 "../include/../locale/localeinfo.h" 2
# 1 "../include/time.h" 1




# 1 "../time/time.h" 1
# 31 "../time/time.h"








# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 40 "../time/time.h" 2



# 1 "../bits/time.h" 1
# 44 "../time/time.h" 2
# 57 "../time/time.h"
# 1 "../bits/types.h" 1
# 28 "../bits/types.h"
# 1 "../sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h" 1
# 29 "../bits/types.h" 2


# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 32 "../bits/types.h" 2


typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;


typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;




__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;







__extension__ typedef long long int __quad_t;
__extension__ typedef unsigned long long int __u_quad_t;
# 134 "../bits/types.h"
# 1 "../bits/typesizes.h" 1
# 135 "../bits/types.h" 2


__extension__ typedef __u_quad_t __dev_t;
__extension__ typedef unsigned int __uid_t;
__extension__ typedef unsigned int __gid_t;
__extension__ typedef unsigned long int __ino_t;
__extension__ typedef __u_quad_t __ino64_t;
__extension__ typedef unsigned int __mode_t;
__extension__ typedef unsigned int __nlink_t;
__extension__ typedef long int __off_t;
__extension__ typedef __quad_t __off64_t;
__extension__ typedef int __pid_t;
__extension__ typedef struct { int __val[2]; } __fsid_t;
__extension__ typedef long int __clock_t;
__extension__ typedef unsigned long int __rlim_t;
__extension__ typedef __u_quad_t __rlim64_t;
__extension__ typedef unsigned int __id_t;
__extension__ typedef long int __time_t;
__extension__ typedef unsigned int __useconds_t;
__extension__ typedef long int __suseconds_t;

__extension__ typedef int __daddr_t;
__extension__ typedef long int __swblk_t;
__extension__ typedef int __key_t;


__extension__ typedef int __clockid_t;


__extension__ typedef void * __timer_t;


__extension__ typedef long int __blksize_t;




__extension__ typedef long int __blkcnt_t;
__extension__ typedef __quad_t __blkcnt64_t;


__extension__ typedef unsigned long int __fsblkcnt_t;
__extension__ typedef __u_quad_t __fsblkcnt64_t;


__extension__ typedef unsigned long int __fsfilcnt_t;
__extension__ typedef __u_quad_t __fsfilcnt64_t;

__extension__ typedef int __ssize_t;



typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;


__extension__ typedef int __intptr_t;


__extension__ typedef unsigned int __socklen_t;
# 58 "../time/time.h" 2



typedef __clock_t clock_t;



# 75 "../time/time.h"


typedef __time_t time_t;



# 93 "../time/time.h"
typedef __clockid_t clockid_t;
# 105 "../time/time.h"
typedef __timer_t timer_t;
# 121 "../time/time.h"
struct timespec
  {
    __time_t tv_sec;
    long int tv_nsec;
  };








struct tm
{
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;


  long int tm_gmtoff;
  __const char *tm_zone;




};








struct itimerspec
  {
    struct timespec it_interval;
    struct timespec it_value;
  };


struct sigevent;





typedef __pid_t pid_t;








extern clock_t clock (void) __attribute__ ((__nothrow__));


extern time_t time (time_t *__timer) __attribute__ ((__nothrow__));


extern double difftime (time_t __time1, time_t __time0)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__));





extern size_t strftime (char *__restrict __s, size_t __maxsize,
   __const char *__restrict __format,
   __const struct tm *__restrict __tp) __attribute__ ((__nothrow__));





extern char *strptime (__const char *__restrict __s,
         __const char *__restrict __fmt, struct tm *__tp)
     __attribute__ ((__nothrow__));





# 1 "../include/xlocale.h" 1
# 217 "../time/time.h" 2

extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
     __const char *__restrict __format,
     __const struct tm *__restrict __tp,
     __locale_t __loc) __attribute__ ((__nothrow__));

extern char *strptime_l (__const char *__restrict __s,
    __const char *__restrict __fmt, struct tm *__tp,
    __locale_t __loc) __attribute__ ((__nothrow__));






extern struct tm *gmtime (__const time_t *__timer) __attribute__ ((__nothrow__));



extern struct tm *localtime (__const time_t *__timer) __attribute__ ((__nothrow__));





extern struct tm *gmtime_r (__const time_t *__restrict __timer,
       struct tm *__restrict __tp) __attribute__ ((__nothrow__));



extern struct tm *localtime_r (__const time_t *__restrict __timer,
          struct tm *__restrict __tp) __attribute__ ((__nothrow__));





extern char *asctime (__const struct tm *__tp) __attribute__ ((__nothrow__));


extern char *ctime (__const time_t *__timer) __attribute__ ((__nothrow__));







extern char *asctime_r (__const struct tm *__restrict __tp,
   char *__restrict __buf) __attribute__ ((__nothrow__));


extern char *ctime_r (__const time_t *__restrict __timer,
        char *__restrict __buf) __attribute__ ((__nothrow__));




extern char *__tzname[2];
extern int __daylight;
extern long int __timezone;




extern char *tzname[2];



extern void tzset (void) __attribute__ ((__nothrow__));



extern int daylight;
extern long int timezone;





extern int stime (__const time_t *__when) __attribute__ ((__nothrow__));
# 312 "../time/time.h"
extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__));


extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__));


extern int dysize (int __year) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 327 "../time/time.h"
extern int nanosleep (__const struct timespec *__requested_time,
        struct timespec *__remaining);



extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__));


extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__));


extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
     __attribute__ ((__nothrow__));






extern int clock_nanosleep (clockid_t __clock_id, int __flags,
       __const struct timespec *__req,
       struct timespec *__rem);


extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__));




extern int timer_create (clockid_t __clock_id,
    struct sigevent *__restrict __evp,
    timer_t *__restrict __timerid) __attribute__ ((__nothrow__));


extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__));


extern int timer_settime (timer_t __timerid, int __flags,
     __const struct itimerspec *__restrict __value,
     struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__));


extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
     __attribute__ ((__nothrow__));


extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__));
# 389 "../time/time.h"
extern int getdate_err;
# 398 "../time/time.h"
extern struct tm *getdate (__const char *__string);
# 412 "../time/time.h"
extern int getdate_r (__const char *__restrict __string,
        struct tm *__restrict __resbufp);



# 6 "../include/time.h" 2
# 1 "../include/xlocale.h" 1
# 7 "../include/time.h" 2



extern __typeof (strftime_l) __strftime_l;
extern __typeof (__strftime_l) __strftime_l __asm__ ("" "__GI___strftime_l") __attribute__ ((visibility ("hidden")));
extern __typeof (strptime_l) __strptime_l;

extern __typeof (time) time __asm__ ("" "__GI_time") __attribute__ ((visibility ("hidden")));
extern __typeof (asctime) asctime __asm__ ("" "__GI_asctime") __attribute__ ((visibility ("hidden")));
extern __typeof (mktime) mktime __asm__ ("" "__GI_mktime") __attribute__ ((visibility ("hidden")));
extern __typeof (timelocal) timelocal __asm__ ("" "__GI_timelocal") __attribute__ ((visibility ("hidden")));
extern __typeof (localtime) localtime __asm__ ("" "__GI_localtime") __attribute__ ((visibility ("hidden")));
extern __typeof (strftime) strftime __asm__ ("" "__GI_strftime") __attribute__ ((visibility ("hidden")));
extern __typeof (strptime) strptime __asm__ ("" "__GI_strptime") __attribute__ ((visibility ("hidden")));




struct tm;


extern const unsigned short int __mon_yday[2][13] __attribute__ ((visibility ("hidden")));


extern struct tm _tmbuf __attribute__ ((visibility ("hidden")));


extern char *__tzstring (const char *string);


extern size_t __tzname_cur_max __attribute__ ((visibility ("hidden")));


extern int __use_tzfile __attribute__ ((visibility ("hidden")));

extern void __tzfile_read (const char *file, size_t extra,
      char **extrap);
extern void __tzfile_compute (time_t timer, int use_localtime,
         long int *leap_correct, int *leap_hit,
         struct tm *tp);
extern void __tzfile_default (const char *std, const char *dst,
         long int stdoff, long int dstoff);




extern time_t __mktime_internal (struct tm *__tp,
     struct tm *(*__func) (const time_t *,
             struct tm *),
     time_t *__offset);
extern struct tm *__localtime_r (__const time_t *__timer,
     struct tm *__tp) __attribute__ ((visibility ("hidden")));

extern struct tm *__gmtime_r (__const time_t *__restrict __timer,
         struct tm *__restrict __tp);
extern __typeof (__gmtime_r) __gmtime_r __asm__ ("" "__GI___gmtime_r") __attribute__ ((visibility ("hidden")));





extern int __offtime (__const time_t *__timer,
        long int __offset,
        struct tm *__tp);

extern char *__asctime_r (__const struct tm *__tp, char *__buf);
extern void __tzset (void);


extern struct tm *__tz_convert (const time_t *timer, int use_localtime, struct tm *tp);



extern long int __tzname_max (void);

extern int __nanosleep (__const struct timespec *__requested_time,
   struct timespec *__remaining);
extern __typeof (__nanosleep) __nanosleep __asm__ ("" "__GI___nanosleep") __attribute__ ((visibility ("hidden")));
extern int __getdate_r (__const char *__string, struct tm *__resbufp);



extern int __getclktck (void);






enum ptime_locale_status { not, loc, raw };

extern char * __strptime_internal (const char *rp, const char *fmt,
       struct tm *tm,
       enum ptime_locale_status *decided,
       int era_cnt, __locale_t locparam)
     ;


extern double __difftime (time_t time1, time_t time0);
# 114 "../include/time.h"

# 28 "../include/../locale/localeinfo.h" 2
# 1 "../sysdeps/generic/stdint.h" 1
# 27 "../sysdeps/generic/stdint.h"
# 1 "../bits/wchar.h" 1
# 28 "../sysdeps/generic/stdint.h" 2
# 1 "../sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h" 1
# 29 "../sysdeps/generic/stdint.h" 2
# 37 "../sysdeps/generic/stdint.h"
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;



__extension__
typedef long long int int64_t;




typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;

typedef unsigned int uint32_t;





__extension__
typedef unsigned long long int uint64_t;






typedef signed char int_least8_t;
typedef short int int_least16_t;
typedef int int_least32_t;



__extension__
typedef long long int int_least64_t;



typedef unsigned char uint_least8_t;
typedef unsigned short int uint_least16_t;
typedef unsigned int uint_least32_t;



__extension__
typedef unsigned long long int uint_least64_t;






typedef signed char int_fast8_t;





typedef int int_fast16_t;
typedef int int_fast32_t;
__extension__
typedef long long int int_fast64_t;



typedef unsigned char uint_fast8_t;





typedef unsigned int uint_fast16_t;
typedef unsigned int uint_fast32_t;
__extension__
typedef unsigned long long int uint_fast64_t;
# 126 "../sysdeps/generic/stdint.h"
typedef int intptr_t;


typedef unsigned int uintptr_t;
# 138 "../sysdeps/generic/stdint.h"
__extension__
typedef long long int intmax_t;
__extension__
typedef unsigned long long int uintmax_t;
# 29 "../include/../locale/localeinfo.h" 2
# 1 "../include/sys/types.h" 1
# 1 "../posix/sys/types.h" 1
# 29 "../posix/sys/types.h"






typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;




typedef __loff_t loff_t;



typedef __ino_t ino_t;






typedef __ino64_t ino64_t;




typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;





typedef __off_t off_t;






typedef __off64_t off64_t;
# 105 "../posix/sys/types.h"
typedef __id_t id_t;




typedef __ssize_t ssize_t;





typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;





typedef __key_t key_t;
# 137 "../posix/sys/types.h"
typedef __useconds_t useconds_t;



typedef __suseconds_t suseconds_t;





# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 148 "../posix/sys/types.h" 2



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 201 "../posix/sys/types.h"
typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));

typedef int register_t __attribute__ ((__mode__ (__word__)));
# 217 "../posix/sys/types.h"
# 1 "../include/endian.h" 1
# 1 "../string/endian.h" 1
# 37 "../string/endian.h"
# 1 "../sysdeps/powerpc/bits/endian.h" 1
# 38 "../string/endian.h" 2
# 2 "../include/endian.h" 2
# 218 "../posix/sys/types.h" 2


# 1 "../include/sys/select.h" 1

# 1 "../misc/sys/select.h" 1
# 31 "../misc/sys/select.h"
# 1 "../bits/select.h" 1
# 32 "../misc/sys/select.h" 2


# 1 "../sysdeps/unix/sysv/linux/bits/sigset.h" 1
# 23 "../sysdeps/unix/sysv/linux/bits/sigset.h"
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 35 "../misc/sys/select.h" 2



typedef __sigset_t sigset_t;







# 1 "../bits/time.h" 1
# 69 "../bits/time.h"
struct timeval
  {
    __time_t tv_sec;
    __suseconds_t tv_usec;
  };
# 47 "../misc/sys/select.h" 2
# 55 "../misc/sys/select.h"
typedef long int __fd_mask;
# 67 "../misc/sys/select.h"
typedef struct
  {



    __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];





  } fd_set;






typedef __fd_mask fd_mask;
# 99 "../misc/sys/select.h"

# 109 "../misc/sys/select.h"
extern int select (int __nfds, fd_set *__restrict __readfds,
     fd_set *__restrict __writefds,
     fd_set *__restrict __exceptfds,
     struct timeval *__restrict __timeout);
# 121 "../misc/sys/select.h"
extern int pselect (int __nfds, fd_set *__restrict __readfds,
      fd_set *__restrict __writefds,
      fd_set *__restrict __exceptfds,
      const struct timespec *__restrict __timeout,
      const __sigset_t *__restrict __sigmask);



# 3 "../include/sys/select.h" 2


extern int __pselect (int __nfds, fd_set *__readfds,
        fd_set *__writefds, fd_set *__exceptfds,
        const struct timespec *__timeout,
        const __sigset_t *__sigmask);

extern int __select (int __nfds, fd_set *__restrict __readfds,
       fd_set *__restrict __writefds,
       fd_set *__restrict __exceptfds,
       struct timeval *__restrict __timeout);
extern __typeof (__select) __select __asm__ ("" "__GI___select") __attribute__ ((visibility ("hidden")));
# 221 "../posix/sys/types.h" 2


# 1 "../sysdeps/unix/sysv/linux/sys/sysmacros.h" 1
# 29 "../sysdeps/unix/sysv/linux/sys/sysmacros.h"
__extension__
extern __inline unsigned int gnu_dev_major (unsigned long long int __dev)
     __attribute__ ((__nothrow__));
__extension__
extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
     __attribute__ ((__nothrow__));
__extension__
extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
       unsigned int __minor)
     __attribute__ ((__nothrow__));


__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
{
  return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
}

__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
{
  return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
}

__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
{
  return ((__minor & 0xff) | ((__major & 0xfff) << 8)
   | (((unsigned long long int) (__minor & ~0xff)) << 12)
   | (((unsigned long long int) (__major & ~0xfff)) << 32));
}
# 224 "../posix/sys/types.h" 2




typedef __blksize_t blksize_t;






typedef __blkcnt_t blkcnt_t;



typedef __fsblkcnt_t fsblkcnt_t;



typedef __fsfilcnt_t fsfilcnt_t;
# 262 "../posix/sys/types.h"
typedef __blkcnt64_t blkcnt64_t;
typedef __fsblkcnt64_t fsblkcnt64_t;
typedef __fsfilcnt64_t fsfilcnt64_t;





# 1 "../nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h" 1
# 24 "../nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h"
# 1 "../sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h" 1
# 25 "../nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h" 2
# 51 "../nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h"
typedef unsigned long int pthread_t;


typedef union
{
  char __size[36];
  long int __align;
} pthread_attr_t;
# 68 "../nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h"
typedef struct __pthread_internal_slist
{
  struct __pthread_internal_slist *__next;
} __pthread_slist_t;





typedef union
{
  struct __pthread_mutex_s
  {
    int __lock;
    unsigned int __count;
    int __owner;





    int __kind;





    unsigned int __nusers;
    __extension__ union
    {
      int __spins;
      __pthread_slist_t __list;
    };

  } __data;
  char __size[24];
  long int __align;
} pthread_mutex_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_mutexattr_t;




typedef union
{
  struct
  {
    int __lock;
    unsigned int __futex;
    __extension__ unsigned long long int __total_seq;
    __extension__ unsigned long long int __wakeup_seq;
    __extension__ unsigned long long int __woken_seq;
    void *__mutex;
    unsigned int __nwaiters;
    unsigned int __broadcast_seq;
  } __data;
  char __size[48];
  __extension__ long long int __align;
} pthread_cond_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_condattr_t;



typedef unsigned int pthread_key_t;



typedef int pthread_once_t;





typedef union
{
# 171 "../nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h"
  struct
  {
    int __lock;
    unsigned int __nr_readers;
    unsigned int __readers_wakeup;
    unsigned int __writer_wakeup;
    unsigned int __nr_readers_queued;
    unsigned int __nr_writers_queued;


    unsigned int __flags;
    int __writer;
  } __data;

  char __size[32];
  long int __align;
} pthread_rwlock_t;

typedef union
{
  char __size[8];
  long int __align;
} pthread_rwlockattr_t;





typedef volatile int pthread_spinlock_t;




typedef union
{
  char __size[20];
  long int __align;
} pthread_barrier_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_barrierattr_t;
# 271 "../posix/sys/types.h" 2



# 1 "../include/sys/types.h" 2
# 30 "../include/../locale/localeinfo.h" 2

# 1 "../intl/loadinfo.h" 1
# 60 "../intl/loadinfo.h"
struct loaded_l10nfile
{
  const char *filename;
  int decided;

  const void *data;

  struct loaded_l10nfile *next;
  struct loaded_l10nfile *successor[1];
};






extern const char *_nl_normalize_codeset (const char *codeset, size_t name_len);


extern struct loaded_l10nfile *
_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, const char *dirlist, size_t dirlist_len, int mask, const char *language, const char *territory, const char *codeset, const char *normalized_codeset, const char *modifier, const char *filename, int do_allocate);
# 89 "../intl/loadinfo.h"
extern const char *_nl_expand_alias (const char *name);



extern int _nl_explode_name (char *name, const char **language, const char **modifier, const char **territory, const char **codeset, const char **normalized_codeset);
# 32 "../include/../locale/localeinfo.h" 2
# 48 "../include/../locale/localeinfo.h"
struct locale_data
{
  const char *name;
  const char *filedata;
  off_t filesize;
  enum
  {
    ld_malloced,
    ld_mapped,
    ld_archive
  } alloc;




  struct
  {
    void (*cleanup) (struct locale_data *) ;
    union
    {
      void *data;
      struct lc_time_data *time;
      const struct gconv_fcts *ctype;
    };
  } private;

  unsigned int usage_count;

  int use_translit;


  unsigned int nstrings;
  union locale_data_value
  {
    const uint32_t *wstr;
    const char *string;
    unsigned int word;
  }
  values [];
};


enum coll_sort_rule
{
  illegal_0__,
  sort_forward,
  sort_backward,
  illegal_3__,
  sort_position,
  sort_forward_position,
  sort_backward_position,
  sort_mask
};


enum value_type
{
  none,
  string,
  stringarray,
  byte,
  bytearray,
  word,
  stringlist,
  wordarray,
  wstring,
  wstringarray,
  wstringlist
};
# 128 "../include/../locale/localeinfo.h"
struct era_entry
{
  uint32_t direction;
  int32_t offset;
  int32_t start_date[3];
  int32_t stop_date[3];
  const char *era_name;
  const char *era_format;
  const wchar_t *era_wname;
  const wchar_t *era_wformat;
  int absolute_direction;



};



struct lc_time_data
{
  struct era_entry *eras;
  size_t num_eras;
  int era_initialized;

  const char **alt_digits;
  const wchar_t **walt_digits;
  int alt_digits_initialized;
  int walt_digits_initialized;
};




enum
{
  __TOW_toupper = 0,
  __TOW_tolower = 1
};
# 178 "../include/../locale/localeinfo.h"
extern const union catnamestr_t
{
  struct
  {


# 1 "../include/../locale/categories.def" 1
# 42 "../include/../locale/categories.def"
char str62[sizeof ("LC_COLLATE")];
# 68 "../include/../locale/categories.def"
char str137[sizeof ("LC_CTYPE")];
# 140 "../include/../locale/categories.def"
char str189[sizeof ("LC_MONETARY")];
# 192 "../include/../locale/categories.def"
char str203[sizeof ("LC_NUMERIC")];
# 206 "../include/../locale/categories.def"
char str251[sizeof ("LC_TIME")];
# 254 "../include/../locale/categories.def"
char str263[sizeof ("LC_MESSAGES")];
# 265 "../include/../locale/categories.def"
char str272[sizeof ("LC_PAPER")];
# 274 "../include/../locale/categories.def"
char str285[sizeof ("LC_NAME")];
# 287 "../include/../locale/categories.def"
char str304[sizeof ("LC_ADDRESS")];
# 306 "../include/../locale/categories.def"
char str315[sizeof ("LC_TELEPHONE")];
# 317 "../include/../locale/categories.def"
char str323[sizeof ("LC_MEASUREMENT")];







char str345[sizeof ("LC_IDENTIFICATION")];
# 185 "../include/../locale/localeinfo.h" 2

  };
  char str[0];
} _nl_category_names __attribute__ ((visibility ("hidden")));
const uint8_t _nl_category_name_idxs[13] __attribute__ ((visibility ("hidden")));
extern const uint8_t _nl_category_name_sizes[13] __attribute__ ((visibility ("hidden")));


extern const char _nl_C_name[] __attribute__ ((visibility ("hidden")));
extern const char _nl_POSIX_name[] __attribute__ ((visibility ("hidden")));


extern const char _nl_C_codeset[] __attribute__ ((visibility ("hidden")));




extern struct __locale_struct _nl_global_locale __attribute__ ((visibility ("hidden")));




# 1 "../bits/libc-tsd.h" 1
# 45 "../bits/libc-tsd.h"
# 1 "../include/tls.h" 1





# 1 "../nptl/sysdeps/powerpc/tls.h" 1
# 23 "../nptl/sysdeps/powerpc/tls.h"
# 1 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 1
# 20 "../sysdeps/unix/sysv/linux/dl-sysdep.h"
# 1 "../sysdeps/generic/dl-sysdep.h" 1
# 21 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 2
# 24 "../nptl/sysdeps/powerpc/tls.h" 2


# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stdbool.h" 1 3 4
# 27 "../nptl/sysdeps/powerpc/tls.h" 2
# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 28 "../nptl/sysdeps/powerpc/tls.h" 2



typedef union dtv
{
  size_t counter;
  struct
  {
    void *val;
    _Bool is_static;
  } pointer;
} dtv_t;
# 57 "../nptl/sysdeps/powerpc/tls.h"
# 1 "../sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h" 1
# 22 "../sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h"
# 1 "../sysdeps/unix/powerpc/sysdep.h" 1
# 20 "../sysdeps/unix/powerpc/sysdep.h"
# 1 "../sysdeps/unix/sysdep.h" 1
# 19 "../sysdeps/unix/sysdep.h"
# 1 "../sysdeps/generic/sysdep.h" 1
# 20 "../sysdeps/unix/sysdep.h" 2

# 1 "../sysdeps/unix/sysv/linux/sys/syscall.h" 1
# 25 "../sysdeps/unix/sysv/linux/sys/syscall.h"
# 1 "/opt/biarch/gcc42-test/include/asm/unistd.h" 1 3 4





# 1 "/opt/biarch/gcc42-test/include/asm-ppc/unistd.h" 1 3 4
# 7 "/opt/biarch/gcc42-test/include/asm/unistd.h" 2 3 4
# 26 "../sysdeps/unix/sysv/linux/sys/syscall.h" 2
# 22 "../sysdeps/unix/sysdep.h" 2
# 21 "../sysdeps/unix/powerpc/sysdep.h" 2
# 1 "../sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h" 1
# 22 "../sysdeps/unix/powerpc/sysdep.h" 2



# 1 "../sysdeps/powerpc/powerpc32/sysdep.h" 1
# 20 "../sysdeps/powerpc/powerpc32/sysdep.h"
# 1 "../sysdeps/powerpc/sysdep.h" 1
# 21 "../sysdeps/powerpc/powerpc32/sysdep.h" 2
# 26 "../sysdeps/unix/powerpc/sysdep.h" 2
# 23 "../sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h" 2
# 1 "../include/tls.h" 1
# 24 "../sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h" 2
# 56 "../sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h"
# 1 "../include/errno.h" 1


# 1 "../stdlib/errno.h" 1
# 32 "../stdlib/errno.h"




# 1 "../sysdeps/unix/sysv/linux/bits/errno.h" 1
# 25 "../sysdeps/unix/sysv/linux/bits/errno.h"
# 1 "/opt/biarch/gcc42-test/include/linux/errno.h" 1 3 4



# 1 "/opt/biarch/gcc42-test/include/asm/errno.h" 1 3 4





# 1 "/opt/biarch/gcc42-test/include/asm-ppc/errno.h" 1 3 4



# 1 "/opt/biarch/gcc42-test/include/asm-generic/errno.h" 1 3 4



# 1 "/opt/biarch/gcc42-test/include/asm-generic/errno-base.h" 1 3 4
# 5 "/opt/biarch/gcc42-test/include/asm-generic/errno.h" 2 3 4
# 5 "/opt/biarch/gcc42-test/include/asm-ppc/errno.h" 2 3 4
# 7 "/opt/biarch/gcc42-test/include/asm/errno.h" 2 3 4
# 5 "/opt/biarch/gcc42-test/include/linux/errno.h" 2 3 4
# 26 "../sysdeps/unix/sysv/linux/bits/errno.h" 2
# 43 "../sysdeps/unix/sysv/linux/bits/errno.h"
extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 37 "../stdlib/errno.h" 2
# 55 "../stdlib/errno.h"
extern char *program_invocation_name, *program_invocation_short_name;




# 69 "../stdlib/errno.h"
typedef int error_t;
# 4 "../include/errno.h" 2
# 39 "../include/errno.h"
extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__))



;
extern __typeof (__errno_location) __errno_location __asm__ ("" "__GI___errno_location") __attribute__ ((visibility ("hidden")));
# 57 "../sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h" 2
# 58 "../nptl/sysdeps/powerpc/tls.h" 2
# 66 "../nptl/sysdeps/powerpc/tls.h"
# 1 "../nptl/descr.h" 1
# 23 "../nptl/descr.h"
# 1 "../include/limits.h" 1
# 145 "../include/limits.h"
# 1 "../include/bits/posix1_lim.h" 1
# 146 "../include/limits.h" 2



# 1 "../include/bits/posix2_lim.h" 1
# 150 "../include/limits.h" 2
# 24 "../nptl/descr.h" 2
# 1 "../include/sched.h" 1

# 1 "../posix/sched.h" 1
# 32 "../posix/sched.h"
# 1 "../sysdeps/unix/sysv/linux/bits/sched.h" 1
# 65 "../sysdeps/unix/sysv/linux/bits/sched.h"
struct sched_param
  {
    int __sched_priority;
  };





extern int clone (int (*__fn) (void *__arg), void *__child_stack,
    int __flags, void *__arg, ...) __attribute__ ((__nothrow__));


extern int unshare (int __flags) __attribute__ ((__nothrow__));










struct __sched_param
  {
    int __sched_priority;
  };
# 104 "../sysdeps/unix/sysv/linux/bits/sched.h"
typedef unsigned long int __cpu_mask;






typedef struct
{
  __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
} cpu_set_t;
# 33 "../posix/sched.h" 2







extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
     __attribute__ ((__nothrow__));


extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __attribute__ ((__nothrow__));


extern int sched_setscheduler (__pid_t __pid, int __policy,
          __const struct sched_param *__param) __attribute__ ((__nothrow__));


extern int sched_getscheduler (__pid_t __pid) __attribute__ ((__nothrow__));


extern int sched_yield (void) __attribute__ ((__nothrow__));


extern int sched_get_priority_max (int __algorithm) __attribute__ ((__nothrow__));


extern int sched_get_priority_min (int __algorithm) __attribute__ ((__nothrow__));


extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __attribute__ ((__nothrow__));
# 76 "../posix/sched.h"
extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
         __const cpu_set_t *__cpuset) __attribute__ ((__nothrow__));


extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
         cpu_set_t *__cpuset) __attribute__ ((__nothrow__));



# 3 "../include/sched.h" 2


extern int __sched_setparam (__pid_t __pid,
        __const struct sched_param *__param);
extern int __sched_getparam (__pid_t __pid, struct sched_param *__param);
extern int __sched_setscheduler (__pid_t __pid, int __policy,
     __const struct sched_param *__param);
extern __typeof (__sched_setscheduler) __sched_setscheduler __asm__ ("" "__GI___sched_setscheduler") __attribute__ ((visibility ("hidden")));
extern int __sched_getscheduler (__pid_t __pid);
extern int __sched_yield (void);
extern __typeof (__sched_yield) __sched_yield __asm__ ("" "__GI___sched_yield") __attribute__ ((visibility ("hidden")));
extern int __sched_get_priority_max (int __algorithm);
extern int __sched_get_priority_min (int __algorithm);
extern int __sched_rr_get_interval (__pid_t __pid, struct timespec *__t);


extern int __clone (int (*__fn) (void *__arg), void *__child_stack,
      int __flags, void *__arg, ...);
extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base,
       size_t __child_stack_size, int __flags, void *__arg, ...);
# 25 "../nptl/descr.h" 2
# 1 "../include/setjmp.h" 1

# 1 "../setjmp/setjmp.h" 1
# 28 "../setjmp/setjmp.h"


# 1 "../sysdeps/powerpc/bits/setjmp.h" 1
# 33 "../sysdeps/powerpc/bits/setjmp.h"
# 1 "../sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h" 1
# 34 "../sysdeps/powerpc/bits/setjmp.h" 2
# 48 "../sysdeps/powerpc/bits/setjmp.h"
typedef long int __jmp_buf[64 + (12 * 4)] __attribute__ ((__aligned__ (16)));
# 31 "../setjmp/setjmp.h" 2
# 1 "../sysdeps/unix/sysv/linux/bits/sigset.h" 1
# 32 "../setjmp/setjmp.h" 2




typedef struct __jmp_buf_tag
  {




    __jmp_buf __jmpbuf;
    int __mask_was_saved;
    __sigset_t __saved_mask;
  } jmp_buf[1];




extern int setjmp (jmp_buf __env) __attribute__ ((__nothrow__));







extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __attribute__ ((__nothrow__));




extern int _setjmp (struct __jmp_buf_tag __env[1]) __attribute__ ((__nothrow__));
# 76 "../setjmp/setjmp.h"




extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
     __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));







extern void _longjmp (struct __jmp_buf_tag __env[1], int __val)
     __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));







typedef struct __jmp_buf_tag sigjmp_buf[1];
# 108 "../setjmp/setjmp.h"
extern void siglongjmp (sigjmp_buf __env, int __val)
     __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));



# 3 "../include/setjmp.h" 2




extern void __longjmp (__jmp_buf __env, int __val)
     __attribute__ ((__noreturn__));





extern int __sigjmp_save (jmp_buf __env, int __savemask);

extern void _longjmp_unwind (jmp_buf env, int val);

extern void __libc_siglongjmp (sigjmp_buf env, int val)
          __attribute__ ((noreturn));
extern void __libc_longjmp (sigjmp_buf env, int val)
     __attribute__ ((noreturn));
extern __typeof (__libc_longjmp) __libc_longjmp __asm__ ("" "__GI___libc_longjmp") __attribute__ ((visibility ("hidden")));

extern __typeof (_setjmp) _setjmp __asm__ ("" "__GI__setjmp") __attribute__ ((visibility ("hidden")));
extern __typeof (__sigsetjmp) __sigsetjmp __asm__ ("" "__GI___sigsetjmp") __attribute__ ((visibility ("hidden")));
# 26 "../nptl/descr.h" 2

# 1 "../include/sys/types.h" 1
# 28 "../nptl/descr.h" 2
# 1 "../sysdeps/powerpc/powerpc32/hp-timing.h" 1
# 70 "../sysdeps/powerpc/powerpc32/hp-timing.h"
typedef unsigned long long int hp_timing_t;
# 29 "../nptl/descr.h" 2
# 1 "../nptl/sysdeps/pthread/list.h" 1
# 29 "../nptl/sysdeps/pthread/list.h"
typedef struct list_head
{
  struct list_head *next;
  struct list_head *prev;
} list_t;
# 46 "../nptl/sysdeps/pthread/list.h"
static inline void
list_add (list_t *newp, list_t *head)
{
  head->next->prev = newp;
  newp->next = head->next;
  newp->prev = head;
  head->next = newp;
}



static inline void
list_add_tail (list_t *newp, list_t *head)
{
  head->prev->next = newp;
  newp->next = head;
  newp->prev = head->prev;
  head->prev = newp;
}



static inline void
list_del (list_t *elem)
{
  elem->next->prev = elem->prev;
  elem->prev->next = elem->next;
}



static inline void
list_splice (list_t *add, list_t *head)
{

  if (add != add->next)
    {
      add->next->prev = head;
      add->prev->next = head->next;
      head->next->prev = add->prev;
      head->next = add->next;
    }
}
# 30 "../nptl/descr.h" 2
# 1 "../nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h" 1
# 24 "../nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h"
# 1 "../sysdeps/unix/sysv/linux/sys/param.h" 1
# 22 "../sysdeps/unix/sysv/linux/sys/param.h"
# 1 "../include/limits.h" 1
# 145 "../include/limits.h"
# 1 "../include/bits/posix1_lim.h" 1
# 146 "../include/limits.h" 2



# 1 "../include/bits/posix2_lim.h" 1
# 150 "../include/limits.h" 2
# 23 "../sysdeps/unix/sysv/linux/sys/param.h" 2

# 1 "/opt/biarch/gcc42-test/include/linux/param.h" 1 3 4



# 1 "/opt/biarch/gcc42-test/include/asm/param.h" 1 3 4





# 1 "/opt/biarch/gcc42-test/include/asm-ppc/param.h" 1 3 4
# 7 "/opt/biarch/gcc42-test/include/asm/param.h" 2 3 4
# 5 "/opt/biarch/gcc42-test/include/linux/param.h" 2 3 4
# 25 "../sysdeps/unix/sysv/linux/sys/param.h" 2
# 42 "../sysdeps/unix/sysv/linux/sys/param.h"
# 1 "../include/sys/types.h" 1
# 43 "../sysdeps/unix/sysv/linux/sys/param.h" 2
# 25 "../nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h" 2

# 1 "../include/atomic.h" 1
# 24 "../include/atomic.h"
# 1 "../include/stdlib.h" 1






# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 8 "../include/stdlib.h" 2
# 1 "../stdlib/stdlib.h" 1
# 33 "../stdlib/stdlib.h"
# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 34 "../stdlib/stdlib.h" 2








# 1 "../sysdeps/unix/sysv/linux/bits/waitflags.h" 1
# 43 "../stdlib/stdlib.h" 2
# 1 "../bits/waitstatus.h" 1
# 65 "../bits/waitstatus.h"
# 1 "../include/endian.h" 1
# 66 "../bits/waitstatus.h" 2

union wait
  {
    int w_status;
    struct
      {







 unsigned int:16;
 unsigned int __w_retcode:8;
 unsigned int __w_coredump:1;
 unsigned int __w_termsig:7;

      } __wait_terminated;
    struct
      {






 unsigned int:16;
 unsigned int __w_stopsig:8;
 unsigned int __w_stopval:8;

      } __wait_stopped;
  };
# 44 "../stdlib/stdlib.h" 2
# 68 "../stdlib/stdlib.h"
typedef union
  {
    union wait *__uptr;
    int *__iptr;
  } __WAIT_STATUS __attribute__ ((__transparent_union__));
# 96 "../stdlib/stdlib.h"


typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;







__extension__ typedef struct
  {
    long long int quot;
    long long int rem;
  } lldiv_t;


# 140 "../stdlib/stdlib.h"
extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;




extern double atof (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern int atoi (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern long int atol (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;





__extension__ extern long long int atoll (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;





extern double strtod (__const char *__restrict __nptr,
        char **__restrict __endptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





extern float strtof (__const char *__restrict __nptr,
       char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern long double strtold (__const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





extern long int strtol (__const char *__restrict __nptr,
   char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern unsigned long int strtoul (__const char *__restrict __nptr,
      char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




__extension__
extern long long int strtoq (__const char *__restrict __nptr,
        char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
           char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





__extension__
extern long long int strtoll (__const char *__restrict __nptr,
         char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
     char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

# 236 "../stdlib/stdlib.h"
# 1 "../include/xlocale.h" 1
# 237 "../stdlib/stdlib.h" 2



extern long int strtol_l (__const char *__restrict __nptr,
     char **__restrict __endptr, int __base,
     __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;

extern unsigned long int strtoul_l (__const char *__restrict __nptr,
        char **__restrict __endptr,
        int __base, __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;

__extension__
extern long long int strtoll_l (__const char *__restrict __nptr,
    char **__restrict __endptr, int __base,
    __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;

__extension__
extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;

extern double strtod_l (__const char *__restrict __nptr,
   char **__restrict __endptr, __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;

extern float strtof_l (__const char *__restrict __nptr,
         char **__restrict __endptr, __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;

extern long double strtold_l (__const char *__restrict __nptr,
         char **__restrict __endptr,
         __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;






extern double __strtod_internal (__const char *__restrict __nptr,
     char **__restrict __endptr, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern float __strtof_internal (__const char *__restrict __nptr,
    char **__restrict __endptr, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern long double __strtold_internal (__const char *__restrict __nptr,
           char **__restrict __endptr,
           int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern long int __strtol_internal (__const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;



extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
          char **__restrict __endptr,
          int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
      char **__restrict __endptr,
      int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;



__extension__
extern unsigned long long int __strtoull_internal (__const char *
         __restrict __nptr,
         char **__restrict __endptr,
         int __base, int __group)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;








extern __inline double
__attribute__ ((__nothrow__)) strtod (__const char *__restrict __nptr, char **__restrict __endptr)
{
  return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
__attribute__ ((__nothrow__)) strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base)

{
  return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
__attribute__ ((__nothrow__)) strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base)

{
  return __strtoul_internal (__nptr, __endptr, __base, 0);
}




extern __inline float
__attribute__ ((__nothrow__)) strtof (__const char *__restrict __nptr, char **__restrict __endptr)
{
  return __strtof_internal (__nptr, __endptr, 0);
}

extern __inline long double
__attribute__ ((__nothrow__)) strtold (__const char *__restrict __nptr, char **__restrict __endptr)
{
  return __strtold_internal (__nptr, __endptr, 0);
}





__extension__ extern __inline long long int
__attribute__ ((__nothrow__)) strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base)

{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base)

{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}




__extension__ extern __inline long long int
__attribute__ ((__nothrow__)) strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base)

{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base)

{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}




extern __inline double
__attribute__ ((__nothrow__)) atof (__const char *__nptr)
{
  return strtod (__nptr, (char **) ((void *)0));
}
extern __inline int
__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
{
  return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline long int
__attribute__ ((__nothrow__)) atol (__const char *__nptr)
{
  return strtol (__nptr, (char **) ((void *)0), 10);
}




__extension__ extern __inline long long int
__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
{
  return strtoll (__nptr, (char **) ((void *)0), 10);
}

# 429 "../stdlib/stdlib.h"
extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;


extern long int a64l (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;




# 1 "../include/sys/types.h" 1
# 439 "../stdlib/stdlib.h" 2






extern long int random (void) __attribute__ ((__nothrow__));


extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));





extern char *initstate (unsigned int __seed, char *__statebuf,
   size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));



extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf,
       int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern int srandom_r (unsigned int __seed, struct random_data *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
   size_t __statelen,
   struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));

extern int setstate_r (char *__restrict __statebuf,
         struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));






extern int rand (void) __attribute__ ((__nothrow__));

extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));




extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));







extern double drand48 (void) __attribute__ ((__nothrow__));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern long int lrand48 (void) __attribute__ ((__nothrow__));
extern long int nrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern long int mrand48 (void) __attribute__ ((__nothrow__));
extern long int jrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





struct drand48_data
  {
    unsigned short int __x[3];
    unsigned short int __old_x[3];
    unsigned short int __c;
    unsigned short int __init;
    unsigned long long int __a;
  };


extern int drand48_r (struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int erand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int lrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int nrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int mrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int jrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

extern int seed48_r (unsigned short int __seed16v[3],
       struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern int lcong48_r (unsigned short int __param[7],
        struct drand48_data *__buffer)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));









extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;

extern void *calloc (size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;







extern void *realloc (void *__ptr, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));

extern void free (void *__ptr) __attribute__ ((__nothrow__));




extern void cfree (void *__ptr) __attribute__ ((__nothrow__));



# 1 "../include/alloca.h" 1


# 1 "../stdlib/alloca.h" 1
# 25 "../stdlib/alloca.h"
# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 26 "../stdlib/alloca.h" 2







extern void *alloca (size_t __size) __attribute__ ((__nothrow__));






# 4 "../include/alloca.h" 2
# 1 "../sysdeps/powerpc/stackinfo.h" 1
# 5 "../include/alloca.h" 2




extern void *__alloca (size_t __size);





extern int __libc_use_alloca (size_t size) __attribute__ ((const));
extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const));



# 1 "../nptl/sysdeps/pthread/allocalim.h" 1
# 20 "../nptl/sysdeps/pthread/allocalim.h"
# 1 "../include/alloca.h" 1
# 21 "../nptl/sysdeps/pthread/allocalim.h" 2
# 1 "../include/limits.h" 1
# 145 "../include/limits.h"
# 1 "../include/bits/posix1_lim.h" 1
# 146 "../include/limits.h" 2



# 1 "../include/bits/posix2_lim.h" 1
# 150 "../include/limits.h" 2
# 22 "../nptl/sysdeps/pthread/allocalim.h" 2


extern int
__inline __attribute__ ((__always_inline__))
__libc_use_alloca (size_t size)
{
  return (__builtin_expect (size <= 16384 / 4, 1)
   || __libc_alloca_cutoff (size));
}
# 21 "../include/alloca.h" 2
# 613 "../stdlib/stdlib.h" 2




extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;




extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));






extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));






extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));






extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




extern char *__secure_getenv (__const char *__name)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





extern int setenv (__const char *__name, __const char *__value, int __replace)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));


extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));






extern int clearenv (void) __attribute__ ((__nothrow__));
# 698 "../stdlib/stdlib.h"
extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 709 "../stdlib/stdlib.h"
extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 719 "../stdlib/stdlib.h"
extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 729 "../stdlib/stdlib.h"
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;








extern int system (__const char *__command) ;







extern char *canonicalize_file_name (__const char *__name)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 757 "../stdlib/stdlib.h"
extern char *realpath (__const char *__restrict __name,
         char *__restrict __resolved) __attribute__ ((__nothrow__)) ;






typedef int (*__compar_fn_t) (__const void *, __const void *);


typedef __compar_fn_t comparison_fn_t;






extern void *bsearch (__const void *__key, __const void *__base,
        size_t __nmemb, size_t __size, __compar_fn_t __compar)
     __attribute__ ((__nonnull__ (1, 2, 5))) ;



extern void qsort (void *__base, size_t __nmemb, size_t __size,
     __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));



extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;



__extension__ extern long long int llabs (long long int __x)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;







extern div_t div (int __numer, int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern ldiv_t ldiv (long int __numer, long int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;




__extension__ extern lldiv_t lldiv (long long int __numer,
        long long int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;

# 822 "../stdlib/stdlib.h"
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *gcvt (double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;




extern char *qecvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qfcvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;




extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));

extern int qecvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qfcvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));







extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;


extern int mbtowc (wchar_t *__restrict __pwc,
     __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;


extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
   __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));

extern size_t wcstombs (char *__restrict __s,
   __const wchar_t *__restrict __pwcs, size_t __n)
     __attribute__ ((__nothrow__));








extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 910 "../stdlib/stdlib.h"
extern int getsubopt (char **__restrict __optionp,
        char *__const *__restrict __tokens,
        char **__restrict __valuep)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;





extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));







extern int posix_openpt (int __oflag) ;







extern int grantpt (int __fd) __attribute__ ((__nothrow__));



extern int unlockpt (int __fd) __attribute__ ((__nothrow__));




extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ;






extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));


extern int getpt (void);






extern int getloadavg (double __loadavg[], int __nelem)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 978 "../stdlib/stdlib.h"

# 9 "../include/stdlib.h" 2






extern __typeof (strtol_l) __strtol_l;
extern __typeof (strtoul_l) __strtoul_l;
extern __typeof (strtoll_l) __strtoll_l;
extern __typeof (strtoull_l) __strtoull_l;
extern __typeof (strtod_l) __strtod_l;
extern __typeof (strtof_l) __strtof_l;
extern __typeof (strtold_l) __strtold_l;

extern __typeof (exit) exit __asm__ ("" "__GI_exit") __attribute__ ((visibility ("hidden")));
extern __typeof (abort) abort __asm__ ("" "__GI_abort") __attribute__ ((visibility ("hidden")));
extern __typeof (getenv) getenv __asm__ ("" "__GI_getenv") __attribute__ ((visibility ("hidden")));
extern __typeof (bsearch) bsearch __asm__ ("" "__GI_bsearch") __attribute__ ((visibility ("hidden")));
extern __typeof (qsort) qsort __asm__ ("" "__GI_qsort") __attribute__ ((visibility ("hidden")));
extern __typeof (lrand48_r) lrand48_r __asm__ ("" "__GI_lrand48_r") __attribute__ ((visibility ("hidden")));
extern __typeof (wctomb) wctomb __asm__ ("" "__GI_wctomb") __attribute__ ((visibility ("hidden")));
extern __typeof (__secure_getenv) __secure_getenv __asm__ ("" "__GI___secure_getenv") __attribute__ ((visibility ("hidden")));
extern __typeof (__strtof_internal) __strtof_internal __asm__ ("" "__GI___strtof_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__strtod_internal) __strtod_internal __asm__ ("" "__GI___strtod_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__strtold_internal) __strtold_internal __asm__ ("" "__GI___strtold_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__strtol_internal) __strtol_internal __asm__ ("" "__GI___strtol_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__strtoll_internal) __strtoll_internal __asm__ ("" "__GI___strtoll_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__strtoul_internal) __strtoul_internal __asm__ ("" "__GI___strtoul_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__strtoull_internal) __strtoull_internal __asm__ ("" "__GI___strtoull_internal") __attribute__ ((visibility ("hidden")));

extern long int __random (void);
extern void __srandom (unsigned int __seed);
extern char *__initstate (unsigned int __seed, char *__statebuf,
     size_t __statelen);
extern char *__setstate (char *__statebuf);
extern int __random_r (struct random_data *__buf, int32_t *__result);
extern int __srandom_r (unsigned int __seed, struct random_data *__buf);
extern int __initstate_r (unsigned int __seed, char *__statebuf,
     size_t __statelen, struct random_data *__buf);
extern int __setstate_r (char *__statebuf, struct random_data *__buf);
extern int __rand_r (unsigned int *__seed);
extern int __erand48_r (unsigned short int __xsubi[3],
   struct drand48_data *__buffer, double *__result);
extern int __nrand48_r (unsigned short int __xsubi[3],
   struct drand48_data *__buffer,
   long int *__result);
extern int __jrand48_r (unsigned short int __xsubi[3],
   struct drand48_data *__buffer,
   long int *__result);
extern int __srand48_r (long int __seedval,
   struct drand48_data *__buffer);
extern int __seed48_r (unsigned short int __seed16v[3],
         struct drand48_data *__buffer);
extern int __lcong48_r (unsigned short int __param[7],
   struct drand48_data *__buffer);


extern int __drand48_iterate (unsigned short int __xsubi[3],
         struct drand48_data *__buffer);


extern struct drand48_data __libc_drand48_data __attribute__ ((visibility ("hidden")));

extern int __setenv (__const char *__name, __const char *__value,
       int __replace);
extern int __unsetenv (__const char *__name);
extern int __clearenv (void);
extern char *__canonicalize_file_name (__const char *__name);
extern char *__realpath (__const char *__name, char *__resolved);
extern int __ptsname_r (int __fd, char *__buf, size_t __buflen);
extern int __getpt (void);
extern int __posix_openpt (int __oflag);

extern int __add_to_environ (const char *name, const char *value,
        const char *combines, int replace);

extern void _quicksort (void *const pbase, size_t total_elems,
   size_t size, __compar_fn_t cmp);

extern int __on_exit (void (*__func) (int __status, void *__arg), void *__arg);

extern int __cxa_atexit (void (*func) (void *), void *arg, void *d);
extern int __cxa_atexit_internal (void (*func) (void *), void *arg, void *d)
     __attribute__ ((visibility ("hidden")));

extern void __cxa_finalize (void *d);

extern int __posix_memalign (void **memptr, size_t alignment, size_t size);

extern void *__libc_memalign (size_t alignment, size_t size)
     __attribute__ ((__malloc__));

extern int __libc_system (const char *line);

extern double ____strtod_l_internal (__const char *__restrict __nptr,
         char **__restrict __endptr, int __group,
         __locale_t __loc);
extern float ____strtof_l_internal (__const char *__restrict __nptr,
        char **__restrict __endptr, int __group,
        __locale_t __loc);
extern long double ____strtold_l_internal (__const char *__restrict __nptr,
        char **__restrict __endptr,
        int __group, __locale_t __loc);
extern long int ____strtol_l_internal (__const char *__restrict __nptr,
           char **__restrict __endptr,
           int __base, int __group,
           __locale_t __loc);
extern unsigned long int ____strtoul_l_internal (__const char *
       __restrict __nptr,
       char **__restrict __endptr,
       int __base, int __group,
       __locale_t __loc);
__extension__
extern long long int ____strtoll_l_internal (__const char *__restrict __nptr,
          char **__restrict __endptr,
          int __base, int __group,
          __locale_t __loc);
__extension__
extern unsigned long long int ____strtoull_l_internal (__const char *
             __restrict __nptr,
             char **
             __restrict __endptr,
             int __base, int __group,
             __locale_t __loc);

extern __typeof (____strtof_l_internal) ____strtof_l_internal __asm__ ("" "__GI_____strtof_l_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (____strtod_l_internal) ____strtod_l_internal __asm__ ("" "__GI_____strtod_l_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (____strtold_l_internal) ____strtold_l_internal __asm__ ("" "__GI_____strtold_l_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (____strtol_l_internal) ____strtol_l_internal __asm__ ("" "__GI_____strtol_l_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (____strtoll_l_internal) ____strtoll_l_internal __asm__ ("" "__GI_____strtoll_l_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (____strtoul_l_internal) ____strtoul_l_internal __asm__ ("" "__GI_____strtoul_l_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (____strtoull_l_internal) ____strtoull_l_internal __asm__ ("" "__GI_____strtoull_l_internal") __attribute__ ((visibility ("hidden")));

extern __inline double
__attribute__ ((__nothrow__)) __strtod_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc)

{
  return ____strtod_l_internal (__nptr, __endptr, 0, __loc);
}
extern __inline long int
__attribute__ ((__nothrow__)) __strtol_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc)

{
  return ____strtol_l_internal (__nptr, __endptr, __base, 0, __loc);
}
extern __inline unsigned long int
__attribute__ ((__nothrow__)) __strtoul_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc)

{
  return ____strtoul_l_internal (__nptr, __endptr, __base, 0, __loc);
}
extern __inline float
__attribute__ ((__nothrow__)) __strtof_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc)

{
  return ____strtof_l_internal (__nptr, __endptr, 0, __loc);
}
extern __inline long double
__attribute__ ((__nothrow__)) __strtold_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc)

{
  return ____strtold_l_internal (__nptr, __endptr, 0, __loc);
}
__extension__ extern __inline long long int
__attribute__ ((__nothrow__)) __strtoll_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc)

{
  return ____strtoll_l_internal (__nptr, __endptr, __base, 0, __loc);
}
__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) __strtoull_l (__const char * __restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc)

{
  return ____strtoull_l_internal (__nptr, __endptr, __base, 0, __loc);
}

extern char *__ecvt (double __value, int __ndigit, int *__restrict __decpt,
       int *__restrict __sign);
extern char *__fcvt (double __value, int __ndigit, int *__restrict __decpt,
       int *__restrict __sign);
extern char *__gcvt (double __value, int __ndigit, char *__buf);
extern int __ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
       int *__restrict __sign, char *__restrict __buf,
       size_t __len);
extern int __fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
       int *__restrict __sign, char *__restrict __buf,
       size_t __len);
extern char *__qecvt (long double __value, int __ndigit,
        int *__restrict __decpt, int *__restrict __sign);
extern char *__qfcvt (long double __value, int __ndigit,
        int *__restrict __decpt, int *__restrict __sign);
extern char *__qgcvt (long double __value, int __ndigit, char *__buf);
extern int __qecvt_r (long double __value, int __ndigit,
        int *__restrict __decpt, int *__restrict __sign,
        char *__restrict __buf, size_t __len);
extern int __qfcvt_r (long double __value, int __ndigit,
        int *__restrict __decpt, int *__restrict __sign,
        char *__restrict __buf, size_t __len);
# 217 "../include/stdlib.h"
extern void *__default_morecore (ptrdiff_t) __attribute__ ((__nothrow__));
extern __typeof (__default_morecore) __default_morecore __asm__ ("" "__GI___default_morecore") __attribute__ ((visibility ("hidden")));


# 25 "../include/atomic.h" 2

# 1 "../sysdeps/powerpc/powerpc32/bits/atomic.h" 1
# 118 "../sysdeps/powerpc/powerpc32/bits/atomic.h"
# 1 "../sysdeps/powerpc/bits/atomic.h" 1
# 32 "../sysdeps/powerpc/bits/atomic.h"
typedef int32_t atomic32_t;
typedef uint32_t uatomic32_t;
typedef int_fast32_t atomic_fast32_t;
typedef uint_fast32_t uatomic_fast32_t;

typedef int64_t atomic64_t;
typedef uint64_t uatomic64_t;
typedef int_fast64_t atomic_fast64_t;
typedef uint_fast64_t uatomic_fast64_t;

typedef intptr_t atomicptr_t;
typedef uintptr_t uatomicptr_t;
typedef intmax_t atomic_max_t;
typedef uintmax_t uatomic_max_t;
# 118 "../sysdeps/powerpc/powerpc32/bits/atomic.h" 2
# 27 "../include/atomic.h" 2
# 27 "../nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h" 2
# 158 "../nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h"
extern void __lll_lock_wait (int *futex) __attribute__ ((visibility ("hidden")));
extern int __lll_robust_lock_wait (int *futex) __attribute__ ((visibility ("hidden")));
# 199 "../nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h"
extern int __lll_timedlock_wait
  (int *futex, const struct timespec *) __attribute__ ((visibility ("hidden")));
extern int __lll_robust_timedlock_wait
  (int *futex, const struct timespec *) __attribute__ ((visibility ("hidden")));
# 256 "../nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h"
typedef int lll_lock_t;





extern int lll_unlock_wake_cb (int *__futex) __attribute__ ((visibility ("hidden")));
# 285 "../nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h"
extern int __lll_timedwait_tid (int *, const struct timespec *)
     __attribute__ ((visibility ("hidden")));
# 299 "../nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h"
extern void __lll_cond_wait (pthread_cond_t *cond)
     __attribute__ ((visibility ("hidden")));
extern int __lll_cond_timedwait (pthread_cond_t *cond,
     const struct timespec *abstime)
     __attribute__ ((visibility ("hidden")));
extern void __lll_cond_wake (pthread_cond_t *cond)
     __attribute__ ((visibility ("hidden")));
extern void __lll_cond_broadcast (pthread_cond_t *cond)
     __attribute__ ((visibility ("hidden")));
# 31 "../nptl/descr.h" 2
# 1 "../nptl/sysdeps/powerpc/pthreaddef.h" 1
# 32 "../nptl/descr.h" 2
# 1 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 1
# 20 "../sysdeps/unix/sysv/linux/dl-sysdep.h"
# 1 "../sysdeps/generic/dl-sysdep.h" 1
# 21 "../sysdeps/unix/sysv/linux/dl-sysdep.h" 2
# 33 "../nptl/descr.h" 2
# 1 "../nptl/../nptl_db/thread_db.h" 1
# 26 "../nptl/../nptl_db/thread_db.h"
# 1 "../include/pthread.h" 1
# 1 "../nptl/sysdeps/pthread/pthread.h" 1
# 27 "../nptl/sysdeps/pthread/pthread.h"
# 1 "../include/signal.h" 1


# 1 "../signal/signal.h" 1
# 31 "../signal/signal.h"


# 1 "../sysdeps/unix/sysv/linux/bits/sigset.h" 1
# 34 "../signal/signal.h" 2
# 400 "../signal/signal.h"

# 4 "../include/signal.h" 2
# 28 "../nptl/sysdeps/pthread/pthread.h" 2


# 1 "../sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h" 1
# 31 "../nptl/sysdeps/pthread/pthread.h" 2



enum
{
  PTHREAD_CREATE_JOINABLE,

  PTHREAD_CREATE_DETACHED

};



enum
{
  PTHREAD_MUTEX_TIMED_NP,
  PTHREAD_MUTEX_RECURSIVE_NP,
  PTHREAD_MUTEX_ERRORCHECK_NP,
  PTHREAD_MUTEX_ADAPTIVE_NP

  ,
  PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
  PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
  PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
  PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL



  , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP

};




enum
{
  PTHREAD_MUTEX_STALLED_NP,
  PTHREAD_MUTEX_ROBUST_NP
};





enum
{
  PTHREAD_PRIO_NONE,
  PTHREAD_PRIO_INHERIT,
  PTHREAD_PRIO_PROTECT
};
# 113 "../nptl/sysdeps/pthread/pthread.h"
enum
{
  PTHREAD_RWLOCK_PREFER_READER_NP,
  PTHREAD_RWLOCK_PREFER_WRITER_NP,
  PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
  PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
};
# 143 "../nptl/sysdeps/pthread/pthread.h"
enum
{
  PTHREAD_INHERIT_SCHED,

  PTHREAD_EXPLICIT_SCHED

};



enum
{
  PTHREAD_SCOPE_SYSTEM,

  PTHREAD_SCOPE_PROCESS

};



enum
{
  PTHREAD_PROCESS_PRIVATE,

  PTHREAD_PROCESS_SHARED

};
# 178 "../nptl/sysdeps/pthread/pthread.h"
struct _pthread_cleanup_buffer
{
  void (*__routine) (void *);
  void *__arg;
  int __canceltype;
  struct _pthread_cleanup_buffer *__prev;
};


enum
{
  PTHREAD_CANCEL_ENABLE,

  PTHREAD_CANCEL_DISABLE

};
enum
{
  PTHREAD_CANCEL_DEFERRED,

  PTHREAD_CANCEL_ASYNCHRONOUS

};
# 216 "../nptl/sysdeps/pthread/pthread.h"





extern int pthread_create (pthread_t *__restrict __newthread,
      __const pthread_attr_t *__restrict __attr,
      void *(*__start_routine) (void *),
      void *__restrict __arg) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));





extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));







extern int pthread_join (pthread_t __th, void **__thread_return);




extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __attribute__ ((__nothrow__));







extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
     __const struct timespec *__abstime);






extern int pthread_detach (pthread_t __th) __attribute__ ((__nothrow__));



extern pthread_t pthread_self (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) __attribute__ ((__nothrow__));







extern int pthread_attr_init (pthread_attr_t *__attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_attr_destroy (pthread_attr_t *__attr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
     int *__detachstate)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
     int __detachstate)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr,
          size_t *__guardsize)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
          size_t __guardsize)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
           __attr,
           struct sched_param *__restrict __param)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
           __const struct sched_param *__restrict
           __param) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
     __attr, int *__restrict __policy)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
      __attr, int *__restrict __inherit)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
      int __inherit)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
      int *__restrict __scope)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
          __attr, void **__restrict __stackaddr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));





extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
          void *__stackaddr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));


extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
          __attr, size_t *__restrict __stacksize)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));




extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
          size_t __stacksize)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
      void **__restrict __stackaddr,
      size_t *__restrict __stacksize)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3)));




extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
      size_t __stacksize) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
     size_t __cpusetsize,
     __const cpu_set_t *__cpuset)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));



extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr,
     size_t __cpusetsize,
     cpu_set_t *__cpuset)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));





extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));







extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
      __const struct sched_param *__param)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));


extern int pthread_getschedparam (pthread_t __target_thread,
      int *__restrict __policy,
      struct sched_param *__restrict __param)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));


extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
     __attribute__ ((__nothrow__));




extern int pthread_getconcurrency (void) __attribute__ ((__nothrow__));


extern int pthread_setconcurrency (int __level) __attribute__ ((__nothrow__));







extern int pthread_yield (void) __attribute__ ((__nothrow__));




extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
       __const cpu_set_t *__cpuset)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));


extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
       cpu_set_t *__cpuset)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
# 462 "../nptl/sysdeps/pthread/pthread.h"
extern int pthread_once (pthread_once_t *__once_control,
    void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
# 474 "../nptl/sysdeps/pthread/pthread.h"
extern int pthread_setcancelstate (int __state, int *__oldstate);



extern int pthread_setcanceltype (int __type, int *__oldtype);


extern int pthread_cancel (pthread_t __th);




extern void pthread_testcancel (void);




typedef struct
{
  struct
  {
    __jmp_buf __cancel_jmp_buf;
    int __mask_was_saved;
  } __cancel_jmp_buf[1];
  void *__pad[4];
} __pthread_unwind_buf_t __attribute__ ((__aligned__));
# 508 "../nptl/sysdeps/pthread/pthread.h"
struct __pthread_cleanup_frame
{
  void (*__cancel_routine) (void *);
  void *__cancel_arg;
  int __do_it;
  int __cancel_type;
};
# 648 "../nptl/sysdeps/pthread/pthread.h"
extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
     ;
# 659 "../nptl/sysdeps/pthread/pthread.h"
extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
  ;
# 682 "../nptl/sysdeps/pthread/pthread.h"
extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf)
     ;
# 694 "../nptl/sysdeps/pthread/pthread.h"
extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf)
  ;



extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
     __attribute__ ((__noreturn__))



     ;



struct __jmp_buf_tag;
extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) __attribute__ ((__nothrow__));





extern int pthread_mutex_init (pthread_mutex_t *__mutex,
          __const pthread_mutexattr_t *__mutexattr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
                                    __const struct timespec *__restrict
                                    __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));



extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));




extern int pthread_mutex_getprioceiling (__const pthread_mutex_t *
      __restrict __mutex,
      int *__restrict __prioceiling)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));



extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
      int __prioceiling,
      int *__restrict __old_ceiling)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));





extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));







extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
      __restrict __attr,
      int *__restrict __pshared)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
      int __pshared)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
          __attr, int *__restrict __kind)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));




extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
       __restrict __attr,
       int *__restrict __protocol)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));



extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
       int __protocol)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t *
          __restrict __attr,
          int *__restrict __prioceiling)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
          int __prioceiling)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));




extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr,
        int *__robustness)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
        int __robustness)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 842 "../nptl/sysdeps/pthread/pthread.h"
extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
    __const pthread_rwlockattr_t *__restrict
    __attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
  __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
           __const struct timespec *__restrict
           __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));



extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
           __const struct timespec *__restrict
           __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));



extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
       __restrict __attr,
       int *__restrict __pshared)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
       int __pshared)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *
       __restrict __attr,
       int *__restrict __pref)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
       int __pref) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));







extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
         __const pthread_condattr_t *__restrict
         __cond_attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_cond_destroy (pthread_cond_t *__cond)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_cond_signal (pthread_cond_t *__cond)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_cond_broadcast (pthread_cond_t *__cond)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));






extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
         pthread_mutex_t *__restrict __mutex)
     __attribute__ ((__nonnull__ (1, 2)));
# 954 "../nptl/sysdeps/pthread/pthread.h"
extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
       pthread_mutex_t *__restrict __mutex,
       __const struct timespec *__restrict
       __abstime) __attribute__ ((__nonnull__ (1, 2, 3)));




extern int pthread_condattr_init (pthread_condattr_t *__attr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_condattr_getpshared (__const pthread_condattr_t *
                                        __restrict __attr,
                                        int *__restrict __pshared)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
                                        int __pshared) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_condattr_getclock (__const pthread_condattr_t *
          __restrict __attr,
          __clockid_t *__restrict __clock_id)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
          __clockid_t __clock_id)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 998 "../nptl/sysdeps/pthread/pthread.h"
extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_spin_lock (pthread_spinlock_t *__lock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));






extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
     __const pthread_barrierattr_t *__restrict
     __attr, unsigned int __count)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
        __restrict __attr,
        int *__restrict __pshared)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
                                           int __pshared)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 1065 "../nptl/sysdeps/pthread/pthread.h"
extern int pthread_key_create (pthread_key_t *__key,
          void (*__destr_function) (void *))
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int pthread_key_delete (pthread_key_t __key) __attribute__ ((__nothrow__));


extern void *pthread_getspecific (pthread_key_t __key) __attribute__ ((__nothrow__));


extern int pthread_setspecific (pthread_key_t __key,
    __const void *__pointer) __attribute__ ((__nothrow__)) ;




extern int pthread_getcpuclockid (pthread_t __thread_id,
      __clockid_t *__clock_id)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
# 1099 "../nptl/sysdeps/pthread/pthread.h"
extern int pthread_atfork (void (*__prepare) (void),
      void (*__parent) (void),
      void (*__child) (void)) __attribute__ ((__nothrow__));




extern __inline int
__attribute__ ((__nothrow__)) pthread_equal (pthread_t __thread1, pthread_t __thread2)
{
  return __thread1 == __thread2;
}



# 2 "../include/pthread.h" 2


extern void __pthread_initialize (void) __attribute__ ((weak));
# 27 "../nptl/../nptl_db/thread_db.h" 2

# 1 "../include/sys/types.h" 1
# 29 "../nptl/../nptl_db/thread_db.h" 2
# 1 "../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h" 1
# 27 "../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h"
# 1 "../include/signal.h" 1




# 1 "../signal/signal.h" 1
# 31 "../signal/signal.h"


# 1 "../sysdeps/unix/sysv/linux/bits/sigset.h" 1
# 103 "../sysdeps/unix/sysv/linux/bits/sigset.h"
extern int __sigismember (__const __sigset_t *, int);
extern int __sigaddset (__sigset_t *, int);
extern int __sigdelset (__sigset_t *, int);
# 117 "../sysdeps/unix/sysv/linux/bits/sigset.h"
extern __inline int __sigismember (__const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __mask) ? 1 : 0; }
extern __inline int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] |= __mask), 0); }
extern __inline int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] &= ~__mask), 0); }
# 34 "../signal/signal.h" 2







typedef __sig_atomic_t sig_atomic_t;

# 58 "../signal/signal.h"
# 1 "../sysdeps/unix/sysv/linux/bits/signum.h" 1
# 59 "../signal/signal.h" 2
# 75 "../signal/signal.h"
typedef void (*__sighandler_t) (int);




extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
     __attribute__ ((__nothrow__));

extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
     __attribute__ ((__nothrow__));







extern __sighandler_t signal (int __sig, __sighandler_t __handler)
     __attribute__ ((__nothrow__));
# 104 "../signal/signal.h"





extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler)
     __attribute__ ((__nothrow__));






extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__));






extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__));




extern int raise (int __sig) __attribute__ ((__nothrow__));




extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
     __attribute__ ((__nothrow__));
extern int gsignal (int __sig) __attribute__ ((__nothrow__));




extern void psignal (int __sig, __const char *__s);
# 153 "../signal/signal.h"
extern int __sigpause (int __sig_or_mask, int __is_sig);
# 162 "../signal/signal.h"
extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
# 181 "../signal/signal.h"
extern int sigblock (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));


extern int sigsetmask (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));


extern int siggetmask (void) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
# 196 "../signal/signal.h"
typedef __sighandler_t sighandler_t;




typedef __sighandler_t sig_t;
# 212 "../signal/signal.h"
# 1 "../sysdeps/unix/sysv/linux/bits/siginfo.h" 1
# 25 "../sysdeps/unix/sysv/linux/bits/siginfo.h"
# 1 "../sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h" 1
# 26 "../sysdeps/unix/sysv/linux/bits/siginfo.h" 2







typedef union sigval
  {
    int sival_int;
    void *sival_ptr;
  } sigval_t;
# 51 "../sysdeps/unix/sysv/linux/bits/siginfo.h"
typedef struct siginfo
  {
    int si_signo;
    int si_errno;

    int si_code;

    union
      {
 int _pad[((128 / sizeof (int)) - 3)];


 struct
   {
     __pid_t si_pid;
     __uid_t si_uid;
   } _kill;


 struct
   {
     int si_tid;
     int si_overrun;
     sigval_t si_sigval;
   } _timer;


 struct
   {
     __pid_t si_pid;
     __uid_t si_uid;
     sigval_t si_sigval;
   } _rt;


 struct
   {
     __pid_t si_pid;
     __uid_t si_uid;
     int si_status;
     __clock_t si_utime;
     __clock_t si_stime;
   } _sigchld;


 struct
   {
     void *si_addr;
   } _sigfault;


 struct
   {
     long int si_band;
     int si_fd;
   } _sigpoll;
      } _sifields;
  } siginfo_t;
# 129 "../sysdeps/unix/sysv/linux/bits/siginfo.h"
enum
{
  SI_ASYNCNL = -60,

  SI_TKILL = -6,

  SI_SIGIO,

  SI_ASYNCIO,

  SI_MESGQ,

  SI_TIMER,

  SI_QUEUE,

  SI_USER,

  SI_KERNEL = 0x80

};



enum
{
  ILL_ILLOPC = 1,

  ILL_ILLOPN,

  ILL_ILLADR,

  ILL_ILLTRP,

  ILL_PRVOPC,

  ILL_PRVREG,

  ILL_COPROC,

  ILL_BADSTK

};


enum
{
  FPE_INTDIV = 1,

  FPE_INTOVF,

  FPE_FLTDIV,

  FPE_FLTOVF,

  FPE_FLTUND,

  FPE_FLTRES,

  FPE_FLTINV,

  FPE_FLTSUB

};


enum
{
  SEGV_MAPERR = 1,

  SEGV_ACCERR

};


enum
{
  BUS_ADRALN = 1,

  BUS_ADRERR,

  BUS_OBJERR

};


enum
{
  TRAP_BRKPT = 1,

  TRAP_TRACE

};


enum
{
  CLD_EXITED = 1,

  CLD_KILLED,

  CLD_DUMPED,

  CLD_TRAPPED,

  CLD_STOPPED,

  CLD_CONTINUED

};


enum
{
  POLL_IN = 1,

  POLL_OUT,

  POLL_MSG,

  POLL_ERR,

  POLL_PRI,

  POLL_HUP

};
# 273 "../sysdeps/unix/sysv/linux/bits/siginfo.h"
typedef struct sigevent
  {
    sigval_t sigev_value;
    int sigev_signo;
    int sigev_notify;

    union
      {
 int _pad[((64 / sizeof (int)) - 3)];



 __pid_t _tid;

 struct
   {
     void (*_function) (sigval_t);
     void *_attribute;
   } _sigev_thread;
      } _sigev_un;
  } sigevent_t;






enum
{
  SIGEV_SIGNAL = 0,

  SIGEV_NONE,

  SIGEV_THREAD,


  SIGEV_THREAD_ID = 4

};
# 213 "../signal/signal.h" 2



extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int sigismember (__const sigset_t *__set, int __signo)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int sigisemptyset (__const sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int sigandset (sigset_t *__set, __const sigset_t *__left,
        __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3)));


extern int sigorset (sigset_t *__set, __const sigset_t *__left,
       __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3)));




# 1 "../sysdeps/unix/sysv/linux/bits/sigaction.h" 1
# 25 "../sysdeps/unix/sysv/linux/bits/sigaction.h"
struct sigaction
  {


    union
      {

 __sighandler_t sa_handler;

 void (*sa_sigaction) (int, siginfo_t *, void *);
      }
    __sigaction_handler;







    __sigset_t sa_mask;


    int sa_flags;


    void (*sa_restorer) (void);
  };
# 247 "../signal/signal.h" 2


extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
   sigset_t *__restrict __oset) __attribute__ ((__nothrow__));






extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1)));


extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
        struct sigaction *__restrict __oact) __attribute__ ((__nothrow__));


extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));






extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
     __attribute__ ((__nonnull__ (1, 2)));






extern int sigwaitinfo (__const sigset_t *__restrict __set,
   siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1)));






extern int sigtimedwait (__const sigset_t *__restrict __set,
    siginfo_t *__restrict __info,
    __const struct timespec *__restrict __timeout)
     __attribute__ ((__nonnull__ (1)));



extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
     __attribute__ ((__nothrow__));
# 304 "../signal/signal.h"
extern __const char *__const _sys_siglist[65];
extern __const char *__const sys_siglist[65];


struct sigvec
  {
    __sighandler_t sv_handler;
    int sv_mask;

    int sv_flags;

  };
# 328 "../signal/signal.h"
extern int sigvec (int __sig, __const struct sigvec *__vec,
     struct sigvec *__ovec) __attribute__ ((__nothrow__));



# 1 "../sysdeps/unix/sysv/linux/bits/sigcontext.h" 1
# 28 "../sysdeps/unix/sysv/linux/bits/sigcontext.h"
# 1 "/opt/biarch/gcc42-test/include/asm/sigcontext.h" 1 3 4





# 1 "/opt/biarch/gcc42-test/include/asm-ppc/sigcontext.h" 1 3 4



# 1 "/opt/biarch/gcc42-test/include/asm/ptrace.h" 1 3 4





# 1 "/opt/biarch/gcc42-test/include/asm-ppc/ptrace.h" 1 3 4
# 21 "/opt/biarch/gcc42-test/include/asm-ppc/ptrace.h" 3 4
struct pt_regs {
 unsigned long gpr[32];
 unsigned long nip;
 unsigned long msr;
 unsigned long orig_gpr3;
 unsigned long ctr;
 unsigned long link;
 unsigned long xer;
 unsigned long ccr;
 unsigned long mq;

 unsigned long trap;


 unsigned long dar;
 unsigned long dsisr;
 unsigned long result;
};
# 7 "/opt/biarch/gcc42-test/include/asm/ptrace.h" 2 3 4
# 5 "/opt/biarch/gcc42-test/include/asm-ppc/sigcontext.h" 2 3 4


struct sigcontext {
 unsigned long _unused[4];
 int signal;
 unsigned long handler;
 unsigned long oldmask;
 struct pt_regs *regs;
};
# 7 "/opt/biarch/gcc42-test/include/asm/sigcontext.h" 2 3 4
# 29 "../sysdeps/unix/sysv/linux/bits/sigcontext.h" 2
# 334 "../signal/signal.h" 2


extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__));
# 346 "../signal/signal.h"
extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__));

# 1 "../sysdeps/unix/sysv/linux/bits/sigstack.h" 1
# 26 "../sysdeps/unix/sysv/linux/bits/sigstack.h"
struct sigstack
  {
    void *ss_sp;
    int ss_onstack;
  };



enum
{
  SS_ONSTACK = 1,

  SS_DISABLE

};
# 50 "../sysdeps/unix/sysv/linux/bits/sigstack.h"
typedef struct sigaltstack
  {
    void *ss_sp;
    int ss_flags;
    size_t ss_size;
  } stack_t;
# 349 "../signal/signal.h" 2


# 1 "../sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h" 1
# 27 "../sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h"
# 1 "../sysdeps/unix/sysv/linux/bits/sigcontext.h" 1
# 28 "../sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h" 2







typedef unsigned long gregset_t[48];


typedef struct _libc_fpstate
{
 double fpregs[32];
 double fpscr;
 unsigned int _pad[2];
} fpregset_t;



typedef struct _libc_vrstate
{
 unsigned int vrregs[32][4];
 unsigned int vrsave;
 unsigned int _pad[2];
 unsigned int vscr;
} vrregset_t;


typedef struct
{
 gregset_t gregs;
 fpregset_t fpregs;
 vrregset_t vrregs __attribute__((__aligned__(16)));
} mcontext_t;
# 135 "../sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h"
typedef struct ucontext
  {
    unsigned long int uc_flags;
    struct ucontext *uc_link;
    stack_t uc_stack;
# 164 "../sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h"
    int uc_pad[7];
    union uc_regs_ptr {
      struct pt_regs *regs;
      mcontext_t *uc_regs;
    } uc_mcontext;
    sigset_t uc_sigmask;
    char uc_reg_space[sizeof(mcontext_t) + 12];




  } ucontext_t;
# 352 "../signal/signal.h" 2





extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
     __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));



extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
   struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__));







extern int sighold (int __sig) __attribute__ ((__nothrow__));


extern int sigrelse (int __sig) __attribute__ ((__nothrow__));


extern int sigignore (int __sig) __attribute__ ((__nothrow__));


extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __attribute__ ((__nothrow__));






# 1 "../nptl/sysdeps/pthread/bits/sigthread.h" 1
# 31 "../nptl/sysdeps/pthread/bits/sigthread.h"
extern int pthread_sigmask (int __how,
       __const __sigset_t *__restrict __newmask,
       __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__));


extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__));
# 388 "../signal/signal.h" 2






extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__));

extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__));




# 6 "../include/signal.h" 2

extern __typeof (sigemptyset) sigemptyset __asm__ ("" "__GI_sigemptyset") __attribute__ ((visibility ("hidden")));
extern __typeof (sigfillset) sigfillset __asm__ ("" "__GI_sigfillset") __attribute__ ((visibility ("hidden")));
extern __typeof (sigaddset) sigaddset __asm__ ("" "__GI_sigaddset") __attribute__ ((visibility ("hidden")));
extern __typeof (sigdelset) sigdelset __asm__ ("" "__GI_sigdelset") __attribute__ ((visibility ("hidden")));
extern __typeof (sigismember) sigismember __asm__ ("" "__GI_sigismember") __attribute__ ((visibility ("hidden")));
extern __typeof (__sigpause) __sigpause __asm__ ("" "__GI___sigpause") __attribute__ ((visibility ("hidden")));
extern __typeof (raise) raise __asm__ ("" "__GI_raise") __attribute__ ((visibility ("hidden")));
extern __typeof (__libc_current_sigrtmin) __libc_current_sigrtmin __asm__ ("" "__GI___libc_current_sigrtmin") __attribute__ ((visibility ("hidden")));
extern __typeof (__libc_current_sigrtmax) __libc_current_sigrtmax __asm__ ("" "__GI___libc_current_sigrtmax") __attribute__ ((visibility ("hidden")));


extern __sighandler_t __bsd_signal (int __sig, __sighandler_t __handler);
extern int __kill (__pid_t __pid, int __sig);
extern int __sigaction (int __sig, __const struct sigaction *__restrict __act,
   struct sigaction *__restrict __oact);
extern __typeof (__sigaction) __sigaction __asm__ ("" "__GI___sigaction") __attribute__ ((visibility ("hidden")));
extern int __sigblock (int __mask);
extern int __sigsetmask (int __mask);
extern int __sigprocmask (int __how,
     __const sigset_t *__set, sigset_t *__oset);
extern int __sigsuspend (__const sigset_t *__set);
extern __typeof (__sigsuspend) __sigsuspend __asm__ ("" "__GI___sigsuspend") __attribute__ ((visibility ("hidden")));
extern int __sigwait (__const sigset_t *__set, int *__sig);
extern __typeof (__sigwait) __sigwait __asm__ ("" "__GI___sigwait") __attribute__ ((visibility ("hidden")));
extern int __sigwaitinfo (__const sigset_t *__set, siginfo_t *__info);
extern __typeof (__sigwaitinfo) __sigwaitinfo __asm__ ("" "__GI___sigwaitinfo") __attribute__ ((visibility ("hidden")));
extern int __sigtimedwait (__const sigset_t *__set, siginfo_t *__info,
      __const struct timespec *__timeout);
extern __typeof (__sigtimedwait) __sigtimedwait __asm__ ("" "__GI___sigtimedwait") __attribute__ ((visibility ("hidden")));
extern int __sigqueue (__pid_t __pid, int __sig,
         __const union sigval __val);
extern int __sigvec (int __sig, __const struct sigvec *__vec,
       struct sigvec *__ovec);
extern int __sigreturn (struct sigcontext *__scp);
extern int __sigaltstack (__const struct sigaltstack *__ss,
     struct sigaltstack *__oss);
extern int __libc_sigaction (int sig, const struct sigaction *act,
        struct sigaction *oact);
extern __typeof (__libc_sigaction) __libc_sigaction __asm__ ("" "__GI___libc_sigaction") __attribute__ ((visibility ("hidden")));

extern int __sigpause (int sig_or_mask, int is_sig);
extern int __default_sigpause (int mask);
extern int __xpg_sigpause (int sig);







extern int __libc_allocate_rtsig (int __high);
# 28 "../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h" 2
# 1 "../include/sys/time.h" 1

# 1 "../time/sys/time.h" 1
# 29 "../time/sys/time.h"
# 1 "../bits/time.h" 1
# 30 "../time/sys/time.h" 2
# 39 "../time/sys/time.h"

# 57 "../time/sys/time.h"
struct timezone
  {
    int tz_minuteswest;
    int tz_dsttime;
  };

typedef struct timezone *__restrict __timezone_ptr_t;
# 73 "../time/sys/time.h"
extern int gettimeofday (struct timeval *__restrict __tv,
    __timezone_ptr_t __tz) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));




extern int settimeofday (__const struct timeval *__tv,
    __const struct timezone *__tz)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





extern int adjtime (__const struct timeval *__delta,
      struct timeval *__olddelta) __attribute__ ((__nothrow__));




enum __itimer_which
  {

    ITIMER_REAL = 0,


    ITIMER_VIRTUAL = 1,



    ITIMER_PROF = 2

  };



struct itimerval
  {

    struct timeval it_interval;

    struct timeval it_value;
  };




typedef enum __itimer_which __itimer_which_t;






extern int getitimer (__itimer_which_t __which,
        struct itimerval *__value) __attribute__ ((__nothrow__));




extern int setitimer (__itimer_which_t __which,
        __const struct itimerval *__restrict __new,
        struct itimerval *__restrict __old) __attribute__ ((__nothrow__));




extern int utimes (__const char *__file, __const struct timeval __tvp[2])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));






extern int futimesat (int __fd, __const char *__file,
        __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
# 191 "../time/sys/time.h"

# 3 "../include/sys/time.h" 2


extern int __gettimeofday (struct timeval *__tv,
      struct timezone *__tz);
extern int __gettimeofday_internal (struct timeval *__tv,
        struct timezone *__tz)
 __attribute__ ((visibility ("hidden")));
extern int __settimeofday (__const struct timeval *__tv,
      __const struct timezone *__tz)
 __attribute__ ((visibility ("hidden")));
extern int __adjtime (__const struct timeval *__delta,
        struct timeval *__olddelta);
extern int __getitimer (enum __itimer_which __which,
   struct itimerval *__value);
extern int __setitimer (enum __itimer_which __which,
   __const struct itimerval *__restrict __new,
   struct itimerval *__restrict __old)
 __attribute__ ((visibility ("hidden")));
extern int __utimes (__const char *__file, const struct timeval __tvp[2])
 __attribute__ ((visibility ("hidden")));
extern int __futimes (int fd, __const struct timeval tvp[2]) __attribute__ ((visibility ("hidden")));
# 29 "../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h" 2
# 1 "../include/sys/types.h" 1
# 30 "../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h" 2

# 1 "../sysdeps/unix/sysv/linux/powerpc/sys/user.h" 1
# 26 "../sysdeps/unix/sysv/linux/powerpc/sys/user.h"
struct user {
 struct pt_regs regs;
 size_t u_tsize;
 size_t u_dsize;
 size_t u_ssize;
 unsigned long start_code;
 unsigned long start_data;
 unsigned long start_stack;
 long int signal;
 struct regs * u_ar0;
 unsigned long magic;
 char u_comm[32];
};
# 32 "../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h" 2


# 47 "../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h"
typedef unsigned long elf_greg_t;
typedef elf_greg_t elf_gregset_t[48];

typedef double elf_fpreg_t;
typedef elf_fpreg_t elf_fpregset_t[33];


typedef struct {
  unsigned int u[4];
} __attribute__ ((aligned (16))) elf_vrreg_t;
typedef elf_vrreg_t elf_vrregset_t[33];


struct elf_siginfo
  {
    int si_signo;
    int si_code;
    int si_errno;
  };
# 75 "../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h"
struct elf_prstatus
  {





    struct elf_siginfo pr_info;
    short int pr_cursig;
    unsigned long int pr_sigpend;
    unsigned long int pr_sighold;




    __pid_t pr_pid;
    __pid_t pr_ppid;
    __pid_t pr_pgrp;
    __pid_t pr_sid;
    struct timeval pr_utime;
    struct timeval pr_stime;
    struct timeval pr_cutime;
    struct timeval pr_cstime;



    elf_gregset_t pr_reg;
    int pr_fpvalid;
  };




struct elf_prpsinfo
  {
    char pr_state;
    char pr_sname;
    char pr_zomb;
    char pr_nice;
    unsigned long int pr_flag;
    __uid_t pr_uid;
    __gid_t pr_gid;
    __pid_t pr_pid, pr_ppid, pr_pgrp, pr_sid;

    char pr_fname[16];
    char pr_psargs[(80)];
  };


typedef void *psaddr_t;


typedef elf_gregset_t prgregset_t;
typedef elf_fpregset_t prfpregset_t;



typedef __pid_t lwpid_t;


typedef struct elf_prstatus prstatus_t;
typedef struct elf_prpsinfo prpsinfo_t;


# 30 "../nptl/../nptl_db/thread_db.h" 2



typedef enum
{
  TD_OK,
  TD_ERR,
  TD_NOTHR,
  TD_NOSV,
  TD_NOLWP,
  TD_BADPH,
  TD_BADTH,
  TD_BADSH,
  TD_BADTA,
  TD_BADKEY,
  TD_NOMSG,
  TD_NOFPREGS,
  TD_NOLIBTHREAD,
  TD_NOEVENT,
  TD_NOCAPAB,
  TD_DBERR,
  TD_NOAPLIC,
  TD_NOTSD,
  TD_MALLOC,
  TD_PARTIALREG,
  TD_NOXREGS,
  TD_TLSDEFER,
  TD_NOTALLOC = TD_TLSDEFER,
  TD_VERSION,
  TD_NOTLS
} td_err_e;




typedef enum
{
  TD_THR_ANY_STATE,
  TD_THR_UNKNOWN,
  TD_THR_STOPPED,
  TD_THR_RUN,
  TD_THR_ACTIVE,
  TD_THR_ZOMBIE,
  TD_THR_SLEEP,
  TD_THR_STOPPED_ASLEEP
} td_thr_state_e;



typedef enum
{
  TD_THR_ANY_TYPE,
  TD_THR_USER,
  TD_THR_SYSTEM
} td_thr_type_e;





typedef struct td_thragent td_thragent_t;


typedef struct td_thrhandle
{
  td_thragent_t *th_ta_p;
  psaddr_t th_unique;
} td_thrhandle_t;



struct link_map;
# 116 "../nptl/../nptl_db/thread_db.h"
typedef struct td_thr_events
{
  uint32_t event_bits[2];
} td_thr_events_t;
# 155 "../nptl/../nptl_db/thread_db.h"
typedef enum
{
  TD_ALL_EVENTS,
  TD_EVENT_NONE = TD_ALL_EVENTS,
  TD_READY,
  TD_SLEEP,
  TD_SWITCHTO,
  TD_SWITCHFROM,
  TD_LOCK_TRY,
  TD_CATCHSIG,
  TD_IDLE,
  TD_CREATE,
  TD_DEATH,
  TD_PREEMPT,
  TD_PRI_INHERIT,
  TD_REAP,
  TD_CONCURRENCY,
  TD_TIMEOUT,
  TD_MIN_EVENT_NUM = TD_READY,
  TD_MAX_EVENT_NUM = TD_TIMEOUT,
  TD_EVENTS_ENABLE = 31
} td_event_e;


typedef enum
{
  NOTIFY_BPT,
  NOTIFY_AUTOBPT,

  NOTIFY_SYSCALL
} td_notify_e;


typedef struct td_notify
{
  td_notify_e type;
  union
  {
    psaddr_t bptaddr;
    int syscallno;
  } u;
} td_notify_t;


typedef struct td_event_msg
{
  td_event_e event;
  const td_thrhandle_t *th_p;
  union
  {



    uintptr_t data;
  } msg;
} td_event_msg_t;


typedef struct
{
  td_thr_events_t eventmask;
  td_event_e eventnum;
  void *eventdata;
} td_eventbuf_t;



typedef struct td_ta_stats
{
  int nthreads;
  int r_concurrency;
  int nrunnable_num;
  int nrunnable_den;
  int a_concurrency_num;
  int a_concurrency_den;
  int nlwps_num;

  int nlwps_den;

  int nidle_num;

  int nidle_den;

} td_ta_stats_t;




typedef pthread_t thread_t;
typedef pthread_key_t thread_key_t;



typedef int td_thr_iter_f (const td_thrhandle_t *, void *);


typedef int td_key_iter_f (thread_key_t, void (*) (void *), void *);




struct ps_prochandle;



typedef struct td_thrinfo
{
  td_thragent_t *ti_ta_p;
  unsigned int ti_user_flags;
  thread_t ti_tid;

  char *ti_tls;
  psaddr_t ti_startfunc;

  psaddr_t ti_stkbase;
  long int ti_stksize;
  psaddr_t ti_ro_area;
  int ti_ro_size;
  td_thr_state_e ti_state;
  unsigned char ti_db_suspended;
  td_thr_type_e ti_type;

  intptr_t ti_pc;
  intptr_t ti_sp;
  short int ti_flags;
  int ti_pri;
  lwpid_t ti_lid;
  sigset_t ti_sigmask;
  unsigned char ti_traceme;

  unsigned char ti_preemptflag;
  unsigned char ti_pirecflag;
  sigset_t ti_pending;
  td_thr_events_t ti_events;
} td_thrinfo_t;






extern td_err_e td_init (void);


extern td_err_e td_log (void);


extern const char **td_symbol_list (void);


extern td_err_e td_ta_new (struct ps_prochandle *__ps, td_thragent_t **__ta);


extern td_err_e td_ta_delete (td_thragent_t *__ta);


extern td_err_e td_ta_get_nthreads (const td_thragent_t *__ta, int *__np);



extern td_err_e td_ta_get_ph (const td_thragent_t *__ta,
         struct ps_prochandle **__ph);



extern td_err_e td_ta_map_id2thr (const td_thragent_t *__ta, pthread_t __pt,
      td_thrhandle_t *__th);



extern td_err_e td_ta_map_lwp2thr (const td_thragent_t *__ta, lwpid_t __lwpid,
       td_thrhandle_t *__th);




extern td_err_e td_ta_thr_iter (const td_thragent_t *__ta,
    td_thr_iter_f *__callback, void *__cbdata_p,
    td_thr_state_e __state, int __ti_pri,
    sigset_t *__ti_sigmask_p,
    unsigned int __ti_user_flags);


extern td_err_e td_ta_tsd_iter (const td_thragent_t *__ta, td_key_iter_f *__ki,
    void *__p);



extern td_err_e td_ta_event_addr (const td_thragent_t *__ta,
      td_event_e __event, td_notify_t *__ptr);


extern td_err_e td_ta_set_event (const td_thragent_t *__ta,
     td_thr_events_t *__event);


extern td_err_e td_ta_clear_event (const td_thragent_t *__ta,
       td_thr_events_t *__event);


extern td_err_e td_ta_event_getmsg (const td_thragent_t *__ta,
        td_event_msg_t *__msg);



extern td_err_e td_ta_setconcurrency (const td_thragent_t *__ta, int __level);



extern td_err_e td_ta_enable_stats (const td_thragent_t *__ta, int __enable);


extern td_err_e td_ta_reset_stats (const td_thragent_t *__ta);


extern td_err_e td_ta_get_stats (const td_thragent_t *__ta,
     td_ta_stats_t *__statsp);



extern td_err_e td_thr_validate (const td_thrhandle_t *__th);


extern td_err_e td_thr_get_info (const td_thrhandle_t *__th,
     td_thrinfo_t *__infop);


extern td_err_e td_thr_getfpregs (const td_thrhandle_t *__th,
      prfpregset_t *__regset);


extern td_err_e td_thr_getgregs (const td_thrhandle_t *__th,
     prgregset_t __gregs);


extern td_err_e td_thr_getxregs (const td_thrhandle_t *__th, void *__xregs);


extern td_err_e td_thr_getxregsize (const td_thrhandle_t *__th, int *__sizep);


extern td_err_e td_thr_setfpregs (const td_thrhandle_t *__th,
      const prfpregset_t *__fpregs);


extern td_err_e td_thr_setgregs (const td_thrhandle_t *__th,
     prgregset_t __gregs);


extern td_err_e td_thr_setxregs (const td_thrhandle_t *__th,
     const void *__addr);



extern td_err_e td_thr_tlsbase (const td_thrhandle_t *__th,
    unsigned long int __modid,
    psaddr_t *__base);


extern td_err_e td_thr_tls_get_addr (const td_thrhandle_t *__th,
         psaddr_t __map_address, size_t __offset,
         psaddr_t *__address);



extern td_err_e td_thr_event_enable (const td_thrhandle_t *__th, int __event);


extern td_err_e td_thr_set_event (const td_thrhandle_t *__th,
      td_thr_events_t *__event);


extern td_err_e td_thr_clear_event (const td_thrhandle_t *__th,
        td_thr_events_t *__event);


extern td_err_e td_thr_event_getmsg (const td_thrhandle_t *__th,
         td_event_msg_t *__msg);



extern td_err_e td_thr_setprio (const td_thrhandle_t *__th, int __prio);



extern td_err_e td_thr_setsigpending (const td_thrhandle_t *__th,
          unsigned char __n, const sigset_t *__ss);


extern td_err_e td_thr_sigsetmask (const td_thrhandle_t *__th,
       const sigset_t *__ss);



extern td_err_e td_thr_tsd (const td_thrhandle_t *__th,
       const thread_key_t __tk, void **__data);



extern td_err_e td_thr_dbsuspend (const td_thrhandle_t *__th);


extern td_err_e td_thr_dbresume (const td_thrhandle_t *__th);
# 34 "../nptl/descr.h" 2


# 1 "../sysdeps/generic/unwind.h" 1
# 35 "../sysdeps/generic/unwind.h"
typedef unsigned _Unwind_Word __attribute__((__mode__(__word__)));
typedef signed _Unwind_Sword __attribute__((__mode__(__word__)));



typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));

typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__)));





typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__)));



typedef enum
{
  _URC_NO_REASON = 0,
  _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
  _URC_FATAL_PHASE2_ERROR = 2,
  _URC_FATAL_PHASE1_ERROR = 3,
  _URC_NORMAL_STOP = 4,
  _URC_END_OF_STACK = 5,
  _URC_HANDLER_FOUND = 6,
  _URC_INSTALL_CONTEXT = 7,
  _URC_CONTINUE_UNWIND = 8
} _Unwind_Reason_Code;
# 72 "../sysdeps/generic/unwind.h"
struct _Unwind_Exception;

typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code,
           struct _Unwind_Exception *);

struct _Unwind_Exception
{
  _Unwind_Exception_Class exception_class;
  _Unwind_Exception_Cleanup_Fn exception_cleanup;
  _Unwind_Word private_1;
  _Unwind_Word private_2;




} __attribute__((__aligned__));




typedef int _Unwind_Action;
# 104 "../sysdeps/generic/unwind.h"
struct _Unwind_Context;


extern _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception *);



typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
     (int, _Unwind_Action, _Unwind_Exception_Class,
      struct _Unwind_Exception *, struct _Unwind_Context *, void *);

extern _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *,
       _Unwind_Stop_Fn,
       void *);


extern void _Unwind_DeleteException (struct _Unwind_Exception *);



extern void _Unwind_Resume (struct _Unwind_Exception *);




typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)
     (struct _Unwind_Context *, void *);

extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *);






extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int);
extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word);

extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);
extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr);


extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *);

extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *);

extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *);
# 167 "../sysdeps/generic/unwind.h"
typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)
     (int, _Unwind_Action, _Unwind_Exception_Class,
      struct _Unwind_Exception *, struct _Unwind_Context *);




struct SjLj_Function_Context;
extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *);
extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *);

extern _Unwind_Reason_Code _Unwind_SjLj_RaiseException
     (struct _Unwind_Exception *);
extern _Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind
     (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
extern void _Unwind_SjLj_Resume (struct _Unwind_Exception *);
# 208 "../sysdeps/generic/unwind.h"
extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *);
extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *);




extern void * _Unwind_FindEnclosingFunction (void *pc);
# 37 "../nptl/descr.h" 2


# 1 "../include/resolv.h" 1
# 12 "../include/resolv.h"
# 1 "../resolv/resolv.h" 1
# 56 "../resolv/resolv.h"
# 1 "../include/sys/types.h" 1
# 57 "../resolv/resolv.h" 2
# 1 "../include/netinet/in.h" 1


# 1 "../inet/netinet/in.h" 1
# 24 "../inet/netinet/in.h"
# 1 "../include/sys/socket.h" 1

# 1 "../socket/sys/socket.h" 1
# 25 "../socket/sys/socket.h"


# 1 "../include/sys/uio.h" 1

# 1 "../misc/sys/uio.h" 1
# 24 "../misc/sys/uio.h"
# 1 "../include/sys/types.h" 1
# 25 "../misc/sys/uio.h" 2




# 1 "../sysdeps/unix/sysv/linux/bits/uio.h" 1
# 26 "../sysdeps/unix/sysv/linux/bits/uio.h"
# 1 "../include/sys/types.h" 1
# 27 "../sysdeps/unix/sysv/linux/bits/uio.h" 2
# 44 "../sysdeps/unix/sysv/linux/bits/uio.h"
struct iovec
  {
    void *iov_base;
    size_t iov_len;
  };
# 30 "../misc/sys/uio.h" 2
# 40 "../misc/sys/uio.h"
extern ssize_t readv (int __fd, __const struct iovec *__iovec, int __count);
# 50 "../misc/sys/uio.h"
extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count);


# 3 "../include/sys/uio.h" 2


extern ssize_t __readv (int __fd, __const struct iovec *__vector,
   int __count);
extern ssize_t __libc_readv (int __fd, __const struct iovec *__vector,
        int __count);
extern ssize_t __writev (int __fd, __const struct iovec *__vector,
    int __count);
extern ssize_t __libc_writev (int __fd, __const struct iovec *__vector,
         int __count);
# 28 "../socket/sys/socket.h" 2

# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 30 "../socket/sys/socket.h" 2





# 1 "../sysdeps/unix/sysv/linux/bits/socket.h" 1
# 29 "../sysdeps/unix/sysv/linux/bits/socket.h"
# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 30 "../sysdeps/unix/sysv/linux/bits/socket.h" 2

# 1 "../include/limits.h" 1
# 145 "../include/limits.h"
# 1 "../include/bits/posix1_lim.h" 1
# 146 "../include/limits.h" 2



# 1 "../include/bits/posix2_lim.h" 1
# 150 "../include/limits.h" 2
# 32 "../sysdeps/unix/sysv/linux/bits/socket.h" 2
# 1 "../include/sys/types.h" 1
# 33 "../sysdeps/unix/sysv/linux/bits/socket.h" 2



typedef __socklen_t socklen_t;




enum __socket_type
{
  SOCK_STREAM = 1,


  SOCK_DGRAM = 2,


  SOCK_RAW = 3,

  SOCK_RDM = 4,

  SOCK_SEQPACKET = 5,


  SOCK_PACKET = 10



};
# 142 "../sysdeps/unix/sysv/linux/bits/socket.h"
# 1 "../bits/sockaddr.h" 1
# 29 "../bits/sockaddr.h"
typedef unsigned short int sa_family_t;
# 143 "../sysdeps/unix/sysv/linux/bits/socket.h" 2


struct sockaddr
  {
    sa_family_t sa_family;
    char sa_data[14];
  };
# 162 "../sysdeps/unix/sysv/linux/bits/socket.h"
struct sockaddr_storage
  {
    sa_family_t ss_family;
    __uint32_t __ss_align;
    char __ss_padding[(128 - (2 * sizeof (__uint32_t)))];
  };



enum
  {
    MSG_OOB = 0x01,

    MSG_PEEK = 0x02,

    MSG_DONTROUTE = 0x04,



    MSG_TRYHARD = MSG_DONTROUTE,


    MSG_CTRUNC = 0x08,

    MSG_PROXY = 0x10,

    MSG_TRUNC = 0x20,

    MSG_DONTWAIT = 0x40,

    MSG_EOR = 0x80,

    MSG_WAITALL = 0x100,

    MSG_FIN = 0x200,

    MSG_SYN = 0x400,

    MSG_CONFIRM = 0x800,

    MSG_RST = 0x1000,

    MSG_ERRQUEUE = 0x2000,

    MSG_NOSIGNAL = 0x4000,

    MSG_MORE = 0x8000

  };




struct msghdr
  {
    void *msg_name;
    socklen_t msg_namelen;

    struct iovec *msg_iov;
    size_t msg_iovlen;

    void *msg_control;
    size_t msg_controllen;




    int msg_flags;
  };


struct cmsghdr
  {
    size_t cmsg_len;




    int cmsg_level;
    int cmsg_type;

    __extension__ unsigned char __cmsg_data [];

  };
# 263 "../sysdeps/unix/sysv/linux/bits/socket.h"
extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
          struct cmsghdr *__cmsg) __attribute__ ((__nothrow__));




extern __inline struct cmsghdr *
__attribute__ ((__nothrow__)) __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)
{
  if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))

    return 0;

  __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
          + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1)));
  if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
     + __mhdr->msg_controllen)
      || ((unsigned char *) __cmsg + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1))
   > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))

    return 0;
  return __cmsg;
}




enum
  {
    SCM_RIGHTS = 0x01


    , SCM_CREDENTIALS = 0x02


  };



struct ucred
{
  pid_t pid;
  uid_t uid;
  gid_t gid;
};


# 1 "/opt/biarch/gcc42-test/include/asm/socket.h" 1 3 4





# 1 "/opt/biarch/gcc42-test/include/asm-ppc/socket.h" 1 3 4
# 7 "/opt/biarch/gcc42-test/include/asm/socket.h" 2 3 4
# 311 "../sysdeps/unix/sysv/linux/bits/socket.h" 2



struct linger
  {
    int l_onoff;
    int l_linger;
  };
# 36 "../socket/sys/socket.h" 2




struct osockaddr
  {
    unsigned short int sa_family;
    unsigned char sa_data[14];
  };




enum
{
  SHUT_RD = 0,

  SHUT_WR,

  SHUT_RDWR

};
# 87 "../socket/sys/socket.h"
typedef union { struct sockaddr *__restrict __sockaddr__; struct sockaddr_at *__restrict __sockaddr_at__; struct sockaddr_ax25 *__restrict __sockaddr_ax25__; struct sockaddr_dl *__restrict __sockaddr_dl__; struct sockaddr_eon *__restrict __sockaddr_eon__; struct sockaddr_in *__restrict __sockaddr_in__; struct sockaddr_in6 *__restrict __sockaddr_in6__; struct sockaddr_inarp *__restrict __sockaddr_inarp__; struct sockaddr_ipx *__restrict __sockaddr_ipx__; struct sockaddr_iso *__restrict __sockaddr_iso__; struct sockaddr_ns *__restrict __sockaddr_ns__; struct sockaddr_un *__restrict __sockaddr_un__; struct sockaddr_x25 *__restrict __sockaddr_x25__;
       } __SOCKADDR_ARG __attribute__ ((__transparent_union__));


typedef union { __const struct sockaddr *__restrict __sockaddr__; __const struct sockaddr_at *__restrict __sockaddr_at__; __const struct sockaddr_ax25 *__restrict __sockaddr_ax25__; __const struct sockaddr_dl *__restrict __sockaddr_dl__; __const struct sockaddr_eon *__restrict __sockaddr_eon__; __const struct sockaddr_in *__restrict __sockaddr_in__; __const struct sockaddr_in6 *__restrict __sockaddr_in6__; __const struct sockaddr_inarp *__restrict __sockaddr_inarp__; __const struct sockaddr_ipx *__restrict __sockaddr_ipx__; __const struct sockaddr_iso *__restrict __sockaddr_iso__; __const struct sockaddr_ns *__restrict __sockaddr_ns__; __const struct sockaddr_un *__restrict __sockaddr_un__; __const struct sockaddr_x25 *__restrict __sockaddr_x25__;
       } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));







extern int socket (int __domain, int __type, int __protocol) __attribute__ ((__nothrow__));





extern int socketpair (int __domain, int __type, int __protocol,
         int __fds[2]) __attribute__ ((__nothrow__));


extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
     __attribute__ ((__nothrow__));


extern int getsockname (int __fd, __SOCKADDR_ARG __addr,
   socklen_t *__restrict __len) __attribute__ ((__nothrow__));
# 124 "../socket/sys/socket.h"
extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);



extern int getpeername (int __fd, __SOCKADDR_ARG __addr,
   socklen_t *__restrict __len) __attribute__ ((__nothrow__));






extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags);






extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags);






extern ssize_t sendto (int __fd, __const void *__buf, size_t __n,
         int __flags, __CONST_SOCKADDR_ARG __addr,
         socklen_t __addr_len);
# 161 "../socket/sys/socket.h"
extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
    int __flags, __SOCKADDR_ARG __addr,
    socklen_t *__restrict __addr_len);







extern ssize_t sendmsg (int __fd, __const struct msghdr *__message,
   int __flags);






extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);





extern int getsockopt (int __fd, int __level, int __optname,
         void *__restrict __optval,
         socklen_t *__restrict __optlen) __attribute__ ((__nothrow__));




extern int setsockopt (int __fd, int __level, int __optname,
         __const void *__optval, socklen_t __optlen) __attribute__ ((__nothrow__));





extern int listen (int __fd, int __n) __attribute__ ((__nothrow__));
# 209 "../socket/sys/socket.h"
extern int accept (int __fd, __SOCKADDR_ARG __addr,
     socklen_t *__restrict __addr_len);







extern int shutdown (int __fd, int __how) __attribute__ ((__nothrow__));




extern int sockatmark (int __fd) __attribute__ ((__nothrow__));







extern int isfdtype (int __fd, int __fdtype) __attribute__ ((__nothrow__));
# 240 "../socket/sys/socket.h"

# 3 "../include/sys/socket.h" 2






extern int __socket (int __domain, int __type,
       int __protocol) __attribute__ ((visibility ("hidden")));





extern int __socketpair (int __domain, int __type, int __protocol,
    int __fds[2]) __attribute__ ((visibility ("hidden")));



extern int __opensock (void) __attribute__ ((visibility ("hidden")));



extern int __getpeername (int __fd, __SOCKADDR_ARG __addr,
     socklen_t *__len) __attribute__ ((visibility ("hidden")));


extern ssize_t __libc_send (int __fd, __const void *__buf, size_t __n,
       int __flags);
extern ssize_t __send (int __fd, __const void *__buf, size_t __n, int __flags);
extern __typeof (__send) __send __asm__ ("" "__GI___send") __attribute__ ((visibility ("hidden")));



extern ssize_t __libc_recv (int __fd, void *__buf, size_t __n, int __flags);



extern ssize_t __libc_sendto (int __fd, __const void *__buf, size_t __n,
         int __flags, __CONST_SOCKADDR_ARG __addr,
         socklen_t __addr_len);





extern ssize_t __libc_recvfrom (int __fd, void *__restrict __buf, size_t __n,
    int __flags, __SOCKADDR_ARG __addr,
    socklen_t *__restrict __addr_len);





extern int __libc_connect (int __fd, __CONST_SOCKADDR_ARG __addr,
      socklen_t __len);
extern int __connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
extern int __connect_internal (int __fd, __CONST_SOCKADDR_ARG __addr,
          socklen_t __len) __attribute__ ((visibility ("hidden")));






extern ssize_t __recv (int __fd, void *__buf, size_t __n, int __flags)
     __attribute__ ((visibility ("hidden")));



extern ssize_t __libc_sendto (int __fd, __const void *__buf, size_t __n,
         int __flags, __CONST_SOCKADDR_ARG __addr,
         socklen_t __addr_len);
extern ssize_t __sendto (int __fd, __const void *__buf, size_t __n,
    int __flags, __CONST_SOCKADDR_ARG __addr,
    socklen_t __addr_len) __attribute__ ((visibility ("hidden")));





extern ssize_t __recvfrom (int __fd, void *__restrict __buf, size_t __n,
      int __flags, __SOCKADDR_ARG __addr,
      socklen_t *__restrict __addr_len) __attribute__ ((visibility ("hidden")));



extern ssize_t __libc_sendmsg (int __fd, __const struct msghdr *__message,
          int __flags);
extern ssize_t __sendmsg (int __fd, __const struct msghdr *__message,
     int __flags) __attribute__ ((visibility ("hidden")));



extern ssize_t __libc_recvmsg (int __fd, struct msghdr *__message,
          int __flags);
extern ssize_t __recvmsg (int __fd, struct msghdr *__message,
     int __flags) __attribute__ ((visibility ("hidden")));




extern int __setsockopt (int __fd, int __level, int __optname,
    __const void *__optval,
    socklen_t __optlen) __attribute__ ((visibility ("hidden")));




extern int __getsockopt (int __fd, int __level, int __optname,
    void *__restrict __optval,
    socklen_t *__restrict __optlen) __attribute__ ((visibility ("hidden")));


extern int __getsockname (int __fd, __SOCKADDR_ARG __addr,
     socklen_t *__restrict __len) __attribute__ ((visibility ("hidden")));


extern int __bind (int __fd, __CONST_SOCKADDR_ARG __addr,
     socklen_t __len) __attribute__ ((visibility ("hidden")));




extern int __listen (int __fd, int __n) __attribute__ ((visibility ("hidden")));






extern int __libc_accept (int __fd, __SOCKADDR_ARG __addr,
     socklen_t *__restrict __addr_len)
     __attribute__ ((__nothrow__));
extern __typeof (accept) accept __asm__ ("" "__GI_accept") __attribute__ ((visibility ("hidden")));





extern int __libc_sa_len (sa_family_t __af);
extern int __libc_sa_len_internal (sa_family_t __af) __attribute__ ((visibility ("hidden")));
# 25 "../inet/netinet/in.h" 2






enum
  {
    IPPROTO_IP = 0,

    IPPROTO_HOPOPTS = 0,

    IPPROTO_ICMP = 1,

    IPPROTO_IGMP = 2,

    IPPROTO_IPIP = 4,

    IPPROTO_TCP = 6,

    IPPROTO_EGP = 8,

    IPPROTO_PUP = 12,

    IPPROTO_UDP = 17,

    IPPROTO_IDP = 22,

    IPPROTO_TP = 29,

    IPPROTO_IPV6 = 41,

    IPPROTO_ROUTING = 43,

    IPPROTO_FRAGMENT = 44,

    IPPROTO_RSVP = 46,

    IPPROTO_GRE = 47,

    IPPROTO_ESP = 50,

    IPPROTO_AH = 51,

    IPPROTO_ICMPV6 = 58,

    IPPROTO_NONE = 59,

    IPPROTO_DSTOPTS = 60,

    IPPROTO_MTP = 92,

    IPPROTO_ENCAP = 98,

    IPPROTO_PIM = 103,

    IPPROTO_COMP = 108,

    IPPROTO_SCTP = 132,

    IPPROTO_RAW = 255,

    IPPROTO_MAX
  };



typedef uint16_t in_port_t;


enum
  {
    IPPORT_ECHO = 7,
    IPPORT_DISCARD = 9,
    IPPORT_SYSTAT = 11,
    IPPORT_DAYTIME = 13,
    IPPORT_NETSTAT = 15,
    IPPORT_FTP = 21,
    IPPORT_TELNET = 23,
    IPPORT_SMTP = 25,
    IPPORT_TIMESERVER = 37,
    IPPORT_NAMESERVER = 42,
    IPPORT_WHOIS = 43,
    IPPORT_MTP = 57,

    IPPORT_TFTP = 69,
    IPPORT_RJE = 77,
    IPPORT_FINGER = 79,
    IPPORT_TTYLINK = 87,
    IPPORT_SUPDUP = 95,


    IPPORT_EXECSERVER = 512,
    IPPORT_LOGINSERVER = 513,
    IPPORT_CMDSERVER = 514,
    IPPORT_EFSSERVER = 520,


    IPPORT_BIFFUDP = 512,
    IPPORT_WHOSERVER = 513,
    IPPORT_ROUTESERVER = 520,


    IPPORT_RESERVED = 1024,


    IPPORT_USERRESERVED = 5000
  };



typedef uint32_t in_addr_t;
struct in_addr
  {
    in_addr_t s_addr;
  };
# 193 "../inet/netinet/in.h"
struct in6_addr
  {
    union
      {
 uint8_t u6_addr8[16];
 uint16_t u6_addr16[8];
 uint32_t u6_addr32[4];
      } in6_u;



  };

extern const struct in6_addr in6addr_any;
extern const struct in6_addr in6addr_loopback;
# 219 "../inet/netinet/in.h"
struct sockaddr_in
  {
    sa_family_t sin_family;
    in_port_t sin_port;
    struct in_addr sin_addr;


    unsigned char sin_zero[sizeof (struct sockaddr) -
      (sizeof (unsigned short int)) -
      sizeof (in_port_t) -
      sizeof (struct in_addr)];
  };


struct sockaddr_in6
  {
    sa_family_t sin6_family;
    in_port_t sin6_port;
    uint32_t sin6_flowinfo;
    struct in6_addr sin6_addr;
    uint32_t sin6_scope_id;
  };



struct ip_mreq
  {

    struct in_addr imr_multiaddr;


    struct in_addr imr_interface;
  };

struct ip_mreq_source
  {

    struct in_addr imr_multiaddr;


    struct in_addr imr_interface;


    struct in_addr imr_sourceaddr;
  };


struct ipv6_mreq
  {

    struct in6_addr ipv6mr_multiaddr;


    unsigned int ipv6mr_interface;
  };



struct group_req
  {

    uint32_t gr_interface;


    struct sockaddr_storage gr_group;
  };

struct group_source_req
  {

    uint32_t gsr_interface;


    struct sockaddr_storage gsr_group;


    struct sockaddr_storage gsr_source;
  };



struct ip_msfilter
  {

    struct in_addr imsf_multiaddr;


    struct in_addr imsf_interface;


    uint32_t imsf_fmode;


    uint32_t imsf_numsrc;

    struct in_addr imsf_slist[1];
  };





struct group_filter
  {

    uint32_t gf_interface;


    struct sockaddr_storage gf_group;


    uint32_t gf_fmode;


    uint32_t gf_numsrc;

    struct sockaddr_storage gf_slist[1];
};
# 345 "../inet/netinet/in.h"
# 1 "../sysdeps/unix/sysv/linux/bits/in.h" 1
# 82 "../sysdeps/unix/sysv/linux/bits/in.h"
struct ip_opts
  {
    struct in_addr ip_dst;
    char ip_opts[40];
  };


struct ip_mreqn
  {
    struct in_addr imr_multiaddr;
    struct in_addr imr_address;
    int imr_ifindex;
  };


struct in_pktinfo
  {
    int ipi_ifindex;
    struct in_addr ipi_spec_dst;
    struct in_addr ipi_addr;
  };
# 346 "../inet/netinet/in.h" 2
# 354 "../inet/netinet/in.h"
extern uint32_t ntohl (uint32_t __netlong) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern uint16_t ntohs (uint16_t __netshort)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern uint32_t htonl (uint32_t __hostlong)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern uint16_t htons (uint16_t __hostshort)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__));

# 1 "../include/endian.h" 1
# 363 "../inet/netinet/in.h" 2


# 1 "../bits/byteswap.h" 1
# 366 "../inet/netinet/in.h" 2
# 428 "../inet/netinet/in.h"
extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __attribute__ ((__nothrow__));


extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
     __attribute__ ((__nothrow__));
# 456 "../inet/netinet/in.h"
struct in6_pktinfo
  {
    struct in6_addr ipi6_addr;
    unsigned int ipi6_ifindex;
  };


struct ip6_mtuinfo
  {
    struct sockaddr_in6 ip6m_addr;
    uint32_t ip6m_mtu;
  };




extern int inet6_option_space (int __nbytes)
     __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp,
         int __type) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
extern int inet6_option_append (struct cmsghdr *__cmsg,
    __const uint8_t *__typep, int __multx,
    int __plusy) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen,
        int __multx, int __plusy)
     __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
extern int inet6_option_next (__const struct cmsghdr *__cmsg,
         uint8_t **__tptrp)
     __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
extern int inet6_option_find (__const struct cmsghdr *__cmsg,
         uint8_t **__tptrp, int __type)
     __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));



extern int inet6_opt_init (void *__extbuf, socklen_t __extlen) __attribute__ ((__nothrow__));
extern int inet6_opt_append (void *__extbuf, socklen_t __extlen, int __offset,
        uint8_t __type, socklen_t __len, uint8_t __align,
        void **__databufp) __attribute__ ((__nothrow__));
extern int inet6_opt_finish (void *__extbuf, socklen_t __extlen, int __offset)
     __attribute__ ((__nothrow__));
extern int inet6_opt_set_val (void *__databuf, int __offset, void *__val,
         socklen_t __vallen) __attribute__ ((__nothrow__));
extern int inet6_opt_next (void *__extbuf, socklen_t __extlen, int __offset,
      uint8_t *__typep, socklen_t *__lenp,
      void **__databufp) __attribute__ ((__nothrow__));
extern int inet6_opt_find (void *__extbuf, socklen_t __extlen, int __offset,
      uint8_t __type, socklen_t *__lenp,
      void **__databufp) __attribute__ ((__nothrow__));
extern int inet6_opt_get_val (void *__databuf, int __offset, void *__val,
         socklen_t __vallen) __attribute__ ((__nothrow__));



extern socklen_t inet6_rth_space (int __type, int __segments) __attribute__ ((__nothrow__));
extern void *inet6_rth_init (void *__bp, socklen_t __bp_len, int __type,
        int __segments) __attribute__ ((__nothrow__));
extern int inet6_rth_add (void *__bp, __const struct in6_addr *__addr) __attribute__ ((__nothrow__));
extern int inet6_rth_reverse (__const void *__in, void *__out) __attribute__ ((__nothrow__));
extern int inet6_rth_segments (__const void *__bp) __attribute__ ((__nothrow__));
extern struct in6_addr *inet6_rth_getaddr (__const void *__bp, int __index)
     __attribute__ ((__nothrow__));





extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr,
    struct in_addr __group, uint32_t *__fmode,
    uint32_t *__numsrc, struct in_addr *__slist)
     __attribute__ ((__nothrow__));


extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr,
    struct in_addr __group, uint32_t __fmode,
    uint32_t __numsrc,
    __const struct in_addr *__slist)
     __attribute__ ((__nothrow__));



extern int getsourcefilter (int __s, uint32_t __interface_addr,
       __const struct sockaddr *__group,
       socklen_t __grouplen, uint32_t *__fmode,
       uint32_t *__numsrc,
       struct sockaddr_storage *__slist) __attribute__ ((__nothrow__));


extern int setsourcefilter (int __s, uint32_t __interface_addr,
       __const struct sockaddr *__group,
       socklen_t __grouplen, uint32_t __fmode,
       uint32_t __numsrc,
       __const struct sockaddr_storage *__slist) __attribute__ ((__nothrow__));



# 4 "../include/netinet/in.h" 2

extern __typeof (bindresvport) bindresvport __asm__ ("" "__GI_bindresvport") __attribute__ ((visibility ("hidden")));
extern __typeof (in6addr_loopback) in6addr_loopback __asm__ ("" "__GI_in6addr_loopback") __attribute__ ((visibility ("hidden")));
extern __typeof (in6addr_any) in6addr_any __asm__ ("" "__GI_in6addr_any") __attribute__ ((visibility ("hidden")));
# 58 "../resolv/resolv.h" 2
# 71 "../resolv/resolv.h"
typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error }
 res_sendhookact;

typedef res_sendhookact (*res_send_qhook) (struct sockaddr_in * const *ns,
        const u_char **query,
        int *querylen,
        u_char *ans,
        int anssiz,
        int *resplen);

typedef res_sendhookact (*res_send_rhook) (const struct sockaddr_in *ns,
        const u_char *query,
        int querylen,
        u_char *ans,
        int anssiz,
        int *resplen);
# 104 "../resolv/resolv.h"
struct __res_state {
 int retrans;
 int retry;
 u_long options;
 int nscount;
 struct sockaddr_in
  nsaddr_list[3];

 u_short id;
 char *dnsrch[6 +1];
 char defdname[256];
 u_long pfcode;
 unsigned ndots:4;
 unsigned nsort:4;
 char unused[3];
 struct {
  struct in_addr addr;
  u_int32_t mask;
 } sort_list[10];
 res_send_qhook qhook;
 res_send_rhook rhook;
 int res_h_errno;
 int _vcsock;
 u_int _flags;
 union {
  char pad[52];
  struct {
   u_int16_t nscount;
   u_int16_t nsmap[3];
   int nssocks[3];
   u_int16_t nscount6;
   u_int16_t nsinit;
   struct sockaddr_in6 *nsaddrs[3];

   unsigned long long int initstamp
     __attribute__((packed));



  } _ext;
 } _u;
};

typedef struct __res_state *res_state;
# 13 "../include/resolv.h" 2
# 40 "../nptl/descr.h" 2
# 65 "../nptl/descr.h"
struct pthread_unwind_buf
{
  struct
  {
    __jmp_buf jmp_buf;
    int mask_was_saved;
  } cancel_jmp_buf[1];

  union
  {

    void *pad[4];

    struct
    {

      struct pthread_unwind_buf *prev;




      struct _pthread_cleanup_buffer *cleanup;


      int canceltype;
    } data;
  } priv;
};




struct xid_command
{
  int syscall_no;
  long int id[3];
  volatile int cntr;
};



struct robust_list_head
{
  void *list;
  long int futex_offset;
  void *list_op_pending;
};



struct pthread
{
  union
  {




    struct
    {
      int multiple_threads;
    } header;






    void *__padding[16];
  };


  list_t list;



  pid_t tid;


  pid_t pid;
# 180 "../nptl/descr.h"
  union
  {
    __pthread_slist_t robust_list;
    struct robust_list_head robust_head;
  };
# 209 "../nptl/descr.h"
  struct _pthread_cleanup_buffer *cleanup;


  struct pthread_unwind_buf *cleanup_jmp_buf;



  int cancelhandling;
# 251 "../nptl/descr.h"
  struct pthread_key_data
  {



    uintptr_t seq;


    void *data;
  } specific_1stblock[32];


  struct pthread_key_data *specific[((1024 + 32 - 1) / 32)];


  _Bool specific_used;


  _Bool report_events;


  _Bool user_stack;


  _Bool stopped_start;


  lll_lock_t lock;


  lll_lock_t setxid_futex;
# 294 "../nptl/descr.h"
  struct pthread *joinid;




  int flags;


  void *result;


  struct sched_param schedparam;
  int schedpolicy;



  void *(*start_routine) (void *);
  void *arg;


  td_eventbuf_t eventbuf;

  struct pthread *nextevent;



  struct _Unwind_Exception exc;




  void *stackblock;
  size_t stackblock_size;

  size_t guardsize;

  size_t reported_guardsize;


  struct __res_state res;


  char end_padding[];



} __attribute ((aligned (16)));
# 67 "../nptl/sysdeps/powerpc/tls.h" 2




typedef struct
{
  uintptr_t pointer_guard;
  uintptr_t stack_guard;
  dtv_t *dtv;
} tcbhead_t;
# 97 "../nptl/sysdeps/powerpc/tls.h"
register void *__thread_register __asm__ ("r2");
# 7 "../include/tls.h" 2
# 46 "../bits/libc-tsd.h" 2
# 208 "../include/../locale/localeinfo.h" 2
extern __thread void *__libc_tsd_LOCALE __attribute__ ((tls_model ("initial-exec")));
# 298 "../include/../locale/localeinfo.h"
extern const char _nl_default_locale_path[] __attribute__ ((visibility ("hidden")));







extern struct locale_data *_nl_find_locale (const char *locale_path,
         size_t locale_path_len,
         int category, const char **name)
     __attribute__ ((visibility ("hidden")));


extern void _nl_load_locale (struct loaded_l10nfile *file, int category)
     __attribute__ ((visibility ("hidden")));


extern void _nl_unload_locale (struct locale_data *locale)
     __attribute__ ((visibility ("hidden")));


extern void _nl_remove_locale (int locale, struct locale_data *data)
     __attribute__ ((visibility ("hidden")));






extern struct locale_data *_nl_load_locale_from_archive (int category,
        const char **namep)
     __attribute__ ((visibility ("hidden")));


extern void _nl_archive_subfreeres (void) __attribute__ ((visibility ("hidden")));


extern void _nl_locale_subfreeres (void) __attribute__ ((visibility ("hidden")));






extern struct locale_data *_nl_intern_locale_data (int category,
         const void *data,
         size_t datasize)
     __attribute__ ((visibility ("hidden")));



extern struct era_entry *_nl_get_era_entry (const struct tm *tp,
         struct locale_data *lc_time)
     __attribute__ ((visibility ("hidden")));


extern struct era_entry *_nl_select_era_entry (int cnt,
            struct locale_data *lc_time)
          __attribute__ ((visibility ("hidden")));


extern const char *_nl_get_alt_digit (unsigned int number,
          struct locale_data *lc_time)
          __attribute__ ((visibility ("hidden")));


extern const wchar_t *_nl_get_walt_digit (unsigned int number,
       struct locale_data *lc_time)
     __attribute__ ((visibility ("hidden")));


extern int _nl_parse_alt_digit (const char **strp,
    struct locale_data *lc_time)
     __attribute__ ((visibility ("hidden")));


extern void _nl_postload_ctype (void);


extern void _nl_cleanup_time (struct locale_data *)
     __attribute__ ((visibility ("hidden")));
# 15 "../include/ctype.h" 2






extern __thread void *__libc_tsd_CTYPE_B __attribute__ ((tls_model ("initial-exec")));
extern __thread void *__libc_tsd_CTYPE_TOUPPER __attribute__ ((tls_model ("initial-exec")));
extern __thread void *__libc_tsd_CTYPE_TOLOWER __attribute__ ((tls_model ("initial-exec")));

extern inline const uint16_t ** __attribute__ ((const))
__ctype_b_loc (void)
{
  union
    {
      void **ptr;
      const uint16_t **tablep;
    } u;
  u.ptr = (&__libc_tsd_CTYPE_B);
  if (__builtin_expect (*u.tablep == ((void *)0), 0))
    *u.tablep = (const uint16_t *) ((((__locale_t) (__libc_tsd_LOCALE))->__locales[__LC_CTYPE])->values[((int) (_NL_CTYPE_CLASS) & 0xffff)].string) + 128;
  return u.tablep;
}

extern inline const int32_t ** __attribute__ ((const))
__ctype_toupper_loc (void)
{
  union
    {
      void **ptr;
      const int32_t **tablep;
    } u;
  u.ptr = (&__libc_tsd_CTYPE_TOUPPER);
  if (__builtin_expect (*u.tablep == ((void *)0), 0))
    *u.tablep = ((int32_t *) ((((__locale_t) (__libc_tsd_LOCALE))->__locales[__LC_CTYPE])->values[((int) (_NL_CTYPE_TOUPPER) & 0xffff)].string) + 128);
  return u.tablep;
}

extern inline const int32_t ** __attribute__ ((const))
__ctype_tolower_loc (void)
{
  union
    {
      void **ptr;
      const int32_t **tablep;
    } u;
  u.ptr = (&__libc_tsd_CTYPE_TOLOWER);
  if (__builtin_expect (*u.tablep == ((void *)0), 0))
    *u.tablep = ((int32_t *) ((((__locale_t) (__libc_tsd_LOCALE))->__locales[__LC_CTYPE])->values[((int) (_NL_CTYPE_TOLOWER) & 0xffff)].string) + 128);
  return u.tablep;
}



# 1 "../ctype/ctype.h" 1
# 30 "../ctype/ctype.h"

# 41 "../ctype/ctype.h"
# 1 "../include/endian.h" 1
# 42 "../ctype/ctype.h" 2






enum
{
  _ISupper = (1 << (0)),
  _ISlower = (1 << (1)),
  _ISalpha = (1 << (2)),
  _ISdigit = (1 << (3)),
  _ISxdigit = (1 << (4)),
  _ISspace = (1 << (5)),
  _ISprint = (1 << (6)),
  _ISgraph = (1 << (7)),
  _ISblank = (1 << (8)),
  _IScntrl = (1 << (9)),
  _ISpunct = (1 << (10)),
  _ISalnum = (1 << (11))
};
# 81 "../ctype/ctype.h"
extern __const unsigned short int **__ctype_b_loc (void)
     __attribute__ ((__const));
extern __const __int32_t **__ctype_tolower_loc (void)
     __attribute__ ((__const));
extern __const __int32_t **__ctype_toupper_loc (void)
     __attribute__ ((__const));
# 96 "../ctype/ctype.h"






extern int isalnum (int) __attribute__ ((__nothrow__));
extern int isalpha (int) __attribute__ ((__nothrow__));
extern int iscntrl (int) __attribute__ ((__nothrow__));
extern int isdigit (int) __attribute__ ((__nothrow__));
extern int islower (int) __attribute__ ((__nothrow__));
extern int isgraph (int) __attribute__ ((__nothrow__));
extern int isprint (int) __attribute__ ((__nothrow__));
extern int ispunct (int) __attribute__ ((__nothrow__));
extern int isspace (int) __attribute__ ((__nothrow__));
extern int isupper (int) __attribute__ ((__nothrow__));
extern int isxdigit (int) __attribute__ ((__nothrow__));



extern int tolower (int __c) __attribute__ ((__nothrow__));


extern int toupper (int __c) __attribute__ ((__nothrow__));








extern int isblank (int) __attribute__ ((__nothrow__));






extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__));






extern int isascii (int __c) __attribute__ ((__nothrow__));



extern int toascii (int __c) __attribute__ ((__nothrow__));



extern int _toupper (int) __attribute__ ((__nothrow__));
extern int _tolower (int) __attribute__ ((__nothrow__));
# 190 "../ctype/ctype.h"
extern __inline int
__attribute__ ((__nothrow__)) tolower (int __c)
{
  return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
}

extern __inline int
__attribute__ ((__nothrow__)) toupper (int __c)
{
  return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
}
# 233 "../ctype/ctype.h"
# 1 "../include/xlocale.h" 1
# 234 "../ctype/ctype.h" 2
# 247 "../ctype/ctype.h"
extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__));

extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__));



extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));


extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
# 323 "../ctype/ctype.h"

# 70 "../include/ctype.h" 2
# 33 "strtol_l.c" 2






# 1 "../include/limits.h" 1
# 145 "../include/limits.h"
# 1 "../include/bits/posix1_lim.h" 1
# 146 "../include/limits.h" 2



# 1 "../include/bits/posix2_lim.h" 1
# 150 "../include/limits.h" 2
# 40 "strtol_l.c" 2


# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 43 "strtol_l.c" 2

# 1 "../include/string.h" 1


# 1 "../include/sys/types.h" 1
# 4 "../include/string.h" 2

extern void *__memccpy (void *__dest, __const void *__src,
   int __c, size_t __n);

extern size_t __strnlen (__const char *__string, size_t __maxlen)
     __attribute__ ((__pure__));

extern char *__strsep (char **__stringp, __const char *__delim);

extern int __strverscmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__pure__));

extern int __strncasecmp (__const char *__s1, __const char *__s2,
     size_t __n)
     __attribute__ ((__pure__));

extern int __strcasecmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__pure__));

extern char *__strcasestr (__const char *__haystack, __const char *__needle)
     __attribute__ ((__pure__));

extern char *__strdup (__const char *__string)
     __attribute__ ((__malloc__));
extern char *__strndup (__const char *__string, size_t __n)
     __attribute__ ((__malloc__));

extern void *__rawmemchr (__const void *__s, int __c)
     __attribute__ ((__pure__));

extern char *__strchrnul (__const char *__s, int __c)
     __attribute__ ((__pure__));

extern void *__memrchr (__const void *__s, int __c, size_t __n)
     __attribute__ ((__pure__));

extern void *__memchr (__const void *__s, int __c, size_t __n)
     __attribute__ ((__pure__));

extern int __ffs (int __i) __attribute__ ((const));

extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen);



# 1 "../string/string.h" 1
# 28 "../string/string.h"





# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 34 "../string/string.h" 2




extern void *memcpy (void *__restrict __dest,
       __const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern void *memmove (void *__dest, __const void *__src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));






extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
        int __c, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));





extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern void *memchr (__const void *__s, int __c, size_t __n)
      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern void *rawmemchr (__const void *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));


extern void *memrchr (__const void *__s, int __c, size_t __n)
      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncpy (char *__restrict __dest,
        __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
        size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcoll (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern size_t strxfrm (char *__restrict __dest,
         __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));






# 1 "../include/xlocale.h" 1
# 119 "../string/string.h" 2


extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));

extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
    __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));




extern char *strdup (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));






extern char *strndup (__const char *__string, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
# 165 "../string/string.h"


extern char *strchr (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));

extern char *strrchr (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern char *strchrnul (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern size_t strcspn (__const char *__s, __const char *__reject)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern size_t strspn (__const char *__s, __const char *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strpbrk (__const char *__s, __const char *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strstr (__const char *__haystack, __const char *__needle)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));



extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));




extern char *__strtok_r (char *__restrict __s,
    __const char *__restrict __delim,
    char **__restrict __save_ptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));

extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
         char **__restrict __save_ptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));




extern char *strcasestr (__const char *__haystack, __const char *__needle)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));






extern void *memmem (__const void *__haystack, size_t __haystacklen,
       __const void *__needle, size_t __needlelen)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));



extern void *__mempcpy (void *__restrict __dest,
   __const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *mempcpy (void *__restrict __dest,
        __const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));





extern size_t strlen (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern size_t strnlen (__const char *__string, size_t __maxlen)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern char *strerror (int __errnum) __attribute__ ((__nothrow__));

# 281 "../string/string.h"
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));





extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern void bcopy (__const void *__src, void *__dest, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *index (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));


extern char *rindex (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));



extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));




extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__));

__extension__ extern int ffsll (long long int __ll)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__));




extern int strcasecmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));





extern int strcasecmp_l (__const char *__s1, __const char *__s2,
    __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));

extern int strncasecmp_l (__const char *__s1, __const char *__s2,
     size_t __n, __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));





extern char *strsep (char **__restrict __stringp,
       __const char *__restrict __delim)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));




extern int strverscmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *strsignal (int __sig) __attribute__ ((__nothrow__));


extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));



extern char *__stpncpy (char *__restrict __dest,
   __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpncpy (char *__restrict __dest,
        __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));






extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 414 "../string/string.h"
# 1 "../bits/string.h" 1
# 415 "../string/string.h" 2


# 1 "../include/bits/string2.h" 1
# 1 "../string/bits/string2.h" 1
# 80 "../string/bits/string2.h"
typedef struct { unsigned char __arr[2]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR2;
typedef struct { unsigned char __arr[3]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR3;
typedef struct { unsigned char __arr[4]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR4;
typedef struct { unsigned char __arr[5]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR5;
typedef struct { unsigned char __arr[6]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR6;
typedef struct { unsigned char __arr[7]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR7;
typedef struct { unsigned char __arr[8]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR8;
# 394 "../string/bits/string2.h"
extern void *__rawmemchr (const void *__s, int __c);
# 969 "../string/bits/string2.h"
extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, int __reject)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
         int __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
  && __s[__result] != __reject2)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
         int __reject2, int __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
       int __reject3)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
  && __s[__result] != __reject2 && __s[__result] != __reject3)
    ++__result;
  return __result;
}
# 1045 "../string/bits/string2.h"
extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, int __accept)
{
  register size_t __result = 0;

  while (__s[__result] == __accept)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
        int __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, int __accept1, int __accept2)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
        int __accept2, int __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2
  || __s[__result] == __accept3)
    ++__result;
  return __result;
}
# 1121 "../string/bits/string2.h"
extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
         int __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}

extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
         int __accept2, int __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
       int __accept3)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
  && *__s != __accept3)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1173 "../string/bits/string2.h"
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
  char *__result;
  if (__s == ((void *)0))
    __s = *__nextp;
  while (*__s == __sep)
    ++__s;
  __result = ((void *)0);
  if (*__s != '\0')
    {
      __result = __s++;
      while (*__s != '\0')
 if (*__s++ == __sep)
   {
     __s[-1] = '\0';
     break;
   }
      *__nextp = __s;
    }
  return __result;
}
# 1205 "../string/bits/string2.h"
extern char *__strsep_g (char **__stringp, __const char *__delim);
# 1223 "../string/bits/string2.h"
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
    *(*__s)++ = '\0';
  return __retval;
}

extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0))
    {
      register char *__cp = __retval;
      while (1)
 {
   if (*__cp == '\0')
     {
       __cp = ((void *)0);
   break;
     }
   if (*__cp == __reject1 || *__cp == __reject2)
     {
       *__cp++ = '\0';
       break;
     }
   ++__cp;
 }
      *__s = __cp;
    }
  return __retval;
}

extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
       char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0))
    {
      register char *__cp = __retval;
      while (1)
 {
   if (*__cp == '\0')
     {
       __cp = ((void *)0);
   break;
     }
   if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
     {
       *__cp++ = '\0';
       break;
     }
   ++__cp;
 }
      *__s = __cp;
    }
  return __retval;
}
# 1304 "../string/bits/string2.h"
extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
# 1323 "../string/bits/string2.h"
extern char *__strndup (__const char *__string, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
# 1 "../include/bits/string2.h" 2
# 418 "../string/string.h" 2
# 426 "../string/string.h"

# 50 "../include/string.h" 2

extern __typeof (strcoll_l) __strcoll_l;
extern __typeof (strxfrm_l) __strxfrm_l;
extern __typeof (strcasecmp_l) __strcasecmp_l;
extern __typeof (strncasecmp_l) __strncasecmp_l;
# 68 "../include/string.h"
extern __typeof (__mempcpy) __mempcpy __asm__ ("" "__GI___mempcpy") __attribute__ ((visibility ("hidden")));
extern __typeof (__stpcpy) __stpcpy __asm__ ("" "__GI___stpcpy") __attribute__ ((visibility ("hidden")));
extern __typeof (__stpncpy) __stpncpy __asm__ ("" "__GI___stpncpy") __attribute__ ((visibility ("hidden")));
extern __typeof (__rawmemchr) __rawmemchr __asm__ ("" "__GI___rawmemchr") __attribute__ ((visibility ("hidden")));
extern __typeof (__strcasecmp) __strcasecmp __asm__ ("" "__GI___strcasecmp") __attribute__ ((visibility ("hidden")));
extern __typeof (__strcasecmp_l) __strcasecmp_l __asm__ ("" "__GI___strcasecmp_l") __attribute__ ((visibility ("hidden")));
extern __typeof (__strncasecmp_l) __strncasecmp_l __asm__ ("" "__GI___strncasecmp_l") __attribute__ ((visibility ("hidden")));
extern __typeof (__strdup) __strdup __asm__ ("" "__GI___strdup") __attribute__ ((visibility ("hidden")));
extern __typeof (__strndup) __strndup __asm__ ("" "__GI___strndup") __attribute__ ((visibility ("hidden")));
extern __typeof (__strerror_r) __strerror_r __asm__ ("" "__GI___strerror_r") __attribute__ ((visibility ("hidden")));
extern __typeof (__strverscmp) __strverscmp __asm__ ("" "__GI___strverscmp") __attribute__ ((visibility ("hidden")));
extern __typeof (basename) basename __asm__ ("" "__GI_basename") __attribute__ ((visibility ("hidden")));
extern __typeof (strcoll) strcoll __asm__ ("" "__GI_strcoll") __attribute__ ((visibility ("hidden")));
extern __typeof (__strcoll_l) __strcoll_l __asm__ ("" "__GI___strcoll_l") __attribute__ ((visibility ("hidden")));
extern __typeof (__strxfrm_l) __strxfrm_l __asm__ ("" "__GI___strxfrm_l") __attribute__ ((visibility ("hidden")));
extern __typeof (__strtok_r) __strtok_r __asm__ ("" "__GI___strtok_r") __attribute__ ((visibility ("hidden")));
extern char *__strsep_g (char **__stringp, __const char *__delim);
extern __typeof (__strsep_g) __strsep_g __asm__ ("" "__GI___strsep_g") __attribute__ ((visibility ("hidden")));
extern __typeof (strnlen) strnlen __asm__ ("" "__GI_strnlen") __attribute__ ((visibility ("hidden")));

extern __typeof (memchr) memchr __asm__ ("" "__GI_memchr") __attribute__ ((visibility ("hidden")));
extern __typeof (memcpy) memcpy __asm__ ("" "__GI_memcpy") __attribute__ ((visibility ("hidden")));
extern __typeof (mempcpy) mempcpy __asm__ ("" "__GI_mempcpy") __attribute__ ((visibility ("hidden")));
extern __typeof (memcmp) memcmp __asm__ ("" "__GI_memcmp") __attribute__ ((visibility ("hidden")));
extern __typeof (memmove) memmove __asm__ ("" "__GI_memmove") __attribute__ ((visibility ("hidden")));
extern __typeof (memset) memset __asm__ ("" "__GI_memset") __attribute__ ((visibility ("hidden")));
extern __typeof (strcat) strcat __asm__ ("" "__GI_strcat") __attribute__ ((visibility ("hidden")));
extern __typeof (strchr) strchr __asm__ ("" "__GI_strchr") __attribute__ ((visibility ("hidden")));
extern __typeof (strcmp) strcmp __asm__ ("" "__GI_strcmp") __attribute__ ((visibility ("hidden")));
extern __typeof (strcpy) strcpy __asm__ ("" "__GI_strcpy") __attribute__ ((visibility ("hidden")));
extern __typeof (strcspn) strcspn __asm__ ("" "__GI_strcspn") __attribute__ ((visibility ("hidden")));
extern __typeof (strlen) strlen __asm__ ("" "__GI_strlen") __attribute__ ((visibility ("hidden")));
extern __typeof (strncmp) strncmp __asm__ ("" "__GI_strncmp") __attribute__ ((visibility ("hidden")));
extern __typeof (strncpy) strncpy __asm__ ("" "__GI_strncpy") __attribute__ ((visibility ("hidden")));
extern __typeof (strpbrk) strpbrk __asm__ ("" "__GI_strpbrk") __attribute__ ((visibility ("hidden")));
extern __typeof (stpcpy) stpcpy __asm__ ("" "__GI_stpcpy") __attribute__ ((visibility ("hidden")));
extern __typeof (strrchr) strrchr __asm__ ("" "__GI_strrchr") __attribute__ ((visibility ("hidden")));
extern __typeof (strspn) strspn __asm__ ("" "__GI_strspn") __attribute__ ((visibility ("hidden")));
extern __typeof (strstr) strstr __asm__ ("" "__GI_strstr") __attribute__ ((visibility ("hidden")));
extern __typeof (ffs) ffs __asm__ ("" "__GI_ffs") __attribute__ ((visibility ("hidden")));
# 118 "../include/string.h"
extern void *__memcpy_chk (void *__restrict __dest,
      const void *__restrict __src, size_t __len,
      size_t __destlen) __attribute__ ((__nothrow__));
extern void *__memmove_chk (void *__dest, const void *__src, size_t __len,
       size_t __destlen) __attribute__ ((__nothrow__));
extern void *__mempcpy_chk (void *__restrict __dest,
       const void *__restrict __src, size_t __len,
       size_t __destlen) __attribute__ ((__nothrow__));
extern void *__memset_chk (void *__dest, int __ch, size_t __len,
      size_t __destlen) __attribute__ ((__nothrow__));
extern char *__strcpy_chk (char *__restrict __dest,
      const char *__restrict __src,
      size_t __destlen) __attribute__ ((__nothrow__));
extern char *__stpcpy_chk (char *__restrict __dest,
      const char *__restrict __src,
      size_t __destlen) __attribute__ ((__nothrow__));
extern char *__strncpy_chk (char *__restrict __dest,
       const char *__restrict __src,
       size_t __len, size_t __destlen) __attribute__ ((__nothrow__));
extern char *__strcat_chk (char *__restrict __dest,
      const char *__restrict __src,
      size_t __destlen) __attribute__ ((__nothrow__));
extern char *__strncat_chk (char *__restrict __dest,
       const char *__restrict __src,
       size_t __len, size_t __destlen) __attribute__ ((__nothrow__));
# 45 "strtol_l.c" 2

# 1 "../include/xlocale.h" 1
# 47 "strtol_l.c" 2
# 1 "../sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h" 1
# 48 "strtol_l.c" 2


# 1 "../locale/localeinfo.h" 1
# 51 "strtol_l.c" 2
# 132 "strtol_l.c"
# 1 "../include/wchar.h" 1

# 1 "../wcsmbs/wchar.h" 1
# 37 "../wcsmbs/wchar.h"
# 1 "../include/stdio.h" 1


# 1 "../libio/stdio.h" 1
# 44 "../libio/stdio.h"


typedef struct _IO_FILE FILE;





# 62 "../libio/stdio.h"
typedef struct _IO_FILE __FILE;
# 4 "../include/stdio.h" 2
# 38 "../wcsmbs/wchar.h" 2


# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stdarg.h" 1 3 4
# 43 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 41 "../wcsmbs/wchar.h" 2







# 1 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 1 3 4
# 355 "/opt/biarch/gcc42-test/lib/gcc/powerpc64-linux/4.2.0/include/stddef.h" 3 4
typedef unsigned int wint_t;
# 49 "../wcsmbs/wchar.h" 2
# 76 "../wcsmbs/wchar.h"
typedef struct
{
  int __count;
  union
  {
    wint_t __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
# 93 "../wcsmbs/wchar.h"


typedef __mbstate_t mbstate_t;



# 118 "../wcsmbs/wchar.h"





struct tm;









extern wchar_t *wcscpy (wchar_t *__restrict __dest,
   __const wchar_t *__restrict __src) __attribute__ ((__nothrow__));

extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
    __const wchar_t *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__));


extern wchar_t *wcscat (wchar_t *__restrict __dest,
   __const wchar_t *__restrict __src) __attribute__ ((__nothrow__));

extern wchar_t *wcsncat (wchar_t *__restrict __dest,
    __const wchar_t *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__));


extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));

extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));




extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) __attribute__ ((__nothrow__));


extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
   size_t __n) __attribute__ ((__nothrow__));



# 1 "../include/xlocale.h" 1
# 167 "../wcsmbs/wchar.h" 2

extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
    __locale_t __loc) __attribute__ ((__nothrow__));

extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
     size_t __n, __locale_t __loc) __attribute__ ((__nothrow__));





extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __attribute__ ((__nothrow__));



extern size_t wcsxfrm (wchar_t *__restrict __s1,
         __const wchar_t *__restrict __s2, size_t __n) __attribute__ ((__nothrow__));








extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2,
        __locale_t __loc) __attribute__ ((__nothrow__));




extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
    size_t __n, __locale_t __loc) __attribute__ ((__nothrow__));


extern wchar_t *wcsdup (__const wchar_t *__s) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));




extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));

extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));





extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));





extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));


extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));

extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));

extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));


extern wchar_t *wcstok (wchar_t *__restrict __s,
   __const wchar_t *__restrict __delim,
   wchar_t **__restrict __ptr) __attribute__ ((__nothrow__));


extern size_t wcslen (__const wchar_t *__s) __attribute__ ((__nothrow__)) __attribute__ ((__pure__));




extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));




extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));





extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));


extern int wmemcmp (__const wchar_t *__restrict __s1,
      __const wchar_t *__restrict __s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__));


extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
    __const wchar_t *__restrict __s2, size_t __n) __attribute__ ((__nothrow__));



extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
     __attribute__ ((__nothrow__));


extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __attribute__ ((__nothrow__));





extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
     __const wchar_t *__restrict __s2, size_t __n)
     __attribute__ ((__nothrow__));






extern wint_t btowc (int __c) __attribute__ ((__nothrow__));



extern int wctob (wint_t __c) __attribute__ ((__nothrow__));



extern int mbsinit (__const mbstate_t *__ps) __attribute__ ((__nothrow__)) __attribute__ ((__pure__));



extern size_t mbrtowc (wchar_t *__restrict __pwc,
         __const char *__restrict __s, size_t __n,
         mbstate_t *__p) __attribute__ ((__nothrow__));


extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
         mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));


extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
   mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));
extern size_t mbrlen (__const char *__restrict __s, size_t __n,
        mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));

# 328 "../wcsmbs/wchar.h"
extern wint_t __btowc_alias (int __c) __asm ("btowc");
extern __inline wint_t
__attribute__ ((__nothrow__)) btowc (int __c)
{ return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f'
   ? (wint_t) __c : __btowc_alias (__c)); }

extern int __wctob_alias (wint_t __c) __asm ("wctob");
extern __inline int
__attribute__ ((__nothrow__)) wctob (wint_t __wc)
{ return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f'
   ? (int) __wc : __wctob_alias (__wc)); }


extern __inline size_t
__attribute__ ((__nothrow__)) mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps)

{ return (__ps != ((void *)0)
   ? mbrtowc (((void *)0), __s, __n, __ps) : __mbrlen (__s, __n, ((void *)0))); }





extern size_t mbsrtowcs (wchar_t *__restrict __dst,
    __const char **__restrict __src, size_t __len,
    mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));



extern size_t wcsrtombs (char *__restrict __dst,
    __const wchar_t **__restrict __src, size_t __len,
    mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));






extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
     __const char **__restrict __src, size_t __nmc,
     size_t __len, mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));



extern size_t wcsnrtombs (char *__restrict __dst,
     __const wchar_t **__restrict __src,
     size_t __nwc, size_t __len,
     mbstate_t *__restrict __ps) __attribute__ ((__nothrow__));






extern int wcwidth (wchar_t __c) __attribute__ ((__nothrow__));



extern int wcswidth (__const wchar_t *__s, size_t __n) __attribute__ ((__nothrow__));






extern double wcstod (__const wchar_t *__restrict __nptr,
        wchar_t **__restrict __endptr) __attribute__ ((__nothrow__));



extern float wcstof (__const wchar_t *__restrict __nptr,
       wchar_t **__restrict __endptr) __attribute__ ((__nothrow__));
extern long double wcstold (__const wchar_t *__restrict __nptr,
       wchar_t **__restrict __endptr) __attribute__ ((__nothrow__));





extern long int wcstol (__const wchar_t *__restrict __nptr,
   wchar_t **__restrict __endptr, int __base) __attribute__ ((__nothrow__));



extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
      wchar_t **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__));




__extension__
extern long long int wcstoll (__const wchar_t *__restrict __nptr,
         wchar_t **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__));



__extension__
extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr,
     wchar_t **__restrict __endptr,
     int __base) __attribute__ ((__nothrow__));






__extension__
extern long long int wcstoq (__const wchar_t *__restrict __nptr,
        wchar_t **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__));



__extension__
extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr,
           wchar_t **__restrict __endptr,
           int __base) __attribute__ ((__nothrow__));
# 463 "../wcsmbs/wchar.h"
# 1 "../include/xlocale.h" 1
# 464 "../wcsmbs/wchar.h" 2



extern long int wcstol_l (__const wchar_t *__restrict __nptr,
     wchar_t **__restrict __endptr, int __base,
     __locale_t __loc) __attribute__ ((__nothrow__));

extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr,
        wchar_t **__restrict __endptr,
        int __base, __locale_t __loc) __attribute__ ((__nothrow__));

__extension__
extern long long int wcstoll_l (__const wchar_t *__restrict __nptr,
    wchar_t **__restrict __endptr,
    int __base, __locale_t __loc) __attribute__ ((__nothrow__));

__extension__
extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr,
       wchar_t **__restrict __endptr,
       int __base, __locale_t __loc)
     __attribute__ ((__nothrow__));

extern double wcstod_l (__const wchar_t *__restrict __nptr,
   wchar_t **__restrict __endptr, __locale_t __loc)
     __attribute__ ((__nothrow__));

extern float wcstof_l (__const wchar_t *__restrict __nptr,
         wchar_t **__restrict __endptr, __locale_t __loc)
     __attribute__ ((__nothrow__));

extern long double wcstold_l (__const wchar_t *__restrict __nptr,
         wchar_t **__restrict __endptr,
         __locale_t __loc) __attribute__ ((__nothrow__));





extern double __wcstod_internal (__const wchar_t *__restrict __nptr,
     wchar_t **__restrict __endptr, int __group)
     __attribute__ ((__nothrow__));
extern float __wcstof_internal (__const wchar_t *__restrict __nptr,
    wchar_t **__restrict __endptr, int __group)
     __attribute__ ((__nothrow__));
extern long double __wcstold_internal (__const wchar_t *__restrict __nptr,
           wchar_t **__restrict __endptr,
           int __group) __attribute__ ((__nothrow__));



extern long int __wcstol_internal (__const wchar_t *__restrict __nptr,
       wchar_t **__restrict __endptr,
       int __base, int __group) __attribute__ ((__nothrow__));




extern unsigned long int __wcstoul_internal (__const wchar_t *__restrict __npt,
          wchar_t **__restrict __endptr,
          int __base, int __group) __attribute__ ((__nothrow__));




__extension__
extern long long int __wcstoll_internal (__const wchar_t *__restrict __nptr,
      wchar_t **__restrict __endptr,
      int __base, int __group) __attribute__ ((__nothrow__));




__extension__
extern unsigned long long int __wcstoull_internal (__const wchar_t *
         __restrict __nptr,
         wchar_t **
         __restrict __endptr,
         int __base,
         int __group) __attribute__ ((__nothrow__));








extern __inline double
__attribute__ ((__nothrow__)) wcstod (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr)

{ return __wcstod_internal (__nptr, __endptr, 0); }
extern __inline long int
__attribute__ ((__nothrow__)) wcstol (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)

{ return __wcstol_internal (__nptr, __endptr, __base, 0); }
extern __inline unsigned long int
__attribute__ ((__nothrow__)) wcstoul (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)

{ return __wcstoul_internal (__nptr, __endptr, __base, 0); }



extern __inline float
__attribute__ ((__nothrow__)) wcstof (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr)

{ return __wcstof_internal (__nptr, __endptr, 0); }

extern __inline long double
__attribute__ ((__nothrow__)) wcstold (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr)

{ return __wcstold_internal (__nptr, __endptr, 0); }

__extension__
extern __inline long long int
__attribute__ ((__nothrow__)) wcstoq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)

{ return __wcstoll_internal (__nptr, __endptr, __base, 0); }
__extension__
extern __inline unsigned long long int
__attribute__ ((__nothrow__)) wcstouq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)

{ return __wcstoull_internal (__nptr, __endptr, __base, 0); }







extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __attribute__ ((__nothrow__));



extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
     __attribute__ ((__nothrow__));








extern int fwide (__FILE *__fp, int __mode) __attribute__ ((__nothrow__));






extern int fwprintf (__FILE *__restrict __stream,
       __const wchar_t *__restrict __format, ...)
                                                           ;




extern int wprintf (__const wchar_t *__restrict __format, ...)
                                                           ;

extern int swprintf (wchar_t *__restrict __s, size_t __n,
       __const wchar_t *__restrict __format, ...)
     __attribute__ ((__nothrow__)) ;





extern int vfwprintf (__FILE *__restrict __s,
        __const wchar_t *__restrict __format,
        __gnuc_va_list __arg)
                                                           ;




extern int vwprintf (__const wchar_t *__restrict __format,
       __gnuc_va_list __arg)
                                                           ;


extern int vswprintf (wchar_t *__restrict __s, size_t __n,
        __const wchar_t *__restrict __format,
        __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) ;






extern int fwscanf (__FILE *__restrict __stream,
      __const wchar_t *__restrict __format, ...)
                                                          ;




extern int wscanf (__const wchar_t *__restrict __format, ...)
                                                          ;

extern int swscanf (__const wchar_t *__restrict __s,
      __const wchar_t *__restrict __format, ...)
     __attribute__ ((__nothrow__)) ;











extern int vfwscanf (__FILE *__restrict __s,
       __const wchar_t *__restrict __format,
       __gnuc_va_list __arg)
                                                          ;




extern int vwscanf (__const wchar_t *__restrict __format,
      __gnuc_va_list __arg)
                                                          ;

extern int vswscanf (__const wchar_t *__restrict __s,
       __const wchar_t *__restrict __format,
       __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) ;










extern wint_t fgetwc (__FILE *__stream);
extern wint_t getwc (__FILE *__stream);





extern wint_t getwchar (void);






extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
extern wint_t putwc (wchar_t __wc, __FILE *__stream);





extern wint_t putwchar (wchar_t __wc);







extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
   __FILE *__restrict __stream);





extern int fputws (__const wchar_t *__restrict __ws,
     __FILE *__restrict __stream);






extern wint_t ungetwc (wint_t __wc, __FILE *__stream);

# 761 "../wcsmbs/wchar.h"
extern wint_t getwc_unlocked (__FILE *__stream);
extern wint_t getwchar_unlocked (void);







extern wint_t fgetwc_unlocked (__FILE *__stream);







extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
# 787 "../wcsmbs/wchar.h"
extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
extern wint_t putwchar_unlocked (wchar_t __wc);
# 797 "../wcsmbs/wchar.h"
extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
     __FILE *__restrict __stream);







extern int fputws_unlocked (__const wchar_t *__restrict __ws,
       __FILE *__restrict __stream);







extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
   __const wchar_t *__restrict __format,
   __const struct tm *__restrict __tp) __attribute__ ((__nothrow__));



# 1 "../include/xlocale.h" 1
# 822 "../wcsmbs/wchar.h" 2



extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
     __const wchar_t *__restrict __format,
     __const struct tm *__restrict __tp,
     __locale_t __loc) __attribute__ ((__nothrow__));
# 851 "../wcsmbs/wchar.h"

# 3 "../include/wchar.h" 2



extern __typeof (wcscasecmp_l) __wcscasecmp_l;
extern __typeof (wcsncasecmp_l) __wcsncasecmp_l;
extern __typeof (wcscoll_l) __wcscoll_l;
extern __typeof (wcsxfrm_l) __wcsxfrm_l;
extern __typeof (wcstol_l) __wcstol_l;
extern __typeof (wcstoul_l) __wcstoul_l;
extern __typeof (wcstoll_l) __wcstoll_l;
extern __typeof (wcstoull_l) __wcstoull_l;
extern __typeof (wcstod_l) __wcstod_l;
extern __typeof (wcstof_l) __wcstof_l;
extern __typeof (wcstold_l) __wcstold_l;
extern __typeof (wcsftime_l) __wcsftime_l;
extern __typeof (__wcsftime_l) __wcsftime_l __asm__ ("" "__GI___wcsftime_l") __attribute__ ((visibility ("hidden")));


extern __typeof (__wcstof_internal) __wcstof_internal __asm__ ("" "__GI___wcstof_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__wcstod_internal) __wcstod_internal __asm__ ("" "__GI___wcstod_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__wcstold_internal) __wcstold_internal __asm__ ("" "__GI___wcstold_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__wcstol_internal) __wcstol_internal __asm__ ("" "__GI___wcstol_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__wcstoll_internal) __wcstoll_internal __asm__ ("" "__GI___wcstoll_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__wcstoul_internal) __wcstoul_internal __asm__ ("" "__GI___wcstoul_internal") __attribute__ ((visibility ("hidden")));
extern __typeof (__wcstoull_internal) __wcstoull_internal __asm__ ("" "__GI___wcstoull_internal") __attribute__ ((visibility ("hidden")));

extern __typeof (__wcscasecmp_l) __wcscasecmp_l __asm__ ("" "__GI___wcscasecmp_l") __attribute__ ((visibility ("hidden")));
extern __typeof (__wcsncasecmp_l) __wcsncasecmp_l __asm__ ("" "__GI___wcsncasecmp_l") __attribute__ ((visibility ("hidden")));

extern __typeof (__wcscoll_l) __wcscoll_l __asm__ ("" "__GI___wcscoll_l") __attribute__ ((visibility ("hidden")));
extern __typeof (__wcsxfrm_l) __wcsxfrm_l __asm__ ("" "__GI___wcsxfrm_l") __attribute__ ((visibility ("hidden")));

extern __typeof (fputws_unlocked) fputws_unlocked __asm__ ("" "__GI_fputws_unlocked") __attribute__ ((visibility ("hidden")));
extern __typeof (putwc_unlocked) putwc_unlocked __asm__ ("" "__GI_putwc_unlocked") __attribute__ ((visibility ("hidden")));
extern __typeof (putwc) putwc __asm__ ("" "__GI_putwc") __attribute__ ((visibility ("hidden")));

extern __typeof (vswscanf) vswscanf __asm__ ("" "__GI_vswscanf") __attribute__ ((visibility ("hidden")));

extern __typeof (mbrtowc) mbrtowc __asm__ ("" "__GI_mbrtowc") __attribute__ ((visibility ("hidden")));
extern __typeof (wcrtomb) wcrtomb __asm__ ("" "__GI_wcrtomb") __attribute__ ((visibility ("hidden")));
extern __typeof (wcscmp) wcscmp __asm__ ("" "__GI_wcscmp") __attribute__ ((visibility ("hidden")));
extern __typeof (wcsftime) wcsftime __asm__ ("" "__GI_wcsftime") __attribute__ ((visibility ("hidden")));
extern __typeof (wcsspn) wcsspn __asm__ ("" "__GI_wcsspn") __attribute__ ((visibility ("hidden")));
extern __typeof (wcschr) wcschr __asm__ ("" "__GI_wcschr") __attribute__ ((visibility ("hidden")));
extern __typeof (wcscoll) wcscoll __asm__ ("" "__GI_wcscoll") __attribute__ ((visibility ("hidden")));
extern __typeof (wcspbrk) wcspbrk __asm__ ("" "__GI_wcspbrk") __attribute__ ((visibility ("hidden")));

extern __typeof (wmemchr) wmemchr __asm__ ("" "__GI_wmemchr") __attribute__ ((visibility ("hidden")));
extern __typeof (wmemset) wmemset __asm__ ("" "__GI_wmemset") __attribute__ ((visibility ("hidden")));


extern int __wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2)
     __attribute__ ((__pure__));
extern int __wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
     size_t __n)
     __attribute__ ((__pure__));
extern size_t __wcslen (__const wchar_t *__s) __attribute__ ((__pure__));
extern size_t __wcsnlen (__const wchar_t *__s, size_t __maxlen)
     __attribute__ ((__pure__));
extern wchar_t *__wcscat (wchar_t *dest, const wchar_t *src);
extern wint_t __btowc (int __c);
extern int __mbsinit (__const __mbstate_t *__ps);
extern size_t __mbrtowc (wchar_t *__restrict __pwc,
    __const char *__restrict __s, size_t __n,
    __mbstate_t *__restrict __p);
extern __typeof (__mbrtowc) __mbrtowc __asm__ ("" "__GI___mbrtowc") __attribute__ ((visibility ("hidden")));
extern __typeof (__mbrlen) __mbrlen __asm__ ("" "__GI___mbrlen") __attribute__ ((visibility ("hidden")));
extern size_t __wcrtomb (char *__restrict __s, wchar_t __wc,
    __mbstate_t *__restrict __ps);
extern size_t __mbsrtowcs (wchar_t *__restrict __dst,
      __const char **__restrict __src,
      size_t __len, __mbstate_t *__restrict __ps);
extern size_t __wcsrtombs (char *__restrict __dst,
      __const wchar_t **__restrict __src,
      size_t __len, __mbstate_t *__restrict __ps);
extern size_t __mbsnrtowcs (wchar_t *__restrict __dst,
       __const char **__restrict __src, size_t __nmc,
       size_t __len, __mbstate_t *__restrict __ps);
extern size_t __wcsnrtombs (char *__restrict __dst,
       __const wchar_t **__restrict __src,
       size_t __nwc, size_t __len,
       __mbstate_t *__restrict __ps);
extern wchar_t *__wcsncpy (wchar_t *__restrict __dest,
    __const wchar_t *__restrict __src, size_t __n);
extern wchar_t *__wcpcpy (wchar_t *__dest, __const wchar_t *__src);
extern wchar_t *__wcpncpy (wchar_t *__dest, __const wchar_t *__src,
      size_t __n);
extern wchar_t *__wmemcpy (wchar_t *__s1, __const wchar_t *s2,
      size_t __n);
extern wchar_t *__wmempcpy (wchar_t *__restrict __s1,
       __const wchar_t *__restrict __s2,
       size_t __n);
extern wchar_t *__wmemmove (wchar_t *__s1, __const wchar_t *__s2,
       size_t __n);
extern wchar_t *__wcschrnul (__const wchar_t *__s, wchar_t __wc)
     __attribute__ ((__pure__));

extern int __vfwscanf (__FILE *__restrict __s,
         __const wchar_t *__restrict __format,
         __gnuc_va_list __arg)
                                                         ;
extern int __vswprintf (wchar_t *__restrict __s, size_t __n,
   __const wchar_t *__restrict __format,
   __gnuc_va_list __arg)
                                                           ;
extern int __fwprintf (__FILE *__restrict __s,
         __const wchar_t *__restrict __format, ...)
                                                           ;
extern int __vfwprintf (__FILE *__restrict __s,
   __const wchar_t *__restrict __format,
   __gnuc_va_list __arg)
                                                           ;
extern int __vfwprintf_chk (FILE *__restrict __s, int __flag,
       const wchar_t *__restrict __format,
       __gnuc_va_list __arg)
                                                           ;
extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
       int __flag, size_t __s_len,
       __const wchar_t *__restrict __format,
       __gnuc_va_list __arg)
                                                           ;
extern __typeof (__vfwprintf_chk) __vfwprintf_chk __asm__ ("" "__GI___vfwprintf_chk") __attribute__ ((visibility ("hidden")));
extern __typeof (__vswprintf_chk) __vswprintf_chk __asm__ ("" "__GI___vswprintf_chk") __attribute__ ((visibility ("hidden")));


extern size_t __mbsrtowcs_l (wchar_t *dst, const char **src, size_t len,
        mbstate_t *ps, __locale_t l) __attribute__ ((visibility ("hidden")));
# 133 "strtol_l.c" 2
# 164 "strtol_l.c"
# 1 "grouping.h" 1
# 24 "grouping.h"
extern const wchar_t *__correctly_grouped_prefixwc (const wchar_t *begin,
          const wchar_t *end,
          wchar_t thousands,
          const char *grouping)
     __attribute__ ((visibility ("hidden")));

extern const char *__correctly_grouped_prefixmb (const char *begin,
       const char *end,
       const char *thousands,
       const char *grouping)
     __attribute__ ((visibility ("hidden")));
# 165 "strtol_l.c" 2
# 183 "strtol_l.c"
  const unsigned long __strtol_ul_max_tab[] __attribute__ ((visibility ("hidden"))) __attribute__((section(".gnu.linkonce.r." "__strtol_ul_max_tab"))) = { (2147483647L * 2UL + 1UL) / 2, (2147483647L * 2UL + 1UL) / 3, (2147483647L * 2UL + 1UL) / 4, (2147483647L * 2UL + 1UL) / 5, (2147483647L * 2UL + 1UL) / 6, (2147483647L * 2UL + 1UL) / 7, (2147483647L * 2UL + 1UL) / 8, (2147483647L * 2UL + 1UL) / 9, (2147483647L * 2UL + 1UL) / 10, (2147483647L * 2UL + 1UL) / 11, (2147483647L * 2UL + 1UL) / 12, (2147483647L * 2UL + 1UL) / 13, (2147483647L * 2UL + 1UL) / 14, (2147483647L * 2UL + 1UL) / 15, (2147483647L * 2UL + 1UL) / 16, (2147483647L * 2UL + 1UL) / 17, (2147483647L * 2UL + 1UL) / 18, (2147483647L * 2UL + 1UL) / 19, (2147483647L * 2UL + 1UL) / 20, (2147483647L * 2UL + 1UL) / 21, (2147483647L * 2UL + 1UL) / 22, (2147483647L * 2UL + 1UL) / 23, (2147483647L * 2UL + 1UL) / 24, (2147483647L * 2UL + 1UL) / 25, (2147483647L * 2UL + 1UL) / 26, (2147483647L * 2UL + 1UL) / 27, (2147483647L * 2UL + 1UL) / 28, (2147483647L * 2UL + 1UL) / 29, (2147483647L * 2UL + 1UL) / 30, (2147483647L * 2UL + 1UL) / 31, (2147483647L * 2UL + 1UL) / 32, (2147483647L * 2UL + 1UL) / 33, (2147483647L * 2UL + 1UL) / 34, (2147483647L * 2UL + 1UL) / 35, (2147483647L * 2UL + 1UL) / 36 };
# 194 "strtol_l.c"
  const unsigned char __strtol_ul_rem_tab[] __attribute__ ((visibility ("hidden"))) __attribute__((section(".gnu.linkonce.r." "__strtol_ul_rem_tab"))) = { (2147483647L * 2UL + 1UL) % 2, (2147483647L * 2UL + 1UL) % 3, (2147483647L * 2UL + 1UL) % 4, (2147483647L * 2UL + 1UL) % 5, (2147483647L * 2UL + 1UL) % 6, (2147483647L * 2UL + 1UL) % 7, (2147483647L * 2UL + 1UL) % 8, (2147483647L * 2UL + 1UL) % 9, (2147483647L * 2UL + 1UL) % 10, (2147483647L * 2UL + 1UL) % 11, (2147483647L * 2UL + 1UL) % 12, (2147483647L * 2UL + 1UL) % 13, (2147483647L * 2UL + 1UL) % 14, (2147483647L * 2UL + 1UL) % 15, (2147483647L * 2UL + 1UL) % 16, (2147483647L * 2UL + 1UL) % 17, (2147483647L * 2UL + 1UL) % 18, (2147483647L * 2UL + 1UL) % 19, (2147483647L * 2UL + 1UL) % 20, (2147483647L * 2UL + 1UL) % 21, (2147483647L * 2UL + 1UL) % 22, (2147483647L * 2UL + 1UL) % 23, (2147483647L * 2UL + 1UL) % 24, (2147483647L * 2UL + 1UL) % 25, (2147483647L * 2UL + 1UL) % 26, (2147483647L * 2UL + 1UL) % 27, (2147483647L * 2UL + 1UL) % 28, (2147483647L * 2UL + 1UL) % 29, (2147483647L * 2UL + 1UL) % 30, (2147483647L * 2UL + 1UL) % 31, (2147483647L * 2UL + 1UL) % 32, (2147483647L * 2UL + 1UL) % 33, (2147483647L * 2UL + 1UL) % 34, (2147483647L * 2UL + 1UL) % 35, (2147483647L * 2UL + 1UL) % 36 };
# 218 "strtol_l.c"
unsigned long int
____strtoul_l_internal (nptr, endptr, base, group, loc)
     const char *nptr;
     char **endptr;
     int base;
     int group;
     __locale_t loc;
{
  int negative;
  register unsigned long int cutoff;
  register unsigned int cutlim;
  register unsigned long int i;
  register const char *s;
  register unsigned char c;
  const char *save, *end;
  int overflow;

  size_t cnt;



  struct locale_data *current = loc->__locales[__LC_NUMERIC];




  const char *thousands = ((void *)0);
  size_t thousands_len = 0;



  const char *grouping;

  if (__builtin_expect (group, 0))
    {
      grouping = (current->values[((int) (__GROUPING) & 0xffff)].string);
      if (*grouping <= 0 || *grouping == (127 * 2 + 1))
 grouping = ((void *)0);
      else
 {
# 268 "strtol_l.c"
   thousands = (current->values[((int) (__THOUSANDS_SEP) & 0xffff)].string);

   if (*thousands == '\0')
     {
       thousands = ((void *)0);
       grouping = ((void *)0);
     }

 }
    }
  else
    grouping = ((void *)0);


  if (base < 0 || base == 1 || base > 36)
    {
      ((*__errno_location ()) = (22));
      return 0;
    }

  save = s = nptr;


  while ((((loc))->__ctype_b[(int) (((*s)))] & (unsigned short int) _ISspace))
    ++s;
  if (__builtin_expect (*s == '\0', 0))
    goto noconv;


  negative = 0;
  if (*s == '-')
    {
      negative = 1;
      ++s;
    }
  else if (*s == '+')
    ++s;


  if (*s == '0')
    {
      if ((base == 0 || base == 16) && (__extension__ ({ int __res; if (sizeof ((s[1])) > 1) { if (__builtin_constant_p ((s[1]))) { int __c = ((s[1])); __res = __c < -128 || __c > 255 ? __c : ((loc)->__ctype_toupper)[__c]; } else __res = __toupper_l ((s[1]), loc); } else __res = ((loc)->__ctype_toupper)[(int) ((s[1]))]; __res; })) == 'X')
 {
   s += 2;
   base = 16;
 }
      else if (base == 0)
 base = 8;
    }
  else if (base == 0)
    base = 10;


  save = s;


  if (base != 10)
    grouping = ((void *)0);

  if (__builtin_expect (grouping != ((void *)0), 0))
    {

      thousands_len = strlen (thousands);



      end = s;
      if (



   ({ for (cnt = 0; cnt < thousands_len; ++cnt)
        if (thousands[cnt] != end[cnt])
   break;
      cnt < thousands_len; })

   )
 {
   for (c = *end; c != '\0'; c = *++end)
     if (((char) c < '0' || (char) c > '9')



  && ({ for (cnt = 0; cnt < thousands_len; ++cnt)
        if (thousands[cnt] != end[cnt])
   break;
        cnt < thousands_len; })

  && (!(((loc))->__ctype_b[(int) (((c)))] & (unsigned short int) _ISalpha)
      || (int) ((__extension__ ({ int __res; if (sizeof ((c)) > 1) { if (__builtin_constant_p ((c))) { int __c = ((c)); __res = __c < -128 || __c > 255 ? __c : ((loc)->__ctype_toupper)[__c]; } else __res = __toupper_l ((c), loc); } else __res = ((loc)->__ctype_toupper)[(int) ((c))]; __res; })) - 'A' + 10) >= base))
       break;




   end = __correctly_grouped_prefixmb (s, end, thousands, grouping);

 }
    }
  else

    end = ((void *)0);


  cutoff = __strtol_ul_max_tab[base - 2];
  cutlim = __strtol_ul_rem_tab[base - 2];

  overflow = 0;
  i = 0;
  c = *s;
  if (sizeof (long int) != sizeof (long int))
    {
      unsigned long int j = 0;
      unsigned long int jmax = __strtol_ul_max_tab[base - 2];

      for (;c != '\0'; c = *++s)
 {
   if (s == end)
     break;
   if (c >= '0' && c <= '9')
     c -= '0';





   else if (thousands_len)
     {
       for (cnt = 0; cnt < thousands_len; ++cnt)
  if (thousands[cnt] != s[cnt])
    break;
       if (cnt == thousands_len)
  {
    s += thousands_len - 1;
    continue;
  }
       if ((((loc))->__ctype_b[(int) (((c)))] & (unsigned short int) _ISalpha))
  c = (__extension__ ({ int __res; if (sizeof ((c)) > 1) { if (__builtin_constant_p ((c))) { int __c = ((c)); __res = __c < -128 || __c > 255 ? __c : ((loc)->__ctype_toupper)[__c]; } else __res = __toupper_l ((c), loc); } else __res = ((loc)->__ctype_toupper)[(int) ((c))]; __res; })) - 'A' + 10;
       else
  break;
     }


   else if ((((loc))->__ctype_b[(int) (((c)))] & (unsigned short int) _ISalpha))
     c = (__extension__ ({ int __res; if (sizeof ((c)) > 1) { if (__builtin_constant_p ((c))) { int __c = ((c)); __res = __c < -128 || __c > 255 ? __c : ((loc)->__ctype_toupper)[__c]; } else __res = __toupper_l ((c), loc); } else __res = ((loc)->__ctype_toupper)[(int) ((c))]; __res; })) - 'A' + 10;
   else
     break;
   if ((int) c >= base)
     break;

   else if (j >= jmax)
     {

       i = (unsigned long int) j;
       goto use_long;
     }
   else
     j = j * (unsigned long int) base + c;
 }

      i = (unsigned long int) j;
    }
  else
    for (;c != '\0'; c = *++s)
      {
 if (s == end)
   break;
 if (c >= '0' && c <= '9')
   c -= '0';





 else if (thousands_len)
   {
     for (cnt = 0; cnt < thousands_len; ++cnt)
       if (thousands[cnt] != s[cnt])
  break;
     if (cnt == thousands_len)
       {
  s += thousands_len - 1;
  continue;
       }
     if ((((loc))->__ctype_b[(int) (((c)))] & (unsigned short int) _ISalpha))
       c = (__extension__ ({ int __res; if (sizeof ((c)) > 1) { if (__builtin_constant_p ((c))) { int __c = ((c)); __res = __c < -128 || __c > 255 ? __c : ((loc)->__ctype_toupper)[__c]; } else __res = __toupper_l ((c), loc); } else __res = ((loc)->__ctype_toupper)[(int) ((c))]; __res; })) - 'A' + 10;
     else
       break;
   }


 else if ((((loc))->__ctype_b[(int) (((c)))] & (unsigned short int) _ISalpha))
   c = (__extension__ ({ int __res; if (sizeof ((c)) > 1) { if (__builtin_constant_p ((c))) { int __c = ((c)); __res = __c < -128 || __c > 255 ? __c : ((loc)->__ctype_toupper)[__c]; } else __res = __toupper_l ((c), loc); } else __res = ((loc)->__ctype_toupper)[(int) ((c))]; __res; })) - 'A' + 10;
 else
   break;
 if ((int) c >= base)
   break;

 if (i > cutoff || (i == cutoff && c > cutlim))
   overflow = 1;
 else
   {
   use_long:
     i *= (unsigned long int) base;
     i += c;
   }
      }


  if (s == save)
    goto noconv;



  if (endptr != ((void *)0))
    *endptr = (char *) s;
# 495 "strtol_l.c"
  if (__builtin_expect (overflow, 0))
    {
      ((*__errno_location ()) = (34));

      return (2147483647L * 2UL + 1UL);



    }


  return negative ? -i : i;

noconv:




  if (endptr != ((void *)0))
    {
      if (save - nptr >= 2 && (__extension__ ({ int __res; if (sizeof ((save[-1])) > 1) { if (__builtin_constant_p ((save[-1]))) { int __c = ((save[-1])); __res = __c < -128 || __c > 255 ? __c : ((loc)->__ctype_toupper)[__c]; } else __res = __toupper_l ((save[-1]), loc); } else __res = ((loc)->__ctype_toupper)[(int) ((save[-1]))]; __res; })) == 'X'
   && save[-2] == '0')
 *endptr = (char *) &save[-1];
      else

 *endptr = (char *) nptr;
    }

  return 0L;
}

extern __typeof (____strtoul_l_internal) __EI_____strtoul_l_internal __asm__("" "____strtoul_l_internal"); extern __typeof (____strtoul_l_internal) __EI_____strtoul_l_internal __attribute__((alias ("" "__GI_____strtoul_l_internal")));
# 545 "strtol_l.c"
unsigned long int

__attribute__ ((weak))

__strtoul_l (nptr, endptr, base, loc)
     const char *nptr;
     char **endptr;
     int base;
     __locale_t loc;
{
  return ____strtoul_l_internal (nptr, endptr, base, 0, loc);
}
extern __typeof (__strtoul_l) strtoul_l __attribute__ ((weak, alias ("__strtoul_l")));
# 28 "strtoul_l.c" 2

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Link problems with section anchors
  2006-08-04  9:04   ` Richard Sandiford
  2006-08-04 13:53     ` Steven Munroe
@ 2006-08-04 13:54     ` David Edelsohn
  2006-08-04 14:01       ` Richard Sandiford
  1 sibling, 1 reply; 60+ messages in thread
From: David Edelsohn @ 2006-08-04 13:54 UTC (permalink / raw)
  To: Steven Munroe, binutils, mark, richard

	I have attached the pre-processed source code for the source file
to GCC Bugzilla PR 28598.  The reason that DECL_ONE_ONLY does not catch
the symbol becomes obvious:

  const unsigned long __strtol_ul_max_tab[] __attribute__ ((visibility ("hidden"))) __attribute__((section(".gnu.linkonce.r." "__strtol_ul_max_tab")))

  const unsigned char __strtol_ul_rem_tab[] __attribute__ ((visibility ("hidden"))) __attribute__((section(".gnu.linkonce.r." "__strtol_ul_rem_tab")))

Glibc places the symbol in the linkonce section manually.

David

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Link problems with section anchors
  2006-08-04 13:54     ` David Edelsohn
@ 2006-08-04 14:01       ` Richard Sandiford
  2006-08-04 14:12         ` David Edelsohn
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Sandiford @ 2006-08-04 14:01 UTC (permalink / raw)
  To: David Edelsohn; +Cc: Steven Munroe, binutils, mark

David Edelsohn <dje@watson.ibm.com> writes:
> 	I have attached the pre-processed source code for the source file
> to GCC Bugzilla PR 28598.  The reason that DECL_ONE_ONLY does not catch
> the symbol becomes obvious:
>
>   const unsigned long __strtol_ul_max_tab[] __attribute__ ((visibility ("hidden"))) __attribute__((section(".gnu.linkonce.r." "__strtol_ul_max_tab")))
>
>   const unsigned char __strtol_ul_rem_tab[] __attribute__ ((visibility ("hidden"))) __attribute__((section(".gnu.linkonce.r." "__strtol_ul_rem_tab")))
>
> Glibc places the symbol in the linkonce section manually.

Ick.  I really have to question whether that's valid.  GCC does care
whether something is link-once or not -- as this PR proves -- so changing
it behind GCC's back seems like a very bad idea.

Richard

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: Link problems with section anchors
  2006-08-04 14:01       ` Richard Sandiford
@ 2006-08-04 14:12         ` David Edelsohn
  0 siblings, 0 replies; 60+ messages in thread
From: David Edelsohn @ 2006-08-04 14:12 UTC (permalink / raw)
  To: Steven Munroe, binutils, mark, richard

>>>>> Richard Sandiford writes:

Richard> Ick.  I really have to question whether that's valid.  GCC does care
Richard> whether something is link-once or not -- as this PR proves -- so changing
Richard> it behind GCC's back seems like a very bad idea.

	Yes, as is being discussed on #gcc, changing sections with GCC
__attribute__ is fine, but this code is changing section semantics behind
the compiler's back.  One simply cannot expect that to work.  Linkonce
sections are not just a blackbox string value for GCC to emit.

	Paul Brook suggests adding

CFLAGS-strtoul.c=-fno-section-anchors

to Glibc for all files that explicitly declare symbols in linkonce
sections.  That certainly seems appropriate to me.

David

^ permalink raw reply	[flat|nested] 60+ messages in thread

end of thread, other threads:[~2006-08-04 14:12 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <44D2755E.9020600@us.ibm.com>
2006-08-04  1:30 ` Link problems with section anchors Alan Modra
2006-08-04  9:04   ` Richard Sandiford
2006-08-04 13:53     ` Steven Munroe
2006-08-04 13:54     ` David Edelsohn
2006-08-04 14:01       ` Richard Sandiford
2006-08-04 14:12         ` David Edelsohn
     [not found] <3A3FC75F7C72D711A7DC009027AC9C4B1788D9@jupiter>
2004-05-19  3:30 ` Powerpc Linux build fails Alan Modra
2004-05-19  4:27   ` Geoff Keating
2004-05-19  5:10     ` Alan Modra
2004-05-19 16:24       ` Kumar Gala
2004-05-20  0:44         ` Alan Modra
     [not found] <087e01c3b5da$77d658e0$0202040a@catdog>
2003-11-29  1:42 ` ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1? Alan Modra
2003-11-29 18:14   ` Kris Warkentin
2001-12-31 19:09 Compiling kernel 2.4.17 fails at link stage Krishnakumar B
2002-01-04  3:50 ` Alan Modra
2002-01-04 12:39   ` [Linux-ia64] " Alan Modra
  -- strict thread matches above, loose matches on Subject: below --
2001-10-24 18:26 Release 2.12 Hans-Peter Nilsson
2001-10-24 18:38 ` Alan Modra
2001-10-24 18:43   ` David O'Brien
2001-10-24 19:30     ` Alan Modra
2001-10-24 19:35       ` MMIX (was: Re: Release 2.12) Hans-Peter Nilsson
2001-10-24 21:45       ` Release 2.12 Eric Christopher
2001-10-25  8:41         ` H . J . Lu
2001-10-25  8:47       ` H . J . Lu
2001-10-24 18:49   ` Daniel Jacobowitz
2001-10-24 19:43     ` Alan Modra
2001-10-24 20:10       ` Daniel Jacobowitz
2001-10-24 20:35         ` Alan Modra
2001-10-24 20:44           ` Daniel Jacobowitz
2001-10-25  5:09         ` Christopher C. Chimelis
2001-10-25  1:56       ` Philip Blundell
2001-10-25  8:30         ` H . J . Lu
2001-10-25  8:47           ` David O'Brien
     [not found]       ` <amodra@bigpond.net.au>
2002-01-04 17:42         ` [Linux-ia64] Compiling kernel 2.4.17 fails at link stage Grant Grundler
2002-01-04 17:59           ` H . J . Lu
2002-01-04 20:37             ` Grant Grundler
2002-01-04 22:39               ` H . J . Lu
2002-01-07 12:52                 ` Grant Grundler
2002-01-04 19:21           ` Alan Modra
2003-11-29  2:33         ` ppc problem with .rodata.str1.4. binutils requirement for gcc 3.3.1? David Edelsohn
2003-11-29  3:05           ` Alan Modra
2003-11-29  4:06         ` David Edelsohn
2003-11-29  4:10           ` Andrew Pinski
2003-11-29  4:20             ` David Edelsohn
2003-11-29  6:47               ` Alan Modra
2003-11-29 19:40         ` David Edelsohn
2004-05-19 15:19         ` Powerpc Linux build fails David Edelsohn
2004-05-20  0:39           ` Alan Modra
2004-05-20  1:24             ` Alan Modra
2004-05-20  1:46               ` Alan Modra
2004-05-20  2:29         ` David Edelsohn
2004-05-20  3:10           ` Alan Modra
2006-08-04  1:49         ` Link problems with section anchors David Edelsohn
2006-08-04  2:04           ` Alan Modra
2001-10-24 19:37   ` Release 2.12 Russ Allbery
2001-10-24 19:52     ` Alan Modra
2001-10-25  0:46 ` H . J . Lu
2001-10-25  8:57   ` David O'Brien
2001-10-25  9:38     ` H . J . Lu
2001-10-25  9:44       ` H . J . Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).