Thread View: gnu.gcc.bug
1 messages
1 total messages
Started by Randy Smith
Thu, 12 Dec 1996 00:00
Bug in gcc 2.7.1 cross compiler (alpha-->386)
Author: Randy Smith
Date: Thu, 12 Dec 1996 00:00
Date: Thu, 12 Dec 1996 00:00
559 lines
20237 bytes
20237 bytes
There is a bug in gcc 2.7.1, found during compilation of gcc
building on the alpha, hosted on the alpha, targetted at the i386
(but this may not reproduce the bug; see my analysis below). It
occurs during the compilation of libgcc2.a and produces the
following output:
..
./xgcc -B./ -O2 -I../../dir-include/include -DCROSS_COMPILE -DIN_GCC -g -I./include -pic-none -g1 -D__GCC_FLOAT_NOT_NEEDED -I. -I../../../src/gcc_2_7_1 -I../../../src/gcc_2_7_1/config -c -DL${name} \
../../../src/gcc_2_7_1/libgcc2.c -o ${name}.o; \
if [ $? -eq 0 ] ; then true; else exit 1; fi; \
/afs/ri/project/fsf/install/alpha-i386/elf/i386-osfrose/bin/ar rc tmplibgcc2.a ${name}.o; \
rm -f ${name}.o; \
done
_muldi3
_divdi3
_moddi3
_udivdi3
_umoddi3
_negdi2
_lshrdi3
_ashldi3
_ashrdi3
_ffsdi2
_udiv_w_sdiv
_udivmoddi4
_cmpdi2
_ucmpdi2
_floatdidf
_floatdisf
_fixunsdfsi
_fixunssfsi
_fixunsdfdi
xgcc: Internal compiler error: program cc1 got fatal signal 11
make: *** [libgcc2.a] Error 1
The following call to cc1 fails (I'll include the .i file at the
end of this message, though as I say, it may not reproduce the bug):
./cc1 /tmp/ccaamBaa.i -melf -mno-underscores -mmcount-ptr -quiet -dumpbase libgcc2.c -g -g1 -O2 -version -o /tmp/ccaamBaa.s
GNU C version 2.7.1 80386, ELF objects compiled by GNU C version 2.7.1.
xgcc: Internal compiler error: program cc1 got fatal signal 11
make: *** [libgcc2.a] Error 1
Tracking the problem through cc1, I found that it occured upon the
return from output_constant_pool; the jumping to the return address
resulted in a jump to never-never land, and a segmentation fault.
That was because the return address had been overwritten on the
stack, which occurred on line 494 of real.c in function "endian"
with the following backtrace:
#0 endian () at ../../../src/gcc_2_7_1/real.c:493
#1 0x12010ff28 in etartdouble () at ../../../src/gcc_2_7_1/real.c:1019
#2 0x1200f5ae4 in assemble_real () at ../../../src/gcc_2_7_1/varasm.c:1826
#3 0x1200fab2c in output_constant_pool ()
at ../../../src/gcc_2_7_1/varasm.c:3392
#4 0x1200f20d8 in assemble_start_function ()
at ../../../src/gcc_2_7_1/varasm.c:770
#5 0x1200675b8 in rest_of_compilation ()
at ../../../src/gcc_2_7_1/toplev.c:3223
#6 0x120043eb0 in finish_function () at ../../../src/gcc_2_7_1/c-decl.c:6791
#7 0x120026938 in yyparse () at /usr/local/gnu/share/bison.simple:311
#8 0x120063dec in compile_file () at ../../../src/gcc_2_7_1/toplev.c:2227
#9 0x120069524 in main () at ../../../src/gcc_2_7_1/toplev.c:3913
That line is:
x[3] = (long) t;
"x" is a variable sized long array passed into endian from
etartdouble, which is called from assemble_real through the
following set of macros:
ASM_OUTPUT_LONG_DOUBLE (defined in i386.h:1632)
REAL_VALUE_TO_TARGET_LONG_DOUBLE (defined in real.h:193)
It is defined in ASM_OUTPUT_LONG_DOUBLE:
#define ASM_OUTPUT_LONG_DOUBLE(FILE,VALUE) \
do { long l[3]; \
REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, l); \
if (sizeof (int) == sizeof (long)) \
fprintf (FILE, "%s 0x%x,0x%x,0x%x\n", ASM_LONG, l[0], l[1], l[2]); \
else \
fprintf (FILE, "%s 0x%lx,0x%lx,0x%lx\n", ASM_LONG, l[0], l[1], l[2]); \
} while (0)
Note that the array is only of size 3, so assigning into it at index
3 is an error. The definition of REAL_VALUE_TO_TARGET_LONG_DOUBLE
is:
#if LONG_DOUBLE_TYPE_SIZE == 96
#define REAL_VALUE_TO_TARGET_LONG_DOUBLE(IN, OUT) (etarldouble ((IN), (OUT)))
#else
#define REAL_VALUE_TO_TARGET_LONG_DOUBLE(IN, OUT) (etartdouble ((IN), (OUT)))
#endif
The definition of LONG_DOUBLE_TYPE_SIZE is 64 (in osfrose.h). This
overrides the original definition of 96, in i386.h. So I conjecture
that this value was overridden in osfrose.h without awareness that
that required a modification to the array size in the
ASM_OUTPUT_LONG_DOUBLE definition in i386.h
What kind of error this memory overwrite causes is obviously very
dependent on data layout on the stack, which is very dependent on
what compiler you use to compile gcc with, the phase of the moon,
etc. Hence I do not know if the segmentation fault is
reproducible. Nonetheless, the above strikes me as a bug by
inspection; I suggest (but am not sure, since I don't really
understand the intricacies of the i386 config) that the solution is
increasing the size of the array defined in ASM_OUTPUT_LONG_DOUBLE
to 4.
-- Randy
P.S. Here's the preprocessor output, with blank lines removed:
-----------------
# 1 "../../../src/gcc_2_7_1/libgcc2.c"
# 1 "tconfig.h" 1
# 1 "../../../src/gcc_2_7_1/config/i386/xm-osf.h" 1
# 1 "../../../src/gcc_2_7_1/config/i386/xm-i386.h" 1
# 1 "tm.h" 1
# 1 "../../../src/gcc_2_7_1/config/i386/osfelf.h" 1
# 1 "../../../src/gcc_2_7_1/config/i386/osfrose.h" 1
# 1 "../../../src/gcc_2_7_1/halfpic.h" 1
# 1 "../../dir-include/include/stdio.h" 1
# 1 "../../dir-include/include/standards.h" 1
# 87 "../../dir-include/include/stdio.h" 2
typedef unsigned long size_t;
typedef long fpos_t;
# 1 "../../dir-include/include/sys/seek.h" 1
# 149 "../../dir-include/include/stdio.h" 2
typedef struct {
int _cnt;
unsigned char *_ptr;
unsigned char *_base;
int _bufsiz;
short _flag;
short _file;
void *_unused;
void *_lock;
char *__newbase;
unsigned char *_bufendp;
} FILE;
extern FILE __iob[];
extern size_t fread (void *, size_t, size_t, FILE *) ;
extern size_t fwrite (const void *, size_t, size_t, FILE *) ;
extern int __flsbuf (int, FILE *) ;
extern int __filbuf (FILE *) ;
extern int ferror (FILE *) ;
extern int feof (FILE *) ;
extern void clearerr (FILE *) ;
extern int putchar (int) ;
extern int getchar (void) ;
extern int putc (int, FILE *) ;
extern int getc (FILE *) ;
extern int remove (const char *) ;
extern int rename (const char *, const char *) ;
extern FILE *tmpfile (void) ;
extern char *tmpnam (char *) ;
extern int fclose (FILE *) ;
extern int fflush (FILE *) ;
extern FILE *fopen (const char *, const char *) ;
extern FILE *freopen (const char *, const char *, FILE *) ;
extern void setbuf (FILE *, char *) ;
extern int setvbuf (FILE *, char *, int, size_t) ;
extern int fprintf (FILE *, const char *, ...) ;
extern int fscanf (FILE *, const char *, ...) ;
extern int printf (const char *, ...) ;
extern int scanf (const char *, ...) ;
extern int sprintf (char *, const char *, ...) ;
extern int sscanf (const char *, const char *, ...) ;
# 1 "../../dir-include/include/va_list.h" 1
typedef char *va_list;
# 59 "../../dir-include/include/va_list.h"
# 222 "../../dir-include/include/stdio.h" 2
extern int vfprintf (FILE *, const char *, va_list) ;
extern int vprintf (const char *, va_list) ;
extern int vsprintf (char *, const char *, va_list) ;
# 238 "../../dir-include/include/stdio.h"
extern int fgetc (FILE *) ;
extern char *fgets (char *, int, FILE *) ;
extern int fputc (int, FILE *) ;
extern int fputs (const char *, FILE *) ;
extern char *gets (char *) ;
extern int puts (const char *) ;
extern int ungetc (int, FILE *) ;
extern int fgetpos (FILE *, fpos_t *) ;
extern int fseek (FILE *, long, int) ;
extern int fsetpos (FILE *, const fpos_t *) ;
extern long ftell (FILE *) ;
extern void rewind (FILE *) ;
extern void perror (const char *) ;
# 265 "../../dir-include/include/stdio.h"
# 325 "../../dir-include/include/stdio.h"
extern int fileno (FILE *) ;
extern FILE *fdopen (int, const char *) ;
extern char *ctermid (char *) ;
extern char *cuserid (char *) ;
extern char *ctermid (char *) ;
extern int getw (FILE *) ;
extern int pclose (FILE *) ;
extern int putw (int, FILE*) ;
extern FILE *popen (const char *, const char *) ;
extern char *tempnam (const char*, const char*) ;
extern int getopt (int, char * const [], const char *) ;
extern char *optarg;
extern int optind;
extern int optopt;
extern int opterr;
extern void setbuffer (FILE *, char*, int) ;
extern void setlinebuf (FILE *) ;
# 34 "../../../src/gcc_2_7_1/halfpic.h" 2
union tree_node;
struct rtx_def;
int flag_half_pic;
int (*ptr_half_pic_address_p) ();
extern int half_pic_number_ptrs;
extern int half_pic_number_refs;
extern void half_pic_encode (union tree_node *) ;
extern void half_pic_declare (char *) ;
extern void half_pic_external (char *) ;
extern void half_pic_init (void) ;
extern int half_pic_address_p (struct rtx_def *) ;
extern struct rtx_def *half_pic_ptr (struct rtx_def *) ;
extern void half_pic_finish (FILE *) ;
# 22 "../../../src/gcc_2_7_1/config/i386/osfrose.h" 2
# 1 "../../../src/gcc_2_7_1/config/i386/gstabs.h" 1
# 1 "../../../src/gcc_2_7_1/config/i386/gas.h" 1
# 1 "../../../src/gcc_2_7_1/config/i386/i386.h" 1
# 54 "../../../src/gcc_2_7_1/config/i386/i386.h"
extern int target_flags;
# 167 "../../../src/gcc_2_7_1/config/i386/i386.h"
# 388 "../../../src/gcc_2_7_1/config/i386/i386.h"
enum reg_class
{
NO_REGS,
AREG, DREG, CREG, BREG,
AD_REGS,
Q_REGS,
SIREG, DIREG,
INDEX_REGS,
GENERAL_REGS,
FP_TOP_REG, FP_SECOND_REG,
FLOAT_REGS,
ALL_REGS, LIM_REG_CLASSES
};
# 559 "../../../src/gcc_2_7_1/config/i386/i386.h"
# 575 "../../../src/gcc_2_7_1/config/i386/i386.h"
# 641 "../../../src/gcc_2_7_1/config/i386/i386.h"
typedef struct i386_args {
int words;
int nregs;
int regno;
} CUMULATIVE_ARGS;
# 889 "../../../src/gcc_2_7_1/config/i386/i386.h"
# 949 "../../../src/gcc_2_7_1/config/i386/i386.h"
# 985 "../../../src/gcc_2_7_1/config/i386/i386.h"
# 1038 "../../../src/gcc_2_7_1/config/i386/i386.h"
# 1107 "../../../src/gcc_2_7_1/config/i386/i386.h"
# 1288 "../../../src/gcc_2_7_1/config/i386/i386.h"
# 1447 "../../../src/gcc_2_7_1/config/i386/i386.h"
# 1470 "../../../src/gcc_2_7_1/config/i386/i386.h"
extern struct rtx_def *(*i386_compare_gen)(), *(*i386_compare_gen_eq)();
# 1611 "../../../src/gcc_2_7_1/config/i386/i386.h"
extern char *hi_reg_name[];
extern char *qi_reg_name[];
extern char *qi_high_reg_name[];
# 1799 "../../../src/gcc_2_7_1/config/i386/i386.h"
# 1833 "../../../src/gcc_2_7_1/config/i386/i386.h"
extern void override_options ();
extern void order_regs_for_local_alloc ();
extern int i386_valid_decl_attribute_p ();
extern int i386_valid_type_attribute_p ();
extern int i386_return_pops_args ();
extern int i386_comp_type_attributes ();
extern void init_cumulative_args ();
extern void function_arg_advance ();
extern struct rtx_def *function_arg ();
extern int function_arg_partial_nregs ();
extern void output_op_from_reg ();
extern void output_to_reg ();
extern char *singlemove_string ();
extern char *output_move_double ();
extern char *output_move_memory ();
extern char *output_move_pushmem ();
extern int standard_80387_constant_p ();
extern char *output_move_const_single ();
extern int symbolic_operand ();
extern int call_insn_operand ();
extern int expander_call_insn_operand ();
extern int symbolic_reference_mentioned_p ();
extern void emit_pic_move ();
extern void function_prologue ();
extern int simple_386_epilogue ();
extern void function_epilogue ();
extern int legitimate_address_p ();
extern struct rtx_def *legitimize_pic_address ();
extern struct rtx_def *legitimize_address ();
extern void print_operand ();
extern void print_operand_address ();
extern void notice_update_cc ();
extern void split_di ();
extern int binary_387_op ();
extern int shift_op ();
extern int VOIDmode_compare_op ();
extern char *output_387_binary_op ();
extern char *output_fix_trunc ();
extern char *output_float_compare ();
extern char *output_fp_cc0_set ();
extern void save_386_machine_status ();
extern void restore_386_machine_status ();
extern void clear_386_stack_locals ();
extern struct rtx_def *assign_386_stack_local ();
extern char *i386_reg_alloc_order;
extern char *i386_regparm_string;
extern char *i386_align_loops_string;
extern char *i386_align_jumps_string;
extern char *i386_align_funcs_string;
extern int i386_regparm;
extern int i386_align_loops;
extern int i386_align_jumps;
extern int i386_align_funcs;
extern char *hi_reg_name[];
extern char *qi_reg_name[];
extern char *qi_high_reg_name[];
extern enum reg_class regclass_map[];
extern struct rtx_def *i386_compare_op0;
extern struct rtx_def *i386_compare_op1;
extern int optimize;
extern int obey_regdecls;
extern struct rtx_def *force_operand ();
# 24 "../../../src/gcc_2_7_1/config/i386/gas.h" 2
# 1 "../../../src/gcc_2_7_1/config/i386/bsd.h" 1
# 1 "../../../src/gcc_2_7_1/config/i386/unix.h" 1
# 24 "../../../src/gcc_2_7_1/config/i386/bsd.h" 2
# 47 "../../../src/gcc_2_7_1/config/i386/gas.h" 2
# 122 "../../../src/gcc_2_7_1/config/i386/gas.h"
# 1 "../../../src/gcc_2_7_1/config/i386/gstabs.h" 2
# 23 "../../../src/gcc_2_7_1/config/i386/osfrose.h" 2
# 1 "../../../src/gcc_2_7_1/config/i386/perform.h" 1
# 40 "../../../src/gcc_2_7_1/config/i386/perform.h"
# 52 "../../../src/gcc_2_7_1/config/i386/perform.h"
# 63 "../../../src/gcc_2_7_1/config/i386/perform.h"
# 75 "../../../src/gcc_2_7_1/config/i386/perform.h"
# 98 "../../../src/gcc_2_7_1/config/i386/perform.h"
# 26 "../../../src/gcc_2_7_1/config/i386/osfrose.h" 2
# 51 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 87 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 117 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 130 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 147 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 265 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 346 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 405 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 494 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 536 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 564 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 586 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 613 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 673 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 694 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 714 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 745 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 858 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 911 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 923 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 941 "../../../src/gcc_2_7_1/config/i386/osfrose.h"
# 22 "../../../src/gcc_2_7_1/config/i386/osfelf.h" 2
# 40 "../../../src/gcc_2_7_1/config/i386/osfelf.h"
# 52 "../../../src/gcc_2_7_1/config/i386/osfelf.h"
# 69 "../../../src/gcc_2_7_1/config/i386/osfelf.h"
# 1 "tm.h" 2
# 43 "../../../src/gcc_2_7_1/config/i386/xm-i386.h" 2
# 24 "../../../src/gcc_2_7_1/config/i386/xm-osf.h" 2
# 1 "tconfig.h" 2
# 33 "../../../src/gcc_2_7_1/libgcc2.c" 2
# 1 "../../../src/gcc_2_7_1/machmode.h" 1
enum machine_mode {
# 1 "../../../src/gcc_2_7_1/machmode.def" 1
VOIDmode ,
QImode ,
HImode ,
PSImode ,
SImode ,
PDImode ,
DImode ,
TImode ,
OImode ,
QFmode ,
HFmode ,
TQFmode ,
SFmode ,
DFmode ,
XFmode ,
TFmode ,
SCmode ,
DCmode ,
XCmode ,
TCmode ,
CQImode ,
CHImode ,
CSImode ,
CDImode ,
CTImode ,
COImode ,
BLKmode ,
CCmode ,
# 71 "../../../src/gcc_2_7_1/machmode.h" 2
CCFPEQmode ,
MAX_MACHINE_MODE };
extern char *mode_name[];
enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE_CC,
MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT, MAX_MODE_CLASS};
extern enum mode_class mode_class[];
extern int mode_size[];
extern int mode_unit_size[];
extern enum machine_mode mode_wider_mode[];
extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int) ;
extern enum machine_mode get_best_mode (int, int, int, enum machine_mode, int) ;
extern enum machine_mode class_narrowest_mode[];
extern enum machine_mode byte_mode;
extern enum machine_mode word_mode;
extern enum machine_mode ptr_mode;
# 34 "../../../src/gcc_2_7_1/libgcc2.c" 2
# 1 "../../../src/gcc_2_7_1/defaults.h" 1
# 42 "../../../src/gcc_2_7_1/defaults.h"
# 70 "../../../src/gcc_2_7_1/defaults.h"
# 111 "../../../src/gcc_2_7_1/defaults.h"
# 121 "../../../src/gcc_2_7_1/defaults.h"
# 133 "../../../src/gcc_2_7_1/defaults.h"
# 35 "../../../src/gcc_2_7_1/libgcc2.c" 2
# 1 "../../dir-include/include/stddef.h" 1
typedef int ptrdiff_t;
typedef unsigned int wchar_t;
# 37 "../../../src/gcc_2_7_1/libgcc2.c" 2
typedef unsigned int UQItype __attribute__ ((mode (QI)));
typedef int SItype __attribute__ ((mode (SI)));
typedef unsigned int USItype __attribute__ ((mode (SI)));
typedef int DItype __attribute__ ((mode (DI)));
typedef unsigned int UDItype __attribute__ ((mode (DI)));
typedef float SFtype __attribute__ ((mode (SF)));
typedef float DFtype __attribute__ ((mode (DF)));
typedef int word_type __attribute__ ((mode (__word__)));
struct DIstruct {SItype low, high;};
typedef union
{
struct DIstruct s;
DItype ll;
} DIunion;
extern DItype __fixunssfdi (SFtype a);
extern DItype __fixunsdfdi (DFtype a);
# 154 "../../../src/gcc_2_7_1/libgcc2.c"
# 186 "../../../src/gcc_2_7_1/libgcc2.c"
# 218 "../../../src/gcc_2_7_1/libgcc2.c"
# 251 "../../../src/gcc_2_7_1/libgcc2.c"
# 272 "../../../src/gcc_2_7_1/libgcc2.c"
# 291 "../../../src/gcc_2_7_1/libgcc2.c"
# 399 "../../../src/gcc_2_7_1/libgcc2.c"
# 641 "../../../src/gcc_2_7_1/libgcc2.c"
# 670 "../../../src/gcc_2_7_1/libgcc2.c"
# 697 "../../../src/gcc_2_7_1/libgcc2.c"
# 711 "../../../src/gcc_2_7_1/libgcc2.c"
# 721 "../../../src/gcc_2_7_1/libgcc2.c"
# 742 "../../../src/gcc_2_7_1/libgcc2.c"
# 763 "../../../src/gcc_2_7_1/libgcc2.c"
# 796 "../../../src/gcc_2_7_1/libgcc2.c"
# 807 "../../../src/gcc_2_7_1/libgcc2.c"
# 840 "../../../src/gcc_2_7_1/libgcc2.c"
# 851 "../../../src/gcc_2_7_1/libgcc2.c"
DItype
__fixunsdfdi (a)
DFtype a;
{
DFtype b;
UDItype v;
if (a < 0)
return 0;
b = (a / (((UDItype) 1) << (sizeof (SItype) * 8 ) ) );
v = (USItype) b;
v <<= (sizeof (SItype) * 8 ) ;
a -= (DFtype)v;
if (a < 0)
v -= (USItype) (- a);
else
v += (USItype) a;
return v;
}
# 895 "../../../src/gcc_2_7_1/libgcc2.c"
# 931 "../../../src/gcc_2_7_1/libgcc2.c"
# 941 "../../../src/gcc_2_7_1/libgcc2.c"
# 965 "../../../src/gcc_2_7_1/libgcc2.c"
# 989 "../../../src/gcc_2_7_1/libgcc2.c"
# 1013 "../../../src/gcc_2_7_1/libgcc2.c"
# 1085 "../../../src/gcc_2_7_1/libgcc2.c"
# 1108 "../../../src/gcc_2_7_1/libgcc2.c"
# 1131 "../../../src/gcc_2_7_1/libgcc2.c"
# 1153 "../../../src/gcc_2_7_1/libgcc2.c"
# 1193 "../../../src/gcc_2_7_1/libgcc2.c"
# 1413 "../../../src/gcc_2_7_1/libgcc2.c"
# 1434 "../../../src/gcc_2_7_1/libgcc2.c"
# 1637 "../../../src/gcc_2_7_1/libgcc2.c"
# 1675 "../../../src/gcc_2_7_1/libgcc2.c"
# 1695 "../../../src/gcc_2_7_1/libgcc2.c"
# 1745 "../../../src/gcc_2_7_1/libgcc2.c"
# 1765 "../../../src/gcc_2_7_1/libgcc2.c"
# 1786 "../../../src/gcc_2_7_1/libgcc2.c"
# 1801 "../../../src/gcc_2_7_1/libgcc2.c"
# 1916 "../../../src/gcc_2_7_1/libgcc2.c"
# 2048 "../../../src/gcc_2_7_1/libgcc2.c"
# 2122 "../../../src/gcc_2_7_1/libgcc2.c"
# 2145 "../../../src/gcc_2_7_1/libgcc2.c"
# 2180 "../../../src/gcc_2_7_1/libgcc2.c"
# 2415 "../../../src/gcc_2_7_1/libgcc2.c"
# 2440 "../../../src/gcc_2_7_1/libgcc2.c"
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads