Re: [PATCH] build sial with TARGET_CFLAGS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




----- 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



[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux