Index | Thread | Search

From:
George Koehler <kernigh@gmail.com>
Subject:
Re: Update to gdb-13.2 - tests wanted
To:
Jeremie Courreges-Anglas <jca@wxcvbn.org>
Cc:
ports@openbsd.org, Pascal Stumpf <pascal@stumpf.co>, tb@openbsd.org, gkoehler@openbsd.org, kettenis@openbsd.org, miod@openbsd.org, visa@openbsd.org
Date:
Sat, 9 Nov 2024 00:57:56 -0500

Download raw body.

Thread
  • George Koehler:

    Update to gdb-13.2 - tests wanted

  • On Fri, 8 Nov 2024 14:03:17 +0100
    Jeremie Courreges-Anglas <jca@wxcvbn.org> wrote:
    
    > I can't infer from gkoehler's report and yours whether 32 bits powerpc
    > support is fine.
    
    It was fine until I tried switching threads.  gdb-13.2 on powerpc gets
    registers from only the 1st thread, so thread switches have the wrong
    registers and backtrace.  A fix might be to change
    	regcache->ptid ().pid()
    to
    	get_ptrace_pid (regcache->ptid ())
    to match other archs, which I will try later, when I have a few hours
    to rebuild gdb.
    
    On powerpc64, gdb-13.2 refusing to run programs or load core dumps was
    a regression from 9.2.  I have edited my ppc64-obsd-*.c and my 13.2 now
    works about as well as 9.2, so I will mail my patches later.
    
    The attached thregv.c reads a NULL pointer in another thread.
    
    $ cc -g -o thregv thregv.c -lpthread
    $ egdb thregv
    (gdb) run
    
    It should switch to the thread that "received signal SIGSEGV".  The
    thread should be "at thregv.c:11".  Commands like "info thr", "thr 1",
    "thr 2" should show them in different functions.
    #include <pthread.h>
    #include <stdio.h>
    
    /* Will be NULL. */
    int *ip;
    
    /* Will read NULL. */
    void *
    other(void *arg)
    {
    	printf("%d\n", *ip);
    	return NULL;
    }
    
    /* Will read NULL in another thread. */
    int
    main(void)
    {
    	pthread_t t;
    
    	pthread_create(&t, NULL, other, NULL);
    	pthread_join(t, NULL);
    }
    
  • George Koehler:

    Update to gdb-13.2 - tests wanted