~asterism/domme

Switched to dynamic linking.

Assembly programs are affected; C programs are affected less.
Global symbols are now accessed through the Global Offset Table,
and subroutines through the Procedure Linkage Table.
It's worth the space saved, although the library was never very large
to begin with. The README has been updated to account for this.

In debugging the side effects of this switch, I added a section to the
test program that printed out the sizes of various tables.
It can't "fail", but it turned out to be useful, so I'm leaving it in.
If the sizes printed don't match the sizes assembled, something has
gone wrong.

Hopefully none of this introduces any new bugs.
25e3b990 — Phantom 9 months ago
You can now initialize libdomme in one line. Some minor bug fixes.

Included a test of libdomme's ability to detect direct pointers to
$domme itself. The address check done by $DOMME_init can now catch any
unmapped address, not just illegal ones. Program symbols are prefixed
with '$' in documentation, for visibility. The README has been updated
to reflect these facts. "make clean" no longer removes "domme.lst",
but does remove the file "core" generated by the test program.
Significant bug fixes. Made domme.asm easier to follow.

Replaced message 0x2f.
Removed some redundant instructions.
Changed stack frame index register from %r8 to %r10.
(None of these changes affect execution.)

Fleshed out comments.
Moved global symbols to top of file for use as hyperlinks.
Make now generates listing file domme.lst from domme.asm.

Added missing translation of kernel oldact into libc form.
Added simple address checking for act and oldact.
Fixed bug that corrupted backtraces if DOMME_init registered SIG_DFL and crashed.
Added more tests.

Removed register aliases.
Most of the GPRs used have some special significance to this or that instruction,
so it's important to be able to keep track of which ones are being used for what.
I now understand why nobody else does this.
Initial USABLE commit.

Rearranged README.
Header "domme.h" no longer broken.
Wrote sanity check program "domme-test"; added "make check" to Makefile.
Fixed a bug that made registering non-SIG_DFL handlers impossible.
Fixed a bug that prevented registering full three-arg handlers.
Added an additional parameter to DOMME_init, sigsetsize.
Added constants DOMME_MSGTBL_SIZE, DOMME_XLAT_A_SIZE, DOMME_VERSION_SIZE.
Consequently, all arrays in "domme.h" are now declared as incomplete.
Added message 0x2f; replaced message 0x2e.
Program now has a homepage on "https://syslbnth.neocities.org/domme/"!
Initial commit.