[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#24703: Store references in 8-byte chunks in compiled code
From: |
Mark H Weaver |
Subject: |
bug#24703: Store references in 8-byte chunks in compiled code |
Date: |
Sun, 16 Oct 2016 05:25:10 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
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
- bug#24703: fontconfig keeps obfuscated reference to itself, not grafted, Mark H Weaver, 2016/10/15
- bug#24703: fontconfig keeps obfuscated reference to itself, not grafted, Mark H Weaver, 2016/10/16
- bug#24703: fontconfig keeps obfuscated reference to itself, not grafted, Mark H Weaver, 2016/10/16
- bug#24703: Store references in 8-byte chunks in compiled code, Mark H Weaver, 2016/10/16
- bug#24703: Store references in 8-byte chunks in compiled code, Mark H Weaver, 2016/10/16
- bug#24703: Store references in 8-byte chunks in compiled code,
Mark H Weaver <=
- bug#24703: Store references in 8-byte chunks in compiled code, Mark H Weaver, 2016/10/16
- bug#24703: Store references in 8-byte chunks in compiled code, Ludovic Courtès, 2016/10/16
- bug#24703: Re: bug#24703: Store references in 8-byte chunks in compiled code, Török Edwin, 2016/10/17
- bug#24703: Re: bug#24703: Store references in 8-byte chunks in compiled code, Mark H Weaver, 2016/10/17
- bug#24703: Store references in 8-byte chunks in compiled code, Ludovic Courtès, 2016/10/17
- bug#24703: Store references in 8-byte chunks in compiled code, Mark H Weaver, 2016/10/17
- bug#24703: Store references in 8-byte chunks in compiled code, Ludovic Courtès, 2016/10/18
- bug#24703: Store references in 8-byte chunks in compiled code, Mark H Weaver, 2016/10/31
- bug#24703: Store references in 8-byte chunks in compiled code, Ludovic Courtès, 2016/10/31
- bug#24703: Store references in 8-byte chunks in compiled code, Leo Famulari, 2016/10/24