This is cfuncs.c in view mode; [Download] [Up]
/*********************************************************************** * * Local definitions of C functions for GNU Smalltalk * * $Revision: 1.4 $ * $Date: 1995/07/18 06:25:09 $ * $Author: sbb $ * ***********************************************************************/ /*********************************************************************** * * Copyright (C) 1994, 1995 Free Software Foundation, Inc. * Written by Steve Byrne. * * This file is part of GNU Smalltalk. * * GNU Smalltalk is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 1, or (at your option) any later * version. * * GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * GNU Smalltalk; see the file COPYING. If not, write to the Free Software * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * ***********************************************************************/ /* * Change Log * ============================================================================ * Author Date Change * sbb 14 Jan 95 Changed the name from DLD to USE_DLD to avoid * conflicts with symbols defined by the DLD package in * the future. * * sbb 3 Sep 94 Cloned from lib/cfuncs.c * * sbb 3 Sep 94 This is the first file in the distribution to not * start with "mst". This is the precursor to having * short file names so that primitive operating systems * can deal with an advanced system like Smalltalk :-) * :-) :-). * * sbb 3 Sep 94 Created. * */ #include "gst.h" #undef USE_DLD /* DLD stuff is down in cxtnsn */ extern void defineCFunc(); void initUserCFuncs() { #ifdef USE_DLD initDldLib(); #endif } #ifdef USE_DLD /*********************************************************************** * * GNU Dynamic Linking support code * ***********************************************************************/ #include <dld.h> char *dldArgv0; static int getUndefinedSymCount() { return (dld_undefined_sym_count); } static void testDLD() { void (*func)(); printf("linking a file %d\n", dld_link("xxx.o")); func = dld_get_func("foopartner"); printf("func is %x\n", func); (*func)(); } initDldLib() { extern int main(); if (dld_init (dld_find_executable (dldArgv0)) == 0) { defineCFunc("dldLink", dld_link); defineCFunc("dldUnlinkByFile", dld_unlink_by_file); defineCFunc("dldUnlinkBySymbol", dld_unlink_by_symbol); defineCFunc("dldGetSymbol", dld_get_symbol); defineCFunc("dldGetFunc", dld_get_func); defineCFunc("dldFunctionExecutableP", dld_function_executable_p); defineCFunc("dldListUndefinedSym", dld_list_undefined_sym); defineCFunc("dldCreateReference", dld_create_reference); defineCFunc("dldDefineSym", dld_define_sym); defineCFunc("dldRemoveDefinedSymbol", dld_remove_defined_symbol); defineCFunc("getUndefinedSymCount", getUndefinedSymCount); /* so user level code can invoke it! */ defineCFunc("defineCFunc", defineCFunc); defineCFunc("testDLD", testDLD); } } #endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.