# SPDX-License-Identifier: GPL-2.0+
# Copyright (c) 2016 Google, Inc
# Written by Simon Glass <sjg@chromium.org>
#
# Entry-type module for BSS padding for spl/u-boot-spl.bin. This padding
# can be added after the SPL binary to ensure that anything concatenated
# to it will appear to SPL to be at the end of BSS rather than the start.
#

import command
import elf
from entry import Entry
from blob import Entry_blob
import tools

class Entry_u_boot_spl_bss_pad(Entry_blob):
    def __init__(self, image, etype, node):
        Entry_blob.__init__(self, image, etype, node)

    def ObtainContents(self):
        fname = tools.GetInputFilename('spl/u-boot-spl')
        bss_size = elf.GetSymbolAddress(fname, '__bss_size')
        if not bss_size:
            self.Raise('Expected __bss_size symbol in spl/u-boot-spl')
        self.data = chr(0) * bss_size
        self.contents_size = bss_size
