Commit c0641ea6 authored by rtoy's avatar rtoy
Browse files

Restore building with unicode off.

lisp/interr.c:
o Fix type in non-unicode case.
o Use type_SimpleString, not 0x32!

lisp/os-common.c:
o Wrap uses of c_symbol_name and convert_lisp_string with #ifdef
  UNICODE/#endif.
o For the non-unicode case, #define c_symbol_name symbol_name->data
o These changes need to be cleaned up better.
parent f6c29bdf
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
/*
 * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interr.c,v 1.9.2.2 2008/05/20 03:48:14 rtoy Exp $
 * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interr.c,v 1.9.2.3 2008/05/20 11:50:34 rtoy Exp $
 *
 * Stuff to handle internal errors.
 *
@@ -165,13 +165,13 @@ debug_print(lispobj object)
{
    
#ifndef UNICODE
    printf("%s\n", (char *) (((struct vector *) PTR(string))->data));
    printf("%s\n", (char *) (((struct vector *) PTR(object))->data));
    fflush(stdout);
#else    
    if (Pointerp(object)) {
        struct vector *lisp_string = (struct vector*) PTR(object);
        
        if ((unsigned long) lisp_string->header == 0x32) {
        if ((unsigned long) lisp_string->header == type_SimpleString) {
            unsigned short int* lisp_chars;
            int len;
            int k;
+11 −4
Original line number Diff line number Diff line
/*

 $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/os-common.c,v 1.27.2.1 2008/05/14 16:12:06 rtoy Exp $
 $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/os-common.c,v 1.27.2.2 2008/05/20 11:50:34 rtoy Exp $

 This code was written as part of the CMU Common Lisp project at
 Carnegie Mellon University, and has been placed in the public domain.
@@ -178,6 +178,7 @@ os_foreign_linkage_init(void)
	    = (struct vector *) PTR(data_vector->data[i]);
	long type = fixnum_value(data_vector->data[i + 1]);
	lispobj lib_list = data_vector->data[i + 2];
#ifdef UNICODE
        /* FIXME:  1000 may not be long enough.  Add checks to make sure it's ok!!!!*/
        char c_symbol_name[1000];
	/*
@@ -186,7 +187,9 @@ os_foreign_linkage_init(void)
	 */

        convert_lisp_string(c_symbol_name, symbol_name->data, (symbol_name->length >> 2));
                            
#else
#define c_symbol_name ((char*) symbol_name->data)
#endif                            
	if (i == 0) {
#if defined(sparc)
	    if (type != 1 || strcmp(c_symbol_name, "call_into_c")) {
@@ -252,10 +255,11 @@ os_resolve_data_linkage(void)
	    = (struct vector *) PTR(data_vector->data[i]);
	long type = fixnum_value(data_vector->data[i + 1]);
	lispobj lib_list = data_vector->data[i + 2];
#ifdef UNICODE
        char c_symbol_name[1000];

        convert_lisp_string(c_symbol_name, symbol_name->data, (symbol_name->length >> 2));

#endif
	if (type == 2 && lib_list != NIL) {
	    void *target_addr = os_dlsym(c_symbol_name, lib_list);

@@ -287,8 +291,9 @@ os_link_one_symbol(long entry)
    long type;
    void *target_addr;
    long table_index = entry * LINKAGE_DATA_ENTRY_SIZE;
#ifdef UNICODE
    char c_symbol_name[1000];
    
#endif    

    linkage_data = (struct array *) PTR(linkage_data_obj);
    table_size = fixnum_value(linkage_data->fill_pointer);
@@ -299,7 +304,9 @@ os_link_one_symbol(long entry)
    symbol_name = (struct vector *) PTR(data_vector->data[table_index]);
    type = fixnum_value(data_vector->data[table_index + 1]);

#ifdef UNICODE
    convert_lisp_string(c_symbol_name, symbol_name->data, (symbol_name->length >> 2));
#endif
    
    target_addr = os_dlsym(c_symbol_name,
			   data_vector->data[table_index + 2]);