gcc 1.38 & Roell's X11r4 server
James Van Artsdalen
james at bigtex.cactus.org
Sun Jan 6 11:17:30 AEST 1991
I believe I have resolved most of the bugs involving compiling Thomas
Roell's X11r4 server and gcc 1.38.
The first patch fixes a bug in gcc wherein static uninitialized local
variables are put in .bss instead of .data. The difference is moot
unless you're trying to build a shared library.
The next set of patches fix some indirect calls through uninitialized
variables in the X libraries. There might be more of these: they are
hard to find via regular expression searches.
The last patch is to a bug in the X server - a define is wrong. I
don't know what damage it was doing.
I would like to know of any core dumps that remain. I am especially
interested in any bugs involving the 387 that anyone can induce.
*** /tmp/,RCSt1a14640 Sat Jan 5 18:05:49 1991
--- config/tm-att386.h Fri Jan 4 23:49:05 1991
***************
*** 145,166 ****
#define DATA_SECTION_ASM_OP ".data"
- /* Output before uninitialized data. */
-
- #define BSS_SECTION_ASM_OP ".bss"
-
- #define EXTRA_SECTIONS in_bss
-
- #define EXTRA_SECTION_FUNCTIONS \
- void \
- bss_section () \
- { \
- if (in_section != in_bss) \
- { \
- fprintf (asm_out_file, "%s\n", BSS_SECTION_ASM_OP); \
- in_section = in_bss; \
- } \
- }
/* Define the syntax of labels and symbol definitions/declarations. */
--- 145,150 ----
***************
*** 179,185 ****
to define a local common symbol. */
#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \
! (bss_section (), \
ASM_OUTPUT_LABEL ((FILE), (NAME)), \
fprintf ((FILE), "\t.set .,.+%u\n", (ROUNDED)))
--- 163,169 ----
to define a local common symbol. */
#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \
! (data_section (), \
ASM_OUTPUT_LABEL ((FILE), (NAME)), \
fprintf ((FILE), "\t.set .,.+%u\n", (ROUNDED)))
===========================================================================
/usr/local/src/X/mit> rcsdiff -c lib/X/XGetDflt.c lib/Xaw/Clock.c lib/Xaw/Mailbox.c server/ddx/mi/mispritest.h
RCS file: lib/X/RCS/XGetDflt.c,v
retrieving revision 1.1
diff -c -r1.1 lib/X/XGetDflt.c
*** /tmp/,RCSt1a14655 Sat Jan 5 18:08:00 1991
--- lib/X/XGetDflt.c Sat Jan 5 16:12:00 1991
***************
*** 33,45 ****
#include "Xlibint.h"
#include <X11/Xresource.h>
static char *GetHomeDir (dest)
char *dest;
{
int uid;
extern char *getenv();
- extern int getuid();
- extern struct passwd *getpwuid(), *getpwnam();
struct passwd *pw;
register char *ptr;
--- 33,46 ----
#include "Xlibint.h"
#include <X11/Xresource.h>
+ extern int getuid();
+ extern struct passwd *getpwuid(), *getpwnam();
+
static char *GetHomeDir (dest)
char *dest;
{
int uid;
extern char *getenv();
struct passwd *pw;
register char *ptr;
===================================================================
RCS file: lib/Xaw/RCS/Clock.c,v
retrieving revision 1.1
diff -c -r1.1 lib/Xaw/Clock.c
*** /tmp/,RCSt1a14655 Sat Jan 5 18:08:00 1991
--- lib/Xaw/Clock.c Sat Jan 5 17:32:30 1991
***************
*** 170,175 ****
--- 170,177 ----
NULL, 0 );
}
+ extern struct tm *localtime();
+
/* ARGSUSED */
STATIC void Initialize (request, new)
Widget request, new;
***************
*** 189,195 ****
if(!w->clock.analog) {
char *str;
struct tm tm;
- extern struct tm *localtime();
long time_value;
(void) time(&time_value);
tm = *localtime(&time_value);
--- 191,196 ----
***************
*** 313,319 ****
XtIntervalId *id;
{
ClockWidget w = (ClockWidget)client_data;
- struct tm *localtime();
struct tm tm;
long time_value;
char *time_ptr;
--- 314,319 ----
***************
*** 512,517 ****
--- 512,520 ----
}
}
+ extern double cos();
+ extern double sin();
+
/*
* DrawLine - Draws a line.
*
***************
*** 533,540 ****
{
double dblank_length = (double)blank_length, dlength = (double)length;
double angle, cosangle, sinangle;
- extern double cos();
- extern double sin();
int cx = w->clock.centerX, cy = w->clock.centerY, x1, y1, x2, y2;
/*
--- 536,541 ----
***************
*** 576,583 ****
register double angle, cosangle, sinangle;
register double ws, wc;
Position x, y, x1, y1, x2, y2;
- extern double cos();
- extern double sin();
/*
* A full circle is 2 PI radians.
--- 577,582 ----
***************
*** 635,642 ****
register double ms, mc, ws, wc;
register int mid;
Position x, y;
- extern double cos();
- extern double sin();
/*
* A full circle is 2 PI radians.
--- 634,639 ----
===================================================================
*** /tmp/,RCSt1a14655 Sat Jan 5 18:08:01 1991
--- lib/Xaw/Mailbox.c Sat Jan 5 16:17:02 1991
***************
*** 510,524 ****
* get user name for building mailbox
*/
static void GetMailFile (w)
MailboxWidget w;
{
- extern char *getlogin();
char *username;
username = getlogin ();
if (!username) {
- extern struct passwd * getpwuid();
struct passwd *pw = getpwuid (getuid ());
if (!pw) {
--- 510,525 ----
* get user name for building mailbox
*/
+ extern char *getlogin();
+ extern struct passwd * getpwuid();
+
static void GetMailFile (w)
MailboxWidget w;
{
char *username;
username = getlogin ();
if (!username) {
struct passwd *pw = getpwuid (getuid ());
if (!pw) {
===================================================================
RCS file: server/ddx/mi/RCS/mispritest.h,v
retrieving revision 1.1
diff -c -r1.1 server/ddx/mi/mispritest.h
*** /tmp/,RCSt1a14655 Sat Jan 5 18:08:01 1991
--- server/ddx/mi/mispritest.h Fri Dec 21 10:12:24 1990
***************
*** 92,98 ****
*/
#define SPN_OVERLAP(pCbox,y,x,w) BOX_OVERLAP((pCbox),(x),(y),(x)+(w),(y))
! #define LINE_SORT(x1,y2,x2,y2) \
{ int _t; \
if (x1 > x2) { _t = x1; x1 = x2; x2 = _t; } \
if (y1 > y2) { _t = y1; y1 = y2; y2 = _t; } }
--- 92,98 ----
*/
#define SPN_OVERLAP(pCbox,y,x,w) BOX_OVERLAP((pCbox),(x),(y),(x)+(w),(y))
! #define LINE_SORT(x1,y1,x2,y2) \
{ int _t; \
if (x1 > x2) { _t = x1; x1 = x2; x2 = _t; } \
if (y1 > y2) { _t = y1; y1 = y2; y2 = _t; } }
--
James R. Van Artsdalen james at bigtex.cactus.org "Live Free or Die"
Dell Computer Co 9505 Arboretum Blvd Austin TX 78759 512-338-8789
More information about the Comp.unix.sysv386
mailing list