Re: Expanding the list of "Hardened Packages"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



John Reiser <jreiser@xxxxxxxxxxxx> wrote:

> It's also easy to see the mechanism:
> $ cat foo.c
> extern int a[];
> 
> void foo(int j) { a[j]=j; }
> $ gcc -m32 -fPIE -O -S foo.c
> $ cat foo.s  # edited for brevity
> foo:  # 25 bytes; about 15 cycles  (incl. 3*3 cycles data cache fetch latency)
> 	call	__x86.get_pc_thunk.cx
> 	addl	$_GLOBAL_OFFSET_TABLE_, %ecx
> 	movl	4(%esp), %eax
> 	movl	a@GOT(%ecx), %edx
> 	movl	%eax, (%edx,%eax,4)
> 	ret

Yes, but...  Am I right in thinking that a page containing the above can be
shared, but...

> $ gcc -m32 -O -S foo.c
> $ cat foo.s  # edited for brevity
> foo:  # 12 bytes; about 6 cycles  (incl. 1*3 cycles data cache fetch latency)
> 	movl	4(%esp), %eax
> 	movl	%eax, a(,%eax,4)
> 	ret
> $

... a page containing this cannot because it must be relocated prior to
execution?

Admittedly, it is possible that if the address stored by the linker for 'a' is
the same as 'a' is loaded at, then the loader might not need to adjust the
instruction - but if we randomise the load addresses of various binaries, then
that is unlikely to be true.

David
-- 
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/devel





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux