[devel] Статические библиотеки и thin LTO (Was: I: LTO in %optflags by default)

Alexey Sheplyakov asheplyakov на basealt.ru
Пт Авг 27 22:43:17 MSK 2021


Добрый вечер!

On 24.08.2021 22:22, Dmitry V. Levin wrote:
> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
>> * 382 пакета перестанут пересобираться с диагностикой следующего вида:
>> process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
>> Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects

Странно это. GCC прекрасно умеет создавать и использовать архивы
из thin LTO объектов:

cat > add.c <<-EOF
int add(int x, int y) { return x + y; }
EOF
cat > main.c <<-EOF
extern int add(int x, int y);
int main(int argc, char **argv) {
	volatile int a = 1;
        volatile int b = 2;
        return add(a, b);
}
EOF

gcc -c -flto -fno-fat-lto-objects -O2 -g add.c
gcc-ar rcs libadd.a add.o
gcc -c -flto -fno-fat-lto-objects -O2 -g main.c
gcc -flto -O2 -o main main.o libadd.a
objdump -j .text --disassemble=main main

Получаю:

main:     file format elf64-x86-64

Disassembly of section .text:

0000000000001040 <main>:
    1040:	f3 0f 1e fa          	endbr64 
    1044:	c7 44 24 fc 01 00 00 	movl   $0x1,-0x4(%rsp)
    104b:	00 
    104c:	c7 44 24 f8 02 00 00 	movl   $0x2,-0x8(%rsp)
    1053:	00 
    1054:	8b 44 24 f8          	mov    -0x8(%rsp),%eax
    1058:	8b 54 24 fc          	mov    -0x4(%rsp),%edx
    105c:	01 d0                	add    %edx,%eax
    105e:	c3                   	ret    


Подробная информация о списке рассылки Devel