https://sourceware.org/bugzilla/show_bug.cgi?id=23299

            Bug ID: 23299
           Summary: macOS: objcopy renders object files unusable
           Product: binutils
           Version: 2.31 (HEAD)
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: mephi42 at gmail dot com
  Target Milestone: ---

$ cat main.c
int main() {}

$ gcc -c main.c

$ gcc main.o -o main

$ binutils-gdb/binutils/objcopy main.o main1.o

$ gcc main1.o -o main1
ld: object file main1.o was built for different x86_64 sub-type (-2147483645)
than link command line (3) file 'main1.o' for architecture x86_64

Culprit:

--- a/bfd/mach-o-x86-64.c
+++ b/bfd/mach-o-x86-64.c
@@ -54,7 +54,7 @@ bfd_mach_o_x86_64_mkobject (bfd *abfd)
   mdata->header.magic = BFD_MACH_O_MH_MAGIC_64;
   mdata->header.cputype = BFD_MACH_O_CPU_TYPE_X86_64;
   mdata->header.cpusubtype =
-    BFD_MACH_O_CPU_SUBTYPE_X86_ALL | BFD_MACH_O_CPU_SUBTYPE_LIB64;
+    BFD_MACH_O_CPU_SUBTYPE_X86_ALL;
   mdata->header.byteorder = BFD_ENDIAN_LITTLE;
   mdata->header.version = 2;

I'm not proposing to commit this, since I don't know what this flag is for -
the following patch just demonstrates that removing it makes things work in
this particular case. The proper fix might be to copy cpusubtype from ibfd to
obfd, but I'm not sure what would be the right place for this.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to