Dear Alex, Thanks for your reply. I tried to do what you suggest below but I'm a bit lost. This is what I did. 1. I downloaded http://download.opensuse.org/ports/armv7hl/distribution/13.1/appliances/open... 2. mkdir rootfs 3. as root, tar xjf <file> -C rootfs (as on http://en.opensuse.org/openSUSE:OpenSUSE_on_your_ARM_board) 3. I did as root: mount --bind /proc rootfs/proc mount --bind /sys rootfs/sys mount --bind /dev rootfs/dev cp /etc/resolv.conf rootfs/etc/ chroot rootfs4. Then I tried what you suggested below:
$ /chroot/lib/ld-linux.so.2
[it did not work with /chroot, I suppose you meant /lib/ld-linux.so.2] rtas:/ # /lib/ld-linux.so.2 bash: /lib/ld-linux.so.2: No such file or directory rtas:/ # /lib/ld-linux.so.3 Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...] You have invoked `ld.so', the helper program for shared library executables. This program usually lives in the file `/lib/ld.so', and special directives in executable files using ELF shared libraries tell the system's program loader to load the helper program from this file. This helper program loads the shared libraries needed by the program executable, prepares the program to run, and runs it. You may invoke this helper program directly from the command line to load and run an ELF executable file; this is like executing that file itself, but always uses this helper program from the file you specified, instead of the helper program file specified in the executable file you run. This is mostly of use for maintainers to test new versions of this helper program; chances are you did not intend to run this program. --list list all dependencies and how they are resolved --verify verify that given object really is a dynamically linked object we can handle --inhibit-cache Do not use /etc/ld.so.cache --library-path PATH use given PATH instead of content of the environment variable LD_LIBRARY_PATH --inhibit-rpath LIST ignore RUNPATH and RPATH information in object names in LIST --audit LIST use objects named in LIST as auditors
$ /chroot/lib/ld-linux.so.2 --library-path /chroot/lib /chroot/bin/ls
rtas:/ # /lib/ld-linux.so.3 --library-path /lib /bin/ls Illegal instruction [I did it again] rtas:/ # /lib/ld-linux.so.3 --library-path /lib /bin/ls bin dev home media opt root sbin srv tmp var boot etc lib mnt proc run selinux sys usr
$ gdb --args /chroot/lib/ld-linux.so.2 --library-path /chroot/lib /chroot/bin/ls (gdb) run
tas:/ # gdb bash: gdb: command not found [apparenty not installed, I try to install with yast] rtas:/ # yast The /proc filesystem is not mounted. If you are running in a chroot environment, bind-mount missing filesystems. [I don't understand, I did mount it] anfortas:/> zypper Illegal instruction anfortas:/> zypper Usage: zypper [--global-options] <command> [--command-options] [arguments] Does this help? Thanks. ----------------------------------------
Subject: Re: [opensuse-arm] OpenSUSE 13.1 for armv7 upgrade From: agraf@suse.de Date: Wed, 20 Nov 2013 14:24:47 +0100 CC: guillaume.gardet@free.fr; opensuse-arm@opensuse.org To: heelgeheim@hotmail.com
On 19.11.2013, at 20:49, G. Heim <heelgeheim@hotmail.com> wrote:
Thanks for your reply again.
I tried to upgrade as follows and it failed. 1. I changed the repository to http://download.opensuse.org/ports/armv7hl/distribution/13.1/repo/oss/ (and removed the old repositories) 2. I did "zypper dup" 3. then about 576 packages needed to be upgraded, etc 4. it downloaded all these packages 5. it installed 23 packages 6. then it failed.
This is the log ("rtas" is my hostname):
( 21/845) Installing: xbitmaps-1.1.1-9.1.1 ...............................[done] ( 22/845) Installing: yast2-trans-stats-2.19.0-14.1.3 ....................[done] ( 23/845) Installing: glibc-2.18-4.4.1 ...................................[done] Additional rpm output: /usr/sbin/glibc_post_upgrade: While trying to execute /usr/sbin/iconvconfig child terminated abnormally warning: %post(glibc-2.18-4.4.1.armv7hl) scriptlet failed, exit status 115
( 24/845) Installing: libgcc_s1-4.8.1_20130909-3.2.7 ....................[error] Installation of libgcc_s1-4.8.1_20130909-3.2.7 failed: (with --nodeps --force) Error: Subprocess failed. Error: RPM failed: Command was killed by signal 4 (Illegal instruction).
Abort, retry, ignore? [a/r/i] (a): r ( 24/845) Installing: libgcc_s1-4.8.1_20130909-3.2.7 ....................[error] Installation of libgcc_s1-4.8.1_20130909-3.2.7 failed: (with --nodeps --force) Error: Subprocess failed. Error: RPM failed: Command was killed by signal 4 (Illegal instruction).
Abort, retry, ignore? [a/r/i] (a): a Problem occured during or after installation or removal of packages: Installation aborted by user
Please see the above error message for a hint. There are some running programs that use files deleted by recent upgrade. You may wish to restart some of them. Run 'zypper ps' to list these programs. rtas:~ # zypper ps Check failed: Executing 'lsof' failed (132). rtas:~ # zypper dup Illegal instruction rtas:~ #
Any hints how to continue?
Ouch. This is the Mirabox I suppose? So you're running on an Amada 370 SoC.
That core does not have NEON extensions, which should be fine, since IIRC we build without NEON. Maybe something changed in the compiler flags to 13.1 one or we have a compiler bug emitting NEON instructions after all though.
Do you think you could just put a 13.1 rootfs into a chroot and call
$ /chroot/lib/ld-linux.so.2
directly? If that works, try
$ /chroot/lib/ld-linux.so.2 --library-path /chroot/lib /chroot/bin/ls
If any of the two commands give you an illegal instruction, you can then try to run it in gdb:
$ gdb --args /chroot/lib/ld-linux.so.2 --library-path /chroot/lib /chroot/bin/ls (gdb) run
It will tell you which instruction it stumbled over on. We can then debug on from that point.
Alex -- To unsubscribe, e-mail: opensuse-arm+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-arm+owner@opensuse.org