Один из вариантов, хотя и опасен, заключается в том, чтобы убедить GCC опустить требуемое ABI главное подчеркивание.
blockquote>
-fleading-underscore
Этот параметр и его аналог ,-fno-leading-underscore
, принудительно изменить способ отображения символов C в объектном файле. Одно использование - это ссылка на устаревший ассемблерный код. Предупреждение: переключатель-fleading-underscore
заставляет GCC генерировать код, который не является бинарным, совместимым с кодом, сгенерированным без этого коммутатора. Используйте его для соответствия двоичному интерфейсу приложения, отличного от стандартного. Не все цели обеспечивают полную поддержку этого коммутатора.Другой, более безопасный вариант - явно указать GCC имя, которое будет использовать.
5.39 Управление именами, используемыми в коде ассемблера
Вы можете указать имя, которое будет использоваться в коде ассемблера для функции или переменной C, написав ключевое слово
asm
(или__asm__
) после объявления следующим образом:int foo asm ("myfoo") = 2;
Указывает, что имя, которое будет использоваться для переменной
foo
в коде ассемблера, должно быть `` myfoo' rather than the usual \``_foo
'.В системах, где обычно подчеркивается символ подчеркивания добавленный к имени функции или переменной C, эта функция позволяет вам определять имена для компоновщика, которые не начинаются с подчеркивания.
Не имеет смысла использовать эту функцию с нестационарным локальная переменная, так как такие переменные не имеют имен ассемблера. Если вы пытаетесь поместить переменную в определенный регистр, см. Явные реестры . GCC в настоящее время принимает такой код с предупреждением, но, вероятно, будет изменен, чтобы в будущем выпустить ошибку, а не предупреждение.
Вы не можете использовать
asm
таким образом в функции определение ; но вы можете получить тот же эффект, написав декларацию для функции перед ее определением и помещая тамasm
, например:extern func () asm ("FUNC"); func (x, y) int x, y; /* ... */
. Вы должны убедиться, что ассемблер называет вас выберите, не конфликтуйте с другими символами ассемблера. Кроме того, вы не должны использовать имя регистра; что приведет к совершенно недействительному ассемблерному коду. GCC пока не имеет возможности хранить статические переменные в регистрах. Возможно, это будет добавлено.
blockquote>В вашем случае
extern int bar(int x) asm("bar");
должно указывать GCC, что «
bar
использует имя asm` `bar` ', хотя это функция ccall ".
Это будет зависеть от случаев использования, которые вы планируете.
idsrv4 имеет плагины SAML и WS-Fed, поэтому может обрабатывать все протоколы.
Это только делает аутентификацию не предоставлением пользователя. Для этого вы можете посмотреть на AdminUI .
Масштабирование может быть проблемой?
Тот факт, что это открытый исходный код, является большим преимуществом, поскольку вы можете расширять функциональность с помощью точек расширения.