fixes to enable PERL_OBJECT build with mingw32/egcs-1.0.2
Gurusamy Sarathy [Tue, 21 Jul 1998 07:15:54 +0000 (07:15 +0000)]
p4raw-id: //depot/perl@1612

ext/Opcode/Opcode.xs
proto.h
win32/makedef.pl
win32/makefile.mk
win32/perlhost.h
win32/win32.c
win32/win32.h
win32/win32sck.c

index 1da7794..e853cf1 100644 (file)
@@ -204,7 +204,7 @@ opmask_addlocal(SV *opset, char *op_mask_buf) /* Localise PL_op_mask then opmask
 {
     char *orig_op_mask = PL_op_mask;
     SAVEPPTR(PL_op_mask);
-#if !(defined(PERL_OBJECT) && defined(__BORLANDC__))
+#if !defined(PERL_OBJECT)
     /* XXX casting to an ordinary function ptr from a member function ptr
      * is disallowed by Borland
      */
diff --git a/proto.h b/proto.h
index 2908222..8b42914 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -74,7 +74,7 @@ VIRTUAL char **       get_op_names _((void));
 VIRTUAL char * get_no_modify _((void));
 VIRTUAL U32 *  get_opargs _((void));
 VIRTUAL I32    cxinc _((void));
-VIRTUAL void   deb _((const char* pat,...)) __attribute__((format(printf,1,2)));
+VIRTUAL void   deb _((const char* pat,...)) /*__attribute__((format(printf,1,2)))*/;
 VIRTUAL void   deb_growlevel _((void));
 VIRTUAL void   debprofdump _((void));
 VIRTUAL I32    debop _((OP* o));
index c49c68d..f860291 100644 (file)
@@ -76,8 +76,20 @@ sub emit_symbols
 }
 
 skip_symbols [qw(
-Perl_statusvalue_vms
-Perl_archpat_auto
+PL_statusvalue_vms
+PL_archpat_auto
+PL_cryptseen
+PL_DBcv
+PL_generation
+PL_in_clean_all
+PL_in_clean_objs
+PL_lastgotoprobe
+PL_linestart
+PL_modcount
+PL_pending_ident
+PL_sortcxix
+PL_sublex_info
+PL_timesbuf
 Perl_block_type
 Perl_additem
 Perl_cast_ulong
@@ -85,9 +97,7 @@ Perl_check_uni
 Perl_checkcomma
 Perl_chsize
 Perl_ck_aelem
-Perl_cryptseen
 Perl_cx_dump
-Perl_DBcv
 Perl_do_ipcctl
 Perl_do_ipcget
 Perl_do_msgrcv
@@ -112,16 +122,10 @@ Perl_fetch_io
 Perl_force_ident
 Perl_force_next
 Perl_force_word
-Perl_generation
 Perl_hv_stashpv
-Perl_in_clean_all
-Perl_in_clean_objs
 Perl_intuit_more
 Perl_init_thread_intern
 Perl_know_next
-Perl_lastgotoprobe
-Perl_linestart
-Perl_modcount
 Perl_modkids
 Perl_mstats
 Perl_my_bzero
@@ -134,7 +138,6 @@ Perl_no_fh_allowed
 Perl_no_op
 Perl_nointrp
 Perl_nomem
-Perl_pending_ident
 Perl_pp_cswitch
 Perl_pp_entersubr
 Perl_pp_evalonce
@@ -142,7 +145,6 @@ Perl_pp_interp
 Perl_pp_map
 Perl_pp_nswitch
 Perl_q
-Perl_rcsid
 Perl_reall_srchlen
 Perl_same_dirent
 Perl_saw_return
@@ -160,13 +162,10 @@ Perl_scan_word
 Perl_setenv_getix
 Perl_skipspace
 Perl_sort_mutex
-Perl_sortcxix
 Perl_sublex_done
-Perl_sublex_info
 Perl_sublex_start
 Perl_sv_ref
 Perl_sv_setptrobj
-Perl_timesbuf
 Perl_too_few_arguments
 Perl_too_many_arguments
 Perl_unlnk
@@ -181,16 +180,15 @@ mystack_mark
 perl_init_ext
 perl_requirepv
 stack
-statusvalue_vms
 Perl_safexcalloc
 Perl_safexmalloc
 Perl_safexfree
 Perl_safexrealloc
 Perl_my_memcmp
 Perl_my_memset
-Perl_cshlen
-Perl_cshname
-Perl_opsave
+PL_cshlen
+PL_cshname
+PL_opsave
 )];
 
 
@@ -216,28 +214,28 @@ else
 unless ($define{'USE_THREADS'})
  {
   skip_symbols [qw(
+PL_thr_key
+PL_sv_mutex
+PL_svref_mutex
+PL_malloc_mutex
+PL_eval_mutex
+PL_eval_cond
+PL_eval_owner
+PL_threads_mutex
+PL_nthreads
+PL_nthreads_cond
+PL_threadnum
+PL_threadsv_names
+PL_thrsv
+Perl_vtbl_mutex
 Perl_getTHR
 Perl_setTHR
 Perl_condpair_magic
-Perl_thr_key
-Perl_sv_mutex
-Perl_svref_mutex
-Perl_malloc_mutex
-Perl_eval_mutex
-Perl_eval_cond
-Perl_eval_owner
-Perl_threads_mutex
 Perl_new_struct_thread
-Perl_nthreads
-Perl_nthreads_cond
 Perl_per_thread_magicals
 Perl_thread_create
-Perl_threadnum
 Perl_find_threadsv
-Perl_threadsv_names
-Perl_thrsv
 Perl_unlock_condpair
-Perl_vtbl_mutex
 Perl_magic_mutexfree
 Perl_sv_iv
 Perl_sv_nv
@@ -249,7 +247,7 @@ Perl_sv_pvn
 
 unless ($define{'FAKE_THREADS'})
  {
-  skip_symbols [qw(Perl_curthr)];
+  skip_symbols [qw(PL_curthr)];
  }
 
 sub readvar
@@ -261,7 +259,7 @@ sub readvar
   {
    # All symbols have a Perl_ prefix because that's what embed.h
    # sticks in front of them.
-   push(@syms,"Perl_".$1) if (/\bPERLVARI?C?\([IGT](\w+)/);
+   push(@syms,"PL_".$1) if (/\bPERLVARI?C?\([IGT](\w+)/);
   } 
  close(VARS); 
  return \@syms;
@@ -284,7 +282,7 @@ if ($define{'PERL_GLOBAL_STRUCT'})
   my $global = readvar("../perlvars.h");
   skip_symbols $global;
   emit_symbols [qw(Perl_GetVars)];
-  emit_symbols [qw(Perl_Vars Perl_VarsPtr)] unless $CCTYPE eq 'GCC';
+  emit_symbols [qw(PL_Vars PL_VarsPtr)] unless $CCTYPE eq 'GCC';
  } 
 
 unless ($define{'DEBUGGING'})
index f93807d..95d36e4 100644 (file)
@@ -227,8 +227,8 @@ SUBSYS              = console
 CXX_FLAG       = -xc++
 
 LIBC           = -lcrtdll
-LIBFILES       = $(CRYPT_LIB) -ladvapi32 -luser32 -lnetapi32 -lwsock32 -lmingw32 \
-               -lgcc -lmoldname $(LIBC) -lkernel32
+LIBFILES       = $(CRYPT_LIB) -ladvapi32 -luser32 -lnetapi32 -lwsock32 \
+               -lmingw32 -lgcc -lmoldname $(LIBC) -lkernel32
 
 .IF  "$(CFG)" == "Debug"
 OPTIMIZE       = -g -O2 $(RUNTIME) -DDEBUGGING
@@ -410,7 +410,11 @@ CFGH_TMPL  = config_H.bc
 
 CFGSH_TMPL     = config.gc
 CFGH_TMPL      = config_H.gc
-PERLIMPLIB     *= ..\libperl$(a)
+.IF "$(OBJECT)" == "-DPERL_OBJECT"
+PERLIMPLIB     = ..\libperlcore$(a)
+.ELSE
+PERLIMPLIB     = ..\libperl$(a)
+.ENDIF
 
 .ELSE
 
index b8a59e4..57e0d2f 100644 (file)
@@ -652,23 +652,19 @@ public:
     };
     virtual char* GetBase(PerlIO* pf, int &err)
     {
-       FILE *f = (FILE*)pf;
-       return FILE_base(f);
+       return (PerlIO_has_base(pf) ? PerlIO_get_base(pf) : Nullch);
     };
     virtual int GetBufsiz(PerlIO* pf, int &err)
     {
-       FILE *f = (FILE*)pf;
-       return FILE_bufsiz(f);
+       return PerlIO_get_bufsiz(pf);
     };
     virtual int GetCnt(PerlIO* pf, int &err)
     {
-       FILE *f = (FILE*)pf;
-       return FILE_cnt(f);
+       return PerlIO_get_cnt(pf);
     };
     virtual char* GetPtr(PerlIO* pf, int &err)
     {
-       FILE *f = (FILE*)pf;
-       return FILE_ptr(f);
+       return PerlIO_get_ptr(pf);
     };
     virtual char* Gets(PerlIO* pf, char* s, int n, int& err)
     {
@@ -738,14 +734,15 @@ public:
     };
     virtual void SetCnt(PerlIO* pf, int n, int &err)
     {
-       FILE *f = (FILE*)pf;
-       FILE_cnt(f) = n;
+       if (PerlIO_canset_cnt(pf)) {
+           PerlIO_set_cnt(pf,n);
+       }
     };
     virtual void SetPtrCnt(PerlIO* pf, char * ptr, int n, int& err)
     {
-       FILE *f = (FILE*)pf;
-       FILE_ptr(f) = ptr;
-       FILE_cnt(f) = n;
+       if (PerlIO_canset_cnt(pf)) {
+           PerlIO_set_ptrcnt(pf,ptr,n);
+       }
     };
     virtual void Setlinebuf(PerlIO* pf, int &err)
     {
index 13f11e3..dd9fa69 100644 (file)
 #include <tchar.h>
 #ifdef __GNUC__
 #define Win32_Winsock
-#  ifdef __cplusplus
-#undef __attribute__           /* seems broken in 2.8.0 */
-#define __attribute__(p)
-#  endif
 #endif
 #include <windows.h>
 
@@ -2194,7 +2190,7 @@ XS(w32_DomainName)
        char dname[256];
        DWORD dnamelen = sizeof(dname);
        SID_NAME_USE snu;
-       if (LookupAccountName(NULL, name, &sid, &sidlen,
+       if (LookupAccountName(NULL, name, (PSID)&sid, &sidlen,
                              dname, &dnamelen, &snu)) {
            XSRETURN_PV(dname);         /* all that for this */
        }
index 184372d..bfbaaed 100644 (file)
 
 #ifdef __GNUC__
 typedef long long __int64;
-#define Win32_Winsock
-#  ifdef __cplusplus
-#undef __attribute__           /* seems broken in 2.8.0 */
-#define __attribute__(p)
-#  endif
+#  define Win32_Winsock
 /* GCC does not do __declspec() - render it a nop 
  * and turn on options to avoid importing data 
  */
-#define __declspec(x)
-#define PERL_GLOBAL_STRUCT
-#define MULTIPLICITY
+#  define __declspec(x)
+#  ifndef PERL_OBJECT
+#    define PERL_GLOBAL_STRUCT
+#    define MULTIPLICITY
+#  endif
 #endif
 
 /* Define DllExport akin to perl's EXT, 
@@ -216,6 +214,10 @@ typedef long               gid_t;
 #define flushall       _flushall
 #define fcloseall      _fcloseall
 
+#ifdef PERL_OBJECT
+#define FUNC_NAME_TO_PTR(name) &(name)
+#endif
+
 #ifndef _O_NOINHERIT
 #  define _O_NOINHERIT 0x0080
 #  ifndef _NO_OLDNAMES
index 8929ea7..52dc128 100644 (file)
 #define WIN32_LEAN_AND_MEAN
 #ifdef __GNUC__
 #define Win32_Winsock
-#  ifdef __cplusplus
-#undef __attribute__           /* seems broken in 2.8.0 */
-#define __attribute__(p)
-#  endif
 #endif
 #include <windows.h>
 #include "EXTERN.h"