1a52a4fe51
With -Os grub-mkimage does not create an elf with the correct entry point because some parts of the elf images are placed in .text.unlikely. The linker does not know where to place that and places it below .text, hence messing up the entry point. To avoid this use the compiler flag -fno-reorder-functions. Change-Id: Ic4a12f45d30b781870faa38575e8b2c10e0a42e8 Resolves: https://ticket.coreboot.org/issues/343 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/64235 Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Hackware <human@hackware.cl> Reviewed-by: Sean Rhodes <sean@starlabs.systems> Reviewed-by: Michael Niewöhner <foss@mniewoehner.de> Reviewed-by: Paul Menzel <paulepanter@mailbox.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
57 lines
1.8 KiB
Makefile
57 lines
1.8 KiB
Makefile
TAG-$(CONFIG_GRUB2_MASTER)=origin/HEAD
|
|
TAG-$(CONFIG_GRUB2_REVISION)=$(CONFIG_GRUB2_REVISION_ID)
|
|
TAG-$(CONFIG_GRUB2_STABLE)=grub-2.04
|
|
NAME-$(CONFIG_GRUB2_MASTER)=HEAD
|
|
NAME-$(CONFIG_GRUB2_REVISION)=$(CONFIG_GRUB2_REVISION_ID)
|
|
NAME-$(CONFIG_GRUB2_STABLE)=2.04
|
|
|
|
project_git_repo=https://git.savannah.gnu.org/git/grub.git/
|
|
project_dir=grub2
|
|
|
|
unexport HOSTCC CC LD OBJCOPY STRIP
|
|
MAKEOVERRIDES :=
|
|
|
|
all: grub2
|
|
|
|
checkout:
|
|
echo " GIT GRUB2 $(NAME-y)"
|
|
test -d $(project_dir) || git clone $(project_git_repo) $(project_dir)
|
|
git -C $(project_dir) fetch
|
|
ifeq ($(shell test -d $(project_dir) && \
|
|
(git -C $(project_dir) status --ignored=no --untracked-files=no --porcelain)),)
|
|
git -C $(project_dir) checkout -f $(TAG-y)
|
|
else
|
|
echo "WARNING: index/tree not clean, skipping update / force checkout."
|
|
echo " Checkout manually with "\
|
|
"\`git -C payloads/external/GRUB2/$(project_dir) checkout -f\`."
|
|
endif
|
|
|
|
grub2/build/config.h: $(CONFIG_DEP) | checkout
|
|
echo " CONFIG GRUB2 $(NAME-y)"
|
|
rm -rf grub2/build
|
|
mkdir grub2/build
|
|
cd grub2 && ./bootstrap ; ./autogen.sh
|
|
cd grub2/build && ../configure CC="$(HOSTCC)" LD="$(LD)" \
|
|
FREETYPE="pkg-config freetype2" BUILD_FREETYPE="pkg-config freetype2" \
|
|
TARGET_CC="$(CC)" TARGET_OBJCOPY="$(OBJCOPY)" TARGET_STRIP="$(STRIP)" \
|
|
CFLAGS=-O2 TARGET_CFLAGS="-Os -fno-reorder-functions" \
|
|
--with-platform=coreboot --enable-boot-time --disable-werror
|
|
|
|
config: grub2/build/config.h checkout
|
|
|
|
grub2: config
|
|
echo " MAKE GRUB2 $(NAME-y)"
|
|
$(MAKE) -C grub2/build
|
|
$(MAKE) -C grub2/build default_payload.elf \
|
|
EXTRA_PAYLOAD_MODULES="$(CONFIG_GRUB2_EXTRA_MODULES)"
|
|
|
|
clean:
|
|
test -f grub2/build/Makefile && $(MAKE) -C grub2/build clean || exit 0
|
|
|
|
distclean:
|
|
rm -rf grub2
|
|
|
|
print-repo-info:
|
|
echo "$(project_git_repo) $(project_dir)"
|
|
|
|
.PHONY: checkout config grub2 clean distclean print-repo-info
|