This commit is contained in:
makpif 2022-03-10 10:43:16 +03:00
parent 604dcf300e
commit b94cee6633
22 changed files with 337 additions and 415 deletions

View File

@ -2,25 +2,17 @@
## Подготовка
Удалите проблемный тест:
Исправьте ошибку, затрагивающею сборку некоторых пакетов:
```bash
{{ include('../packages/binutils/prepare') }}
```
Примените патч
Примените патч:
```bash
{{ include('../packages/binutils/patch') }}
```
<!-- temp solution TODO: Remove in next versions -->
Ошибка в системе сборки приводит к тому, что страницы руководства становятся пустыми. Можно обойти проблему, чтобы страницы руководства были созданы правильно:
```bash
sed -i '63d' etc/texi2pod.pl
find -name \*.1 -delete
```
## Настройка
```bash

View File

@ -58,4 +58,3 @@
Библиотеки: libffi.so

View File

@ -1,5 +1,13 @@
{{ include('../packages/zstd/README.md') }}
## Подготовка
Примените патч:
```bash
patch -Np1 -i ../zstd-1.5.2-upstream_fixes-1.patch
```
## Сборка
```bash
@ -46,7 +54,7 @@
## Установленные файлы
Программы: zstd, zstdcat (link to zstd), zstdgrep, zstdless, zstdmt (ссылка на zstd), and unzstd (ссылка на zstd)
Программы: zstd, zstdcat (ссылка на zstd), zstdgrep, zstdless, zstdmt (ссылка на zstd), and unzstd (ссылка на zstd)
Библиотеки: libzstd.so

View File

@ -2,6 +2,12 @@
## Подготовка
Исправьте ошибку связанную с поставкой устаревшей версии `libtool` вместе с `Binutils`:
```bash
sed '6009s/$add_dir//' -i ltmain.sh
```
Пакет Binutils требует использовать отдельную директорию для сборки. Создайте её:
```bash
@ -35,6 +41,5 @@ make
## Установка
```bash
make DESTDIR=$LIN install -j1
install -vm755 libctf/.libs/libctf.so.0.0.0 $LIN/usr/lib
make DESTDIR=$LIN install
```

View File

@ -32,11 +32,18 @@ mkdir -v build
cd build
```
Исправьте ошибку кросс-компиляции `libstdc++':
```bash
sed 's/gnu++17/& -nostdinc++/' \
-i libstdc++-v3/src/c++17/Makefile.in
```
Разрешим сборку `libgcc` с поддержкой многопоточности:
```bash
mkdir -pv $LIN_TGT/libgcc
ln -s ../../../libgcc/gthr-posix.h $LIN_TGT/libgcc/gthr-default.h
sed '/thread_header =/s/@.*@/gthr-posix.h/' \
-i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
```
Настройка:
@ -45,18 +52,19 @@ ln -s ../../../libgcc/gthr-posix.h $LIN_TGT/libgcc/gthr-default.h
../configure \
--build=$(../config.guess) \
--host=$LIN_TGT \
--target=$LIN_TGT \
LDFLAGS_FOR_TARGET=-L$PWD/$LIN_TGT/libgcc \
--prefix=/usr \
CC_FOR_TARGET=$LIN_TGT-gcc \
--with-build-sysroot=$LIN \
--with-build-sysroot=$LFS \
--enable-initfini-array \
--disable-nls \
--disable-multilib \
--disable-decimal-float \
--disable-libatomic \
--disable-libgomp \
--disable-libquadmath \
--disable-libssp \
--disable-libvtv \
--disable-libstdcxx \
--enable-languages=c,c++ \
--disable-multilib
```
@ -69,7 +77,7 @@ ln -s ../../../libgcc/gthr-posix.h $LIN_TGT/libgcc/gthr-default.h
`--enable-initfini-array` - параметр заставляет использовать некоторые внутренние структуры данных, которые необходимы, но не могут быть обнаружены при построении кросс-компилятора.
`--disable-decimal-float, --disable-threads, --disable-libatomic, --disable-libgomp, --disable-libquadmath, --disable-libssp, --disable-libvtv, --disable-libstdcxx` - параметр отключают поддержку десятичных расширений с плавающей запятой, потоковой передачи, libatomic, libgomp, libquadmath, libssp, libvtv и стандартной библиотеки C++ соответственно. Эти функции не будут скомпилированы при сборке кросс-компилятора и не являются необходимыми для кросс-компиляции временной libc.
`--disable-decimal-float, --disable-threads, --disable-libatomic, --disable-libgomp, --disable-libquadmath, --disable-libssp, --disable-libvtv` - параметры отключают поддержку десятичных расширений с плавающей запятой, потоковой передачи, libatomic, libgomp, libquadmath, libssp и libvtv не требующиеся на данном этапе.
`--enable-languages=c,c++` - опция включает поддержку компиляторов C и C++. Это единственные языки, которые нужны сейчас.

View File

@ -1,58 +0,0 @@
# LibstdC++ проход 2
Пакет содержит библиотеку времени исполнения, необходимую программам, написанным на языке C++ и собранным при помощи компилятора GNU.
{{ include('../packages/gcc/README.md') }}
## Настройка
???+ warning "Предупреждение"
**Данный пакет входит в архив с исходниками GCC**.
Создайте необходимую символическую ссылку:
```bash
ln -s gthr-posix.h libgcc/gthr-default.h
```
Создайте отдельную директорию для сборки:
```bash
mkdir -v build
cd build
```
Запустите скрипт `configure`
```bash
../libstdc++-v3/configure \
CXXFLAGS="-O2 -s -D_GNU_SOURCE" \
--prefix=/usr \
--disable-nls \
--host=$(uname -m)-lin-linux-gnu \
--disable-libstdcxx-pch --disable-multilib
```
### Для multilib
Замените `--disable-multilib` на `--enable-multilib`.
### Значения параметров
`--disable-libstdcxx-pch` - отключает установку предварительно скомпилированных заголовков, ненужных на данном этапе
`--host=$(uname -m)-lin-linux-gnu` - Libstdc++ должна быть собрана с такими же параметрами, что и GCC
## Сборка
```bash
make
```
## Установка
```bash
make install
```

View File

@ -11,6 +11,16 @@
## Обновление пакетов
- linux 5.16.12
- zstd 1.5.2
- expat 2.4.6
- gdbm 1.23
- iana-etc 20220222
- man-db 2.10.1
- binutils 2.38
- meson 0.61.2
- MarkupSafe 2.1.0
- dbus 1.14.0
- glibc 2.35
- findutils 4.9.0
- expat 2.4.4
@ -33,6 +43,8 @@
## Изменения
- Инструкции установки libstdc++ при втором проходе включены в инструкции для GCC
- Добавлены патчи для Binutils и Zstd
- Удалена устаревшая команда для glibc
- Добавлен патч для coreutils
- Пакет `file` удален из временной системы, так как не требуется на данном этапе.

View File

@ -1 +0,0 @@
binutils-2.37-upstream_fix-1.patch

View File

@ -1 +0,0 @@
binutils-2.37-upstream_fix-1-1

View File

@ -1 +0,0 @@
binutils-2.37-upstream_fix-1

View File

@ -1 +0,0 @@
https://lx4u.ru/downloads/packages/binutils-2.37-upstream_fix-1.patch

View File

@ -1,17 +0,0 @@
# binutils-2.37-upstream_fix-1
Версия: **1**
Размер: **0.01Mb**
Приоритет: **Необходимый**
Оригинальное расположение: [https://www.linuxfromscratch.org/patches/lfs/development/binutils-2.37-upstream_fix-1.patch](https://www.linuxfromscratch.org/patches/lfs/development/binutils-2.37-upstream_fix-1.patch)
Ссылка для загрузки: [https://lx4u.ru/downloads/packages/binutils-2.37-upstream_fix-1.patch](https://lx4u.ru/downloads/packages/binutils-2.37-upstream_fix-1.patch)
MD5: **3518fa864fe8d7ef65be4960f380b03b**
Домашняя страница: []()

View File

@ -1 +1 @@
patch -Np1 -i ../binutils-2.37-upstream_fix-1.patch
patch -Np1 -i ../binutils-2.38-lto_fix-1.patch

View File

@ -1 +1,2 @@
sed -i '/@\tincremental_copy/d' gold/testsuite/Makefile.in
sed -e '/R_386_TLS_LE /i \ || (TYPE) == R_386_TLS_IE \\' \
-i ./bfd/elfxx-x86.h

View File

@ -130,11 +130,11 @@
},
{
"name": "bc",
"fileName": "bc-5.2.1.tar.xz",
"fileName": "bc-5.2.2.tar.xz",
"description": "BC (basic calculator) — интерактивный интерпретатор Си-подобного языка, позволяет выполнять вычисления с произвольно заданной точностью. Часто используется как калькулятор в командной строке UNIX-подобных операционных систем.",
"url": "https://github.com/gavinhoward/bc/releases/download/5.2.1/bc-5.2.1.tar.xz",
"url": "https://github.com/gavinhoward/bc/releases/download/5.2.2/bc-5.2.2.tar.xz",
"homeUrl": "https://git.yzena.com/gavin/bc",
"version": "5.2.1",
"version": "5.2.2",
"releasesUrl": "https://git.yzena.com/gavin/bc/releases",
"priority": "important",
"md5": "19dbb20c3aba33acacec29edd0b2c46e",
@ -149,15 +149,15 @@
"test"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/bc-5.2.1.tar.xz"
"downloadUrl": "https://lx4u.ru/downloads/packages/bc-5.2.2.tar.xz"
},
{
"name": "binutils",
"fileName": "binutils-2.37.tar.xz",
"fileName": "binutils-2.38.tar.xz",
"description": "Пакет содержит компоновщик, ассемблер и другие утилиты и инструменты для работы с объектными файлами. Программы отсюда необходимы для сборки большинства пакетов.",
"url": "https://ftp.gnu.org/gnu/binutils/binutils-2.37.tar.xz",
"url": "https://ftp.gnu.org/gnu/binutils/binutils-2.38.tar.xz",
"homeUrl": "https://www.gnu.org/software/binutils",
"version": "2.37",
"version": "2.38",
"releasesUrl": "https://ftp.gnu.org/gnu/binutils",
"priority": "required",
"md5": "e78d9ff2976b745a348f4c1f27c77cb1",
@ -180,7 +180,7 @@
"test"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/binutils-2.37.tar.xz"
"downloadUrl": "https://lx4u.ru/downloads/packages/binutils-2.38.tar.xz"
},
{
"name": "bison",
@ -292,11 +292,11 @@
},
{
"name": "dbus",
"fileName": "dbus-1.13.18.tar.xz",
"fileName": "dbus-1.14.0.tar.xz",
"description": "D-Bus - система межпроцессного взаимодействия, которая позволяет приложениям в операционной системе сообщаться друг с другом. D-Bus предоставляет собой системную службу (для обработки таких событий, как 'Добавлено новое аппаратное устройство' или 'очередь принтеров изменена') и системную службу сеанса для каждого пользователя (для общих потребностей IPC среди пользовательских приложений.) Кроме того, D-Bus построен поверх общей платформы передачи сообщений от одного к другому, которая может использоваться любыми двумя приложениями для связки (в обход шины сообщений).",
"url": "https://dbus.freedesktop.org/releases/dbus/dbus-1.13.18.tar.xz",
"url": "https://dbus.freedesktop.org/releases/dbus/dbus-1.14.0.tar.xz",
"homeUrl": "https://www.freedesktop.org/wiki/Software/dbus/",
"version": "1.13.18",
"version": "1.14.0",
"releasesUrl": "https://dbus.freedesktop.org/releases/dbus/",
"priority": "important",
"md5": "b25e4fcfbfd4889bef76f7241dfa1a04",
@ -317,7 +317,7 @@
"test"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/dbus-1.13.18.tar.xz"
"downloadUrl": "https://lx4u.ru/downloads/packages/dbus-1.14.0.tar.xz"
},
{
"name": "dejagnu",
@ -475,11 +475,11 @@
},
{
"name": "expat",
"fileName": "expat-2.4.4.tar.xz",
"fileName": "expat-2.4.6.tar.xz",
"description": "Expat - потокоориентированная библиотека парсинга XML, написанная на C. Как один из наиболее доступных XML парсеров, широко используется в открытом программном обеспечении.",
"url": "https://prdownloads.sourceforge.net/expat/expat-2.4.4.tar.xz",
"url": "https://prdownloads.sourceforge.net/expat/expat-2.4.6.tar.xz",
"homeUrl": "https://sourceforge.net/projects/expat",
"version": "2.4.4",
"version": "2.4.6",
"releasesUrl": "https://sourceforge.net/projects/expat/files/expat/",
"priority": "important",
"md5": "a712d23b7afb32e7527cf0b3fd8f12ac",
@ -499,7 +499,7 @@
"test"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/expat-2.4.4.tar.xz"
"downloadUrl": "https://lx4u.ru/downloads/packages/expat-2.4.6.tar.xz"
},
{
"name": "expect",
@ -648,11 +648,11 @@
},
{
"name": "gdbm",
"fileName": "gdbm-1.22.tar.gz",
"fileName": "gdbm-1.23.tar.gz",
"description": "Библиотека функций базы данных, которая использует расширяемое хэширование и работает аналогично стандартным функциям dbm UNIX. Эти процедуры предоставляются программисту, которому необходимо создать и обработать хешированную базу данных. Основное предназначение gdbm — хранение пары ключ/данные в файле данных. Каждый ключ должен быть уникальным и сопряженным только с одним элементом данных. Ключи не могут быть напрямую доступны в отсортированном порядке.",
"url": "https://ftp.gnu.org/gnu/gdbm/gdbm-1.22.tar.gz",
"url": "https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz",
"homeUrl": "https://gnu.org/software/gdbm",
"version": "1.22",
"version": "1.23",
"releasesUrl": "https://ftp.gnu.org/gnu/gdbm/",
"priority": "important",
"md5": "0bbd38f12656e4728e2f7c4708aec014",
@ -667,7 +667,7 @@
"test"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/gdbm-1.22.tar.gz"
"downloadUrl": "https://lx4u.ru/downloads/packages/gdbm-1.23.tar.gz"
},
{
"name": "gettext",
@ -873,11 +873,11 @@
},
{
"name": "iana-etc",
"fileName": "iana-etc-20220110.tar.gz",
"fileName": "iana-etc-20220222.tar.gz",
"description": "Пакет Iana-Etc содержит данные для сетевых служб и протоколов.",
"url": "https://github.com/Mic92/iana-etc/releases/download/20220110/iana-etc-20220110.tar.gz",
"url": "https://github.com/Mic92/iana-etc/releases/download/20220222/iana-etc-20220222.tar.gz",
"homeUrl": "https://www.iana.org/protocols",
"version": "20220110",
"version": "20220222",
"releasesUrl": "https://github.com/Mic92/iana-etc/releases/",
"priority": "required",
"md5": "cd22a9f75b03a2be5638e67d4e72bf19",
@ -889,7 +889,7 @@
"install"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/iana-etc-20220110.tar.gz"
"downloadUrl": "https://lx4u.ru/downloads/packages/iana-etc-20220222.tar.gz"
},
{
"name": "inetutils",
@ -1194,11 +1194,11 @@
},
{
"name": "linux",
"fileName": "linux-5.16.2.tar.xz",
"fileName": "linux-5.16.12.tar.xz",
"description": "Ядро операционной системы.",
"url": "https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.16.2.tar.xz",
"url": "https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.16.12.tar.xz",
"homeUrl": "https://www.kernel.org",
"version": "5.16.2",
"version": "5.16.12",
"releasesUrl": "https://www.kernel.org",
"priority": "required",
"md5": "fd00badc3b53d42da3d84a7cf6f53f17",
@ -1206,7 +1206,7 @@
"installedSize": 0,
"sbu": 0,
"sbu2": 4.4,
"downloadUrl": "https://lx4u.ru/downloads/packages/linux-5.16.2.tar.xz",
"downloadUrl": "https://lx4u.ru/downloads/packages/linux-5.16.12.tar.xz",
"scripts": [],
"multilibSupport": false
},
@ -1259,11 +1259,11 @@
},
{
"name": "man-db",
"fileName": "man-db-2.9.4.tar.xz",
"fileName": "man-db-2.10.1.tar.xz",
"description": "Пакет Man-DB содержит программы для поиска и просмотра справочных страниц.",
"url": "https://download.savannah.gnu.org/releases/man-db/man-db-2.9.4.tar.xz",
"url": "https://download.savannah.gnu.org/releases/man-db/man-db-2.10.1.tar.xz",
"homeUrl": "https://savannah.nongnu.org/projects/man-db",
"version": "2.9.4",
"version": "2.10.1",
"releasesUrl": "https://download.savannah.gnu.org/releases/man-db/",
"priority": "optional",
"md5": "6e233a555f7b9ae91ce7cd0faa322bce",
@ -1278,7 +1278,7 @@
"test"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/man-db-2.9.4.tar.xz"
"downloadUrl": "https://lx4u.ru/downloads/packages/man-db-2.10.1.tar.xz"
},
{
"name": "man-pages",
@ -1302,11 +1302,11 @@
},
{
"name": "meson",
"fileName": "meson-0.61.1.tar.gz",
"fileName": "meson-0.61.2.tar.gz",
"description": "Meson - высокопроизводительная и удобная система сборки с открытым исходным кодом. Пакет содержит инструменты для автоматизации сборки программ. Основная цель Meson - минимизировать затраты времени на конфигурирование системы сборки.",
"url": "https://github.com/mesonbuild/meson/releases/download/0.61.1/meson-0.61.1.tar.gz",
"url": "https://github.com/mesonbuild/meson/releases/download/0.61.2/meson-0.61.2.tar.gz",
"homeUrl": "https://mesonbuild.com",
"version": "0.61.1",
"version": "0.61.2",
"releasesUrl": "https://github.com/mesonbuild/meson/releases/",
"priority": "important",
"md5": "8ed66d5537275df3defffb66d1fb897f",
@ -1320,7 +1320,7 @@
"prepare"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/meson-0.61.1.tar.gz"
"downloadUrl": "https://lx4u.ru/downloads/packages/meson-0.61.2.tar.gz"
},
{
"name": "mpc",
@ -1699,11 +1699,11 @@
},
{
"name": "markupsafe",
"fileName": "MarkupSafe-2.0.1.tar.gz",
"fileName": "MarkupSafe-2.1.0.tar.gz",
"description": "MarkupSafe - это модуль Python, который экранирует символы, поэтому текст безопасно использовать в HTML и XML. Символы, имеющие особое значение, заменяются так, чтобы они отображались как фактические символы. Это смягчает атаки инъекций, что означает, что вводимые пользователем данные, которым не доверяют, могут безопасно отображаться на странице.",
"url": "https://files.pythonhosted.org/packages/source/M/MarkupSafe/MarkupSafe-2.0.1.tar.gz",
"homeUrl": "https://markupsafe.palletsprojects.com/en/2.0.x/",
"version": "2.0.1",
"url": "https://files.pythonhosted.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.0.tar.gz",
"homeUrl": "https://markupsafe.palletsprojects.com/en/2.1.x/",
"version": "2.1.0",
"releasesUrl": "https://pypi.org/project/MarkupSafe/#files",
"priority": "required",
"md5": "892e0fefa3c488387e5cc0cad2daa523",
@ -1716,7 +1716,7 @@
"install"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/MarkupSafe-2.0.1.tar.gz"
"downloadUrl": "https://lx4u.ru/downloads/packages/MarkupSafe-2.1.0.tar.gz"
},
{
"name": "jinja2",
@ -1902,11 +1902,11 @@
},
{
"name": "util-linux",
"fileName": "util-linux-2.37.2.tar.xz",
"fileName": "util-linux-2.37.4.tar.xz",
"description": "Содержит стандартный набор служебных утилит командной строки, такие как: утилиты для работы с файловой системой, консолью, разделами, и сообщениями.",
"url": "https://www.kernel.org/pub/linux/utils/util-linux/v2.37/util-linux-2.37.2.tar.xz",
"url": "https://www.kernel.org/pub/linux/utils/util-linux/v2.37/util-linux-2.37.4.tar.xz",
"homeUrl": "https://en.wikipedia.org/wiki/Util-linux",
"version": "2.37.2",
"version": "2.37.4",
"releasesUrl": "https://www.kernel.org/pub/linux/utils/util-linux/",
"priority": "required",
"md5": "d659bf7cd417d93dc609872f6334b019",
@ -1933,15 +1933,15 @@
"test-systemd"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/util-linux-2.37.2.tar.xz"
"downloadUrl": "https://lx4u.ru/downloads/packages/util-linux-2.37.4.tar.xz"
},
{
"name": "vim",
"fileName": "vim-8.2.4115.tar.gz",
"fileName": "vim-8.2.4489.tar.gz",
"description": "Один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации, возможными благодаря расширениям и надстройкам.",
"url": "https://github.com/vim/vim/archive/refs/tags/v8.2.4115.tar.gz",
"url": "https://github.com/vim/vim/archive/refs/tags/v8.2.4489.tar.gz",
"homeUrl": "https://www.vim.org/",
"version": "8.2.4115",
"version": "8.2.4489",
"releasesUrl": "https://github.com/vim/vim/releases",
"priority": "optional",
"md5": "c9a0f3b6b08f9ed89b0ec6c45180442c",
@ -1958,7 +1958,7 @@
"test"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/vim-8.2.4115.tar.gz"
"downloadUrl": "https://lx4u.ru/downloads/packages/vim-8.2.4489.tar.gz"
},
{
"name": "nano",
@ -2069,11 +2069,11 @@
},
{
"name": "zstd",
"fileName": "zstd-1.5.1.tar.gz",
"fileName": "zstd-1.5.2.tar.gz",
"description": "Zstandard - это алгоритм сжатия в реальном времени, обеспечивающий высокую степень сжатия. Он предлагает очень широкий спектр компромиссов между сжатием и скоростью, а также очень быстрым декодером.",
"url": "https://github.com/facebook/zstd/releases/download/v1.5.1/zstd-1.5.1.tar.gz",
"url": "https://github.com/facebook/zstd/releases/download/v1.5.2/zstd-1.5.2.tar.gz",
"homeUrl": "https://facebook.github.io/zstd/",
"version": "1.5.1",
"version": "1.5.2",
"releasesUrl": "https://github.com/facebook/zstd/releases/",
"priority": "important",
"md5": "b97d53547220355907dedec7de9a4f29",
@ -2092,7 +2092,7 @@
"test"
],
"multilibSupport": false,
"downloadUrl": "https://lx4u.ru/downloads/packages/zstd-1.5.1.tar.gz"
"downloadUrl": "https://lx4u.ru/downloads/packages/zstd-1.5.2.tar.gz"
},
{
"name": "popt",
@ -2433,10 +2433,10 @@
"scripts": []
},
{
"name": "binutils-2.37-upstream_fix-1",
"fileName": "binutils-2.37-upstream_fix-1.patch",
"name": "binutils-2.38-lto_fix-1",
"fileName": "binutils-2.38-lto_fix-1.patch",
"description": "",
"url": "https://www.linuxfromscratch.org/patches/lfs/development/binutils-2.37-upstream_fix-1.patch",
"url": "https://www.linuxfromscratch.org/patches/lfs/development/binutils-2.38-lto_fix-1.patch",
"homeUrl": "",
"version": "1",
"releasesUrl": "",
@ -2446,7 +2446,7 @@
"installedSize": 0,
"sbu": 0,
"sbu2": 0,
"downloadUrl": "https://lx4u.ru/downloads/packages/binutils-2.37-upstream_fix-1.patch",
"downloadUrl": "https://lx4u.ru/downloads/packages/binutils-2.38-lto_fix-1.patch",
"multilibSupport": false,
"scripts": []
},

View File

@ -1,5 +1,4 @@
SRCDIR=$(pwd)
cd unix
./configure --prefix=/usr \
--mandir=/usr/share/man \
$([ "$(uname -m)" = x86_64 ] && echo --enable-64bit)
--mandir=/usr/share/man

View File

@ -1,239 +0,0 @@
Submitted By: Bruce Dubbs <bdubbs@linuxfromscratch.org>
Date: 2021-08-13
Initial Package Version: 2.37
Upstream Status: Committed
Origin: Upstream
Description: bfd: Close the file descriptor if there is no archive fd
From 1c611b40e6bfc8029bff7696814330b5bc0ee5c0 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Mon, 26 Jul 2021 05:59:55 -0700
Subject: [PATCH] bfd: Close the file descriptor if there is no archive fd
Close the file descriptor if there is no archive plugin file descriptor
to avoid running out of file descriptors on thin archives with many
archive members.
bfd/
PR ld/28138
* plugin.c (bfd_plugin_close_file_descriptor): Close the file
descriptor there is no archive plugin file descriptor.
ld/
PR ld/28138
* testsuite/ld-plugin/lto.exp: Run tmpdir/pr28138 only for
native build.
PR ld/28138
* testsuite/ld-plugin/lto.exp: Run ld/28138 tests.
* testsuite/ld-plugin/pr28138.c: New file.
* testsuite/ld-plugin/pr28138-1.c: Likewise.
* testsuite/ld-plugin/pr28138-2.c: Likewise.
* testsuite/ld-plugin/pr28138-3.c: Likewise.
* testsuite/ld-plugin/pr28138-4.c: Likewise.
* testsuite/ld-plugin/pr28138-5.c: Likewise.
* testsuite/ld-plugin/pr28138-6.c: Likewise.
* testsuite/ld-plugin/pr28138-7.c: Likewise.
(cherry picked from commit 5a98fb7513b559e20dfebdbaa2a471afda3b4742)
(cherry picked from commit 7dc37e1e1209c80e0bab784df6b6bac335e836f2)
---
bfd/plugin.c | 8 +++++++
ld/testsuite/ld-plugin/lto.exp | 34 ++++++++++++++++++++++++++++++
ld/testsuite/ld-plugin/pr28138-1.c | 6 ++++++
ld/testsuite/ld-plugin/pr28138-2.c | 6 ++++++
ld/testsuite/ld-plugin/pr28138-3.c | 6 ++++++
ld/testsuite/ld-plugin/pr28138-4.c | 6 ++++++
ld/testsuite/ld-plugin/pr28138-5.c | 6 ++++++
ld/testsuite/ld-plugin/pr28138-6.c | 6 ++++++
ld/testsuite/ld-plugin/pr28138-7.c | 6 ++++++
ld/testsuite/ld-plugin/pr28138.c | 20 ++++++++++++++++++
10 files changed, 104 insertions(+)
create mode 100644 ld/testsuite/ld-plugin/pr28138-1.c
create mode 100644 ld/testsuite/ld-plugin/pr28138-2.c
create mode 100644 ld/testsuite/ld-plugin/pr28138-3.c
create mode 100644 ld/testsuite/ld-plugin/pr28138-4.c
create mode 100644 ld/testsuite/ld-plugin/pr28138-5.c
create mode 100644 ld/testsuite/ld-plugin/pr28138-6.c
create mode 100644 ld/testsuite/ld-plugin/pr28138-7.c
create mode 100644 ld/testsuite/ld-plugin/pr28138.c
diff --git a/bfd/plugin.c b/bfd/plugin.c
index 6cfa2b66470..3bab8febe88 100644
--- a/bfd/plugin.c
+++ b/bfd/plugin.c
@@ -291,6 +291,14 @@ bfd_plugin_close_file_descriptor (bfd *abfd, int fd)
&& !bfd_is_thin_archive (abfd->my_archive))
abfd = abfd->my_archive;
+ /* Close the file descriptor if there is no archive plugin file
+ descriptor. */
+ if (abfd->archive_plugin_fd == -1)
+ {
+ close (fd);
+ return;
+ }
+
abfd->archive_plugin_fd_open_count--;
/* Dup the archive plugin file descriptor for later use, which
will be closed by _bfd_archive_close_and_cleanup. */
diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
index def69e43ab3..999d911ce6a 100644
--- a/ld/testsuite/ld-plugin/lto.exp
+++ b/ld/testsuite/ld-plugin/lto.exp
@@ -687,6 +687,40 @@ if { [is_elf_format] && [check_lto_shared_available] } {
}
}
+run_cc_link_tests [list \
+ [list \
+ "Build pr28138.a" \
+ "-T" "" \
+ {pr28138-1.c pr28138-2.c pr28138-3.c pr28138-4.c pr28138-5.c \
+ pr28138-6.c pr28138-7.c} {} "pr28138.a" \
+ ] \
+ [list \
+ "Build pr28138.o" \
+ "" "" \
+ {pr28138.c} {} \
+ ] \
+]
+
+set exec_output [run_host_cmd "sh" \
+ "-c \"ulimit -n 20; \
+ $CC -Btmpdir/ld -o tmpdir/pr28138 \
+ tmpdir/pr28138.o tmpdir/pr28138.a\""]
+set exec_output [prune_warnings $exec_output]
+if [string match "" $exec_output] then {
+ if { [isnative] } {
+ set exec_output [run_host_cmd "tmpdir/pr28138" ""]
+ if [string match "PASS" $exec_output] then {
+ pass "PR ld/28138"
+ } else {
+ fail "PR ld/28138"
+ }
+ } else {
+ pass "PR ld/28138"
+ }
+} else {
+ fail "PR ld/28138"
+}
+
set testname "Build liblto-11.a"
remote_file host delete "tmpdir/liblto-11.a"
set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
diff --git a/ld/testsuite/ld-plugin/pr28138-1.c b/ld/testsuite/ld-plugin/pr28138-1.c
new file mode 100644
index 00000000000..51d119e1642
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr28138-1.c
@@ -0,0 +1,6 @@
+extern int a0(void);
+int
+a1(void)
+{
+ return 1 + a0();
+}
diff --git a/ld/testsuite/ld-plugin/pr28138-2.c b/ld/testsuite/ld-plugin/pr28138-2.c
new file mode 100644
index 00000000000..1120cd797e9
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr28138-2.c
@@ -0,0 +1,6 @@
+extern int a1(void);
+int
+a2(void)
+{
+ return 1 + a1();
+}
diff --git a/ld/testsuite/ld-plugin/pr28138-3.c b/ld/testsuite/ld-plugin/pr28138-3.c
new file mode 100644
index 00000000000..ec464947ee6
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr28138-3.c
@@ -0,0 +1,6 @@
+extern int a2(void);
+int
+a3(void)
+{
+ return 1 + a2();
+}
diff --git a/ld/testsuite/ld-plugin/pr28138-4.c b/ld/testsuite/ld-plugin/pr28138-4.c
new file mode 100644
index 00000000000..475701b2c5c
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr28138-4.c
@@ -0,0 +1,6 @@
+extern int a3(void);
+int
+a4(void)
+{
+ return 1 + a3();
+}
diff --git a/ld/testsuite/ld-plugin/pr28138-5.c b/ld/testsuite/ld-plugin/pr28138-5.c
new file mode 100644
index 00000000000..e24f86c363e
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr28138-5.c
@@ -0,0 +1,6 @@
+extern int a4(void);
+int
+a5(void)
+{
+ return 1 + a4();
+}
diff --git a/ld/testsuite/ld-plugin/pr28138-6.c b/ld/testsuite/ld-plugin/pr28138-6.c
new file mode 100644
index 00000000000..b5b938bdb21
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr28138-6.c
@@ -0,0 +1,6 @@
+extern int a5(void);
+int
+a6(void)
+{
+ return 1 + a5();
+}
diff --git a/ld/testsuite/ld-plugin/pr28138-7.c b/ld/testsuite/ld-plugin/pr28138-7.c
new file mode 100644
index 00000000000..4ef75bf0f0c
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr28138-7.c
@@ -0,0 +1,6 @@
+extern int a6(void);
+int
+a7(void)
+{
+ return 1 + a6();
+}
diff --git a/ld/testsuite/ld-plugin/pr28138.c b/ld/testsuite/ld-plugin/pr28138.c
new file mode 100644
index 00000000000..68252c9f382
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr28138.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+
+extern int a7(void);
+
+int
+a0(void)
+{
+ return 0;
+}
+
+int
+main()
+{
+ if (a7() == 7)
+ {
+ printf ("PASS\n");
+ return 0;
+ }
+ return 1;
+}
--
2.27.0

View File

@ -0,0 +1,122 @@
Submitted By: Xi Ruoyao <xry111@mengyan1223.wang>
Date: 2021-02-14
Initial Package Version: 2.38
Upstream Status: Committed
Origin: Upstream
Description: Unbreak building some BLFS packages with LTO
enabled by default
From 20ea3acc727f3be6322dfbd881e506873535231d Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Fri, 11 Feb 2022 15:13:19 -0800
Subject: [PATCH] ld: Keep indirect symbol from IR if referenced from shared
object
Don't change indirect symbol defined in IR to undefined if it is
referenced from shared object.
bfd/
PR ld/28879
* elflink.c (_bfd_elf_merge_symbol): Don't change indirect
symbol defined in IR to undefined if it is referenced from
shared object.
ld/
PR ld/28879
* testsuite/ld-plugin/lto.exp: Run PR ld/28879 tests.
* testsuite/ld-plugin/pr28879a.cc: New file.
* testsuite/ld-plugin/pr28879b.cc: Likewise.
---
bfd/elflink.c | 5 ++---
ld/testsuite/ld-plugin/lto.exp | 26 ++++++++++++++++++++++++++
ld/testsuite/ld-plugin/pr28879a.cc | 7 +++++++
ld/testsuite/ld-plugin/pr28879b.cc | 8 ++++++++
4 files changed, 43 insertions(+), 3 deletions(-)
create mode 100644 ld/testsuite/ld-plugin/pr28879a.cc
create mode 100644 ld/testsuite/ld-plugin/pr28879b.cc
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 6fa18d92007..f8521426cad 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -1294,9 +1294,8 @@ _bfd_elf_merge_symbol (bfd *abfd,
h->root.non_ir_ref_dynamic = true;
hi->root.non_ir_ref_dynamic = true;
}
-
- if ((oldbfd->flags & BFD_PLUGIN) != 0
- && hi->root.type == bfd_link_hash_indirect)
+ else if ((oldbfd->flags & BFD_PLUGIN) != 0
+ && hi->root.type == bfd_link_hash_indirect)
{
/* Change indirect symbol from IR to undefined. */
hi->root.type = bfd_link_hash_undefined;
diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
index a70a84562b8..64b880265ee 100644
--- a/ld/testsuite/ld-plugin/lto.exp
+++ b/ld/testsuite/ld-plugin/lto.exp
@@ -471,6 +471,32 @@ set lto_link_elf_tests [list \
[list {pr27441c.so} \
{-shared -fPIC -Wl,--as-needed tmpdir/pr27441c.o tmpdir/pr27441b.so tmpdir/pr27441a.so} {-fPIC} \
{dummy.c} {{readelf {-dW} pr27441c.d}} {pr27441c.so}] \
+ [list \
+ "Build libpr28879a.so" \
+ "-shared" \
+ "-O0 -fpic" \
+ {pr28879a.cc} \
+ {} \
+ "libpr28879a.so" \
+ "c++" \
+ ] \
+ [list \
+ "Build libpr28879b.so" \
+ "-shared -Wl,--no-as-needed tmpdir/libpr28879a.so" \
+ "-O2 -fpic" \
+ {dummy.c} \
+ {} \
+ "libpr28879b.so" \
+ ] \
+ [list \
+ "Build pr28879" \
+ "-Wl,--no-as-needed tmpdir/libpr28879b.so -Wl,-rpath-link,." \
+ "-O0 -flto -D_GLIBCXX_ASSERTIONS" \
+ {pr28879b.cc} \
+ {} \
+ "pr28879" \
+ "c++" \
+ ] \
]
# PR 14918 checks that libgcc is not spuriously included in a shared link of
diff --git a/ld/testsuite/ld-plugin/pr28879a.cc b/ld/testsuite/ld-plugin/pr28879a.cc
new file mode 100644
index 00000000000..8307a42e2fb
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr28879a.cc
@@ -0,0 +1,7 @@
+#include <string>
+
+void
+func (std::string *s)
+{
+ delete s;
+}
diff --git a/ld/testsuite/ld-plugin/pr28879b.cc b/ld/testsuite/ld-plugin/pr28879b.cc
new file mode 100644
index 00000000000..02fc351366c
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr28879b.cc
@@ -0,0 +1,8 @@
+#include <string>
+
+int
+main (void)
+{
+ std::string header;
+ return 0;
+}
--
2.27.0

View File

@ -0,0 +1,96 @@
Submitted By: Xi Ruoyao <xry111@linuxfromscratch.org>
Date: 2021-03-04
Initial Package Version: 1.5.2
Upstream Status: Applied
Origin: Upstream Git Repository
Description: Fix bad assertions causing test failure.
From 246982e782849d8646b2d5df6648319935669228 Mon Sep 17 00:00:00 2001
From: Nick Terrell <terrelln@fb.com>
Date: Thu, 20 Jan 2022 22:41:47 -0800
Subject: [PATCH] [dibio] Fix assertion triggered by no inputs
Passing 0 inputs to `DiB_shuffle()` caused an assertion failure where
it should just return.
A test is added in a later commit, with the initial introduction of the
new testing framework.
Fixes #3007.
---
programs/dibio.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/programs/dibio.c b/programs/dibio.c
index d19f954486..147d1e7bfd 100644
--- a/programs/dibio.c
+++ b/programs/dibio.c
@@ -27,9 +27,9 @@
#include <string.h> /* memset */
#include <stdio.h> /* fprintf, fopen, ftello64 */
#include <errno.h> /* errno */
-#include <assert.h>
#include "timefn.h" /* UTIL_time_t, UTIL_clockSpanMicro, UTIL_getTime */
+#include "../lib/common/debug.h" /* assert */
#include "../lib/common/mem.h" /* read */
#include "dibio.h"
@@ -193,7 +193,8 @@ static U32 DiB_rand(U32* src)
static void DiB_shuffle(const char** fileNamesTable, unsigned nbFiles) {
U32 seed = 0xFD2FB528;
unsigned i;
- assert(nbFiles >= 1);
+ if (nbFiles == 0)
+ return;
for (i = nbFiles - 1; i > 0; --i) {
unsigned const j = DiB_rand(&seed) % (i + 1);
const char* const tmp = fileNamesTable[j];
From d109cef2012b1e0ca7a6f47278a2838f68bbc196 Mon Sep 17 00:00:00 2001
From: Xi Ruoyao <xry111@mengyan1223.wang>
Date: Sat, 5 Mar 2022 03:56:44 +0800
Subject: [PATCH] fix the assertion in readLinesFromFile (#3084)
* fix the assertion in readLinesFromFile
When the file is not terminated by endline, readLineFromFile will append
a '\0' for the last line. In this case pos + lineLength == dstCapacity.
* test: don't print very long text garbage
---
programs/util.c | 2 +-
tests/playTests.sh | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/programs/util.c b/programs/util.c
index d69b72a37c..55bcff25af 100644
--- a/programs/util.c
+++ b/programs/util.c
@@ -418,7 +418,7 @@ readLinesFromFile(void* dst, size_t dstCapacity,
while ( !feof(inputFile) ) {
size_t const lineLength = readLineFromFile(buf+pos, dstCapacity-pos, inputFile);
if (lineLength == 0) break;
- assert(pos + lineLength < dstCapacity);
+ assert(pos + lineLength <= dstCapacity); /* '=' for inputFile not terminated with '\n' */
pos += lineLength;
++nbFiles;
}
diff --git a/tests/playTests.sh b/tests/playTests.sh
index 71e8dc0581..d4271b2f07 100755
--- a/tests/playTests.sh
+++ b/tests/playTests.sh
@@ -735,11 +735,11 @@ test -f tmp4
println "test : survive the list of files with too long filenames (--filelist=FILE)"
datagen -g5M > tmp_badList
-zstd -f --filelist=tmp_badList && die "should have failed : file name length is too long"
+zstd -qq -f --filelist=tmp_badList && die "should have failed : file name length is too long" # printing very long text garbage on console will cause CI failure
println "test : survive a list of files which is text garbage (--filelist=FILE)"
datagen > tmp_badList
-zstd -f --filelist=tmp_badList && die "should have failed : list is text garbage"
+zstd -qq -f --filelist=tmp_badList && die "should have failed : list is text garbage" # printing very long text garbage on console will cause CI failure
println "test : survive a list of files which is binary garbage (--filelist=FILE)"
datagen -P0 -g1M > tmp_badList

View File

@ -145,7 +145,6 @@ nav:
- Смена владельца каталога $LIN: build-temp-system/change-owner.md
- Вход в окружение chroot: build-temp-system/enter-in-chroot.md
- Создание базовых файлов и ссылок: build-temp-system/create-files.md
- libstdc++ проход 2: build-temp-system/libstdc-p2.md
- gettext: build-temp-system/gettext.md
- bison: build-temp-system/bison.md
- perl: build-temp-system/perl.md