coreboot-kgpe-d16/util/cbfstool
Raul E Rangel 41ba01bb95 util/cbfstool/rmodule: Omit undefined extern symbols from reloc table
When using `DECLARE_OPTIONAL_REGION`, it is assumed that
REGION_SIZE(name) == 0 if the region was not defined in the memlayout.
When using non-rmodule stages (i.e., bootblock, romstage, etc), this
assumption holds true, but breaks down in rmodule (i.e., ramstage)
stages.

The rmodule tool is not currently omitting undefined externals from the
relocation table. e.g.,

    extern u8 _##name##_size[];

This means that when the rmodule loader runs, it will rewrite the symbol
from 0 (which is the default the linker assumed) to 0 + offset. This is
wrong since the symbol doesn't actually exist. Instead we need to omit
the relocation so it continues to keep the default value of 0.

BUG=b:179699789
TEST=Print out REGION_SIZE(cbfs_cache) in ramstage and verify it is set
to 0.
I also see the following printed by the rmodtool now:

DEBUG: Omitting relocation for undefined extern: _watchdog_tombstone_size
DEBUG: Omitting relocation for undefined extern: _watchdog_tombstone
DEBUG: Omitting relocation for undefined extern: _watchdog_tombstone
DEBUG: Omitting relocation for absolute symbol: _stack_size
DEBUG: Omitting relocation for absolute symbol: _program_size
DEBUG: Omitting relocation for absolute symbol: _cbmem_init_hooks_size
DEBUG: Omitting relocation for absolute symbol: _payload_preload_cache_size
DEBUG: Omitting relocation for absolute symbol: _payload_preload_cache
DEBUG: Omitting relocation for absolute symbol: _payload_preload_cache_size
DEBUG: Omitting relocation for absolute symbol: _payload_preload_cache
DEBUG: Omitting relocation for undefined extern: _cbfs_cache
DEBUG: Omitting relocation for undefined extern: _cbfs_cache_size

As you can see the _watchdog_tombstone will also be fixed by this CL.

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Change-Id: Ib57e263fa9014da4f6854637000c1c8ad8eb351a
Reviewed-on: https://review.coreboot.org/c/coreboot/+/58376
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
2021-10-20 15:56:28 +00:00
..
bpdt_formats util/cse_serger: Replace cse_layout_regions with array of regions 2021-10-19 16:10:12 +00:00
console
flashmap
fpt_formats util/cse_fpt: Add a new tool for managing Intel CSE FPT binaries 2021-10-19 16:08:03 +00:00
lz4
lzma
.gitignore elogtool: add to gitignore 2021-08-09 15:02:36 +00:00
EXAMPLE
Makefile util/cse_serger: Add a new tool for stitching CSE components 2021-10-19 16:08:24 +00:00
Makefile.inc util/cse*: Add cse_helpers.{c,h} 2021-10-19 16:08:45 +00:00
ProcessorBind.h
amdcompress.c
cbfs-mkpayload.c util/cbfstool: Add support for ARM64 UefiPayload 2021-10-04 02:31:01 +00:00
cbfs-mkstage.c cbfstool/cbfs-mkstage.c: Change signature of parse_elf_to_xip_stage() 2021-07-01 15:22:08 +00:00
cbfs-payload-linux.c
cbfs.h cbfstool: Add support for platform "fixups" when modifying bootblock 2021-03-13 04:17:35 +00:00
cbfs_glue.h cbfstool: Support CONFIG_CBFS_VERIFICATION and metadata hash anchor 2021-03-13 04:16:20 +00:00
cbfs_image.c cbfs: Move stage header into a CBFS attribute 2021-03-17 08:10:00 +00:00
cbfs_image.h
cbfs_sections.c
cbfs_sections.h cbfstool: Support CONFIG_CBFS_VERIFICATION and metadata hash anchor 2021-03-13 04:16:20 +00:00
cbfscomptool.c
cbfstool.c util/cbfstool: Remove unused pagesize parameter 2021-07-17 13:45:45 +00:00
coff.h util/cbfstool: Add support for ARM64 UefiPayload 2021-10-04 02:31:01 +00:00
common.c cbfstool: Add helper function `buffer_from_file_aligned_size` 2021-10-18 21:15:41 +00:00
common.h cbfstool: Add helper function `buffer_from_file_aligned_size` 2021-10-18 21:15:41 +00:00
compress.c
cse_fpt.c util/cse*: Add cse_helpers.{c,h} 2021-10-19 16:08:45 +00:00
cse_fpt.h util/cse*: Add cse_helpers.{c,h} 2021-10-19 16:08:45 +00:00
cse_helpers.c util/cse*: Add cse_helpers.{c,h} 2021-10-19 16:08:45 +00:00
cse_helpers.h util/cse*: Add cse_helpers.{c,h} 2021-10-19 16:08:45 +00:00
cse_serger.c util/cse_serger: Add command `create-cse-region` 2021-10-19 16:32:24 +00:00
cse_serger.h util/cse_serger: Replace cse_layout_regions with array of regions 2021-10-19 16:10:12 +00:00
default-x86.fmd
default.fmd
description.md
elf.h cbfstool: Add support for platform "fixups" when modifying bootblock 2021-03-13 04:17:35 +00:00
elfheaders.c
elfparsing.h
elogtool.c elogtool: compile in 32-bit platforms 2021-09-21 01:02:56 +00:00
eventlog.c elogtool: Fix off-by-one error in month in timestamp 2021-09-24 18:08:43 +00:00
eventlog.h elogtool: add "clear" command 2021-09-10 22:53:05 +00:00
fdt.h
fit.c util/cbfstool/fit.c: Fix getting the topswap table 2021-05-27 14:38:34 +00:00
fit.h util/ifittool: Add an option to set the FIT pointer a CBFS file 2021-03-19 11:22:55 +00:00
flashmap_tests.c
fmap_from_fmd.c
fmap_from_fmd.h
fmaptool.c
fmd.c
fmd.h
fmd_parser.c_shipped
fmd_parser.h_shipped
fmd_parser.y
fmd_scanner.c_shipped treewide: Remove trailing whitespace 2021-02-17 17:30:05 +00:00
fmd_scanner.h_shipped treewide: Remove trailing whitespace 2021-02-17 17:30:05 +00:00
fmd_scanner.l
fv.h util/cbftool: Fix the bug in parsing Uefipayload with extended header 2021-09-02 06:07:08 +00:00
ifittool.c util/ifittool: Add an option to set the FIT pointer a CBFS file 2021-03-19 11:22:55 +00:00
ifwitool.c
linux.h
linux_trampoline.S cbfstool/linux_trampoline.S: Fix up the e820 table 2021-06-02 07:47:01 +00:00
linux_trampoline.c cbfstool/linux_trampoline.S: Fix up the e820 table 2021-06-02 07:47:01 +00:00
linux_trampoline.h util/cbfstool/linux_trampoline.h: Fix typo in comment 2021-06-04 12:35:14 +00:00
option.h
partitioned_file.c util/cbfstool: unbreak compilation on FreeBSD 2021-01-13 12:07:17 +00:00
partitioned_file.h
platform_fixups.c cbfstool: Add support for platform "fixups" when modifying bootblock 2021-03-13 04:17:35 +00:00
rmodtool.c
rmodule.c util/cbfstool/rmodule: Omit undefined extern symbols from reloc table 2021-10-20 15:56:28 +00:00
rmodule.h rmodtool: Make memlayout symbols absolute and do not relocate them 2021-02-18 02:32:06 +00:00
swab.h
xdr.c