Dtrace doesn't properly process object file of relocation type SHT_REL, which is type in FreeBSD i386. The following patch checks for both relocation types SHT_REL and SHT_RELA, and calls matching update function.Tested usdt example program from (https://wiki.freebsd.org/DTrace/userland) in FreeBSD -10BETA1 - i386 and it works. -------------------------------------------------- --- dt_link.c 2013-12-15 14:24:37.000000000 +0400 +++ /usr/src/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c 2013-12-15 14:22:21.000000000 +0400 @@ -1542,7 +1542,10 @@ rela.r_offset = 0; rela.r_info = 0; rela.r_addend = 0; - (void) gelf_update_rela(data_rel, i, &rela); + if (shdr_rel.sh_type == SHT_RELA) + (void) gelf_update_rela(data_rel, i, &rela); + else + (void) gelf_update_rel(data_rel, i, (GElf_Rel *)&rela); #endif mod = 1; -----------------------------------------------------------
prashanth -------------------------------------------- On Wed, 4/12/13, Michael Harsch <[email protected]> wrote: Subject: Re: dtrace usdt To: "Prashanth Kumar" <[email protected]> Cc: [email protected] Date: Wednesday, 4 December, 2013, 11:13 PM Hi Prashanth, I've reproduced this on 10.0BETA4. It appears to be specific to i386; the same test works fine on amd64. On Wed, Dec 4, 2013 at 3:29 AM, Prashanth Kumar <[email protected]> wrote: > Hi > Tried running the dtrace usdt example code from freebsd dtrace userland wiki page. > (https://wiki.freebsd.org/DTrace/userland). > > If run standalone the program segfaults. > # ./db > Bus error (core dumped) > > If run with dtrace > > # dtrace -s db.d -c ./db > dtrace: script 'db.d' matched 2 probes > CPU ID FUNCTION:NAME > 0 43245 main:query-start Query: SELECT * FROM apples > > the program hungs after printing the first probe. > > Had to use the following command > # env WITH_DTRACE=1 make > > to build the program. Is there any other steps that i have missed to make the program work?. > This was tested on FreeBSD 10BETA1 - i386. > > regards > Prashanth > _______________________________________________ > [email protected] mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-dtrace > To unsubscribe, send any mail to "[email protected]" > _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-dtrace To unsubscribe, send any mail to "[email protected]"
