aggr Rdebug { 'X' 0 version; 'X' 4 map; }; aggr Rmap { 'X' 0 addr; 'X' 4 name; 'X' 8 dynsect; 'X' 12 next; 'X' 16 prev; }; defn rdebug() { local a; a = _DYNAMIC; while *a != 0 do { if *a == 21 then // 21 == DT_DEBUG return *(a+4); a = a+8; } return 0; } defn rlink() { local r, m, n; r = rdebug(); if r == 0 then return {}; complex Rdebug r; print("version ", r.version, "\n"); m = r.map; n = 0; while m != 0 && n < 100 do { complex Rmap m; print("map ", m\X, " base ", m.addr\X, " next ", m.next\X, " name "); if m.name then print(*(m.name\s)); else print("''"); print("\n"); m = m.next; n = n+1; } }