Message-Id: <199907291322.NAA47148@out4.ibm.net> From: "Mark E." To: djgpp-workers AT delorie DOT com, binutils AT sourceware DOT cygnus DOT com Date: Thu, 29 Jul 1999 09:23:19 -0400 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: Re: Another script for building binutils In-reply-to: <19990729020624.1145.qmail@daffy.airs.com> References: <199907290027 DOT AAA82496 AT out5 DOT ibm DOT net> (snowball3 AT bigfoot DOT com) X-mailer: Pegasus Mail for Win32 (v3.11) Reply-To: djgpp-workers AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk > Run objdump -xs on both files, and see what changed. > I have the results with objdump --xs. First, my sample C program: int fox(int x) { return x + 1; } int main() { fox(1); fox(2); fox(3); return 0; } Here is main.s compiled with 'gcc -g main.c': .file "main.c" gcc2_compiled.: ___gnu_compiled_c: .text .p2align 2 .def _fox; .val _fox; .scl 2; .type 044; .endef .globl _fox _fox: .def .bf; .val .; .scl 101; .line 2; .endef .def _x; .val 8; .scl 9; .type 04; .endef pushl %ebp movl %esp,%ebp .ln 2 movl 8(%ebp),%edx incl %edx movl %edx,%eax jmp L1 .ln 3 .p2align 2 L1: movl %ebp,%esp popl %ebp ret .def .ef; .val .; .scl 101; .line 3; .endef .def _fox; .val .; .scl -1; .endef .p2align 2 .def _main; .val _main; .scl 2; .type 044; .endef .globl _main _main: .def .bf; .val .; .scl 101; .line 7; .endef pushl %ebp movl %esp,%ebp .ln 2 pushl $1 call _fox addl $4,%esp .ln 3 pushl $2 call _fox addl $4,%esp .ln 4 pushl $3 call _fox addl $4,%esp .ln 6 xorl %eax,%eax jmp L2 .ln 7 .p2align 2 L2: movl %ebp,%esp popl %ebp ret .def .ef; .val .; .scl 101; .line 7; .endef .def _main; .val .; .scl -1; .endef Now here is the difference between the two objdumps. The most substantial differences appear to at [4] and [11]. --- out1.txt Thu Jul 29 09:10:16 1999 +++ out2.txt Thu Jul 29 09:10:20 1999 @@ -1,17 +1,17 @@ -main.o: file format coff-go32 -main.o -architecture: i386, flags 0x00000035: -HAS_RELOC, HAS_LINENO, HAS_SYMS, HAS_LOCALS +main2.o: file format coff-go32 +main2.o +architecture: i386, flags 0x00000034: +HAS_LINENO, HAS_SYMS, HAS_LOCALS start address 0x00000000 Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000003c 00000000 00000000 0000008c 2**2 CONTENTS, ALLOC, LOAD, CODE - 1 .data 00000000 0000003c 0000003c 00000000 2**2 + 1 .data 00000000 00000000 00000000 00000000 2**2 ALLOC, LOAD, DATA - 2 .bss 00000000 0000003c 0000003c 00000000 2**2 + 2 .bss 00000000 00000000 00000000 00000000 2**2 ALLOC SYMBOL TABLE: [ 0](sec -2)(fl 0x00)(ty 0)(scl 103) (nx 1) 0x00000000 main.c @@ -19,17 +19,17 @@ [ 2](sec 1)(fl 0x00)(ty 0)(scl 6) (nx 0) 0x00000000 gcc2_compiled. [ 3](sec 1)(fl 0x00)(ty 0)(scl 6) (nx 0) 0x00000000 ___gnu_compiled_c [ 4](sec 1)(fl 0x00)(ty 24)(scl 2) (nx 1) 0x00000000 _fox -AUX lnno 16 size 0x0 tagndx 0 endndx 11 +AUX lnno 16 size 0x0 tagndx 0 _fox : 2 : 0x3 3 : 0xb [ 6](sec 1)(fl 0x00)(ty 0)(scl 101) (nx 1) 0x00000000 .bf AUX lnno 2 size 0x0 tagndx 0 endndx 13 -[ 8](sec -1)(fl 0x00)(ty 4)(scl 9) (nx 0) 0x00000008 _x +[ 8](sec -2)(fl 0x00)(ty 4)(scl 9) (nx 0) 0x00000008 _x [ 9](sec 1)(fl 0x00)(ty 0)(scl 101) (nx 1) 0x00000010 .ef -AUX lnno 3 size 0x0 tagndx 0 +AUX lnno 2 size 0x0 tagndx 0 [ 11](sec 1)(fl 0x00)(ty 24)(scl 2) (nx 1) 0x00000010 _main -AUX lnno 44 size 0x0 tagndx 0 endndx 17 +AUX lnno 44 size 0x0 tagndx 0 _main : 2 : 0x13 3 : 0x1d @@ -42,9 +42,9 @@ AUX lnno 7 size 0x0 tagndx 0 [ 17](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text AUX scnlen 0x3c nreloc 0 nlnno 9 -[ 19](sec 2)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x0000003c .data +[ 19](sec 2)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .data AUX scnlen 0x0 nreloc 0 nlnno 0 -[ 21](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x0000003c .bss +[ 21](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss AUX scnlen 0x0 nreloc 0 nlnno 0 Here's the two objdumps: First the older one... main.o: file format coff-go32 main.o architecture: i386, flags 0x00000035: HAS_RELOC, HAS_LINENO, HAS_SYMS, HAS_LOCALS start address 0x00000000 Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000003c 00000000 00000000 0000008c 2**2 CONTENTS, ALLOC, LOAD, CODE 1 .data 00000000 0000003c 0000003c 00000000 2**2 ALLOC, LOAD, DATA 2 .bss 00000000 0000003c 0000003c 00000000 2**2 ALLOC SYMBOL TABLE: [ 0](sec -2)(fl 0x00)(ty 0)(scl 103) (nx 1) 0x00000000 main.c File [ 2](sec 1)(fl 0x00)(ty 0)(scl 6) (nx 0) 0x00000000 gcc2_compiled. [ 3](sec 1)(fl 0x00)(ty 0)(scl 6) (nx 0) 0x00000000 ___gnu_compiled_c [ 4](sec 1)(fl 0x00)(ty 24)(scl 2) (nx 1) 0x00000000 _fox AUX lnno 16 size 0x0 tagndx 0 endndx 11 _fox : 2 : 0x3 3 : 0xb [ 6](sec 1)(fl 0x00)(ty 0)(scl 101) (nx 1) 0x00000000 .bf AUX lnno 2 size 0x0 tagndx 0 endndx 13 [ 8](sec -1)(fl 0x00)(ty 4)(scl 9) (nx 0) 0x00000008 _x [ 9](sec 1)(fl 0x00)(ty 0)(scl 101) (nx 1) 0x00000010 .ef AUX lnno 3 size 0x0 tagndx 0 [ 11](sec 1)(fl 0x00)(ty 24)(scl 2) (nx 1) 0x00000010 _main AUX lnno 44 size 0x0 tagndx 0 endndx 17 _main : 2 : 0x13 3 : 0x1d 4 : 0x27 6 : 0x31 7 : 0x35 [ 13](sec 1)(fl 0x00)(ty 0)(scl 101) (nx 1) 0x00000010 .bf AUX lnno 7 size 0x0 tagndx 0 [ 15](sec 1)(fl 0x00)(ty 0)(scl 101) (nx 1) 0x0000003c .ef AUX lnno 7 size 0x0 tagndx 0 [ 17](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text AUX scnlen 0x3c nreloc 0 nlnno 9 [ 19](sec 2)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x0000003c .data AUX scnlen 0x0 nreloc 0 nlnno 0 [ 21](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x0000003c .bss AUX scnlen 0x0 nreloc 0 nlnno 0 Contents of section .text: 0000 5589e58b 55084289 d0eb0190 89ec5dc3 U...U.B.......]. 0010 5589e56a 01e8e6ff ffff83c4 046a02e8 U..j.........j.. 0020 dcffffff 83c4046a 03e8d2ff ffff83c4 .......j........ 0030 0431c0eb 038d7600 89ec5dc3 .1....v...]. and the newer one which causes problems... main2.o: file format coff-go32 main2.o architecture: i386, flags 0x00000034: HAS_LINENO, HAS_SYMS, HAS_LOCALS start address 0x00000000 Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000003c 00000000 00000000 0000008c 2**2 CONTENTS, ALLOC, LOAD, CODE 1 .data 00000000 00000000 00000000 00000000 2**2 ALLOC, LOAD, DATA 2 .bss 00000000 00000000 00000000 00000000 2**2 ALLOC SYMBOL TABLE: [ 0](sec -2)(fl 0x00)(ty 0)(scl 103) (nx 1) 0x00000000 main.c File [ 2](sec 1)(fl 0x00)(ty 0)(scl 6) (nx 0) 0x00000000 gcc2_compiled. [ 3](sec 1)(fl 0x00)(ty 0)(scl 6) (nx 0) 0x00000000 ___gnu_compiled_c [ 4](sec 1)(fl 0x00)(ty 24)(scl 2) (nx 1) 0x00000000 _fox AUX lnno 16 size 0x0 tagndx 0 _fox : 2 : 0x3 3 : 0xb [ 6](sec 1)(fl 0x00)(ty 0)(scl 101) (nx 1) 0x00000000 .bf AUX lnno 2 size 0x0 tagndx 0 endndx 13 [ 8](sec -2)(fl 0x00)(ty 4)(scl 9) (nx 0) 0x00000008 _x [ 9](sec 1)(fl 0x00)(ty 0)(scl 101) (nx 1) 0x00000010 .ef AUX lnno 2 size 0x0 tagndx 0 [ 11](sec 1)(fl 0x00)(ty 24)(scl 2) (nx 1) 0x00000010 _main AUX lnno 44 size 0x0 tagndx 0 _main : 2 : 0x13 3 : 0x1d 4 : 0x27 6 : 0x31 7 : 0x35 [ 13](sec 1)(fl 0x00)(ty 0)(scl 101) (nx 1) 0x00000010 .bf AUX lnno 7 size 0x0 tagndx 0 [ 15](sec 1)(fl 0x00)(ty 0)(scl 101) (nx 1) 0x0000003c .ef AUX lnno 7 size 0x0 tagndx 0 [ 17](sec 1)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .text AUX scnlen 0x3c nreloc 0 nlnno 9 [ 19](sec 2)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .data AUX scnlen 0x0 nreloc 0 nlnno 0 [ 21](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss AUX scnlen 0x0 nreloc 0 nlnno 0 Contents of section .text: 0000 5589e58b 55084289 d0eb0190 89ec5dc3 U...U.B.......]. 0010 5589e56a 01e8e6ff ffff83c4 046a02e8 U..j.........j.. 0020 dcffffff 83c4046a 03e8d2ff ffff83c4 .......j........ 0030 0431c0eb 038d7600 89ec5dc3 .1....v...]. --- Mark Elbrecht, snowball3 AT bigfoot DOT com http://snowball.frogspace.net/