diff options
author | Alex Deymo <deymo@chromium.org> | 2014-08-29 01:07:48 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-09-02 20:25:22 +0000 |
commit | e08ee28548934e933733babf0bc0c418142d095d (patch) | |
tree | b630ca1f2c498a0b53ffafad712a9efeb1939567 /futility | |
parent | b8ff397674fb98c1d7eea864e7fa571369675131 (diff) | |
download | vboot_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.h | 7 | ||||
-rw-r--r-- | futility/futility.lds | 15 |
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 */ - } -} |