From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fred Richardson To: meissner@cygnus.com Cc: egcs@cygnus.com Subject: Re: GNU ld on x86 Solaris Date: Wed, 05 Nov 1997 23:22:00 -0000 Message-id: <199711060521.AAA29074@bbn.com> References: <199711060315.WAA16504@tweedledumb.cygnus.com> X-SW-Source: 1997-11/msg00205.html Mike- Thanks for the info! I took a closer look at the program headers when I link with the Solaris x86 linker. Here are the 6 fields it uses: ============================================ | On a x86 Solaris box: ============================================ % ../binutils/objdump --all-headers foo.2 foo.2: file format elf32-i386 foo.2 architecture: i386, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED start address 0x08048834 Program Header: PHDR off 0x00000034 vaddr 0x08048034 paddr 0x00000000 align 2**0 filesz 0x000000c0 memsz 0x000000c0 flags r-x INTERP off 0x0000013c vaddr 0x00000000 paddr 0x00000000 align 2**0 filesz 0x00000011 memsz 0x00000000 flags r-- LOAD off 0x00000000 vaddr 0x08048000 paddr 0x00000000 align 2**12 filesz 0x000014bc memsz 0x000014bc flags r-x LOAD off 0x000014bc vaddr 0x0804a4bc paddr 0x00000000 align 2**12 filesz 0x0000060c memsz 0x00000614 flags rwx DYNAMIC off 0x000014ec vaddr 0x0804a4ec paddr 0x00000000 align 2**0 filesz 0x00000088 memsz 0x00000000 flags rwx NOTE off 0x00001ac8 vaddr 0x00000000 paddr 0x00000000 align 2**0 filesz 0x00000050 memsz 0x00000000 flags --- ============================================ | On a sparc Solaris box: ============================================ % objdump --all-headers foo foo: file format elf32-sparc foo architecture: sparc, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED start address 0x0001051c Program Header: PHDR off 0x00000034 vaddr 0x00010034 paddr 0x00010034 align 2**2 filesz 0x000000a0 memsz 0x000000a0 flags r-x INTERP off 0x000000d4 vaddr 0x000100d4 paddr 0x000100d4 align 2**0 filesz 0x00000011 memsz 0x00000011 flags r-- LOAD off 0x00000000 vaddr 0x00010000 paddr 0x00010000 align 2**16 filesz 0x00000746 memsz 0x00000746 flags r-x LOAD off 0x00000748 vaddr 0x00020748 paddr 0x00020748 align 2**16 filesz 0x00000188 memsz 0x000001cc flags rwx DYNAMIC off 0x00000840 vaddr 0x00020840 paddr 0x00020840 align 2**2 filesz 0x00000090 memsz 0x00000090 flags rw- So I wonder what "NOTE" is for... I also found that if I run the linker without including: /usr/ccs/lib/values-Xa.o the program links successfully. But on the sparc, the same file is included without causing a hitch... Well, one further clue. On the sparc, each of these files: /usr/ccs/lib/values-Xa.o /usr/ccs/lib/values-Xc.o /usr/ccs/lib/values-Xs.o /usr/ccs/lib/values-Xt.o has these sections: 0 .text 1 .data 2 .rodata 3 .stab.index 4 .stab.indexstr 5 .comment but on the x86, they have these sections: 0 .text 1 .stab.index 2 .stab.indexstr 3 .comment 4 .data 5 .stab.excl 6 .stab.exclstr Could the ".stab.excl" and ".stab.exclstr" have something to do with the new "NOTE" section? I'm afraid I don't really know what any of this is... -Fred