Невозможно распечатать числа с плавающей запятой из исполняемой общей библиотеки

Я разрабатываю разделяемую библиотеку, которая может быть выполнена независимо, чтобы напечатать ее собственный номер версии.

Я определил пользовательскую точку входа как:

const char my_interp[] __attribute__((section(".interp"))) = "/lib64/ld-linux-x86-64.so.2";

void my_main() {
   printf("VERSION: %d\n", 0);
   _exit(0);
}

и я собираю с

gcc -o list.os -c -g -Wall -fPIC list.c
gcc -o liblist.so -g -Wl,-e,my_main -shared list.os -lc

Этот кодcompiles а такжеruns в совершенстве.

Моя проблема, когда я изменяю параметр printf на float или double (% f или% lf). Затем библиотека скомпилируется, ноsegfault когда беги.

У кого-нибудь есть идеи?

edit1:

Вот код, который segfaults:

const char my_interp[] __attribute__((section(".interp"))) = "/lib64/ld-linux-x86-64.so.2"; 

void my_main() { 
    printf("VERSION: %f\n", 0.1f); 
    _exit(0); 
} 

edit2:

Дополнительные сведения об окружающей среде:

uname -a

Linux mjolnir.site 3.1.10-1.16-рабочий стол # 1 ПРЕДСТАВЛЕНИЕ SMP Ср 27 июня 05:21:40 UTC 2012 (d016078) x86_64 x86_64 x86_64 GNU / Linux

gcc --version

gcc (SUSE Linux) 4.6.2

/lib64/libc.so.6

Настроен для x86_64-suse-linux. Составлено GNU CC версии 4.6.2. Скомпилировано в системе Linux 3.1.0 2012-03-30.

edit 3:

Вывод в / var / log / messages при segfault:

11 августа 08:27:45 ядро mjolnir: [10560.068741] liblist.so [11222] общая защита ip: 7fc2b3cb2314 sp: 7fff4f5c7de8 ошибка: 0 в libc-2.14.1.so [7fc2b3c63000 + 187000]

Ответы на вопрос(1)

Ваш ответ на вопрос