Re: Thread Sanitizer and GCC GOMP (OpenMP)

2013-02-27 Thread Konstantin Serebryany
Hi Jeffrey,

On Tue, Feb 26, 2013 at 8:42 PM, Jeffrey Walton  wrote:
> Hi All,
>
> This came up on another list (Automake). I'm going to quote Bob
> Friesenhahn directly since my paraphrase won't do him justice:
>
> "I am curious if this ThreadSanitizer extension will work with the
> normal build of GCC GOMP (for OpenMP) on GNU/Linux.  Up to now, it has
> been necessary for interested parties to build their own GCC in order
> to build a libgomp which uses pthreads rather than Linux clone for
> threading.  This is because valgrind only supports threads created via
> pthreads and pthread locking semantics."
>
> Does Thread Sanitizer work for non-pthread or OpenMP environments? [1]
> and [2] don't discuss limitations.

ThreadSanitizer works for pthread-based synchronization and atomic
compiler builtins (the latter, only in the code that is instrumented
by tsan).
If the code uses something else, it could be possible to support that
to, but we will need minimized test cases.
I suggest you to talk to us at thread-saniti...@googlegroups.com.

>
> Jeff
>
> [1] http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options
> [2] http://code.google.com/p/data-race-test/wiki/ThreadSanitizer

This link refers to the old Valgrind-based ThreadSanitizer, which we
have abandoned.
See code.google.com/p/thread-sanitizer/ for the new compiler-base tool.

--kcc


GSOC this year?

2013-02-27 Thread Torvald Riegel
Hi,

will GCC be a mentoring organization for Google Summer of Code this
year?  Has somebody already volunteered to administer this?

Torvald



Re: GSOC this year?

2013-02-27 Thread Tobias Burnus

Hi,

Torvald Riegel wrote:

will GCC be a mentoring organization for Google Summer of Code this
year?


Well, the application of the organizations only starts in about three 
weeks* and which orgs will be participating is only announced on April 
8. However, it is very likely that GCC will participate.



Has somebody already volunteered to administer this?


Are you volunteering to become the org admin? Diego has indicated that 
he won't do it this year … (If/as no one else does it, I offered to 
accept the chore.)


Tobias

* http://www.google-melange.com/gsoc/homepage/google/gsoc2013


Re: GSOC this year?

2013-02-27 Thread Diego Novillo
On Wed, Feb 27, 2013 at 6:48 AM, Torvald Riegel  wrote:
> will GCC be a mentoring organization for Google Summer of Code this
> year?  Has somebody already volunteered to administer this?

I used to administer GCC's participation, but I will not be doing it
this year.  Tobias (CCd) said he might be able to administer it if
nobody else volunteers.  So far, I have not been able to find anyone
who would.


Diego.


The Linux binutils 2.23.52.0.1 is released

2013-02-27 Thread H.J. Lu
This is the beta release of binutils 2.23.52.0.1 for Linux, which is
based on binutils 2013 0226 in CVS on sourceware.org plus various
changes. It is purely for Linux.

All relevant patches in patches have been applied to the source tree.
You can take a look at patches/README to see what have been applied and
in what order they have been applied.

Starting from the 2.23.52.0.1 release, when creating executables, BFD
linker will issue an error for undefined weak reference which is
defined in a shared library from DT_NEEDED.  Previously BFD linker
will silently include the shared library from DT_NEEDED.

Starting from the 2.21.51.0.3 release, you must remove .ctors/.dtors
section sentinels when building glibc or other C run-time libraries.
Otherwise, you will run into:

http://sourceware.org/bugzilla/show_bug.cgi?id=12343

Starting from the 2.21.51.0.2 release, BFD linker has the working LTO
plugin support. It can be used with GCC 4.5 and above. For GCC 4.5, you
need to configure GCC with --enable-gold to enable LTO plugin support.

Starting from the 2.21.51.0.2 release, binutils fully supports compressed
debug sections.  However, compressed debug section isn't turned on by
default in assembler. I am planning to turn it on for x86 assembler in
the future release, which may lead to the Linux kernel bug messages like

WARNING: lib/ts_kmp.o (.zdebug_aranges): unexpected non-allocatable section.

But the resulting kernel works fine.

Starting from the 2.20.51.0.4 release, no diffs against the previous
release will be provided.

You can enable both gold and bfd ld with --enable-gold=both.  Gold will
be installed as ld.gold and bfd ld will be installed as ld.bfd.  By
default, ld.bfd will be installed as ld.  You can use the configure
option, --enable-gold=both/gold to choose gold as the default linker,
ld.  IA-32 binary and X64_64 binary tar balls are configured with
--enable-gold=both/ld --enable-plugins --enable-threads.

Starting from the 2.18.50.0.4 release, the x86 assembler no longer
accepts

fnstsw %eax

fnstsw stores 16bit into %ax and the upper 16bit of %eax is unchanged.
Please use

fnstsw %ax

Starting from the 2.17.50.0.4 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.23.52.0.1 to
hjl.to...@gmail.com

and

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

Changes from binutils 2.23.51.0.9:

1. Update from binutils 2013 0226.
2. Add Intel SAMP new instruction support.
3. Allow dynamic R_386_SIZE32, R_X86_64_SIZE32 and R_X86_64_SIZE64
relocations agaist TLS symbols.
4. Fix BFD linker to set STB_GNU_UNIQUE only for definition.  PR 15167.
5. Fix BFD linker to set STB_GNU_UNIQUE only if symbol is defined in
regular object.  PR 15107.
6. Don't add DT_NEEDED for references from the LTO IR input.  PR 15146.
7. When creating executables, BFD linker will issue an error for undefined
weak

Re: MIPS & register allocation question

2013-02-27 Thread Richard Sandiford
"Steve Ellcey "  writes:
> I was looking at MIPS register allocation and I noticed an odd thing.
> There is a definition of REG_ALLOC_ORDER in mips.h but in 
> mips_order_regs_for_local_alloc (mips.c), we do not use this ordering,
> we just have:
>
>   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
> reg_alloc_order[i] = i;
>
> I was wondering why we don't use something like ARM has.
> I.e.:
>
>   const int mips_reg_alloc_order[] = REG_ALLOC_ORDER;
>   memcpy(reg_alloc_order, mips_reg_alloc_order, sizeof (reg_alloc_order));

Yeah, it's one of those historical accidents.  Chung-Lin did some good
archaeology on it:

   http://gcc.gnu.org/ml/gcc/2011-01/msg00093.html

FWIW, after seeing that, I tried the patch below.  Disabling
ADJUST_REG_ALLOC_ORDER seemed to be a very mixed bag sizewise though --
certainly not the consistent win that I hoped -- and I wasn't set up to
do proper speed testing.  In the end I'm afraid I just let it drop.

Thanks,
Richard


Index: gcc/config/mips/mips-protos.h
===
--- gcc/config/mips/mips-protos.h   2011-09-17 10:18:14.0 +0100
+++ gcc/config/mips/mips-protos.h   2011-09-17 19:22:49.0 +0100
@@ -248,7 +248,6 @@ extern bool mips_expand_ext_as_unaligned
 extern bool mips_expand_ins_as_unaligned_store (rtx, rtx, HOST_WIDE_INT,
HOST_WIDE_INT);
 extern bool mips_mem_fits_mode_p (enum machine_mode mode, rtx x);
-extern void mips_order_regs_for_local_alloc (void);
 extern HOST_WIDE_INT mips_debugger_offset (rtx, HOST_WIDE_INT);
 
 extern void mips_push_asm_switch (struct mips_asm_switch *);
Index: gcc/config/mips/mips.c
===
--- gcc/config/mips/mips.c  2011-09-17 08:59:21.0 +0100
+++ gcc/config/mips/mips.c  2011-09-17 19:22:49.0 +0100
@@ -15900,28 +15900,6 @@ mips_expand_vector_init (rtx target, rtx
   emit_move_insn (target, mem);
 }
 
-/* When generating MIPS16 code, we want to allocate $24 (T_REG) before
-   other registers for instructions for which it is possible.  This
-   encourages the compiler to use CMP in cases where an XOR would
-   require some register shuffling.  */
-
-void
-mips_order_regs_for_local_alloc (void)
-{
-  int i;
-
-  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-reg_alloc_order[i] = i;
-
-  if (TARGET_MIPS16)
-{
-  /* It really doesn't matter where we put register 0, since it is
- a fixed register anyhow.  */
-  reg_alloc_order[0] = 24;
-  reg_alloc_order[24] = 0;
-}
-}
-
 /* Implement EH_USES.  */
 
 bool
Index: gcc/config/mips/mips.h
===
--- gcc/config/mips/mips.h  2011-09-17 08:51:17.0 +0100
+++ gcc/config/mips/mips.h  2011-09-17 10:18:04.0 +0100
@@ -1930,9 +1930,18 @@ #define REG_ALLOC_ORDER  
\
  of the extra accumulators available with -mdspr2.  In some cases, \
  it can also help to reduce register pressure.  */ \
   64, 65,176,177,178,179,180,181,  \
-  /* Call-clobbered GPRs.  */  \
-  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,   \
-  24, 25, 31,  \
+  /* Call-clobbered GPRs.  Put $24 first, because when M16_REGS and\
+ T_REG have equal cost, we prefer to use T_REG.  In particular,\
+ it means that CMP+branch sequences will generally be preferred\
+ to XOR+branch sequences; the former are shorter, and using T_REG  \
+ reduces the register pressure on the main MIPS16 registers.   \
+ This does not seem to adversely affect non-MIPS16 code.   \
+   \
+ Normally we'd keep register pairs together, but in this case, \
+ it's better not to.  $25 is not a MIPS16 register, and in \
+ abicalls code, we'd prefer to leave it free for its ABI use.  */  \
+  24, 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,   \
+  25, 1,  31,  \
   /* The global pointer.  This is call-clobbered for o32 and o64   \
  abicalls, call-saved for n32 and n64 abicalls, and a program  \
  invariant otherwise.  Putting it between the call-clobbered   \
@@ -1964,13 +1973,6 @@ #define REG_ALLOC_ORDER  
\
   182,183,184,185,186,187  \
 }
 
-/* ADJUST_REG_ALLOC_ORDER is a macro which permits reg_alloc_order
-   to be rearranged based on a particular function.  On the mips16, we
-   want to allocate $24 (T_REG) before other registers for
-   instructions for which it is possible.  */
-
-#define ADJUST_REG_ALLOC_ORDER mi

svn returning Access Denied

2013-02-27 Thread Joseph F Shobe
I've been doing some research and using your SVN repository.  I have limited 
myself to just performing 'svn log' and 'svn ls' requests.
 
However, as of late, I am no longer able to to perform this function from a 
server located at Wichita State University with an IP address of 156.26.10.10 
(hostname is penang.cs.wichita.edu).  Has this IP address been blocked?  If so, 
I was not aware of any behavior that would take this course of action so is it 
possible to regain access?
 
Thanks,
Joe Shobe
Grad Student - Computer Science


Re: MIPS & register allocation question

2013-02-27 Thread Steve Ellcey
On Wed, 2013-02-27 at 22:28 +, Richard Sandiford wrote:

> FWIW, after seeing that, I tried the patch below.  Disabling
> ADJUST_REG_ALLOC_ORDER seemed to be a very mixed bag sizewise though --
> certainly not the consistent win that I hoped -- and I wasn't set up to
> do proper speed testing.  In the end I'm afraid I just let it drop.
> 
> Thanks,
> Richard

I'll try your patch on some of my benchmarks and see what happens.
One interesting thing I have noticed (sizewise) is that not using t0-t7
at all in MIPS16 code resulted in a code size reduction of around 1%.

Steve Ellcey




Re: svn returning Access Denied

2013-02-27 Thread Ian Lance Taylor
On Wed, Feb 27, 2013 at 3:35 PM, Joseph F Shobe  wrote:
> I've been doing some research and using your SVN repository.  I have limited 
> myself to just performing 'svn log' and 'svn ls' requests.
>
> However, as of late, I am no longer able to to perform this function from a 
> server located at Wichita State University with an IP address of 156.26.10.10 
> (hostname is penang.cs.wichita.edu).  Has this IP address been blocked?  If 
> so, I was not aware of any behavior that would take this course of action so 
> is it possible to regain access?

Please do not send e-mail to both gcc-h...@gcc.gnu.org and
gcc@gcc.gnu.org.  Pick one or the other.  Thanks.

As far as I can tell your IP address has not been blocked at
gcc.gnu.org.  However, it is possible that I missed something.  I've
CC'ed overseers for more information.

In general gcc.gnu.org is used by hundreds of developers and the
machine is often overloaded.  If you hit it with a lot of connections,
you are likely to be blocked.  Don't do that.  E.g., wait at least one
minute between connections.  Thanks.

Ian