Re: git: b069d3e01931 - main - rtld: Revert "When loading dso without PT_GNU_STACK phdr, only call"

From: Warner Losh <imp_at_bsdimp.com>
Date: Wed, 11 Jan 2023 14:07:07 UTC
On Wed, Jan 11, 2023 at 5:38 AM Konstantin Belousov <kostikbel@gmail.com>
wrote:

> On Wed, Jan 11, 2023 at 12:05:55PM +0000, Andrew Turner wrote:
> >
> >
> > > On 11 Jan 2023, at 11:09, Konstantin Belousov <kostikbel@gmail.com>
> wrote:
> > >
> > > On Tue, Jan 10, 2023 at 08:21:20PM -0500, John Baldwin wrote:
> > >> On 1/4/23 7:59 PM, Jessica Clarke wrote:
> > >>> On 5 Jan 2023, at 03:50, Cy Schubert <Cy.Schubert@cschubert.com>
> wrote:
> > >>>>
> > >>>> In message <202301042255.304MtY3G002415@gitrepo.freebsd.org>, John
> Baldwin
> > >>>> writ
> > >>>> es:
> > >>>>> The branch main has been updated by jhb:
> > >>>>>
> > >>>>> URL:
> https://cgit.FreeBSD.org/src/commit/?id=b069d3e0193121ff6de348f68c7ce93e
> > >>>>> e61e5e2f
> > >>>>>
> > >>>>> commit b069d3e0193121ff6de348f68c7ce93ee61e5e2f
> > >>>>> Author:     John Baldwin <jhb@FreeBSD.org>
> > >>>>> AuthorDate: 2023-01-04 22:55:00 +0000
> > >>>>> Commit:     John Baldwin <jhb@FreeBSD.org>
> > >>>>> CommitDate: 2023-01-04 22:55:00 +0000
> > >>>>>
> > >>>>>    rtld: Revert "When loading dso without PT_GNU_STACK phdr, only
> call"
> > >>>>>
> > >>>>>    After the removal of ia64 and sparc64, all current architectures
> > >>>>>    support executable stacks at an architectural level.
> > >>>>>
> > >>>>>    This reverts commit 1290d38ac50b3afa7e5781d9d97346a1042c736c.
> > >>>>
> > >>>> I tried git log as follows in two independent repos, my "prod" repo
> and the
> > >>>> working repo I commit from:
> > >>>>
> > >>>> slippy$ git log 1290d38ac50b3afa7e5781d9d97346a1042c736c
> > >>>> fatal: bad object 1290d38ac50b3afa7e5781d9d97346a1042c736c
> > >>>> slippy$
> > >>>>
> > >>>> Could there be some corruption somewhere? Do other people have the
> same
> > >>>> result as I do when they run git log against that hash? Or are my
> repos
> > >>>> corrupted?
> > >>>>
> > >>>> When I run git log and search for the string "When loading dso
> without
> > >>>> PT_GNU_STACK phdr, only call", I find the following, suggesting
> that the
> > >>>> svn2git process may have resulted in different hashes in different
> repos
> > >>>> used by  different people.
> > >>>>
> > >>>> commit cb38d4941c45e3c72c4b5b3fad87d297d950cf53
> > >>>> Author:     Konstantin Belousov <kib@FreeBSD.org>
> > >>>> AuthorDate: Tue Jan 25 21:12:31 2011 +0000
> > >>>> Commit:     Konstantin Belousov <kib@FreeBSD.org>
> > >>>> CommitDate: Tue Jan 25 21:12:31 2011 +0000
> > >>>>
> > >>>>    When loading dso without PT_GNU_STACK phdr, only call
> > >>>>    __pthread_map_stacks_exec() on architectures that allow
> executable
> > >>>>    stacks.
> > >>>>
> > >>>>    Reported and tested by: marcel (ia64)
> > >>>>
> > >>>> Notes:
> > >>>>    svn path=/head/; revision=217851
> > >>>>
> > >>>> BTW, our GH read-only mirror has the same hash as above suggesting
> that
> > >>>> jhb's repo may not be in sync with others with regard to svn2git
> generated
> > >>>> commits?
> > >>>>
> > >>>> Or, does this point to a deeper problem with inconsistent repos or
> some
> > >>>> other svn2git inconsistency somewhere?
> > >>>
> > >>> It’s the hash from the old GitHub mirror that's now
> freebsd/freebsd-legacy.
> > >>
> > >> Interesting, that is the hash I got from git blame for some reason.
> I might
> > >> have done the blame in CheriBSD though which has a complicated
> history where
> > >> it merged commits from the old hashes up to a point when the new
> hashes
> > >> were published, then CheriBSD has a special merge commit to join the
> old and
> > >> new histories before merging the new hashes from that point forwards.
> > >
> > > I have pristine clone of the official FreeBSD src repo, which I used
> when
> > > did the review and look up the referenced commit.  It worked for me.
> > > I suspect/believe that the svn->git conversion also imported old
> hashes.
> >
> > Which branches does "git branch -a --contains
> 1290d38ac50b3afa7e5781d9d97346a1042c736c” list? For me I only see it on
> branches that have been migrated from the old hashes.
>
> Hm, it is remotes/github/master
> And remotes:
>         github  git@github.com:freebsd/freebsd-src.git
>

Yea, that's the old githib master branch for sure. We never used 'main' in
the FreeBSD official git repo (the one from cgit, not the unofficial beta
repo we had while still using svn). I don't have it in my pristine copy of
the FreeBSD cgit repo. It is in an old github repo that I have though.
There was a merge commit in the old repo as a bridge to the new repo,
similar to what was done in CheriBSD. I've not checked to see what git
blame tells me in my old merged repo since I've not updated it in quite a
while.

Warner