On 12.02.2017 22:52, Valeriy E. Ushakov wrote:
> Module Name: src
> Committed By: uwe
> Date: Sun Feb 12 21:52:46 UTC 2017
>
> Modified Files:
> src/sys/kern: exec_elf.c
>
> Log Message:
> netbsd_elf_signature - look at note segments (phdrs) not note
> sections. They point to the same data in the file, but sections are
> for linkers and are not necessarily present in an executable.
>
> The original switch from phdrs to shdrs seems to be just a cop-out to
> avoid parsing multiple notes per segment, which doesn't really avoid
> the problem b/c sections also can contain multiple notes.
>
>
> To generate a diff of this commit:
> cvs rdiff -u -r1.87 -r1.88 src/sys/kern/exec_elf.c
>
> Please note that diffs are not public domain; they are subject to the
> copyright notices on the relevant files.
>
>
This change broke assembly framework of mine.
(amd64)
$ cat start.S
.globl _start
.section ".note.netbsd.ident", "", @note
.long 2f-1f
.long 4f-3f
.long 1
1: .asciz "NetBSD"
2: .p2align 2
3: .long 700000001
4: .p2align 2
.section .text
_start:
andq $0xfffffffffffffff0, %rsp
subq $0x8, %rsp
call main
movq %rax, %rdi
movq $0x1, %rax
syscall
$ cat minimal.c
int main(void)
{
return 5;
}
$ gcc -nostdlib start.S minimal.c -o minimal
This program reports invalid NetBSD executable now. It was inspired by
https://wiki.netbsd.org/examples/netbsd_assembly/
Reverting this commit locally makes the executable work again.
Is this a regression or is the template wrong?
Attachment:
signature.asc
Description: OpenPGP digital signature