[PATCH v2] lib/meson.build: allow build IGT with link time optimization
Lucas De Marchi
lucas.demarchi at intel.com
Thu Jan 9 17:29:49 UTC 2025
On Thu, Jan 09, 2025 at 05:26:30PM +0100, Andrzej Hajda wrote:
>Some distributions use -flto gcc flag to build IGT. With this flag
>enabled variables declared with section attribute do not appear in
>correct section in .o files. Since iga64 assembly helper script relies
>on it we need to use -ffat-lto-objects in case of files containing
>iga64 assembly. According to documentation this option is effective
>only in case lto is in use, so it should not affect non-lto builds.
>
>Closes: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/165
>Signed-off-by: Andrzej Hajda <andrzej.hajda at intel.com>
is this about
static const char t[] __attribute__ ((section(".iga64_assembly"), used)) =\
?
it's missing a "retain" attribute to be able to link with LLD.
I fixed a similar bug in kmod recently, but that was due to linking with
LLD instead of using or not lto. See https://github.com/kmod-project/kmod/pull/274
Are you sure this is related to LTO and not the different linker?
$ grep -r -e '\.iga64_assembly' build-lto-clang/
grep: build-lto-clang/lib/libigt-gpgpu_shader_c.a.p/gpgpu_shader.c.o: binary file matches
grep: build-lto-clang/lib/libigt.so.0: binary file matches
grep: build-lto-clang/lib/libigt-gpgpu_fill_c.a.p/gpgpu_fill.c.o: binary file matches
$ readelf -t build-lto-clang/lib/libigt.so.0 | grep -A3 -e .iga64_assembly
[10] .iga64_assembly
PROGBITS 00000000000657d0 00000000000657d0 0
0000000000002c65 0000000000000000 0 16
[0000000000000002]: ALLOC
So it has a section with that name of size 0x2c65
Lucas De Marchi
>---
>This patch 'fixes' building IGT with link-time-optimization. I am not
>sure it is or should be supported by IGT, but build scripts can be
>modified to allow it for testing.
>Grepping internet shows at least Gentoo and Arch Linux builds IGT with
>LTO, so I guess it is working for them.
>---
>Changes in v2:
> - added Closes tag
>- Link to v1: https://lore.kernel.org/r/20241216-fix-lto-v1-1-1280b17dc70f@intel.com
>---
> lib/meson.build | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/lib/meson.build b/lib/meson.build
>index 1704ed1e1c17..9fffdd3c6218 100644
>--- a/lib/meson.build
>+++ b/lib/meson.build
>@@ -240,7 +240,7 @@ foreach f: lib_sources
> '-DIGT_DATADIR="@0@"'.format(join_paths(prefix, datadir)),
> '-DIGT_SRCDIR="@0@"'.format(srcdir),
> '-DIGT_LOG_DOMAIN="@0@"'.format(f.split('.')[0]),
>- ])
>+ ] + (iga64_assembly_sources.contains(f) ? [ '-ffat-lto-objects' ] : []))
>
> lib_intermediates += lib
> if iga64_assembly_sources.contains(f)
>
>---
>base-commit: ee7a3ac616f55f6ed1b959ff951237099bda86d8
>change-id: 20241216-fix-lto-8d3bc1488c6a
>
>Best regards,
>--
>Andrzej Hajda <andrzej.hajda at intel.com>
>
More information about the igt-dev
mailing list