RE: Trying to build crosscompiler for Sparc Solaris 8 -> SparcSolaris 10 (& others)...

2005-04-06 Thread Dave Korn
Original Message
>From: Aaron Gaudio
>Sent: 05 April 2005 21:05

> (CCing this to [EMAIL PROTECTED] due to potential build bugs...)

> I have already installed binutils 2.15 and gcc 3.4.5 native Solaris 8
> verisons in the prefix /vobs/java/gnu and added this directory to my
> path, so that those are the tools being used for building the cross-
> compiler environment.

  Two things to check: 

 1) Try specifying an absolute rather than relative path to the gcc
configure script; I think this has been known to be a source of problems on
solaris platforms in the past, but I don't know if it's still relevant now.
It can't hurt to try.

 2) If what you say above is *literally* correct, then the reason the wrong
assembler is being found is because you've added $prefix to your $PATH, when
you should have added $prefix/bin!


cheers,
  DaveK
-- 
Can't think of a witty .sigline today



Re: Obsoleting c4x last minute for 4.0

2005-04-06 Thread Richard Earnshaw
On Wed, 2005-04-06 at 00:30, Mark Mitchell wrote:
> Joe Buck wrote:

> > 
> > But if it won't even build, then users should be warned.
> 
> I suppose -- but we have relatively many configurations that probably 
> won't build, at least if you start combining various options, and 
> including langauges beyond just C and C++.
> 
> I'd be content with a patch that issued a warning, but declaring a port 
> obsolete has often been contentions, and I'd hate to rush into it.

Maybe we need a third category - 'at risk'.  Such a port will typically
have no active maintainer, some likely serious bugs and might at some
future date be obsoleted if no maintainer steps forward.

We could put several ports into that category and it shouldn't have the
negative stigma that obsolete seems to have.

R.


Re: [BUG mm] "fixed" i386 memcpy inlining buggy

2005-04-06 Thread Denis Vlasenko
On Tuesday 05 April 2005 19:34, Christophe Saout wrote:
> Hi Denis,
> 
> the new i386 memcpy macro is a ticking timebomb.
> 
> I've been debugging a new mISDN crash, just to find out that a memcpy
> was not inlined correctly.
> 
> Andrew, you should drop the fix-i386-memcpy.patch (or have it fixed).
> 
> This source code:
> 
> mISDN_pid_t pid;
>   [...]
> memcpy(&st->mgr->pid, &pid, sizeof(mISDN_pid_t));
> 
> was compiled as:
> 
> lea0xffa4(%ebp),%esi< %esi is loaded
> (   add$0x10,%ebx  )
> (   mov%ebx,%eax   ) something else
> (   call   1613  ) %esi preserved
> mov0xffa0(%ebp),%edx
> mov0x74(%edx),%edi  < %edi is loaded
> add$0x20,%edi offset in structure added
> !   mov$0x14,%esi!! < %esi overwritten!
> mov%esi,%ecx< %ecx loaded
> repz movsl %ds:(%esi),%es:(%edi)
> 
> Apparently the compiled decided that the value 0x14 could be reused
> afterwards (which it does for an inlined memset of the same size some
> instructions below) and clobbers %esi.
> 
> Looking at the macro:
> 
> __asm__ __volatile__(
> ""
> : "=&D" (edi), "=&S" (esi)
> : "0" ((long) to),"1" ((long) from)
> : "memory"
> );
> }
> if (n >= 5*4) {
> /* large block: use rep prefix */
> int ecx;
> __asm__ __volatile__(
> "rep ; movsl"
> : "=&c" (ecx)
> 
> it seems obvious that the compiled assumes it can reuse %esi and %edi
> for something else between the two __asm__ sections. These should
> probably be merged.

Oh shit. I was trying to be too clever. I still run with this patch,
so it must be happening very rarely.

Does this one compile ok?

static inline void * __constant_memcpy(void * to, const void * from, size_t n)
{
long esi, edi;
#if 1   /* want to do small copies with non-string ops? */
switch (n) {
case 0: return to;
case 1: *(char*)to = *(char*)from; return to;
case 2: *(short*)to = *(short*)from; return to;
case 4: *(int*)to = *(int*)from; return to;
#if 1   /* including those doable with two moves? */
case 3: *(short*)to = *(short*)from;
*((char*)to+2) = *((char*)from+2); return to;
case 5: *(int*)to = *(int*)from;
*((char*)to+4) = *((char*)from+4); return to;
case 6: *(int*)to = *(int*)from;
*((short*)to+2) = *((short*)from+2); return to;
case 8: *(int*)to = *(int*)from;
*((int*)to+1) = *((int*)from+1); return to;
#endif
}
#else
if (!n) return to;
#endif
{
/* load esi/edi */
__asm__ __volatile__(
""
: "=&D" (edi), "=&S" (esi)
: "0" ((long) to),"1" ((long) from)
: "memory"
);
}
if (n >= 5*4) {
/* large block: use rep prefix */
int ecx;
__asm__ __volatile__(
"rep ; movsl"
: "=&c" (ecx), "=&D" (edi), "=&S" (esi)
: "0" (n/4), "1" (edi),"2" (esi)
: "memory"
);
} else {
/* small block: don't clobber ecx + smaller code */
if (n >= 4*4) __asm__ 
__volatile__("movsl":"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
if (n >= 3*4) __asm__ 
__volatile__("movsl":"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
if (n >= 2*4) __asm__ 
__volatile__("movsl":"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
if (n >= 1*4) __asm__ 
__volatile__("movsl":"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
}
switch (n % 4) {
/* tail */
case 0: return to;
case 1: __asm__ 
__volatile__("movsb":"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory"); return 
to;
case 2: __asm__ 
__volatile__("movsw":"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory"); return 
to;
default: __asm__ 
__volatile__("movsw\n\tmovsb":"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
 return to;
}
}
--
vda



Re: Obsoleting c4x last minute for 4.0

2005-04-06 Thread Joseph S. Myers
On Wed, 6 Apr 2005, Richard Earnshaw wrote:

> Maybe we need a third category - 'at risk'.  Such a port will typically
> have no active maintainer, some likely serious bugs and might at some
> future date be obsoleted if no maintainer steps forward.
> 
> We could put several ports into that category and it shouldn't have the
> negative stigma that obsolete seems to have.

One possible way of assessing activity would be to say that after 4.1 
maintained CPU ports should have test results for mainline regularly sent 
to gcc-testresults and monitored for regressions, though this rather 
depends on the willingness of maintainers of embedded ports to do this 
testing; ports without such testing and regression monitoring could be 
considered at risk.

Only the following ports seem to have had results for 4.1.0-mainline (i.e. 
mainline since 4.0 branched) sent to gcc-testresults: alpha, arm, hppa, 
i?86/x86_64, ia64, mips, powerpc, s390, sh, sparc, although cris and mmix 
are evidently monitored for regressions even though they don't get test 
results to gcc-testresults.  (If test results for a port are so bad that 
though sent to gcc-testresults they exceed the message size limit, and 
this remains the case for a prolonged period such as ever since 4.0 
branched, that also indicates lack of active maintenance.)

-- 
Joseph S. Myers   http://www.srcf.ucam.org/~jsm28/gcc/
[EMAIL PROTECTED] (personal mail)
[EMAIL PROTECTED] (CodeSourcery mail)
[EMAIL PROTECTED] (Bugzilla assignments and CCs)


RE: [BUG mm] "fixed" i386 memcpy inlining buggy

2005-04-06 Thread Dave Korn
Original Message
>From: Denis Vlasenko
>Sent: 06 April 2005 11:14

  Is this someone's idea of an April Fool's joke?  Because if it is, I've
suffered a serious sense-of-humour failure.

> Oh shit. I was trying to be too clever. I still run with this patch,
> so it must be happening very rarely.

  The kernel is way too important for cross-your-fingers-and-hope
engineering techniques to be applied.  This patch should never have been
permitted.  How on earth could anything like this hope to make it through a
strict review?

> Does this one compile ok?

>   {
>   /* load esi/edi */
>   __asm__ __volatile__(
>   ""
>   : "=&D" (edi), "=&S" (esi)
>   : "0" ((long) to),"1" ((long) from)
>   : "memory"
>   );
>   }
>   if (n >= 5*4) {
>   /* large block: use rep prefix */
>   int ecx;
>   __asm__ __volatile__(
>   "rep ; movsl"
>   : "=&c" (ecx), "=&D" (edi), "=&S" (esi)
>   : "0" (n/4), "1" (edi),"2" (esi)
>   : "memory"
>   );


  It doesn't matter if it compiles or not, it's still *utterly* invalid.
You can NOT make assumptions about registers keeping their values between
one asm block and another.  Immediately after the closing quote of the first
asm, the compiler can do ANYTHING IT WANTS and to just _hope_ that it won't
use the registers you want is voodoo programming.  Even if it works when you
try it once, there are zero guarantees that another version or revision of
the compiler or even just a tiny change to the source that affects the
behaviour of the scheduler when compiling the function won't produce
something completely different, meaning that this code is appallingly
fragile.  This code should be completely discarded and rewritten properly.


cheers,
  DaveK
-- 
Can't think of a witty .sigline today



RE: [BUG mm] "fixed" i386 memcpy inlining buggy

2005-04-06 Thread Dave Korn
Original Message
>From: Dave Korn
>Sent: 06 April 2005 12:06


  Me and my big mouth.

  OK, that one does work.

  Sorry for the outburst.

cheers,
  DaveK
-- 
Can't think of a witty .sigline today



Re: Obsoleting c4x last minute for 4.0

2005-04-06 Thread Joel Sherrill <[EMAIL PROTECTED]>
Richard Earnshaw wrote:
On Wed, 2005-04-06 at 00:30, Mark Mitchell wrote:
Joe Buck wrote:

But if it won't even build, then users should be warned.
I suppose -- but we have relatively many configurations that probably 
won't build, at least if you start combining various options, and 
including langauges beyond just C and C++.

I'd be content with a patch that issued a warning, but declaring a port 
obsolete has often been contentions, and I'd hate to rush into it.

Maybe we need a third category - 'at risk'.  Such a port will typically
have no active maintainer, some likely serious bugs and might at some
future date be obsoleted if no maintainer steps forward.
We could put several ports into that category and it shouldn't have the
negative stigma that obsolete seems to have.
The RTEMS community has been interested in the c4x port for a long time
but we don't have anyone who can fix things at the level this one is
broken.  We keep trying it and reporting on it.  It gets a little 
better, then it gets a little worse.

Ignoring the technically interesting bit that the c4x is not byte 
addressable, this port suffers from its original developers having 
largely moved on by the time it was merged.  Not an excuse, just a
statement that there was not a clean handoff to a new maintainer.
I recall that the original port being using binutils 2.7 so that
gives a timeframe.

R.

--
Joel Sherrill, Ph.D. Director of Research & Development
[EMAIL PROTECTED] On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
   Support Available (256) 722-9985


RE: [BUG mm] "fixed" i386 memcpy inlining buggy

2005-04-06 Thread Dave Korn
Original Message
>From: Dave Korn
>Sent: 06 April 2005 12:13

> Original Message
>> From: Dave Korn
>> Sent: 06 April 2005 12:06
> 
> 
>   Me and my big mouth.
> 
>   OK, that one does work.
> 
>   Sorry for the outburst.
> 


 well, actually, maybe it doesn't after all.


  What's that uninitialised variable ecx doing there eh?


cheers,
  DaveK
-- 
Can't think of a witty .sigline today



RE: [BUG mm] "fixed" i386 memcpy inlining buggy

2005-04-06 Thread Dave Korn
Original Message
>From: Dave Korn
>Sent: 06 April 2005 12:53

> Original Message
>> From: Dave Korn
>> Sent: 06 April 2005 12:13
> 
>> Original Message
>>> From: Dave Korn
>>> Sent: 06 April 2005 12:06
>> 
>> 
>>   Me and my big mouth.
>> 
>>   OK, that one does work.
>> 
>>   Sorry for the outburst.
>> 
> 
> 
>  well, actually, maybe it doesn't after all.
> 
> 
>   What's that uninitialised variable ecx doing there eh?

  Oh, I see, it's there as an output so it can be matched as an input by the
"0" constraint.

  Ok, guess it does.


cheers,
  DaveK
-- 
Can't think of a witty .sigline today



Input and print statements for Front End?

2005-04-06 Thread Harry Goulding
Hi All,
I'm developing a front end for a simple programming language as part of a 
project.

I have looked through the GCC Internals Manual, the Toy front end language 
and Treelang.

I can't seem to find any info regarding an input or print statement, so  i 
can read integers(my language only deals with integers) from the stdio and 
return integer results to stdio.

I see that the Toy language has to be compiled with a C program to achieve 
the above. Is this the best or even only solution?

Thanks
_
Send an animated 'wink' to someone special - download MSN Messenger, FREE! 
http://messenger.msn.co.uk/Beta/Default.aspx



Re: gcc4, static array, SSE & alignement

2005-04-06 Thread tbp
On Apr 6, 2005 3:18 AM, James E Wilson <[EMAIL PROTECTED]> wrote:
> I would guess a limitation of cygwin binutils support, or perhaps of
> Windows itself.
Binutils, perhaps. Windows certainly not as msvc2k3 & icc8.1 don't
have such issue with the same code.

> This seems to work fine on linux.  If I compile a simple example using
> __alignof__, I see that the compiler is assuming 16-byte alignment.  If
> I compile with -S, I see that the compiler is giving them 32-byte
> alignment (probably for better cache alignment).  If I run objdump -x on
> the a.out file, I see that .bss section has 2**5 (32-byte) alignment.
> All is as it should be.
Sections:
Idx Name  Size  VMA   LMA   File off  Algn
  0 .text 0003e754  00401000  00401000  0400  2**4
  CONTENTS, ALLOC, LOAD, READONLY, CODE, DATA
  1 .data 4634  0044  0044  0003ec00  2**4
  CONTENTS, ALLOC, LOAD, DATA
  2 .rdata4884  00445000  00445000  00043400  2**4
  CONTENTS, ALLOC, LOAD, READONLY, DATA
  3 .bss  8fc0  0044a000  0044a000    2**4
  ALLOC
  4 .idata1984  00453000  00453000  00047e00  2**2
  CONTENTS, ALLOC, LOAD, DATA
  5 .stab 00169908  00455000  00455000  00049800  2**2
  CONTENTS, READONLY, DEBUGGING, NEVER_LOAD, EXCLUDE
  6 .stabstr  001c39e1  005bf000  005bf000  001b3200  2**0
  CONTENTS, READONLY, DEBUGGING, NEVER_LOAD, EXCLUDE

Gcc & the toolchain used to have lots of issues wrt alignement, but i
thought they were a thing of the past.
As far as i can see, everything is fine regarding section alignements.

> A real bug report, as per
>  http://gcc.gnu.org/bugs.html
> would be useful here, so we can check.  In particular, a testcase to
> reproduce the problem, and exactly what you believe is wrong with the
> output.
Yep, but i was testing the water.
I mean i have lots of other 16 bytes aligned data (static, extern,
const or not and whatnot) in there and the only problematic one is
this semi large static.
So, because that's the largest, i thought i've crossed some magic size
threshold.

I'll try to pinpoint the problem a bit better.


Re: [BUG mm] "fixed" i386 memcpy inlining buggy

2005-04-06 Thread Christophe Saout
Am Mittwoch, den 06.04.2005, 13:14 +0300 schrieb Denis Vlasenko:

> Oh shit. I was trying to be too clever. I still run with this patch,
> so it must be happening very rarely.

Yes, that's right, it happened with code that's not in the mainline tree
but could have happened anywhere.

> Does this one compile ok?

Yes, the case that failed is now okay. I changed it slightly to assign
esi and edi directy on top of the functions, no asm section needed here.
The compiler will make sure that they have the correct values when
needed.

In the case above the compiler now uses %ebx to save the loop counter
instead of %esi.

In drivers/cdrom/cdrom.c I'm observing one very strange thing though.

It appears that the compiler decided to put the local variable edi on
the stack for some unexplicable reason (or possibly there is?). Since
the asm sections are memory barriers the compiler then saves the value
of %edi on the stack before entering the next assembler section.

1f1c:   a5  movsl  %ds:(%esi),%es:(%edi)
1f1d:   89 7d 84mov%edi,0xff84(%ebp)
1f20:   a5  movsl  %ds:(%esi),%es:(%edi)
1f21:   89 7d 84mov%edi,0xff84(%ebp)
1f24:   66 a5   movsw  %ds:(%esi),%es:(%edi)

(this is a constant 10 byte memcpy)

The only thing that would avoid this is to either tell the compiler to
never put esi/edi in memory (which I think is not possibly across
different versions of gcc) or to always generate a single asm section
for all the different cases.



signature.asc
Description: This is a digitally signed message part


Re: gcc4, static array, SSE & alignement

2005-04-06 Thread tbp
On Apr 6, 2005 2:08 PM, tbp <[EMAIL PROTECTED]> wrote:
> I'll try to pinpoint the problem a bit better.
Alas, since the other day the code using that static array has changed
a bit and i can't reproduce the bug.
So, after all, it really was gcc's fault.

I'll try to dig up the original version.


Re: Input and print statements for Front End?

2005-04-06 Thread Paul Brook
On Wednesday 06 April 2005 13:00, Harry Goulding wrote:
> Hi All,
>
> I'm developing a front end for a simple programming language as part of a
> project.
>
> I have looked through the GCC Internals Manual, the Toy front end language
> and Treelang.
>
> I can't seem to find any info regarding an input or print statement, so  i
> can read integers(my language only deals with integers) from the stdio and
> return integer results to stdio.

Interfacing with the OS is the resposibility of your language runtime library, 
not the compiler itself..

You might want to look at how the fortran intrinsic functions an IO routines 
are handled. Basically the language define IO constructs are turned into a 
sequence of function calls.

Paul


Re: [BUG mm] "fixed" i386 memcpy inlining buggy

2005-04-06 Thread Andrew Haley
I'm having a little difficulty understanding what this is for.  Is it
that gcc's builtin memcpy expander generates bad code, or that older
versions of gcc generate bad code, or what?  gcc generates too much
code?

Andrew.


HEAD regression: All java tests are failing with an ICE when optimized

2005-04-06 Thread Andrew Haley
HEAD, clean build this morning.  i686-linux-gnu.

With the libgcj "make check", there are many identical failures.

These are of the form

PR4766.java: In class 'PR4766':
PR4766.java: In method 'PR4766.myfunction()':
PR4766.java:0: internal compiler error: in hash_scan_set, at 
postreload-gcse.c:741
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.
compiler exited with status 1

And the ICE is always in hash_scan_set.

I do not believe that this is a Java FE bug.

Has anyone else seen this?

Andrew.


Re: HEAD regression: All java tests are failing with an ICE when optimized

2005-04-06 Thread Diego Novillo
On Wed, Apr 06, 2005 at 01:56:48PM +0100, Andrew Haley wrote:

> Has anyone else seen this?
> 
Yes.  At first I thought it was my patch, but it only happens on
i686 and libjava was working fine the day before.


Diego.


Re: http://gcc.gnu.org/install/specific.html#*-*-solaris2*

2005-04-06 Thread Karl Berry
Now I now (and understand) that you changed the mangling of filenames,
but where does the "g_t" come from, and why?

Catering to XHTML's stupidity.  I mentioned it in:

http://www.gnu.org/software/texinfo/manual/texinfo/texinfo.html#HTML-Xref-Link-Basics
viz.
One exception: the algorithm for node name expansion prefixes the
string `g_t' when the node name begins with a non-letter. This kludge
(due to XHTML rules) is not necessary for filenames, and is
therefore omitted.

Sorry ...


RE: [BUG mm] "fixed" i386 memcpy inlining buggy

2005-04-06 Thread Richard B. Johnson
Attached is inline ix86 memcpy() plus test code that tests its
corner-cases. The in-line code makes no jumps, but uses longword
copies, word copies and any spare byte copy. It works at all
offsets, doesn't require alignment but would work fastest if
both source and destination were longword aligned.
On Wed, 6 Apr 2005, Dave Korn wrote:
Original Message
From: Dave Korn
Sent: 06 April 2005 12:13

Original Message
From: Dave Korn
Sent: 06 April 2005 12:06

  Me and my big mouth.
  OK, that one does work.
  Sorry for the outburst.

 well, actually, maybe it doesn't after all.
 What's that uninitialised variable ecx doing there eh?
   cheers,
 DaveK
--
Can't think of a witty .sigline today
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Cheers,
Dick Johnson
Penguin : Linux version 2.6.11 on an i686 machine (5537.79 BogoMips).
 Notice : All mail here is now cached for review by Dictator Bush.
 98.36% of all statistics are fiction.
#include 
#include 


//
//  Inline ix86 memcpy() that contains no jumps. Not copied from
//  anybody.Contributed by [EMAIL PROTECTED]
//

static __inline__ void *memcpy(void *dst, void *src, size_t len) {
void *ret = dst;
__asm__ __volatile__(   \
"cld\n" \
"shr $1, %%ecx\n"   \
"pushf\n"   \
"shr $1, %%ecx\n"   \
"pushf\n"   \
"rep\n" \
"movsl\n"   \
"popf\n"\
"adcl %%ecx, %%ecx\n"   \
"rep\n" \
"movsw\n"   \
"popf\n"\
"adcl %%ecx, %%ecx\n"   \
"rep\n" \
"movsb\n"   \
: "=D" (dst), "=S" (src), "=c"(len)
: "0"  (dst), "1"  (src), "2" (len)
: "memory" );
return ret;
}


const char tester[]="0123456789"
"0123456789"
"0123456789"
"0123456789"
"0123456789"
"0123456789"
"0123456789"
"0123456789";
char allocated[0x1000];

int main()
{
size_t i;
char buf[0x1000];

memset(buf, 0x00, sizeof(buf));
for(i=0; i< sizeof(buf); i++)
puts(memcpy(buf, (char *)tester, i));
memset(buf, 0x00, sizeof(buf));
for(i=0; i< sizeof(buf)-1; i++)
puts(memcpy(&buf[1], (char *)tester, i));
memset(buf, 0x00, sizeof(buf));
for(i=0; i< sizeof(buf)-2; i++)
puts(memcpy(&buf[2], (char *)tester, i));
memset(buf, 0x00, sizeof(buf));
for(i=0; i< sizeof(buf)-3; i++)
puts(memcpy(&buf[3], (char *)tester, i));
return 0;
}


Re: HEAD regression: All java tests are failing with an ICE when optimized

2005-04-06 Thread Ranjit Mathew
Andrew Haley wrote:
> HEAD, clean build this morning.  i686-linux-gnu.
> 
> With the libgcj "make check", there are many identical failures.
> 
> These are of the form
> 
> PR4766.java: In class 'PR4766':
> PR4766.java: In method 'PR4766.myfunction()':
> PR4766.java:0: internal compiler error: in hash_scan_set, at 
> postreload-gcse.c:741
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See http://gcc.gnu.org/bugs.html> for instructions.
> compiler exited with status 1
> 
> And the ICE is always in hash_scan_set.
> 
> I do not believe that this is a Java FE bug.
> 
> Has anyone else seen this?

First off, I didn't when I ran my regular
bootstrap + libjava_check cycle. That's because
I use "--disable-checking".

Second, it's most likely caused by Nathan's assertifying
patch to gcc/p*.c:

  http://gcc.gnu.org/ml/gcc-patches/2005-04/msg00227.html

Note that the "#ifdef ENABLE_CHECKING" guard
in postreload-gcse.c (around line #741) was
*misspelt* before:

  - #ifdef ENABLE_CHEKCING

and was thus never being executed before.

Ranjit.

-- 
Ranjit Mathew  Email: rmathew AT gmail DOT com

Bangalore, INDIA.Web: http://ranjitmathew.hostingzero.com/


RE: Trying to build crosscompiler for Sparc Solaris 8 -> SparcSolaris 10 (& others)...

2005-04-06 Thread Aaron Gaudio
On Wed, 2005-04-06 at 10:28 +0100, Dave Korn wrote:
> Original Message
> >From: Aaron Gaudio
> >Sent: 05 April 2005 21:05
> 
> > (CCing this to [EMAIL PROTECTED] due to potential build bugs...)
> 
> > I have already installed binutils 2.15 and gcc 3.4.5 native Solaris 8
> > verisons in the prefix /vobs/java/gnu and added this directory to my
> > path, so that those are the tools being used for building the cross-
> > compiler environment.
> 
>   Two things to check: 
> 
>  1) Try specifying an absolute rather than relative path to the gcc
> configure script; I think this has been known to be a source of problems on
> solaris platforms in the past, but I don't know if it's still relevant now.
> It can't hurt to try.
> 
>  2) If what you say above is *literally* correct, then the reason the wrong
> assembler is being found is because you've added $prefix to your $PATH, when
> you should have added $prefix/bin!
> 
> 

Thanks for your attention, Dave. I checked the script I'm using to build
and I actually am using an absolute path to gcc's configure, despite
what I wrote in my original mailnote. 

As for the prefix... you're right, I should be adding $prefix/bin to my
path. I was adding $prefix in my script, but lo, I had already added
$prefix/bin to my path in my shell. I'll fix my script, but that won't
have any impact on the problems I'm facing. You see, the 'as' being
called was in fact the one in $prefix/bin, but the problem is that
$prefix is a holding place for binaries with multiple targets.
$prefix/bin/as is a Sparc Solaris 8 binary with a Sparc Solaris 8 target
(eg --version "This assembler was configured for a target of `sparc-sun-
solaris2.8'."). However, $prefix/bin/i586-sun-solaris2.10-as is a Sparc
Solaris 8 binary with an i586 Solaris 10 target (--version "This
assembler was configured for a target of `i586-sun-solaris2.10'."). 

It seems like either Makefile should be using $AS_FOR_TARGET (which
would expand to 'i586-sun-solaris2.10-as'), instead of $AS (which is
just 'as') OR the .s file being assembled should be using Sparc assembly
instructions instead of x86. I assumed the former was the case, and that
let me get further in the build, so that's what I've stuck with for
now...

-- 
Aaron Gaudio   agaudio @ eng.mc.xerox.com   585-422-6876
   madcap @ irc://rockhopper.eng.mc.xerox.com
 OpenPGP fingerprint: 74B3 1018 08EB 1B3F E7C7  B944 11B1 E0C3 949C 8906
 "Every man is a mob, a chain gang of idiots." 
 - Jonathan Nolan, /Memento Mori/


signature.asc
Description: This is a digitally signed message part


Re: Obsoleting c4x last minute for 4.0

2005-04-06 Thread Joel Sherrill <[EMAIL PROTECTED]>
Joel Sherrill <[EMAIL PROTECTED]> wrote:
Richard Earnshaw wrote:
On Wed, 2005-04-06 at 00:30, Mark Mitchell wrote:
Joe Buck wrote:


But if it won't even build, then users should be warned.

I suppose -- but we have relatively many configurations that probably 
won't build, at least if you start combining various options, and 
including langauges beyond just C and C++.

I'd be content with a patch that issued a warning, but declaring a 
port obsolete has often been contentions, and I'd hate to rush into it.

Maybe we need a third category - 'at risk'.  Such a port will typically
have no active maintainer, some likely serious bugs and might at some
future date be obsoleted if no maintainer steps forward.
We could put several ports into that category and it shouldn't have the
negative stigma that obsolete seems to have.

The RTEMS community has been interested in the c4x port for a long time
but we don't have anyone who can fix things at the level this one is
broken.  We keep trying it and reporting on it.  It gets a little 
better, then it gets a little worse.
I have been reminded by an RTEMS user that the c4x port actually
did successfully build C for 3.4.  This makes it a recent regression.
--
Joel Sherrill, Ph.D. Director of Research & Development
[EMAIL PROTECTED] On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
   Support Available (256) 722-9985


Re: Obsoleting c4x last minute for 4.0

2005-04-06 Thread E. Weddington
Joseph S. Myers wrote:
One possible way of assessing activity would be to say that after 4.1 
maintained CPU ports should have test results for mainline regularly sent 
to gcc-testresults and monitored for regressions, though this rather 
depends on the willingness of maintainers of embedded ports to do this 
testing; ports without such testing and regression monitoring could be 
considered at risk.

Only the following ports seem to have had results for 4.1.0-mainline (i.e. 
mainline since 4.0 branched) sent to gcc-testresults: alpha, arm, hppa, 
i?86/x86_64, ia64, mips, powerpc, s390, sh, sparc, although cris and mmix 
are evidently monitored for regressions even though they don't get test 
results to gcc-testresults.

Add the AVR to the list of ports that (so far) haven't had test results 
sent to gcc-testresults. It's only been recently that the GCC test suite 
has been able to run for the AVR using an outside simulator. Hopefully 
in the future this will change; there's a lot of work being done on the 
AVR port.

I would also venture to say that the 68HC11/12 port is active as well. 
Though I don't know the status of testing on that port.

Eric


RE: Question regarding MIPS_GPREL_16 relocation

2005-04-06 Thread Mile Davidovic
Hello all

First I want to thanks a lot for Your advices. I changed as You told to me 
MULTILIB_OPTIONS = G0 mlong-calls msoft-float EL/EB mips32/mips64 
MULTILIB_DIRNAMES = G0 mlong-calls soft-float el eb mips32 mips64 
after rebuilding and installing gcc I got needed libraries. 
I will start test this and I want to thanks again for Your efforts.

Best regards Mile
 

-Original Message-
From: Richard Sandiford [mailto:[EMAIL PROTECTED] 
Sent: Monday, April 04, 2005 10:00 PM
To: [EMAIL PROTECTED]
Cc: 'Eric Christopher'; gcc@gcc.gnu.org
Subject: Re: Question regarding MIPS_GPREL_16 relocation

"Mile Davidovic" <[EMAIL PROTECTED]> writes:
> But problem is passing G0 option, if I simple put MULTILIB_OPTIONS = 
> G0 mlong-calls msoft-float EL/EB mips32/mips64 building library fail.

If you add something to MULTILIB_OPTIONS, you need to add an entry to
MULTILIB_DIRNAMES as well.

(Sorry if you already knew and did that, but in that case, how did building
the library fail?)

Richard



Re: [BUG mm] "fixed" i386 memcpy inlining buggy

2005-04-06 Thread Paolo Bonzini

The only thing that would avoid this is to either tell the compiler to
never put esi/edi in memory (which I think is not possibly across
different versions of gcc) or to always generate a single asm section
for all the different cases.
Use __asm__ ("%esi") and __asm__ ("%edi").  It is not guaranteed that 
they access the registers always (you can still have copy propagation 
etcetera); but, if your __asm__ statement constraints match the register 
you specify, then you can be reasonably sure that good code is produced.

Paolo


3.4.3 on Solaris9, boehm-gc probs.

2005-04-06 Thread Hugh Sasse Staff Elec Eng
I've STW for this but can't see others with the same problem.  I'm
getting:
[...]
/bin/bash ./libtool --mode=compile /export/home/Scratch/hgs/gcc-build/gcc/xgcc 
-B/export/home/Scratch/hgs/gcc-build/gcc/ 
-B/usr/local/sparc-sun-solaris2.9/bin/ -B/usr/local/sparc-sun-solaris2.9/lib/ 
-isystem /usr/local/sparc-sun-solaris2.9/include -isystem 
/usr/local/sparc-sun-solaris2.9/sys-include -DGC_SOLARIS_THREADS=1 
-DGC_SOLARIS_PTHREADS=1 -DSILENT=1 -DNO_SIGNALS=1 -DALL_INTERIOR_POINTERS=1 
-DJAVA_FINALIZATION=1 -DGC_GCJ_SUPPORT=1 -DATOMIC_UNCOLLECTABLE=1  -I. 
-I/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc  
-I/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/include  -O2 -mcpu=v9 
-fexceptions -I././targ-include 
-I/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/./libc/include -O2 -mcpu=v9 -c 
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c
/export/home/Scratch/hgs/gcc-build/gcc/xgcc 
-B/export/home/Scratch/hgs/gcc-build/gcc/ 
-B/usr/local/sparc-sun-solaris2.9/bin/ -B/usr/local/sparc-sun-solaris2.9/lib/ 
-isystem /usr/local/sparc-sun-solaris2.9/include -isystem 
/usr/local/sparc-sun-solaris2.9/sys-include -DGC_SOLARIS_THREADS=1 
-DGC_SOLARIS_PTHREADS=1 -DSILENT=1 -DNO_SIGNALS=1 -DALL_INTERIOR_POINTERS=1 
-DJAVA_FINALIZATION=1 -DGC_GCJ_SUPPORT=1 -DATOMIC_UNCOLLECTABLE=1 -I. 
-I/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc 
-I/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/include -O2 -mcpu=v9 -fexceptions 
-I././targ-include -I/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/./libc/include 
-O2 -mcpu=v9 -c /export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c  -fPIC 
-DPIC -o .libs/dyn_load.o
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c: In function 
`GC_FirstDLOpenedLinkMap':
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:110: error: syntax error before 
"_DYNAMIC"
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:111: error: `Elf32_Dyn' 
undeclared (first use in this function)
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:111: error: (Each 
undeclared identifier is reported only once
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:111: error: for each 
function it appears in.)
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:111: error: `dp' 
undeclared (first use in this function)
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:114: error: syntax error 
before '*' token
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:127: error: 
`dynStructureAddr' undeclared (first use in this function)
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:127: error: `_DYNAMIC' 
undeclared (first use in this function)
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:135: error: parse error 
before ')' token
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:136: error: `DT_DEBUG' 
undeclared (first use in this function)
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:139: error: 
dereferencing pointer to incomplete type
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c: In function 
`GC_register_dynamic_libraries':
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:209: error: 
dereferencing pointer to incomplete type
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:227: error: 
dereferencing pointer to incomplete type
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:229: error: 
dereferencing pointer to incomplete type
gmake[3]: *** [dyn_load.lo] Error 1
gmake[3]: Leaving directory 
`/export/home/Scratch/hgs/gcc-build/sparc-sun-solaris2.9/boehm-gc'
gmake[2]: *** [all-recursive] Error 1
gmake[2]: Leaving directory 
`/export/home/Scratch/hgs/gcc-build/sparc-sun-solaris2.9/boehm-gc'
gmake[1]: *** [all-target-boehm-gc] Error 2
gmake[1]: Leaving directory `/export/home/Scratch/hgs/gcc-build'
gmake: *** [bootstrap-lean] Error 2
You have mail in /var/mail/hgs
bash-2.05$
when using
gcc (GCC) 3.4.1
GNU assembler 2.14 20030612
GNU ld version 2.14 20030612
GNU Make 3.80
ltmain.sh (GNU libtool) 1.5.14 (1.1220.2.195 2005/02/12 12:12:33)
GNU bash, version 2.05.0(1)-release (sparc-sun-solaris2.9)
and a build script of

#!/bin/bash -x
PATH=/bin:/usr/sbin:/usr/ccs/bin:/etc:/usr/local/bin:/opt/sfw/bin:/usr/openwin/bin
export PATH
CONFIG_SHELL=/bin/bash
export CONFIG_SHELL
BUILDINGVER=3.4.3
BUILD_DIR=/export/home/Scratch/hgs/gcc-build
GCC_SOURCE_DIR=/export/home/Scratch/hgs/gcc-${BUILDINGVER}
# CC="/progs/SUNWspro/bin/cc -xildoff -xarch=v9" options only needed
# for 64 bit...
# CC="/progs/SUNWspro/bin/cc"
CC=gcc
export CC
CXX=g++
export CXX
MAKE=/usr/local/bin/gmake
export MAKE
ASOPT="--with-as=/usr/local/bin/as"
LDOPT="--with-ld=/usr/local/bin/ld"
LANGOPT="--enable-languages=c,c++,f77,java,objc"
cd $BUILD_DIR
/bin/rm -rf ./*
${GCC_SOURCE_DIR}/configure $ASOPT $LDOPT $LANGOPTS --disable-nls && \
# gmake --jobs=5 bootstrap-lean && 
gmake  bootstrap-lean && \
gmake check


Is there anything I have missed?
Thank you,
Hugh


Re: Obsoleting c4x last minute for 4.0

2005-04-06 Thread Mark Mitchell
Richard Earnshaw wrote:
On Wed, 2005-04-06 at 00:30, Mark Mitchell wrote:
Joe Buck wrote:

But if it won't even build, then users should be warned.
I suppose -- but we have relatively many configurations that probably 
won't build, at least if you start combining various options, and 
including langauges beyond just C and C++.

I'd be content with a patch that issued a warning, but declaring a port 
obsolete has often been contentions, and I'd hate to rush into it.

Maybe we need a third category - 'at risk'.  Such a port will typically
have no active maintainer, some likely serious bugs and might at some
future date be obsoleted if no maintainer steps forward.
That seems eminently reasonable.
--
Mark Mitchell
CodeSourcery, LLC
[EMAIL PROTECTED]
(916) 791-8304


RE: Trying to build crosscompiler for Sparc Solaris 8 ->SparcSolaris 10 (& others)...

2005-04-06 Thread Dave Korn
Original Message
>From: Aaron Gaudio
>Sent: 06 April 2005 14:25


> Thanks for your attention, Dave. I checked the script I'm using to build
> and I actually am using an absolute path to gcc's configure, despite
> what I wrote in my original mailnote.

  Oh well, so much for that one.  This is why you should cut and paste the
real output from builds that go wrong when you're making a bug report,
rather than faking it: you gave me false information about your problem.
This is not very constructive.

> As for the prefix... you're right, I should be adding $prefix/bin to my
> path. I was adding $prefix in my script, but lo, I had already added
> $prefix/bin to my path in my shell. I'll fix my script, but that won't
> have any impact on the problems I'm facing. You see, the 'as' being
> called was in fact the one in $prefix/bin, but the problem is that
> $prefix is a holding place for binaries with multiple targets.

  Yes indeed, but that isn't a problem.  When you're doing a cross-compile,
the make process is in fact looking out for ${target}-as.  If you've
configured gcc for "i586-sun-solaris2.10", and there is a
"i586-sun-solaris2.10-as" in your $PATH, the make process should find it.
It's only after completely failing to find ${target}-as that the make
process will fall back as a last resort to just trying to use the first 'as'
it can find.

> $prefix/bin/as is a Sparc Solaris 8 binary with a Sparc Solaris 8 target
> (eg --version "This assembler was configured for a target of `sparc-sun-
> solaris2.8'."). However, $prefix/bin/i586-sun-solaris2.10-as is a Sparc
> Solaris 8 binary with an i586 Solaris 10 target (--version "This
> assembler was configured for a target of `i586-sun-solaris2.10'.").

  Well, it *absolutely* should have found and used that one.  Assuming you
really did configure gcc for that target, of course.

> It seems like either Makefile should be using $AS_FOR_TARGET (which
> would expand to 'i586-sun-solaris2.10-as'), instead of $AS (which is
> just 'as') OR the .s file being assembled should be using Sparc assembly
> instructions instead of x86. I assumed the former was the case, and that
> let me get further in the build, so that's what I've stuck with for
> now...

  No, no, no, you are definitely wrong.  Leave the makefile alone: it works
fine for every other kind of cross-compile, there's nothing wrong with it,
gcc 3.4.3 has been out for a while now and people would have noticed if it
was so badly broken!

  There is an unbreakable rule when making cross toolchains: you must use
the EXACT same arguments for --prefix and for --target when you configure
gcc as you used when you configured binutils.  You appear to have broken
that rule.  If the makefile is using $AS instead of $AS_FOR_TARGET, then you
have gotten a bad configure somehow, and autoconf has made you a makefile
suitable for a host-native compiler.  Did you try reconfiguring in the same
object directory you had previously used for the sparc-sun-solaris2.8
target?

  I think you should blow away your object directory, create a new one,
freshly configure and try again.  If it still doesn't work, show me the REAL
configure commands you've been using.  Don't post forged output in a bug
report!

  BTW, there's a list called the crossgcc mailing list
(http://sources.redhat.com/ml/crossgcc/), which is more suitable to this
sort of problem than the main gcc or gcc-help lists, but since we're here
now, we may as well try and sort this one out here; I'm just letting you
know for future reference.


cheers,
  DaveK
-- 
Can't think of a witty .sigline today



gcc-3.4-20050401 BUG? generates illegal instruction in X11R6.4.2/mkfontscale/freetype macro

2005-04-06 Thread Clemens Koller
Hello, gcc-list!
Hello, Melchior!
Well, about a year ago, we/you have had problems when building X11
that mkfontscale crashes with an illegal instruction or an segmentation
fault on powerpc. Maybe some of you remember.
Here is the old mail:
[Devel] [BUG] freetype2 CVS/HEAD: crash in FT_Get_Name_Index (ftobjs.c:2407)
http://lists.gnu.org/archive/html/freetype-devel/2004-04/msg00051.html
I am running into the same problems again (and several others did).
Even with a pretty new toolchain:
gcc-3.4-20050401 (3.4.4)
X11R6.4.2
glibc-2.3.4
binutils-2.15.96
freetype-2.1.9
to reproduce the problem:
install freetype-2.1.9
./configure
make
make install
compile X
make World
everything fine
make install
when mkfontscale tries to
+ ../../../exports/bin/mkfontscale /usr/X11R6/lib/X11/fonts/Type1
make[4]: *** [install] Error 132
(Illegal instruction)
I ran into the same problem again and again. This only happens
with the Type1 fonts... the others build fine!
My host is a embedded PowerPC from Freescale (MPC8540, e500 core, no fpu)
I've applied your patch for the macro. (inserting a dummy printf("");)
But this doesn't fix the problem on my platform.
What is the real background that mkfontscale breaks?
A compiler error or a bug in freetype?
Are there any good news that the problem is really fixed?
Well... and how? Any suggestions to track down that problem?
Best greets
Clemens Koller
___
R&D Imaging Devices
Anagramm GmbH
Rupert-Mayer-Str. 45/1
81379 Muenchen
Germany
http://www.anagramm.de
Phone: +49-89-741518-50
Fax: +49-89-741518-19


Re: [BUG mm] "fixed" i386 memcpy inlining buggy

2005-04-06 Thread Denis Vlasenko
On Tuesday 05 April 2005 19:34, Christophe Saout wrote:
> the new i386 memcpy macro is a ticking timebomb.
> 
> I've been debugging a new mISDN crash, just to find out that a memcpy
> was not inlined correctly.
> 
> Andrew, you should drop the fix-i386-memcpy.patch (or have it fixed).

Updated patch against 2.6.11 follows. This one, like the original
patch, is run tested too.

This time I took no chances, esi/edi contents are
explicitly propagated from one asm() block to another.
I didn't do it before, not expecting that gcc can be
s incredibly clever. Sorry.

Christophe does this one look/compile ok?
--
vda
--- linux-2.6.11.src/include/asm-i386/string.h.orig	Thu Mar  3 09:31:08 2005
+++ linux-2.6.11.src/include/asm-i386/string.h	Wed Apr  6 19:08:39 2005
@@ -198,47 +198,80 @@ static inline void * __memcpy(void * to,
 int d0, d1, d2;
 __asm__ __volatile__(
 	"rep ; movsl\n\t"
-	"testb $2,%b4\n\t"
-	"je 1f\n\t"
-	"movsw\n"
-	"1:\ttestb $1,%b4\n\t"
-	"je 2f\n\t"
-	"movsb\n"
-	"2:"
+	"movl %4,%%ecx\n\t"
+	"andl $3,%%ecx\n\t"
+#if 1	/* want to pay 2 byte penalty for a chance to skip microcoded rep? */
+	"jz 1f\n\t"
+#endif
+	"rep ; movsb\n\t"
+	"1:"
 	: "=&c" (d0), "=&D" (d1), "=&S" (d2)
-	:"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from)
+	: "0" (n/4), "g" (n), "1" ((long) to), "2" ((long) from)
 	: "memory");
 return (to);
 }
 
 /*
- * This looks horribly ugly, but the compiler can optimize it totally,
+ * This looks ugly, but the compiler can optimize it totally,
  * as the count is constant.
  */
 static inline void * __constant_memcpy(void * to, const void * from, size_t n)
 {
-	if (n <= 128)
-		return __builtin_memcpy(to, from, n);
-
-#define COMMON(x) \
-__asm__ __volatile__( \
-	"rep ; movsl" \
-	x \
-	: "=&c" (d0), "=&D" (d1), "=&S" (d2) \
-	: "0" (n/4),"1" ((long) to),"2" ((long) from) \
-	: "memory");
-{
-	int d0, d1, d2;
+	long esi, edi;
+	if (!n) return to;
+#if 1	/* want to do small copies with non-string ops? */
+	switch (n) {
+		case 1: *(char*)to = *(char*)from; return to;
+		case 2: *(short*)to = *(short*)from; return to;
+		case 4: *(int*)to = *(int*)from; return to;
+#if 1	/* including those doable with two moves? */
+		case 3: *(short*)to = *(short*)from;
+			*((char*)to+2) = *((char*)from+2); return to;
+		case 5: *(int*)to = *(int*)from;
+			*((char*)to+4) = *((char*)from+4); return to;
+		case 6: *(int*)to = *(int*)from;
+			*((short*)to+2) = *((short*)from+2); return to;
+		case 8: *(int*)to = *(int*)from;
+			*((int*)to+1) = *((int*)from+1); return to;
+#endif
+	}
+#endif
+	esi = (long) from;
+	edi = (long) to;
+	if (n >= 5*4) {
+		/* large block: use rep prefix */
+		int ecx;
+		__asm__ __volatile__(
+			"rep ; movsl"
+			: "=&c" (ecx), "=&D" (edi), "=&S" (esi)
+			: "0" (n/4), "1" (edi),"2" (esi)
+			: "memory"
+		);
+	} else {
+		/* small block: don't clobber ecx + smaller code */
+		if (n >= 4*4) __asm__ __volatile__("movsl"
+			:"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
+		if (n >= 3*4) __asm__ __volatile__("movsl"
+			:"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
+		if (n >= 2*4) __asm__ __volatile__("movsl"
+			:"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
+		if (n >= 1*4) __asm__ __volatile__("movsl"
+			:"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
+	}
 	switch (n % 4) {
-		case 0: COMMON(""); return to;
-		case 1: COMMON("\n\tmovsb"); return to;
-		case 2: COMMON("\n\tmovsw"); return to;
-		default: COMMON("\n\tmovsw\n\tmovsb"); return to;
+		/* tail */
+		case 0: return to;
+		case 1: __asm__ __volatile__("movsb"
+			:"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
+			return to;
+		case 2: __asm__ __volatile__("movsw"
+			:"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
+			return to;
+		default: __asm__ __volatile__("movsw\n\tmovsb"
+			:"=&D"(edi),"=&S"(esi):"0"(edi),"1"(esi):"memory");
+			return to;
 	}
 }
-  
-#undef COMMON
-}
 
 #define __HAVE_ARCH_MEMCPY
 


Re: [gnu.org #222786] GCC Testsuite Tests Exclude List Contribution to FSF

2005-04-06 Thread David Edelsohn
> Toon Moene writes:

Toon> We (the GNU Fortran folk) are in trouble too:  We're awaiting 
Toon> affirmation of the receipt of Thomas Koenig's papers (sent from Germany 
Toon> on the 19th of March).  He has quite a few patches to gfortran in the 
Toon> queue and GCC 4.0 (the first GCC release to contain gfortran) is 
Toon> scheduled for the 15th of April.

Toon> Please help.

The FSF has advised that we can accept Thomas's patches while the
paperwork catches up.

David



Illegal promotion of bool to int....

2005-04-06 Thread sjhill
Greetings.

I am running up against an interesting compiler bug whereby a bool is
being promoted to an int. I found a Bugzilla entry and a message on the
mailing list that I thought was similar to what I am seeing:

   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15484
   http://gcc.gnu.org/ml/gcc/2004-05/msg00752.html

Usage of the patch does not help for gcc-3.3 or 3.4 compilers on PPC.
I tried a fresh checkout of 4.1.0, but it failed to cross-build for
i686-linux hosted and powerpc-linux target. I am building my cross
toolchains with 'crosstool'. Here is the output from my compile:

powerpc-7450-linux-gnu-g++ -I../common -O2 -Wall -Wno-uninitialized  
-mtune=7450 -maltivec -g -c ../modify/transform.cpp -o transform.o
../modify/transform.cpp:109: error: prototype for `analysis::analysis(int, 
resolution, sample_allocator*, float, roi_node*, int)' does not match any in 
class `analysis'
../common/sample_processing.h:768: error: candidates are: 
analysis::analysis(const analysis&)
../common/sample_processing.h:781: error: 
analysis::analysis(resolution, sample_allocator*, bool, float, roi_node*)
../modify/transform.cpp:125: error: prototype for 
`sub_analysis::sub_analysis(resolution, sample_allocator*, int, float, 
roi_node*)' does not match any in class `sub_analysis'
../modify/analysis_local.h:49: error: candidates are: 
sub_analysis::sub_analysis(const sub_analysis&)
../modify/analysis_local.h:53: error: 
sub_analysis::sub_analysis(resolution, sample_allocator*, bool, float, 
roi_node*)
../modify/transform.cpp:309: error: prototype for `void 
sub_analysis::push(line_buf&, int)' does not match any in class `sub_analysis'
../modify/analysis_local.h:56: error: candidate is: virtual void 
sub_analysis::push(line_buf&, bool)
make: *** [transform.o] Error 1

Does anyone have some insight on this? Thanks.

-Steve


specs file

2005-04-06 Thread Marek Krzyzowski
I as sorry I repeat my appeal, but if really nobody works on Sparc or PowerPC 
processors and nobody wants to send me 'specs' file from directory > 
" /usr/lib/gcc-lib/name_of_compiler/lib/version/specs " or similar ???

One more time, thank you for help!


Nie dzwon do Londynu...
zanim nie sprawdzisz HALO.interia.pl
Tutaj: http://link.interia.pl/f1870



Re: Illegal promotion of bool to int....

2005-04-06 Thread Joe Buck
On Wed, Apr 06, 2005 at 12:14:04PM -0500, [EMAIL PROTECTED] wrote:
> I am running up against an interesting compiler bug whereby a bool is
> being promoted to an int. I found a Bugzilla entry and a message on the
> mailing list that I thought was similar to what I am seeing:
> ...
> Does anyone have some insight on this? Thanks.

Sorry, it's not possible to help you figure out a bug from such a vague
description.  A testcase would be needed.  If the bug is in code that
you cannot publish, you can try to cut it down to a small example that
you can reveal.



Re: specs file

2005-04-06 Thread Zack Weinberg

> I as sorry I repeat my appeal, but if really nobody works on Sparc
> or PowerPC processors and nobody wants to send me 'specs' file from
> directory > " /usr/lib/gcc-lib/name_of_compiler/lib/version/specs "
> or similar ???

You probably don't need this file.  If you do, you can get it for
yourself using gcc -dumpspecs.  What are you really trying to do?

zw


Re: 3.4.3 on Solaris9, boehm-gc probs.

2005-04-06 Thread Eric Botcazou
> /usr/local/sparc-sun-solaris2.9/sys-include -DGC_SOLARIS_THREADS=1
> -DGC_SOLARIS_PTHREADS=1 -DSILENT=1 -DNO_SIGNALS=1 -DALL_INTERIOR_POINTERS=1
> -DJAVA_FINALIZATION=1 -DGC_GCJ_SUPPORT=1 -DATOMIC_UNCOLLECTABLE=1 -I.
> -I/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc
> -I/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/include -O2 -mcpu=v9
> -fexceptions -I././targ-include
> -I/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/./libc/include -O2 -mcpu=v9
> -c /export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c  -fPIC -DPIC -o
> .libs/dyn_load.o /export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c: In
> function `GC_FirstDLOpenedLinkMap':
> /export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:110: error: syntax
> error before "_DYNAMIC"
> /export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:111: error:
> `Elf32_Dyn' undeclared (first use in this function)

Elf32_Dyn is supposed to be defined in /usr/include/sys/link.h:

typedef struct {
Elf32_Sword d_tag;  /* how to interpret value */
union {
Elf32_Word  d_val;
Elf32_Addr  d_ptr;
Elf32_Off   d_off;
} d_un;
} Elf32_Dyn;

Here's what I get with -H:

. /opt/build/eric/gcc-3_4-branch/gcc/include/sys/types.h
.. /usr/include/sys/isa_defs.h
.. /usr/include/sys/feature_tests.h
.. /usr/include/sys/machtypes.h
.. /usr/include/sys/int_types.h
.. /usr/include/sys/select.h
... /usr/include/sys/time.h
 /opt/build/eric/gcc-3_4-branch/gcc/include/sys/types.h
 /usr/include/time.h
. /usr/include/iso/time_iso.h
. /usr/include/sys/time_impl.h
 /usr/include/sys/select.h
. /home/eric/cvs/gcc-3_4-branch/boehm-gc/include/private/gc_priv.h
.. /home/eric/cvs/gcc-3_4-branch/boehm-gc/include/private/../gc.h
... /home/eric/cvs/gcc-3_4-branch/boehm-gc/include/private/../gc_config_macros.h
 /opt/build/eric/gcc-3_4-branch/gcc/include/stddef.h
... 
/home/eric/cvs/gcc-3_4-branch/boehm-gc/include/private/../gc_pthread_redirects.h
 /usr/include/thread.h
. /opt/build/eric/gcc-3_4-branch/gcc/include/sys/signal.h
.. /usr/include/sys/iso/signal_iso.h
... /usr/include/sys/unistd.h
.. /usr/include/sys/siginfo.h
... /usr/include/sys/machsig.h
. /usr/include/synch.h
.. /usr/include/sys/machlock.h
... /usr/include/v7/sys/privregs.h
 /usr/include/v7/sys/psr.h
 /usr/include/sys/fsr.h
.. /usr/include/sys/synch.h
 /usr/include/pthread.h
. /usr/include/sched.h
 /usr/include/signal.h
. /usr/include/iso/signal_iso.h
. /usr/include/sys/procset.h
.. /home/eric/cvs/gcc-3_4-branch/boehm-gc/include/private/../gc_mark.h
... /home/eric/cvs/gcc-3_4-branch/boehm-gc/include/private/../gc.h
.. /home/eric/cvs/gcc-3_4-branch/boehm-gc/include/private/gcconfig.h
... /usr/include/errno.h
 /usr/include/sys/errno.h
... /usr/include/sys/vmparam.h
... /usr/include/unistd.h
.. /home/eric/cvs/gcc-3_4-branch/boehm-gc/include/private/gc_hdrs.h
.. /usr/include/stdlib.h
... /usr/include/iso/stdlib_iso.h
.. /opt/build/eric/gcc-3_4-branch/gcc/include/stddef.h
.. /home/eric/cvs/gcc-3_4-branch/boehm-gc/include/private/gc_locks.h
.. /usr/include/string.h
... /usr/include/iso/string_iso.h
. /opt/build/eric/gcc-3_4-branch/gcc/include/stdio.h
.. /opt/build/eric/gcc-3_4-branch/gcc/include/stdarg.h
.. /usr/include/iso/stdio_iso.h
... /usr/include/sys/va_list.h
... /opt/build/eric/gcc-3_4-branch/gcc/include/stdio_tag.h
... /usr/include/stdio_impl.h
. /usr/include/sys/elf.h
.. /usr/include/sys/elftypes.h
. /usr/include/dlfcn.h
. /usr/include/link.h
.. /usr/include/sys/link.h
.. /usr/include/libelf.h

-- 
Eric Botcazou


Re: [gnu.org #222786] GCC Testsuite Tests Exclude List Contribution to FSF

2005-04-06 Thread Toon Moene
David Edelsohn wrote:
Toon Moene writes:

Toon> We (the GNU Fortran folk) are in trouble too:  We're awaiting 
Toon> affirmation of the receipt of Thomas Koenig's papers (sent from Germany 
Toon> on the 19th of March).  He has quite a few patches to gfortran in the 
Toon> queue and GCC 4.0 (the first GCC release to contain gfortran) is 
Toon> scheduled for the 15th of April.

Toon> Please help.
The FSF has advised that we can accept Thomas's patches while the
paperwork catches up.
David
Thanks,
--
Toon Moene - e-mail: [EMAIL PROTECTED] - phone: +31 346 214290
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
A maintainer of GNU Fortran 95: http://gcc.gnu.org/fortran/
News on GNU Fortran 95: http://gfortran.org/


use of extended asm on ppc for long long data types

2005-04-06 Thread Kumar Gala
Is there anyway to specify a long long data type as a constraint to 
extended asm for powerpc32.  If so, how does one specify the registers 
that would have the upper and lower bits

- kumar


Re: use of extended asm on ppc for long long data types

2005-04-06 Thread David Edelsohn
> Kumar Gala writes:

Kumar> Is there anyway to specify a long long data type as a constraint to 
Kumar> extended asm for powerpc32.  If so, how does one specify the registers 
Kumar> that would have the upper and lower bits

The rs6000.md machine description has examples of patterns
implementing 64-bit (DImode) operations in 32-bit mode.  The constraint is
a normal "r" or "b" GPR constraint.  GCC allocates pairs of consecutive
registers to hold the 64-bit value in 32-bit mode.

When operating in big-endian, the MSB is in the first register and
the LSB is the second register (R+1); in little-endian mode, the two
registers are reversed.  The PowerPC port defines a special print_operand
modifier %L to refer to R+1, e.g., for operand 0, one would write assembly
code referring to %0 and %L0.

David



Re: use of extended asm on ppc for long long data types

2005-04-06 Thread Kumar Gala
On Apr 6, 2005, at 2:11 PM, David Edelsohn wrote:
> Kumar Gala writes:
Kumar> Is there anyway to specify a long long data type as a 
constraint to
Kumar> extended asm for powerpc32.  If so, how does one specify the 
registers
Kumar> that would have the upper and lower bits

    The rs6000.md machine description has examples of patterns
 implementing 64-bit (DImode) operations in 32-bit mode.  The 
constraint is
 a normal "r" or "b" GPR constraint.  GCC allocates pairs of 
consecutive
 registers to hold the 64-bit value in 32-bit mode.

    When operating in big-endian, the MSB is in the first register 
and
 the LSB is the second register (R+1); in little-endian mode, the two
 registers are reversed.  The PowerPC port defines a special 
print_operand
 modifier %L to refer to R+1, e.g., for operand 0, one would write 
assembly
code referring to %0 and %L0.
This is great, can I beg of you to update the gcc docs to include this 
note for the rs6000 extended asm section.

thanks
- kumar


Re: Question about "#pragma pack(n)"

2005-04-06 Thread James E Wilson
On Tue, 2005-04-05 at 21:20, feng qiu wrote:
> In c-pragma.c file, #pragma pack(n) set the value of 
> "maximum_field_alignment".
> And in opts.c file,-fpack-struct set "flag_pack_struct = 1" .
> But I don't known the relation between them.

Try using grep, as in "grep flag_pack_struct *.c" and "grep
maximum_field_alignment *.c".

> It seems that they relate to the four ariablesââ
> DECL_ALIGN,DECL_PACKED,TYPE_PACKED,and TYPE_ALIGN in stor-layout.c file,but 
> what is the difference in them?Should I modify this file?

If you really want to modify files, and submit a patch, you have to use
current mainline sources.  This stuff works differently on mainline than
it does in the older sources you are looking at.  We can't accept a
patch based off of an older release.

Yes, you are looking in the right place.  TYPE_PACKED and
maximum_field_alignment are the important ones for this particular
problem.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com




Re: 3.4.3 on Solaris9, boehm-gc probs.

2005-04-06 Thread Hugh Sasse Staff Elec Eng
On Wed, 6 Apr 2005, Eric Botcazou wrote:
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:110: error: syntax
error before "_DYNAMIC"
/export/home/Scratch/hgs/gcc-3.4.3/boehm-gc/dyn_load.c:111: error:
`Elf32_Dyn' undeclared (first use in this function)
Elf32_Dyn is supposed to be defined in /usr/include/sys/link.h:
Grep -C 5 gives me:

union {
Elf32_Word  d_val;
Elf32_Addr  d_ptr;
Elf32_Off   d_off;
} d_un;
} Elf32_Dyn;
#if (defined(_LP64) || ((__STDC__ - 0 == 0) && (!defined(_NO_LONGLONG
typedef struct {
Elf64_Xword d_tag;  /* how to interpret value */
union {
--
unsigned long   l_addr; /* address at which object is mapped */
char*l_name;/* full name of loaded object */
#ifdef _LP64
Elf64_Dyn   *l_ld;  /* dynamic structure of object */
#else
Elf32_Dyn   *l_ld;  /* dynamic structure of object */
#endif
Link_map *  l_next; /* next link object */
Link_map *  l_prev; /* previous link object */
char*l_refname; /* filters reference name */
};

typedef struct {
   Elf32_Sword d_tag;  /* how to interpret value */
   union {
   Elf32_Word  d_val;
   Elf32_Addr  d_ptr;
   Elf32_Off   d_off;
   } d_un;
} Elf32_Dyn;
Here's what I get with -H:
Sorry?  -H applied to what command?

[...]
--
Eric Botcazou
Thank you,
Hugh


Re: 3.4.3 on Solaris9, boehm-gc probs.

2005-04-06 Thread Eric Botcazou
> > Here's what I get with -H:
>
> Sorry?  -H applied to what command?

The GCC command line you pasted.

-- 
Eric Botcazou


re: gcc-3.4-20050401 BUG? generates illegal instruction in X11R6.4.2/mkfontscale/freetypemacro

2005-04-06 Thread Daniel Kegel
Clemens Koller wrote:
+ ../../../exports/bin/mkfontscale /usr/X11R6/lib/X11/fonts/Type1
make[4]: *** [install] Error 132
Can you try to produce a standalone test case
that doesn't require building all of X?
e.g. can you save the preprocessor output from the mkfontscale
compiler run, compile that on a different system,
and reproduce the problem, preferably with a single
known font file?
- Dan



gcc-3.3-20050406 is now available

2005-04-06 Thread gccadmin
Snapshot gcc-3.3-20050406 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/3.3-20050406/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 3.3 CVS branch
with the following options: -rgcc-ss-3_3-20050406 

You'll find:

gcc-3.3-20050406.tar.bz2  Complete GCC (includes all of below)

gcc-core-3.3-20050406.tar.bz2 C front end and core compiler

gcc-ada-3.3-20050406.tar.bz2  Ada front end and runtime

gcc-g++-3.3-20050406.tar.bz2  C++ front end and runtime

gcc-g77-3.3-20050406.tar.bz2  Fortran 77 front end and runtime

gcc-java-3.3-20050406.tar.bz2 Java front end and runtime

gcc-objc-3.3-20050406.tar.bz2 Objective-C front end and runtime

gcc-testsuite-3.3-20050406.tar.bz2The GCC testsuite

Diffs from 3.3-20050330 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-3.3
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.