Here's a complex example of a reference to: /gnu/store/80m11l8km7bwi9iljfyr82hmscaq4xk2-unixodbc-2.3.4/etc
This also illustrates what can happen near the end of a reference. In this case, the last two characters are found at the end, within a 'mov' instruction, and the previous 4 characters are found near the beginning, after the first 8-byte chunk. ======== /gnu/store/80m11l8km7bwi9iljfyr82hmscaq4xk2-unixodbc-2.3.4/lib/libodbcinst.so.2.0.0 8238: 48 b8 2f 67 6e 75 2f movabs $0x6f74732f756e672f,%rax ; "/gnu/sto" 823f: 73 74 6f 8242: c7 05 6c fa 20 00 2e movl $0x652f342e,0x20fa6c(%rip) ; ".4/e" 8249: 34 2f 65 824c: c6 05 6b fa 20 00 00 movb $0x0,0x20fa6b(%rip) 8253: 48 89 05 26 fa 20 00 mov %rax,0x20fa26(%rip) 825a: 48 b8 72 65 2f 38 30 movabs $0x31316d30382f6572,%rax ; "re/80m11" 8261: 6d 31 31 8264: c7 05 16 0a 21 00 01 movl $0x1,0x210a16(%rip) 826b: 00 00 00 826e: 48 89 05 13 fa 20 00 mov %rax,0x20fa13(%rip) 8275: 48 b8 6c 38 6b 6d 37 movabs $0x697762376d6b386c,%rax ; "l8km7bwi" 827c: 62 77 69 827f: 48 8d 1d 42 94 00 00 lea 0x9442(%rip),%rbx 8286: 48 89 05 03 fa 20 00 mov %rax,0x20fa03(%rip) 828d: 48 b8 39 69 6c 6a 66 movabs $0x387279666a6c6939,%rax ; "9iljfyr8" 8294: 79 72 38 8297: 48 89 05 fa f9 20 00 mov %rax,0x20f9fa(%rip) 829e: 48 b8 32 68 6d 73 63 movabs $0x34716163736d6832,%rax ; "2hmscaq4" 82a5: 61 71 34 82a8: 48 89 05 f1 f9 20 00 mov %rax,0x20f9f1(%rip) 82af: 48 b8 78 6b 32 2d 75 movabs $0x78696e752d326b78,%rax ; "xk2-unix" 82b6: 6e 69 78 82b9: 48 89 05 e8 f9 20 00 mov %rax,0x20f9e8(%rip) 82c0: 48 b8 6f 64 62 63 2d movabs $0x332e322d6362646f,%rax ; "odbc-2.3" 82c7: 32 2e 33 82ca: 48 89 05 df f9 20 00 mov %rax,0x20f9df(%rip) 82d1: b8 74 63 00 00 mov $0x6374,%eax ; "tc" 82d6: 66 89 05 df f9 20 00 mov %ax,0x20f9df(%rip) Now imagine what will be required to graft cases like this. Consider what will happen for strings with an odd number of characters. The last character might be all by itself. When grafting, how will we achieve confidence that we've found the correct occurrence of the last character? I think we will have to give up our recently added feature of being able to change the version number of grafts. Oh, one more thing: I forgot to mention in my previous email, where 'bash-static' refers to 'glibc-intermediate', that on my system the referenced 'glibc-intermediate' has been garbage-collected from my system, so that's a real-world example of a broken link, and it happened to be the first one I investigated :-( Mark