This is the mail archive of the cygwin mailing list for the Cygwin 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]

[1.7] binutils-2.19.51-1: ld -r bug ?


Testing build of grub 1.97 beta on Cygwin 1.7, I found that the grub .mod files are much larger than on 1.5. The modules are build by 'ld -r' (and later converted to ELF).

The root of the problem is that the binutils-2.19.51-1 ld behavior differs from previous 1.5 binutils. The new ld increases the size of each segment by the size of the previous segment. Bug?


Testcase:


$ cat segm.c
void text() { __asm__(".space 104"); }
char       data[256] = "DATA";
const char rdata[16] = "RDATA";

$ gcc -c segm.c


cygwin-1.5: $ cygcheck -f /bin/ld binutils-20080624-2

$ ld -r -o segm-r5.o segm.o


cygwin-1.7: $ cygcheck -f /bin/ld binutils-2.19.51-1

$ ld -r -o segm-r7.o segm.o


$ size segm.o segm-*.o text data bss dec hex filename 128 256 0 384 180 segm.o 128 256 0 384 180 segm-r5.o 512 384 400 1296 510 segm-r7.o


$ objdump -s segm-r*.o


segm-r5.o: file format pe-i386

Contents of section .text:
0000 5589e500 00000000 00000000 00000000  U...............
...
0060 00000000 00000000 0000005d c3909090  ...........]....
Contents of section .data:
0080 44415441 00000000 00000000 00000000  DATA............
...
0170 00000000 00000000 00000000 00000000  ................
Contents of section .rdata:
0180 52444154 41000000 00000000 00000000  RDATA...........

segm-r7.o: file format pe-i386

Contents of section .text:
0000 5589e500 00000000 00000000 00000000  U...............
...
0060 00000000 00000000 0000005d c3909090  ...........]....
Contents of section .data:
0000 00000000 00000000 00000000 00000000  ................
...
0080 44415441 00000000 00000000 00000000  DATA............
...
0170 00000000 00000000 00000000 00000000  ................
Contents of section .rdata:
0000 00000000 00000000 00000000 00000000  ................
...
0180 52444154 41000000 00000000 00000000  RDATA...........


There are no related changes in the builtin linker scripts (ld --verbose -r).


Christian


-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]