From 8052aa474a618ace2343e287195b545a66d87739 Mon Sep 17 00:00:00 2001 From: soypat Date: Sun, 6 Oct 2024 08:52:08 -0300 Subject: [PATCH] fix CI tests by adding test ELF. fix README mbr link --- .gitignore | 1 + README.md | 2 +- build/xelf/file.go | 63 -------------------------------------------- testdata/helloc.elf | Bin 0 -> 16440 bytes 4 files changed, 2 insertions(+), 64 deletions(-) create mode 100755 testdata/helloc.elf diff --git a/.gitignore b/.gitignore index 3b9d416..9c65660 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ picobin !cmd/picobin !boot/picobin !testdata/blink.elf +!testdata/helloc.elf # IDE .vscode/ diff --git a/README.md b/README.md index 4caf22d..c91e4f9 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ go mod download github.com/soypat/tinyboot@latest ## Package layout There are two main top level packages: - [`boot`](./boot): Concerns storage formats for booting a computer such as MBT, GPT and Raspberry Pi's picobin format. - - [`boot/mbt`](./boot/mbt): Master Boot Record Partition Table interfacing. + - [`boot/mbr`](./boot/mbr): Master Boot Record Partition Table interfacing. - [`boot/gpt`](./boot/gpt): GUID Partition Table interfacing. - [`boot/picobin`](./boot/picobin): Raspberry Pi's bootable format for RP2350 and RP2040. diff --git a/build/xelf/file.go b/build/xelf/file.go index 654db98..900126c 100644 --- a/build/xelf/file.go +++ b/build/xelf/file.go @@ -154,69 +154,6 @@ func (f *File) Read(r io.ReaderAt) error { return nil } -func (f *File) WriteTo(w io.Writer) (n int64, err error) { - return n, errors.ErrUnsupported - b := f.buf[:] - err = f.hdr.Validate() - if err != nil { - return 0, err - } - - nput, err := f.hdr.Put(b) - if err != nil { - return n, err - } - nw, err := w.Write(b[:nput]) - n += int64(nw) - if err != nil { - return n, err - } else if nw != nput { - return n, io.ErrShortWrite - } - if err != nil { - return 0, err - } - // We define our ELF layout here. - phtotsize := int64(f.hdr.Phentsize) * int64(f.hdr.Phnum) - shtotsize := int64(f.hdr.Shentsize) * int64(f.hdr.Shnum) - - phOff := n - shOff := phOff + phtotsize - _ = shtotsize - _ = shOff - // And now we consolidate - bo := f.hdr.ByteOrder() - for i := range f.progs { - p := &f.progs[i] - nput, err = p.ProgHeader.Put(b, f.hdr.Class, bo) - if err != nil { - return n, err - } - nw, err := w.Write(b[:nput]) - n += int64(nw) - if err != nil { - return n, err - } else if nw != nput { - return n, io.ErrShortWrite - } - } - for i := range f.sections { - s := &f.sections[i] - nput, err = s.SectionHeader.Put(b, f.hdr.Class, bo) - if err != nil { - return n, err - } - nw, err := w.Write(b[:nput]) - n += int64(nw) - if err != nil { - return n, err - } else if nw != nput { - return n, io.ErrShortWrite - } - } - return 0, nil -} - // Header returns the ELF header. func (f *File) Header() Header { return f.hdr diff --git a/testdata/helloc.elf b/testdata/helloc.elf new file mode 100755 index 0000000000000000000000000000000000000000..af70347421b634b7e4301173cdeda827adc32cb3 GIT binary patch literal 16440 zcmeHOZ)_Y#6`wu(VyBMni_?@#0(fbiHbMCA>^QE|$jLdjlXY?aklJl32&?to`tGXp zp1ZeKoT@63LQta;2~Z0NMM4oD=ob)(en8@jBcnnqq@?0Y1V~t=ky0p-ih^1y<#=!A zz0Ka{oT7dJA?=fP-@HG+H?wbM_hxTrzC1a7Fs5mOsYUD)C}k5$lO@B*gH!;P6(gb( z&VAxOu@2-`sZ;i>VqjHtHP*=6N#6n-aY-yR;U8CO!JJ!&9C2$=1{(y#T+nqOE{+D0 z!`z|@n6urlPe(A2F3&!HnMCG695&@jzjC-T+Q<#c%Q51NLlJSSgj*$? fO#5tds z6Ff#JpJAQ_8&X!Dg$U!82p8rPqmN{Q?ta9mTTc8;`VOSiRo;omY4yFcEyZ!R6Az@C<95(Z|YZppY&vs`H zkC!WsJ!8$4ZHQG^s5lheRIW`Op>fb(&^OSFvWGCoG4TNCd0f@DmeynM4Uq2TZ+r_< z8WVK83cla@KFe%WSA3NmSiedE6Io?vJY)O5M|*1Hv@m~{^Y-mGjF#W&&MyN zg)q)8d$IZzGgQ3~%TV?D`f7LY zX>?p64*pL{|J_d@+j-MCcf+{!*Zsz&_gW0?731}r-rW$OlLEBYSLeHXCvM@feWyqJ z!7OUKW{oqWe@a2oICstKG@c*r0)2h+RZv~e!Nt51Zv};Ra^+TgSLSb(@%k~|TLti) zg&1%Z%Uu}lm)GCCS+D;L8-8*{`pBI6SwurbQ3j$6L>Y)O5M?0BK$L+f15pN|3`7}- zG7x3pf0qILu4UNeaz%fv;+FG5+t#wT51NDDd=fY6^%KA|z_Y-2zEiKC29AW^E|IjS zj|*)np>5mH*8X+)K!tkzW`F%}_4@tjFwrKzaAC|LIDQOz9k}R99PCOy+}-h|_S0hj z*1ezJ)h9m-BK8Y#T!cEeqTg6o;;XUo&ULd;0m>0Y8Hh3vWgyBxlz}J%Q3j$6L>Y)O z5M?0BfXo1|GvsxJyk-#BE+TDE%wNdZN%9P>PuxN>uV36oGQWGtcQVlNI!0cf&GvuX ztXB}SOp6A2t>JU6DiE(RTqXNmN-fS4?;wurM3FWt=AQ{BuG6|jUi--Y{9cOd7Lh)t zm`GB^tUo~w<908TA1vyW#PL3;tLp)!bcN5n^7?iV9=-%inez;+?C+Dz?WXYm zb;j$*!xaznf>tu{y3<4B;}7XOVAb(XeP9R{*$(J~nZcpVNCsBhHaG1V$cWEC6xAat zuX|`z@u&&c{v0UcLX*xC_lfP~(hRA!w~c^VYi+|tw3^mlKo)CzSW4?kQi`7h*3ud; zIUWR#*OYA$SnIP`ZjGM+77njn5L%z;=-AiM0w45a8@26Sn>t#0xAkt+dfE~&h+4=B zO>Iqy{aaeP9_rZJv8Q8d6MAHm&)|)79F91Q6I^1TY1#)}oyc%#zyXC`d5yb4jzPIQ zhHLyad5Uik>to!g&GGnje8aW4_IM1IA#2bH`uMIS?&3 zR~%If)%E^@fQ8Qmz2;O)1;@_on2&0);(E0)KUPA^(sB|TBe z)fQ~WtEQ`NF6|Z4UdcH%SE+a+l`dCuRyke7zmrlqmf;%jK$x6X@lL&&OEW#*pBg+B z!sEF|2H5EDC*XKEo-}w0@biN8d!e8(tWg{Xhu)}?(hE|b6z$nYqX%NMIA=kh5J`~? z`F{=lW8H$Ew;)RTCY;ef9RGWu*QH0}=|>=Lj3q@P+o=CJ>LC(?=&>ta1ARhl5qik~ zJD~3oUH*O_`JWx=E|Y(_{l6oB9;k*N)Q$WwVU9!tp#SjS}}{3lgDibQ%AuoUvkV^ z)y_i@2TtZ(wMtmp=Kxz3%*i7Y=AAYsH139IY#X!*24kvvYQeMSfP1duMJ~bJY`cph zTHj8<{vZN5E<+>I$6cJp8 zz}7+uo-+k}_`oS8D^S58y&{#XEa0OG8f(wh3V^emf(?2lmYn$tm#w)u*M5p6*z#j@ z8M4PkR70P+;j#QtWSm#QP^VwZ+xNloyozI^Z;cuuM1fc%IKPUnWPcKYab)20P*pkRQ*FeICH$96F4@2s+Fw$M>Jt z^xVer9i(voUjSneuM^JaK`@m0=YaVSLij8hm~X=10b(4heh7tN{rr2(yptV?hui;C z!gKzGPL9OG^@Z{HJB{@-KEXKReP9bx82>65gZL3$c{6_|2!=BEAFF=@1stRNUc&Et zyiYRh&oc8r0Jb}T=l8*@IGqJzKPBCgS^sA+;Mn2%c|Pawd&P?b!tsy9IL_<4phFkN z^FF!dGHc