RH9 ucspi & qmail compile error

Petr Balas petr-news na balas.cz
Pátek Duben 4 13:41:42 CEST 2003


Jiri Cerny wrote:

> Miroslav Petricek wrote:
>> On Thu, Apr 03, 2003 at 04:47:51PM +0200, Ing. Pavel PaJaSoft Janousek
>> wrote:
>> 
>>>Aspon ze tak, vypadalo to hrozive - takze staci pouzivat #include
>>><errno.h> (coz delam drahnou radu let:->) a to obalene thread-safe volani
>>>a podobny nesmysly za mne udela header - rozumim spravne? - jen by mne
>>>zajimalo, jak je tedy 'errno' definovano, protoze jak se tak divam, tak
>>>jeste v dobach RH 7.3 je v /usr/include/bits/errno.h (v dalsich vrstvach
>>>jako .../linux/errno.h ci .../asm/errno.h jsou jiz nezajimave casti):
>>>
>>>
>>>Napada mne jedine makro, protoze v C/C++ nemohu prece mixovat a
>>>zamenovat promennou a funkci...:-0
>>>
>>>
>> 
>> 
>> Samozřejmě. Jinak to ani nejde. Definice makra je v bits/errno.h:
>> 
>> extern int *__errno_location (void) __THROW __attribute__((__const__));
>> 
>> #  if !defined _LIBC || defined _LIBC_REENTRANT
>> /* When using threads, errno is a per-thread value.  */
>> #   define errno (*__errno_location ())
>> 
>> 
> Když už bylo toto téma otevřeno :-))
> na to, že je to makro a v nově překládaných programů stačí inkludovat
> errno.h jsem přišel dost brzy. Tento postup však neřeší např. linkování
> s knihovnou, která tak přeložena nebyla a navíc program ke kterému ji
> linkuji je ve fortranu. Měl by někdo radu jak obejít tohle?

1) Znova prelozit knihovnu
2) Opatchovat libc a ten errno tam vratit

-- 
Petr Balas (petr at balas dot cz) 


Další informace o konferenci Linux