{"id":15113318,"url":"https://github.com/gitgnu/gnu_libffcall","last_synced_at":"2026-02-09T12:36:13.121Z","repository":{"id":84520691,"uuid":"90024440","full_name":"gitGNU/gnu_libffcall","owner":"gitGNU","description":null,"archived":false,"fork":false,"pushed_at":"2017-05-02T11:13:50.000Z","size":6924,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-17T05:02:56.730Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gitGNU.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-02T11:12:34.000Z","updated_at":"2022-07-16T18:56:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"3466eab4-3af0-4aa4-88ee-d386a435f3cc","html_url":"https://github.com/gitGNU/gnu_libffcall","commit_stats":null,"previous_names":[],"tags_count":59,"template":false,"template_full_name":null,"purl":"pkg:github/gitGNU/gnu_libffcall","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitGNU%2Fgnu_libffcall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitGNU%2Fgnu_libffcall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitGNU%2Fgnu_libffcall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitGNU%2Fgnu_libffcall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gitGNU","download_url":"https://codeload.github.com/gitGNU/gnu_libffcall/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitGNU%2Fgnu_libffcall/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270807934,"owners_count":24649346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-26T01:04:20.302Z","updated_at":"2026-02-09T12:36:13.014Z","avatar_url":"https://github.com/gitGNU.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"ffcall - foreign function call libraries\n\nThis is a collection of four libraries which can be used to build\nforeign function call interfaces in embedded interpreters.\n\nThe four packages are:\n\n    avcall - calling C functions with variable arguments\n\n    vacall - C functions accepting variable argument prototypes\n\n    trampoline - closures as first-class C functions\n\n    callback - closures with variable arguments as first-class C functions\n               (a reentrant combination of vacall and trampoline)\n\n\nInstallation instructions:\n\n        mkdir builddir\n        cd builddir\n        ../configure --cache-file=config.cache\n        make\n        make check\n        make install\n\n\nNote: It is possible to do a build that produces shared libraries (by\npassing --enable-shared to configure), but it makes little sense to do so:\n\n1) The main function here is compiled from non-PIC assembly language.\n   I.e. relocations would remain. The GNU linker supports shared libraries\n   with relocations on x86 systems. But only on x86!\n\n2) It is an overkill: libavcall, libvacall, libcallback have less than 1 KB\n   of executable code (most of the real code is in the header files):\n\n$ size libavcall.a\n  text    data     bss     dec     hex filename\n   420       0       0     420     1a4 avcall.o (ex libavcall.a)\n    81       0       0      81      51 avcall-structcpy.o (ex libavcall.a)\n$ size libvacall.a\n  text    data     bss     dec     hex filename\n   365       0       0     365     16d vacall.o (ex libvacall.a)\n   203       0       0     203      cb misc.o (ex libvacall.a)\n    81       0       0      81      51 vacall-structcpy.o (ex libvacall.a)\n$ size libcallback.a\n  text    data     bss     dec     hex filename\n   379       0       0     379     17b vacall.o (ex libcallback.a)\n   203       0       0     203      cb misc.o (ex libcallback.a)\n    81       0       0      81      51 vacall-structcpy.o (ex libcallback.a)\n   287       0       0     287     11f trampoline.o (ex libcallback.a)\n\nWhen a shared library is loaded, you spend at least 4 KB for its code,\ndata and BSS. This is overkill for such a tiny library.\n\n3) We don't do proper versioning of the resulting shared libraries (yet).\n   Therefore it is possible that upgrading to a newer version of libffcall\n   breaks existing binaries.\n\n\nFiles in this package:\n\n    Documentation:\n\n        README          this text\n        COPYING         free software license\n        PLATFORMS       list of supported platforms\n\n    Source:\n\n        avcall/*        the avcall package\n        vacall/*        the vacall package\n        trampoline/*    the trampoline package\n        callback/*      the callback package\n\n    Installation:\n\n        configure       configuration script\n        configure.ac    autoconf source for the configuration script\n        autoconf/*      auxiliary configuration scripts\n        Makefile.in     Makefile master\n\n\nCopyright notice:\n\nCopyright 1993-1995 Bill Triggs \u003cBill.Triggs@inrialpes.fr\u003e        (original avcall)\nCopyright 1995-2016 Bruno Haible \u003cbruno@clisp.org\u003e                (everything)\nCopyright 1997      Jörg Höhle \u003cJoerg.Hoehle@gmd.de\u003e              (m68k AmigaOS support)\nCopyright 2000      Adam Fedor \u003cfedor@gnu.org\u003e                    (PowerPC MacOS support)\nCopyright 2001-2012 Sam Steingold \u003csds@gnu.org\u003e                   (build infrastructure)\nCopyright 2001-2002 Gerhard Tonn \u003cGerhardTonn@swol.de\u003e \u003cgt@debian.org\u003e (s390 support)\nCopyright 2004      Paul Guyot \u003cpguyot@kallisys.net\u003e              (PowerPC MacOS support)\nCopyright 2005      Thiemo Seufer \u003cths@debian.org\u003e                (MIPS EL support)\nCopyright 2009      Max Lapan \u003cmax.lapan@gmail.com\u003e               (ARM EL support)\nCopyright 2010      Valery Ushakov \u003cuwe@netbsd.org\u003e               (SPARC64 improvements)\n\nThis is free software distributed under the GNU General Public Licence\ndescribed in the file COPYING. Contact the author if you don't have this\nor can't live with it. There is ABSOLUTELY NO WARRANTY, explicit or implied,\non this software.\n\n\nDistribution:\n\ngit:\n$ git clone git://git.savannah.gnu.org/libffcall.git\nSee https://savannah.gnu.org/git/?group=libffcall for more info.\n\nBug reports to:\n\n  https://savannah.gnu.org/bugs/?func=additem\u0026group=libffcall\n\nHomepage:\n\n  http://www.gnu.org/software/libffcall/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitgnu%2Fgnu_libffcall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgitgnu%2Fgnu_libffcall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitgnu%2Fgnu_libffcall/lists"}