Re: [PATCH]Add aarch64 to list of targets that support gold
Hi Config-maintainers, Is this patch ok for trunk? Thanks! Jing On Thu, Sep 18, 2014 at 4:05 PM, Jing Yu jin...@google.com wrote: Hi, This patch changes top level configure to add aarch64 to list of targets that support gold. Have tested binutils with this patch on x86_64 and aarch64 platforms. OK for trunk? 2014-09-18 Jing Yu jin...@google.com * configure.ac: Add aarch64 to list of targets that support gold. * configure: Regenerate. Thanks, Jing Index: configure === --- configure (revision 215344) +++ configure (working copy) @@ -2940,7 +2940,8 @@ if test $is_elf = yes; then # Check for target supported by gold. case ${target} in -i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* | tilegx*-*-*) +i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \ +| aarch64*-*-* | tilegx*-*-*) configdirs=$configdirs gold if test x${ENABLE_GOLD} = xdefault; then default_ld=gold Index: configure.ac === --- configure.ac (revision 215344) +++ configure.ac (working copy) @@ -331,7 +331,8 @@ if test $is_elf = yes; then # Check for target supported by gold. case ${target} in -i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* | tilegx*-*-*) +i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \ +| aarch64*-*-* | tilegx*-*-*) configdirs=$configdirs gold if test x${ENABLE_GOLD} = xdefault; then default_ld=gold
[PATCH]Add aarch64 to list of targets that support gold
Hi, This patch changes top level configure to add aarch64 to list of targets that support gold. Have tested binutils with this patch on x86_64 and aarch64 platforms. OK for trunk? 2014-09-18 Jing Yu jin...@google.com * configure.ac: Add aarch64 to list of targets that support gold. * configure: Regenerate. Thanks, Jing Index: configure === --- configure (revision 215344) +++ configure (working copy) @@ -2940,7 +2940,8 @@ if test $is_elf = yes; then # Check for target supported by gold. case ${target} in -i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* | tilegx*-*-*) +i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \ +| aarch64*-*-* | tilegx*-*-*) configdirs=$configdirs gold if test x${ENABLE_GOLD} = xdefault; then default_ld=gold Index: configure.ac === --- configure.ac (revision 215344) +++ configure.ac (working copy) @@ -331,7 +331,8 @@ if test $is_elf = yes; then # Check for target supported by gold. case ${target} in -i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* | tilegx*-*-*) +i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \ +| aarch64*-*-* | tilegx*-*-*) configdirs=$configdirs gold if test x${ENABLE_GOLD} = xdefault; then default_ld=gold
[google/gcc-4_7]Add new validator file for native ppc toolchain
Add new validator manifest xfail file for native powerpc64 toolchain. Ok for google/gcc-4_7? Tested: ./validate_failures.py --manifest=powerpc64-grtev3-linux-gnu-native.xfail -- results=gcc/gcc.sum g++/g++.sum gfortran/gfortran.sum 2013-06-05jin...@google.com * powerpc64-grtev3-linux-gnu-native.xfail: New. patch.diff Description: Binary data
[google/gcc-4_8]Regenerate Makefile.in
Hi, Current Makefile.in does not match Makefile.def. Regenerate it by autogen Makefile.def. Tested the patched google/gcc-4_8 with crosstool-validate.py --testers=crosstool. OK for google/gcc-4_8? Thanks, Jing Index: Makefile.in === --- Makefile.in (revision 197495) +++ Makefile.in (working copy) @@ -31004,7 +31004,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/function_reordering_plugin \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) \ $(TARGET-function_reordering_plugin)) @endif function_reordering_plugin @@ -31032,7 +31032,8 @@ CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET) \ CXXFLAGS_FOR_TARGET=$(CXXFLAGS_FOR_TARGET) \ LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET) \ - $(EXTRA_HOST_FLAGS) \ + $(EXTRA_HOST_FLAGS) \ + $(STAGE1_FLAGS_TO_PASS) \ TFLAGS=$(STAGE1_TFLAGS) \ $(TARGET-stage1-function_reordering_plugin) @@ -31047,7 +31048,7 @@ fi; \ cd $(HOST_SUBDIR)/function_reordering_plugin \ $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean + $(STAGE1_FLAGS_TO_PASS) clean @endif function_reordering_plugin-bootstrap @@ -31088,9 +31089,7 @@ $(MAKE) stage2-start; \ fi; \ cd $(HOST_SUBDIR)/function_reordering_plugin \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean @endif function_reordering_plugin-bootstrap @@ -31131,9 +31130,7 @@ $(MAKE) stage3-start; \ fi; \ cd $(HOST_SUBDIR)/function_reordering_plugin \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean @endif function_reordering_plugin-bootstrap @@ -31174,9 +31171,7 @@ $(MAKE) stage4-start; \ fi; \ cd $(HOST_SUBDIR)/function_reordering_plugin \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean @endif function_reordering_plugin-bootstrap @@ -31217,9 +31212,7 @@ $(MAKE) stageprofile-start; \ fi; \ cd $(HOST_SUBDIR)/function_reordering_plugin \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean @endif function_reordering_plugin-bootstrap @@ -31260,9 +31253,7 @@ $(MAKE) stagefeedback-start; \ fi; \ cd $(HOST_SUBDIR)/function_reordering_plugin \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean @endif function_reordering_plugin-bootstrap
[google/gcc-4_7]Mark expected failures
Got new regression failures when using gold to run gcc regression tests. The failures are related to LIPO (b/8397853). Since LIPO won't be available for Powerpc64 target until the end of 2013Q2, mark these tests expected failure. OK for google/gcc-4_7? Tested: Extract testresults from nightly build into /tmp/testresult/43933791, run ./validate_failures.py --build_dir=/tmp/testresult/43933791 --manifest powerpc64-grtev3-linux-gnu.xfail SUCCESS: No unexpected failures. Index: contrib/testsuite-management/powerpc64-grtev3-linux-gnu.xfail === --- contrib/testsuite-management/powerpc64-grtev3-linux-gnu.xfail (revision 196617) +++ contrib/testsuite-management/powerpc64-grtev3-linux-gnu.xfail (working copy) @@ -128,10 +128,15 @@ FAIL: g++.dg/ext/cleanup-9.C -std=gnu++98 executio FAIL: g++.dg/ext/cleanup-9.C -std=gnu++11 execution test FAIL: g++.dg/warn/Wself-assign-2.C -std=gnu++11 (test for warnings, line 12) FAIL: g++.dg/tree-prof/lipo/vcall1_0.C scan-ipa-dump-times profile Indirect call - direct call 2 -FAIL: g++.dg/tree-prof/mversn15.C execution,-fprofile-generate +# b/8397853, a LIPO bug, causing compilation to fail. +FAIL: g++.dg/tree-prof/mversn15.C compilation, -fprofile-generate +UNRESOLVED: g++.dg/tree-prof/mversn15.C execution,-fprofile-generate +#FAIL: g++.dg/tree-prof/mversn15.C execution,-fprofile-generate UNRESOLVED: g++.dg/tree-prof/mversn15.C compilation, -fprofile-use UNRESOLVED: g++.dg/tree-prof/mversn15.C execution,-fprofile-use -FAIL: g++.dg/tree-prof/mversn15a.C execution,-fprofile-generate +FAIL: g++.dg/tree-prof/mversn15a.C compilation, -fprofile-generate +UNRESOLVED: g++.dg/tree-prof/mversn15a.C execution,-fprofile-generate +#FAIL: g++.dg/tree-prof/mversn15a.C execution,-fprofile-generate UNRESOLVED: g++.dg/tree-prof/mversn15a.C compilation, -fprofile-use UNRESOLVED: g++.dg/tree-prof/mversn15a.C execution,-fprofile-use
Re: [trunk][google/gcc47]Add dependence of configure-target-libmudflap on configure-target-libstdc++-v3 (issue7740043)
I made a mistake in my previous patch. I did not notice that Makefile.in was a generated file. Update the patch. 2013-03-12 Jing Yu jin...@google.com * Makefile.def (Target modules dependencies): Add new dependency. * Makefile.in: Re-generate. Index: Makefile.in === --- Makefile.in (revision 196604) +++ Makefile.in (working copy) @@ -6,6 +6,7 @@ all-target-libjava: maybe-all-target-boehm-gc all-target-libjava: maybe-all-target-libffi configure-target-libobjc: maybe-configure-target-boehm-gc all-target-libobjc: maybe-all-target-boehm-gc +configure-target-libmudflap: maybe-configure-target-libstdc++-v3 configure-target-libstdc++-v3: maybe-configure-target-libgomp configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp Index: Makefile.def === --- Makefile.def (revision 196604) +++ Makefile.def (working copy) @@ -504,6 +504,7 @@ dependencies = { module=all-target-libjava; on=all dependencies = { module=all-target-libjava; on=all-target-libffi; }; dependencies = { module=configure-target-libobjc; on=configure-target-boehm-gc; }; dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; }; +dependencies = { module=configure-target-libmudflap; on=configure-target-libstdc++-v3; }; dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; }; // parallel_list.o and parallel_settings.o depend on omp.h, which is // generated by the libgomp configure. Unfortunately, due to the use of On Mon, Mar 11, 2013 at 5:21 PM, Jing Yu jin...@google.com wrote: Don't know why the email body became attachment. Sent it again. The review link is https://codereview.appspot.com/7740043 Hi Diego, The nightly build of gcc-4.7 based ppc64 and ppc32 crosstools have failed since the build server upgraded to gPrecise one week ago. Log shows a configuration fa ilure on libmudflap. checking for suffix of object files... /lib/cpp configure: error: in `/g/nightly/build/work/gcc-4.7.x-grtev3-powerpc32-8540/rpmbuild/BUILD/.../powerpc-grtev3-linux-gnu/libmudflap': configure: error: C++ preprocessor /lib/cpp fails sanity check See `config.log' for more details. There is no /lib/cpp on gprecise server, though it should not be used here. What happened was that libmudflap configure looks for a preprocessor by trying $CXX -E and then backing off to /lib/cpp. $CXX -E is failing with unrecognized command line option ‘-funconfigured-libstdc++’, and the /lib/cpp backstop then fails also. The -funconfigured-libstdc++ is because configure can't find libstdc++/scripts/testsuite_flags. This is a so-far undiagnosed race in gcc make, masked where /lib/cpp is available. And that's absent because in this build, for whatever reason, libstdc++ loses a race with libmudflap. The theory is confirmed by: 1) if we force --job=1, build can succeed 2) If we apply the following patch to build-gcc/Makefile, build can succeed. After removing this dependency, build fails with the same error again. Is this patch ok for google/gcc-4_7? If the same issue exists on upstream trunk, how does the patch sound to trunk? Thanks, Jing 2013-03-11 Jing Yu jin...@google.com * Makefile.in: (maybe-configure-target-libmudflap): Add dependence on configure-target-libstdc++-v3. Index: Makefile.in === --- Makefile.in (revision 196604) +++ Makefile.in (working copy) @@ -31879,6 +31879,9 @@ maybe-configure-target-libmudflap: @if gcc-bootstrap configure-target-libmudflap: stage_current @endif gcc-bootstrap +@if target-libstdc++-v3 +configure-target-libmudflap: configure-target-libstdc++-v3 +@endif target-libstdc++-v3 @if target-libmudflap maybe-configure-target-libmudflap: configure-target-libmudflap configure-target-libmudflap:
[trunk][google/gcc47]Add dependence of configure-target-libmudflap on configure-target-libstdc++-v3 (issue7740043)
binWsrE0LGKO9.bin Description: Binary data
Re: [trunk][google/gcc47]Add dependence of configure-target-libmudflap on configure-target-libstdc++-v3 (issue7740043)
Don't know why the email body became attachment. Sent it again. The review link is https://codereview.appspot.com/7740043 Hi Diego, The nightly build of gcc-4.7 based ppc64 and ppc32 crosstools have failed since the build server upgraded to gPrecise one week ago. Log shows a configuration fa ilure on libmudflap. checking for suffix of object files... /lib/cpp configure: error: in `/g/nightly/build/work/gcc-4.7.x-grtev3-powerpc32-8540/rpmbuild/BUILD/.../powerpc-grtev3-linux-gnu/libmudflap': configure: error: C++ preprocessor /lib/cpp fails sanity check See `config.log' for more details. There is no /lib/cpp on gprecise server, though it should not be used here. What happened was that libmudflap configure looks for a preprocessor by trying $CXX -E and then backing off to /lib/cpp. $CXX -E is failing with unrecognized command line option ‘-funconfigured-libstdc++’, and the /lib/cpp backstop then fails also. The -funconfigured-libstdc++ is because configure can't find libstdc++/scripts/testsuite_flags. This is a so-far undiagnosed race in gcc make, masked where /lib/cpp is available. And that's absent because in this build, for whatever reason, libstdc++ loses a race with libmudflap. The theory is confirmed by: 1) if we force --job=1, build can succeed 2) If we apply the following patch to build-gcc/Makefile, build can succeed. After removing this dependency, build fails with the same error again. Is this patch ok for google/gcc-4_7? If the same issue exists on upstream trunk, how does the patch sound to trunk? Thanks, Jing 2013-03-11 Jing Yu jin...@google.com * Makefile.in: (maybe-configure-target-libmudflap): Add dependence on configure-target-libstdc++-v3. Index: Makefile.in === --- Makefile.in (revision 196604) +++ Makefile.in (working copy) @@ -31879,6 +31879,9 @@ maybe-configure-target-libmudflap: @if gcc-bootstrap configure-target-libmudflap: stage_current @endif gcc-bootstrap +@if target-libstdc++-v3 +configure-target-libmudflap: configure-target-libstdc++-v3 +@endif target-libstdc++-v3 @if target-libmudflap maybe-configure-target-libmudflap: configure-target-libmudflap configure-target-libmudflap:
mark expected failures for ppc64 (issue6932046)
Add powerpc64-grtev3-linux-gnu.xfail to mark expected failures for powerpc64 toolchain. For google/gcc_4-7 branch. Tested: ./buildit --build_type=symlinks --keep_work_dir --run_tests gcc-4.7.x-grtev3-powerpc64 2012-12-10 Jing Yu jin...@google.com * contrib/testsuite-management/powerpc64-grtev3-linux-gnu.xfail: New Index: contrib/ChangeLog.google-4_7 === --- contrib/ChangeLog.google-4_7(revision 194383) +++ contrib/ChangeLog.google-4_7(working copy) @@ -1,3 +1,8 @@ +2012-12-10 Jing Yu jin...@google.com + + * contrib/testsuite-management/powerpc64-grtev3-linux-gnu.xfail: + New. + 2012-11-05 Paul Pluzhnikov ppluzhni...@google.com * contrib/testsuite-management/powerpc-grtev3-linux-gnu.xfail: Index: contrib/testsuite-management/powerpc64-grtev3-linux-gnu.xfail === --- contrib/testsuite-management/powerpc64-grtev3-linux-gnu.xfail (revision 0) +++ contrib/testsuite-management/powerpc64-grtev3-linux-gnu.xfail (revision 0) @@ -0,0 +1,149 @@ +# Marked test failures for v16-powerpc64 toolchain built from +# v16 release branch @64346, and v16 dev branch @64533. +# *** gcc: +FAIL: gcc.c-torture/execute/20020226-1.c execution, -O0 +FAIL: gcc.c-torture/execute/20020226-1.c execution, -O1 +FAIL: gcc.c-torture/execute/20020226-1.c execution, -O2 +FAIL: gcc.c-torture/execute/20020226-1.c execution, -O3 -fomit-frame-pointer +FAIL: gcc.c-torture/execute/20020226-1.c execution, -O3 -g +FAIL: gcc.c-torture/execute/20020226-1.c execution, -Os +FAIL: gcc.c-torture/execute/20020226-1.c execution, -O2 -flto -fno-use-linker-plugin -flto-partition=none +FAIL: gcc.c-torture/execute/20020508-1.c execution, -O0 +FAIL: gcc.c-torture/execute/20020508-1.c execution, -O1 +FAIL: gcc.c-torture/execute/20020508-1.c execution, -O2 +FAIL: gcc.c-torture/execute/20020508-1.c execution, -O3 -fomit-frame-pointer +FAIL: gcc.c-torture/execute/20020508-1.c execution, -O3 -g +FAIL: gcc.c-torture/execute/20020508-1.c execution, -Os +FAIL: gcc.c-torture/execute/20020508-1.c execution, -O2 -flto -fno-use-linker-plugin -flto-partition=none +FAIL: gcc.dg/and-1.c scan-assembler-not nand +FAIL: gcc.dg/cleanup-10.c execution test +FAIL: gcc.dg/cleanup-11.c execution test +FAIL: gcc.dg/cleanup-8.c execution test +FAIL: gcc.dg/cleanup-9.c execution test +FAIL: gcc.dg/pr44194-1.c scan-rtl-dump dse1 global deletions = (2|3) +FAIL: gcc.dg/pr44194-1.c scan-rtl-dump-not final set \\(mem +FAIL: gcc.dg/pr46728-6.c scan-assembler-not pow + +# These tests succeeded in v15-powerpc64. But they failed in v16-x86 too. +FAIL: gcc.dg/thread_annot_lock-23.c (test for warnings, line 10) +FAIL: gcc.dg/thread_annot_lock-23.c (test for warnings, line 13) +FAIL: gcc.dg/thread_annot_lock-23.c (test for warnings, line 15) +FAIL: gcc.dg/thread_annot_lock-23.c (test for warnings, line 18) +FAIL: gcc.dg/thread_annot_lock-23.c (test for warnings, line 19) +FAIL: gcc.dg/thread_annot_lock-24.c (test for warnings, line 8) +FAIL: gcc.dg/thread_annot_lock-24.c (test for warnings, line 9) +FAIL: gcc.dg/thread_annot_lock-24.c (test for warnings, line 10) +FAIL: gcc.dg/thread_annot_lock-25.c (test for warnings, line 8) +FAIL: gcc.dg/thread_annot_lock-25.c (test for warnings, line 9) +FAIL: gcc.dg/thread_annot_lock-25.c (test for warnings, line 10) +FAIL: gcc.dg/thread_annot_lock-25.c (test for warnings, line 22) +FAIL: gcc.dg/thread_annot_lock-25.c (test for warnings, line 30) +FAIL: gcc.dg/thread_annot_lock-42.c (test for warnings, line 9) + +FAIL: gcc.dg/torture/pr53589.c -O3 -g (internal compiler error) +FAIL: gcc.dg/torture/pr53589.c -O3 -g (test for excess errors) +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O0 execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O0 -fpic execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O0 -fPIC execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O0 -pie -fpie execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O0 -pie -fPIE execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O1 execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O1 -fpic execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O1 -fPIC execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O1 -pie -fpie execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O1 -pie -fPIE execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O2 execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O2 -fpic execution test +flaky | FAIL: gcc.dg/torture/tls/tls-test.c -O2 -fPIC execution test +flaky | FAIL: gcc.dg
[google-4.6]Backport r183875 to fix incorrect increment/decrement of atomic pointers (issue6428056)
Backport r183875 from trunk and gcc-4.7 to fix PR51811 ([C++0x] Incorrect increment/decrement of atomic pointers). Tested: 1) --testers=crosstool. 2) unit test in Google ref b/6702865 OK for google-4_6 branch? Thanks, Jing 2012-07-19 Jing Yu jin...@google.com Backport r183875 to fix wrong atomic_Tp* add_fetch. PR libstdc++/51811, Google ref b/6702865 * include/bits/atomic_0.h (atomic_Tp*): Fix offsets. * include/bits/atomic_2.h: Likewise. * testsuite/29_atomics/atomic/operators/51811.cc: New. * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc: New. Index: include/bits/atomic_0.h === --- include/bits/atomic_0.h (revision 189589) +++ include/bits/atomic_0.h (working copy) @@ -620,7 +620,7 @@ namespace __atomic0 __return_pointer_type fetch_add(ptrdiff_t __d, memory_order __m = memory_order_seq_cst) { - void* __v = _ATOMIC_MODIFY_(this, +=, __d, __m); + void* __v = _ATOMIC_MODIFY_(this, +=, __d * sizeof(_PTp), __m); return reinterpret_cast__return_pointer_type(__v); } @@ -628,14 +628,14 @@ namespace __atomic0 fetch_add(ptrdiff_t __d, memory_order __m = memory_order_seq_cst) volatile { - void* __v = _ATOMIC_MODIFY_(this, +=, __d, __m); + void* __v = _ATOMIC_MODIFY_(this, +=, __d * sizeof(_PTp), __m); return reinterpret_cast__return_pointer_type(__v); } __return_pointer_type fetch_sub(ptrdiff_t __d, memory_order __m = memory_order_seq_cst) { - void* __v = _ATOMIC_MODIFY_(this, -=, __d, __m); + void* __v = _ATOMIC_MODIFY_(this, -=, __d * sizeof(_PTp), __m); return reinterpret_cast__return_pointer_type(__v); } @@ -643,7 +643,7 @@ namespace __atomic0 fetch_sub(ptrdiff_t __d, memory_order __m = memory_order_seq_cst) volatile { - void* __v = _ATOMIC_MODIFY_(this, -=, __d, __m); + void* __v = _ATOMIC_MODIFY_(this, -=, __d * sizeof(_PTp), __m); return reinterpret_cast__return_pointer_type(__v); } }; Index: include/bits/atomic_2.h === --- include/bits/atomic_2.h (revision 189589) +++ include/bits/atomic_2.h (working copy) @@ -644,21 +644,21 @@ namespace __atomic2 __pointer_type fetch_add(ptrdiff_t __d, memory_order __m = memory_order_seq_cst) - { return __sync_fetch_and_add(_M_p, __d); } + { return __sync_fetch_and_add(_M_p, __d * sizeof(_PTp)); } __pointer_type fetch_add(ptrdiff_t __d, memory_order __m = memory_order_seq_cst) volatile - { return __sync_fetch_and_add(_M_p, __d); } + { return __sync_fetch_and_add(_M_p, __d * sizeof(_PTp)); } __pointer_type fetch_sub(ptrdiff_t __d, memory_order __m = memory_order_seq_cst) - { return __sync_fetch_and_sub(_M_p, __d); } + { return __sync_fetch_and_sub(_M_p, __d * sizeof(_PTp)); } __pointer_type fetch_sub(ptrdiff_t __d, memory_order __m = memory_order_seq_cst) volatile - { return __sync_fetch_and_sub(_M_p, __d); } + { return __sync_fetch_and_sub(_M_p, __d * sizeof(_PTp)); } }; } // namespace __atomic2 Index: testsuite/29_atomics/atomic/operators/pointer_partial_void.cc === --- testsuite/29_atomics/atomic/operators/pointer_partial_void.cc (revision 0) +++ testsuite/29_atomics/atomic/operators/pointer_partial_void.cc (revision 0) @@ -0,0 +1,71 @@ +// { dg-require-atomic-builtins } +// { dg-options -std=gnu++0x } + +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// http://www.gnu.org/licenses/. + +#include atomic +#include cstdlib //std::abs +#include testsuite_hooks.h + +// pointer arithimetic vs. atomicvoid*. +// atomicvoid* vs. explicitly specialized w/o operators, like atomic_bool? +int main(void) +{ + // bool test __attribute__((unused)) = true; + + using namespace std; + + typedef int value_type; + const size_t n = 2; + value_type value = 42; + value_type* p = value; + void* vp = p; + ptrdiff_t dist(0); + + atomicvoid* a(vp
Re: [google-4.6]Backport r183875 to fix incorrect increment/decrement of atomic pointers (issue 6428056)
It is not a straightforward backport. atomic has changed a lot in gcc-4.7. is_lock_free() body is entirely different between gcc-4.6 and r183875. In gcc-4.6, is_lock_free() simply returns false or true. Notice that gcc-4.6 defines two namesapce __atomic0, __atomic2 in separate files (atomic_0.h, atomic_2.h), which disappear in gcc-4.7. Even though, the idea behind the bug is the same. The new unit tests will fail without this patch. Thanks, Jing Even though, the bug is the same. the new unit tests will On Thu, Jul 19, 2012 at 3:29 PM, dougk...@google.com wrote: This seems to be different from r183875. Are the parts chaing is_look_free() in r183875 necessary? If not why? http://codereview.appspot.com/6428056/
[google]Backport to enable stack protector for Android targets (issue6220051)
Backport from trunk r187586 http://gcc.gnu.org/ml/gcc-cvs/2012-05/msg00583.html Enable -fstack-protector support for Android targets. The patch only affects targets where __BIONIC__ is defined. Built Android arm toolchain. Would like to commit the patch to google/gcc-4_6 and google/gcc-4_6_2-mobile. OK? 2012-05-18 Jing Yu jin...@google.com Backport from trunk r187586: 2012-05-16 Igor Zamyatin igor.zamya...@intel.com * configure.ac: Stack protector enabling for Android targets. * configure: Regenerate. Index: gcc/configure === --- gcc/configure (revision 187663) +++ gcc/configure (working copy) @@ -25862,6 +25862,11 @@ $target_header_dir/bits/uClibc_config.h /dev/null; then gcc_cv_libc_provides_ssp=yes fi + # all versions of Bionic support stack protector + elif test -f $target_header_dir/sys/cdefs.h \ + $EGREP '^[ ]*#[]*define[ ]+__BIONIC__[ ]+1' \ + $target_header_dir/sys/cdefs.h /dev/null; then + gcc_cv_libc_provides_ssp=yes fi ;; *-*-gnu*) Index: gcc/configure.ac === --- gcc/configure.ac(revision 187663) +++ gcc/configure.ac(working copy) @@ -4414,6 +4414,11 @@ $target_header_dir/bits/uClibc_config.h /dev/null; then gcc_cv_libc_provides_ssp=yes fi + # all versions of Bionic support stack protector + elif test -f $target_header_dir/sys/cdefs.h \ + $EGREP '^[ ]*#[]*define[ ]+__BIONIC__[ ]+1' \ + $target_header_dir/sys/cdefs.h /dev/null; then + gcc_cv_libc_provides_ssp=yes fi] ;; *-*-gnu*) Index: gcc/ChangeLog.google-4_6 === --- gcc/ChangeLog.google-4_6(revision 187663) +++ gcc/ChangeLog.google-4_6(working copy) @@ -1,3 +1,11 @@ +2012-05-18 Jing Yu jin...@google.com + + Backport from trunk r187586: + 2012-05-16 Igor Zamyatin igor.zamya...@intel.com + + * configure.ac: Stack protector enabling for Android targets. + * configure: Regenerate. + 2012-05-18 Teresa Johnson tejohn...@google.com Backport from google/main r187660: -- This patch is available for review at http://codereview.appspot.com/6220051
Re: [google/gcc-4_6_2-mobile] Port of Android target support in i386 for google/gcc-4_6_2-mobile branch
I would like to port this patch to google/gcc-4_6 and also google/gcc-4_6_2-mobile. From reading the patch, it does not change config for non-Android target. bootstrap,crosstool tests finished successfully on google/gcc-4_6. Built ARM android toolchain successfully. OK? Thanks, Jing On Thu, May 3, 2012 at 1:51 AM, Ilya Enkovich enkovich@gmail.com wrote: Hi, here is a port of Android support patch (http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00944.html) for google/gcc-4_6_2-mobile branch. Is it OK? Bootstrapped on linux-x86_64. Successfullly used for NDK release build and Android ICS build. Thanks, Ilya --- 2012-05-03 Enkovich Ilya ilya.enkov...@intel.com * config/linux-android.h (ANDROID_STARTFILE_SPEC): Fix shared case. (ANDROID_ENDFILE_SPEC): Likewise. * config/i386/linux.h (TARGET_OS_CPP_BUILTINS): Add Android builtins. (LINUX_TARGET_CC1_SPEC): New. (CC1_SPEC): Support Android. (LINUX_TARGET_LINK_SPEC): New. (LINK_SPEC): Support Android. (LIB_SPEC): New. (STARTFILE_SPEC): New. (LINUX_TARGET_ENDFILE_SPEC): New. (ENDFILE_SPEC): Support Android. * config/i386/linux64.h: Likewise.
Re: Backported r187026 from branches/google/gcc-4_6 (issue 6148044)
LGTM On Wed, May 2, 2012 at 11:24 AM, asha...@chromium.org wrote: On 2012/05/01 22:51:22, jingyu wrote: 1) Please add an description entry to libgcc/ChangeLog.google-4_6 Done. 2) Your gcc/ChangeLog.google-4_6 change reverts someone else's change. Please update it and also update the time of your entry. Done. 3) Please list in the Description field what tests you have done. Done. Thanks, Jing On 2012/05/01 22:40:12, asharif wrote: +carrot@ http://codereview.appspot.com/6148044/
Re: [PATCH, i386, Android] -mandroid support for i386 target
This patch looks good for Android toolchain. But I am not a maintainer. Can any x86 backend maintainer help to review the patch? Thanks, Jing On Tue, Mar 27, 2012 at 6:55 AM, Ilya Enkovich enkovich@gmail.com wrote: Ping 13 марта 2012 г. 15:13 пользователь Ilya Enkovich enkovich@gmail.com написал: Ping 27 февраля 2012 г. 6:41 пользователь Ilya Enkovich enkovich@gmail.com написал: You should keep those *_SPEC and define them with new GNU_*_SPEC in gnu-user.h since gnu-user.h is also used by other non-linux targets. In linux.h, you undef *_SPEC before defining them. -- H.J. Thanks for the note. Here is fixed version. Is it OK now? Thanks, Ilya -- 2012-02-27 Enkovich Ilya ilya.enkov...@intel.com * gcc/config/i386/gnu-user.h (GNU_USER_TARGET_CC1_SPEC): New. (CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC. (GNU_USER_TARGET_LINK_SPEC): New. (LINK_SPEC): Use GNU_USER_TARGET_LINK_SPEC. (GNU_USER_TARGET_MATHFILE_SPEC): New. (ENDFILE_SPEC): Use GNU_USER_TARGET_MATHFILE_SPEC. * gcc/config/i386/linux.h (CC1_SPEC): New. (LINK_SPEC): New. (LIB_SPEC): New. (STARTFILE_SPEC): New. (ENDFILE_SPEC): New. diff --git a/gcc/config/i386/gnu-user.h b/gcc/config/i386/gnu-user.h index 98d0a25..33ceab7 100644 --- a/gcc/config/i386/gnu-user.h +++ b/gcc/config/i386/gnu-user.h @@ -77,8 +77,11 @@ along with GCC; see the file COPYING3. If not see #undef CPP_SPEC #define CPP_SPEC %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT} +#undef GNU_USER_TARGET_CC1_SPEC +#define GNU_USER_TARGET_CC1_SPEC %(cc1_cpu) %{profile:-p} + #undef CC1_SPEC -#define CC1_SPEC %(cc1_cpu) %{profile:-p} +#define CC1_SPEC GNU_USER_TARGET_CC1_SPEC /* Provide a LINK_SPEC appropriate for GNU userspace. Here we provide support for the special GCC options -static and -shared, which allow us to @@ -97,22 +100,28 @@ along with GCC; see the file COPYING3. If not see { link_emulation, GNU_USER_LINK_EMULATION },\ { dynamic_linker, GNU_USER_DYNAMIC_LINKER } -#undef LINK_SPEC -#define LINK_SPEC -m %(link_emulation) %{shared:-shared} \ +#define GNU_USER_TARGET_LINK_SPEC \ + -m %(link_emulation) %{shared:-shared} \ %{!shared: \ %{!static: \ %{rdynamic:-export-dynamic} \ -dynamic-linker %(dynamic_linker)} \ %{static:-static}} +#undef LINK_SPEC +#define LINK_SPEC GNU_USER_TARGET_LINK_SPEC + /* Similar to standard GNU userspace, but adding -ffast-math support. */ -#undef ENDFILE_SPEC -#define ENDFILE_SPEC \ +#define GNU_USER_TARGET_MATHFILE_SPEC \ %{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ %{mpc32:crtprec32.o%s} \ %{mpc64:crtprec64.o%s} \ - %{mpc80:crtprec80.o%s} \ - %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s + %{mpc80:crtprec80.o%s} + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + GNU_USER_TARGET_MATHFILE_SPEC \ + GNU_USER_TARGET_ENDFILE_SPEC /* A C statement (sans semicolon) to output to the stdio stream FILE the assembler definition of uninitialized global DECL named diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index 73681fe..a832ddc 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -22,3 +22,30 @@ along with GCC; see the file COPYING3. If not see #define GNU_USER_LINK_EMULATION elf_i386 #define GLIBC_DYNAMIC_LINKER /lib/ld-linux.so.2 + +#undef CC1_SPEC +#define CC1_SPEC \ + LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \ + GNU_USER_TARGET_CC1_SPEC ANDROID_CC1_SPEC) + +#undef LINK_SPEC +#define LINK_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LINK_SPEC, \ + GNU_USER_TARGET_LINK_SPEC ANDROID_LINK_SPEC) + +#undef LIB_SPEC +#define LIB_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \ + GNU_USER_TARGET_LIB_SPEC ANDROID_LIB_SPEC) + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_STARTFILE_SPEC, \ + ANDROID_STARTFILE_SPEC) + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_MATHFILE_SPEC \ + GNU_USER_TARGET_ENDFILE_SPEC, \ + GNU_USER_TARGET_MATHFILE_SPEC \ + ANDROID_ENDFILE_SPEC)
Re: [PATCH, i386, Android] Enable __ANDROID__ macro for Android i386 target
This patch looks good for Android toolchain. But I am not a maintainer. Can any x86 backend maintainer help to review the patch? Thanks, Jing On Tue, Mar 27, 2012 at 6:56 AM, Ilya Enkovich enkovich@gmail.com wrote: Ping 13 марта 2012 г. 15:12 пользователь Ilya Enkovich enkovich@gmail.com написал: Ping 27 февраля 2012 г. 6:39 пользователь Ilya Enkovich enkovich@gmail.com написал: Undef TARGET_OS_CPP_BUILTINS and define TARGET_OS_CPP_BUILTINS in linux.h with GNU_USER_TARGET_OS_CPP_BUILTINS and ANDROID_TARGET_OS_CPP_BUILTINS. -- H.J. Hello, Here is a variant with linux.h modification. Does it look fine? Thanks, Ilya -- 2012-02-27 Enkovich Ilya ilya.enkov...@intel.com * gcc/config/i386/linux.h (TARGET_OS_CPP_BUILTINS): New. diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index 73681fe..03c7b29 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -22,3 +22,12 @@ along with GCC; see the file COPYING3. If not see #define GNU_USER_LINK_EMULATION elf_i386 #define GLIBC_DYNAMIC_LINKER /lib/ld-linux.so.2 + +#undef TARGET_OS_CPP_BUILTINS +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + GNU_USER_TARGET_OS_CPP_BUILTINS(); \ + ANDROID_TARGET_OS_CPP_BUILTINS(); \ + } \ + while (0)
[google/4.6]Backport r184061 from upstream 4.6 (issue5712053)
Backport r184061 from gcc-4_6 branch to fix an invalid constant simplification (PR52060). bootstrap and crosstool tests pass. OK for google/gcc-4_6 and google/gcc-4_6_2-mobile? 2012-03-01 Jing Yu jin...@google.com Backport r184061 from gcc-4_6-branch to fix PR52060. 2012-02-07 Jakub Jelinek ja...@redhat.com PR rtl-optimization/52060 * gcc.dg/torture/pr52060.c: New test. 2012-03-01 Jing Yu jin...@google.com Backport r184061 from gcc-4_6-branch to fix PR52060. 2012-02-07 Jakub Jelinek ja...@redhat.com PR rtl-optimization/52060 * combine.c (try_combine): Add i0src_copy and i0src_copy2 variables, copy i1src to i1src_copy whenever added_sets_2 i1_feeds_i2_n already before i1dest - i1src substitution in newpat, copy i0src to i0src_copy and/or i0src_copy2 when needed. Index: testsuite/ChangeLog.google-4_6 === --- testsuite/ChangeLog.google-4_6 (revision 184667) +++ testsuite/ChangeLog.google-4_6 (working copy) @@ -1,3 +1,10 @@ +2012-03-01 Jing Yu jin...@google.com + Backport r184061 from gcc-4_6-branch to fix PR52060. + + 2012-02-07 Jakub Jelinek ja...@redhat.com + PR rtl-optimization/52060 + * gcc.dg/torture/pr52060.c: New test. + 2012-02-19 Jeffrey Yasskin jyass...@google.com Backport r183223 from gcc-4_6-branch to fix a segfault in C++11 mode. Index: testsuite/gcc.dg/torture/pr52060.c === --- testsuite/gcc.dg/torture/pr52060.c (revision 0) +++ testsuite/gcc.dg/torture/pr52060.c (revision 0) @@ -0,0 +1,57 @@ +/* PR rtl-optimization/52060 */ +/* { dg-do run { target int32plus } } */ + +extern void abort (void); +union U { float f; unsigned int i; }; + +static inline __attribute__((always_inline)) unsigned int +foo (float x) +{ + union U u; + unsigned int a, b, c; + int d; + int e; + u.f = x; + d = ((unsigned) u.i 23) 0xFF; + c = d 126 ? 0 : ~0; + e = 127 + 30 - d; + a = (u.i 8) | 0x8000U; + b = a ((1 e) - 1); + a = a e; + c = (b | (a 2)) ? ~0 : ~1; + a = ((a + 1U) 1) c; + return a; +} + +__attribute__((noinline)) unsigned int +bar (float x) +{ + unsigned int a, b, c; + static const unsigned int d[128] = + { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 6, 7 + }; + a = foo (1048575.0f * x); + c = d[a 13]; + b = (c 13) | ((a (7 - c)) 0x1fff); + return b; +} + +int +main () +{ + union U u; + u.f = 1048575.0f; + if (sizeof (u.i) == sizeof (u.f) + u.i == 0x4970U + bar (1.0f) != 65535) +abort (); + return 0; +} Index: ChangeLog.google-4_6 === --- ChangeLog.google-4_6(revision 184667) +++ ChangeLog.google-4_6(working copy) @@ -1,3 +1,13 @@ +2012-03-01 Jing Yu jin...@google.com + Backport r184061 from gcc-4_6-branch to fix PR52060. + + 2012-02-07 Jakub Jelinek ja...@redhat.com + PR rtl-optimization/52060 + * combine.c (try_combine): Add i0src_copy and i0src_copy2 variables, + copy i1src to i1src_copy whenever added_sets_2 i1_feeds_i2_n + already before i1dest - i1src substitution in newpat, copy i0src + to i0src_copy and/or i0src_copy2 when needed. + 2012-02-21 Jing Yu jin...@google.com Google Ref 47894 Index: combine.c === --- combine.c (revision 184667) +++ combine.c (working copy) @@ -2551,8 +2551,8 @@ rtx i3dest_killed = 0; /* SET_DEST and SET_SRC of I2, I1 and I0. */ rtx i2dest = 0, i2src = 0, i1dest = 0, i1src = 0, i0dest = 0, i0src = 0; - /* Copy of SET_SRC of I1, if needed. */ - rtx i1src_copy = 0; + /* Copy of SET_SRC of I1 and I0, if needed. */ + rtx i1src_copy = 0, i0src_copy = 0, i0src_copy2 = 0; /* Set if I2DEST was reused as a scratch register. */ bool i2scratch = false; /* The PATTERNs of I0, I1, and I2, or a copy of them in certain cases. */ @@ -3164,6 +3164,11 @@ n_occurrences = 0; subst_low_luid = DF_INSN_LUID (i1); + /* If the following substitution will modify I1SRC, make a copy of it +for the case where it is substituted for I1DEST in I2PAT later. */ + if (added_sets_2 i1_feeds_i2_n) + i1src_copy = copy_rtx (i1src); + /* If I0 feeds into I1 and I0DEST is in I0SRC, we need to make a unique copy of I1SRC each time we substitute it, in order to avoid creating self-referential RTL when we
Re: [google/4.6]Backport r184061 from upstream 4.6 (issue5712053)
The patch will be auto-merged into google/gcc-4_6 in near future. I will cherry-pick it into google/gcc-4_6_2-mobile. On Thu, Mar 1, 2012 at 10:50 AM, Jing Yu jin...@google.com wrote: Backport r184061 from gcc-4_6 branch to fix an invalid constant simplification (PR52060). bootstrap and crosstool tests pass. OK for google/gcc-4_6 and google/gcc-4_6_2-mobile? 2012-03-01 Jing Yu jin...@google.com Backport r184061 from gcc-4_6-branch to fix PR52060. 2012-02-07 Jakub Jelinek ja...@redhat.com PR rtl-optimization/52060 * gcc.dg/torture/pr52060.c: New test. 2012-03-01 Jing Yu jin...@google.com Backport r184061 from gcc-4_6-branch to fix PR52060. 2012-02-07 Jakub Jelinek ja...@redhat.com PR rtl-optimization/52060 * combine.c (try_combine): Add i0src_copy and i0src_copy2 variables, copy i1src to i1src_copy whenever added_sets_2 i1_feeds_i2_n already before i1dest - i1src substitution in newpat, copy i0src to i0src_copy and/or i0src_copy2 when needed. Index: testsuite/ChangeLog.google-4_6 === --- testsuite/ChangeLog.google-4_6 (revision 184667) +++ testsuite/ChangeLog.google-4_6 (working copy) @@ -1,3 +1,10 @@ +2012-03-01 Jing Yu jin...@google.com + Backport r184061 from gcc-4_6-branch to fix PR52060. + + 2012-02-07 Jakub Jelinek ja...@redhat.com + PR rtl-optimization/52060 + * gcc.dg/torture/pr52060.c: New test. + 2012-02-19 Jeffrey Yasskin jyass...@google.com Backport r183223 from gcc-4_6-branch to fix a segfault in C++11 mode. Index: testsuite/gcc.dg/torture/pr52060.c === --- testsuite/gcc.dg/torture/pr52060.c (revision 0) +++ testsuite/gcc.dg/torture/pr52060.c (revision 0) @@ -0,0 +1,57 @@ +/* PR rtl-optimization/52060 */ +/* { dg-do run { target int32plus } } */ + +extern void abort (void); +union U { float f; unsigned int i; }; + +static inline __attribute__((always_inline)) unsigned int +foo (float x) +{ + union U u; + unsigned int a, b, c; + int d; + int e; + u.f = x; + d = ((unsigned) u.i 23) 0xFF; + c = d 126 ? 0 : ~0; + e = 127 + 30 - d; + a = (u.i 8) | 0x8000U; + b = a ((1 e) - 1); + a = a e; + c = (b | (a 2)) ? ~0 : ~1; + a = ((a + 1U) 1) c; + return a; +} + +__attribute__((noinline)) unsigned int +bar (float x) +{ + unsigned int a, b, c; + static const unsigned int d[128] = + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 6, 7 + }; + a = foo (1048575.0f * x); + c = d[a 13]; + b = (c 13) | ((a (7 - c)) 0x1fff); + return b; +} + +int +main () +{ + union U u; + u.f = 1048575.0f; + if (sizeof (u.i) == sizeof (u.f) + u.i == 0x4970U + bar (1.0f) != 65535) + abort (); + return 0; +} Index: ChangeLog.google-4_6 === --- ChangeLog.google-4_6 (revision 184667) +++ ChangeLog.google-4_6 (working copy) @@ -1,3 +1,13 @@ +2012-03-01 Jing Yu jin...@google.com + Backport r184061 from gcc-4_6-branch to fix PR52060. + + 2012-02-07 Jakub Jelinek ja...@redhat.com + PR rtl-optimization/52060 + * combine.c (try_combine): Add i0src_copy and i0src_copy2 variables, + copy i1src to i1src_copy whenever added_sets_2 i1_feeds_i2_n + already before i1dest - i1src substitution in newpat, copy i0src + to i0src_copy and/or i0src_copy2 when needed. + 2012-02-21 Jing Yu jin...@google.com Google Ref 47894 Index: combine.c === --- combine.c (revision 184667) +++ combine.c (working copy) @@ -2551,8 +2551,8 @@ rtx i3dest_killed = 0; /* SET_DEST and SET_SRC of I2, I1 and I0. */ rtx i2dest = 0, i2src = 0, i1dest = 0, i1src = 0, i0dest = 0, i0src = 0; - /* Copy of SET_SRC of I1, if needed. */ - rtx i1src_copy = 0; + /* Copy of SET_SRC of I1 and I0, if needed. */ + rtx i1src_copy = 0, i0src_copy = 0, i0src_copy2 = 0; /* Set if I2DEST was reused as a scratch register. */ bool i2scratch = false; /* The PATTERNs of I0, I1, and I2, or a copy of them in certain cases. */ @@ -3164,6 +3164,11 @@ n_occurrences = 0; subst_low_luid = DF_INSN_LUID (i1); + /* If the following substitution will modify I1SRC, make a copy of it + for the case where it is substituted for I1DEST
Re: [google][4.6]Bug fix to function reordering plugin to check presence of elf.h
I ported this patch into google/gcc-4_6_2-mobile. Thanks, Jing On Sat, Feb 25, 2012 at 1:40 PM, Sriraman Tallam tmsri...@google.com wrote: Committed now, thanks. -Sri. On Fri, Feb 24, 2012 at 11:18 PM, Xinliang David Li davi...@google.com wrote: ok. David On Fri, Feb 24, 2012 at 4:19 PM, Sriraman Tallam tmsri...@google.com wrote: function_reordering_plugin.c includes elf.h which is not available on non-ELF platforms building a cross-compiler. This patch checks for elf.h before including it. Otherwise, it redefines the macros used. This is safe becaue the macros will not change. For context, this linker plugin itself is only available in the google 4_6 branch and I will port it to other branches and make it available for review for trunk soon. 2012-02-24 Sriraman Tallam tmsri...@google.com * function_reordering_plugin.c: Check for presence of elf.h. Otherwise, redefine the elf macros used. Ok to commit? Thanks, -Sri.
Re: [PATCH, i386, Android] Enable exceptions and RTTI by default for Android
On Mon, Feb 27, 2012 at 12:28 AM, Ilya Enkovich enkovich@gmail.com wrote: My comment is(was) not on the format of the patch. Instead, I am thinking whether Android toolchain customer, which is Android AOSP, wants this patch. I don't know the scenario behind this patch. I think the question behind this patch is, if RTTI and exceptions are enabled by default, who is supposed to handle RTTI and exceptions by default? The answer is no answer, for now. Android AOSP tree provides very limited C++ support. Android NDK provides four options for C++ support. Some of the options support both exceptions and rttit, some options only support rtti. Therefore I guess Android AOSP probably would not like to enable exceptions and RTTI by default. Actually when you rebuild Android NDK similar patch (named 0001-Enable-C-exceptions-and-RTTI-by-default.patch) is applied to GCC sources before toolchain rebuild. Right. The patch is used to build NDK toolchain which is to build NDK applications, and NDK offers several options for RTTI and exception support. But Android AOSP platform does not support exception, and the toolchain to build Android AOSP platform does not use this patch. That's why the patch exists in NDK package, not in AOSP toolchain source repository. Thanks, Jing Ilya Questions/complaints/requests on Android limited C++ support, should go to Android forum. Questions about license concerns, should go to Android AOSP lawyer. Thanks, Jing On Fri, Feb 24, 2012 at 2:36 AM, Richard Guenther richard.guent...@gmail.com wrote: On Fri, Feb 24, 2012 at 11:22 AM, Ilya Enkovich enkovich@gmail.com wrote: On Wed, Feb 22, 2012 at 3:57 PM, Ilya Enkovich enkovich@gmail.com wrote: Hello, Here is a simple patch which enables exceptions and RTTI by default for Android target. OK for trunk? Err - isn't that the default? Thus, simply delete the bogus spec? Richard. Hi, Is following patch OK or it's better to remove whole macro and its usages? The latter. Richard. Thanks, Ilya -- 2012-02-22 Enkovich Ilya ilya.enkov...@intel.com * gcc/config/linux-android.h (ANDROID_CC1PLUS_SPEC): Enable exceptions and rtti by default. diff --git a/gcc/config/linux-android.h b/gcc/config/linux-android.h index 94c5274..180b62b 100644 --- a/gcc/config/linux-android.h +++ b/gcc/config/linux-android.h @@ -45,9 +45,7 @@ %{!mglibc:%{!muclibc:%{!mbionic: -mbionic}}} \ %{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC -#define ANDROID_CC1PLUS_SPEC \ - %{!fexceptions:%{!fno-exceptions: -fno-exceptions}} \ - %{!frtti:%{!fno-rtti: -fno-rtti}} +#define ANDROID_CC1PLUS_SPEC #define ANDROID_LIB_SPEC \ %{!static: -ldl}
Re: [PATCH, i386, Android] Enable exceptions and RTTI by default for Android
My comment is(was) not on the format of the patch. Instead, I am thinking whether Android toolchain customer, which is Android AOSP, wants this patch. I don't know the scenario behind this patch. I think the question behind this patch is, if RTTI and exceptions are enabled by default, who is supposed to handle RTTI and exceptions by default? The answer is no answer, for now. Android AOSP tree provides very limited C++ support. Android NDK provides four options for C++ support. Some of the options support both exceptions and rttit, some options only support rtti. Therefore I guess Android AOSP probably would not like to enable exceptions and RTTI by default. Questions/complaints/requests on Android limited C++ support, should go to Android forum. Questions about license concerns, should go to Android AOSP lawyer. Thanks, Jing On Fri, Feb 24, 2012 at 2:36 AM, Richard Guenther richard.guent...@gmail.com wrote: On Fri, Feb 24, 2012 at 11:22 AM, Ilya Enkovich enkovich@gmail.com wrote: On Wed, Feb 22, 2012 at 3:57 PM, Ilya Enkovich enkovich@gmail.com wrote: Hello, Here is a simple patch which enables exceptions and RTTI by default for Android target. OK for trunk? Err - isn't that the default? Thus, simply delete the bogus spec? Richard. Hi, Is following patch OK or it's better to remove whole macro and its usages? The latter. Richard. Thanks, Ilya -- 2012-02-22 Enkovich Ilya ilya.enkov...@intel.com * gcc/config/linux-android.h (ANDROID_CC1PLUS_SPEC): Enable exceptions and rtti by default. diff --git a/gcc/config/linux-android.h b/gcc/config/linux-android.h index 94c5274..180b62b 100644 --- a/gcc/config/linux-android.h +++ b/gcc/config/linux-android.h @@ -45,9 +45,7 @@ %{!mglibc:%{!muclibc:%{!mbionic: -mbionic}}} \ %{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC -#define ANDROID_CC1PLUS_SPEC \ - %{!fexceptions:%{!fno-exceptions: -fno-exceptions}} \ - %{!frtti:%{!fno-rtti: -fno-rtti}} +#define ANDROID_CC1PLUS_SPEC #define ANDROID_LIB_SPEC \ %{!static: -ldl}
Re: [google/gcc-4_6_2-mobile] PATCH: PR other/46770: Replace .ctors/.dtors with .init_array/.fini_array on targets supporting them
The attachment is a complete patch for [google/gcc-4_6] branch, to replace .ctors/.dtors with .init_array/.fini_array. Bootstrap and crosstool testers pass. I have verified that gcc_cv_initfini_array=no, which means the crosstool will do whatever it did before (won't replace .ctors/.dtors with .init_array/.fini_array). I also built Android toolchain and verified gcc_cv_initfini_array=no. r177933 is already in google/gcc-4_6_2-mobile and google/gcc-4_6-mobile. I need to backport the rest to these two branches. ok? 2012-02-21 Jing Yu jin...@google.com Google Ref 47894 Backport from mainline r177933, r175181, r177963, r178116, r183299. 2011-08-20 H.J. Lu hongjiu...@intel.com PR other/46770 * config.gcc (tm_file): Add initfini-array.h if .init_arrary/.fini_array are supported. * crtstuff.c: Don't generate .ctors nor .dtors sections if USE_INITFINI_ARRAY is defined. * output.h (default_elf_init_array_asm_out_constructor): New. (default_elf_fini_array_asm_out_destructor): Likewise. * varasm.c (elf_init_array_section): Likewise. (elf_fini_array_section): Likewise. (get_elf_initfini_array_priority_section): Likewise. (default_elf_init_array_asm_out_constructor): Likewise. (default_elf_fini_array_asm_out_destructor): Likewise. * config/initfini-array.h: New. 2011-06-18 H.J. Lu hongjiu...@intel.com PR other/49325 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Properly check if .init_array can be used with .ctors on targets. * configure: Regenerated. 2011-08-22 H.J. Lu hongjiu...@intel.com * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Error if __ELF__ isn't defined. * configure: Regenerated. 2011-08-26 Rainer Orth r...@cebitec.uni-bielefeld.de PR target/50166 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Check count in main. * configure: Regenerate. 2012-01-19 Jakub Jelinek ja...@redhat.com PR bootstrap/50237 * config/initfini-array.h: Guard content of the header with #ifdef HAVE_INITFINI_ARRAY. * configure.ac: Move gcc_AC_INITFINI_ARRAY much later into the file. Add initfini-array.h to tm_file here. * acinclude.m4 (gcc_AC_INITFINI_ARRAY): For non-ia64 do a linker test. * config.gcc: Don't add initfini-array.h to tm_file here. * configure: Regenerated. Thanks, Jing On Tue, Feb 21, 2012 at 9:34 AM, H.J. Lu hjl.to...@gmail.com wrote: On Mon, Feb 20, 2012 at 11:31 PM, Jing Yu jin...@google.com wrote: Hi H.J., I think the patch itself is not enough. I compared AC_DEFUN([gcc_AC_INITFINI_ARRAY] part (in acinclude.m4) of gcc trunk and google/gcc-4_6_2-mobile, and found how enable_initfini_array is configured is different. The patch breaks some of our tests. enable_initfini_array should be disabled for cross compile by default. But it is not true in our branch. Could you please point us all related patches? I missed this backport. There are some additional changes needed for non-Linux systems: http://gcc.gnu.org/ml/gcc-cvs/2011-08/msg00978.html http://gcc.gnu.org/ml/gcc-cvs/2011-08/msg01132.html http://gcc.gnu.org/ml/gcc-cvs/2012-01/msg00544.html -- H.J. initfini.patch Description: Binary data
Re: [PATCH, i386, Android] Enable exceptions and RTTI by default for Android
So far, Android ARM toolchain, which builds Android platform for ARM boards, does not enable RTTI and exceptions by default. There are license concerns with the use of GNU libstdc++ and libsupc++. Thanks, Jing On Wed, Feb 22, 2012 at 7:07 AM, Richard Guenther richard.guent...@gmail.com wrote: On Wed, Feb 22, 2012 at 3:57 PM, Ilya Enkovich enkovich@gmail.com wrote: Hello, Here is a simple patch which enables exceptions and RTTI by default for Android target. OK for trunk? Err - isn't that the default? Thus, simply delete the bogus spec? Richard. Thanks, Ilya -- 2012-02-22 Enkovich Ilya ilya.enkov...@intel.com * gcc/config/linux-android.h (ANDROID_CC1PLUS_SPEC): Enable exceptions and rtti by default. diff --git a/gcc/config/linux-android.h b/gcc/config/linux-android.h index 94c5274..7256082 100644 --- a/gcc/config/linux-android.h +++ b/gcc/config/linux-android.h @@ -46,8 +46,8 @@ %{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC #define ANDROID_CC1PLUS_SPEC \ - %{!fexceptions:%{!fno-exceptions: -fno-exceptions}} \ - %{!frtti:%{!fno-rtti: -fno-rtti}} + %{!fexceptions:%{!fno-exceptions: -fexceptions}} \ + %{!frtti:%{!fno-rtti: -frtti}} #define ANDROID_LIB_SPEC \ %{!static: -ldl}
Re: PATCH: Use crtbegin_so%O%s/crtend_so%O%s for -mandroid -shared
I am OK with the patch, I am not a maintainer though. Jing On Wed, Dec 14, 2011 at 9:11 AM, H.J. Lu hongjiu...@intel.com wrote: Hi, Android uses crtbegin_so.o and crtend_so.o to build shared library with -mshared. OK for trunk in stage 1? H.J. --- 2011-12-13 H.J. Lu hongjiu...@intel.com * config/linux-android.h (ANDROID_STARTFILE_SPEC): Use crtbegin_so%O%s for -shared. (ANDROID_ENDFILE_SPEC): Use crtend_so%O%s for -shared. --- gcc/ChangeLog.android | 5 + gcc/config/linux-android.h | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 gcc/ChangeLog.android diff --git a/gcc/ChangeLog.android b/gcc/ChangeLog.android new file mode 100644 index 000..fc54522 --- /dev/null +++ b/gcc/ChangeLog.android @@ -0,0 +1,5 @@ +2011-12-13 H.J. Lu hongjiu...@intel.com + + * config/linux-android.h (ANDROID_STARTFILE_SPEC): Use + crtbegin_so%O%s for -shared. + (ANDROID_ENDFILE_SPEC): Use crtend_so%O%s for -shared. diff --git a/gcc/config/linux-android.h b/gcc/config/linux-android.h index 94c5274..acbc662 100644 --- a/gcc/config/linux-android.h +++ b/gcc/config/linux-android.h @@ -53,8 +53,8 @@ %{!static: -ldl} #define ANDROID_STARTFILE_SPEC \ - %{!shared: \ + %{shared: crtbegin_so%O%s;: \ %{static: crtbegin_static%O%s;: crtbegin_dynamic%O%s}} #define ANDROID_ENDFILE_SPEC \ - %{!shared: crtend_android%O%s} + %{shared: crtend_so%O%s;: crtend_android%O%s} -- 1.7.6.4
Re: [google/gcc-4_6_2-mobile] PATCH: PR other/46770: Replace .ctors/.dtors with .init_array/.fini_array on targets supporting them
Sorry -- I will fix it in google/gcc-4_6_2-mobile. Thanks, Jing On Mon, Feb 20, 2012 at 7:15 AM, Ilya Enkovich enkovich@gmail.com wrote: Hello, Hey, Jing, you broke the google/gcc-4_6 branch by checking the new header file into the wrong directory. Fixed via r184386. google/gcc-4_6_2-mobile branch still has the same problem. Could please someone fix it? Thanks Ilya Ollie On Fri, Feb 17, 2012 at 10:25 PM, Jing Yu jin...@google.com wrote: OK. Thanks for porting the patch. I will commit the patch into google/gcc-4_6_2-mobile for you. I would also like to commit it into google/gcc-4_6 branch if all tests pass. This patch is almost the same as Google Ref 47894. Thanks, Jing On Fri, Feb 17, 2012 at 5:20 PM, H.J. Lu hongjiu...@intel.com wrote: Hi, This patch backports the fix from trunk: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46770 for google/gcc-4_6_2-mobile branch. This is needed to support C++ global constructors/destructiors on Android/x86. OK for google/gcc-4_6_2-mobile branch? Thanks. H.J. --- 2011-08-20 H.J. Lu hongjiu...@intel.com PR other/46770 * config.gcc (tm_file): Add initfini-array.h if .init_arrary/.fini_array are supported. * crtstuff.c: Don't generate .ctors nor .dtors sections if USE_INITFINI_ARRAY is defined. * output.h (default_elf_init_array_asm_out_constructor): New. (default_elf_fini_array_asm_out_destructor): Likewise. * varasm.c (elf_init_array_section): Likewise. (elf_fini_array_section): Likewise. (get_elf_initfini_array_priority_section): Likewise. (default_elf_init_array_asm_out_constructor): Likewise. (default_elf_fini_array_asm_out_destructor): Likewise. * config/initfini-array.h: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177933 138bc75d-0d04-0410-961f-82ee72b054a4 Conflicts: gcc/ChangeLog --- gcc/ChangeLog.hjl | 21 +++ gcc/config.gcc | 5 +++ gcc/config/initfini-array.h | 37 +++ gcc/crtstuff.c | 11 +++- gcc/output.h | 2 + gcc/varasm.c | 58 +++ 6 files changed, 133 insertions(+), 1 deletions(-) create mode 100644 gcc/ChangeLog.hjl create mode 100644 gcc/config/initfini-array.h diff --git a/gcc/ChangeLog.hjl b/gcc/ChangeLog.hjl new file mode 100644 index 000..3527b27 --- /dev/null +++ b/gcc/ChangeLog.hjl @@ -0,0 +1,21 @@ +2011-12-07 H.J. Lu hongjiu...@intel.com + + Backport from mainline + 2011-08-20 H.J. Lu hongjiu...@intel.com + + PR other/46770 + * config.gcc (tm_file): Add initfini-array.h if + .init_arrary/.fini_array are supported. + + * crtstuff.c: Don't generate .ctors nor .dtors sections if + USE_INITFINI_ARRAY is defined. + + * output.h (default_elf_init_array_asm_out_constructor): New. + (default_elf_fini_array_asm_out_destructor): Likewise. + * varasm.c (elf_init_array_section): Likewise. + (elf_fini_array_section): Likewise. + (get_elf_initfini_array_priority_section): Likewise. + (default_elf_init_array_asm_out_constructor): Likewise. + (default_elf_fini_array_asm_out_destructor): Likewise. + + * config/initfini-array.h: New. diff --git a/gcc/config.gcc b/gcc/config.gcc index d9ac0fa..b386424 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -3176,6 +3176,11 @@ if test x$with_schedule = x; then esac fi +# Support --enable-initfini-array. +if test x$enable_initfini_array = xyes; then + tm_file=${tm_file} initfini-array.h +fi + # Validate and mark as valid any --with options supported # by this target. In order to use a particular --with option # you must list it in supported_defaults; validating the value diff --git a/gcc/config/initfini-array.h b/gcc/config/initfini-array.h new file mode 100644 index 000..8aaadf6 --- /dev/null +++ b/gcc/config/initfini-array.h @@ -0,0 +1,37 @@ +/* Definitions for ELF systems with .init_array/.fini_array section + support. + Copyright (C) 2011 + Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC
Re: [google/gcc-4_6_2-mobile] PATCH: PR other/46770: Replace .ctors/.dtors with .init_array/.fini_array on targets supporting them
Hi H.J., I think the patch itself is not enough. I compared AC_DEFUN([gcc_AC_INITFINI_ARRAY] part (in acinclude.m4) of gcc trunk and google/gcc-4_6_2-mobile, and found how enable_initfini_array is configured is different. The patch breaks some of our tests. enable_initfini_array should be disabled for cross compile by default. But it is not true in our branch. Could you please point us all related patches? Thanks, Jing On Mon, Feb 20, 2012 at 8:30 AM, H.J. Lu hjl.to...@gmail.com wrote: On Sat, Feb 18, 2012 at 1:54 AM, Jakub Jelinek ja...@redhat.com wrote: On Fri, Feb 17, 2012 at 05:20:02PM -0800, H.J. Lu wrote: This patch backports the fix from trunk: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46770 for google/gcc-4_6_2-mobile branch. This is needed to support C++ global constructors/destructiors on Android/x86. OK for google/gcc-4_6_2-mobile branch? Don't you want to backport also all the follow-ups on this? The original patch works with cross compile since it is disabled by default. For native compile, it works with the default GNU assembler and linker. If there are additional failure for native compile, it should be disabled at configure time. -- H.J.
Re: [google/gcc-4_6_2-mobile] PATCH: PR other/46770: Replace .ctors/.dtors with .init_array/.fini_array on targets supporting them
OK. Thanks for porting the patch. I will commit the patch into google/gcc-4_6_2-mobile for you. I would also like to commit it into google/gcc-4_6 branch if all tests pass. This patch is almost the same as Google Ref 47894. Thanks, Jing On Fri, Feb 17, 2012 at 5:20 PM, H.J. Lu hongjiu...@intel.com wrote: Hi, This patch backports the fix from trunk: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46770 for google/gcc-4_6_2-mobile branch. This is needed to support C++ global constructors/destructiors on Android/x86. OK for google/gcc-4_6_2-mobile branch? Thanks. H.J. --- 2011-08-20 H.J. Lu hongjiu...@intel.com PR other/46770 * config.gcc (tm_file): Add initfini-array.h if .init_arrary/.fini_array are supported. * crtstuff.c: Don't generate .ctors nor .dtors sections if USE_INITFINI_ARRAY is defined. * output.h (default_elf_init_array_asm_out_constructor): New. (default_elf_fini_array_asm_out_destructor): Likewise. * varasm.c (elf_init_array_section): Likewise. (elf_fini_array_section): Likewise. (get_elf_initfini_array_priority_section): Likewise. (default_elf_init_array_asm_out_constructor): Likewise. (default_elf_fini_array_asm_out_destructor): Likewise. * config/initfini-array.h: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177933 138bc75d-0d04-0410-961f-82ee72b054a4 Conflicts: gcc/ChangeLog --- gcc/ChangeLog.hjl | 21 +++ gcc/config.gcc | 5 +++ gcc/config/initfini-array.h | 37 +++ gcc/crtstuff.c | 11 +++- gcc/output.h | 2 + gcc/varasm.c | 58 +++ 6 files changed, 133 insertions(+), 1 deletions(-) create mode 100644 gcc/ChangeLog.hjl create mode 100644 gcc/config/initfini-array.h diff --git a/gcc/ChangeLog.hjl b/gcc/ChangeLog.hjl new file mode 100644 index 000..3527b27 --- /dev/null +++ b/gcc/ChangeLog.hjl @@ -0,0 +1,21 @@ +2011-12-07 H.J. Lu hongjiu...@intel.com + + Backport from mainline + 2011-08-20 H.J. Lu hongjiu...@intel.com + + PR other/46770 + * config.gcc (tm_file): Add initfini-array.h if + .init_arrary/.fini_array are supported. + + * crtstuff.c: Don't generate .ctors nor .dtors sections if + USE_INITFINI_ARRAY is defined. + + * output.h (default_elf_init_array_asm_out_constructor): New. + (default_elf_fini_array_asm_out_destructor): Likewise. + * varasm.c (elf_init_array_section): Likewise. + (elf_fini_array_section): Likewise. + (get_elf_initfini_array_priority_section): Likewise. + (default_elf_init_array_asm_out_constructor): Likewise. + (default_elf_fini_array_asm_out_destructor): Likewise. + + * config/initfini-array.h: New. diff --git a/gcc/config.gcc b/gcc/config.gcc index d9ac0fa..b386424 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -3176,6 +3176,11 @@ if test x$with_schedule = x; then esac fi +# Support --enable-initfini-array. +if test x$enable_initfini_array = xyes; then + tm_file=${tm_file} initfini-array.h +fi + # Validate and mark as valid any --with options supported # by this target. In order to use a particular --with option # you must list it in supported_defaults; validating the value diff --git a/gcc/config/initfini-array.h b/gcc/config/initfini-array.h new file mode 100644 index 000..8aaadf6 --- /dev/null +++ b/gcc/config/initfini-array.h @@ -0,0 +1,37 @@ +/* Definitions for ELF systems with .init_array/.fini_array section + support. + Copyright (C) 2011 + Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + http://www.gnu.org/licenses/. */ + +#define USE_INITFINI_ARRAY + +#undef INIT_SECTION_ASM_OP +#undef FINI_SECTION_ASM_OP + +#undef INIT_ARRAY_SECTION_ASM_OP +#define INIT_ARRAY_SECTION_ASM_OP + +#undef FINI_ARRAY_SECTION_ASM_OP +#define FINI_ARRAY_SECTION_ASM_OP + +/* Use .init_array/.fini_array section for constructors and destructors. */ +#undef TARGET_ASM_CONSTRUCTOR +#define TARGET_ASM_CONSTRUCTOR default_elf_init_array_asm_out_constructor +#undef TARGET_ASM_DESTRUCTOR +#define TARGET_ASM_DESTRUCTOR
[google]Emit GNU-stack note for arm targets by default (issue5649090)
arm-eabi toolchain needs GNU-stack note for security purpose. Will Keep this patch in google branches. OK for google/main? I would like to port this patch to google/gcc-4_6, google/gcc-4_6-mobile, google/gcc-4_6_2-moible. 2012-02-14 Jing Yu jin...@google.com Google ref 42402-p2 * config/arm/arm.h: Emit GNU-stack note for all arm targets by default. Index: gcc/config/arm/arm.h === --- gcc/config/arm/arm.h(revision 184221) +++ gcc/config/arm/arm.h(working copy) @@ -2157,9 +2157,9 @@ : arm_gen_return_addr_mask ()) -/* Do not emit .note.GNU-stack by default. */ +/* Do emit .note.GNU-stack by default. */ #ifndef NEED_INDICATE_EXEC_STACK -#define NEED_INDICATE_EXEC_STACK 0 +#define NEED_INDICATE_EXEC_STACK 1 #endif /* The maximum number of parallel loads or stores we support in an ldm/stm -- This patch is available for review at http://codereview.appspot.com/5649090
Re: [PATCH] Fix sibcall argument overlap checking if pretend_args_size (PR target/52129)
On Thu, Feb 9, 2012 at 12:54 AM, Carrot Wei car...@google.com wrote: Hi Richard and Jakub Since 4.6 contains the same bug, I would like to back port it to 4.6 branch. Could you approve it for 4.6? Jing and Doug Could you approve it for google/gcc-4_6-mobile branch? OK for google/gcc-4_6-mobile and gcc-4_6_2-mobile Jing thanks Carrot On Mon, Feb 6, 2012 at 9:14 PM, Richard Guenther richard.guent...@gmail.com wrote: On Mon, Feb 6, 2012 at 2:01 PM, Jakub Jelinek ja...@redhat.com wrote: Hi! The attached testcase is miscompiled on arm*, by doing a sibcall when setup of one argument overwrites incoming arguments used to setup parameters in later insns. The reason why mem_overlaps_already_clobbered_arg_p/check_sibcall_argument_overlap fails to detect is that the caller has non-zero crtl-args.pretend_args_size, and in that case the base: /* The argument block when performing a sibling call is the incoming argument block. */ if (pass == 0) { argblock = crtl-args.internal_arg_pointer; argblock #ifdef STACK_GROWS_DOWNWARD = plus_constant (argblock, crtl-args.pretend_args_size); #else = plus_constant (argblock, -crtl-args.pretend_args_size); #endif stored_args_map = sbitmap_alloc (args_size.constant); sbitmap_zero (stored_args_map); } apparently isn't virtual-incoming-rtx, but that plus pretend_args_size (8 in this case). When we store bits into stored_args_map sbitmap, we use arg-locate.slot_offset.constant based values (or something different for ARGS_GROW_DOWNWARD, but when mem_overlaps_already_clobbered_arg_p is testing those bits, it uses just virtual-incoming-rtx offsets (or something different for ARGS_GROW_DOWNWARD). This patch fixes it by adjusting the virtual-incoming-rtx relative offset to be actually argblock relative offset. Bootstrapped/regtested on x86_64-linux and i686-linux and tested on the testcase on arm cross. Ok for trunk? Ok. Thanks, Richard. 2012-02-06 Jakub Jelinek ja...@redhat.com PR target/52129 * calls.c (mem_overlaps_already_clobbered_arg_p): If val is CONST_INT_P, subtract resp. add crtl-args.pretend_args_size to it. * gcc.c-torture/execute/pr52129.c: New test. --- gcc/calls.c.jj 2012-02-01 14:44:27.0 +0100 +++ gcc/calls.c 2012-02-06 10:19:12.112132905 +0100 @@ -1808,6 +1808,11 @@ mem_overlaps_already_clobbered_arg_p (rt return true; else i = INTVAL (val); +#ifdef STACK_GROWS_DOWNWARD + i -= crtl-args.pretend_args_size; +#else + i += crtl-args.pretend_args_size; +#endif #ifdef ARGS_GROW_DOWNWARD i = -i - size; --- gcc/testsuite/gcc.c-torture/execute/pr52129.c.jj 2012-02-06 10:27:50.988876791 +0100 +++ gcc/testsuite/gcc.c-torture/execute/pr52129.c 2012-02-06 10:25:26.0 +0100 @@ -0,0 +1,28 @@ +/* PR target/52129 */ + +extern void abort (void); +struct S { void *p; unsigned int q; }; +struct T { char a[64]; char b[64]; } t; + +__attribute__((noinline, noclone)) int +foo (void *x, struct S s, void *y, void *z) +{ + if (x != t.a[2] || s.p != t.b[5] || s.q != 27 || y != t.a[17] || z != t.b[17]) + abort (); + return 29; +} + +__attribute__((noinline, noclone)) int +bar (void *x, void *y, void *z, struct S s, int t, struct T *u) +{ + return foo (x, s, u-a[t], u-b[t]); +} + +int +main () +{ + struct S s = { t.b[5], 27 }; + if (bar (t.a[2], (void *) 0, (void *) 0, s, 17, t) != 29) + abort (); + return 0; +} Jakub
Re: PATCH [google/gcc-4_6-branch]: Include cstddef in config/locale/generic/c_locale.h
Committed to both google/gcc-4_6-google and google/gcc-4_6-mobile (mobile release branch). Diego, I just realize we need this patch for google/gcc-main, since it is a local patch. OK? Thanks, Jing On Thu, Dec 15, 2011 at 4:42 AM, Diego Novillo dnovi...@google.com wrote: On 11-12-14 13:43 , Jing Yu wrote: Index: config/locale/generic/c_locale.cc === --- config/locale/generic/c_locale.cc (revision 182019) +++ config/locale/generic/c_locale.cc (working copy) @@ -52,8 +52,8 @@ { // Assumes __s formatted for C locale. char* __old = setlocale(LC_ALL, 0); - char* __sav = NULL; - if (__old != NULL) + char* __sav = 0; + if (__old != 0) Just 'if (__old)', as Paolo suggested. Similarly in all the other uses. OK with that change. Diego.
Re: PATCH [google/gcc-4_6-branch]: Include cstddef in config/locale/generic/c_locale.h
The patch r172595 was intended for bionic setlocale() which always returns 0. I don't remember I put NULL there initially. We can simply replace all NULL in r172595 with 0. I attached the updated patch. If it is ok, I will commit the patch into google/gcc-4_6 and google/gcc-4_6-mobile branches. 2011-12-14 H.J. Lu hongjiu...@intel.com Jing Yu jin...@google.com * config/locale/generic/c_locale.h (__convert_from_v): Replace NULL with 0. * config/locale/generic/c_locale.cc (__convert_to_v): Likewise * config/locale/generic/time_members.cc (_M_put): Likewise Thanks, Jing On Wed, Dec 14, 2011 at 10:12 AM, Diego Novillo dnovi...@google.com wrote: On 11-12-14 13:09 , Paolo Carlini wrote: Hi, Hi, Revision 172595: http://gcc.gnu.org/viewcvs?view=revisionrevision=172595 added NULL to config/locale/generic/c_locale.h on google/gcc-4_6-branch. Butcstddef isn't included, which lead to build failure since NULL isn't defined. This patch includescstddef. OK for google/gcc-4_6-branch? If you are interested in my personal opinion, I have of course nothing to do with this branch, I think this code should not simply use NULL. After all, its C++, right? ;) Seems reasonable. Jing, 172595 was a patch from you. Would it be the same if you just used 0 instead of NULL? Diego. patchnull.diff Description: Binary data
[google]Backport r171347 and r181549 from trunk (strict volatile bitfield) (issue5449092)
Hi Ahmad, This is a backport for two upstream patches into our 4.6-mobile branch. These two patches have been backported to google-4.6 by Doug Kwan last week. 2011-12-05 Jing Yu jin...@google.com Backport r171347 and r181549 from trunk. gcc/ 2011-03-23 Julian Brown jul...@codesourcery.com * expr.c (expand_expr_real_1): Only use BLKmode for volatile accesses which are not naturally aligned. 2011-11-20 Joey Ye joey...@arm.com * expr.c (expand_expr_real_1): Correctly handle strict volatile bitfield loads smaller than mode size. gcc/testsuite/ 2011-11-20 Joey Ye joey...@arm.com * gcc.dg/volatile-bitfields-1.c: New. 2011-12-05 Jing Yu jin...@google.com * gcc/expr.c: * gcc/testsuite/gcc.dg/volatile-bitfields-1.c (void check): (int main): Index: gcc/expr.c === --- gcc/expr.c (revision 182019) +++ gcc/expr.c (working copy) @@ -9192,8 +9192,16 @@ modifier != EXPAND_CONST_ADDRESS modifier != EXPAND_INITIALIZER) /* If the field is volatile, we always want an aligned - access. */ - || (volatilep flag_strict_volatile_bitfields 0) + access. Do this in following two situations: + 1. the access is not already naturally + aligned, otherwise normal (non-bitfield) volatile fields + become non-addressable. + 2. the bitsize is narrower than the access size. Need + to extract bitfields from the access. */ + || (volatilep flag_strict_volatile_bitfields 0 +(bitpos % GET_MODE_ALIGNMENT (mode) != 0 + || (mode1 != BLKmode +bitsize GET_MODE_SIZE (mode1) * BITS_PER_UNIT))) /* If the field isn't aligned enough to fetch as a memref, fetch it as a bit field. */ || (mode1 != BLKmode Index: gcc/testsuite/gcc.dg/volatile-bitfields-1.c === --- gcc/testsuite/gcc.dg/volatile-bitfields-1.c (revision 0) +++ gcc/testsuite/gcc.dg/volatile-bitfields-1.c (revision 0) @@ -0,0 +1,23 @@ +/* { dg-options -fstrict-volatile-bitfields } */ +/* { dg-do run } */ + +extern int puts(const char *); +extern void abort(void) __attribute__((noreturn)); + +typedef struct { + volatile unsigned short a:8, b:8; +} BitStruct; + +BitStruct bits = {1, 2}; + +void check(int i, int j) +{ + if (i != 1 || j != 2) puts(FAIL), abort(); +} + +int main () +{ + check(bits.a, bits.b); + + return 0; +} -- This patch is available for review at http://codereview.appspot.com/5449092
[google] Backport r171347 and r181549 from trunk (strict volatile bitfield) (issue5453050)
Hi Ahmad, This is a backport for two upstream patches into our 4.6-mobile branch. These two patches have been backported to google-4.6 by Doug Kwan last week. 2011-12-05 Jing Yu jin...@google.com Backport r171347 and r181549 from trunk. gcc/ 2011-03-23 Julian Brown jul...@codesourcery.com * expr.c (expand_expr_real_1): Only use BLKmode for volatile accesses which are not naturally aligned. 2011-11-20 Joey Ye joey...@arm.com * expr.c (expand_expr_real_1): Correctly handle strict volatile bitfield loads smaller than mode size. gcc/testsuite/ 2011-11-20 Joey Ye joey...@arm.com * gcc.dg/volatile-bitfields-1.c: New. Index: gcc/expr.c === --- gcc/expr.c (revision 182019) +++ gcc/expr.c (working copy) @@ -9192,8 +9192,16 @@ modifier != EXPAND_CONST_ADDRESS modifier != EXPAND_INITIALIZER) /* If the field is volatile, we always want an aligned - access. */ - || (volatilep flag_strict_volatile_bitfields 0) + access. Do this in following two situations: + 1. the access is not already naturally + aligned, otherwise normal (non-bitfield) volatile fields + become non-addressable. + 2. the bitsize is narrower than the access size. Need + to extract bitfields from the access. */ + || (volatilep flag_strict_volatile_bitfields 0 +(bitpos % GET_MODE_ALIGNMENT (mode) != 0 + || (mode1 != BLKmode +bitsize GET_MODE_SIZE (mode1) * BITS_PER_UNIT))) /* If the field isn't aligned enough to fetch as a memref, fetch it as a bit field. */ || (mode1 != BLKmode Index: gcc/testsuite/gcc.dg/volatile-bitfields-1.c === --- gcc/testsuite/gcc.dg/volatile-bitfields-1.c (revision 0) +++ gcc/testsuite/gcc.dg/volatile-bitfields-1.c (revision 0) @@ -0,0 +1,23 @@ +/* { dg-options -fstrict-volatile-bitfields } */ +/* { dg-do run } */ + +extern int puts(const char *); +extern void abort(void) __attribute__((noreturn)); + +typedef struct { + volatile unsigned short a:8, b:8; +} BitStruct; + +BitStruct bits = {1, 2}; + +void check(int i, int j) +{ + if (i != 1 || j != 2) puts(FAIL), abort(); +} + +int main () +{ + check(bits.a, bits.b); + + return 0; +} -- This patch is available for review at http://codereview.appspot.com/5453050
Ping:Re: Skip building target libiberty for arm*-*-linux-androideabi
Ping. http://gcc.gnu.org/ml/gcc-patches/2011-05/msg02208.html On Tue, May 31, 2011 at 11:32 AM, Jing Yu jin...@google.com wrote: Based on discussion on another thread (http://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg06627.html), what Joseph recommended was ripping out all support for building libiberty for the target side as it is not needed. Thus I doubt skipping target-libiberty for all targets is acceptable. I don't have the bandwidth to work on the ideal patch. Thus I am wondering if we can skip target-libiberty for androideabi target before the ideal patch is out. Thanks, Jing On Sun, May 29, 2011 at 9:23 PM, Ye Joey joey.ye...@gmail.com wrote: On Sat, May 28, 2011 at 5:42 AM, Jing Yu jin...@google.com wrote: Building gcc-4.6 arm android toolchain fails because of an incompatible function definition between libiberty and bionic. Thanking Joseph, I have learned that there's no such thing as a target libiberty and we should rip all the target-libiberty rules out. I don't know if someone is working on it. Before that patch comes out, can we add arm*-*-linux-androideabi to the list of targets where target-libiberty is skipped? How about skip libiberty for all targets then? - Joey
Re: Ping:Re: Skip building target libiberty for arm*-*-linux-androideabi
ARM maintainers, Is it ok to skip building target-libiberty for arm*-*-linux-androideabi target? http://gcc.gnu.org/ml/gcc-patches/2011-05/msg02208.html Thanks, Jing On Fri, Jun 3, 2011 at 11:26 AM, DJ Delorie d...@redhat.com wrote: Ping. http://gcc.gnu.org/ml/gcc-patches/2011-05/msg02208.html I don't have the bandwidth to work on the ideal patch. Thus I am wondering if we can skip target-libiberty for androideabi target before the ideal patch is out. Target-specific changes in the build are up to the target maintainers.
Re: approved but not committed? - [PATCH, ARM] Testcases incorrectly run in Thumb/Xscale
On Wed, Jun 1, 2011 at 1:51 AM, Richard Earnshaw rearn...@arm.com wrote: On Tue, 2011-05-31 at 12:49 -0700, Jing Yu wrote: Since this patch has been properly approved, if there is no objection in 24 hours, I will commit this patch to trunk. Once a patch has been approved by an appropriate maintainer, anybody with an account for gcc can commit the patch. I see. I will commit this patch then. Thanks! Jing R. Thanks, Jing On Fri, May 27, 2011 at 3:55 PM, Jing Yu jin...@google.com wrote: Hi Sofiane, I find your following patch has been approved by Richard in Oct last year, but it is not trunk. Is there any problem with it? http://gcc.gnu.org/ml/gcc-patches/2010-10/msg00266.html If you don't mind, I can help to commit the patch. Thanks, Jing
Re: Skip building target libiberty for arm*-*-linux-androideabi
Based on discussion on another thread (http://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg06627.html), what Joseph recommended was ripping out all support for building libiberty for the target side as it is not needed. Thus I doubt skipping target-libiberty for all targets is acceptable. I don't have the bandwidth to work on the ideal patch. Thus I am wondering if we can skip target-libiberty for androideabi target before the ideal patch is out. Thanks, Jing On Sun, May 29, 2011 at 9:23 PM, Ye Joey joey.ye...@gmail.com wrote: On Sat, May 28, 2011 at 5:42 AM, Jing Yu jin...@google.com wrote: Building gcc-4.6 arm android toolchain fails because of an incompatible function definition between libiberty and bionic. Thanking Joseph, I have learned that there's no such thing as a target libiberty and we should rip all the target-libiberty rules out. I don't know if someone is working on it. Before that patch comes out, can we add arm*-*-linux-androideabi to the list of targets where target-libiberty is skipped? How about skip libiberty for all targets then? - Joey
Re: approved but not committed? - [PATCH, ARM] Testcases incorrectly run in Thumb/Xscale
Since this patch has been properly approved, if there is no objection in 24 hours, I will commit this patch to trunk. Thanks, Jing On Fri, May 27, 2011 at 3:55 PM, Jing Yu jin...@google.com wrote: Hi Sofiane, I find your following patch has been approved by Richard in Oct last year, but it is not trunk. Is there any problem with it? http://gcc.gnu.org/ml/gcc-patches/2010-10/msg00266.html If you don't mind, I can help to commit the patch. Thanks, Jing
[google]Skip target-libiberty for arm*-*-linux-androideabi (issue4564050)
Building gcc-4.6 arm android toolchain fails because of conflicting getpagesize() definition between libiberty and bionic. Based on discussions on another thread (http://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg06627.html), reviewer recommended ripping out all support for building libiberty for the target side as it is not needed. However, I don't know if someone is working on that. Before the ideal patch is out, we have to clear the blocking issue and make the toolchain built. The following patch simply skips building target-libiberty for arm*-*-linux-androideabi target. I have tested the patch by building arm-linux-androideabi toolchain. I sent the similar patch to trunk for review. The patch to trunk is slightly different because this part of configure.ac has been modified. The logic is the same though. http://gcc.gnu.org/ml/gcc-patches/2011-05/msg02457.html The review is on going. I am not sure how long it would be. I would suggest we first commit this tiny patch in google/main and make our toolchain built. Then do further update if the trunk version is final. Thanks, Jing 2011-05-31 Jing Yu jin...@google.com * configure.ac: Skip target-libiberty for arm*-*-linux-androideabi * configure: Regenerate Index: configure.ac === --- configure.ac(revision 174299) +++ configure.ac(working copy) @@ -682,6 +682,9 @@ noconfigdirs=$noconfigdirs target-libffi target-qthreads libgloss_dir=arm ;; + arm*-*-linux-androideabi) +noconfigdirs=$noconfigdirs target-libiberty +;; arm*-*-linux-gnueabi) noconfigdirs=$noconfigdirs target-qthreads case ${with_newlib} in Index: configure === --- configure (revision 174299) +++ configure (working copy) @@ -3236,6 +3236,9 @@ noconfigdirs=$noconfigdirs target-libffi target-qthreads libgloss_dir=arm ;; + arm*-*-linux-androideabi) +noconfigdirs=$noconfigdirs target-libiberty +;; arm*-*-linux-gnueabi) noconfigdirs=$noconfigdirs target-qthreads case ${with_newlib} in -- This patch is available for review at http://codereview.appspot.com/4564050
Skip building target libiberty for arm*-*-linux-androideabi
Building gcc-4.6 arm android toolchain fails because of an incompatible function definition between libiberty and bionic. Thanking Joseph, I have learned that there's no such thing as a target libiberty and we should rip all the target-libiberty rules out. I don't know if someone is working on it. Before that patch comes out, can we add arm*-*-linux-androideabi to the list of targets where target-libiberty is skipped? Thanks, Jing 2011-05-08 Jing Yu jin...@google.com * configure.ac: Skip target-libiberty for arm*-*-linux-androideabi. * configure: Regenerated. Index: configure.ac === --- configure.ac(revision 174364) +++ configure.ac(working copy) @@ -515,7 +515,7 @@ case ${target} in sh*-*-pe|mips*-*-pe|*arm-wince-pe) noconfigdirs=$noconfigdirs target-libiberty ;; - arm*-*-symbianelf*) + arm*-*-symbianelf*|arm*-*-linux-androideabi) noconfigdirs=$noconfigdirs target-libiberty ;; avr-*-*) Index: configure === --- configure (revision 174364) +++ configure (working copy) @@ -3069,7 +3069,7 @@ case ${target} in sh*-*-pe|mips*-*-pe|*arm-wince-pe) noconfigdirs=$noconfigdirs target-libiberty ;; - arm*-*-symbianelf*) + arm*-*-symbianelf*|arm*-*-linux-androideabi) noconfigdirs=$noconfigdirs target-libiberty ;; avr-*-*)
approved but not committed? - [PATCH, ARM] Testcases incorrectly run in Thumb/Xscale
Hi Sofiane, I find your following patch has been approved by Richard in Oct last year, but it is not trunk. Is there any problem with it? http://gcc.gnu.org/ml/gcc-patches/2010-10/msg00266.html If you don't mind, I can help to commit the patch. Thanks, Jing
Re: [google] Disable getpagesize() for Android toolchain (issue4515131)
I have tested the following patch to skip building target libiberty for arm*-*-linux-androideabi. It works as intended when building Android arm-linux-androideabi toolchain. Doug, do we want to skip building libiberty for non arm android toolchain, say *-linux-android*? Joseph, do you think if similar patch is possible for trunk? I will send a separate email for review if this approach is the right way to go. Thanks, Jing Index: configure.ac === --- configure.ac(revision 174299) +++ configure.ac(working copy) @@ -515,7 +515,7 @@ sh*-*-pe|mips*-*-pe|*arm-wince-pe) noconfigdirs=$noconfigdirs target-libiberty ;; - arm*-*-symbianelf*) + arm*-*-symbianelf*|arm*-*-linux-androideabi) noconfigdirs=$noconfigdirs target-libiberty ;; avr-*-*) Index: configure === --- configure (revision 174299) +++ configure (working copy) @@ -3069,7 +3069,7 @@ sh*-*-pe|mips*-*-pe|*arm-wince-pe) noconfigdirs=$noconfigdirs target-libiberty ;; - arm*-*-symbianelf*) + arm*-*-symbianelf*|arm*-*-linux-androideabi) noconfigdirs=$noconfigdirs target-libiberty ;; avr-*-*) On Thu, May 26, 2011 at 5:00 AM, Joseph S. Myers jos...@codesourcery.com wrote: On Wed, 25 May 2011, Jing Yu wrote: I am wondering how to disable build of libiberty for target? I Tear out all the target-libiberty code unconditionally? See http://gcc.gnu.org/ml/gcc-patches/2011-05/msg01308.html and references therein; building target libiberty at all is a bug in my view. In some environment we still need to build libstdc++ libraries, where libiberty has to be built for target. Can we use #ifndef __ANDROID__ to wrap around the getpagesize() definition? It is working for us. See what I said in http://gcc.gnu.org/ml/gcc-patches/2011-05/msg01311.html. libstdc++-v3 does not use target libiberty; it uses one source file from the libiberty directory. -- Joseph S. Myers jos...@codesourcery.com
Re: [google] Disable getpagesize() for Android toolchain (issue4515131)
Hi Joseph, We notice that gcc starts to build libiberty for target as a multilib since gcc-4.6, even if we give --disable-stdc++-v3. Since then, we run into the incompatible getpagesize() error. I am wondering how to disable build of libiberty for target? I searched mailing list. One guy said --disable-libiberty controls the host libiberty, not the target one, another guy said the option controls both host and target builds. In some environment we still need to build libstdc++ libraries, where libiberty has to be built for target. Can we use #ifndef __ANDROID__ to wrap around the getpagesize() definition? It is working for us. Thanks, Jing On Tue, May 24, 2011 at 11:07 AM, Doug Kwan (關振德) dougk...@google.com wrote: Shouldn't we test ifndef __ANDROID__ instead? -Doug On Tue, May 24, 2011 at 2:39 AM, Guozhi Wei car...@google.com wrote: Hi This patch is for google/main. In order to be compatible with current bionic and sysroot, we need to disable getpagesize(). After getpagesize() in bionic is changed and ndk contains that change, we can reenable it. Jing can give more details about it. This patch has been tested on arm qemu without regression. thanks Carrot 2011-05-24 Jing Yu jin...@google.com * ChangeLog.google-main: New file. * getpagesize.c(getpagesize): Disable it for bionic. Index: ChangeLog.google-main === --- ChangeLog.google-main (revision 0) +++ ChangeLog.google-main (revision 0) @@ -0,0 +1,5 @@ +Copyright (C) 2011 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. Index: getpagesize.c === --- getpagesize.c (revision 174099) +++ getpagesize.c (working copy) @@ -60,11 +60,13 @@ BUGS # endif /* PAGESIZE */ #endif /* GNU_OUR_PAGESIZE */ +#if DEFAULT_LIBC != LIBC_BIONIC int getpagesize (void) { return (GNU_OUR_PAGESIZE); } +#endif #else /* VMS */ -- This patch is available for review at http://codereview.appspot.com/4515131
Re: [google] Disable getpagesize() for Android toolchain (issue4515131)
Actually I don't know why in gcc-4.6 libiberty is built for target when --disable-stdc++-v3 is given. Is libiberty used by other target libraries now? If not, we can skip libiberty for general Android toolchain. But, I still think it would be nice to make libiberty work, in case it is needed in some cases. Jing On Wed, May 25, 2011 at 5:25 PM, Doug Kwan (關振德) dougk...@google.com wrote: Jing Can't we just skip libiberty in top-level configure.ac? Look for the comment Disable target libiberty for some systems. -Doug On Wed, May 25, 2011 at 5:17 PM, Jing Yu jin...@google.com wrote: Hi Joseph, We notice that gcc starts to build libiberty for target as a multilib since gcc-4.6, even if we give --disable-stdc++-v3. Since then, we run into the incompatible getpagesize() error. I am wondering how to disable build of libiberty for target? I searched mailing list. One guy said --disable-libiberty controls the host libiberty, not the target one, another guy said the option controls both host and target builds. In some environment we still need to build libstdc++ libraries, where libiberty has to be built for target. Can we use #ifndef __ANDROID__ to wrap around the getpagesize() definition? It is working for us. Thanks, Jing On Tue, May 24, 2011 at 11:07 AM, Doug Kwan (關振德) dougk...@google.com wrote: Shouldn't we test ifndef __ANDROID__ instead? -Doug On Tue, May 24, 2011 at 2:39 AM, Guozhi Wei car...@google.com wrote: Hi This patch is for google/main. In order to be compatible with current bionic and sysroot, we need to disable getpagesize(). After getpagesize() in bionic is changed and ndk contains that change, we can reenable it. Jing can give more details about it. This patch has been tested on arm qemu without regression. thanks Carrot 2011-05-24 Jing Yu jin...@google.com * ChangeLog.google-main: New file. * getpagesize.c(getpagesize): Disable it for bionic. Index: ChangeLog.google-main === --- ChangeLog.google-main (revision 0) +++ ChangeLog.google-main (revision 0) @@ -0,0 +1,5 @@ +Copyright (C) 2011 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. Index: getpagesize.c === --- getpagesize.c (revision 174099) +++ getpagesize.c (working copy) @@ -60,11 +60,13 @@ BUGS # endif /* PAGESIZE */ #endif /* GNU_OUR_PAGESIZE */ +#if DEFAULT_LIBC != LIBC_BIONIC int getpagesize (void) { return (GNU_OUR_PAGESIZE); } +#endif #else /* VMS */ -- This patch is available for review at http://codereview.appspot.com/4515131
Re: [google] Handle NULL return values in setlocale calls (issue4444046)
Thanks Diego for committing this patch. Yes, I would like to submit the patch to trunk. The reason is for this patch is that setlocale() in bionicC always returns NULL (bionicC does not support setlocale()), however libstdc++ does not handle the NULL return value of setlocale(xxx,NULL) and thus causes segmentation fault. Thanks, Jing On Sat, Apr 16, 2011 at 1:20 PM, Diego Novillo dnovi...@google.com wrote: I'm committing this patch for Jing Yu on google/main. The patch handles NULL values returned from setlocale. Jing, could you please describe why this was needed? Is this a patch that you will want to submit for trunk? Tested on x86_64. Committed to google/main. Diego. 2011-04-15 Jing Yu jin...@google.com Google ref 46499. * config/locale/generic/c_locale.cc (__convert_to_v): Handle NULL return value from setlocale. * config/locale/generic/c_locale.h (__convert_from_v): Likewise. * config/locale/generic/time_members.cc (_M_put): Likewise. diff --git a/libstdc++-v3/config/locale/generic/c_locale.cc b/libstdc++-v3/config/locale/generic/c_locale.cc index fb9b425..7e34fcf 100644 --- a/libstdc++-v3/config/locale/generic/c_locale.cc +++ b/libstdc++-v3/config/locale/generic/c_locale.cc @@ -52,10 +52,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { // Assumes __s formatted for C locale. char* __old = setlocale(LC_ALL, 0); - const size_t __len = strlen(__old) + 1; - char* __sav = new char[__len]; - memcpy(__sav, __old, __len); - setlocale(LC_ALL, C); + char* __sav = NULL; + if (__old != NULL) + { + const size_t __len = strlen(__old) + 1; + __sav = new char[__len]; + memcpy(__sav, __old, __len); + setlocale(LC_ALL, C); + } char* __sanity; bool __overflow = false; @@ -117,10 +121,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { // Assumes __s formatted for C locale. char* __old = setlocale(LC_ALL, 0); - const size_t __len = strlen(__old) + 1; - char* __sav = new char[__len]; - memcpy(__sav, __old, __len); - setlocale(LC_ALL, C); + char* __sav = NULL; + if (__old != NULL) + { + const size_t __len = strlen(__old) + 1; + __sav = new char[__len]; + memcpy(__sav, __old, __len); + setlocale(LC_ALL, C); + } char* __sanity; #if !__DBL_HAS_INFINITY__ @@ -162,10 +170,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { // Assumes __s formatted for C locale. char* __old = setlocale(LC_ALL, 0); - const size_t __len = strlen(__old) + 1; - char* __sav = new char[__len]; - memcpy(__sav, __old, __len); - setlocale(LC_ALL, C); + char* __sav = NULL; + if (__old != NULL) + { + const size_t __len = strlen(__old) + 1; + __sav = new char[__len]; + memcpy(__sav, __old, __len); + setlocale(LC_ALL, C); + } #if !__LDBL_HAS_INFINITY__ errno = 0; diff --git a/libstdc++-v3/config/locale/generic/c_locale.h b/libstdc++-v3/config/locale/generic/c_locale.h index 2c76000..6e6f673 100644 --- a/libstdc++-v3/config/locale/generic/c_locale.h +++ b/libstdc++-v3/config/locale/generic/c_locale.h @@ -60,7 +60,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { char* __old = std::setlocale(LC_NUMERIC, 0); char* __sav = 0; - if (__builtin_strcmp(__old, C)) + if (__old != NULL __builtin_strcmp(__old, C)) { const size_t __len = __builtin_strlen(__old) + 1; __sav = new char[__len]; diff --git a/libstdc++-v3/config/locale/generic/time_members.cc b/libstdc++-v3/config/locale/generic/time_members.cc index 3031075..fb9eb6e 100644 --- a/libstdc++-v3/config/locale/generic/time_members.cc +++ b/libstdc++-v3/config/locale/generic/time_members.cc @@ -45,10 +45,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const tm* __tm) const throw() { char* __old = setlocale(LC_ALL, 0); - const size_t __llen = strlen(__old) + 1; - char* __sav = new char[__llen]; - memcpy(__sav, __old, __llen); - setlocale(LC_ALL, _M_name_timepunct); + char* __sav = NULL; + if (__old != NULL) + { + const size_t __llen = strlen(__old) + 1; + __sav = new char[__llen]; + memcpy(__sav, __old, __llen); + setlocale(LC_ALL, _M_name_timepunct); + } const size_t __len = strftime(__s, __maxlen, __format, __tm); setlocale(LC_ALL, __sav); delete [] __sav; @@ -130,10 +134,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const tm* __tm) const throw() { char* __old = setlocale(LC_ALL, 0); - const size_t __llen = strlen(__old) + 1; - char* __sav = new char[__llen]; - memcpy(__sav, __old, __llen); - setlocale(LC_ALL, _M_name_timepunct); + char* __sav = NULL; + if (__old != NULL