# ooh! test input command file for elftosb 2! options { searchPath = "elftosb2:elftosb2/elf_test_files"; maximumLoadBlock = 4K; sectionAlign = 4K; productVersion = "4.4.720"; componentVersion = "4.4.999"; coalesce = yes; } constants { ocram_start = 0; ocram_size = 256K; ocram_end = ocram_start + ocram_size - 1; prec_test = 1 + 5 * 10; paren_test = (1 + 5) * 10; a = 123; foo = (1 + 0x1cf1.w).w ^ 5 + a; bar1 = 0xa << 2; bar2 = bar1 | 0x1000; bar3 = bar2 & 0x5555; bar4 = bar3 >> 1; mod = 35 % 16; n = -1; x = 1 + -2; c1 = 'x'; c2 = 'oh'; c4 = 'shit'; # test int size promotion x = 0xff.b; y = 0x1234.h; z = 0x55aa55aa.w; xx = x - (x / 2.b); # should produce byte xy = x + y; # should produce half-word xz = x - z; # should produce word yz = y + z; # should produce word xh = x.h; xw = x.w; } sources { hostlink = extern(0); redboot = extern(1); sd_player_elf="elftosb2/elf_test_files/sd_player_gcc"; sd_player_srec="elftosb2/elf_test_files/sd_player_gcc.srec"; datafile="elftosb2/elf_test_files/hello_NOR_arm"; } #section('foo!') { # load 0.w > ocram_start..ocram_end; # word fill all ocram with 0 # # load hostlink; # load all of hostlink source # # load 0x1000ffff.w > 0x1000; # load a word to address 0x1000 # load 0x55aa.h > 0x2000; # load a half-word to address 0x2000 # load redboot; # load all sections of redboot source # # from hostlink { # load $.*.text; # load some sections to their natural location # call :_start; # call function "_start" from hostlink # call hostlink:foofn; # call function "foofn" from hostlink # # call :monkey (1 + 1); # call function "monkey" from hostlink with an argument # # load $* > .; # load all sections of hostlink to their natural location # # load $.text > 0x1000; # load .text section to address 0x1000 # # load 0x55.b > 0x0..0x4000; # fill 0 through 0x4000 with byte pattern 0x55 # } # # load $*.text from hostlink > .; # load sections match "*.text" from hostlink to default places # # jump redboot; # jump to entry point of redboot source #} ## this section... #section(2) { # from sd_player_elf { # load $* > .; # call :_start(); # } #} # ## and this one are both equivalent except for section ids #section(3) { # load $* from sd_player_elf; # call sd_player_elf:_start(); #} # #section(100) { # # set the value of a symbol # load hostlink; # load 0x5555.h > hostlink:g_USBPID; # # # load a string to memory # load "this is a string" > 0x1e0; #} section (32) { load sd_player_srec; call sd_player_srec; } #section('rsrc') <= datafile;