This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
gcc HEAD bad stabs (?)
- From: Michael Elizabeth Chastain <mec at shout dot net>
- To: gdb at sources dot redhat dot com
- Date: Fri, 12 Sep 2003 04:11:15 -0400
- Subject: 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)"