|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| #
1.18 |
|
07-May-2025 |
uwe |
arm: asm.h - change GOT_INIT to take the normal asm label
Don't pass the label to use for the "current address" as the macro parameter. It obscures its purpose and makes the use of local labels extremely unobvious, so you are forced to invent a name that is mostly useless otherwise:
GOT_INIT(r3, .Lgot.execsp_start, .Lpc.execsp_start) GOT_INITSYM(.Lgot.execsp_start, .Lpc.execsp_start) vs. 0: GOT_INIT(r3, .Lgot.execsp_start) GOT_INITSYM(.Lgot.execsp_start, 0b)
Same object code is generated.
|
| #
1.17 |
|
07-May-2025 |
uwe |
arm: cerror.S - use GOT_SYM
Use GOT_SYM instead of open-coding it. It's defined in asm.h but doesn't seem to be used anywhere, so perk it up.
While here, be consistent about declaring errno and use that as a chance to provide a comment why #ifdef _REENTRANT is needed here.
|
| #
1.16 |
|
07-May-2025 |
uwe |
arm: cerror.S - factor out code to return -1
Do not repeat verbose ifdefed code that sets (long long){ r0, r1 } to -1LL that indicates an error return from a syscall. Define it once as a macro and use it. Fix the code to actually be compilable as thumb ("mov" vs "movs").
Modulo one fixed "mov" vs "movs" the same object code is generated for all 8 permutations of (arm/thumb x non/reentrant x absolute/pic).
|
| #
1.15 |
|
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.14 |
|
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
|
|
Revision tags: netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base netbsd-9-3-RELEASE cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base netbsd-9-1-RELEASE phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 tls-maxphys-base
|
| #
1.13 |
|
30-Nov-2013 |
joerg |
branches: 1.13.38; Use PLT_SYM.
|
| #
1.12 |
|
12-Sep-2013 |
joerg |
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 |
|
04-Sep-2013 |
matt |
only emit cfi if __ARM_EABI__ && __UNWIND_TABLES__
|
| #
1.10 |
|
03-Sep-2013 |
matt |
Use less got, add END(), make thumb tolerant.
|
| #
1.9 |
|
01-Aug-2013 |
matt |
CERROR is now hidden so no need to call it via the PLT
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4
|
| #
1.8 |
|
27-Feb-2012 |
joerg |
branches: 1.8.2; Make __cerror protected to restore ABI leak in older libc versions, where e.g. librt referenced the copy from libc. This still allows libc to use PC-relative jumps.
|
|
Revision tags: netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
|
| #
1.7 |
|
14-Jan-2011 |
matt |
branches: 1.7.6; 1.7.8; Change __cerror to be marked hidden and change callers to avoid the PLT.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jym-xensuspend-nbase netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 christos-time_t-nbase christos-time_t-base netbsd-5-base matt-mips64-base2 mjf-devfs2-base netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 wrstuden-revivesa-base yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-3-base
|
| #
1.6 |
|
21-Aug-2004 |
rearnsha |
branches: 1.6.16; Use RET and RETc for returning.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| #
1.5 |
|
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.4 |
|
05-Apr-2003 |
bjh21 |
NetBSD/acorn26 has been using APCS-32 for years, so unifdef -U__APCS_26__.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
|
| #
1.3 |
|
17-Aug-2002 |
thorpej |
Local label fixup.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
|
| #
1.2 |
|
16-Jul-2001 |
matt |
Changes needed for ARM ELF shared library support.
|
| #
1.1 |
|
29-Dec-2000 |
bjh21 |
branches: 1.1.2; 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.
|