GDB Hex Display

I always forget how useful that is, so writing it here:

x (for "examine") examines memory in several formats

x/nfu addr
x addr

n, f, and u are optional parameters that specify how much memory to display and how to format it;
addr is an expression where to start displaying memory. 

n, the repeat count
Decimal integer; the default is 1. It specifies how much memory (counting by units u) to display.

f, the display format
One of the formats used by print, 's' (null-terminated string), or 'i' (machine instruction). The default is 'x' (hexadecimal) initially. The default changes each time you use either x or print.

u, the unit size
The unit size is any of
    b - bytes.
    h - half words (two bytes).
   w - words (four bytes). This is the initial default.
   g - giant words (eight bytes).



Setup for GitHub

Fresh Linux installation, setup for GitHub:

> ssh-keygen -t rsa -b 4096 -C ""
(add it to GitHub profile)
> gpg --gen-key
(RSA, 4096)
> gpg --list-keys
pub   4096R/C077F67D 2016-05-03
> gpg --armor --export C077F67D
(add it to GitHub profile)

> git config --global "github-username"
> git config --global ""

> git config --global push.default simple

> git config --global checkout
> git config --global alias.b branch
> git config --global alias.c commit
> git config --global status
> git config --global alias.stage 'add -A'
> git config --global alias.unstage 'reset HEAD --'
> git config --global alias.last 'log -1 HEAD'
> git config --global alias.visual '!gitk'
> git config --global 'log --oneline --decorate'
> git config --global alias.ll 'log --oneline --decorate --graph --all'
> git config --global alias.r 'remote -v'

> git config --list
(review it all)

Static libraries into Shared One

When compiling several static libraries into one shared using Android NDK I ran into a problem and fixing it required changing the NDK.

Here is what the problem is. Let say I use this

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := libmod1.a
include $(CLEAR_VARS)
LOCAL_SRC_FILES := libmod2.a
#...more prebuilt static libs here...
include $(CLEAR_VARS)
LOCAL_SRC_FILES := main.cpp

This won’t work in NDK 5 and 5b, specifically the macro LOCAL_WHOLE_STATIC_LIBRARIES won’t do anything.

This is how to fix it:

locate the file you use, it’s one of those:

find -name

In my case it was “./toolchains/arm-linux-androideabi-4.4.3/”.

In that locate defines cmd-build-shared-library and cmd-build-executable.

In these defines look at the call with $(PRIVATE_WHOLE_STATIC_LIBRARIES) as a parameter:

$(call link-whole-archives,$(PRIVATE_WHOLE_STATIC_LIBRARIES))

make sure that “link-whole-archives” matches the one in build/core/definitions/mk.

In my toolchain I had “whole-link-archives-tags” instead of “link-whole-archives”.

Happy Android hacking!

Install Virtual Box Additions on Fedora 14

I have been using Fedora 14 as my primary work desktop for a while. I like it a lot for many reasons and one of them that it easily runs as a virtual machine.

Oracle Virtual Box version 4 has been my choice for running desktop virtual machines because it is fast, robust, simple and free.

Anybody who runs Fedora knows it gets lots of updates and when such update includes the kernel then I have to reinstall Virtual Box Guest Additions that enable several important features with two I use all the time: mouse integration and shared folders.

This how to install or reinstall Virtual Box Guest Additions on Fedora 14.

First we need the kernel headers:

> yum install -y kernel-devel
> yum -y update

Then from the virtual machine menu, select Devices/Install Guest Additions and mount the image by selecting it from Fedora “Places” menu. Then run the Additions installer:

> cd /media/VBOXADDITIONS_4.0.0_69151/
> ./

Watch output for errors. That is it. Now you can use mouse on the virtual machine as it is your desktop extension and mount shared directories:

> /sbin/mount.vboxsf mydir /share/vbox/mydir

How to run Java samples from VMware SDK on Ubuntu 10.04

There are subtle differences in all Linux platforms and when I got to run VMware SDK Java samples on Ubuntu 10.04 I found there is something that is worth to share in addition to my first post about it.

First of all, there are very convenient “default” packages for JRE and JDK that have openjdk-6-jre and openjdk-6-jdk:

apt-get install default-jre defalt-jdk

Of course that means a different value for JAVAHOME:

export JAVAHOME=/usr/bin/openjdk-6/

Second, in my first post I did not describe how to get and store VMware server certificates.

If you follow the Setup Guild then you have to connect to a VMware server by SSH or use the vClient. But you can get the certificate from the Firefox browser: when connecting to a VMware server and asked to confirm the certificate, there is a button to export it. This allows to save the certificate locally and then add it to the keystore:

keytool -import -file XXX.XX.XX.XX.XX.cer -alias XXX.XX.XX.XX.XX \
-keystore vmware.keystore VMKEYSTORE=~/vmware-certs/vmware.keystore

Also the tofrodos package has different name for the dos2unix utility, it is called fromdos now:

apt-get install tofrodos
cd %SDKHOME%\samples\Axis\java
fromdos *.sh

Unfortunately the axis binaries I still had to download manually.

HowTo: Install New ALSA Driver

During initial installation of Ubuntu 10.04 it detected my audio chip (integrated with my Gigabyte motherboard) without any problems, but after a couple of hibernations or for some other reason it lost it:

aplay -l
no soundcard found

I actually was surprised it found it at the first place as on any platform this kind of audio requires installation of hi-def drivers.

Anyway, first I tried to reload ALSA:

sudo alsa force-reload

It did not help.

Then after some digging I decided to compile and install the ALSA driver for my codec. My codec happened to be Realtek ALC888:

cat /proc/asound/card*/codec#* | grep Codec
Codec: Realtek ALC888

I got the driver from the Realtek web site.

Then untared, compiled and installed it:

tar xf LinuxPkg_5.15rc5.tar.bz2
cd realtek-linux-audiopack-5.15/
tar xf alsa-driver-1.0.23-5.15rc5.tar.bz2
cd alsa-driver-1.0.23/
./configure --with-cards=hda-intel
sudo make install

After rebooting got Rhythmbox loaded with Dire Straits and Tracy Chapman, sounds amazing.

Restore Vista MBR

When I removed a failed to load Kubuntu partition on my dual boot laptop, I did something stupid: I rebooted the computer.

Of course I ended up with Grub “Error 22”.

Fortunately I had a recovery DVD with system files and after booting from this DVD and getting into the command line, I found file bootrec.exe.

Executing it as:

bootrec.exe /fixmbr

restored the MBR and I was able to boot into Vista.

Printing from Emacs on Windows

I’m a Emacs guy and this is how I got it printing on on of my Windows boxes (XP SP2) where I already had Cygwin.

1. Install PDF Creator.

2. Update .emacs file with the following:
(setenv "PRINTER" "PDFCreator")
(setq ps-printer-name "PDFCreator")
(setq ps-printer-name-option "-d")
(setq ps-lpr-command "/cygwin/bin/lpr")

3. Print into a PDF file with ps-print-buffer and then to any printer (or not at all).