From: Gurusamy Sarathy Date: Tue, 21 Jul 1998 07:15:54 +0000 (+0000) Subject: fixes to enable PERL_OBJECT build with mingw32/egcs-1.0.2 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=db15561cb83ed8e36f76d63e4283fc51c30fd71f;p=p5sagit%2Fp5-mst-13.2.git fixes to enable PERL_OBJECT build with mingw32/egcs-1.0.2 p4raw-id: //depot/perl@1612 --- diff --git a/ext/Opcode/Opcode.xs b/ext/Opcode/Opcode.xs index 1da7794..e853cf1 100644 --- a/ext/Opcode/Opcode.xs +++ b/ext/Opcode/Opcode.xs @@ -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 --- 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)); diff --git a/win32/makedef.pl b/win32/makedef.pl index c49c68d..f860291 100644 --- a/win32/makedef.pl +++ b/win32/makedef.pl @@ -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'}) diff --git a/win32/makefile.mk b/win32/makefile.mk index f93807d..95d36e4 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -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 diff --git a/win32/perlhost.h b/win32/perlhost.h index b8a59e4..57e0d2f 100644 --- a/win32/perlhost.h +++ b/win32/perlhost.h @@ -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) { diff --git a/win32/win32.c b/win32/win32.c index 13f11e3..dd9fa69 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -13,10 +13,6 @@ #include #ifdef __GNUC__ #define Win32_Winsock -# ifdef __cplusplus -#undef __attribute__ /* seems broken in 2.8.0 */ -#define __attribute__(p) -# endif #endif #include @@ -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 */ } diff --git a/win32/win32.h b/win32/win32.h index 184372d..bfbaaed 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -20,17 +20,15 @@ #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 diff --git a/win32/win32sck.c b/win32/win32sck.c index 8929ea7..52dc128 100644 --- a/win32/win32sck.c +++ b/win32/win32sck.c @@ -13,10 +13,6 @@ #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 #include "EXTERN.h"