[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