I have a program using libbfd which merges multiple elf (and other
format) executables into a single elf file. Each executable is given its
own program segment. If your interested look at
ftp://ftp.cse.unsw.edu.au/pub/users/awigins it's in the ediot*.tar.gz
archive.
Cheers Adam
On Fri, 14 Jul 2000, Jim Kasper wrote:
> Sam,
> I had same problem, and while I am sure there must be a more elegant
> way, I ended up doing as Tom suggested. I did a make on the images
> seperatly, The boot part set with ld_script to 0x00, the second image set to
> a ram location. My little script then checked sizes and combined images.
>
>
> #!/bin/sh
> # little script gets size of first from current dir
> # and size of second from different source tree
> #copies first to a file, pads it out, then adds second
>
>
> size_boot=`ls -l boot_obj|awk '{print $5}' `
> size_top=`ls -l /usr/src/zblob/src/util.obj|awk '{print $5}' `
> #copy first object
> dd if=boot_obj of=sboot
> #pad with zeroes to 64K
>
> dd bs=1c if=/dev/zero of=sboot seek=$size_boot count=$((65536-$size_boot))
> # seek to boundry, copy second file
> dd bs=1c if=/usr/src/zblob/src/util.obj of=sboot seek=65536c
> count=$size_top
>
>
>
> uuencode sboot freddy > sboot.uu
>
>
>
> -----Original Message-----
> From: Tom Walsh
> To: [EMAIL PROTECTED]
> Cc: [EMAIL PROTECTED]
> Sent: 07/14/00 11:20
> Subject: Re: Need method to combine multiple binary images into one. (ld?)
>
> S A McConnell wrote:
> >
> > I am showing my lack of Linux/Unix experience....
> >
> > I have five different binary images. To speed and simplify the
> > loading/Flashing process I would like to combine the images into a
> > single file placing each image at a set location. ( Image1 @ 0x0,
> Image2
> > @ 0x3800, Image3 @ 0x10000....) There will be holes between each
> image.
> >
> > The images are all ARM binaries. The command 'file' describes them as
> > 'data' files.
> >
> > I tried to us arm-linux-ld but it complained about not knowing the
> > format. I looked in the documentation but did not see a way to tell
> the
> > linker to treat it as just data.
> >
> > $file image1
> > image1:data
> >
> > $arm-linux-gcc -Timage.ld image1 image2 image3 image4 image5
> > image1: file not recognized: File format not recognized
> > collect2: ld returned 1 exit status
> >
> > INPUT(image1 image2 image3 image4 image5)
> >
> > OUTPUT (bigimage)
> >
> > SECTIONS
> > {
> > output :
> > {
> > image1
> > . = 0x3800;
> > image2
> > . = 0x4000;
> > image3
> > . = 0x1000;
> > image4
> > . = 0x100000;
> > image5
> > }
> > }
> >
> > -------------------------------
> > Does anyone have a suggestion about how to do this with or without the
> > linker?
>
>
>
> Well, you are on the right track if the images were object files which
> contained symbolic info identifying segments within the files. If that
> were the case, then you would need to create and 'ld' file that
> specified which segment got placed into where.
>
> But, if your file is pure, raw, binary data, I would suggest that you
> write a quick program, or script, to append extra bytes to each image,
> then cat them together. Use 'dd' to spec the number & value of the
> appended padding.
>
>
> TomW
>
>
> >
> > Thanks,
> > SAM
> >
> > unsubscribe: body of `unsubscribe linux-arm' to
> [EMAIL PROTECTED]
> > ++ Please use [EMAIL PROTECTED] for
> ++
> > ++ kernel-related discussions.
> ++
>
> --
> Tom Walsh - WN3L - Embedded Systems Consultant
> 'www.openhardware.net', 'www.cyberiansoftware.com'
> "Windows? No thanks, I have work to do..."
>
> unsubscribe: body of `unsubscribe linux-arm' to
> [EMAIL PROTECTED]
> ++ Please use [EMAIL PROTECTED] for
> ++
> ++ kernel-related discussions.
> ++
>
> unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]
> ++ Please use [EMAIL PROTECTED] for ++
> ++ kernel-related discussions. ++
>
unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]
++ Please use [EMAIL PROTECTED] for ++
++ kernel-related discussions. ++