| .. | .. |
|---|
| 53 | 53 | Preserving tags |
|---|
| 54 | 54 | --------------- |
|---|
| 55 | 55 | |
|---|
| 56 | | -Non-zero tags are not preserved when delivering signals. This means that |
|---|
| 57 | | -signal handlers in applications making use of tags cannot rely on the |
|---|
| 58 | | -tag information for user virtual addresses being maintained for fields |
|---|
| 59 | | -inside siginfo_t. One exception to this rule is for signals raised in |
|---|
| 60 | | -response to watchpoint debug exceptions, where the tag information will |
|---|
| 61 | | -be preserved. |
|---|
| 56 | +When delivering signals, non-zero tags are not preserved in |
|---|
| 57 | +siginfo.si_addr unless the flag SA_EXPOSE_TAGBITS was set in |
|---|
| 58 | +sigaction.sa_flags when the signal handler was installed. This means |
|---|
| 59 | +that signal handlers in applications making use of tags cannot rely |
|---|
| 60 | +on the tag information for user virtual addresses being maintained |
|---|
| 61 | +in these fields unless the flag was set. |
|---|
| 62 | + |
|---|
| 63 | +Due to architecture limitations, bits 63:60 of the fault address |
|---|
| 64 | +are not preserved in response to synchronous tag check faults |
|---|
| 65 | +(SEGV_MTESERR) even if SA_EXPOSE_TAGBITS was set. Applications should |
|---|
| 66 | +treat the values of these bits as undefined in order to accommodate |
|---|
| 67 | +future architecture revisions which may preserve the bits. |
|---|
| 68 | + |
|---|
| 69 | +For signals raised in response to watchpoint debug exceptions, the |
|---|
| 70 | +tag information will be preserved regardless of the SA_EXPOSE_TAGBITS |
|---|
| 71 | +flag setting. |
|---|
| 72 | + |
|---|
| 73 | +Non-zero tags are never preserved in sigcontext.fault_address |
|---|
| 74 | +regardless of the SA_EXPOSE_TAGBITS flag setting. |
|---|
| 62 | 75 | |
|---|
| 63 | 76 | The architecture prevents the use of a tagged PC, so the upper byte will |
|---|
| 64 | 77 | be set to a sign-extension of bit 55 on exception return. |
|---|