<feed xmlns='http://www.w3.org/2005/Atom'>
<title>toolchain_gcc, branch master</title>
<subtitle>toolchain/gcc
</subtitle>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/toolchain_gcc/'/>
<entry>
<title>Merge remote-tracking branch 'aosp/master' into replicant-6.0</title>
<updated>2018-08-27T18:09:09+00:00</updated>
<author>
<name>Joonas Kylmälä</name>
<email>joonas.kylmala@iki.fi</email>
</author>
<published>2018-08-27T18:09:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/toolchain_gcc/commit/?id=989f332ea4e1ac952625139fbd7c18e8a8b31c8a'/>
<id>989f332ea4e1ac952625139fbd7c18e8a8b31c8a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge "Add __emutls_unregister_key function"</title>
<updated>2018-07-11T19:23:37+00:00</updated>
<author>
<name>Treehugger Robot</name>
<email>treehugger-gerrit@google.com</email>
</author>
<published>2018-07-11T19:23:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/toolchain_gcc/commit/?id=a74813a825e49267faa0b2ba45e9cd4bd6ccf4f4'/>
<id>a74813a825e49267faa0b2ba45e9cd4bd6ccf4f4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>libgcc: work around old Bionic loader bug</title>
<updated>2018-06-28T21:03:10+00:00</updated>
<author>
<name>Ryan Prichard</name>
<email>rprichard@google.com</email>
</author>
<published>2018-06-28T00:21:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/toolchain_gcc/commit/?id=4089f56e6c7438eb98cb86c249cf0c01e22219c5'/>
<id>4089f56e6c7438eb98cb86c249cf0c01e22219c5</id>
<content type='text'>
dl_iterate_phdr returns a 0 load_base for a PIE executable when it should
return the address where the executable was loaded (e.g. the load base or
load bias). Recalculate the load base when it is zero. This recalculation
should work on any ELF file with a PT_PHDR segment -- it will calculate 0
for a non-PIE executable.

The load base is added to an ELF virtual address to produce a run-time
address. Recalculate it by subtracting the PT_PHDR's virtual address from
its run-time address.

Bug: https://github.com/android-ndk/ndk/issues/505
Test: manual
Test: run NDK tests (./checkbuild.py &amp;&amp; ./run_tests.py)
Change-Id: I7de46c07a8b04e794b59f07b4d554238cfd6d5d9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
dl_iterate_phdr returns a 0 load_base for a PIE executable when it should
return the address where the executable was loaded (e.g. the load base or
load bias). Recalculate the load base when it is zero. This recalculation
should work on any ELF file with a PT_PHDR segment -- it will calculate 0
for a non-PIE executable.

The load base is added to an ELF virtual address to produce a run-time
address. Recalculate it by subtracting the PT_PHDR's virtual address from
its run-time address.

Bug: https://github.com/android-ndk/ndk/issues/505
Test: manual
Test: run NDK tests (./checkbuild.py &amp;&amp; ./run_tests.py)
Change-Id: I7de46c07a8b04e794b59f07b4d554238cfd6d5d9
</pre>
</div>
</content>
</entry>
<entry>
<title>Add __emutls_unregister_key function</title>
<updated>2018-06-06T04:10:07+00:00</updated>
<author>
<name>Ryan Prichard</name>
<email>rprichard@google.com</email>
</author>
<published>2018-06-04T21:35:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/toolchain_gcc/commit/?id=89b2029895df0a3f3587eeba0a519091c3f7a1b5'/>
<id>89b2029895df0a3f3587eeba0a519091c3f7a1b5</id>
<content type='text'>
Replace the existing __attribute__((destructor)) function,
unregister_emutls_key, with a function that something else must call
explicitly. We don't want the pthread key deleted at program exit, because
it's unnecessary and because it may delete the key before other tls-using
cleanup code runs. Exposing __emutls_unregister_key allows limiting the
cleanup to dlclose (e.g. by calling it only from crtbegin_so.c).

Reset emutls_key_created so multiple calls to __emutls_unregister_key are
safe.

Bug: b/80453944
Test: manual
Change-Id: I82d13614ae8042d0501fd2ca64f0ef6189669905
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace the existing __attribute__((destructor)) function,
unregister_emutls_key, with a function that something else must call
explicitly. We don't want the pthread key deleted at program exit, because
it's unnecessary and because it may delete the key before other tls-using
cleanup code runs. Exposing __emutls_unregister_key allows limiting the
cleanup to dlclose (e.g. by calling it only from crtbegin_so.c).

Reset emutls_key_created so multiple calls to __emutls_unregister_key are
safe.

Bug: b/80453944
Test: manual
Change-Id: I82d13614ae8042d0501fd2ca64f0ef6189669905
</pre>
</div>
</content>
</entry>
<entry>
<title>Delay emutls deallocation for one round</title>
<updated>2018-05-22T06:03:29+00:00</updated>
<author>
<name>Ryan Prichard</name>
<email>rprichard@google.com</email>
</author>
<published>2018-05-09T22:37:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/toolchain_gcc/commit/?id=81788f3d99d2c5952fa9a6d673e8d6a53b76d511'/>
<id>81788f3d99d2c5952fa9a6d673e8d6a53b76d511</id>
<content type='text'>
With Android/Bionic, delay deallocation to round 2 of 4. It must run after
C++ thread_local destructors have been called, but before the final 2
rounds, because emutls calls free, and jemalloc then needs another 2
rounds to free its thread-specific data.

Bug: https://github.com/android-ndk/ndk/issues/687
Bug: b/78022094
Test: manual
Test: ./run_tests.py --rebuild --filter emutls-dealloc
Change-Id: I01bd634d97b7d22161b5cc8ca71b3cb94064a03e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With Android/Bionic, delay deallocation to round 2 of 4. It must run after
C++ thread_local destructors have been called, but before the final 2
rounds, because emutls calls free, and jemalloc then needs another 2
rounds to free its thread-specific data.

Bug: https://github.com/android-ndk/ndk/issues/687
Bug: b/78022094
Test: manual
Test: ./run_tests.py --rebuild --filter emutls-dealloc
Change-Id: I01bd634d97b7d22161b5cc8ca71b3cb94064a03e
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge "gcc: backport patch to support vrnd&lt;*&gt;_f64 aarch64 intrinsics."</title>
<updated>2018-04-26T21:06:26+00:00</updated>
<author>
<name>android-build-prod (mdb)</name>
<email>android-build-team-robot@google.com</email>
</author>
<published>2018-04-26T21:06:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/toolchain_gcc/commit/?id=ac6128e0a17a52f011797f33ac3e7d6273a9368d'/>
<id>ac6128e0a17a52f011797f33ac3e7d6273a9368d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>gcc: backport patch to support vrnd&lt;*&gt;_f64 aarch64 intrinsics.</title>
<updated>2018-04-25T05:15:37+00:00</updated>
<author>
<name>Yunlian Jiang</name>
<email>yunlian@google.com</email>
</author>
<published>2018-04-25T05:15:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/toolchain_gcc/commit/?id=71959ce8f47f676a26bb21da7117101d9d73867e'/>
<id>71959ce8f47f676a26bb21da7117101d9d73867e</id>
<content type='text'>
This backports upstream patch to add support of vrdn&lt;*&gt;_f64 intrinisics
for aarch64. This is needed because glibc 2.27 uses some of them.

Author: mshawcroft &lt;mshawcroft@138bc75d-0d04-0410-961f-82ee72b054a4&gt;
Date:   Tue Apr 22 08:39:48 2014 +0000

    [AArch64] vrnd&lt;*&gt;_f64 patch

    This patch adds vrnd&lt;*&gt;_f64 aarch64 intrinsics.  A testcase for those
    intrinsics is added.  Run a complete LE and BE regression run with no
    regressions.

BUG=chromium:834385
TEST=./setup_board --board kevin --nousepkg
     cross-aarch64-cros-linux-gnu-glibc builds for glibc 2.27

Change-Id: Iaf9508a433e35d3304e44ac4b6c93071ff6c5ec0
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This backports upstream patch to add support of vrdn&lt;*&gt;_f64 intrinisics
for aarch64. This is needed because glibc 2.27 uses some of them.

Author: mshawcroft &lt;mshawcroft@138bc75d-0d04-0410-961f-82ee72b054a4&gt;
Date:   Tue Apr 22 08:39:48 2014 +0000

    [AArch64] vrnd&lt;*&gt;_f64 patch

    This patch adds vrnd&lt;*&gt;_f64 aarch64 intrinsics.  A testcase for those
    intrinsics is added.  Run a complete LE and BE regression run with no
    regressions.

BUG=chromium:834385
TEST=./setup_board --board kevin --nousepkg
     cross-aarch64-cros-linux-gnu-glibc builds for glibc 2.27

Change-Id: Iaf9508a433e35d3304e44ac4b6c93071ff6c5ec0
</pre>
</div>
</content>
</entry>
<entry>
<title>gcc: backport an upstream patch to make it work with newer glibc.</title>
<updated>2018-04-24T21:30:04+00:00</updated>
<author>
<name>Yunlian Jiang</name>
<email>yunlian@chromium.org</email>
</author>
<published>2018-04-24T21:24:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/toolchain_gcc/commit/?id=5669c9914b411b5094532856815b2c4712be4d10'/>
<id>5669c9914b411b5094532856815b2c4712be4d10</id>
<content type='text'>
Newer glibc removes 'struct' tag from ucontext_t. Because of this, gcc
failed to bootstrap with newer glibc. This patch from upstream fixes
that.

BUG=chromium:834385
TEST=sudo emerge sys-devel/gcc passes with newer glibc installed.

commit 14c2f22a1877f6b60a2f7c2f83ffb032759456a6
Author: jsm28 &lt;jsm28@138bc75d-0d04-0410-961f-82ee72b054a4&gt;
Date:   Tue Jul 4 10:22:56 2017 +0000

    Use ucontext_t not struct ucontext in linux-unwind.h files.

    Current glibc no longer gives the ucontext_t type the tag struct
    ucontext, to conform with POSIX namespace rules.  This requires
    various linux-unwind.h files in libgcc, that were previously using
    struct ucontext, to be fixed to use ucontext_t instead.  This is
    similar to the removal of the struct siginfo tag from siginfo_t some
    years ago.

    This patch changes those files to use ucontext_t instead.  As the
    standard name that should be unconditionally safe, so this is not
    restricted to architectures supported by glibc, or conditioned on the
    glibc version.

    Tested compilation together with current glibc with glibc's
    build-many-glibcs.py.

Change-Id: I433dd983b8d18c538d96486f7362b953ece3bfb8
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Newer glibc removes 'struct' tag from ucontext_t. Because of this, gcc
failed to bootstrap with newer glibc. This patch from upstream fixes
that.

BUG=chromium:834385
TEST=sudo emerge sys-devel/gcc passes with newer glibc installed.

commit 14c2f22a1877f6b60a2f7c2f83ffb032759456a6
Author: jsm28 &lt;jsm28@138bc75d-0d04-0410-961f-82ee72b054a4&gt;
Date:   Tue Jul 4 10:22:56 2017 +0000

    Use ucontext_t not struct ucontext in linux-unwind.h files.

    Current glibc no longer gives the ucontext_t type the tag struct
    ucontext, to conform with POSIX namespace rules.  This requires
    various linux-unwind.h files in libgcc, that were previously using
    struct ucontext, to be fixed to use ucontext_t instead.  This is
    similar to the removal of the struct siginfo tag from siginfo_t some
    years ago.

    This patch changes those files to use ucontext_t instead.  As the
    standard name that should be unconditionally safe, so this is not
    restricted to architectures supported by glibc, or conditioned on the
    glibc version.

    Tested compilation together with current glibc with glibc's
    build-many-glibcs.py.

Change-Id: I433dd983b8d18c538d96486f7362b953ece3bfb8
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix gcc 4.8.3 makeinfo build failure</title>
<updated>2018-02-27T06:10:55+00:00</updated>
<author>
<name>Ryan Prichard</name>
<email>rprichard@google.com</email>
</author>
<published>2018-02-27T05:33:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/toolchain_gcc/commit/?id=e46354e85363dbd7ea85492f70af89273881709f'/>
<id>e46354e85363dbd7ea85492f70af89273881709f</id>
<content type='text'>
    /usr/local/google/home/rprichard/android/mingw/toolchain/gcc/gcc-4.8.3/gcc/doc/gcc.texi:88: warning: @tex should only appear at the beginning of a line
    /usr/local/google/home/rprichard/android/mingw/toolchain/gcc/gcc-4.8.3/gcc/doc/gcc.texi:208: no matching `@end tex'
    /usr/local/google/home/rprichard/android/mingw/toolchain/gcc/gcc-4.8.3/gcc/doc/gcc.texi:208: no matching `@end multitable'
    /usr/local/google/home/rprichard/android/mingw/toolchain/gcc/gcc-4.8.3/gcc/doc/gcc.texi:208: no matching `@end titlepage'
    Makefile:4353: recipe for target 'doc/gcc.info' failed

Even though it says "warning", the command exits unsuccessfully and fails
the build.

Adopt part of a patch from:

    https://gcc.gnu.org/ml/gcc-patches/2013-09/msg02100.html

This change is already in our gcc-4.9 directory.

For reference, here's the makeinfo version on my machine:

    $ makeinfo --version
    texi2any (GNU texinfo) 6.4.90

Test: ./toolchain/mingw/build.sh (in AOSP mingw branch)
Change-Id: Ib740c39d127ac8a127c929465fdf89477698a5e4
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
    /usr/local/google/home/rprichard/android/mingw/toolchain/gcc/gcc-4.8.3/gcc/doc/gcc.texi:88: warning: @tex should only appear at the beginning of a line
    /usr/local/google/home/rprichard/android/mingw/toolchain/gcc/gcc-4.8.3/gcc/doc/gcc.texi:208: no matching `@end tex'
    /usr/local/google/home/rprichard/android/mingw/toolchain/gcc/gcc-4.8.3/gcc/doc/gcc.texi:208: no matching `@end multitable'
    /usr/local/google/home/rprichard/android/mingw/toolchain/gcc/gcc-4.8.3/gcc/doc/gcc.texi:208: no matching `@end titlepage'
    Makefile:4353: recipe for target 'doc/gcc.info' failed

Even though it says "warning", the command exits unsuccessfully and fails
the build.

Adopt part of a patch from:

    https://gcc.gnu.org/ml/gcc-patches/2013-09/msg02100.html

This change is already in our gcc-4.9 directory.

For reference, here's the makeinfo version on my machine:

    $ makeinfo --version
    texi2any (GNU texinfo) 6.4.90

Test: ./toolchain/mingw/build.sh (in AOSP mingw branch)
Change-Id: Ib740c39d127ac8a127c929465fdf89477698a5e4
</pre>
</div>
</content>
</entry>
<entry>
<title>[GCC] Fix #endif problem in libgcc/emutls.c</title>
<updated>2018-02-05T16:43:33+00:00</updated>
<author>
<name>Caroline Tice</name>
<email>cmtice@google.com</email>
</author>
<published>2018-02-05T16:43:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/toolchain_gcc/commit/?id=2cdcfd30c27f0d836cc477f2ae9f456287fd6b1b'/>
<id>2cdcfd30c27f0d836cc477f2ae9f456287fd6b1b</id>
<content type='text'>
Currently in emutls.c 'emutls_key_created' is defined within part
of an ifdef, but is accessed outside the ifdef, which can cause
issues in builds where the ifdef is not taken.  This CL moves
the #endif to include the new function that accesses 'emutls_key_created'
so that all references to it are within the defining if-def.

Bug: b/72942688
Test: Fix tested in ChromeOS.
Change-Id: Ic1d6760d116b63abaef18f95e38de42af30952e4
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently in emutls.c 'emutls_key_created' is defined within part
of an ifdef, but is accessed outside the ifdef, which can cause
issues in builds where the ifdef is not taken.  This CL moves
the #endif to include the new function that accesses 'emutls_key_created'
so that all references to it are within the defining if-def.

Bug: b/72942688
Test: Fix tested in ChromeOS.
Change-Id: Ic1d6760d116b63abaef18f95e38de42af30952e4
</pre>
</div>
</content>
</entry>
</feed>
