Hi, Petr
Thank you for the patch.
On Wed, Mar 18, 2026 at 11:36 AM <devel-request(a)lists.crash-utility.osci.io>
wrote:
Date: Thu, 12 Mar 2026 21:17:22 +0100
From: Petr Tesařík <petr(a)tesarici.cz> (by way of Petr Tesařík
<petr(a)tesarici.cz>)
Subject: [Crash-utility] [PATCH 1/1] Fix cross-compilation of eppic.so
and snapper.so
To: devel(a)lists.crash-utility.osci.io
Cc: Jianyun Gao <jianyungao89(a)gmail.com>
Message-ID: <20260312211722.4cab3d5a(a)meshulam.tesarici.cz>
Content-Type: text/plain; charset=US-ASCII
When cross-compiling, the extension modules must be built for the
target architecture, not the host architecture.
Do not hard-code "gcc" (which is usually the host compiler), but
use $(CC) to pick the right compiler.
I got an error after applying the current patch:
$ make CROSS_COMPILE=aarch64-linux-gnu- extensions
aarch64-linux-gnu-gcc -Wall -g -shared -rdynamic -o dminfo.so dminfo.c
-fPIC -DARM64 -DGDB_16_2
aarch64-linux-gnu-gcc -Wall -g -shared -rdynamic -o echo.so echo.c -fPIC
-DARM64 -DGDB_16_2
cd eppic/libeppic && make
bison -peppic -v -t -d eppic.y
eppic.y: warning: 135 shift/reduce conflicts [-Wconflicts-sr]
eppic.y: warning: 22 reduce/reduce conflicts [-Wconflicts-rr]
eppic.y: note: rerun with option '-Wcounterexamples' to generate conflict
counterexamples
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_util.o eppic_util.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_node.o eppic_node.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_var.o eppic_var.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_func.o eppic_func.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_str.o eppic_str.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_op.o eppic_op.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_num.o eppic_num.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_stat.o eppic_stat.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_builtin.o eppic_builtin.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_type.o eppic_type.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_case.o eppic_case.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_api.o eppic_api.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_member.o eppic_member.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_alloc.o eppic_alloc.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_define.o eppic_define.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_input.o eppic_input.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c -o
eppic_print.o eppic_print.c
bison -peppicpp -v -t -d eppicpp.y
eppicpp.y: warning: 23 shift/reduce conflicts [-Wconflicts-sr]
eppicpp.y: note: rerun with option '-Wcounterexamples' to generate conflict
counterexamples
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c eppicpp.tab.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c eppic.tab.c
flex -L -Peppic -t eppic.l > lex.eppic.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c lex.eppic.c
flex -Peppicpp -t eppicpp.l > lex.eppicpp.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c lex.eppicpp.c
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -o mkbaseop
mkbaseop.c
./mkbaseop > baseops.c
/bin/sh: 1: ./mkbaseop: Exec format error
make[5]: [Makefile:71: baseops.o] Error 126 (ignored)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Did I miss anything else?
...
aarch64-linux-gnu-gcc -g -O0 -fno-omit-frame-pointer -fPIC -c baseops.c
ar cur libeppic.a eppic_util.o eppic_node.o eppic_var.o eppic_func.o
eppic_str.o eppic_op.o eppic_num.o eppic_stat.o eppic_builtin.o
eppic_type.o eppic_case.o eppic_api.o eppic_member.o eppic_alloc.o
eppic_define.o eppic_input.o eppic_print.o eppicpp.tab.o eppic.tab.o
lex.eppic.o lex.eppicpp.o baseops.o
ar: `u' modifier ignored since `D' is the default (see `U')
aarch64-linux-gnu-gcc -g -O0 -Ieppic/libeppic -I.. -nostartfiles -shared
-rdynamic -o eppic.so eppic/applications/crash/eppic.c -fPIC -DARM64
-DGDB_16_2 -Leppic/libeppic -leppic
aarch64-linux-gnu-gcc -Wall -g -I. -shared -rdynamic -o snap.so snap.c
-fPIC -DARM64 -DGDB_16_2
Thanks
Lianbo
Signed-off-by: Petr Tesarik <ptesarik(a)suse.com>
---
extensions/eppic.mk | 2 +-
extensions/snap.mk | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/extensions/eppic.mk b/extensions/eppic.mk
index 9435793..b51a84b 100644
--- a/extensions/eppic.mk
+++ b/extensions/eppic.mk
@@ -68,7 +68,7 @@ lib-eppic:
cd eppic/libeppic && make
eppic.so: ../defs.h $(APPFILE) lib-eppic
- gcc -g -O0 -Ieppic/libeppic -I.. -nostartfiles -shared -rdynamic
-o eppic.so $(APPFILE) -fPIC $(TARGET_FLAGS) $(GDB_FLAGS) -Leppic/libeppic
-leppic
+ $(CC) -g -O0 -Ieppic/libeppic -I.. -nostartfiles -shared -rdynamic
-o eppic.so $(APPFILE) -fPIC $(TARGET_FLAGS) $(GDB_FLAGS) -Leppic/libeppic
-leppic
clean:
if [ -d eppic/libeppic ]; \
diff --git a/extensions/snap.mk b/extensions/snap.mk
index 2fb4ed6..ac3f723 100644
--- a/extensions/snap.mk
+++ b/extensions/snap.mk
@@ -47,4 +47,4 @@ endif
all: snap.so
snap.so: $(INCDIR)/defs.h snap.c
- gcc -Wall -g -I$(INCDIR) -shared -rdynamic -o snap.so snap.c -fPIC
-D$(TARGET) $(TARGET_CFLAGS) $(GDB_FLAGS)
+ $(CC) -Wall -g -I$(INCDIR) -shared -rdynamic -o snap.so snap.c
-fPIC -D$(TARGET) $(TARGET_CFLAGS) $(GDB_FLAGS)
--
2.53.0