Re: Implementing OpenACC's Fortran module

2014-09-19 Thread Thomas Schwinge
Hi!

On Wed, 20 Aug 2014 00:57:53 +0200, I wrote:
> On Wed, 20 Aug 2014 00:05:22 +0200, Tobias Burnus  wrote:
> > James Norris wrote:
> > > I think the files are ready for upstream submitting unless you can 
> > > think of other things
> > > that should done. Yes? No?
> > 
> > What do you mean by upstream? I assume gomp-4_0-branch and not yet GCC-5 
> > trunk.
> > 
> > I think the patch is fine for the gomp-4_0-branch.
> 
> Good, thanks.

(Submission for trunk inclusion to follow "soon".)


> > If you want to go beyond dumping the file there, you should also edit 
> > the Makefile to install the .mod and .h file, and link the .o file.

Regarding linking the object file produced by Fortran openacc.f90 into
libgomp: (with the version that Jim already has internally checked in) I
find that libgomp then has undefined references to
_gfortran_internal_unpack and _gfortran_internal_pack.  How to solve
this?  Link libgomp against libgfortran?  (Not a suitable solution in my
opinion: every non-Fortran libgomp user doesn't want Fortran stuff linked
in.)  Link the object file into libgfortran instead of libgomp?  (Will
have undefined references to a lot of libgomp symbols, and don't want to
unconditionally link libgfortran against libgomp.)  Include weak
definitions for these two symbols in libgomp?  (Probably fragile?)  Avoid
need for these two symbols?  (Might not be possible, might be fragile?)
Is there a Fortran compilation mode so that instead of shipping this
object code in libgomp, it will be built "on the fly" from the
openacc.f90, and then included in a user's executable?  (Would not work
if a user uses the openacc_lib.h header file instead of the openacc.f90
module?)  Or, is it an option to build the object file form openacc.f90,
but not link it into libgomp, but instead install the non-PIC openacc.o
and PIC .libs/openacc.o into GCC's installation tree, and then have the
driver link in these files additionally to libgomp only if compiling for
Fortran?  Anything else?


Grüße,
 Thomas


pgpRgwsNITTRH.pgp
Description: PGP signature


gcc 4.7.4 lto build failure

2014-09-19 Thread Rogelio Serrano
/home/rogelio/gcc-build/./prev-gcc/g++
-B/home/rogelio/gcc-build/./prev-gcc/ -B/x86_64-unknown-linux-gnu/bin/
-nostdinc++ 
-B/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
-B/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
-I/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu
-I/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include
-I/home/rogelio/gcc-4.7.4/libstdc++-v3/libsupc++
-L/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
-L/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
  -g -O2 -flto=jobserver -frandom-seed=1 -fprofile-use -DIN_GCC
-fno-exceptions -fno-rtti -W -Wall -Wno-narrowing -Wwrite-strings
-Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long
-Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H
-static-libstdc++ -static-libgcc  -o cc1 c-lang.o c-family/stub-objc.o
attribs.o c-errors.o c-decl.o c-typeck.o c-convert.o c-aux-info.o
c-objc-common.o c-parser.o tree-mudflap.o c-family/c-common.o
c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o
c-family/c-gimplify.o c-family/c-lex.o c-family/c-omp.o
c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o
c-family/c-pragma.o c-family/c-pretty-print.o c-family/c-semantics.o
c-family/c-ada-spec.o i386-c.o default-c.o \
  cc1-checksum.o main.o  libbackend.a libcommon-target.a libcommon.a
../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a
../libcpp/libcpp.a   ../libiberty/libiberty.a
../libdecnumber/libdecnumber.a-lmpc -lmpfr -lgmp -rdynamic -ldl
-lz
c-family/c-format.o (symbol from plugin): warning: memset used with
constant zero length parameter; this could be due to transposed
parameters
collect2: error: ld returned 1 exit status


Any pointers how to debug this?

I configured with:

../gcc-4.7.4/configure --prefix= --libexecdir=/lib --enable-shared
--enable-threads=posix --enable-__cxa_atexit --enable-clocale
--enable-languages=c,lto --disable-multilib --with-system-zlib
--enable-lto --with-build-config=bootstrap-lto

then did a profiledbootstrap make

Thanks in advance


Re: gcc 4.7.4 lto build failure

2014-09-19 Thread Markus Trippelsdorf
On 2014.09.19 at 13:15 +0100, Rogelio Serrano wrote:
> /home/rogelio/gcc-build/./prev-gcc/g++
> -B/home/rogelio/gcc-build/./prev-gcc/ -B/x86_64-unknown-linux-gnu/bin/
> -nostdinc++ 
> -B/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
> -B/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
> -I/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu
> -I/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include
> -I/home/rogelio/gcc-4.7.4/libstdc++-v3/libsupc++
> -L/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
> -L/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
>   -g -O2 -flto=jobserver -frandom-seed=1 -fprofile-use -DIN_GCC
> -fno-exceptions -fno-rtti -W -Wall -Wno-narrowing -Wwrite-strings
> -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long
> -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H
> -static-libstdc++ -static-libgcc  -o cc1 c-lang.o c-family/stub-objc.o
> attribs.o c-errors.o c-decl.o c-typeck.o c-convert.o c-aux-info.o
> c-objc-common.o c-parser.o tree-mudflap.o c-family/c-common.o
> c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o
> c-family/c-gimplify.o c-family/c-lex.o c-family/c-omp.o
> c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o
> c-family/c-pragma.o c-family/c-pretty-print.o c-family/c-semantics.o
> c-family/c-ada-spec.o i386-c.o default-c.o \
>   cc1-checksum.o main.o  libbackend.a libcommon-target.a libcommon.a
> ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a
> ../libcpp/libcpp.a   ../libiberty/libiberty.a
> ../libdecnumber/libdecnumber.a-lmpc -lmpfr -lgmp -rdynamic -ldl
> -lz
> c-family/c-format.o (symbol from plugin): warning: memset used with
> constant zero length parameter; this could be due to transposed
> parameters
> collect2: error: ld returned 1 exit status
> 
> 
> Any pointers how to debug this?
> 
> I configured with:
> 
> ../gcc-4.7.4/configure --prefix= --libexecdir=/lib --enable-shared
> --enable-threads=posix --enable-__cxa_atexit --enable-clocale
> --enable-languages=c,lto --disable-multilib --with-system-zlib
> --enable-lto --with-build-config=bootstrap-lto
> 
> then did a profiledbootstrap make

When using profiledbootstrap you should add --disable-werror to the
configuration flags.

-- 
Markus


Re: gcc 4.7.4 lto build failure

2014-09-19 Thread Markus Trippelsdorf
On 2014.09.19 at 14:55 +0200, Markus Trippelsdorf wrote:
> On 2014.09.19 at 13:15 +0100, Rogelio Serrano wrote:
> > /home/rogelio/gcc-build/./prev-gcc/g++
> > -B/home/rogelio/gcc-build/./prev-gcc/ -B/x86_64-unknown-linux-gnu/bin/
> > -nostdinc++ 
> > -B/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
> > -B/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
> > -I/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu
> > -I/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include
> > -I/home/rogelio/gcc-4.7.4/libstdc++-v3/libsupc++
> > -L/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
> > -L/home/rogelio/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
> >   -g -O2 -flto=jobserver -frandom-seed=1 -fprofile-use -DIN_GCC
> > -fno-exceptions -fno-rtti -W -Wall -Wno-narrowing -Wwrite-strings
> > -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long
> > -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H
> > -static-libstdc++ -static-libgcc  -o cc1 c-lang.o c-family/stub-objc.o
> > attribs.o c-errors.o c-decl.o c-typeck.o c-convert.o c-aux-info.o
> > c-objc-common.o c-parser.o tree-mudflap.o c-family/c-common.o
> > c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o
> > c-family/c-gimplify.o c-family/c-lex.o c-family/c-omp.o
> > c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o
> > c-family/c-pragma.o c-family/c-pretty-print.o c-family/c-semantics.o
> > c-family/c-ada-spec.o i386-c.o default-c.o \
> >   cc1-checksum.o main.o  libbackend.a libcommon-target.a libcommon.a
> > ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a
> > ../libcpp/libcpp.a   ../libiberty/libiberty.a
> > ../libdecnumber/libdecnumber.a-lmpc -lmpfr -lgmp -rdynamic -ldl
> > -lz
> > c-family/c-format.o (symbol from plugin): warning: memset used with
> > constant zero length parameter; this could be due to transposed
> > parameters
> > collect2: error: ld returned 1 exit status
> > 
> > 
> > Any pointers how to debug this?
> > 
> > I configured with:
> > 
> > ../gcc-4.7.4/configure --prefix= --libexecdir=/lib --enable-shared
> > --enable-threads=posix --enable-__cxa_atexit --enable-clocale
> > --enable-languages=c,lto --disable-multilib --with-system-zlib
> > --enable-lto --with-build-config=bootstrap-lto
> > 
> > then did a profiledbootstrap make
> 
> When using profiledbootstrap you should add --disable-werror to the
> configuration flags.

Hmm, I think this is actually a linker bug. Could you try gold? See:
https://sourceware.org/bugzilla/show_bug.cgi?id=16746

-- 
Markus


Re: Fwd: Building gcc-4.9 on OpenBSD

2014-09-19 Thread Ian Grant
On Thu, Sep 18, 2014 at 10:35 PM, Thomas Preud'homme
 wrote:
>> From: gcc-ow...@gcc.gnu.org [mailto:gcc-ow...@gcc.gnu.org] On Behalf Of
>> Ian Grant
>>
>> And can anyone tell me what are the 'non-vanilla' sources?
>
> "Vanilla source" refers to unmodified source (as distributed on gcc.gnu.org
> for the case of gcc). This is in contrast to modified source from distribution
> for instance that will usually add some patches.

Hi Thomas,

Thanks. But I asked what the non-vanilla sources were.  I know what
the vanilla sources are, because I'm using them! I thought you were
referring to some particular OpenBSD patches that would make it easier
for me to do this. I'm not aware of any: the OpenBSD people have a v.
4.2.1 GCC fork that they use, but it is 4.9 I am interested in
building on OpenBSD, to get a 'cross reference' which I hope might
tell me something about the file sizes I see,

Thanks,
Ian

> Best regards,
>
> Thomas
>
>
>
>


Dijkstra's Methodology for Secure Systems Development

2014-09-19 Thread Ian Grant
I hope this will provoke some new ideas about how to develop secure
systems software.

Thesis: The Software Development Process Itself is THE Major Security
Vulnerability in Current Computing and Communications Practices

This is because feasibility of the process depends entirely on re-use
of concrete implementations of algorithms, and so software developers
must routinely download and run code, because it is absolutely
necessary if they are to do their work. The quantity of code that they
download and run is far, far greater than they could possibly inspect,
even cursorily. Therefore software developers are constantly running
unknown code. Any such code they run as part of their work typically
has both read and write access to all the other code they work on,
because they typically use the same machine user account for all their
work. On Unix systems, this is practically mandated by the fact that
account setups are not easy to duplicate, and switching from one
account to another is not easy, because it is almost impossible to
transfer the 'desktop' setups and running applications from one user
account to another, without stopping and restarting them. Of course,
if this switching of running programs from one account to another were
made automatic, then there would be no point in switching accounts
when working on different projects.

The security situation is further aggravated by the fact that software
developers have a "trusted status" amongst the computer-using
community, on account of their specialist skills. Because of this
perception, there is a greater tendency to _actually trust_ the words
and deeds of software developers. Thus the general public are on the
whole _far less_ likely to question the actions, intentional or
unintentional, of software developers. This tendency is inversely
proportional to the perceived status of the software developer, which
is in turn proportional to the extent to which the results of their
work are distributed. So this is contrary (doubly so) to the healthier
purely rational attitude, which would be to treat the actions of _all_
software developers with the utmost suspicion, and the better known
they are, the more so! Since the products of software developers are
frequently duplicated _en masse_ and then widely distributed, the
developers own vulnerability is yet further exaggerated when it
extends transitively to the consumers of their software.

Problem:

Clearly then, the fewer software developers there are, the better, and
also, the the less those few developers do, the better. But many
people seem to _enjoy_ developing software. Should they be deprived of
that right?

The first question is whether it is really software development itself
that they find enjoyable, and not just some particular aspects of it
which are not so much evident in any other activity? The fact that
software developers often have other interests in common indicates
that this is probably not so.

The second question is related to the first. We must ask _why_ they
enjoy software development. If software development were practised
differently, would they still enjoy it? For example, if software
developers had to pay constant attention to issues of security, in
order to ameliorate the vulnerability we have identified, would they
find it equally enjoyable? Every indication is that most would
not. Software projects which have high-security criteria are not as
popular with developers as others which are typically more relaxed,
and where developers perceive they have far greater freedom, and
therefore many more opportunities to be creative. This accords with
our tentative answer to the first question, because the interests that
software developers have most in common seem to do with creative use
of imagination in areas where people can exercise intelligence.

So if we could only find a way to re-employ all the people who enjoy
"coding," in an area where they have far more freedom and opportunity
to express creative intelligence, then everyone will be better off,
except those people who rely on the products of software developers,
because they need software in order to be able to express _their_
creative intelligence! Therefore we need at the same time to find a
way to produce software without using human "coders".

Solution:

It is widely held that "human coders" are absolutely necessary,
because machines simply aren't intelligent enough to write
programs. This is probably true: machines cannot be programmed to be
creative, because creativity is, almost by definition, NOT
mechanical. But this is an error, and that it is so is clear as soon
as one recalls that the difficulty we identified, that people have
with producing _secure_ software, is that there are _fewer_
opportunities to creatively express intelligence: production of secure
software requires a formal discipline, and the results must be in some
sense more reproducible and predictable than those of imaginative and
creative expression of int

Global Value Numbering on SSA representation based on Redundancy Class

2014-09-19 Thread Ajit Kumar Agarwal
Hello All:

Please find the different Global Value numbering techniques on SSA 
representation  and proposing in GCC Global Value Numbering on SSA 
representation based on Redundancy Class. Can this be proposed.

SSA representation with control graph can be formulated with Global Value 
Numbering Algorithm. The GVN Algorithm assigns the value numbers for the 
expression based on hashing, value partitioning, SCC on SSA Graph and 
Dominator. Value partitioning is based on congruent classes and the Dominator 
is based on traversing the dominator tree in reverse post order and assign the 
values to the expression. The SCC based on SSA graph is based on traversing the 
SSA graph in reverse post order and assign the value numbers based on 
optimistic and valid table.

Different optimization based on GVN are useful like redundant expression 
elimination, redundant load and stores , Common Sub expression elimination, 
reassociation and value redundancy.

Global value numbering is proposed on redundancy class assign to expression 
based on renaming scheme on SSA representation. The variable renaming scheme is 
extended to expressions in the SSA representation. The redundancy class along 
with the SSA graph and the SCC representation of the SSA Graph is proposed in 
this paper. The redundancy class concept is taken from the Fred Chow paper on 
PRE on SSA. Based on the redundancy class new set of nodes like phi are 
inserted which takes the operands as redundancy class and this set of phi nodes 
are used along with redundancy class number are used using the optimistic table 
and the valid table as suggested by Simpson on value numbering on SCC based SSA 
Graphs.

This will help to perform the optimization as mentioned above in the SSA 
representation.

 Value based partitioning:

Value based partitioning assigns the values based on partitoning the congruent 
classes. Two expressions are congruent if they have same opcode and each 
operand has to be congruent. This is the recursive based definition. Based on 
the congruency initial partition is created which keep on growing with 
different iterations till the partitions became stable.

For the expressions given below:

A= x - y

B = y - x

C = A + B

For the expressions above the initial partition created with {x}, {y}, { A, B, 
C}. Then the algorithm will work as follows. The worklist will be the set of 
the congruence class. For each class like {x} is selected. For x the derivation 
is A and the position of A is subset of the class {A,B,C} then the new 
partition will be created{A}. Similarly the {B} and {C} partition are created 
and added to the worklist and the above algorithm continues till the partitions 
become stable. So the final partitions will be {x},{y},{A},{B},{C}.

SCC based value numbering on SSA Graph

The SCC(strongly connected component) is found on the SSA graph with cycle. The 
Set of nodes in each SCC will be a single node in the cycle. For such strongly 
connected component mapped to single nodes, each node will be traversed and the 
value numbers are assigned.

For following SSA representation of the control flow graph 

i0 = 1

j0 = 1

while(..)

{

i1 = phi(i0, i2)

j1 = phi(j0,j2)

i2 = i1 +1

j2 = j1 +1

}
For the above example the SSA graph will be formed with Strongly connected 
component with the cycle and the each node of the SCC will be traversed.

Traversing the SSA graph in reverse post order for variable i the initial value 
is 1 which will be added to optimistic table so the lattice initial value is 1. 
At the point of i1 = phi(i0,i2) 1 will be added to optimistic table and assign 
the value of i1. At the first iteration i2 will be 2 as the initial value of i1 
is propagated. In the second iteration the i1 = phi(i0,i2) will be added to the 
optimistic table and assign the value i1.

Traversing the SSA graph in reverse post order for variable j the initial value 
is 1 and j1 will be 1 at the first iteration. Since the value of i1 is assigned 
1 and j is hashed to same value j1 will be equal to i1. At the first iteration 
j2 will be 2 and j2 will be i2 as same value is hashed. In the second iteration 
the j1 = phi(j0,j2) will become i1 = phi(i0,i2) and this entry is already 
mapped to optimistic table. This leads to i is congruent to j . so the same 
value is assigned to i and j and the optimization will remove the jth entry and 
related phi node for jth entry.

 Global Value Numbering based on redundancy class

The redundancy class is formed as given in PRE on SSA by Fred Chow using SSA 
variable renaming. The SSA variables used to form the expressions is assigned 
the redundancy class similar to renaming scheme of SSA variables. 

For the following example:

i0 = 1

j0 = 1

while(..)

{

i1 = phi(i0, i2)

j1 = phi(j0,j2)

i2 = i1 +1

j2 = j1 +1

}

The above SSA program is represented with redundancy class and the new phi node 
based on the redundancy class.
The above SSA program is modified as follows

i0 = 1

j0 = 1

while(..)

{

Re: gcc 4.7.4 lto build failure

2014-09-19 Thread Rogelio Serrano
On Fri, Sep 19, 2014 at 2:03 PM, Markus Trippelsdorf
 wrote:

>>
>> When using profiledbootstrap you should add --disable-werror to the
>> configuration flags.
>
> Hmm, I think this is actually a linker bug. Could you try gold? See:
> https://sourceware.org/bugzilla/show_bug.cgi?id=16746
>
> --
> Markus

Hi

Its the ld bug. I backported the fix to my binutils (2.21.1)and it
seems fine. Im rebuilding my system. Lets see how it goes.

Thanks Markus!


Re: [RFC] Add asm constraint modifier to mark strict memory accesses

2014-09-19 Thread Dmitry Vyukov
On Thu, Sep 18, 2014 at 10:42 PM, Yury Gribov  wrote:
> On 09/18/2014 09:33 PM, Dmitry Vyukov wrote:
>>
>> What is the number of cases it will fix for kasan?
>
>
> Re-added kernel people again.
>
> AFAIR silly instrumentation that assumed all memory accesses in inline asm
> are must-accesses (instead of may-accesses) resulted in only one false
> positive. We haven't performed an extensive testing though.
>
>> It won't fix the memchr function because the size is indeed not known
>> statically. So it's a bad example.
>
>
> Sure, we will _not_ be able to instrument memchr. But being able to identify
> "safe" inline asms would allow us to instrument those (and my gut feeling is
> that they are a vast majority).
>
>> My impression was that kernel has relatively small amount of assembly,
>
>
> Well,
> $ grep -r '"[=+]\?[moVv<>]" *(' ~/src/linux-stable/ | wc -l
> 1133
>
> And also
> $ grep -r '"[=+]\?[moVv<>]" *(' ~/src/ffmpeg-2.2.2/ | wc -l
> 211
>
>> And the rest is just not interesting enough.
>
> Now that may be the case. But how do we know without trying?

Well, we can look at some instances at least before committing new code to gcc.

Here are results of your grep with removed "prefetch" and removed
archs except x86:

  2 ./arch/x86/boot/bitops.h:
 12 ./arch/x86/boot/boot.h:
  1 ./arch/x86/boot/compressed/eboot.c:
  1 ./arch/x86/boot/cpuflags.c:
  3 ./arch/x86/boot/pm.c:
  2 ./arch/x86/include/asm/apic.h:
  8 ./arch/x86/include/asm/atomic.h:
  8 ./arch/x86/include/asm/atomic64_64.h:
  1 ./arch/x86/include/asm/bitops.h:
  2 ./arch/x86/include/asm/bitops.h:#define
 13 ./arch/x86/include/asm/cmpxchg.h:
  3 ./arch/x86/include/asm/cmpxchg_32.h:
  4 ./arch/x86/include/asm/desc.h:
  3 ./arch/x86/include/asm/desc.h:#define
  1 ./arch/x86/include/asm/edac.h:
 20 ./arch/x86/include/asm/fpu-internal.h:
  2 ./arch/x86/include/asm/futex.h:
  1 ./arch/x86/include/asm/io.h:"m"
  1 ./arch/x86/include/asm/io.h::"m"
 26 ./arch/x86/include/asm/kexec.h:
  9 ./arch/x86/include/asm/linkage.h:
  5 ./arch/x86/include/asm/local.h:
  2 ./arch/x86/include/asm/mutex_64.h:
 38 ./arch/x86/include/asm/percpu.h:
  8 ./arch/x86/include/asm/percpu.h:#define
  1 ./arch/x86/include/asm/perf_event.h:
  2 ./arch/x86/include/asm/rmwcc.h:
  8 ./arch/x86/include/asm/rwsem.h:
  3 ./arch/x86/include/asm/signal.h:
 11 ./arch/x86/include/asm/special_insns.h:
  2 ./arch/x86/include/asm/spinlock.h:
  7 ./arch/x86/include/asm/switch_to.h:
  6 ./arch/x86/include/asm/sync_bitops.h:
  8 ./arch/x86/include/asm/uaccess.h:
  1 ./arch/x86/include/asm/word-at-a-time.h:
 18 ./arch/x86/include/asm/xor_avx.h:
  3 ./arch/x86/include/asm/xsave.h:
  2 ./arch/x86/kernel/cpu/bugs.c:
  2 ./arch/x86/kernel/i387.c:
  2 ./arch/x86/kernel/machine_kexec_64.c:
  1 ./arch/x86/kernel/reboot.c:
  1 ./arch/x86/kernel/vm86_32.c:
 50 ./arch/x86/kvm/emulate.c:
  3 ./arch/x86/kvm/vmx.c:
  1 ./arch/x86/lib/csum-partial_64.c:
  6 ./arch/x86/math-emu/fpu_trig.c:
  1 ./arch/x86/mm/init_32.c:
  2 ./arch/x86/pci/pcbios.c:
  5 ./arch/x86/power/cpu.c:
  1 ./drivers/char/hw_random/via-rng.c:
  8 ./drivers/char/mwave/smapi.c:
  2 ./drivers/hv/hv.c:
  1 ./drivers/input/misc/wistron_btns.c:
  1 ./drivers/lguest/x86/core.c:
  1 ./drivers/pci/hotplug/cpqphp_nvram.c:
  2 ./drivers/s390/block/dasd_diag.c:
  8 ./drivers/s390/cio/ioasm.h:
  2 ./drivers/s390/crypto/ap_bus.c:
  2 ./drivers/scsi/ultrastor.c:
  1 ./drivers/video/fbdev/platinumfb.c:
 28 ./lib/raid6/avx2.c:
 14 ./lib/raid6/mmx.c:
 47 ./lib/raid6/recov_avx2.c:
 49 ./lib/raid6/recov_ssse3.c:
 15 ./lib/raid6/sse1.c:
 28 ./lib/raid6/sse2.c:
  1 ./lib/sha1.c:
  2 ./net/iucv/iucv.c:

It seems that it is mostly synchronization primitives and raid6
driver. Boot and s390 drivers are probably not very interesting.

Synchronization primitives are definitely interesting for asan
(because of racy use-after-free's). The rest looks very mildly
interesting.

I do not see a very strong need for doing this for asan. There can be
other reasons, of course.


Re: Fwd: Building gcc-4.9 on OpenBSD

2014-09-19 Thread Jonathan Wakely
On 19 September 2014 16:21, Ian Grant wrote:
> Thanks. But I asked what the non-vanilla sources were.  I know what
> the vanilla sources are, because I'm using them!

The non-vanilla sources are everything else. That should be pretty obvious.

Are you just intentionally trying to waste everyone's time?


Re: Fwd: Building gcc-4.9 on OpenBSD

2014-09-19 Thread Jonathan Wakely
On 20 September 2014 00:01, Jonathan Wakely wrote:
> On 19 September 2014 16:21, Ian Grant wrote:
>> Thanks. But I asked what the non-vanilla sources were.  I know what
>> the vanilla sources are, because I'm using them!
>
> The non-vanilla sources are everything else. That should be pretty obvious.

Or as it says in the text you quoted:

"This is in contrast to modified source from distribution for instance
that will usually add some patches"

Vanilla source == unmodified source

Non-vanilla source == modified source

Any modified source. If OpenBSD modifies the source, it's non-vanilla.
If Debian modifies the source, it's non-vanilla.

Personally I don't like the terms vanilla and non-vanilla but I think
their meanings are fairly clear.


Re: Fwd: Building gcc-4.9 on OpenBSD

2014-09-19 Thread Ian Grant
None of this is useful to me. I'm trying to make a case for why people
should have confidence in GNU software. You are NOT helping me in
that, I assure you,

We need to publish some simple steps that people can take to reassure
themselves that the 64MB binaries that GCC 4.9 produces on Linux
systems are normal and nothing to worry about,

Why is that so hard? Where are the GCC experts on this list. Where are
the people that actually care about the reputation of the FSF?

Ian


On Fri, Sep 19, 2014 at 7:15 PM, Jonathan Wakely  wrote:
> On 20 September 2014 00:01, Jonathan Wakely wrote:
>> On 19 September 2014 16:21, Ian Grant wrote:
>>> Thanks. But I asked what the non-vanilla sources were.  I know what
>>> the vanilla sources are, because I'm using them!
>>
>> The non-vanilla sources are everything else. That should be pretty obvious.
>
> Or as it says in the text you quoted:
>
> "This is in contrast to modified source from distribution for instance
> that will usually add some patches"
>
> Vanilla source == unmodified source
>
> Non-vanilla source == modified source
>
> Any modified source. If OpenBSD modifies the source, it's non-vanilla.
> If Debian modifies the source, it's non-vanilla.
>
> Personally I don't like the terms vanilla and non-vanilla but I think
> their meanings are fairly clear.


Re: Fwd: Building gcc-4.9 on OpenBSD

2014-09-19 Thread Andrew Pinski
On Fri, Sep 19, 2014 at 4:52 PM, Ian Grant  wrote:
> None of this is useful to me. I'm trying to make a case for why people
> should have confidence in GNU software. You are NOT helping me in
> that, I assure you,

Again, try stripping out debugging information and look at the numbers
again.  Or better yet use size printing out all of the sections rather
than the default output which combines some section and does not show
the debugging information,

>From a different email:
> > BTW, if "size" is reporting much smaller size than the executable
> > file itself and that motivates this concern, most of the difference
> > is likely to be debug info, which is bigger since gcc switched to
> > C++.  Might want to try "strip".

> Great. As I said, the exercise we are here engaged in is to convince
> as many people as possible that GCC does NOT suffer from this problem
> on any OS, either OS, Windows, OpenBSD, FreeBSD, Solaris, or Linux on
> any arch., including IBM System z.

Then don't use size with the default options but rather with the sysv
style output (-A) and look at all of the sections.


>
> We need to publish some simple steps that people can take to reassure
> themselves that the 64MB binaries that GCC 4.9 produces on Linux
> systems are normal and nothing to worry about,

Debugging information is increasing a lot.  Writing GCC in C++ has
caused this issue because there is no removing of debugging
information yet in dwarf2/3/4, I think there is plans for it but I
can't remember if it made it into dwarf5 or not.

Thanks,
Andrew Pinski

>
> Why is that so hard? Where are the GCC experts on this list. Where are
> the people that actually care about the reputation of the FSF?
>
> Ian
>
>
> On Fri, Sep 19, 2014 at 7:15 PM, Jonathan Wakely  
> wrote:
>> On 20 September 2014 00:01, Jonathan Wakely wrote:
>>> On 19 September 2014 16:21, Ian Grant wrote:
 Thanks. But I asked what the non-vanilla sources were.  I know what
 the vanilla sources are, because I'm using them!
>>>
>>> The non-vanilla sources are everything else. That should be pretty obvious.
>>
>> Or as it says in the text you quoted:
>>
>> "This is in contrast to modified source from distribution for instance
>> that will usually add some patches"
>>
>> Vanilla source == unmodified source
>>
>> Non-vanilla source == modified source
>>
>> Any modified source. If OpenBSD modifies the source, it's non-vanilla.
>> If Debian modifies the source, it's non-vanilla.
>>
>> Personally I don't like the terms vanilla and non-vanilla but I think
>> their meanings are fairly clear.


Re: Fwd: Building gcc-4.9 on OpenBSD

2014-09-19 Thread Ian Grant
Thanks Andrew!

You get first prize for most informative intelligent answer so far!
Careful, you might get second prize too :-)

The problem is that we need to find a way to tell people _what_ is in
that "dwarf" code. Open BSD's gcc ignores it, prints a warning, and
goes about its business. That's probably why OpenBSD gcc 4.9 binaries
are 17MB against the 64MB compiled by gcc 4.9. But that is a really
fucking big dwarf they're stuffing in threre. What is the data,
really? We can't just say "it's dwarf" because that doesn't really
mean a whole lot, does it?

Thanks again for your helpful response. This is progress.

Ian




On Fri, Sep 19, 2014 at 8:04 PM, Andrew Pinski  wrote:
> On Fri, Sep 19, 2014 at 4:52 PM, Ian Grant  
> wrote:
>> None of this is useful to me. I'm trying to make a case for why people
>> should have confidence in GNU software. You are NOT helping me in
>> that, I assure you,
>
> Again, try stripping out debugging information and look at the numbers
> again.  Or better yet use size printing out all of the sections rather
> than the default output which combines some section and does not show
> the debugging information,
>
> From a different email:
>> > BTW, if "size" is reporting much smaller size than the executable
>> > file itself and that motivates this concern, most of the difference
>> > is likely to be debug info, which is bigger since gcc switched to
>> > C++.  Might want to try "strip".
>
>> Great. As I said, the exercise we are here engaged in is to convince
>> as many people as possible that GCC does NOT suffer from this problem
>> on any OS, either OS, Windows, OpenBSD, FreeBSD, Solaris, or Linux on
>> any arch., including IBM System z.
>
> Then don't use size with the default options but rather with the sysv
> style output (-A) and look at all of the sections.
>
>
>>
>> We need to publish some simple steps that people can take to reassure
>> themselves that the 64MB binaries that GCC 4.9 produces on Linux
>> systems are normal and nothing to worry about,
>
> Debugging information is increasing a lot.  Writing GCC in C++ has
> caused this issue because there is no removing of debugging
> information yet in dwarf2/3/4, I think there is plans for it but I
> can't remember if it made it into dwarf5 or not.
>
> Thanks,
> Andrew Pinski
>
>>
>> Why is that so hard? Where are the GCC experts on this list. Where are
>> the people that actually care about the reputation of the FSF?
>>
>> Ian
>>
>>
>> On Fri, Sep 19, 2014 at 7:15 PM, Jonathan Wakely  
>> wrote:
>>> On 20 September 2014 00:01, Jonathan Wakely wrote:
 On 19 September 2014 16:21, Ian Grant wrote:
> Thanks. But I asked what the non-vanilla sources were.  I know what
> the vanilla sources are, because I'm using them!

 The non-vanilla sources are everything else. That should be pretty obvious.
>>>
>>> Or as it says in the text you quoted:
>>>
>>> "This is in contrast to modified source from distribution for instance
>>> that will usually add some patches"
>>>
>>> Vanilla source == unmodified source
>>>
>>> Non-vanilla source == modified source
>>>
>>> Any modified source. If OpenBSD modifies the source, it's non-vanilla.
>>> If Debian modifies the source, it's non-vanilla.
>>>
>>> Personally I don't like the terms vanilla and non-vanilla but I think
>>> their meanings are fairly clear.