А вот в известной библиотеке ch32fun очень странный линк файл по
поводу $gp. Инициализация $gp - адрес сегмента .data + 0x3fc. И как
это понимать? Компилятор/линкер всё равно не будут работать с
данными в .data через $gp. А если хотите всё же .data прихватить -
задирайте значение -msmall-data-limit, но потом не удивляйтесь что
4К быстро закончились для $gp. Стандартный вариант от WCH - более
оптимальный.