summaryrefslogtreecommitdiff
path: root/cgpt
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2019-08-14 16:40:01 -0700
committerchrome-bot <chrome-bot@chromium.org>2019-08-16 17:39:55 -0700
commit83b4473899bf00a0b5a241b96ebf9de913fd50e4 (patch)
tree9c4829dbbbe85fed26ad9373330bef0fe69a0a6d /cgpt
parenteb10ebf76d78a7ac7cb6b66c6f1bba747d4e10ca (diff)
downloadvboot-83b4473899bf00a0b5a241b96ebf9de913fd50e4.tar.gz
Makefile: Enable linker garbage collection
This patch enables -ffunction-sections, -fdata-sections and -Wl,--gc-sections for host builds. These flags already get passed by firmware builds anyway, so having host builds match that behavior should be a good idea in general. They may also occasionally help save a bit of code size (though not much since vboot is a library, but I still get about half a KB out of futility), and they will prevent clang from omitting relocations for function calls inside the same file, which means we don't have to splatter test_mockable all over our codebase anymore. (We still need it for vb2_get_gbb() since that is so small that both GCC and clang want to inline it, even if they are outputting a discrete copy anyway.) (Also add a comment about why GenerateGuid() has nothing do to with this even though it is also a weak function, and why it is like that.) BRANCH=None BUG=chromium:991812 TEST=make runtests with both GCC and clang Change-Id: Iede9d29e20b99b75a0c86bc7ecb907d2a0e5e3a1 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1754969 Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
Diffstat (limited to 'cgpt')
-rw-r--r--cgpt/cgpt_common.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/cgpt/cgpt_common.c b/cgpt/cgpt_common.c
index db180bef..e98a4533 100644
--- a/cgpt/cgpt_common.c
+++ b/cgpt/cgpt_common.c
@@ -1086,7 +1086,15 @@ void PMBRToStr(struct pmbr *pmbr, char *str, unsigned int buflen) {
}
}
-/* Optional */
+/*
+ * This is here because some CGPT functionality is provided in libvboot_host.a
+ * for other host utilities. GenerateGuid() is implemented (in cgpt.c which is
+ * *not* linked into libvboot_host.a) by calling into libuuid. We don't want to
+ * mandate libuuid as a dependency for every utilitity that wants to link
+ * libvboot_host.a, since they usually don't use the functionality that needs
+ * to generate new UUIDs anyway (just other functionality implemented in the
+ * same files).
+ */
#ifndef HAVE_MACOS
__attribute__((weak)) int GenerateGuid(Guid *newguid) { return CGPT_FAILED; };
#endif