Home | History | Annotate | Download | only in sys
History log of /src/lib/libc/arch/arm/sys/sbrk.S
RevisionDateAuthorComments
 1.14  06-May-2025  uwe arm/asm.h: revert PCREL_GET &c in previous (ok riastradh)

This change needs to be redone and re-verified. I have detailed some
issues in the PR, and it also turns out that some of the changes were
in the !_REENTRANT branch of #ifdef and thus not checked at all.
riastradh asked to back out the changes for now.

PR lib/59391: unnecessary __PIC__ conditionals clutter .S files
 1.13  03-May-2025  riastradh arm: Nix most __PIC__ conditionals in .S files.

New macros PCREL_GET(rN,label,pclabel) and PCREL_SYM(label,pclabel)
to enable this by the pattern:

ldr rN, label
#ifdef __PIC__
pclabel:
add rN, rN, pc
#endif
...
label:
#ifdef __PIC__
.word (label - (pclabel + 2*sizeof(instruction)))
#else
.word label
#endif

(sizeof(instruction) = 2 for thumb, 4 for non-thumb.)

No binary change in libc with MKPIE=no (i.e., testing both for
changes to the PIC build and changes to the non-PIC build).

In principle, assembly routines could improve instruction scheduling
by splitting up the ldr and add instructions. But in practice, the
maintenance and auditing burden likely makes this worthwhile by
improving legibility vs a tangle of in-line #ifdefs.

brk.S does things a little differently making it harder to unify.
Could redo it but I don't want to make changes without testing them
first.

PR lib/59391: unnecessary __PIC__ conditionals clutter .S files
 1.12  12-Sep-2013  joerg branches: 1.12.38;
Pass PICFLAGS down to cc-as-as and use __PIC__ to decide if it is small
vs big PIC mode. Retire -DPIC and -DBIGPIC.
 1.11  03-Sep-2013  matt Use less got, add END(), make thumb tolerant.
 1.10  01-Aug-2013  matt Make __minbrk, __curbrk, and CERROR hidden and avoid using the GOT to access
them.
 1.9  13-May-2011  nonaka branches: 1.9.4; 1.9.10;
Use "_end" instead of "end" for consistency with other architectures.
 1.8  21-Aug-2004  rearnsha branches: 1.8.16;
Use RET and RETc for returning.
 1.7  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22280, verified by myself.
 1.6  05-Apr-2003  bjh21 NetBSD/acorn26 has been using APCS-32 for years, so unifdef -U__APCS_26__.
 1.5  17-Aug-2002  thorpej Local label fixup.
 1.4  16-Jul-2001  matt Changes needed for ARM ELF shared library support.
 1.3  05-May-2001  kleink Shameless hack to reference end when using a.out and _end when using ELF.
 1.2  09-Jan-2001  bjh21 branches: 1.2.2;
Use SYSTRAP() everywhere rather than coding SWI instructions directly.
 1.1  29-Dec-2000  bjh21 Create shared ARM source for libc, and move arm26 port over to using it.
The code is (almost) a direct copy of the current arm26 sources.
It's identical to the current arm32 sources, with the following exceptions:
- _C_LABEL is used on references to C labels from assembler.
- Function returns in assembler have APCS-26 versions in #ifdef __APCS_26__.
- It uses SoftFloat 2a rather than SoftFloat 1a.

The first two of these should be inconsequential. I believe that SoftFloat 2a
should work on arm32 and be backward-compatible with existing code, but this
is not obviously true. For now, arm32 remains using its own bits of libc.
 1.2.2.2  27-Aug-2002  nathanw Catch up to -current.
 1.2.2.1  08-Oct-2001  nathanw Catch up to -current.
 1.8.16.1  28-Aug-2007  matt More thumb support
 1.9.10.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.9.4.1  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.12.38.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed