binman: Add tests binaries with binman symbols

For testing we need to build some ELF files containing binman symbols. Add
these to the Makefile and check in the binaries:

   u_boot_binman_syms - normal, valid ELF file
   u_boot_binman_syms_bad - missing the __image_copy_start symbol
   u_boot_binman_syms_size - has a binman symbol with an invalid size

Signed-off-by: Simon Glass <sjg@chromium.org>
master
Simon Glass 7 years ago
parent 00ae40b3ae
commit 5cfcf7e0fd
  1. 18
      tools/binman/test/Makefile
  2. BIN
      tools/binman/test/u_boot_binman_syms
  3. 14
      tools/binman/test/u_boot_binman_syms.c
  4. 30
      tools/binman/test/u_boot_binman_syms.lds
  5. BIN
      tools/binman/test/u_boot_binman_syms_bad
  6. 1
      tools/binman/test/u_boot_binman_syms_bad.c
  7. 29
      tools/binman/test/u_boot_binman_syms_bad.lds
  8. BIN
      tools/binman/test/u_boot_binman_syms_size
  9. 12
      tools/binman/test/u_boot_binman_syms_size.c

@ -10,8 +10,12 @@
CFLAGS := -march=i386 -m32 -nostdlib -I ../../../include
LDS_UCODE := -T u_boot_ucode_ptr.lds
LDS_BINMAN := -T u_boot_binman_syms.lds
LDS_BINMAN_BAD := -T u_boot_binman_syms_bad.lds
TARGETS = u_boot_ucode_ptr u_boot_no_ucode_ptr bss_data
TARGETS = u_boot_ucode_ptr u_boot_no_ucode_ptr bss_data \
u_boot_binman_syms u_boot_binman_syms.bin u_boot_binman_syms_bad \
u_boot_binman_syms_size
all: $(TARGETS)
@ -24,6 +28,18 @@ u_boot_ucode_ptr: u_boot_ucode_ptr.c
bss_data: CFLAGS += bss_data.lds
bss_data: bss_data.c
u_boot_binman_syms.bin: u_boot_binman_syms
objcopy -O binary $< -R .note.gnu.build-id $@
u_boot_binman_syms: CFLAGS += $(LDS_BINMAN)
u_boot_binman_syms: u_boot_binman_syms.c
u_boot_binman_syms_bad: CFLAGS += $(LDS_BINMAN_BAD)
u_boot_binman_syms_bad: u_boot_binman_syms_bad.c
u_boot_binman_syms_size: CFLAGS += $(LDS_BINMAN)
u_boot_binman_syms_size: u_boot_binman_syms_size.c
clean:
rm -f $(TARGETS)

@ -0,0 +1,14 @@
/*
* Copyright (c) 2017 Google, Inc
*
* SPDX-License-Identifier: GPL-2.0+
*
* Simple program to create some binman symbols. This is used by binman tests.
*/
#define CONFIG_BINMAN
#include <binman_sym.h>
binman_sym_declare(unsigned long, u_boot_spl, pos);
binman_sym_declare(unsigned long long, u_boot_spl2, pos);
binman_sym_declare(unsigned long, u_boot_any, pos);

@ -0,0 +1,30 @@
/*
* Copyright (c) 2016 Google, Inc
*
* SPDX-License-Identifier: GPL-2.0+
*/
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
_start = .;
. = ALIGN(4);
.text :
{
__image_copy_start = .;
*(.text*)
}
. = ALIGN(4);
.binman_sym_table : {
__binman_sym_start = .;
KEEP(*(SORT(.binman_sym*)));
__binman_sym_end = .;
}
}

@ -0,0 +1,29 @@
/*
* Copyright (c) 2016 Google, Inc
*
* SPDX-License-Identifier: GPL-2.0+
*/
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
_start = .;
. = ALIGN(4);
.text :
{
*(.text*)
}
. = ALIGN(4);
.binman_sym_table : {
__binman_sym_start = .;
KEEP(*(SORT(.binman_sym*)));
__binman_sym_end = .;
}
}

@ -0,0 +1,12 @@
/*
* Copyright (c) 2017 Google, Inc
*
* SPDX-License-Identifier: GPL-2.0+
*
* Simple program to create some binman symbols. This is used by binman tests.
*/
#define CONFIG_BINMAN
#include <binman_sym.h>
binman_sym_declare(char, u_boot_spl, pos);
Loading…
Cancel
Save