[roll] Roll fuchsia [starnix] Simplify `set_brk()` implementation

Simplify the `set_brk()` implementation backing the `brk()` syscall
to rely on `map_anonymous()`, rather than attempting to grow/shrink
a dedicated backing VMO.

In the `alternate_anon_allocs` configuration this provides
automatic coalescing of newly-mapped BRK pages into the BRK mapping
and in the default configuration `try_remap_in_place()` is used to
extend an existing `Heap` mapping, rather than mapping a new
anonymous VMO.

The program break region is reserved via a placeholder VMO mapping
into the Zircon address-space, when `brk()` is first called. This
is overwritten with read/writable mapped anonymous pages as the
BRK is grown, and re-mapped into place if the BRK is shrunk.

The BRK is also fixed to treat the current program break as the
first byte after the break, rather than as the final byte of the
break. This is required in order for BRK pages to be correctly
zeroed when the BRK is shrunk and regrown.

Original-Bug: 334365844, 333435783, 333450691
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1035852
Original-Revision: 454fb0539a72042bcbf8458c1fb6465f5b4fdc9a
GitOrigin-RevId: c3a4768a4b9cc28ee2c5ee6e138e035022f8c7ef
Change-Id: I40d0cc3e663cad6d441d969874f14fed4176cc07
1 file changed
tree: 8d18060ffb4001105d4c05d590118bf8f107b8bc
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cts
  6. firmware
  7. flower
  8. jiri.lock
  9. MILESTONE
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
  15. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.