Код: Выделить всё
// foo.c
#include
#include
void setup(void) __attribute__((constructor));
void
setup(void)
{
fprintf(stderr, "FOO=\"%s\"\n", getenv("FOO"));
}
< /code>
$ cc -o foo.so -fPIC -shared foo.c -Wl,-z,initfirst
$ LD_PRELOAD=./foo.so FOO=123 ./hello
FOO="(null)"
< /code>
Removing the initfirst< /code> флаг дал ожидаемый результат. < /p>
Вопросы: < /p>
[*] Есть ли способ прочитать переменные среды в этих условиях? (Это нормально, если он работает только на Linux, AMD64, GCC и Glibc)
Кто инициализирует __environ Подробнее здесь: https://stackoverflow.com/questions/797 ... rly-stages
Мобильная версия