@BigBang, post #1
@teh_KaiN, post #2
EDYT: Teraz patrzę na dokumentację GCC i dochodzę do wniosku że to może jednak nie być bug. Wygląda to że ta flaga wywalała cały kod startowy. W tym przypadku kompilator bierze pierwszy symbol z kodu jako punkt wejścia.
@teh_KaiN, post #2
@Hexmage960, post #3
Trzeba dostarczyć swój własny kod startowy i najpewniej podać jego adres dla parametru -e (entry).
Ja sam nie używałem własnego kodu startowego. Kolega Krashan myślę, że coś wie na ten temat z praktyki.
@BigBang, post #4
Na ale bez jaj, to jest C, funkcja main jest specjalna i najprostszy nawet kompilator powinien ją zauważać i start kodu ustawiać odpowiednio
@mschulz, post #5
Nie trzeba. Kompilator od bebbo ignoruje -e bo amigowy format HUNK czegoś takiego nie przewiduje. Kod jest wykonywany od pierwszego słowa pierwszego załadowanego HUNK-a.
@Hexmage960, post #7
@BigBang, post #9
Czyli jakbym nie zrobił żadnej zmiennej globalnej, to program by się uruchomił, bo na początku hunka byłaby prawidłowa instrukcja.
@mschulz, post #10
@BigBang, post #12
@BigBang, post #12
No dobra, sprawdziłem ten Twój kod i tak naprawdę to wnosi on tylko taki "myk", że funkcja _start() z której wołasz main() jest po prostu na początku źródeł, zaraz za deklaracją main(). Zmienne globalne są za nią.
Naprawdę jestem teraz zniesmaczony gcc... żeby takiej prostej sprawy nie potrafił ogarnąć? Jest jeszcze szansa że któryś z zyliona przełączników może to poprawić.
@teh_KaiN, post #13
@mschulz, post #14
No tak. Skoro buduje program bez kodu startowego i sam taki kod dopisuje to musze sie trzymac regul "narzuconych" odgornie przez gcc.
To nie jest problem gcc tylko formatu plikow .o wybranego przez bebbo w amigowej wersji kompilatora. A gcc, jak kazdy inny kompilator, i tak nie daje ci gwarancji ze kolejnosc obiektow w kompilacie jest dokladnie taka sama jak ich kolejnosc w kodzie zrodlowym, bo tego zaden standard C ani C++ nie narzuca. Co wiecej, gcc może kolejnosc przemieszac jezeli bedzie prowadzila do bardziej optymalnego wyniku.
@BigBang, post #16
OK, czyli można się zdecydować na gcc i ale jak się chce tak pokombinować, to mamy program niekompilowalny innymi kompilatorami.
A jakby bebbo nie wybrał formatu wyjściowego hunk tylko elf, to nie byłby to crosskompilator dla AmigaOS m68k, więc i tak by się nie przydał w tej sytuacji.