~linaro-toolchain-dev/cortex-strings/trunk

« back to all changes in this revision

Viewing changes to README

  • Committer: Matthew Gretton-Dann
  • Author(s): Marcus Shawcroft
  • Date: 2013-01-16 20:55:59 UTC
  • mto: This revision was merged to the branch mainline in revision 99.
  • Revision ID: matthew.gretton-dann@linaro.org-20130116205559-7nye0l7d8fvzdye3
This patch fixes an issue in the AArch64 strnlen implementation which
occurs if  ULONG_MAX-15 <= n <= ULONG_MAX.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
= Cortex-A String Routines =
 
2
 
 
3
This package contains optimised string routines including memcpy(), memset(),
 
4
strcpy(), strlen() for the ARM Cortex-A series of cores.
 
5
 
 
6
Various implementations of these routines are provided, including generic
 
7
implementations for ARMv7-A cores with/without Neon, an implementation tuned
 
8
for Cortex-A9 and generic implementations for cores supporting AArch64.
 
9
 
 
10
== Getting started ==
 
11
First configure and then install libcortex-strings.so.  To make other
 
12
applications use this library, either add -lcortex-strings to the link
 
13
command or use LD_PRELOAD to load the library into existing applications.
 
14
 
 
15
Our intent is to get these routines into the common C libraries such
 
16
as GLIBC, Bionic, and Newlib.  Your system may already include them!
 
17
 
 
18
== Contents ==
 
19
 * src/  contains the routines themselves
 
20
 * tests/  contains the unit tests
 
21
 * reference/  contains reference copies of other ARM-focused
 
22
   implementations gathered from around the Internet
 
23
 * benchmarks/  contains various benchmarks, tools, and scripts used to
 
24
   check and report on the different implementations.
 
25
 
 
26
The src directory contains different variants organised by the
 
27
implementation they run on and optional features used.  For example:
 
28
  * src/thumb-2  contains generic non-NEON routines for AArch32 (with Thumb-2).
 
29
  * src/neon  contains NEON based routines for AArch32.
 
30
  * src/linaro-a9  contains tuned routines for Cortex-A9 processors.
 
31
  * src/aarch64  contains generic routines for AArch64.
 
32
 
 
33
== Reference versions ==
 
34
reference/ contains versions collected from various popular Open
 
35
Source libraries.  These have been modified for use in benchmarking.
 
36
Please refer to the individual files for any licensing terms.
 
37
 
 
38
The routines were collected from the following releases:
 
39
 * EGLIBC 2.13
 
40
 * Newlib 1.19.0
 
41
 * Bionic android-2.3.5_r1
 
42
 
 
43
== Licensing ==
 
44
All Linaro-authored routines are under the modified BSD license:
 
45
 
 
46
Copyright (c) 2011, Linaro Limited
 
47
All rights reserved.
 
48
 
 
49
Redistribution and use in source and binary forms, with or without
 
50
modification, are permitted provided that the following conditions are met:
 
51
    * Redistributions of source code must retain the above copyright
 
52
      notice, this list of conditions and the following disclaimer.
 
53
    * Redistributions in binary form must reproduce the above copyright
 
54
      notice, this list of conditions and the following disclaimer in the
 
55
      documentation and/or other materials provided with the distribution.
 
56
    * Neither the name of the Linaro nor the
 
57
      names of its contributors may be used to endorse or promote products
 
58
      derived from this software without specific prior written permission.
 
59
 
 
60
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 
61
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 
62
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 
63
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
 
64
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 
65
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 
66
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 
67
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
68
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 
69
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
 
70
 
 
71
All third party routines are under a GPL compatible license.
 
72
 
 
73
== Notes and Limitations ==
 
74
Some of the implementations have been collected from other
 
75
projects and have a variety of licenses and copyright holders.
 
76
 
 
77
== Style ==
 
78
Assembly code attempts to follow the GLIBC coding convetions.  They
 
79
are:
 
80
 * Copyright headers in C style comment blocks
 
81
 * Instructions indented with one tab
 
82
 * Operands indented with one tab
 
83
 * Text is wrapped at 70 characters
 
84
 * End of line comments are fine