[Player-dev] Emsoft - Doing Freescale port needs help
Bill Chan billc at emsoftltd.comThanks Greg and Ryan, I've attached my pf/cf's for your reference. I got the following for nm: [billc at billc helix]$ nm -u common/system/dbg/syslib.a | c++filt | grep GetCurrentThread HXUnixThread::GetCurrentThreadID() Then I used a temporary fix to the problem, in drv/rvdll.c, I commented the body of RV_Debug_Message so GetCurrentThread is not executed. I am now encountering another problem. Under rv89combo_c/cdeclib all sources are c files except rv89thread.cpp. Therefore I need to change this to c. Is there a better way to get around this? Bill Greg Wright wrote: > Ryan Gammon wrote: > >> Hmm... >> $ nm -u common/system/dbg/syslib.a | c++filt | grep GetCurrentThread >> U HXUnixThread::GetCurrentThreadID() >> U HXUnixThread::GetCurrentThreadID() > > > that would mean that none of the sub-class files are getting > compiled in like pthreadthreads.cpp. If the .pcf files > are not getting executed during umake that might happen: > > freebsd.pcf: project.AddSources("platform/unix/pthreadthreads.cpp", > hp-uxB.pcf: project.AddSources("platform/unix/pthreadthreads.cpp", > linux2.pcf: project.AddSources("platform/unix/pthreadthreads.cpp", > mac-unix.pcf: project.AddSources("platform/unix/pthreadthreads.cpp", > netbsd.pcf: project.AddSources("platform/unix/pthreadthreads.cpp", > openbsd.pcf: project.AddSources("platform/unix/pthreadthreads.cpp", > > the subclass thread files is where HXUnixThread::GetCurrentThreadID gets > defined, not in UnixThreads.cpp. pthreadthreads.cpp for example: > > ULONG32 HXUnixThread::GetCurrentThreadID() > { > return pthread_self(); > } > > > --greg. > > >> >> Do you have _UNIX_THREADS_SUPPORTED defined somewhere? >> >> I forget where we're at in terms of .cf/.pf files, but I see it, for >> example, in linux-2.2-libc6-iwmmxt-xscale.cf: >> >> project.AddDefines("_UNIX_THREADS_SUPPORTED") >> >> The define itself should show up in >> common/system/dbg/common_system_ribodefs.h >> >> If you could post your .cf & .pf files to >> ribosome-dev at helixcommunity.org, it might help folks follow along. >> >> Bill Chan wrote: >> >>> Hi Ryan, >>> >>> I am trying to build splay with the C version codec. Following the >>> FAQ, I've added project.AddDefines('HELIX_FEATURE_ANSIC_RV89COMBO') >>> in build/umakepf/helix-client-all-defines.pf >>> >>> The build is OK without errors, and splay can play rv20 files, but >>> when rv30 files are run the following relocation error occurred: >>> >>> >>> Ryan Gammon wrote:Simpleplayer is looking for the client core at >>> ../../../debug//clntcore.so >>> Common DLL path DT_Common=../../../debug/ >>> Plugin path DT_Plugins=../../../debug/ >>> Codec path DT_Codecs=../../../debug/ >>> Can't open file: /home/billc/.helix/HelixShared_0_0. >>> opening file:///home/billc/rv/yszp-59.rm on player 0 >>> Class = TrueColor, Depth = 16 >>> Device Configured: >>> Sample Rate: 44100 >>> Sample Width: 16 >>> Num channels: 2 >>> Block size: 17600 >>> Device buffer size: 65536 >>> Supports GETOSPACE: 1 >>> Supports GETODELAY: 0 >>> ./splay: relocation error: ../../../debug/drvc.so: undefined symbol: >>> GetCurrentThreadId >>> >>> Is there anything else that I've left out? >>> >>> Thanks, >>> Bill >>> >>>> sam wrote: >>>> >>>>> Do you have any suggestion on profiling those shared codec >>>>> libraries? Or I must build splay statically for profiling? >>>> >>>> >>>> >>>> >>>> >>>> >>>> I haven't had much luck with gprof in general. See: >>>> http://www.kegel.com/gprof.html >>>> ... for the general state of gprof. >>>> >>>> In terms of free software, Valgrind is worth checking out as a >>>> profiler, it's what I use: >>>> http://valgrind.kde.org/ >>>> >>>> kcachegrind is a front end: >>>> http://kcachegrind.sourceforge.net/cgi-bin/show.cgi >>>> >>>> qprof might be worth a look too: >>>> http://www.hpl.hp.com/research/linux/qprof/ >>>> >>> >>> >> >> > -------------- next part -------------- # # ***** BEGIN LICENSE BLOCK ***** # Source last modified: $Id: helix-client-all-defines.pf,v 1.27 2004/09/24 00:16:21 milko Exp $ # # Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved. # # The contents of this file, and the files included with this file, # are subject to the current version of the RealNetworks Public # Source License (the "RPSL") available at # http://www.helixcommunity.org/content/rpsl unless you have licensed # the file under the current version of the RealNetworks Community # Source License (the "RCSL") available at # http://www.helixcommunity.org/content/rcsl, in which case the RCSL # will apply. You may also obtain the license terms directly from # RealNetworks. You may not use this file except in compliance with # the RPSL or, if you have a valid RCSL with RealNetworks applicable # to this file, the RCSL. Please see the applicable RPSL or RCSL for # the rights, obligations and limitations governing use of the # contents of the file. # # Alternatively, the contents of this file may be used under the # terms of the GNU General Public License Version 2 or later (the # "GPL") in which case the provisions of the GPL are applicable # instead of those above. If you wish to allow use of your version of # this file only under the terms of the GPL, and not to allow others # to use your version of this file under the terms of either the RPSL # or RCSL, indicate your decision by deleting the provisions above # and replace them with the notice and other provisions required by # the GPL. If you do not delete the provisions above, a recipient may # use your version of this file under the terms of any one of the # RPSL, the RCSL or the GPL. # # This file is part of the Helix DNA Technology. RealNetworks is the # developer of the Original Code and owns the copyrights in the # portions it created. # # This file, and the files included with this file, is distributed # and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY # KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS # ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET # ENJOYMENT OR NON-INFRINGEMENT. # # Technology Compatibility Kit Test Suite(s) Location: # http://www.helixcommunity.org/content/tck # # Contributor(s): # # ***** END LICENSE BLOCK ***** # # # All possible features turned on for client builds. # exec_profile_file("helix-client-core-basic.pfi") exec_profile_file("helix-client-core-advanced.pfi") exec_profile_file("helix-client-core-local.pfi") exec_profile_file("helix-client-core-net.pfi") exec_profile_file("helix-client-core-net-advanced.pfi") exec_profile_file("helix-client-core-audio.pfi") exec_profile_file("helix-client-core-audio-advanced.pfi") exec_profile_file("helix-client-core-video.pfi") exec_profile_file("helix-client-realmedia-ff-basic.pfi") exec_profile_file("helix-client-realmedia-ff-advanced.pfi") exec_profile_file("helix-client-ra-basic.pfi") exec_profile_file("helix-client-ra-advanced.pfi") exec_profile_file("helix-client-rv.pfi") exec_profile_file("helix-client-rv-advanced.pfi") exec_profile_file("helix-client-smil.pfi") exec_profile_file("helix-client-image.pfi") exec_profile_file("helix-client-3gpp-advanced.pfi") exec_profile_file("helix-client-mp3.pfi") exec_profile_file("helix-client-mp4.pfi") exec_profile_file("helix-client-pcm.pfi") #project.AddDefines('HELIX_FEATURE_NEWAUDIOSTREAM') project.AddDefines('HELIX_FEATURE_ANSIC_RV89COMBO') -------------- next part -------------- # # ***** BEGIN LICENSE BLOCK ***** # Source last modified: $Id: linux-2.2-libc6-gcc32-i586.cf,v 1.11 2004/07/07 22:00:05 hubbe Exp $ # # Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved. # # The contents of this file, and the files included with this file, # are subject to the current version of the RealNetworks Public # Source License (the "RPSL") available at # http://www.helixcommunity.org/content/rpsl unless you have licensed # the file under the current version of the RealNetworks Community # Source License (the "RCSL") available at # http://www.helixcommunity.org/content/rcsl, in which case the RCSL # will apply. You may also obtain the license terms directly from # RealNetworks. You may not use this file except in compliance with # the RPSL or, if you have a valid RCSL with RealNetworks applicable # to this file, the RCSL. Please see the applicable RPSL or RCSL for # the rights, obligations and limitations governing use of the # contents of the file. # # Alternatively, the contents of this file may be used under the # terms of the GNU General Public License Version 2 or later (the # "GPL") in which case the provisions of the GPL are applicable # instead of those above. If you wish to allow use of your version of # this file only under the terms of the GPL, and not to allow others # to use your version of this file under the terms of either the RPSL # or RCSL, indicate your decision by deleting the provisions above # and replace them with the notice and other provisions required by # the GPL. If you do not delete the provisions above, a recipient may # use your version of this file under the terms of any one of the # RPSL, the RCSL or the GPL. # # This file is part of the Helix DNA Technology. RealNetworks is the # developer of the Original Code and owns the copyrights in the # portions it created. # # This file, and the files included with this file, is distributed # and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY # KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS # ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET # ENJOYMENT OR NON-INFRINGEMENT. # # Technology Compatibility Kit Test Suite(s) Location: # http://www.helixcommunity.org/content/tck # # Contributor(s): # # ***** END LICENSE BLOCK ***** # """Linux 2.x using GCC 3.2 libc6 (glibc2) on pentium+ .""" exec_config_file('linux-2.2-libc6-gcc32.cf') ## list of PCF files to run platform.pcf_prefix_list = ["unix", "linux2", "linux-2.2-libc6-gcc32-i586"] platform.cxx.args["default"] = platform.cxx.args["default"] + " " + \ "-march=pentium -mcpu=pentium " platform.cc.args["default"] = platform.cc.args["default"] + " " + \ "-march=pentium -mcpu=pentium " -------------- next part -------------- # # ***** BEGIN LICENSE BLOCK ***** # Source last modified: $Id: linux-2.2-libc6-gcc32.cf,v 1.2 2004/07/07 22:00:05 hubbe Exp $ # # Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved. # # The contents of this file, and the files included with this file, # are subject to the current version of the RealNetworks Public # Source License (the "RPSL") available at # http://www.helixcommunity.org/content/rpsl unless you have licensed # the file under the current version of the RealNetworks Community # Source License (the "RCSL") available at # http://www.helixcommunity.org/content/rcsl, in which case the RCSL # will apply. You may also obtain the license terms directly from # RealNetworks. You may not use this file except in compliance with # the RPSL or, if you have a valid RCSL with RealNetworks applicable # to this file, the RCSL. Please see the applicable RPSL or RCSL for # the rights, obligations and limitations governing use of the # contents of the file. # # Alternatively, the contents of this file may be used under the # terms of the GNU General Public License Version 2 or later (the # "GPL") in which case the provisions of the GPL are applicable # instead of those above. If you wish to allow use of your version of # this file only under the terms of the GPL, and not to allow others # to use your version of this file under the terms of either the RPSL # or RCSL, indicate your decision by deleting the provisions above # and replace them with the notice and other provisions required by # the GPL. If you do not delete the provisions above, a recipient may # use your version of this file under the terms of any one of the # RPSL, the RCSL or the GPL. # # This file is part of the Helix DNA Technology. RealNetworks is the # developer of the Original Code and owns the copyrights in the # portions it created. # # This file, and the files included with this file, is distributed # and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY # KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS # ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET # ENJOYMENT OR NON-INFRINGEMENT. # # Technology Compatibility Kit Test Suite(s) Location: # http://www.helixcommunity.org/content/tck # # Contributor(s): # # ***** END LICENSE BLOCK ***** # """Linux 2.x using GCC 3.2 libc6 (glibc2).""" exec_config_file('linux-common.cf') ## list of PCF files to run platform.pcf_prefix_list = ["unix", "linux2", "linux-2.2-libc6-gcc32"] ## platform defines project.AddDefines("_LITTLE_ENDIAN") ## Turn on Threaded Network IO project.AddDefines("_UNIX_THREADED_NETWORK_IO") ## This define used on platforms that have native recursive mutexes. project.AddDefines("_TIMEDWAITS_RECURSIVE_MUTEXES") ## This turns on the non portable ( _NP) thread directives. project.AddDefines("_GNU_SOURCE") ## Turn on threads for all areas. project.AddDefines("THREADS_SUPPORTED") ## This define enables compiling of the UnixThreads file. ## It means that that platform has a working threads lib ## that does everything we need. project.AddDefines("_UNIX_THREADS_SUPPORTED") ## Turn off exceptions, rtti and turn on pentium ops. Set warning options. platform.cxx.args["default"] = platform.cxx.args["default"] + " " + \ "-Wall -Wreturn-type -fno-exceptions " + \ "--permissive -fno-rtti -Wno-ctor-dtor-privacy" platform.cc.args["default"] = platform.cc.args["default"] + " " + \ "-Wall -Wreturn-type -fno-exceptions" ## For now we will link everything against libstdc++ for the ## new/delete operators. gcc 2.95 didn't need it, but it looks like ## gcc 3.2 needs it; at least sometimes. project.AddSystemLibraries("stdc++") class LinuxLinker(Linker2): def __init__(self): Linker2.__init__(self) self.linker=platform.cc.cmd self.extra_arguments=[] def add_argument(self, arg): self.extra_arguments.append(arg) def link_paths(self): return string.join(platform.system_paths + project.system_paths) def link_script_path(self): return "%s.exp" % (project.TargetName()) def armerge_lib_path(self): libname = "%s_libs.%s" % (project.target_name, platform.library_suffix) return os.path.join(project.output_dir, libname) def armerge_tmp_path(self): return os.path.join(project.object_dir, "lib") def write_link_script(self, path): ## if there are no exported functions, die here if len(project.exported_func) == 0: umake_lib.fatal("dll target without exported functions") ## create a gcc link script fil = open(path, "w") fil.write("VERSION\n") fil.write("{\n") fil.write(" G2 {\n") fil.write(" global:\n") for export in project.exported_func: fil.write(" %s;\n" % (export)) fil.write(" local:\n") fil.write(" *;\n") fil.write(" };\n") fil.write("}\n") fil.close() def LinkLIB(self, target_path, objects): cmd_list = [] cmd = "%s %s %s" % (make_lib.cmd, target_path, objects) cmd_list.append(cmd) cmd = "ranlib %s" % (target_path) cmd_list.append(cmd) return cmd_list def CleanLIB(self, target_path): return [target_path] def LinkDLL(self, target_path, objects, static_libs, dynamic_libs): cmd_list = [] armerge_cmd = os.path.join(BUILD_ROOT, "bin", "armerge") tmp_path = self.armerge_tmp_path() libpath = self.armerge_lib_path() cmd = "%s -d %s %s %s" % (armerge_cmd, tmp_path, libpath, static_libs) cmd_list.append(cmd) lspath = self.link_script_path() self.write_link_script(lspath) if project.exported_func: undefinedSymbols="-u "+string.join(project.exported_func," -u ") else: undefinedSymbols="" cmd = "%s -shared %s -o %s %s %s %s %s %s %s " % ( self.linker, lspath, target_path, undefinedSymbols, objects, libpath, self.link_paths(), string.join(self.extra_arguments), dynamic_libs) cmd_list.append(cmd) cmd = 'rm "%s"' % (libpath) cmd_list.append(cmd) return cmd_list def CleanDLL(self, target_path): list = [] list.append(target_path) list.append(self.armerge_tmp_path()) list.append(self.armerge_lib_path()) return list def LinkEXE(self, target_path, objects, static_libs, dynamic_libs): cmd_list = [] armerge_cmd = os.path.join(BUILD_ROOT, "bin", "armerge") tmp_path = self.armerge_tmp_path() libpath = self.armerge_lib_path() cmd = "%s -d %s %s %s" % (armerge_cmd, tmp_path, libpath, static_libs) cmd_list.append(cmd) cmd = "%s -o %s %s %s %s %s %s" % ( self.linker, target_path, objects, libpath, self.link_paths(), string.join(self.extra_arguments), dynamic_libs) cmd_list.append(cmd) cmd = 'rm "%s"' % (libpath) cmd_list.append(cmd) return cmd_list def CleanEXE(self, target_path): list = [] list.append(target_path) list.append(self.armerge_tmp_path()) list.append(self.armerge_lib_path()) return list def make_lib_static(self, lib): return "-Wl,-Bstatic %s -Wl,-Bdynamic" % lib platform.link = LinuxLinker() def verify_gcc_callback(): ccver=get_compiler_version(cc) cxxver=get_compiler_version(cxx) w=[] if ccver[:2] != "3.": w.append("gcc version is %s, not 3.* as expected." % ccver) if cxxver[:2] != "3.": w.append("g++ version is %s, not 3.* as expected." % cxxver) if w: print " **WARNING**" for m in w: print m print print "Compilation will continue in 10 seconds" import time time.sleep(10) AddIdentifyCallback(verify_gcc_callback) -------------- next part -------------- # # ***** BEGIN LICENSE BLOCK ***** # Source last modified: $Id: linux2.pcf,v 1.3.42.3 2004/07/09 01:44:03 hubbe Exp $ # # Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved. # # The contents of this file, and the files included with this file, # are subject to the current version of the RealNetworks Public # Source License (the "RPSL") available at # http://www.helixcommunity.org/content/rpsl unless you have licensed # the file under the current version of the RealNetworks Community # Source License (the "RCSL") available at # http://www.helixcommunity.org/content/rcsl, in which case the RCSL # will apply. You may also obtain the license terms directly from # RealNetworks. You may not use this file except in compliance with # the RPSL or, if you have a valid RCSL with RealNetworks applicable # to this file, the RCSL. Please see the applicable RPSL or RCSL for # the rights, obligations and limitations governing use of the # contents of the file. # # Alternatively, the contents of this file may be used under the # terms of the GNU General Public License Version 2 or later (the # "GPL") in which case the provisions of the GPL are applicable # instead of those above. If you wish to allow use of your version of # this file only under the terms of the GPL, and not to allow others # to use your version of this file under the terms of either the RPSL # or RCSL, indicate your decision by deleting the provisions above # and replace them with the notice and other provisions required by # the GPL. If you do not delete the provisions above, a recipient may # use your version of this file under the terms of any one of the # RPSL, the RCSL or the GPL. # # This file is part of the Helix DNA Technology. RealNetworks is the # developer of the Original Code and owns the copyrights in the # portions it created. # # This file, and the files included with this file, is distributed # and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY # KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS # ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET # ENJOYMENT OR NON-INFRINGEMENT. # # Technology Compatibility Kit Test Suite(s) Location: # http://www.helixcommunity.org/content/tck # # Contributor(s): # # ***** END LICENSE BLOCK ***** # project.AddSources("platform/unix/pthreadthreads.cpp", "platform/unix/UnixThreads.cpp") if not project.BuildOption('nodll'): project.AddSources("platform/unix/linux_dll.cpp") project.AddIncludes("pub/platform/unix")