Re: GNU C kérdés..

Andras Tantos andras at tantosonline.com
Tue Jul 10 22:49:02 CEST 2007


Hali!

Ezt nem ertem...  Ha sajat section-t csinalsz, amit a linker eddig nem 
ismert, akkor anelkul, hogy modositanad a linker script-et ugy ki fogja 
vagni a vegleges fajlbol az osszes ilyen valtozodat, mint a huzat. Tehat a 
script-be valo belenyulast nem uszod meg (hacsak nem adod mindezt meg a 
command-line-ban, de nem igazan tudom, hogy azt hogyan lehetne ertelmesen 
megoldani). Ha egy mar letezo szekciot hasznalsz, akkor keress olyat, 
amelyiknek vannak ilyen szimbolum-deklaracioi, es hasznald azt. De mit is 
akarsz pontosan csinalni? Miert kell a section eleje? Talan van mas megoldas 
is (pl. a struktura, amit Arnold javasolt).

Udv,
Tantos Andras

----- Original Message ----- 
From: "hg12345" <hg12345 at freemail.hu>
To: <elektro at tesla.hu>
Sent: Tuesday, July 10, 2007 10:42 AM
Subject: Re: GNU C kérdés..


Szia!

Ezeket gyárilag definialja a GNU  (C30) forditó, de szeretnék
constansokat tárolni egy saját section-ban a program területen, ezt C-
ből tudom definiálni, a konstansokat ide tudom menteni, de szeretném
a section kezdöcimét megkapni, úgy hogy ne kelljen a linkerscriptbe
belenyúlni!
A linkerscriptben meghatározhatok egy ilyen section a program
területen, ennek már akár kontansként is tudom a cimét....., de C-ből
szeretném elérni!



Andras Tantos <andras at tantosonline.com> írta:

> Nezz bele a linker script-be. Ez deklaral(hat) szimbolumokat, amik a
> section-ok kezdeten, vegen vannak. pl:
>
>   .data           :
>   {
>     __data_start = . ;
>     *(.data .data.* .gnu.linkonce.d.*)
>     KEEP (*(.gnu.linkonce.d.*personality*))
>     SORT(CONSTRUCTORS)
>   }
>   .data1          : { *(.data1) }
>   _edata = .; PROVIDE (edata = .);
>   __bss_start = .;
>   __bss_start__ = .;
>   .bss            :
>   {
>    *(.dynbss)
>    *(.bss .bss.* .gnu.linkonce.b.*)
>    *(COMMON)
>    /* Align here to ensure that the .bss section occupies space up to
>       _end.  Align after .bss to ensure correct alignment even if the
>       .bss section disappears because there are no input sections.
>       FIXME: Why do we need it? When there is no .bss section, we
don't
>       pad the .data section.  */
>    . = ALIGN(. != 0 ? 32 / 8 : 1);
>   }
>   _bss_end__ = . ; __bss_end__ = . ;
>
> Itt a __data_start a .data section elejen van, az _edata, edata,
__bss_start
> es __bss_start__ a .bss section elen, mig a _bss_end__ es
__bss_end__ a .bss
> section vegen.
>
> Ezeket a szimbolumokat c-bol a kovetkezo keppen lehet elerni:
>
> extern char __data_start;
> extern char __bss_start__;
> extern char _bss_end__;
>
> es ezek utan:
>
> void *bss_start = &__bss_start__;
> size_t bss_size = (size_t)(&_bss_end__)-(size_t)(&__bss_start__);
>
> Hogy kell-e az elso alahuzas, vagy sem, az a GCC-n, pontosabban a
> binutils-on mulik (nemelyik platformon kell, mashol nem). A valtozo
tipusa
> mellekes, neked csak a cime fog kelleni.
>
> Udv,
> Tantos Andras
>
> ----- Original Message ----- 
> From: "hg12345" <hg12345 at freemail.hu>
> To: <elektro at tesla.hu>
> Sent: Tuesday, July 10, 2007 5:06 AM
> Subject: GNU C kérdés..
>
>
> Hi!
>
> Hogyan tudom kinyerni egy kiválasztott "section" kezdöcímét a C
> programban!
>
>
> definiálni
>
> char __attribute__ (( section (".probaTex") space(prog)
> Str1="1234567890";
>
> (A definició változhat forditonként...)
>
> A fenti section kezdöcímére lennék kiváncs?
>
>
>
> Melyik testrészeden szabadulnál végleg a szőrtől? Az Aesthetica-ban
most
> akár 50% kedvezményt is kaphatsz egyes területek lézeres
kezelésére! Klikk
> ide a részletekért!
> http://www.webdesign.hu/aesthetica/flash_microsite/?
id=12;p_code=3005
>
>
>
>
> -----------------------------------------
>           elektro[-flame|-etc]
>
>
>
> -----------------------------------------
>           elektro[-flame|-etc]
>

Melyik testrészeden szabadulnál végleg a szőrtől? Az Aesthetica-ban most 
akár 50% kedvezményt is kaphatsz egyes területek lézeres kezelésére! Klikk 
ide a részletekért!
http://www.webdesign.hu/aesthetica/flash_microsite/?id=12;p_code=3005




-----------------------------------------
          elektro[-flame|-etc]





More information about the Elektro mailing list