[Bug ld/19480] [2.26.51 regression] ld creates wrong output for libstdc++6.dll for mingw32 (32-bit)

2016-01-17 Thread daniel.f.starke at freenet dot de
https://sourceware.org/bugzilla/show_bug.cgi?id=19480

Daniel Starke  changed:

   What|Removed |Added

 Target||x86_64-w64-mingw32
   Host||x86_64-linux-gnu

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug ld/19480] New: [2.26.51 regression] ld creates wrong output for libstdc++6.dll for mingw32 (32-bit)

2016-01-17 Thread daniel.f.starke at freenet dot de
https://sourceware.org/bugzilla/show_bug.cgi?id=19480

Bug ID: 19480
   Summary: [2.26.51 regression] ld creates wrong output for
libstdc++6.dll for mingw32 (32-bit)
   Product: binutils
   Version: 2.26
Status: NEW
  Severity: normal
  Priority: P2
 Component: ld
  Assignee: unassigned at sourceware dot org
  Reporter: daniel.f.starke at freenet dot de
  Target Milestone: ---

Compiling a Linux -> mingw32-w64 cross-compiler works fine with binutils 2.25.1
but results in a libstdc++6.dll which is less than half the size without debug
symbols and crashes on DLL entry point. This problem only occurs for 32-bit
target, not for 64-bit target.

Compiled GCC 5.3.0 as
../../src/gcc-5.3.0/configure --enable-languages=c,c++ --enable-seh-exceptions
--enable-threads=posix --disable-nls --enable-shared=libstdc++ --enable-static
--enable-fully-dynamic-string --enable-lto --enable-plugin --enable-libgomp
--with-dwarf2 --disable-win32-registry --enable-version-specific-runtime-libs
--prefix=/mingw --with-sysroot=/mingw --target=x86_64-w64-mingw32
--enable-targets=all --enable-checking=release
--with-gmp=/new-gcc/lib/gmp-5.0.5 --with-mpfr=/new-gcc/lib/mpfr-2.4.2
--with-mpc=/new-gcc/lib/mpc-0.9 --with-isl=/new-gcc/lib/isl-0.12.2
--with-cloog=/new-gcc/lib/cloog-0.18.3 --with-host-libstdcxx='-lstdc++
-lsupc++' --disable-cloog-version-check --enable-cloog-backend=isl
on Linux (Xubuntu 14.04.3 LTS).
All system libraries where compiled with
-O3 -mtune=core2 -march=core2 -mstackrealign -fomit-frame-pointer
-Wno-maybe-uninitialized -flto -flto-partition=none -fno-builtin-stpcpy

Binutils was in both cases (version 2.25.1 and 2.26.51) configured as
configure --enable-lto --enable-plugin --disable-nls
--target=x86_64-w64-mingw32
--enable-targets=x86_64-w64-mingw32,i686-w64-mingw32 --with-sysroot=$PREFIX
--prefix=$PREFIX "--with-gmp=/new-gcc/lib/gmp-5.0.5"
"--with-mpfr=/new-gcc/lib/${MPFR}" "--with-mpc=/new-gcc/lib/mpc-0.9"
"--with-isl=/new-gcc/lib/isl-0.12.2" "--with-cloog=/new-gcc/lib/cloog-0.18.3"
"--with-host-libstdcxx=-lstdc++ -lsupc++" --disable-cloog-version-check
--enable-cloog-backend=isl

I first reported this as GCC bug until I found out that it was a binutils
regression by using an older version of binutils.

See related GCC bug report https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69284

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug gas/19481] New: Binutils build failure when flex is missing

2016-01-17 Thread john.levin at tutanota dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=19481

Bug ID: 19481
   Summary: Binutils build failure when flex is missing
   Product: binutils
   Version: 2.26
Status: NEW
  Severity: normal
  Priority: P2
 Component: gas
  Assignee: unassigned at sourceware dot org
  Reporter: john.levin at tutanota dot com
  Target Milestone: ---

The binutils 2.26 branch fails to build unless flex (or lex) is installed on
the build system. make fails with the following error when configuring gas:

checking lex output file root... configure: error: cannot find output from
/test/binutils-gdb/missing flex; giving up

Steps to reproduce:
1) Get a copy of the source with correct timestamps on generated files.
   I did not find any tar snapshot or script (like gcc's contrib/gcc_update) so
I did a build with all necessary maintainer tools (bison, flex, ...) installed
to fix the timestamps.
2) Remove flex and lex from the build system so that configure won't find them
3) Configure and build gas in a new/empty build directory (so that build files
from step 1 won't affect the result):
   ../binutils-gdb/configure --prefix=/opt/binutils-test
   make all-gas

Actual results: make fails with the following error while configuring gas:
checking lex output file root... configure: error: cannot find output from
/test/binutils-gdb/missing flex; giving up

Expected results: make should not check for lex output file root when flex/lex
is missing, or at least ignore failure.

I tested on binutils-2_26-branch (commit
412d26bde8585eca3ec6b8bed70197205288cbdf), but the problem most likely exists
on master too.

The problem is caused by the new "lightweight" missing script introduced by
commit e30465112ed4c6320dd19107302057a5f7712cf2 (2014-11-16; Update from
upstream Automake).

Here is the sequence that leads to the failure:
1) The top-level configure finds neither flex nor lex:
checking for flex... no
checking for lex... no
2) The top-level configure sets LEX in the top-level Makefile to the missing
script:
LEX = /test/binutils-gdb/missing flex
3) When gas/configure is run by the top-level Makefile, LEX has the value set
above
4) gas/configure uses AM_PROG_LEX to detect flex/lex
5) AM_PROG_LEX uses AC_PROG_LEX
6) AC_PROG_LEX sees that LEX is set and assumes it is a valid flex/lex provided
by the user:
checking for flex... /test/binutils-gdb/missing flex
7) AC_PROG_LEX runs the program specified by LEX to detect the name of the
output file
8) The new "lightweight" missing script does not produce any output files so
the detection fails:
checking lex output file root... configure: error: cannot find output from
/test/binutils-gdb/missing flex; giving up

Please note that this also affects binutils/configure.ac and ld/configure.ac
because they too use AM_PROG_LEX.

The old missing script used in binutils 2.25.1 and earlier produced faked
output for the missing programs, which is why it worked before. Here is what
gas/configure outputs for 2.25.1:
checking for flex... /test/binutils-2.25.1/missing flex
checking lex output file root... lex.yy

I can create a patch, but I have no idea what is the most appropriate way of
fixing this. I would like to hear your opinions. Here are some suggestions I
came up with (not prioritized), other ideas are of course welcome too:
- Document flex/lex as a pre-requisite for building binutils, even for
"non-maintainers"
- Change top-level configure to not set LEX if flex/lex is not found
  (might upset modules that use LEX without checking)
- In top-level Makefile, add "LEX=" as argument when calling configure of
modules that use AM_PROG_LEX. Should be done only when flex/lex is actually
missing, otherwise an in-tree flex will probably never be used
  (this is inspired by a similar fix in gcc, see below; I tested it by manually
changing the generated top-level Makefile and it appears to work)
- Change affected configure.ac to unset LEX if it is set to the missing script
(not sure how to detect that reliably, though)
- Change AM_PROG_LEX or AC_PROG_LEX to ignore LEX if it is set to a missing
script (this would be a change in autoconf/automake instead of in binutils, I
suppose)

gcc apparently had the same issue with in-tree builds of gmp after updating to
the "lightweight" missing script, and it was solved (in r218025) by explicitly
passing LEX="touch lex.yy.c" to gmp/configure to override the missing script.
That solution of course means that an in-tree gmp will not use flex even if it
is available, but I guess not many people edit ".l" files in gmp before
building gcc.
For the same reason, building a recent gcc (like 5.3.0) with in-tree binutils
2.25.1 or earlier fails because it will use the "lightweight" missing script
from gcc instead of the older one in binutils.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binuti

[Bug gold/18865] ICF --keep-unique doesn't work correctly

2016-01-17 Thread ngg at tresorit dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=18865

NGG  changed:

   What|Removed |Added

 CC||ngg at tresorit dot com

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug gold/17704] icf doesn't respect section alignment

2016-01-17 Thread ngg at tresorit dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=17704

NGG  changed:

   What|Removed |Added

 CC||ngg at tresorit dot com

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug gold/17704] icf doesn't respect section alignment

2016-01-17 Thread ngg at tresorit dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=17704

--- Comment #2 from NGG  ---
Created attachment 8906
  --> https://sourceware.org/bugzilla/attachment.cgi?id=8906&action=edit
Patch for icf section alignment bug

I think this patch solves this bug, the provided examples work and gn works too
in the chromium repo which had the same issue.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug gas/19481] Binutils build failure when flex is missing

2016-01-17 Thread amodra at gmail dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=19481

Alan Modra  changed:

   What|Removed |Added

 CC||amodra at gmail dot com

--- Comment #1 from Alan Modra  ---
Created attachment 8909
  --> https://sourceware.org/bugzilla/attachment.cgi?id=8909&action=edit
proposed fix

I think we need to override AC_PROG_LEX, which I believe can be done without
modifying autoconf.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils