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