Какое число в названии таблицы символов readelf?

Нет.

PAM - это основа для аутентификации с использованием различных модулей pam. Преимущество в том, что разработчикам приложений не нужно самим писать логику аутентификации; например, он обеспечивает стандарты: из man 7 pam: Linux-PAM - это система библиотек, которые обрабатывают задачи аутентификации приложений (служб) в системе.

PAM обеспечивает аутентификацию пользователей, но он также обеспечивает и другие вещи, такие как системные ограничения (pam_limits), motd (pam_motd), проверку оболочки (pam_shell), аутентификацию LDAP (pam_ldap), аутентификацию MySQL (pam_mysql) и т.д.

Вы можете ознакомиться с большей частью функциональности pam, прочитав руководство для системных администраторов.

1
27.09.2018, 13:12
1 ответ

Это не артефакт вывода readelf; myVariable.9751на самом деле имя этого символа. Чтобы различать статические переменные, определенные в разных областях/функциях, компилятор должен каким-то образом украсить их имена :

.
$ cat a.c
static int var;
int foo(void){
        static int var;
        if(var++ > 3){ static int var; return var++; } else return var++;
}
int bar(void){ static int var; return var++; }
int baz(void){ return var++; }
$ cc -Wall -o - -S a.c | grep local.*var
       .local  var
       .local  var.1759
       .local  var.1760
       .local  var.1764

Обратите внимание, что точка(.)не может использоваться в C как часть идентификатора, поэтому var.numне будет конфликтовать ни с какой другой переменной, определенной пользователем.

Что касается документации readelf, то кроме справочной страницы и чтения исходного кода там не так уж и много; но вы также можете использовать objdump -tTвместо readelf -s; возможно, вы найдете его справочную страницу лучше.

3
27.01.2020, 23:31

Теги

Похожие вопросы