Thread View: gnu.gcc.bug
1 messages
1 total messages
Started by Doug Berry
Thu, 20 Aug 1992 12:48
gcc 2.2.2 and Ultrix 4.2c on ghostscript2.5
Author: Doug Berry
Date: Thu, 20 Aug 1992 12:48
Date: Thu, 20 Aug 1992 12:48
2602 lines
26382 bytes
26382 bytes
I've had a problem with the compiler
I made the compiler by doing
configure decstation
here's gcc -v
-------------------%<-----------------------
Reading specs from /usr/local/lib/gcc-lib/decstation/2.2.2/specs
gcc version 2.2.2
-------------------%<-----------------------
i was making ghostscript2.5 on a DECstation 5000/25 running
Ultrix 4.2c when...
gcc -g -O -I/usr/local/lib/gcc-lib/include -c gsmain.c
pid 3074 (cc1) was killed on an unaligned access, at pc 0x46e40c
gcc: Internal compiler error: program cc1 got fatal signal 10
make: *** [gsmain.o] Error 1
-------------------%<-----------------------
here is output from gcc -E -I/usr/local/lib/gcc-lib/include gsmain.c
-------------------%<-----------------------
# 1 "gsmain.c"
# 1 "memory_.h" 1
# 57 "memory_.h"
# 1 "/usr/include/memory.h" 1 3
extern void
*memccpy(),
*memchr(),
*memcpy(),
*memmove(),
*memset();
extern int memcmp();
# 61 "memory_.h" 2
extern void memswab2(), memswab4();
extern void memflip8x8();
# 22 "gsmain.c" 2
# 1 "string_.h" 1
# 1 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/string.h" 1 3
typedef unsigned int size_t;
extern char
*strcat( char *__s1, const char *__s2 ),
*strchr( const char *__s, int __c ),
*strcpy( char *__s1, const char *__s2 ),
*strerror( int __n ),
*strncat( char *__s1, const char *__s2, size_t __n ),
*strncpy( char *__s1, const char *__s2, size_t __n ),
*strpbrk(const char *__s1, const char *__s2 ),
*strrchr( const char *__s, int __c ),
*strstr( const char *__s, const char *__t ),
*strtok( char *__s1, const char *__s2 );
extern int
memcmp( const void *__s1, const void *__s2, size_t __n ),
strcmp( const char *__s1, const char *__s2 ),
strcoll( const char *__s1, const char *__s2 ),
strncmp( const char *__s1, const char *__s2, size_t __n );
extern void
*memchr( const void *__s, int __c, size_t __n ),
*memcpy( void *__s1, const void *__s2, size_t __n ),
*memmove( void *__s1, const void *__s2, size_t __n ),
*memset( void *__s, int __c, size_t __n );
extern size_t
strcspn( const char *__s1, const char *__s2 ),
strlen( const char *__s ),
strspn( const char *__s1, const char *__s2 ),
strxfrm( char *__to, const char *__from, size_t __maxsize );
# 125 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/string.h" 3
# 32 "string_.h" 2
# 23 "gsmain.c" 2
# 1 "ghost.h" 1
# 1 "gx.h" 1
# 1 "gs.h" 1
# 1 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/stdio.h" 1 3
# 1 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/ansi_compat.h" 1 3
# 116 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/ansi_compat.h" 3
# 89 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/stdio.h" 2 3
extern struct _iobuf {
int _cnt;
char *_ptr;
char *_base;
int _bufsiz;
short _flag;
short _file;
} _iob[3 ];
typedef struct _iobuf FILE;
typedef long fpos_t;
extern int getc( FILE *__stream );
extern int getchar( void );
extern int putc( int __c, FILE *__stream);
extern int putchar( int __c);
extern int feof( FILE *__stream );
extern int ferror( FILE *__stream );
extern int fileno( FILE *__stream );
extern int _filbuf( FILE *p);
extern int _flsbuf( unsigned char x , FILE *p);
typedef char *va_list;
extern void clearerr( FILE *__stream);
extern int fclose( FILE *__stream );
extern FILE * fdopen( int __filedes, char *__type );
extern int fflush( FILE *__stream );
extern int fgetc( FILE *__stream );
extern int fgetpos( FILE *__stream, fpos_t *__pos );
extern char * fgets( char *__s, int __n, FILE *__stream );
extern FILE * fopen( const char *__filename, const char *__type );
extern int fprintf( FILE *__stream, const char *__format, ... );
extern int fputc( int __c, FILE *__stream );
extern int fputs( const char *__s, FILE *__stream );
extern size_t fread( void *__ptr, size_t __size,
size_t __nitems, FILE *__stream );
extern FILE * freopen( const char *__filename, const char *__type,
FILE *__stream );
extern int fscanf( FILE *__stream, const char *__format, ... );
extern int fseek( FILE *__stream, long __offset, int __ptrname );
extern int fsetpos( FILE *__stream, const fpos_t *__pos );
extern long ftell( FILE *__stream );
extern size_t fwrite( const void *__ptr, size_t __size,
size_t __nitems, FILE *__stream );
extern char * gets( char *__s );
extern void perror( const char *__s );
extern FILE * popen(const char *__command, const char *__type );
extern int printf( const char *__format, ... );
extern int puts( const char *__s );
extern int remove( const char *__filename );
extern int rename( const char *__from, const char *__to );
extern void rewind( FILE *__stream );
extern int scanf( const char *__format, ... );
extern void setbuf( FILE *__stream, char *__buf );
extern int setvbuf( FILE *__stream, char *__buf,
int __type, size_t __size );
extern int sscanf( const char *__s, const char *__format, ... );
extern FILE * tmpfile( void );
extern char * tmpnam( char *__s );
extern int ungetc( int __c, FILE *__stream );
extern int vfprintf( FILE *__stream, const char *__format, va_list __ap );
extern int vprintf( const char *__format, va_list __ap );
extern int vsprintf( char *__s, const char *__format, va_list __ap);
extern char * tempnam( const char *__dir, const char *__pfx);
extern int putw( int __w, FILE *__stream );
extern int getw(FILE *__stream);
extern int pclose( FILE *__stream );
# 299 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/stdio.h" 3
extern int sprintf( char *__s, const char *__format, ... );
# 22 "gs.h" 2
# 1 "std.h" 1
# 1 "arch.h" 1
# 27 "std.h" 2
typedef unsigned char byte;
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
# 1 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/sys/types.h" 1 3
# 1 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/ansi_compat.h" 1 3
# 116 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/ansi_compat.h" 3
# 79 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/sys/types.h" 2 3
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned int uint_ ;
typedef unsigned long u_long;
typedef unsigned short ushort_ ;
typedef volatile char v_char;
typedef volatile short v_short;
typedef volatile long v_long;
typedef volatile unsigned char vu_char;
typedef volatile unsigned short vu_short;
typedef volatile unsigned long vu_long;
typedef
signed
char s_char;
typedef struct _physadr { int r[1]; } *physadr;
typedef struct label_t {
int val[12];
} label_t;
typedef struct _quad { long val[2]; } quad;
typedef long daddr_t;
typedef char * caddr_t;
typedef u_long gno_t;
typedef short cnt_t;
typedef long swblk_t;
typedef long paddr_t;
typedef long audit_ID_t;
typedef short dev_t;
typedef short gid_t;
typedef unsigned long ino_t;
typedef unsigned short mode_t;
typedef short nlink_t;
typedef int off_t;
typedef int pid_t;
typedef short uid_t;
typedef int time_t;
typedef int clock_t;
typedef long key_t;
typedef long fd_mask;
typedef struct fd_set {
fd_mask fds_bits[(((4096 )+(( (sizeof(fd_mask) * 8 ) )-1))/( (sizeof(fd_mask) * 8 ) )) ];
} fd_set;
# 111 "std.h" 2
# 138 "std.h"
typedef char *ptr_ord_t;
typedef double floatp;
# 219 "std.h"
typedef char *(*proc_alloc_t)(unsigned num_elements, unsigned element_size, const char *client_name );
typedef void (*proc_free_t)(char *data, unsigned num_elements, unsigned element_size, const char *client_name );
# 23 "gs.h" 2
extern FILE *gs_stdin, *gs_stdout, *gs_stderr;
typedef struct gs_point_s {
double x, y;
} gs_point;
typedef struct gs_int_point_s {
int x, y;
} gs_int_point;
typedef struct gs_rect_s {
gs_point p, q;
} gs_rect;
typedef struct gs_int_rect_s {
gs_int_point p, q;
} gs_int_rect;
typedef struct gs_state_s gs_state;
typedef struct {
proc_alloc_t alloc;
proc_free_t free;
} gs_memory_procs;
char *gs_malloc(uint, uint, const char * );
void gs_free(char *, uint, uint, const char * );
# 22 "gx.h" 2
# 1 "gdebug.h" 1
extern char gs_debug[128];
# 65 "gdebug.h"
# 23 "gx.h" 2
extern int gs_log_error(int, const char *, int );
# 22 "ghost.h" 2
# 1 "iref.h" 1
typedef struct ref_s ref;
typedef enum {
t_array,
t_boolean,
t_condition,
t_dictionary,
t_file,
t_fontID,
t_gstate,
t_integer,
t_lock,
t_mark,
t_name,
t_null,
t_operator,
t_real,
t_save,
t_string,
t_mixedarray,
t_shortarray,
t_device,
t_oparray,
t_next_index
} ref_type;
typedef struct dict_s dict;
typedef struct name_s name;
typedef int (*dummy_op_proc_p)();
struct stream_s;
struct gs_font_s;
struct gs_color_s;
struct gs_condition_s;
struct gs_lock_s;
struct gx_device_s;
struct gstate_obj_s;
struct vm_save_s;
struct tas_s {
ushort type_attrs;
ushort rsize;
};
struct ref_s {
struct tas_s tas;
union v {
long intval;
ushort index;
float realval;
byte *bytes;
const byte *const_bytes;
struct ref_s *refs;
const struct ref_s *const_refs;
name *pname;
const name *const_pname;
dict *pdict;
const dict *const_pdict;
const ushort *packed;
dummy_op_proc_p opproc;
struct stream_s *pfile;
struct gs_font_s *pfont;
struct gs_condition_s *pcond;
struct gs_lock_s *plock;
struct gx_device_s *pdevice;
struct gs_state_s *pgstate;
struct vm_save_s *psave;
} value;
};
# 23 "ghost.h" 2
# 24 "gsmain.c" 2
# 1 "gp.h" 1
extern void gp_init(void );
extern void gp_exit(void );
extern void gp_get_clock(long *pdt );
typedef struct gx_device_s gx_device;
extern void gp_console_puts(const char *, uint );
extern int gp_make_console_current(gx_device * );
extern int gp_make_graphics_current(gx_device * );
extern FILE *gp_open_printer(char *fname );
extern void gp_close_printer(FILE *pfile, const char *fname );
extern const char gp_file_name_list_separator;
extern const char gp_scratch_file_name_prefix[];
extern const int gp_file_names_ignore_case;
extern const char gp_fmode_binary_suffix[];
extern const char gp_fmode_rb[];
extern const char gp_fmode_wb[];
extern FILE *gp_open_scratch_file(const char *prefix, char *fname,
const char *mode );
extern int gp_file_name_is_absolute(const char *fname, uint len );
extern const char *
gp_file_name_concat_string(const char *prefix, uint plen,
const char *fname, uint len );
typedef struct file_status_s {
long size_pages;
long size_bytes;
long time_referenced;
long time_created;
} file_status;
extern int gp_file_status(const char *fname, file_status *pstatus );
struct file_enum_s;
typedef struct file_enum_s file_enum;
extern file_enum *gp_enumerate_files_init(const char *pat, uint patlen,
proc_alloc_t palloc,
proc_free_t pfree );
extern uint gp_enumerate_files_next(file_enum *pfen, char *ptr, uint maxlen );
extern void gp_enumerate_files_close(file_enum *pfen );
# 25 "gsmain.c" 2
# 1 "gsmatrix.h" 1
struct gs_matrix_s {
long _xx ; float xx; long _xy ; float xy; long _yx ; float yx; long _yy ; float yy; long _tx ; float tx; long _ty ; float ty ;
};
typedef struct gs_matrix_s gs_matrix;
void gs_make_identity(gs_matrix * );
int gs_make_translation(floatp, floatp, gs_matrix * ),
gs_make_scaling(floatp, floatp, gs_matrix * ),
gs_make_rotation(floatp, gs_matrix * );
int gs_matrix_multiply(const gs_matrix *, const gs_matrix *, gs_matrix * ),
gs_matrix_invert(const gs_matrix *, gs_matrix * ),
gs_matrix_rotate(const gs_matrix *, floatp, gs_matrix * );
int gs_point_transform(floatp, floatp, const gs_matrix *, gs_point * ),
gs_point_transform_inverse(floatp, floatp, const gs_matrix *, gs_point * ),
gs_distance_transform(floatp, floatp, const gs_matrix *, gs_point * ),
gs_distance_transform_inverse(floatp, floatp, const gs_matrix *, gs_point * ),
gs_bbox_transform_inverse(gs_rect *, gs_matrix *, gs_rect * );
# 26 "gsmain.c" 2
# 1 "gxdevice.h" 1
# 1 "gxbitmap.h" 1
typedef unsigned long gx_bitmap_id;
typedef struct gx_bitmap_s {
byte *data;
int raster;
gs_int_point size;
gx_bitmap_id id;
ushort rep_width, rep_height;
} gx_bitmap;
# 23 "gxdevice.h" 2
typedef unsigned long gx_color_index;
typedef unsigned short gx_color_value;
typedef struct gx_device_color_info_s {
int num_components;
int depth;
gx_color_value max_gray;
gx_color_value max_rgb;
gx_color_value dither_gray;
gx_color_value dither_rgb;
} gx_device_color_info;
typedef struct gx_device_procs_s gx_device_procs;
# 76 "gxdevice.h"
struct gx_device_s {
int params_size; gx_device_procs *procs; const char *dname; int width; int height; float x_pixels_per_inch; float y_pixels_per_inch; float l_margin, b_margin, r_margin, t_margin; gx_device_color_info color_info; int is_open ;
};
typedef struct gs_prop_item_s gs_prop_item;
struct gx_device_procs_s {
int (*open_device)(gx_device *dev ) ;
void (*get_initial_matrix)(gx_device *dev, gs_matrix *pmat ) ;
int (*sync_output)(gx_device *dev ) ;
int (*output_page)(gx_device *dev, int num_copies, int flush ) ;
int (*close_device)(gx_device *dev ) ;
gx_color_index (*map_rgb_color)(gx_device *dev, gx_color_value red, gx_color_value green, gx_color_value blue ) ;
int (*map_color_rgb)(gx_device *dev, gx_color_index color, gx_color_value rgb[3] ) ;
int (*fill_rectangle)(gx_device *dev, int x, int y, int width, int height, gx_color_index color ) ;
int (*tile_rectangle)(gx_device *dev, const gx_bitmap *tile, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y ) ;
int (*copy_mono)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1 ) ;
int (*copy_color)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height ) ;
int (*draw_line)(gx_device *dev, int x0, int y0, int x1, int y1, gx_color_index color ) ;
int (*get_bits)(gx_device *dev, int y, unsigned char *data, unsigned int size, int pad_to_word ) ;
int (*get_props)(gx_device *dev, gs_prop_item *plist ) ;
int (*put_props)(gx_device *dev, gs_prop_item *plist, int count ) ;
};
extern unsigned int gx_device_bytes_per_scan_line(const gx_device *dev, int pad_to_word );
extern int gx_device_adjust_resolution(gx_device *dev, int actual_width, int actual_height );
int gx_default_open_device(gx_device *dev ) ;
void gx_default_get_initial_matrix(gx_device *dev, gs_matrix *pmat ) ;
int gx_default_sync_output(gx_device *dev ) ;
int gx_default_output_page(gx_device *dev, int num_copies, int flush ) ;
int gx_default_close_device(gx_device *dev ) ;
gx_color_index gx_default_map_rgb_color(gx_device *dev, gx_color_value red, gx_color_value green, gx_color_value blue ) ;
int gx_default_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3] ) ;
int gx_default_tile_rectangle(gx_device *dev, const gx_bitmap *tile, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y ) ;
int gx_default_copy_color(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height ) ;
int gx_default_draw_line(gx_device *dev, int x0, int y0, int x1, int y1, gx_color_index color ) ;
int gx_default_get_bits(gx_device *dev, int y, unsigned char *data, unsigned int size, int pad_to_word ) ;
int gx_default_get_props(gx_device *dev, gs_prop_item *plist ) ;
int gx_default_put_props(gx_device *dev, gs_prop_item *plist, int count ) ;
# 27 "gsmain.c" 2
# 1 "gserrors.h" 1
# 28 "gsmain.c" 2
# 1 "estack.h" 1
typedef ref *es_ptr;
typedef const ref *const_es_ptr;
extern es_ptr esbot, esp, estop;
extern es_ptr esfile;
# 29 "gsmain.c" 2
# 1 "main.h" 1
extern char *gs_lib_env_path;
extern uint gs_memory_chunk_size;
extern int gs_user_errors;
extern void gs_init0(FILE *, FILE *, FILE *, int ),
gs_init1(void ),
gs_init2(void );
extern void gs_add_lib_path(const char * );
extern int gs_run_file(const char *, int, int * ),
gs_run_string(const char *, int, int * );
extern void gs_debug_dump_stack(int code );
extern void gs_finit(void ),
gs_exit(int );
# 30 "gsmain.c" 2
# 1 "ostack.h" 1
typedef ref *os_ptr;
typedef const ref *const_os_ptr;
extern os_ptr osbot, osp, ostop;
# 31 "gsmain.c" 2
# 1 "store.h" 1
# 67 "store.h"
extern int alloc_save_new_mask;
extern int alloc_save_test_mask;
extern int alloc_save_change(ref *ptr, const char *client_name );
extern ref *alloc_refs(uint num_refs, const char *client_name );
extern void alloc_free_refs(ref *ptr, uint num_refs, const char *client_name );
# 32 "gsmain.c" 2
uint gs_memory_chunk_size = 20000;
int gs_user_errors;
const char **gs_lib_paths;
static int gs_lib_count;
char *gs_lib_env_path;
extern const char *gs_lib_default_path;
extern const char *gs_init_file;
extern ref gs_init_file_array[];
extern int gs_log_errors;
extern FILE *gs_debug_out;
static int init1_done, init2_done;
void
gs_init0(FILE *in, FILE *out, FILE *err, int max_lib_paths)
{
gs_stdin = in;
gs_stdout = out;
gs_stderr = err;
gs_debug_out = gs_stdout;
gp_init();
gs_lib_env_path = 0;
gs_lib_paths =
(const char **)gs_malloc(max_lib_paths + 3, sizeof(char *),
"gs_lib_paths array");
gs_lib_count = 0;
gs_user_errors = 1;
gs_log_errors = 0;
memset(gs_debug, 0, 128);
init1_done = init2_done = 0;
}
void
gs_init1()
{ if ( !init1_done )
{ alloc_init(gs_malloc, gs_free, gs_memory_chunk_size);
{ extern void name_init(void ); name_init(); }
{ extern void obj_init(void ); obj_init(); }
{ extern void scan_init(void ); scan_init(); }
init1_done = 1;
}
}
void
gs_init2()
{ gs_init1();
if ( !init2_done )
{ int code, exit_code;
{ extern void gs_init(void ); gs_init(); }
{ extern void zop_init(void ); zop_init(); }
interp_init(1);
{ extern void op_init(void ); op_init(); }
{ ref *ifp = gs_init_file_array;
ref ifa;
for ( ; ifp->value.bytes != 0; ifp++ )
((ifp)->tas.rsize = ( strlen((const char *)ifp->value.bytes))) ;
(((&ifa)->value. refs = (
gs_init_file_array), ((&ifa)->tas.type_attrs = (( t_array) << 7 ) + ( (0x10 +0x20 ) )) ) , ((&ifa)->tas.rsize = (
ifp - gs_init_file_array)) ) ;
initial_enter_name("INITFILES", &ifa);
}
code = gs_run_file(gs_init_file, gs_user_errors, &exit_code);
if ( code < 0 )
{ if ( code != (-100) )
gs_debug_dump_stack(code);
gs_exit((exit_code ? exit_code : 2));
}
init2_done = 1;
}
}
void
gs_add_lib_path(const char *lpath)
{ gs_lib_paths[gs_lib_count] = lpath;
gs_lib_count++;
}
static void
set_lib_paths()
{ const char **ppath = &gs_lib_paths[gs_lib_count];
if ( gs_lib_env_path != 0 ) *ppath++ = gs_lib_env_path;
if ( gs_lib_default_path != 0 ) *ppath++ = gs_lib_default_path;
*ppath = 0;
}
static int
run_open(const char *file_name, ref *pfile)
{
byte fn[200 ];
uint len;
return lib_file_open(file_name, strlen(file_name), fn, 200 ,
&len, pfile);
}
int
gs_run_file(const char *file_name, int user_errors, int *pexit_code)
{ ref initial_file;
set_lib_paths();
if ( run_open(file_name, &initial_file) < 0 )
{ ( fprintf(gs_stderr , "Can't find initialization file %s\n", file_name)) ;
return gs_log_error((-100) , "gsmain.c", 166) ;
}
((&initial_file)->tas.type_attrs |= ( 0x20 + 0x40 )) ;
return gs_interpret(&initial_file, user_errors, pexit_code);
}
int
gs_run_string(const char *str, int user_errors, int *pexit_code)
{ ref stref;
set_lib_paths();
(((&stref)->value. const_bytes = ( (byte *)str), ((&stref)->tas.type_attrs = (( t_string) << 7 ) + ( 0x40 + (0x10 +0x20 ) )) ) , ((&stref)->tas.rsize = (
strlen(str))) ) ;
return gs_interpret(&stref, gs_user_errors, pexit_code);
}
extern gx_device *gx_device_list[];
void gs_malloc_release(void );
void file_close_all(void );
int gs_closedevice(gx_device * );
void gp_exit(void );
void gs_finit()
{ gx_device **pdev = gx_device_list;
fflush(gs_stderr );
for ( ; *pdev != 0; pdev++ )
gs_closedevice(*pdev);
file_close_all();
gs_malloc_release();
gp_exit();
}
void
gs_exit(int code)
{ gs_finit();
exit(code);
}
extern void debug_print_ref(const ref * );
extern void debug_dump_refs(const ref *, uint, const char * );
extern ref error_object;
void
gs_debug_dump_stack(int code)
{ zflush(osp);
fprintf(gs_stderr , "\nUnexpected interpreter error %d!\nError object: ", code) ;
debug_print_ref(&error_object);
fputc('\n', gs_stderr ) ;
debug_dump_refs(osbot, osp + 1 - osbot, "Operand stack");
debug_dump_refs(esbot, esp + 1 - esbot, "Execution stack");
}
int
gs_log_error(int err, const char *file, int line)
{ if ( gs_log_errors )
{ if ( file == 0 )
fprintf(gs_stderr , "Returning error %d\n", err) ;
else
fprintf(gs_stderr , "%s(%d): returning error %d\n",
(char *)file, line, err) ;
}
return err;
}
-------------------%<-----------------------
I hope this helps...
doug
--
uucp: ...utzoo!sis!doug phone: +1 416 845 9430 x2140
else: doug.berry@sheridanc.on.ca
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