From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,4ac6504560f5ef27 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2004-02-25 04:23:57 PST Path: archiver1.google.com!news2.google.com!news.maxwell.syr.edu!nx02.iad01.newshosting.com!newshosting.com!elnk-atl-nf1!newsfeed.earthlink.net!bigfeed2.bellsouth.net!bigfeed.bellsouth.net!bignumb.bellsouth.net!news.bellsouth.net!bignews4.bellsouth.net.POSTED!not-for-mail From: "David C. Hoos" Newsgroups: comp.lang.ada References: Subject: Re: Little Endian -> Big Endian (Ada95 / GNAT) MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Newsreader: Microsoft Outlook Express 6.00.2800.1158 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 Message-ID: X-Trace: npbhgpngjbkmjfegdbdpiflmbcekedmfhojhikkbagflhcbojhhlgoeeijicpomkaolhbhkndpcifcejdanmacklfjhpiifgdfnogbnmjaemekmhhcpchhbpeojakablhhodeobjdppbnoedhbfbbgdbemghfool NNTP-Posting-Date: Wed, 25 Feb 2004 07:21:54 EST Date: Wed, 25 Feb 2004 06:23:28 -0600 Xref: archiver1.google.com comp.lang.ada:5788 Date: 2004-02-25T06:23:28-06:00 List-Id: "James Amor" wrote in message news:bac31daa.0402250138.fc4ed92@posting.google.com... > Hi, > > At present I am writing a tool to create a file which contains various > extracted ELF symbols. The output data structure, a list of unsigned > 32's, is to be used as part of an image on a PowerPC target. > > Problem: As it is compiled on Wintel the tool is producing an output > in little endian and PowerPC is big endian! > > Question: How do I modify my code to write the output in big endian > format? If you use Stream IO to write the data, then you can take advantage of the solution the GNAT folks created for Distributed Systems (Annex E of the Ada Lanuage Reference Manual). This solution is embodied in the glade supplement to gant. For example, if you're using gant-3.15p, the corresponding glade can be found at ftp://ftp.cs.nyu.edu/pub/gnat/3.15p/glade Then, replace the file s-stratt.adb in your standard gnat distribution with the one from the same version of glade, and re-compile and rebuild the library files (.a), and you have what you want. Now, as long as your types are declared the same on both platforms (with no representation clauses) you will have platform-independence. I'm not sure why GNAT didn't do this from the beginning -- perhaps because they didn't provide an implementation of the Distributed Systems Annex at the beginning. Also, there is a small performance penalty paid for shuffling bits around to achieve platform independence. Hope this helps.