[roll] Roll fuchsia [build] Add script to verify ELF binaries in packages.

This CL adds a script to verify the ELF binaries inside a Fuchsia
package or system image. As such, it is called both from
fuchsia_package() and generate_manifest().

Its purpose is to verify that:

- Every executable binary has all its dependency libraries
  in the same package, either under lib/ or lib/<variant>/
  in the case of instrumented builds. This supports putting
  binaries built with distinct variants in the same package
  or system image.

- Each ELF binary is properly stripped (unless under /data/)

- For system images only, verify that each ELF binary has
  a corresponding debug file provded in the build system.
  This is currently disabled for fuchsia_package() because
  our Go-compiled binaries do not have debug information.
  This also happens with prebuilt driver binaries.

Note that for Fuchsia packages, this can be disabled by setting
'disable_elf_binaries_checks = true' when calling fuchsia_package()
or fuchsia_package_with_single_component(). This is necessary
for the android_starnix package for example, which embeds
non-Fuchsia binaries (some of them unstripped).

This mirrors most of the features of finalize_manifests.py, except
for its automatic stripping of ELF binaries, which is required
when using a custom clang or rust toolchain. A future CL will
address this specific point.

+ Fix the icd_strip test package to use the new
  fuchsia_test_package() template, and to always put the
  ICD library under lib/, even when it was built with
  a variant toolchain. This allows simplifying the test's
  logic to not depend on implementation details of our
  dynamic loader / build system.

+ Fix the src/media/lib/ffmpeg/BUILD.gn file to install
  the prebuilt libffmpeg.so to the right location when building
  with an instrumented variant. Before that, it was always
  installed as lib/libffmpeg.so, but the bin/mediaplayer
  program would try to find it from lib/asan/libffmpeg.so
  instead.

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/495961
Original-Revision: 3b0093820f624f973165a8c039554bfb4f626ea8
GitOrigin-RevId: 30013adf4d312e6b51bbded10cefead51ddf7021
Change-Id: I11a1ac0254676096284af633f96279082aab2add
1 file changed
tree: ed8c895d8daae91669c6c9cac10f2e1b5862ebd7
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. firmware
  8. flower
  9. jiri.lock
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
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.