[roll] Roll fuchsia [dl] Support RTLD_GLOBAL

This CL supports the RTLD_GLOBAL flag with dlopen(). The root
RuntimeModule and all its dependencies (either previously loaded or new
to the session) are marked as global when dlopen-ed with this flag.

This action may rearrange the "global load order" of modules: that is,
the order in which modules loaded with RTLD_GLOBAL are kept in the
dynamic linker's modules_ list.

This CL does not yet include global modules in symbol resolution, but
tests are introduced to test the following behavior in regards to how
global modules relate to load order:

- Promote previously loaded module and all its deps to become global.
- Promoting a previously loaded module to a global module can change the
  "global load order" of modules
- Calling dlopen(RTLD_GLOBAL) multiple times on a module will not change
  the "global load order".
- Calling dlopen(RTLD_GLOBAL) with previously loaded global modules will
  not change the "global load order".

A forthcoming CL will include global modules in symbol relocations and
tests will be enabled then.

Original-Bug: 338233824
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1124721
Original-Revision: ffaf6f0eed3d751c929575d337e1c4da5f8b313c
GitOrigin-RevId: 6611aec729e5487525a4f23e453be9f7f18024fe
Change-Id: I5a658f2bc29d202bc8bfe28bef217beec9a3c643
1 file changed
tree: 0831e417579bd85f347ea87f959a587254dce783
  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 in one of the communication channels documented at get involved.

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.