This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: copying binary input target to a mach-o-le output target
- From: Dave Korn <dave dot korn dot cygwin at googlemail dot com>
- To: Paul Glendenning <pglendenning at solidra dot com>
- Cc: binutils at sourceware dot org
- Date: Fri, 29 May 2009 21:37:51 +0100
- Subject: Re: copying binary input target to a mach-o-le output target
- References: <4A204337.3060301@solidra.com>
Paul Glendenning wrote:
> Hi,
>
> I am using objcopy to copy binary data directly into an object file for
> linking into my executable. I do this under Linux without issue using
> the following command.
>
> objcopy --input-target=binary --binary-architecture=i386
> --output-target=elf32-i386 <binary_input_file> <output_object_file>
>
> Under OSX 10.5 I changed the output target to mach-o-le and I get the
> following assertion:
>
> BFD: BFD (GNU Binutils) 2.19 assertion fail mach-o.c:166
>
> I am using an Intel based mac and the fink disro of binutils so just to
> be sure I downloaded the 2.19.1 source and compiled. This issue occurs
> at the same location.
(Caution, untested!) It looks like this is probably causing your problem:
130 /* Copy any private info we understand from the input bfd
131 to the output bfd. */
132
133 static bfd_boolean
134 bfd_mach_o_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
135 {
136 BFD_ASSERT (bfd_mach_o_valid (ibfd));
137 BFD_ASSERT (bfd_mach_o_valid (obfd));
138
139 obfd->tdata.mach_o_data = ibfd->tdata.mach_o_data;
140 obfd->tdata.mach_o_data->ibfd = ibfd;
141 return TRUE;
142 }
(Line numbers vary because this is from HEAD, not the 2.19 branch).
It might make more sense to simply return if bfd_mach_o_valid returns false
for either BFD, rather than abort here. You could try making that change, but
I can't promise you won't run into other problems elsewhere in the mach-o code.
cheers,
DaveK