Add pw_bloat module
This change adds a size reporting module named pw_bloat. The module
uses Bloaty McBloatface to generate size report cards for binaries. It
provides a GN template which defines an action to perform a size diff
on a group of binary targets.
Example output:
simple_bloat
────────────
┌────────────────┬──────────────┬────────┬───────┬───────┐
│ Label │ Segment │ Before │ Delta │ After │
├════════════════┼══════════════┼════════┼═══════┼═══════┤
│ Add a loop │ EXAMPLE CODE │ 429 │ +32 │ 461 │
│ │ EXAMPLE RAM │ 576 │ +8 │ 584 │
├────────────────┼──────────────┼────────┼───────┼───────┤
│ Add a function │ EXAMPLE CODE │ 429 │ +16 │ 445 │
│ │ EXAMPLE RAM │ 576 │ +8 │ 584 │
└────────────────┴──────────────┴────────┴───────┴───────┘
Change-Id: I14b3d383ec450bc6d017bf5d0111e266b0a3c368
diff --git a/targets/host/linux.bloaty b/targets/host/linux.bloaty
new file mode 100644
index 0000000..ff9dd2e
--- /dev/null
+++ b/targets/host/linux.bloaty
@@ -0,0 +1,27 @@
+# Copyright 2019 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+custom_data_source: {
+ name: "segment_names"
+ base_data_source: "segments"
+
+ rewrite: {
+ pattern: "LOAD #3"
+ replacement: "CODE"
+ }
+ rewrite: {
+ pattern: "LOAD #5"
+ replacement: "RAM"
+ }
+}
diff --git a/targets/host/linux.gni b/targets/host/linux.gni
index 79b1002..180f883 100644
--- a/targets/host/linux.gni
+++ b/targets/host/linux.gni
@@ -18,3 +18,6 @@
# Specifies the toolchain to use for this build.
pw_target_toolchain = "$dir_pw_toolchain:host_gcc_og"
}
+
+pw_executable_config.bloaty_config_file =
+ get_path_info("linux.bloaty", "abspath")