Re: rtld dropping core on recent -current

看板FB_current作者時間13年前 (2012/08/03 17:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
--I9F9dHb6y8qwQWx+ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Aug 02, 2012 at 09:55:36PM -0400, Alexander Kabaev wrote: > It is weird that program tries to dlopen what appears to be the binary > (itself?), but that did uncover the issue. Please try attached patch, > I only very lightly tested it here. >=20 > Also available here: > http://people.freebsd.org/~kan/rtld-digest-notes.diff >=20 > --=20 > Alexander Kabaev diff --git a/libexec/rtld-elf/map_object.c b/libexec/rtld-elf/map_object.c index 509a64f..350d437 100644 --- a/libexec/rtld-elf/map_object.c +++ b/libexec/rtld-elf/map_object.c @@ -153,7 +153,6 @@ map_object(int fd, const char *path, const struct stat = *sb) break; note_start =3D (Elf_Addr)(char *)hdr + phdr->p_offset; note_end =3D note_start + phdr->p_filesz; - digest_notes(obj, note_start, note_end); break; } =20 @@ -292,6 +291,11 @@ map_object(int fd, const char *path, const struct stat= *sb) obj->relro_page =3D obj->relocbase + trunc_page(relro_page); obj->relro_size =3D round_page(relro_size); =20 + if (note_start < note_end) + { + digest_notes(obj, note_start, note_end); + } + munmap(hdr, PAGE_SIZE); return (obj); =20 This is the right fix. Why do you need the '{}' there ? --I9F9dHb6y8qwQWx+ Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (FreeBSD) iEYEARECAAYFAlAbkvkACgkQC3+MBN1Mb4gPFQCgo6iYJoBRTLpyR5SLhADUOz3e ItkAnA61BcRblEy1vQ6DIs7ARb+9jlxP =GpIa -----END PGP SIGNATURE----- --I9F9dHb6y8qwQWx+--
文章代碼(AID): #1G6vgJiD (FB_current)
文章代碼(AID): #1G6vgJiD (FB_current)