Problemy s gcc

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Pátek Září 22 21:57:15 CEST 2000


On Thu, 21 Sep 2000, Zbynek Vyskovsky wrote:

>  Castecne vyreseno - call je primy, kdyz se vola lokalni symbol. Ale
> pro symboly definovane ve version-scriptu jako global se stale pouziva
> call pres tabulku. Mozna se pletu v jedne veci - predpokladam totiz,
> ze chci-li exportovat nejaky symbol, tak musi byt uveden ve
> version-scriptu jako global. Je to tak nebo existuje jeste jiny
> zpusob?

Kdyz je to globalni symbol, pak je i v ramci jednoho objektu volan pres
PLT z toho jiz zminovaneho duvodu, ze by mohl byt jinym objektem
predefinovan behem dynamickeho linkovani. Mozna na to bude mit vliv
-Bsymbolic.

>  Cannot find node VERSION. Nuz, ale pres search jsem se nakonec dostal
> k version-script, ktery tento problem vyborne resi, ale pouze pro
> sdilene knihovny. Potreboval bych exportovat jeste nektere symboly
> z executable. global a local ve version-scriptu linker evidentne
> ignoruje (exportuje jen to, co po nem pozaduji linkovane .so), kdyz mu
> predam jeste -E, tak exportuje pro zmenu vsechno. Jeste jsem zahledl
> option --version-exports-symbol, ale v --help toho moc neni a v RH
> infu o tom neni ani zminka.

Ja nevim. V kazdem pripade Vam nic nebrani vzit zdrojaky binutils a to, co
chybi, si doprogramovat. :)

>  Tim myslite definovat konstanty jako promenne v section .text a ve
> version-scriptu je uvest jako local?

Konstanty vubec nemusi byt v .text. Jde jen o to, aby dostatecne rychle
pochopil, ze prislusne symboly jsou lokalni, a tudiz na ne nespristupoval
pres GOT. Ale kdyz tak nad tim premyslim, tak to asi musi vedet uz
kompilator (narozdil o volani funkci, kde volani pres PLT muze eliminovat
az linker).

Proste je to tak, ze jestli nutne potrebujete u nejakeho kodu usetrit
kazdy tik hodin CPU, ktery usetrit lze, pak se vyhybejte dynamickemu
linkovani.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux