GNU bug report logs -
#24574
emacs-module is not GPL compatible (Windows)
Previous Next
Reported by: Mambo Levis <mambo.levis <at> gmail.com>
Date: Fri, 30 Sep 2016 20:18:02 UTC
Severity: minor
Tags: notabug
Done: Stefan Kangas <stefan <at> marxist.se>
Bug is archived. No further changes may be made.
Full log
Message #20 received at 24574 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Thank you for the pexports recommendation.
For somebody that just read this problem for the first time, a summary:
Emacs version: GNU Emacs 25.1.1
Emacs module repo: https://github.com/syohex/emacs-sqlite3
Build process: mingw64_shell.bat (Windows)
Dependency: sqlite.lib
Makefile:
EMACS = D:\user\emacs-src\emacs-25-branch-srcINCLUDE = -I. -I$(EMACS)\src
CC = gccLD = gccLDFLAGS =
# On MS-Windows, say "make SO=dll" to build the moduleSO = dll# -fPIC is a no-op on Windows, but causes a compiler warningifeq ($(SO),dll)CFLAGS = -std=gnu99 -ggdb3 -WallelseCFLAGS = -std=gnu99 -ggdb3 -Wall -fPICendif
all: sqlite3-core.$(SO)
%.$(SO): %.o $(LD) -shared $(LDFLAGS) -o $@ $< sqlite3.lib
%.o: %.c $(CC) $(CFLAGS) $(INCLUDE) -c $<
check: $(EMACS)/src/emacs -batch -l ert -l test.el -f ert-run-tests-batch-and-exit clean: rm -rf *.o *.dll *.a *.d
--------------------------------------------------------------------------------------------------------------------------------
Now the result of my tests:
1. The symbols exported by the modules without considering any sqlite function are:
LIBRARY sqlite3-core.dll
EXPORTSemacs_module_init ; .text ; RVA 00001685plugin_is_GPL_compatible DATA ; no section ; RVA 00007010
2. onsidering the following sqlite3 related function:
static voidel_sqlite3_free(void *arg){ sqlite3_close((sqlite3*)arg);}
When I generate the sqlite3-core.dll using at least one sqlite3 DLL function, for example sqlite3_close , an error message appears: (the module can't be found) ..../modules/emacs-sqlite3/sqlite3-core.dll: Das angegebene Modul wurde nicht gefunden.
I check the sqlite3.dll using pexports tool, and the symbols sqlite3_close is exported.LIBRARY sqlite3.dllEXPORTS.....sqlite3_changes ; .text ; RVA 0009c648sqlite3_clear_bindings ; .text ; RVA 000373dcsqlite3_close ; .text ; RVA 0009c9e8sqlite3_close_v2 ; .text ; RVA 0009ca08sqlite3_collation_needed ; .text ; RVA 0009f4b3sqlite3_collation_needed16 ; .text ; RVA 0009f51f
I check the module qlite3-core.dll again and the symbols are there.
; .text : RVA: 00001000, File offset: 00000600; .data : RVA: 00003000, File offset: 00002400; .rdata : RVA: 00004000, File offset: 00002600; .pdata : RVA: 00005000, File offset: 00002e00; .xdata : RVA: 00006000, File offset: 00003200; .bss : RVA: 00007000, File offset: 00000000; .edata : RVA: 00008000, File offset: 00003400; .idata : RVA: 00009000, File offset: 00003600; .CRT : RVA: 0000a000, File offset: 00003e00; .tls : RVA: 0000b000, File offset: 00004000; .reloc : RVA: 0000c000, File offset: 00004200; /4 : RVA: 0000d000, File offset: 00004400; /19 : RVA: 0000e000, File offset: 00004800; /31 : RVA: 00018000, File offset: 0000e200; /45 : RVA: 0001a000, File offset: 0000fa00; /57 : RVA: 0001c000, File offset: 00011200; /70 : RVA: 0001d000, File offset: 00011e00; /81 : RVA: 0001e000, File offset: 00012200; /92 : RVA: 00021000, File offset: 00015200; /105 : RVA: 0002b000, File offset: 0001f200; Reading exports from section: .edata; Export table: sqlite3-core.dll; Ordinal base: 1; Ordinal table RVA: 00008038; Name table RVA: 0008030; Export address table RVA: 00008028LIBRARY sqlite3-core.dllEXPORTSemacs_module_init ; .text ; RVA 00001696plugin_is_GPL_compatible DATA ; no section ; RVA 000078f0
Please, notice that this time the plugin_is_GPL_compatible. The problem is now that the module can't be found when a sqlite3.dll symbol is used.
Any Idea or suggestion?
Thanks
Levis
On Saturday, October 1, 2016 5:40 PM, Eli Zaretskii <eliz <at> gnu.org> wrote:
[Please don't cross post to help-gnu-emacs if you report bugs.]
> Date: Sat, 1 Oct 2016 12:31:26 +0000 (UTC)
> From: Mambo Levis <mambo.levis <at> gmail.com>
> Cc: 24574 <at> debbugs.gnu.org, help-gnu-emacs <at> gnu.org
>
> 1. I commented all module's functions related with sqlite3 library and only leave uncommented one of function
> to verify if the module is working:
>
> /* emacs-sqlite-version*/
> static emacs_value
> Femacs_sqlite_version (emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *data)
> {
> const char* msg_docstr = "emacs-sqlite module version 0.1";
> return env->make_string (env, msg_docstr, strlen(msg_docstr));
> }
>
> When I require (emacs-sqlite-version) it works as expected.
>
> 2. I tested only two function: the previous one Femacs_sqlite_version and other associated with sqlite. Once I
> consider a module function related to sqlite error message appears:
> is not GPL compatible
>
> I think the error is related with the linking process of the sqlite3.lib . One possible test is not linking sqlite3.lib
> and stead just using sqlite source code as a part of the module.
>
> Do you have any suggestion?
I'd start by using the pexports program (or something similar) to see
which symbols are exported by the sqlite DLL.
[Message part 2 (text/html, inline)]
This bug report was last modified 3 years and 290 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.