RFA: New port: ia64-hp-openvms (2/3)

Tristan Gingold
2012-02-10T13:23:12Z

The easiest way to get the unwind entry is to ask to the OpenVMS kernel, as this always work.
Might not be optimal for the user application, but it is bullet-proof.

Tristan.

2012-02-10 Tristan Gingold <gingold@adacore.com>

* target.h (target_object): Add TARGET_OBJECT_OPENVMS_UIB.
* remote.c (PACKET_qXfer_uib): New enum value.
(remote_protocol_features): Add entry for PACKET_qXfer_uib.
(remote_xfer_partial): Handle TARGET_OBJECT_OPENVMS_UIB.

diff --git a/gdb/remote.c b/gdb/remote.c
index 3187ac0..7787864 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -1250,6 +1250,7 @@ enum {
PACKET_qXfer_threads,
PACKET_qXfer_statictrace_read,
PACKET_qXfer_traceframe_info,
+ PACKET_qXfer_uib,
PACKET_qGetTIBAddr,
PACKET_qGetTLSAddr,
PACKET_qSupported,
@@ -3830,6 +3831,8 @@ static struct protocol_feature remote_protocol_features[] = {
remote_enable_disable_tracepoint_feature, -1 },
{ "qXfer:fdpic:read", PACKET_DISABLE, remote_supported_packet,
PACKET_qXfer_fdpic },
+ { "qXfer:uib:read", PACKET_DISABLE, remote_supported_packet,
+ PACKET_qXfer_uib },
{ "QDisableRandomization", PACKET_DISABLE, remote_supported_packet,
PACKET_QDisableRandomization },
{ "tracenz", PACKET_DISABLE,
@@ -8417,6 +8420,12 @@ remote_xfer_partial (struct target_ops *ops, enum target_object object,
case TARGET_OBJECT_FDPIC:
return remote_read_qxfer (ops, "fdpic", annex, readbuf, offset, len,
&remote_protocol_packets[PACKET_qXfer_fdpic]);
+
+ case TARGET_OBJECT_OPENVMS_UIB:
+ return remote_read_qxfer
+ (ops, "uib", annex, readbuf, offset, len,
+ &remote_protocol_packets[PACKET_qXfer_uib]);
+
default:
return -1;
}
diff --git a/gdb/target.h b/gdb/target.h
index d4605ae..5f642be 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -280,7 +280,9 @@ enum target_object
/* Load maps for FDPIC systems. */
TARGET_OBJECT_FDPIC,
/* Darwin dynamic linker info data. */
- TARGET_OBJECT_DARWIN_DYLD_INFO
+ TARGET_OBJECT_DARWIN_DYLD_INFO,
+ /* OpenVMS Unwind Information Block. */
+ TARGET_OBJECT_OPENVMS_UIB
/* Possible future objects: TARGET_OBJECT_FILE, ... */
};