#!/usr/bin/perl -w use strict; # # Perl program that *should* generate a list of duplicate symbols # between DBD::Oracle and Oracle client library. It produces useful # output as-is, but it's not a general solution as it forces a # symbol in that isn't reported, and eliminates a bunch of symbols # that can't be removed for one reason or another. # # This file may prove useful in the long run as a starting point, so # I've included it. # my %unstrippable = map { $_ => 1 } qw( _OCIAttrGet _OCIAttrSet _OCIBindByName _OCIBindDynamic _OCIBreak _OCIDefineByPos _OCIDescribeAny _OCIDescriptorAlloc _OCIDescriptorFree _OCIEnvInit _OCIErrorGet _OCIHandleAlloc _OCIHandleFree _OCIInitialize _OCILobGetLength _OCILobFileClose _OCILobFileOpen _OCILobRead _OCILobTrim _OCILobWrite _OCIParamGet _OCIServerAttach _OCIServerDetach _OCISessionBegin _OCISessionEnd _OCIStmtExecute _OCIStmtFetch _OCIStmtPrepare _OCITransCommit _OCITransRollback __dyld_func_lookup _atoi _fprintf _fwrite _getenv _kgefac_ _kgesec0 _korfpoid _kotgtivn _kpgdcd _kpggGetPG _kpugsqlt _kpumfs _kpumgs _kpummLtsCtx _kpusc _kpuscn _kpuucf _kpuuch _lmsagbf _lmsaicmt _lstmup _ltsmxd _ltstidd _lxhLangEnv _lxhci2h _lxhnsize _lxlterm _lxsCnvCase _main _memcmp _memcpy _memset _ociepgoe _sprintf _strcasecmp _strcat _strchr _strcpy _strlen _strncpy _ttckpu _upiacp0 _upigdl _upihst _upioep _upirtr _upirtrc dyld_func_lookup_pointer dyld_lazy_symbol_binding_entry_point dyld_stub_binding_helper ); print "_main\n"; #print "_dlsym\n"; #print "\n\n"; my %oracle; open FH,'nm /Users/oracle/9iR2/orahome/lib/libclntsh.dylib.9.0 |'; while ( ) { unless ( /^\// || /^\n/ ) { s/...........(\w+)\n/$1/; $oracle{$_} = 1; } } close FH; open FH,'nm ../blib/arch/auto/DBD/Oracle/Oracle.bundle |'; while ( ) { unless ( /^\// || /^\n/ ) { s/...........(\w+)\n/$1/; if ( exists($oracle{$_}) && ! exists($unstrippable{$_}) ) { print "$_\n"; } } } close FH;