This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
I add some printf in binutils/bfd/archive.c to print out some value. ---------------------------------------------------------------------- 380 if (bfd_bread (hdrp, sizeof (struct ar_hdr), abfd) != sizeof (struct ar_hdr)) 381 { 382 if (bfd_get_error () != bfd_error_system_call) 383 bfd_set_error (bfd_error_no_more_archived_files); 384 return NULL; 385 } 386 printf( "-4- hdr.ar_mag [%s], ARFMAG [%s], mag [%s]\n", hdr.ar_fmag, ARFMAG, mag == NULL ? "(null)" : mag ); 387 if (strncmp (hdr.ar_fmag, ARFMAG, 2) != 0 388 && (mag == NULL 389 || strncmp (hdr.ar_fmag, mag, 2) != 0)) 390 { 391 bfd_set_error (bfd_error_malformed_archive); 392 return NULL; 393 } 394 395 errno = 0; 396 parsed_size = strtol (hdr.ar_size, NULL, 10); 397 printf( "-4- hdr.ar_size [%s], parsed_size %d, ar_name [%s]\n", hdr.ar_size, (int)parsed_size, hdr.ar_name ); 398 if (errno != 0) 399 { 400 bfd_set_error (bfd_error_malformed_archive); 401 return NULL; 402 } --------------------------------------------------------------- and from the log, the first some times, it reads the archive successfully : ---------------------------------------------------------- *** [bfd_generic_archive_p:644] begin read file [..\target\x86_64-pc-mingw32\lib\libmingw32.a] -4- hdr.ar_mag [` ], ARFMAG [` ], mag [(null)] -4- hdr.ar_size [1758 ` ], parsed_size 1758, ar_name [/ 1191037575 0 0 0 1758 ` ] -4- hdr.ar_mag [` ], ARFMAG [` ], mag [(null)] -4- hdr.ar_size [22 ` ], parsed_size 22, ar_name [// 22 ` ] -2- slurp ok -4- hdr.ar_mag [` ], ARFMAG [` ], mag [(null)] -4- hdr.ar_size [22 ` ], parsed_size 22, ar_name [// 22 ` ] -3- extended ok -4- hdr.ar_mag [` ], ARFMAG [` ], mag [(null)] -4- hdr.ar_size [2985 ` ], parsed_size 2985, ar_name [crt0_c.o/ 1191037555 500 501 100664 2985 ` ] *** has map and first object failed. ----------------------------------------------------------- but the last some times, it reads failed ------------------------------------------------------------ *** [bfd_generic_archive_p:644] begin read file [..\target\x86_64-pc-mingw32\lib\libmingw32.a] -4- hdr.ar_mag [` ], ARFMAG [` ], mag [(null)] -4- hdr.ar_size [1758 ` ], parsed_size 1758, ar_name [/ 1191037575 0 0 0 1758 ` ] -4- hdr.ar_mag [` ], ARFMAG [` ], mag [(null)] -4- hdr.ar_size [22 ` ], parsed_size 22, ar_name [// 22 ` ] -2- slurp ok -4- hdr.ar_mag [ `], ARFMAG [` ], mag [(null)] -3- namedata is NULL *** slurp or extend failed ---------------------------------------------------------- the hdr head reads " hdr.ar_mag [ `] ", it should be "`v\01", I don't understand why this value suddenly goes wrong ... 2007/10/4, zhou drangon <drangon.mail@gmail.com>: > under x86_64 linux, I built the cross x86_64-pc-mingw32 compiler using the > latest CVS/SVN head of binutils gcc mingw-w64, > and the use the cross compiler to build the native x86_64-pc-mingw32 > compiler toolchain. > > Then I ran the compiler in native WinXP x64, the compiler toolchain > failed to compile. > And I think this is mostly a bug of ld.exe when reading the archive file. > > A very simple "hello world" program t3.c, use gcc.exe and as.exe to > create obj file : > ..\target\bin\gcc -S t3.c > ..\target\bin\as t3.s -o t3.o > > then the following command can generate t3.exe successfully under command line > > ..\target\bin\ld.exe -static -o t3.exe > ..\target\x86_64-pc-mingw32\lib\crt2.o > ..\target\x86_64-pc-mingw32\lib\crtbegin.o -L > ..\target\x86_64-pc-mingw32\lib t3.o t3_pp.o -lmingw32 -lmoldname > -lmingwex -lmsvcrt -luser32 -lkernel32 -ladvapi32 -lshell32 -lmingw32 > -lmoldname -lmingwex -lmsvcrt > ..\target\x86_64-pc-mingw32\lib\crtend.o > > but if I double the "-lmingw32", it failed to generate exe file > > ..\target\bin\ld.exe -static -o t3.exe > ..\target\x86_64-pc-mingw32\lib\crt2.o > ..\target\x86_64-pc-mingw32\lib\crtbegin.o -L > ..\target\x86_64-pc-mingw32\lib t3.o t3_pp.o -lmingw32 -lmingw32 > -lmoldname -lmingwex -lmsvcrt > -luser32 -lkernel32 -ladvapi32 -lshell32 -lmingw32 -lmoldname -lmingwex -lmsvcrt > ..\target\x86_64-pc-mingw32\lib\crtend.o > ..\target\x86_64-pc-mingw32\lib\libmingw32.a: file not recognized: File format n > ot recognized > > If I run the command similar with the first successful example ( mainly change > the "\" to "/" ) in MSYS, run the same command several times, > all the odd times run successfule and all the even times run failed. > the same command! > > How can I get more information or debug it ? >
Attachment:
ld.log
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |