This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB 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]

gcc HEAD bad stabs (?)


I think gcc HEAD is emitting bad stabs again,
and need some confirmation before I can file a bug report.

The questionable stabs happen when 'main' calls 'factorial',
but there is no prototype for 'factorial' yet.  Here are all
the stabs after the boilerplate stabs.  The full source code
and assembly code are at the end of the message.

	# some stabs for factorial
	.stabs	"factorial:F(0,3)",36,0,13,factorial
	.stabs	"value:p(0,3)",160,0,12,8
	.stabs	"value:r(0,3)",64,0,12,3
	.stabs	"",36,0,0,.Lscope0-factorial
	# some stabs for main
	.stabs	"main:F(0,3)",36,0,6,main
	.stabs	"argc:p(0,3)",160,0,5,8
	.stabs	"argv:p(0,21)=*(3,36)",160,0,5,12
	.stabs	"envp:p(0,21)",160,0,5,16
	.stabs	"/usr/include/stdlib.h",132,0,0,.Ltext1
	.stabs	"z0.c",132,0,0,.Ltext2
	# stray stab for factorial!!
	.stabs	"factorial:F(0,3)",36,0,13,factorial
	# end of main
	.stabs	"",36,0,0,.Lscope1-main
	.stabs "",100,0,0,.Letext

Look at that stray stab for factorial, which occurs just
before the stab for .Lscope1-main!

This causes a subtle problem in gdb.  gdb gets a bogus endaddr
for the block with main in it, so find_function_start_sal fails
to adjust for the prologue properly, so the breakpoint at the
beginning of an instruction happens too early.  The bad block
probably causes more problems, too.

I searched gcc and isolated the problem to this patch:

  Fri Sep  5 07:35:16 CEST 2003  Jan Hubicka  <jh@suse.cz>

        * opts.c (decode_options): Enable unit-at-a-time at -O2.
	* params.def (max-inline-insns-single): Set to 500
	  (max-inline-insns-auto): Set to 150
	* invoke.texi (max-inline-insns-single, max-inline-insns-auto): Update.

It looks like we're getting the first whiff of unit-at-a-time problems.
Most of the gdb test suite runs at -O0 so it won't cover this yet.

Am I right in believing that this is a gcc bug in stabs emitter?
If so, I will file a PR against gcc.

Michael C

=== z0.c

#include <stdio.h>
#include <stdlib.h>

int
main (int argc, char *argv [], char **envp)
{
    printf ("%d\n", factorial (atoi ("6")));
    return 0;
}

int
factorial (int value)
{
    if (value > 1) {
	value *= factorial (value - 1);
    }
    return (value);
}

=== z0.s
=== compiled with: gcc -O2 -gstabs+ -S

	.file	"z0.c"
	.stabs	"/berman/home/mgnu/gcc/breako2/",100,0,0,.Ltext0
	.stabs	"z0.c",100,0,0,.Ltext0
	.text
.Ltext0:
	.stabs	"gcc2_compiled.",60,0,0,0
	.stabs	"_Bool:t(0,1)=@s8;-16;",128,0,0,0
	.stabs	"unsigned int:t(0,2)=r(0,2);0000000000000;0037777777777;",128,0,0,0
	.stabs	"int:t(0,3)=r(0,3);-2147483648;2147483647;",128,0,0,0
	.stabs	"__builtin_va_list:t(0,4)=*(0,5)=r(0,5);0;127;",128,0,0,0
	.stabs	"long long unsigned int:t(0,6)=@s64;r(0,6);0000000000000;01777777777777777777777;",128,0,0,0
	.stabs	"long long int:t(0,7)=@s64;r(0,7);01000000000000000000000;0777777777777777777777;",128,0,0,0
	.stabs	"long unsigned int:t(0,8)=r(0,8);0000000000000;0037777777777;",128,0,0,0
	.stabs	"long int:t(0,9)=r(0,9);-2147483648;2147483647;",128,0,0,0
	.stabs	"complex long double:t(0,10)=R5;24;0;",128,0,0,0
	.stabs	"complex double:t(0,11)=R4;16;0;",128,0,0,0
	.stabs	"complex float:t(0,12)=R3;8;0;",128,0,0,0
	.stabs	"complex int:t(0,13)=s8real:(0,3),0,32;imag:(0,3),32,32;;",128,0,0,0
	.stabs	"long double:t(0,14)=r(0,3);12;0;",128,0,0,0
	.stabs	"double:t(0,15)=r(0,3);8;0;",128,0,0,0
	.stabs	"float:t(0,16)=r(0,3);4;0;",128,0,0,0
	.stabs	"unsigned char:t(0,17)=@s8;r(0,17);0;255;",128,0,0,0
	.stabs	"signed char:t(0,18)=@s8;r(0,18);-128;127;",128,0,0,0
	.stabs	"short unsigned int:t(0,19)=@s16;r(0,19);0;65535;",128,0,0,0
	.stabs	"short int:t(0,20)=@s16;r(0,20);-32768;32767;",128,0,0,0
	.stabs	"char:t(0,5)",128,0,0,0
	.stabs	"/usr/include/stdio.h",130,0,0,0
	.stabs	"/berman/fsf/shelf/2003-09-05-06-00-00/berman/install/target/native/gcc/gcc-HEAD-binutils-2.14/lib/gcc/i686-pc-linux-gnu/3.4/include/stddef.h",130,0,0,0
	.stabs	"size_t:t(2,1)=(0,2)",128,0,213,0
	.stabn	162,0,0,0
	.stabs	"/usr/include/bits/types.h",130,0,0,0
	.stabs	"__u_char:t(3,1)=(0,17)",128,0,32,0
	.stabs	"__u_short:t(3,2)=(0,19)",128,0,33,0
	.stabs	"__u_int:t(3,3)=(0,2)",128,0,34,0
	.stabs	"__u_long:t(3,4)=(0,8)",128,0,35,0
	.stabs	"__u_quad_t:t(3,5)=(0,6)",128,0,37,0
	.stabs	"__quad_t:t(3,6)=(0,7)",128,0,38,0
	.stabs	"__int8_t:t(3,7)=(0,18)",128,0,49,0
	.stabs	"__uint8_t:t(3,8)=(0,17)",128,0,50,0
	.stabs	"__int16_t:t(3,9)=(0,20)",128,0,51,0
	.stabs	"__uint16_t:t(3,10)=(0,19)",128,0,52,0
	.stabs	"__int32_t:t(3,11)=(0,3)",128,0,53,0
	.stabs	"__uint32_t:t(3,12)=(0,2)",128,0,54,0
	.stabs	"__int64_t:t(3,13)=(0,7)",128,0,56,0
	.stabs	"__uint64_t:t(3,14)=(0,6)",128,0,57,0
	.stabs	"__qaddr_t:t(3,15)=(3,16)=*(3,6)",128,0,59,0
	.stabs	"__dev_t:t(3,17)=(3,5)",128,0,61,0
	.stabs	"__uid_t:t(3,18)=(3,3)",128,0,62,0
	.stabs	"__gid_t:t(3,19)=(3,3)",128,0,63,0
	.stabs	"__ino_t:t(3,20)=(3,4)",128,0,64,0
	.stabs	"__mode_t:t(3,21)=(3,3)",128,0,65,0
	.stabs	"__nlink_t:t(3,22)=(3,3)",128,0,66,0
	.stabs	"__off_t:t(3,23)=(0,9)",128,0,67,0
	.stabs	"__loff_t:t(3,24)=(3,6)",128,0,68,0
	.stabs	"__pid_t:t(3,25)=(0,3)",128,0,69,0
	.stabs	"__ssize_t:t(3,26)=(0,3)",128,0,70,0
	.stabs	"__rlim_t:t(3,27)=(3,4)",128,0,71,0
	.stabs	"__rlim64_t:t(3,28)=(3,5)",128,0,72,0
	.stabs	"__id_t:t(3,29)=(3,3)",128,0,73,0
	.stabs	"__fsid_t:t(3,30)=(3,31)=s8__val:(3,32)=ar(3,33)=r(3,33);0000000000000;0037777777777;;0;1;(0,3),0,64;;",128,0,78,0
	.stabs	"__daddr_t:t(3,34)=(0,3)",128,0,81,0
	.stabs	"__caddr_t:t(3,35)=(3,36)=*(0,5)",128,0,82,0
	.stabs	"__time_t:t(3,37)=(0,9)",128,0,83,0
	.stabs	"__useconds_t:t(3,38)=(0,2)",128,0,84,0
	.stabs	"__suseconds_t:t(3,39)=(0,9)",128,0,85,0
	.stabs	"__swblk_t:t(3,40)=(0,9)",128,0,86,0
	.stabs	"__clock_t:t(3,41)=(0,9)",128,0,88,0
	.stabs	"__clockid_t:t(3,42)=(0,3)",128,0,91,0
	.stabs	"__timer_t:t(3,43)=(0,3)",128,0,94,0
	.stabs	"__key_t:t(3,44)=(0,3)",128,0,101,0
	.stabs	"__ipc_pid_t:t(3,45)=(0,19)",128,0,104,0
	.stabs	"__blksize_t:t(3,46)=(0,9)",128,0,108,0
	.stabs	"__blkcnt_t:t(3,47)=(0,9)",128,0,113,0
	.stabs	"__blkcnt64_t:t(3,48)=(3,6)",128,0,114,0
	.stabs	"__fsblkcnt_t:t(3,49)=(3,4)",128,0,117,0
	.stabs	"__fsblkcnt64_t:t(3,50)=(3,5)",128,0,118,0
	.stabs	"__fsfilcnt_t:t(3,51)=(3,4)",128,0,121,0
	.stabs	"__fsfilcnt64_t:t(3,52)=(3,5)",128,0,122,0
	.stabs	"__ino64_t:t(3,53)=(3,5)",128,0,125,0
	.stabs	"__off64_t:t(3,54)=(3,24)",128,0,128,0
	.stabs	"__t_scalar_t:t(3,55)=(0,9)",128,0,131,0
	.stabs	"__t_uscalar_t:t(3,56)=(0,8)",128,0,132,0
	.stabs	"__intptr_t:t(3,57)=(0,3)",128,0,135,0
	.stabs	"__socklen_t:t(3,58)=(0,2)",128,0,138,0
	.stabs	"/usr/include/bits/pthreadtypes.h",130,0,0,0
	.stabs	"/usr/include/bits/sched.h",130,0,0,0
	.stabs	"__sched_param:T(5,1)=s4__sched_priority:(0,3),0,32;;",128,0,0,0
	.stabn	162,0,0,0
	.stabs	"_pthread_fastlock:T(4,1)=s8__status:(0,9),0,32;__spinlock:(0,3),32,32;;",128,0,0,0
	.stabs	"_pthread_descr:t(4,2)=(4,3)=*(4,4)=xs_pthread_descr_struct:",128,0,35,0
	.stabs	"__pthread_attr_s:T(4,5)=s36__detachstate:(0,3),0,32;__schedpolicy:(0,3),32,32;__schedparam:(5,1),64,32;__inheritsched:(0,3),96,32;__scope:(0,3),128,32;__guardsize:(2,1),160,32;__stackaddr_set:(0,3),192,32;__stackaddr:(4,6)=*(4,7)=(4,7),224,32;__stacksize:(2,1),256,32;;",128,0,0,0
	.stabs	"pthread_attr_t:t(4,8)=(4,5)",128,0,52,0
	.stabs	"pthread_cond_t:t(4,9)=(4,10)=s12__c_lock:(4,1),0,64;__c_waiting:(4,2),64,32;;",128,0,60,0
	.stabs	"pthread_condattr_t:t(4,11)=(4,12)=s4__dummy:(0,3),0,32;;",128,0,67,0
	.stabs	"pthread_key_t:t(4,13)=(0,2)",128,0,70,0
	.stabs	"pthread_mutex_t:t(4,14)=(4,15)=s24__m_reserved:(0,3),0,32;__m_count:(0,3),32,32;__m_owner:(4,2),64,32;__m_kind:(0,3),96,32;__m_lock:(4,1),128,64;;",128,0,83,0
	.stabs	"pthread_mutexattr_t:t(4,16)=(4,17)=s4__mutexkind:(0,3),0,32;;",128,0,90,0
	.stabs	"pthread_once_t:t(4,18)=(0,3)",128,0,94,0
	.stabs	"pthread_t:t(4,19)=(0,8)",128,0,140,0
	.stabn	162,0,0,0
	.stabn	162,0,0,0
	.stabs	"FILE:t(1,1)=(1,2)=xs_IO_FILE:",128,0,46,0
	.stabs	"__FILE:t(1,3)=(1,2)",128,0,62,0
	.stabs	"/usr/include/libio.h",130,0,0,0
	.stabs	"/usr/include/_G_config.h",130,0,0,0
	.stabs	"/berman/fsf/shelf/2003-09-05-06-00-00/berman/install/target/native/gcc/gcc-HEAD-binutils-2.14/lib/gcc/i686-pc-linux-gnu/3.4/include/stddef.h",130,0,0,0
	.stabs	"wchar_t:t(8,1)=(0,9)",128,0,325,0
	.stabs	"wint_t:t(8,2)=(0,2)",128,0,354,0
	.stabn	162,0,0,0
	.stabs	"/usr/include/wchar.h",130,0,0,0
	.stabs	"__mbstate_t:t(9,1)=(9,2)=s8__count:(0,3),0,32;__value:(9,3)=u4__wch:(8,2),0,32;__wchb:(9,4)=ar(3,33);0;3;(0,5),0,32;;,32,32;;",128,0,79,0
	.stabn	162,0,0,0
	.stabs	"_G_fpos_t:t(7,1)=(7,2)=s12__pos:(3,23),0,32;__state:(9,1),32,64;;",128,0,30,0
	.stabs	"_G_fpos64_t:t(7,3)=(7,4)=s16__pos:(3,54),0,64;__state:(9,1),64,64;;",128,0,35,0
	.stabs	"/usr/include/gconv.h",130,0,0,0
	.stabs	" :T(10,1)=e__GCONV_OK:0,__GCONV_NOCONV:1,__GCONV_NODB:2,__GCONV_NOMEM:3,__GCONV_EMPTY_INPUT:4,__GCONV_FULL_OUTPUT:5,__GCONV_ILLEGAL_INPUT:6,__GCONV_INCOMPLETE_INPUT:7,__GCONV_ILLEGAL_DESCRIPTOR:8,__GCONV_INTERNAL_ERROR:9,;",128,0,0,0
	.stabs	" :T(10,2)=e__GCONV_IS_LAST:1,__GCONV_IGNORE_ERRORS:2,;",128,0,0,0
	.stabs	"__gconv_fct:t(10,3)=(10,4)=*(10,5)=f(0,3)",128,0,72,0
	.stabs	"__gconv_init_fct:t(10,6)=(10,7)=*(10,8)=f(0,3)",128,0,75,0
	.stabs	"__gconv_end_fct:t(10,9)=(10,10)=*(10,11)=f(4,7)",128,0,76,0
	.stabs	"__gconv_trans_fct:t(10,12)=(10,13)=*(10,14)=f(0,3)",128,0,85,0
	.stabs	"__gconv_trans_context_fct:t(10,15)=(10,16)=*(10,17)=f(0,3)",128,0,90,0
	.stabs	"__gconv_trans_query_fct:t(10,18)=(10,19)=*(10,20)=f(0,3)",128,0,94,0
	.stabs	"__gconv_trans_init_fct:t(10,21)=(10,22)=*(10,23)=f(0,3)",128,0,97,0
	.stabs	"__gconv_trans_end_fct:t(10,24)=(10,25)=*(10,26)=f(4,7)",128,0,98,0
	.stabs	"__gconv_trans_data:T(10,27)=s20__trans_fct:(10,12),0,32;__trans_context_fct:(10,15),32,32;__trans_end_fct:(10,24),64,32;__data:(4,6),96,32;__next:(10,28)=*(10,27),128,32;;",128,0,0,0
	.stabs	"__gconv_step:T(10,29)=s56__shlib_handle:(10,30)=*(10,31)=xs__gconv_loaded_object:,0,32;__modname:(10,32)=*(10,33)=k(0,5),32,32;__counter:(0,3),64,32;__from_name:(3,36),96,32;__to_name:(3,36),128,32;__fct:(10,3),160,32;__init_fct:(10,6),192,32;__end_fct:(10,9),224,32;__min_needed_from:(0,3),256,32;__max_needed_from:(0,3),288,32;__min_needed_to:(0,3),320,32;__max_needed_to:(0,3),352,32;__stateful:(0,3),384,32;__data:(4,6),416,32;;",128,0,0,0
	.stabs	"__gconv_step_data:T(10,34)=s36__outbuf:(10,35)=*(0,17),0,32;__outbufend:(10,35),32,32;__flags:(0,3),64,32;__invocation_counter:(0,3),96,32;__internal_use:(0,3),128,32;__statep:(10,36)=*(9,1),160,32;__state:(9,1),192,64;__trans:(10,28),256,32;;",128,0,0,0
	.stabs	"__gconv_info:T(10,37)=s8__nsteps:(2,1),0,32;__steps:(10,38)=*(10,29),32,32;;",128,0,0,0
	.stabs	"__gconv_t:t(10,39)=(10,40)=*(10,37)",128,0,173,0
	.stabn	162,0,0,0
	.stabs	"_G_iconv_t:t(7,5)=(7,6)=u44__cd:(10,37),0,64;__combined:(7,7)=s44__cd:(10,37),0,64;__data:(10,34),64,288;;,0,352;;",128,0,53,0
	.stabs	"_G_int16_t:t(7,8)=(0,20)",128,0,55,0
	.stabs	"_G_int32_t:t(7,9)=(0,3)",128,0,56,0
	.stabs	"_G_uint16_t:t(7,10)=(0,19)",128,0,57,0
	.stabs	"_G_uint32_t:t(7,11)=(0,2)",128,0,58,0
	.stabn	162,0,0,0
	.stabs	"/berman/fsf/shelf/2003-09-05-06-00-00/berman/install/target/native/gcc/gcc-HEAD-binutils-2.14/lib/gcc/i686-pc-linux-gnu/3.4/include/stdarg.h",130,0,0,0
	.stabs	"__gnuc_va_list:t(11,1)=(0,4)",128,0,43,0
	.stabn	162,0,0,0
	.stabs	"_IO_lock_t:t(6,1)=(4,7)",128,0,172,0
	.stabs	"_IO_marker:T(6,2)=s12_next:(6,3)=*(6,2),0,32;_sbuf:(6,4)=*(1,2),32,32;_pos:(0,3),64,32;;",128,0,0,0
	.stabs	"__codecvt_result:T(6,5)=e__codecvt_ok:0,__codecvt_partial:1,__codecvt_error:2,__codecvt_noconv:3,;",128,0,0,0
	.stabs	"_IO_FILE:T(1,2)=s148_flags:(0,3),0,32;_IO_read_ptr:(3,36),32,32;_IO_read_end:(3,36),64,32;_IO_read_base:(3,36),96,32;_IO_write_base:(3,36),128,32;_IO_write_ptr:(3,36),160,32;_IO_write_end:(3,36),192,32;_IO_buf_base:(3,36),224,32;_IO_buf_end:(3,36),256,32;_IO_save_base:(3,36),288,32;_IO_backup_base:(3,36),320,32;_IO_save_end:(3,36),352,32;_markers:(6,3),384,32;_chain:(6,4),416,32;_fileno:(0,3),448,32;_flags2:(0,3),480,32;_old_offset:(3,23),512,32;_cur_column:(0,19),544,16;_vtable_offset:(0,18),560,8;_shortbuf:(6,6)=ar(3,33);0;0;(0,5),568,8;_lock:(6,7)=*(6,1),576,32;_offset:(3,54),608,64;__pad1:(4,6),672,32;__pad2:(4,6),704,32;_mode:(0,3),736,32;_unused2:(6,8)=ar(3,33);0;51;(0,5),768,416;;",128,0,0,0
	.stabs	"_IO_FILE:t(6,9)=(1,2)",128,0,327,0
	.stabs	"__io_read_fn:t(6,10)=(6,11)=f(3,26)",128,0,350,0
	.stabs	"__io_write_fn:t(6,12)=(6,13)=f(3,26)",128,0,359,0
	.stabs	"__io_seek_fn:t(6,14)=(6,15)=f(0,3)",128,0,367,0
	.stabs	"__io_close_fn:t(6,16)=(6,17)=f(0,3)",128,0,370,0
	.stabn	162,0,0,0
	.stabs	"fpos_t:t(1,4)=(7,1)",128,0,88,0
	.stabn	162,0,0,0
	.stabs	"/usr/include/stdlib.h",130,0,0,0
	.stabs	"div_t:t(12,1)=(12,2)=s8quot:(0,3),0,32;rem:(0,3),32,32;;",128,0,99,0
	.stabs	"ldiv_t:t(12,3)=(12,4)=s8quot:(0,9),0,32;rem:(0,9),32,32;;",128,0,107,0
	.stabs	"/usr/include/sys/types.h",130,0,0,0
	.stabs	"u_char:t(13,1)=(3,1)",128,0,34,0
	.stabs	"u_short:t(13,2)=(3,2)",128,0,35,0
	.stabs	"u_int:t(13,3)=(3,3)",128,0,36,0
	.stabs	"u_long:t(13,4)=(3,4)",128,0,37,0
	.stabs	"quad_t:t(13,5)=(3,6)",128,0,38,0
	.stabs	"u_quad_t:t(13,6)=(3,5)",128,0,39,0
	.stabs	"fsid_t:t(13,7)=(3,30)",128,0,40,0
	.stabs	"loff_t:t(13,8)=(3,24)",128,0,45,0
	.stabs	"ino_t:t(13,9)=(3,20)",128,0,49,0
	.stabs	"dev_t:t(13,10)=(3,17)",128,0,61,0
	.stabs	"gid_t:t(13,11)=(3,19)",128,0,66,0
	.stabs	"mode_t:t(13,12)=(3,21)",128,0,71,0
	.stabs	"nlink_t:t(13,13)=(3,22)",128,0,76,0
	.stabs	"uid_t:t(13,14)=(3,18)",128,0,81,0
	.stabs	"off_t:t(13,15)=(3,23)",128,0,87,0
	.stabs	"pid_t:t(13,16)=(3,25)",128,0,99,0
	.stabs	"id_t:t(13,17)=(3,29)",128,0,104,0
	.stabs	"ssize_t:t(13,18)=(3,26)",128,0,109,0
	.stabs	"daddr_t:t(13,19)=(3,34)",128,0,115,0
	.stabs	"caddr_t:t(13,20)=(3,35)",128,0,116,0
	.stabs	"key_t:t(13,21)=(3,44)",128,0,122,0
	.stabs	"/usr/include/time.h",130,0,0,0
	.stabs	"time_t:t(14,1)=(3,37)",128,0,76,0
	.stabs	"clockid_t:t(14,2)=(3,42)",128,0,92,0
	.stabs	"timer_t:t(14,3)=(3,43)",128,0,104,0
	.stabn	162,0,0,0
	.stabs	"ulong:t(13,22)=(0,8)",128,0,150,0
	.stabs	"ushort:t(13,23)=(0,19)",128,0,151,0
	.stabs	"uint:t(13,24)=(0,2)",128,0,152,0
	.stabs	"int8_t:t(13,25)=(0,18)",128,0,190,0
	.stabs	"int16_t:t(13,26)=(0,20)",128,0,191,0
	.stabs	"int32_t:t(13,27)=(0,3)",128,0,192,0
	.stabs	"int64_t:t(13,28)=(0,7)",128,0,193,0
	.stabs	"u_int8_t:t(13,29)=(0,17)",128,0,196,0
	.stabs	"u_int16_t:t(13,30)=(0,19)",128,0,197,0
	.stabs	"u_int32_t:t(13,31)=(0,2)",128,0,198,0
	.stabs	"u_int64_t:t(13,32)=(0,6)",128,0,199,0
	.stabs	"register_t:t(13,33)=(0,3)",128,0,201,0
	.stabs	"/usr/include/sys/select.h",130,0,0,0
	.stabs	"/usr/include/bits/sigset.h",130,0,0,0
	.stabs	"__sig_atomic_t:t(16,1)=(0,3)",128,0,23,0
	.stabs	"__sigset_t:t(16,2)=(16,3)=s128__val:(16,4)=ar(3,33);0;31;(0,8),0,1024;;",128,0,31,0
	.stabn	162,0,0,0
	.stabs	"sigset_t:t(15,1)=(16,2)",128,0,38,0
	.stabs	"/usr/include/time.h",130,0,0,0
	.stabs	"timespec:T(17,1)=s8tv_sec:(3,37),0,32;tv_nsec:(0,9),32,32;;",128,0,0,0
	.stabn	162,0,0,0
	.stabs	"/usr/include/bits/time.h",130,0,0,0
	.stabs	"timeval:T(18,1)=s8tv_sec:(3,37),0,32;tv_usec:(3,39),32,32;;",128,0,0,0
	.stabn	162,0,0,0
	.stabs	"suseconds_t:t(15,2)=(3,39)",128,0,49,0
	.stabs	"__fd_mask:t(15,3)=(0,9)",128,0,55,0
	.stabs	"fd_set:t(15,4)=(15,5)=s128__fds_bits:(15,6)=ar(3,33);0;31;(15,3),0,1024;;",128,0,78,0
	.stabs	"fd_mask:t(15,7)=(15,3)",128,0,85,0
	.stabn	162,0,0,0
	.stabs	"blkcnt_t:t(13,34)=(3,47)",128,0,230,0
	.stabs	"fsblkcnt_t:t(13,35)=(3,49)",128,0,234,0
	.stabs	"fsfilcnt_t:t(13,36)=(3,51)",128,0,238,0
	.stabn	162,0,0,0
	.stabs	"random_data:T(12,5)=s28fptr:(12,6)=*(13,27),0,32;rptr:(12,6),32,32;state:(12,6),64,32;rand_type:(0,3),96,32;rand_deg:(0,3),128,32;rand_sep:(0,3),160,32;end_ptr:(12,6),192,32;;",128,0,0,0
	.stabs	"drand48_data:T(12,7)=s24__x:(12,8)=ar(3,33);0;2;(0,19),0,48;__old_x:(12,8),48,48;__c:(0,19),96,16;__init:(0,19),112,16;__a:(0,6),128,64;;",128,0,0,0
	.stabs	"__compar_fn_t:t(12,9)=(12,10)=*(12,11)=f(0,3)",128,0,720,0
	.stabn	162,0,0,0
	.p2align 4,,15
	.stabs	"factorial:F(0,3)",36,0,13,factorial
	.stabs	"value:p(0,3)",160,0,12,8
.globl factorial
	.type	factorial, @function
factorial:
	.stabn 68,0,13,.LM1-factorial
.LM1:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	subl	$4, %esp
	movl	8(%ebp), %ebx
	.stabn 68,0,14,.LM2-factorial
.LM2:
	cmpl	$1, %ebx
	jg	.L5
	.stabn 68,0,18,.LM3-factorial
.LM3:
	popl	%edx
	movl	%ebx, %eax
	popl	%ebx
	popl	%ebp
	ret
	.p2align 4,,7
.L5:
	.stabn 68,0,15,.LM4-factorial
.LM4:
	leal	-1(%ebx), %eax
	movl	%eax, (%esp)
	call	factorial
	.stabn 68,0,18,.LM5-factorial
.LM5:
	popl	%edx
	.stabn 68,0,15,.LM6-factorial
.LM6:
	imull	%eax, %ebx
	.stabn 68,0,18,.LM7-factorial
.LM7:
	movl	%ebx, %eax
	popl	%ebx
	popl	%ebp
	ret
	.size	factorial, .-factorial
	.stabs	"value:r(0,3)",64,0,12,3
.Lscope0:
	.stabs	"",36,0,0,.Lscope0-factorial
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"6"
.LC1:
	.string	"%d\n"
	.text
	.p2align 4,,15
	.stabs	"main:F(0,3)",36,0,6,main
	.stabs	"argc:p(0,3)",160,0,5,8
	.stabs	"argv:p(0,21)=*(3,36)",160,0,5,12
	.stabs	"envp:p(0,21)",160,0,5,16
.globl main
	.type	main, @function
main:
	.stabn 68,0,6,.LM8-main
.LM8:
.LBB2:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	andl	$-16, %esp
.LBB3:
.LBB4:
.LBB5:
	.stabs	"/usr/include/stdlib.h",132,0,0,.Ltext1
.Ltext1:
	.stabn 68,0,317,.LM9-main
.LM9:
	movl	$0, 12(%esp)
	movl	$10, 8(%esp)
	movl	$0, 4(%esp)
	movl	$.LC0, (%esp)
	call	__strtol_internal
.LBE5:
.LBE4:
.LBE3:
.LBE2:
	.stabn 68,0,382,.LM10-main
.LM10:
	movl	%eax, (%esp)
	call	factorial
	movl	%eax, 4(%esp)
	movl	$.LC1, (%esp)
	call	printf
	.stabs	"z0.c",132,0,0,.Ltext2
.Ltext2:
	.stabn 68,0,9,.LM11-main
.LM11:
	leave
	xorl	%eax, %eax
	ret
	.size	main, .-main
	.stabs	"factorial:F(0,3)",36,0,13,factorial
.Lscope1:
	.stabs	"",36,0,0,.Lscope1-main
	.text
	.stabs "",100,0,0,.Letext
.Letext:
	.section	.note.GNU-stack,"",@progbits
	.ident	"GCC: (GNU) 3.4 20030905 (experimental)"


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