Re: GCC 4.2/4.3 Status Report (2006-10-17)

2006-10-20 Thread Arnaud Charlet
I am also planning to incorporate many Ada improvements (such as
improved support for Ada 2005) and fixes that
I was holding while the 4.2 branch was not created, I assume this is
not an issue (and very localized to the gcc/ada/ directory of course).

Arno


GTY(()) & GCC garbage collector

2006-10-20 Thread Basile STARYNKEVITCH

Dear All,

I finally solved (with help from Sebastian Pop) my problems about GTY(()) etc...

I added some blurb on it in the Wiki 
http://gcc.gnu.org/wiki/Memory_management

Please correct if I am wrong

Regards

-- 
Basile STARYNKEVITCH http://starynkevitch.net/Basile/ 
email: basilestarynkevitchnet 
aliases: basiletunesorg = bstarynknerimnet
8, rue de la Faïencerie, 92340 Bourg La Reine, France


Re: Modifying ARM code generator for elimination of 8bit writes - need help

2006-10-20 Thread Rask Ingemann Lambertsen
On Mon, Oct 02, 2006 at 12:42:04PM +0200, Wolfgang Mües wrote:
> Now it's time to give a big "thank you" to all persons involved, 
> ecpecially Rask Ingemann Lambertsen with his invaluable help.
> 
> As I started this project, I feared that I would never succeed, and 
> now ... the modified compiler is used about 3 month now, and DSLINUX 
> with this crude modification is working fine with 36 MBytes RAM 
> available, and has a good future now.

   I'm glad to hear that it works. I have a few improvements I'd like to
make, but for the next few months, my focus will be on getting my 16-bit x86
into GCC 4.3.

   You can take a look at the relout_outqi pattern. It uses two scratch
registers: One for the address and one as a scratch register for swpb. It is
worth investigating if you can safely trash the input operand, since the
reason we have an output reload is because a pseudo register got a stack
slot instead of a hard register. I.e. reload shouldn't expect the value in
operand 1 to be preserved for use in a later insn. But I think a reload
expert should comment on this.

-- 
Rask Ingemann Lambertsen


Raw socket...

2006-10-20 Thread Basavaraj Hiremath

 Hi,
 I am writting an example program, to create a raw
 socket on Fedora Core Linx.
 
When I create socket, my linux sustem crashes. I
 need
 to powerdown the system. I am running this program
 as
 super user to create raw socket.
 
 Following line crashes..
 rawSocket = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
 
 Any insight on this will be great help.
 
 Thanks & regards,
 Raj
 

__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


Re: Raw socket...

2006-10-20 Thread Ian Lance Taylor
Basavaraj Hiremath <[EMAIL PROTECTED]> writes:

>  I am writting an example program, to create a raw
>  socket on Fedora Core Linx.
>  
> When I create socket, my linux sustem crashes. I
>  need
>  to powerdown the system. I am running this program
>  as
>  super user to create raw socket.
>  
>  Following line crashes..
>  rawSocket = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);

Wrong mailing list.  This mailing list is for gcc development.  Please
try a Linux programming list.

Ian


Re: C++ name mangling for local entities

2006-10-20 Thread Geoffrey Keating


On 19/10/2006, at 9:17 PM, Mark Mitchell wrote:


Geoffrey Keating wrote:
For GCC, I've found it necessary to have a way to name local (that  
is,

namespace-scope 'static') variables and functions which allows more
than one such symbol to be present and have distinct mangled names.


With my GCC hat on, I don't think this is desirable.  For ELF at  
least, there's nothing that prevents us using the same name for  
multiple local symbols (since "ld -r" does it).  For the sake of  
both LTO and IMA, we should add a feature to the assembler like:


   .asm_alias x = y

that says references to "x" are emitted as references to a new "y",  
distinct from all other "y" references.  That would obviate the  
need for multiple statics with the same name, since in the case  
that you want to do this (IMA) you could instead emit them using  
whatever name was convenient for generating the assembly file, and  
then let the assembler emit a symbol with the correct name.  That  
would help to meet the objective that the output from IMA and/or  
LTO looks like the output from "ld -r", modulo optimization.  I  
think it would be great if you would help implement that, which  
would then make extending the C++ ABI change unnecessary.


On Darwin, all the DWARF information in .o files is matched by name¹  
with symbols in the executable, so this won't work.  There is no  
DWARF information in .o files produced with 'ld -r', just an index  
referring to the original .o files, so it's not a problem there.


¹: That is, the name in the .o file symbol table referenced by a  
reloc for, say, a DW_AT_pc_begin entry is matched with a STAB in the  
executable.  Matching does not look at the DW_AT_name in the DWARF  
information.


Now, with my C++ ABI hat on, and assuming that the idea above is  
intractable, then: (a) as you note, this is out-of-scope for the C+ 
+ ABI, if we confine ourselves to pure ISO C++, but (b) if the  
other ABI stakeholders don't mind, I don't see any reason not to  
consider reserving a chunk of the namespace.



What I currently have implemented is
 ::= 
   ::= 
   ::= 
   ::=// new
 ::= L  _// new
It's distinguishable from the other possibilies, because operator- 
name
starts with a lowercase letter, ctor-dtor-name starts with 'C' or  
'D',

and source-name starts with a digit.  There is no semantic meaning
attached to the number in a local-source-name, it exists only to keep
different names distinct (so it is not like  in a
local-name).


That's true, but is there a reason not to use the discriminator  
encoding?  There might well be an ambiguity, but I didn't see at  
first blush.  If so, that would seem most natural to me.


You mean

 ::= Z  

?  Although I think it can't conflict with an actual ,  
you have to at least get to the end of  and see the '_'  
in the discriminator before you can be sure which one you're seeing;  
you could have


_ZZ4func_0v  // a local-source-name
_ZZ4funcvE1i // a local-name
_ZZZ4func_0vE1i  // a local-name containing a local-source-name

_ZZN5spaceZ4func_0EvE1i  // valid
_ZZN5spaceZ4func_0vE1i  // invalid

You can't use a local-name directly (and avoid needing local-source- 
name at all) because
- it doesn't apply to static variables, so you'd have to invent  
something there anyway, and
- you would be unable to mangle some symbols until you'd seen every  
translation unit, because a function declared 'static' in one might  
have the same name as a function declared 'inline' in another and  
they might, for example, both contain static variables of the same  
name; the 'inline' function must get the ABI-defined discriminator  
values.


Certainly

 ::= L  

will work and is more consistent, so consider the proposal amended to  
have that.

smime.p7s
Description: S/MIME cryptographic signature


The Linux binutils 2.17.50.0.6 is released

2006-10-20 Thread H. J. Lu
This is the beta release of binutils 2.17.50.0.6 for Linux, which is
based on binutils 2006 1020 in CVS on sources.redhat.com plus various
changes. It is purely for Linux.

Starting from the 2.17.50.0.6 release, the default output section LMA
(load memory address) has changed for allocatable sections from being
equal to VMA (virtual memory address), to keeping the difference between
LMA and VMA the same as the previous output section in the same region.

For

.data.init_task : { *(.data.init_task) }

LMA of .data.init_task section is equal to its VMA with the old linker.
With the new linker, it depends on the previous output section. You
can use

.data.init_task : AT (ADDR(.data.init_task)) { *(.data.init_task) }

to ensure that LMA of .data.init_task section is always equal to its
VMA. The linker script in the older 2.6 x86-64 kernel depends on the
old behavior.  You can add AT (ADDR(section)) to force LMA of
.data.init_task section equal to its VMA. It will work with both old
and new linkers. The x86-64 kernel linker script in kernel 2.6.13 and
above is OK.

The new x86_64 assembler no longer accepts

monitor %eax,%ecx,%edx

You should use

monitor %rax,%ecx,%edx

or
monitor

which works with both old and new x86_64 assemblers. They should
generate the same opcode.

The new i386/x86_64 assemblers no longer accept instructions for moving
between a segment register and a 32bit memory location, i.e.,

movl (%eax),%ds
movl %ds,(%eax)

To generate instructions for moving between a segment register and a
16bit memory location without the 16bit operand size prefix, 0x66,

mov (%eax),%ds
mov %ds,(%eax)

should be used. It will work with both new and old assemblers. The
assembler starting from 2.16.90.0.1 will also support

movw (%eax),%ds
movw %ds,(%eax)

without the 0x66 prefix. Patches for 2.4 and 2.6 Linux kernels are
available at

http://www.kernel.org/pub/linux/devel/binutils/linux-2.4-seg-4.patch
http://www.kernel.org/pub/linux/devel/binutils/linux-2.6-seg-5.patch

The ia64 assembler is now defaulted to tune for Itanium 2 processors.
To build a kernel for Itanium 1 processors, you will need to add

ifeq ($(CONFIG_ITANIUM),y)
CFLAGS += -Wa,-mtune=itanium1
AFLAGS += -Wa,-mtune=itanium1
endif

to arch/ia64/Makefile in your kernel source tree.

Please report any bugs related to binutils 2.17.50.0.6 to [EMAIL PROTECTED]

and

http://www.sourceware.org/bugzilla/

If you don't use

# rpmbuild -ta binutils-xx.xx.xx.xx.xx.tar.bz2

to compile the Linux binutils, please read patches/README in source
tree to apply Linux patches if there are any.

Changes from binutils 2.17.50.0.5:

1. Update from binutils 2006 1020.
2. Don't make debug symbol dynamic. PR 3290.
3. Don't page align empty SHF_ALLOC sections, which leads to very large
executables. PR 3314.
4. Use a different section index for section relative symbols against
removed empty sections.
5. Fix a few ELF EH frame handling bugs.
6. Don't ignore relocation overflow on branches to undefweaks for
x86-64. PR 3283.
7. Rename MNI to SSSE3.
8. Properly append symbol list for --dynamic-list.
lists.
9. Various ARM ELF fixes.
10. Correct 64bit library search path for Linux/x86 linker with 64bit
support.
11. Fix ELF linker to copy OS/PROC specific flags from input section to
output section.
12. Fix DW_FORM_ref_addr handling in linker dwarf reader. PR 3191.
13. Fix ELF indirect symbol handling. PR 3351.
14. Fix PT_GNU_RELRO segment handling for SHF_TLS sections. Don't add
PT_GNU_RELRO segment when there are no relro sections. PR 3281.
15. Various MIPS ELF fixes.
16. Various Sparc ELF fixes.
17. Various Xtensa ELF fixes.

Changes from binutils 2.17.50.0.4:

1. Update from binutils 2006 0927.
2. Fix linker regressions of section address and section relative symbol
with empty output section. PR 3223/3267.
3. Fix "strings -T". PR 3257.
4. Fix "objcopy --only-keep-debug". PR 3262.
5. Add Intell iwmmxt2 support.
6. Fix an x86 disassembler bug. PR 3100.

Changes from binutils 2.17.50.0.3:

1. Update from binutils 2006 0924.
2. Speed up linker on .o files with debug info on linkonce sections.
PR 3111.
3. Added x86-64 PE support.
4. Fix objcopy/strip on .o files with section groups. PR 3181.
5. Fix "ld --hash-style=gnu" crash with gcc 3.4.6. PR 3197.
6. Fix "strip --strip-debug" on .o files generated with
"gcc -feliminate-dwarf2-dups". PR 3186.
7. Fix "ld -r" on .o files generated with "gcc -feliminate-dwarf2-dups".
PR 3249.
8. Add --dynamic-list to linker to make global symbols dynamic.
9. Fix magic number for EFI ia64. PR 3171.
10. Remove PT_NULL segment for "ld -z relro". PR 3015.
11. Make objcopy to perserve the file formats in archive elements.
PR 3110.
12. Optimize x86-64 assembler and fix disassembler for
"add32 mov xx,$eax". PR 3235.
13. Improve linker diagnostics. PR 3107.
14. Fix "ld --sort-section name". PR 3009.
15. Updated an x86 disassembler bug. PR 3000.
16. Various updates for PPC

Re: C++ name mangling for local entities

2006-10-20 Thread Mark Mitchell



we should add a feature to the assembler like:

   .asm_alias x = y

that says references to "x" are emitted as references to a new "y", 
distinct from all other "y" references. 


On Darwin, all the DWARF information in .o files is matched by name¹ 
with symbols in the executable, so this won't work. 


In that case, on Darwin, the assembler could leave the name "x" as "x", 
so that all the names in the object file were unique.  Since this is 
only for local symbols, there's no ABI impact, as you mentioned.  Then, 
we'd have better behavior on ELF platforms and would not have to make 
any change to the C++ ABI.  You could use your suggested encoding in GCC 
as "x", but it would only show up in object files on systems that don't 
support multiple local symbols with the same name.



Now, with my C++ ABI hat on


That's true, but is there a reason not to use the discriminator 
encoding? 



You mean

 ::= Z  

?


Yes, that's what I meant.  I think that would be best, partly because it 
avoids having to reserve "L", but:



 ::= L  

will work and is more consistent, so consider the proposal amended to 
have that.


also seems OK, assuming that we need to do this at all.

--
Mark Mitchell
CodeSourcery
[EMAIL PROTECTED]
(650) 331-3385 x713


gcc-4.1-20061020 is now available

2006-10-20 Thread gccadmin
Snapshot gcc-4.1-20061020 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.1-20061020/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.1 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-4_1-branch 
revision 117913

You'll find:

gcc-4.1-20061020.tar.bz2  Complete GCC (includes all of below)

gcc-core-4.1-20061020.tar.bz2 C front end and core compiler

gcc-ada-4.1-20061020.tar.bz2  Ada front end and runtime

gcc-fortran-4.1-20061020.tar.bz2  Fortran front end and runtime

gcc-g++-4.1-20061020.tar.bz2  C++ front end and runtime

gcc-java-4.1-20061020.tar.bz2 Java front end and runtime

gcc-objc-4.1-20061020.tar.bz2 Objective-C front end and runtime

gcc-testsuite-4.1-20061020.tar.bz2The GCC testsuite

Diffs from 4.1-20061013 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.1
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.


GCC 4.2 branch created; mainline open in Stage 1

2006-10-20 Thread Mark Mitchell
I have created the GCC 4.2 branch.  The branch is open for 
regression-fixes only, as is customary for release branches.  I believe 
I have completed the steps in branching.html with two exceptions:


1. I have not created a mainline snapshot manually.  I don't quite 
understand how to do that, and if the only issue is incorrect "previous 
snapshot" references in the generated mail, it doesn't really seem worth 
the trouble.  If there's some more grievous problem, please let me know, 
and I will try to fix it tomorrow.


2. I have not regenerated {gcc,cpplib}.pot, or sent them off to the 
translation project.  Joseph, would you please do that, at your convenience?


The mainline is now in Stage 1.

Thanks to those who helped fix PRs to meet the 4.2 branch criteria!

--
Mark Mitchell
CodeSourcery
[EMAIL PROTECTED]
(650) 331-3385 x713