Table of Contents

Contents

Introduction

The Mobile Linux Platform Tools Guidelines section contains guidelines essential to developing software for mobile phones running Linux.

This document contains four categories of guidelines:

These guidelines do not specify that the software support specific CPUs. However, for certain guidelines, CPU-specific guidelines must be met.

Toolchain Guidelines

TOO.1 Cross Compilation

Description: Linux Foundation MLI specifies that a toolchain must be provided that allows for cross compilation and linking for the specified target CPU.

Linux Foundation MLI does not specify the architecture or operating system of the development host.

TOO.2 C Toolchain

Description: Linux Foundation MLI specifies that a toolchain must be provided that allows for cross compilation and linking for the specified target CPU.

Linux Foundation MLI does not specify the architecture or operating system of the development host.

Application Binary Interface Guidelines

ABI.1 Executable and Linking Format (ELF)

Description: Linux Foundation MLI specifies that both applications and system libraries support the Executable and Linking Format (ELF).

For the ARM architecture, the required ELF interface can be found in:

For IA32 and PPC32, the ELF format as described in Linux Standard Base Core Specification 3.1 in the following sections is required:

For the IA32 architecture, this is Chapters 8, 9 and 10 of the Linux Standard Base Core Specification for IA32 version 3.1. For the PPC32 architecture, this is Chapter 8 of the Linux Standard Base Core Specification for PPC 32 version 3.1.

Library Guidelines

LIB.1 C Library Implementations

Description: Linux Foundation MLI specifies that a C library exist that is functionally compatible with glibc version 3.2.4.

LIB.2 Interfaces of the C Library

Description: Linux Foundation MLI specifies that the API conform to the Linux Standard Base Core Specification 3.1, Chapter 13 Base Libraries. This makes reference to POSIX(2003). The following sections of this specification are not required:

LIB.3 C Library Configurability

Description: Linux Foundation MLI specifies that the C library must be configurable so that it can be scaled in size.

The only configurable feature of a C library required is that translations be optionally enabled.

LIB.4 Threading

Description: Linux Foundation MLI specifies that the C library and Linux kernel must implement a threading implementation.

Debugging Guidelines

DBG.1 Host/Target Debugging Architecture

Description: Linux Foundation MLI specifies that the debugging environment be capable of debugging in a host/target environment. The development host will run appropriate debuggers and have access to debugging symbols found only on the development host. The target should not have to store the debugging symbols for the objects under development.

DBG.2 Debugging Format

Description: Linux Foundation MLI specifies that compilers be able to generate and debuggers be able to read symbol information using the DWARF format. For ARM, the DWARF specification is described in DWARF for the ARM Architecture. For IA32 and PPC, Section 11.5 of the Linux Standard Base Core Specification 3 describes the required DWARF.

DBG.3 User Mode Debugging

Description: Linux Foundation MLI specifies that an agent must be provided for the target to enable remote debugging of userspace applications. Support must exist to allow for symbol information to reside only on the developer host, not on the target. This agent will implement the GNU Debugger Message Interface (GDB/mi) protocol as described in the GDB/MI chapter in Debugging with GDB (Ninth edition for GDB Version 6.0).

DBG.4 Kernel Mode Debugging

Description: Linux Foundation MLI specifies that the kernel should implement kernel mode debugging so that a target's kernel can be remotely debugged from a development host. The communication mechanism that is spoken between the debugger and the target is the same GDB/MI protocol as described in the User Mode Debugging guideline.

DBG.5 Kernel Mode Debugging Channels

Description: Linux Foundation MLI specifies that the target's kernel will enable kernel mode debugging over at least one of the following communication methods:

These communication methods will provide a polling mechanism that will allow the developer to debug interrupt service routines.

Contributors

Appendix A: References

ISO/IEC 9899:TC2 C Standard
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
ISO/IEC 14882 C++ Standard
http://www.open-std.org/jtc1/sc22/open/n2356/
ELF for the ARM Architecture
http://www.arm.com/miscPDFs/8030.pdf
C Library ABI for the ARM Architecture
http://www.arm.com/miscPDFs/8032.pdf
Procedure Call Standard for the ARM Architecture
http://www.arm.com/miscPDFs/8031.pdf
Linux Standard Base Core Specification 3.1
http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/book1.html
Linux Standard Base Core Specification for IA32 version 3.1
http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-IA32/LSB-Core-IA32/book1.html
Linux Standard Base Core Specification for PPC32 version 3.1
http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-PPC32/LSB-Core-PPC32/book1.html
DWARF for the ARM Architecture
http://www.arm.com/miscPDFs/8029.pdf
Debugging with GDB (Ninth Edition)

by Richard M. Stallman, Roland Pesch, Stan Shebs, et al., January 2002, ISBN 1-882114-88-4
http://www.gnu.org/software/gdb/documentation/