aboutsummaryrefslogtreecommitdiff
path: root/futility
diff options
context:
space:
mode:
authorAlex Deymo <deymo@chromium.org>2014-08-29 01:07:48 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-09-02 20:25:22 +0000
commite08ee28548934e933733babf0bc0c418142d095d (patch)
treeb630ca1f2c498a0b53ffafad712a9efeb1939567 /futility
parentb8ff397674fb98c1d7eea864e7fa571369675131 (diff)
downloadvboot_reference-e08ee28548934e933733babf0bc0c418142d095d.tar.gz
Remove futility linker script.
The futility.lds linker script was used to generate a table with all the symbols in a specific section called .futil_cmds listed in order under the symbol "futil_cmds". This allows the source files to define a command and let the linker figure out the list of compiled commands. Nevertheless, passing this linker script makes the linker leave a gap of about 2MiB in the output ELF file. Instead of mess up with linker scripts just to generate a table of commands, this patch generates such table in the Makefile looking at the included sources and compiling that table. The result is a futility binary of about 88 KiB instead of the 2.1 MiB required originally. This patch also adds sys-boot/chromeos-u-boot to the list of ebuilds tested by emerge_test.sh. BUG=chromium:408926 BRANCH=None TEST=BOARD=link ./emerge_test.sh TEST=BOARD=daisy_spring ./emerge_test.sh TEST=`readelf -S futility` shows no gap. TEST=/usr/bin/futility shows no difference in the help output. Change-Id: I9c0febc76140b404d48aa13e7f948e8ea77a41b5 Reviewed-on: https://chromium-review.googlesource.com/215496 Tested-by: Alex Deymo <deymo@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org>
Diffstat (limited to 'futility')
-rw-r--r--futility/futility.h7
-rw-r--r--futility/futility.lds15
2 files changed, 2 insertions, 20 deletions
diff --git a/futility/futility.h b/futility/futility.h
index 32c553db..dfccf6f9 100644
--- a/futility/futility.h
+++ b/futility/futility.h
@@ -23,14 +23,11 @@ struct futil_cmd_t {
* to them without explictly declaring every function in a header somewhere.
*/
#define DECLARE_FUTIL_COMMAND(NAME, HANDLER, SHORTHELP) \
- static const struct futil_cmd_t __cmd_##NAME = { \
+ const struct futil_cmd_t __cmd_##NAME = { \
.name = #NAME, \
.handler = HANDLER, \
.shorthelp = SHORTHELP \
- }; \
- const struct futil_cmd_t * const __cmd_ptr_##NAME \
- __attribute__((section(".futil_cmds." #NAME))) \
- = &__cmd_##NAME
+ };
/* This is the list of pointers to all commands. */
extern const struct futil_cmd_t *const futil_cmds[];
diff --git a/futility/futility.lds b/futility/futility.lds
deleted file mode 100644
index 0650507f..00000000
--- a/futility/futility.lds
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-SECTIONS
-{
- .rodata : {
- . = ALIGN(32);
- futil_cmds = .; /* Create the list of commands */
- *(SORT(.futil_cmds.*));
- QUAD(0); /* Null-terminated */
- }
-}