mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
lib{fdt,elf}: move lib{fdt,elf}-temp.o and their deps to $(targets)
At the moment, trying to run xencov read/reset (calling SYSCTL_coverage_op
under the hood) results in a crash. This is due to a profiler trying to
access data in the .init.* sections (libfdt for Arm and libelf for x86)
that are stripped after boot. Normally, the build system compiles any
*.init.o file without COV_FLAGS. However, these two libraries are
handled differently as sections will be renamed to init after linking.
To override COV_FLAGS to empty for these libraries, lib{fdt,elf}.o were
added to nocov-y. This worked until e321576f40 ("xen/build: start using
if_changed") that added lib{fdt,elf}-temp.o and their deps to extra-y.
This way, even though these objects appear as prerequisites of
lib{fdt,elf}.o and the settings should propagate to them, make can also
build them as a prerequisite of __build, in which case COV_FLAGS would
still have the unwanted flags. Fix it by switching to $(targets) instead.
Also, for libfdt, append libfdt.o to nocov-y only if CONFIG_OVERLAY_DTB
is not set. Otherwise, there is no section renaming and we should be able
to run the coverage.
Fixes: e321576f40 ("xen/build: start using if_changed")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
2cfdbd5863
commit
79519fcfa0
2 files changed
+3
-3
No files matched your search
@@ -13,4 +13,4 @@ $(obj)/libelf.o: $(obj)/libelf-temp.o FORCE
|
||||
$(obj)/libelf-temp.o: $(addprefix $(obj)/,$(libelf-objs)) FORCE
|
||||
$(call if_changed,ld)
|
||||
|
||||
extra-y += libelf-temp.o $(libelf-objs)
|
||||
targets += libelf-temp.o $(libelf-objs)
|
||||
@@ -5,10 +5,10 @@ SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
|
||||
# For CONFIG_OVERLAY_DTB, libfdt functionalities will be needed during runtime.
|
||||
ifneq ($(CONFIG_OVERLAY_DTB),y)
|
||||
OBJCOPYFLAGS := $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s))
|
||||
nocov-y += libfdt.o
|
||||
endif
|
||||
|
||||
obj-y += libfdt.o
|
||||
nocov-y += libfdt.o
|
||||
|
||||
CFLAGS-y += -I$(srctree)/include/xen/libfdt/
|
||||
|
||||
@@ -18,4 +18,4 @@ $(obj)/libfdt.o: $(obj)/libfdt-temp.o FORCE
|
||||
$(obj)/libfdt-temp.o: $(addprefix $(obj)/,$(LIBFDT_OBJS)) FORCE
|
||||
$(call if_changed,ld)
|
||||
|
||||
extra-y += libfdt-temp.o $(LIBFDT_OBJS)
|
||||
targets += libfdt-temp.o $(LIBFDT_OBJS)
|
||||