Sziaztok!
Valamiert bizonyos architekturakon (pl msp430) szeret a GCC ilyen .L* lokalis szimbolumokat beletenni a text szegmensbe. Pelda:
$ nm main.elf | sort
[...]
0000cb34 t transmit_get_iface_by_name
0000cb3e t .L8
0000cb58 t .L6
0000cb5e T testled_init
[...]
amik szepen megjelennek az objdump + disassembly kimenetben is:
0000cb34 <transmit_get_iface_by_name>:
cb34: 2a 15 pushm #3, r10 ;16-bit words
cb36: 08 4c mov r12, r8 ;
cb38: 39 40 5c 20 mov #8284, r9 ;#0x205c
cb3c: 4a 43 clr.b r10 ;
0000cb3e <.L8>:
cb3e: 0d 48 mov r8, r13 ;
cb40: 2c 49 mov @r9, r12 ;
cb42: b0 12 72 f0 call #-3982 ;#0xf072
cb46: 0c 93 cmp #0, r12 ;r3 As==00
cb48: 07 24 jz $+16 ;abs 0xcb58
cb4a: 1a 53 inc r10 ;
cb4c: 39 50 36 00 add #54, r9 ;#0x0036
cb50: 3a 90 06 00 cmp #6, r10 ;
cb54: f4 23 jnz $-22 ;abs 0xcb3e
cb56: 3a 43 mov #-1, r10 ;r3 As==11
0000cb58 <.L6>:
cb58: 0c 4a mov r10, r12 ;
cb5a: 28 17 popm #3, r10 ;16-bit words
cb5c: 30 41 ret
0000cb5e <testled_init>:
cb5e: d2 d3 04 02 bis.b #1, &0x0204 ;r3 As==01
cb62: 30 41 ret
Ha meg itten ezeket fel is oldana az ugyan legalabb valamit segithet az ertelmezesben (lasd: 0xcb54-es cimen az a `jnz $-22` ehelyett mondjuk `jnz .L8` is lehetne), de mivel meg az sem, ezert ez ugy erosen ront a kimenetek (nm, objdump) olvashatosagan mar egy kozepes projektnel is... :( Peldaul itten most ennel a projektnel:
$ nm main.elf | grep " T " | wc -l
103
$ nm main.elf | grep ".L" | wc -l
645
azaz minden valodi text szimbolumra jut valamivel tobb mint 6 ilyen label-szeruseg... aztan talaljunk meg valamit itten a szenakazalban... Szoval az X problema az hogy hogyan lehetne azt elerni hogy ezek mar bele se keruljenek a *.o/*.elf-be, az Y problema pedig hogy hamar belekerultek, hogyan lehet kiszedni es/vagy megszabadulni? Az objcopy peldaul tud section pattern-ekre szurni (lasd: `objcopy -j '*' -j '!.persist*' -j ...`), de szimbolum patternre lehet? Tulajdonkeppen semmi nem erdekel ami .L* :] Mas embedded/cross architekturakon (avr, rv32, armv6/v7) nem lattam meg ilyet, de msp430-nal ez most kifejezetten nyugos ha valami szitu van :/
thx, A.
- 327 megtekintés
Hozzászólások
-Wa,--strip-local-absolute
? (Ld. még --keep-locals
.)
- A hozzászóláshoz be kell jelentkezni
Köszi! Igy elsőre mintha nem szendé ki, de az irány az vsz jó lesz :)
szerk: próbálgattam, msp430-nál sajnos nem oldotta meg... de kipróbálom majd a fordítottját is (arm-mal vagy avr-rel, hogy beleteszi-e)
Szerk-szerk: Igen, kicsit vegyes a kep a -Wa,--keep-locals kapcsan is: az arm-none-eabi-gcc meg az avr-gcc beleteszi a .L* szimbolumokat, pont ugy mint ahogy msp430-elf-gcc-nel automatikusan belekerul. De a riscv64-unknown-elf-gcc viszont mar nem teszi bele...
Szerk-szerk-szerk: ami meg feltunt hogy mig az architektura specifikus opciokat a gcc-re egeszen jol rendszerezve osszeszedik (pl az msp430 eseten lasd itten), addig hasonlo, az assemblerrel kapcsolatosos architekturas opciokra mar nem talalni ilyen oldalakat.
- A hozzászóláshoz be kell jelentkezni
Szandekosan irsz itten-t az itt helyett?
- A hozzászóláshoz be kell jelentkezni
Szeged környékén így használják, még a fiatalok is. :-)
- A hozzászóláshoz be kell jelentkezni
itten ni!
- A hozzászóláshoz be kell jelentkezni