----- Original Message -----
Yes - the ABI flag is useless and should be decommissioned.
For now, go ahead and create a ABI_PPC definition to get it to build.
I'll see if I can clean this up in the next round of fixes.
The intent was to change the alignment of structure members based on
the target abi. There is little interest in runtime cross and the
need to create types on the fly in Linux is non-existent if you have
the -g dwarf info from vmlinux. It was more relevant in the days of
Irix and how SGI released new kernels.
OK good -- I'll just add my hack-around for now.
Thanks,
Dave
> -----Original Message-----
> From: Dave Anderson [mailto:anderson@redhat.com]
> Sent: Tuesday, March 27, 2012 2:20 PM
> To: Discussion list for crash utility usage, maintenance and
> development
> Cc: Luc Chouinard; rabin(a)rab.in
> Subject: Re: [Crash-utility] [PATCH] build sial with TARGET_CFLAGS
>
>
>
> ----- 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