----- Original Message ----- > > > ----- Original Message ----- > > ACK. > > This is the correct flow for these options. > > If someone targeting ppc64 can verify that would be great. > > I'll provision a ppc64 machine and verify the patch for both > 64- and 32-bit builds. Presuming that works, queued for crash-6.0.6. > > Thanks, > Dave Well, as luck would have it, this patch does not work with 32-bit PPC: $ make extensions gcc -Wall -nostartfiles -shared -rdynamic -o dminfo.so dminfo.c -fPIC -DPPC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -DGDB_7_3_1 gcc -Wall -nostartfiles -shared -rdynamic -o echo.so echo.c -fPIC -DPPC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -DGDB_7_3_1 cd libsial && make bison -psial -v -t -d sial.y sial.y: conflicts: 252 shift/reduce, 20 reduce/reduce cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_util.o sial_util.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_node.o sial_node.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_var.o sial_var.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_func.o sial_func.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_str.o sial_str.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_op.o sial_op.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_num.o sial_num.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_stat.o sial_stat.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_builtin.o sial_builtin.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_type.o sial_type.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_case.o sial_case.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_api.o sial_api.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_member.o sial_member.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_alloc.o sial_alloc.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_define.o sial_define.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_input.o sial_input.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c -o sial_print.o sial_print.c bison -psialpp -v -t -d sialpp.y sialpp.y: conflicts: 23 shift/reduce cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c sialpp.tab.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c sial.tab.c flex -L -Psial -t sial.l > lex.sial.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c lex.sial.c flex -Psialpp -t sialpp.l > lex.sialpp.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c lex.sialpp.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -o mkbaseop mkbaseop.c ./mkbaseop > baseops.c cc -O3 -g -fPIC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -c baseops.c ar ccurl libsial.a sial_util.o sial_node.o sial_var.o sial_func.o sial_str.o sial_op.o sial_num.o sial_stat.o sial_builtin.o sial_type.o sial_case.o sial_api.o sial_member.o sial_alloc.o sial_define.o sial_input.o sial_print.o sialpp.tab.o sial.tab.o lex.sial.o lex.sialpp.o baseops.o gcc -g -I.. -Ilibsial -I../gdb-7.3.1/bfd -I../gdb-7.3.1/include -I../gdb-7.3.1/gdb -I../gdb-7.3.1/gdb/config -I../gdb-7.3.1/gdb/common -I../gdb-7.3.1 -nostartfiles -shared -rdynamic -o sial.so sial.c -fPIC -DPPC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -DGDB_7_3_1 -Llibsial -lsial sial.c:997:2: error: #error sial: Unkown ABI sial.c: In function ‘_init’: sial.c:1004: error: ‘SIAL_ABI’ undeclared (first use in this function) sial.c:1004: error: (Each undeclared identifier is reported only once sial.c:1004: error: for each function it appears in.) make[4]: [sial.so] Error 1 (ignored) gcc -Wall -I. -nostartfiles -shared -rdynamic -o snap.so snap.c -fPIC -DPPC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -DGDB_7_3_1 gcc -Wall -nostartfiles -shared -rdynamic -o trace.so trace.c -fPIC -DPPC -m32 -D_FILE_OFFSET_BITS=64 -fPIC -DGDB_7_3_1 $ I don't suppose it's as easy as just adding an ABI_PPC #define here in sial_api.h: /* abi values */ #define ABI_MIPS 1 #define ABI_INTEL_X86 2 #define ABI_INTEL_IA 3 #define ABI_S390 4 #define ABI_S390X 5 #define ABI_PPC64 6 and setting SIAL_ABI to it here in sial.c?: #ifdef i386 #define SIAL_ABI ABI_INTEL_X86 #else #ifdef __ia64__ #define SIAL_ABI ABI_INTEL_IA #else #ifdef __x86_64__ #define SIAL_ABI ABI_INTEL_IA #else #ifdef __s390__ #define SIAL_ABI ABI_S390 #else #ifdef __s390x__ #define SIAL_ABI ABI_S390X #else #ifdef PPC64 #define SIAL_ABI ABI_PPC64 #else #error sial: Unkown ABI #endif #endif #endif #endif #endif #endif And I'm not mistaken, SIAL_ABI is pretty much useless. Aside from getting #define'd above, it's only used here: sial_apiset(&icops, SIAL_ABI, sizeof(long ), 0); and that function apparently ignores it entirely: void sial_apiset(apiops *o, int abi, int nbpw, int sign) { def_t *dt; sial_ops=o?o:&nullops; sial_setdefbtype(nbpw, sign); /* get the pre defines and push them. */ dt=API_GETDEFS(); while(dt) { sial_newmac(dt->name, dt->val, 0, 0, 1); dt=dt->next; } /* add the sial define */ sial_newmac(sial_strdup("sial"), sial_strdup("1"), 0, 0, 1); } Or am I missing something? But if I do add a new ABI_PPC #define, it builds, and shows this: # file ./extensions/snap.so ./extensions/snap.so: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, with unknown capability 0x41000000 = 0x13676e75, with unknown capability 0x10000 = 0xb0401, not stripped # whereas the native PPC64 version shows this: # file extensions/sial.so extensions/sial.so: ELF 64-bit MSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, not stripped # And it doesn't load the 32-bit version: crash> extend sial.so extend: ./extensions/sial.so: not an ELF format object file crash> But that is probably a crash issue, because *none* of the extension modules built as 32-bit PPC objects will load: crash> extend snap.so extend: ./extensions/snap.so: not an ELF format object file crash> extend echo.so extend: ./extensions/echo.so: not an ELF format object file crash> And "file" shows the additional baggage for them as well: # file extensions/snap.so extensions/snap.so: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, with unknown capability 0x41000000 = 0x13676e75, with unknown capability 0x10000 = 0xb0401, not stripped # So anyway, I'm going to leave the patch in place, wait for your answer re: creating an API_PPC #define, and also look into the reason behind the load failure. Dave -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility